目录:
1、Redis的数据类型实现消息队列
redis提供三种不同方式实现消息队列:
- list结构:基于list结构模拟消息队列
- PubSub:基于的点对点消息队列
- Stream:比较完善的消息队列模型(推荐)
2、RabbitMQ之五种消息模型
- 1.基本消息模型
- 2.work消息模型
- 3.订阅模型(三类)
3、Redis持久化RDB和AOF有什么优缺点
1.概论
使用到Redis做缓存,方便多个业务进程之间共享数据。由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。redis提供两种方式进行持久化,一种是RDB(Redis DataBase)持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化),另外一种是AOF(Append Only File)持久化(原理是将Reids的操作日志以追加的方式写入文件)。
2.二者的区别
RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程就是有一个fork子进程,先将数据集写入到临时文件中,写入成功后,再替换之前的文件,用二进制压缩存储。
AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。
3.二者优缺点
RDB的优缺点:
优点:RDB持久化文件,速度比较快,而且存储的是一个二进制文件,传输起来很方便。
缺点:RDB无法保证数据的绝对安全,有时候就是1s也会有很大的数据丢失。
AOF的优缺点:
优点:AOF相对RDB更加安全,一般不会有数据的丢失或者很少,官方推荐同时开启AOF和RDB。
缺点:AOF持久化的速度,相对于RDB较慢,存储的是一个文本文件,到了后期文件会比较大,传输困难。
4.常用配置
RDB持久化配置
Redis会将数据集的快照dump到dump.rdb文件中。此外,我们也可以通过配置文件来修改Redis服务器dump快照的频率,在打开6379.conf文件之后,我们搜索save,可以看到下面的配置信息:
save 900 1 #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。
save 300 10 #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。
save 60 10000 #在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快照。
AOF持久化配置
在Redis的配置文件中存在三种同步方式,它们分别是:
appendfsync always #每次有数据修改发生时都会写入AOF文件。
appendfsync everysec #每秒钟同步一次,该策略为AOF的缺省策略。
appendfsync no #从不同步。高效但是数据不会被持久化。
5.注意事项
5.1.redis启用持久化 aof 之后 报错
Can’t open the append-only file: Input/output error
是因为 在win下 没用管理员权限 (一个坑)
5.2.同时开启RDB和AOF时
如果redies重启之后,需要加载一个持久化文件,有限会选择AOF文件。
如果先开启了RDB,再开启AOF,RDB先执行了持久化,那么RDB文件中的内容会被AOF覆盖掉。
4、hashmap1.7和1.8的区别
hashmap1.7和1.8的区别主要是底层结构、扩容策略不同
- 底层结构:hashmap1.7底层结构是数组+链表,hashmap1.8底层结构是数组+链表+红黑树
- 扩容策略:扩容时1.8会保持原链表的顺序并且在元素插入后检测是否需要扩容,1.7会颠倒链表的顺序并且在元素插入前检测是否需要扩容
Hashmap中文名哈希映射,是基于哈希表的 Map 接口的实现,HashMap是一个用于存储Key-Value键值对的集合
5、MySQL存储引擎MyISAM和InnoDB的区别
6、SpringBoot的核心注解和组件
核心注解(25个):
1、@SpringBootApplication
这是 Spring Boot 最最最核心的注解,用在 Spring Boot 主类上,标识这是一个 Spring Boot 应用,用来开启 Spring Boot 的各项能力。
其实这个注解就是 @SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan 这三个注解的组合,也可以用这三个注解来代替 @SpringBootApplication 注解。
2、@EnableAutoConfiguration
允许 Spring Boot 自动配置注解,开启这个注解之后,Spring Boot 就能根据当前类路径下的包或者类来配置 Spring Bean。
如:当前类路径下有 Mybatis 这个 JAR 包,MybatisAutoConfiguration 注解就能根据相关参数来配置 Mybatis 的各个 Spring Bean。
3、@Configuration
这是 Spring 3.0 添加的一个注解,用来代替 applicationContext.xml 配置文件,所有这个配置文件里面能做到的事情都可以通过这个注解所在类来进行注册。
4、@SpringBootConfiguration
这个注解就是 @Configuration 注解的变体,只是用来修饰是 Spring Boot 配置而已,或者可利于 Spring Boot 后续的扩展。
5、@ComponentScan
这是 Spring 3.1 添加的一个注解,用来代替配置文件中的 component-scan 配置,开启组件扫描,即自动扫描包路径下的 @Component 注解进行注册 bean 实例到 context 中。
6、@Conditional
这是 Spring 4.0 添加的新注解,用来标识一个 Spring Bean 或者 Configuration 配置文件,当满足指定的条件才开启配置。
核心组件(4个):
- Spring Boot Starter(封装好了所有需要的依赖)
- Spring Boot Autoconfigure(配置 Bean 实例到 Spring 容器的实际代码实现包,然后提供给 starter 依赖)
- Spring Boot CLI(一个命令行使用 Spring Boot 的客户端工具)
- Spring Boot actuator(Spring Boot 的监控插件,本身提供了很多接口可以获取当前项目的各项运行状态指标)