前言
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
結尾
這不止是一份面試清單,更是一種”被期望的責任“,因為有無數個待面試者,希望從這篇文章中,找出通往期望公司的”鑰匙“,所以上面每道選題都是結合我自身的經驗于千萬個面試題中經過艱辛的兩周,一個題一個題篩選出來再次對好答案和格式做出來的,面試的答案也是再三斟酌,深怕誤人子弟是小,影響他人仕途才是大過,也希望您能把這篇文章分享給更多的朋友,讓他幫助更多的人,幫助他人,快樂自己,最后,感謝您的閱讀。
資料領取方式:戳這里免費獲取
止是一份面試清單,更是一種”被期望的責任“,因為有無數個待面試者,希望從這篇文章中,找出通往期望公司的”鑰匙“,所以上面每道選題都是結合我自身的經驗于千萬個面試題中經過艱辛的兩周,一個題一個題篩選出來再次對好答案和格式做出來的,面試的答案也是再三斟酌,深怕誤人子弟是小,影響他人仕途才是大過,也希望您能把這篇文章分享給更多的朋友,讓他幫助更多的人,幫助他人,快樂自己,最后,感謝您的閱讀。
資料領取方式:戳這里免費獲取
由于細節內容實在太多啦,在這里我花了兩周的時間把這些答案整理成一份文檔了,在這里只把部分知識點截圖出來粗略的介紹,每個小節點里面都有更細化的內容!