前言
Spring如何解决的循环依赖,是近两年流行起来的一道Java面试题。其实笔者本人对这类框架源码题还是持一定的怀疑态度的。如果笔者作为面试官,可能会问一些诸如“如果注入的属性为null,你会从哪几个方向去排查”这些场景题。那么既然写了这篇文章,闲话少说,发车看看Spring是如何解决的循环依赖,以及带大家看清循环依赖的本质是什么。
本文框架如下
第一部分,主要是在阅读代码过程中的日志和笔记;
第二部分,主要介绍了 Redis 的主要框架,以及 Redis 是如何提供服务的,从一个最简单的命令开始讲起;
第三部分,主要介绍 Redis 底层用作存储的数据结构,这一部分很有趣;
第四部分,主要讲解了 Redis 的核心功能,包括持久化,订阅/发布模式,主从复制,事务机制,集群等等;
第五部分,展示了 Redis 几个简单的应用;
第六部分,介绍了 Redis 和 Memcached 的区别,以及稍稍讲解了 Memcached。
Tips:本文内容已经整理成了pdf版本,内容由真实腾讯专家手写,感兴趣的朋友可以通过【关注+点赞+评论本文】的方式获取到腾讯专家手写Redis源码日志笔记pdf版本!
Redis服务框架
①初探 Redis
- Redis 在缓存系统所处的位置
②Redis 事件驱动详解
- 事件驱动数据结构
- 事件循环中心
-
Redis 事件驱动原理
-
事件注册详解
-
准备监听工作
-
为监听套接字注册事件
-
事件循环
-
事件触发
③Redis 是如何提供服务的
- initServerConfig()
- aeMain()
- 新连接的处理流程
- 请求的处理流程
- 执行命令
- 在哪里回复客户端
Redis 基础数据结构
①Redis 数据结构综述
一览 Redis 数据结构:
- Redis 命令和相关的数据结构
- Redis 数据结构 redisOb
- Redis 数据结构 sds
- Redis 数据结构 dict
- Redis 数据结构 ziplist
- Redis 数据结构 skiplist
- Redis 数据结构 intset
Redis 内功心法
①Redis 数据淘汰机制
- 概述
- LRU 数据淘汰机制
- TTL 数据淘汰机制
- 在哪里开始淘汰数据
②RDB 持久化策略
- 简介 Redis 持久化 RDB、AOF
- 数据结构 rio
- RDB 持久化的运作机制
- RDB 数据的组织方式
③AOF 持久化策略
- 简介
- AOF 数据组织方式
- AOF 持久化运作机制
- 细说更新缓存
- AOF 恢复过程
- AOF 的适用场景
④订阅发布机制
- 两种订阅
- 订阅相关数据结构
- 订阅过程
- 消息发布
⑤主从复制
- 概述
- 积压空间
- 主从数据同步机制概述
- 全同步
- 部分同步
- 缓存主机
- 总结
⑥Redis 事务机制
- Redis 事务简述
- Redis 命令队列
- 键值的监视
- Redis 事务的执行与取消
- Redis 事务番外篇
⑦Redis 与 Lua 脚本
- Lua 简介
- Redis 为什么添加 Lua 支持
- Lua 环境的初始化
- Lua 脚本执行 Redis 命令
- Redis Lua 脚本的执行过程
- 脏命令
- Lua 脚本的传播
- 总结
⑧Redis 哨兵机制
- Redis 哨兵的服务框架
- 定时程序
- 哨兵与 Redis 服务器的互联
- HELLO 命令
- INFO 命令
- 心跳
- 在线状态监测
- 故障修复
- Redis 监视器
- Redis 数据迁移
⑨Redis 集群(上)
- 前奏
- 谈一致性哈希算法(consistent hashing)
- 怎么实现?
- twemproxy - Redis 集群管理方案
- Redis 官方版本支持的集群
⑩Redis 集群(下)
- 数据结构
- 数据访问
- 新的节点
- 心跳机制
- 故障修复
- 故障修复的协议
- 数据迁移
- 总结
Redis 应用
- Redis 应用
- 积分排行榜
- 分布式锁
- 消息中间件
- Web 服务器存储 session
其他
①内存数据管理
- 共享对象
- 两种内存分配策略
- memory aware 支持
- zmalloc_get_private_dirty() 函数
- 总结
②Redis 日志和断言
- Redis 日志
- Redis 断言
③Redis 与 Memcache
- 单进程单线程与单进程多线程
- 丰富与简单的数据结构
- 其他
- 性能测试
④小剖Memcache
- 初始化过程
- UNIX 域套接字和 UDP/TCP 工作模式
- 工作线程管理和线程调配方式
- 存储容器
- 连接管理
- 一个请求的工作流程
- Memcached 的分布式
⑤Memcached slab 分配策略
- Memcached slab 概述
- slab class
- 内存分配的过程
- lru 机制
⑥源码阅读工具
- sublime text 2/3
- Eclipse CDT
- Source insight
结尾
这不止是一份面试清单,更是一种”被期望的责任“,因为有无数个待面试者,希望从这篇文章中,找出通往期望公司的”钥匙“,所以上面每道选题都是结合我自身的经验于千万个面试题中经过艰辛的两周,一个题一个题筛选出来再次对好答案和格式做出来的,面试的答案也是再三斟酌,深怕误人子弟是小,影响他人仕途才是大过,也希望您能把这篇文章分享给更多的朋友,让他帮助更多的人,帮助他人,快乐自己,最后,感谢您的阅读。
资料领取方式:戳这里免费获取
止是一份面试清单,更是一种”被期望的责任“,因为有无数个待面试者,希望从这篇文章中,找出通往期望公司的”钥匙“,所以上面每道选题都是结合我自身的经验于千万个面试题中经过艰辛的两周,一个题一个题筛选出来再次对好答案和格式做出来的,面试的答案也是再三斟酌,深怕误人子弟是小,影响他人仕途才是大过,也希望您能把这篇文章分享给更多的朋友,让他帮助更多的人,帮助他人,快乐自己,最后,感谢您的阅读。
资料领取方式:戳这里免费获取
由于细节内容实在太多啦,在这里我花了两周的时间把这些答案整理成一份文档了,在这里只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!