SpringBoot(二) 原理篇
1. 自动配置工作流程1.1 bean的加载方式 xml+<bean>(配置文件) xml:context+注解(@Component+4个@Bean)(注解扫描) 配置类+扫描+注解(@Component+4个@Bean)(配置类) @Bean定义FactoryBean接口(可以在变成bean之前做点事) @ImportResource(导入配置) @Configuration注解的proxyBeanMethods属性(代理对象,默认多个) @Import导入bean的类(在配置类上注入class) @Import导入配置类(在配置类上注入class) AnnotationConfigApplicationContext调用register方法(容器创建之后注册bean) @Import导入ImportSelector接口(选择 bean 的方式) @Import导入ImportBeanDefinitionRegistrar接口(控制 bean...
SpringBoot(一) 基础篇
1. 快速入门1.1 基础配置 最简SpringBoot程序所包含的基础文件 pom.xml文件Application类测试类1234567891011121314151617181920212223242526272829303132333435363738394041<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> ...
Redis(五) 集群
1. 主从复制目的:保证互联网”三高”架构(高并发,高性能,高可用)中的高可用 1.1 单机redis的风险与问题 问题1.机器故障 现象:硬盘故障、系统崩溃 本质:数据丢失,很可能对业务造成灾难性打击 结论:基本上会放弃使用redis. 问题2.容量瓶颈 现象:内存不足,从16G升级到64G,从64G升级到128G,无限升级内存 本质:穷,硬件条件跟不上 结论:放弃使用redis 结论: 为了避免单点Redis服务器故障,准备多台服务器,互相连通。将数据复制多个副本保存在不同的服 务器上,连接在一起,并保证数据是同步的。即使有其中一台服务器宕机,其他服务器依然可以继续 提供服务,实现Redis的高可用,同时实现数据冗余备份。 1.2 多台服务器连接方案 提供数据方:master 主服务器,主节点,主库 主客户端 接收数据方:slave 从服务器,从节点,从库 从客户端 需要解决的问题: 数据同步 核心工作: master的数据复制到slave中 1.3...
Redis(四) 删除策略 核心配置 高级数据类型
1. 删除策略1.1 过期数据 Redis中的数据特征 Redis是一种内存级数据库,所有数据均存放在内存中,内存中的数据可以通过TTL指令获取其状态 XX :具有时效性的数据 -1 :永久有效的数据 -2 :已经过期的数据 或 被删除的数据 或 未定义的数据 1.2 数据删除策略1.2.1 定时删除 创建一个定时器,当key设置有过期时间,且过期时间到达时,由定时器任务立即执行对键的删除操作 优点:节约内存,到时就删除,快速释放掉不必要的内存占用 缺点:CPU压力很大,无论CPU此时负载量多高,均占用CPU,会影响redis服务器响应时间和指令吞吐量 总结:用处理器性能换取存储空间(拿时间换空间) 1.2.2 惰性删除 数据到达过期时间,不做处理。等下次访问该数据时 如果未过期,返回数据 发现已过期,删除,返回不存在 优点:节约CPU性能,发现必须删除的时候才删除 缺点:内存压力很大,出现长期占用内存的数据 总结:用存储空间换取处理器性能(拿空间换时间) 1.2.3...
Redis(三) 持久化与事务
1.持久化简介1.1 什么是持久化 利用永久性存储介质将数据进行保存,在特定的时间将保存的数据进行恢复的工作机制称为持久化 1.2 为什么要进行持久化 防止数据的意外丢失,确保数据安全性 1.3 持久化过程保存什么 RDB 快照复制 将当前数据状态进行保存,快照形式,存储数据结果,存储格式简单,关注点在数据 AOF 记录操作 将数据的操作过程进行保存,日志形式,存储操作过程,存储格式复杂,关注点在数据的操作过程 2. RDB2.1 RDB启动方式—— save指令 命令 1save 作用 手动执行一次保存操作 2.2 RDB启动方式 —— save指令相关配置 dbfilename dump.rdb 说明:设置本地数据库文件名,默认值为 dump.rdb 经验:通常设置为dump-端口号.rdb dir 说明:设置存储.rdb文件的路径 经验:通常设置成存储空间较大的目录中,目录名称data rdbcompression yes 说明:设置存储至本地数据库时是否压缩数据,默认为 yes,采用 LZF...
Redis(二) 指令操作
1. 常用指令1.1 key 基本操作 指令 作用 del key 删除指定key exists key 获取key是否存在 type key 获取key的类型 expire key secondspexpire key millisecondsexpireat key timestamppexpireat key milliseconds-timestamp 为指定key设置有效期 ttl keypttl key 获取key的有效时间 persist key 切换key从时效性转换为永久性 rename key newkeyrenamenx key newkey 为key改名 sort 对所有key排序 help @generic 其他key通用操作 keys pattern 查询key 查询模式规则 * 匹配任意数量的任意符号 ? 配合一个任意符号 [] 匹配一个指定符 例子 解释 keys * 查询所有 keys it* 查询所有以it开头 keys...
Redis(一) 入门与Redis数据类型
1. 前言1.1 使用场景 问题现象 海量用户 高并发 罪魁祸首——关系型数据库 性能瓶颈:磁盘IO性能低下 扩展瓶颈:数据关系复杂,扩展性差,不便于大规模集群 解决思路 Nosql 降低磁盘IO次数,越低越好 —— 内存存储 去除数据间关系,越简单越好—— 不存储关系,仅存储数据 1.2 NosqlNoSQL:即 Not-Only SQL( 泛指非关系型的数据库),作为关系型数据库的补充Nosql 作用:应对基于海量用户和海量数据前提下的数据处理问题 特征: 可扩容,可伸缩 大数据量下高性能 灵活的数据模型 高可用 常见 Nosql 数据库: Redis memcache HBase MongoDB 1.3 解决方案(电商场景) 数量小, 变化小 MySQL 商品基本信息:名称、价格、厂商 文档处理 MongoDB 商品附加信息:描述、详情、评论 图片信息 分布式文件系统 搜索关键字 ES、Lucene、solr 热点信息 Redis、memcache、tair 高频、波段性 2. Redis简介2.1...
北斗卫星实时位置的计算与精度分析
1. 导航电文格式解读C01 2021 12 01 00 00 00-0.392390531488E-03 0.396518373691E-10 0.000000000000E+00 0.100000000000E+01 0.923312500000E+03-0.175864468318E-08 0.562177079103E-01 0.299839302897E-04 0.664370250888E-03 0.300258398056E-05 0.649344501495E+04 0.259200000000E+06-0.103842467070E-06-0.306687686883E+01-0.428408384323E-07 0.803862571188E-01-0.865156250000E+02-0.697794080599E+00 0.264403870625E-08 -0.402159608705E-09 0.160000000000E+02 0.830000000000E+03 0.000000000000E+00 ...
Zookeeper注册中心
1. Zookeeper概念 Zookeeper 是 Apache Hadoop 项目下的一个子项目,是一个树形目录服务 Zookeeper 是一个分布式的、开源的分布式应用程序的协调服务 Zookeeper 提供的主要功能包括 配置管理 分布式锁 集群管理 2. ZooKeeper 命令操作2.1 Zookeeper 数据模型 ZooKeeper 是一个树形目录服务,其数据模型和Unix的文件系统目录树很类似,拥有一个层次化结构 这里面的每一个节点都被称为: ZNode,每个节点上都会保存自己的数据和节点信息 节点可以拥有子节点,同时也允许少量(1MB)数据存储在该节点之下 节点可以分为四大类 PERSISTENT 持久化节点 EPHEMERAL 临时节点 :-e PERSISTENT_SEQUENTIAL 持久化顺序节点 :-s EPHEMERAL_SEQUENTIAL 临时顺序节点 :-es 2.2 Zookeeper 服务端常用命令 启动 ZooKeeper 服务: ./zkServer.sh start 查看 ZooKeeper 服务状态:...
Dubbo项目架构
实现步骤 创建服务提供者Provider模块 创建服务消费者Consumer模块 在服务提供者模块编写 UserServiceImpl 提供服务 在服务消费者中的 UserController 远程调用UserServiceImpl 提供的服务 分别启动两个服务,测试 1. 传统Srping和SpringMVC整合大致思路 统一包版本 导入spring包 编写dubbo-service UserService接口 impl实现接口并加上Service注解 applciationContext包扫描 编写dubbo-web UserController Controller注解 注入UserService 设置RequestMapping springmvc 注解驱动 包扫描 web中编写 spring的监听器 前端控制器 contextConfigLocation扫描 Servletmapping 在web pom.xml中加入service的依赖 1.1...