原创 redis set 佔多少內存? bitmap呢?

背景 判斷一個id是否存在,是用redis set好還是用redis bitmap好呢? (id的個數只有100個的情況下) 一些理論知識 1、在元素比較少的時候,set是不會用hash的結構的,而是使用ziplist的方式存儲,

原创 k-d樹 原理 圖文解析

背景 看到了Lucene -》 Bkd樹 -》 k-d樹 what the f*ck are all of these? 本文就先從k-d樹介紹吧 參考 維基百科 首先這是幹嘛的? 用於多維度搜索的。例如在二維平面搜一個點,在三維

原创 Lucene 如何做多個拉鍊的交集

背景 網上的文章各式各樣,還不如看看源碼 參考 比較靠譜的一個博主 他的一本“書“ 寫的比較明白,可供參考: 看上面這個博客基本可以看懂原理。建議大家先讀一讀,配圖也比較豐富,比較好理解。 但是這個博客已經比較老了,不禁讓人懷疑

原创 帶着問題擼源碼系列-zookeeper-datatree是什麼鬼?

問題 帶着問題擼源碼系列-zookeeper-datatree是什麼鬼? 源碼 直接看源碼就好了 其實就是一個樹形結構 裏面先保存了所有的DataNode Key是節點路徑,如/p1/c1,value就是對應的DataNode

原创 帶着問題擼源碼系列-zookeeper-內存的數據如何持久化到硬盤

問題 帶着問題擼源碼系列-zookeeper-內存的數據如何持久化到硬盤 猜測 這種一般都是有個定時任務往硬盤寫吧 源碼 吸取經驗,直接從底層打斷點最舒服,直接摟出調用棧美美噠。 於是我們開始猜哪個是寫硬盤的類。 摟了一遍,大膽猜

原创 帶着問題擼源碼系列-zookeeper-臨時節點[ephemeral]是怎麼弄的?我寫了一堆臨時節點爲啥我一掉線就全沒了?

問題 帶着問題擼源碼系列-zookeeper-臨時節點[ephemeral]是怎麼弄的?我寫了一堆臨時節點爲啥我一掉線就全沒了? 猜測 可能是有線程維護着,每個session有一個臨時節點列表,一旦客戶端不再發心跳就全乾掉 源碼

原创 帶着問題擼源碼系列-zookeeper-客戶端先寫後讀,怎麼保證能讀到寫的數據?

問題 帶着問題擼源碼系列-zookeeper-客戶端先寫後讀,怎麼保證能讀到寫的數據? 猜測 從我們的系列文章上一篇: 帶着問題擼源碼系列-zookeeper-客戶端發讀請求給follower,是轉發給leader讀還是讀自己?

原创 帶着問題擼源碼系列-zookeeper-不同的RequestProcessor之間是什麼關係,如何協調?

問題 帶着問題擼源碼系列-zookeeper-不同的RequestProcessor之間是什麼關係,如何協調? 參考 思考了頗久實在沒找到突破的方法,只好找網上文章找突破口了: 處理寫請求過程 讀源碼 在這裏配置每個Request

原创 帶着問題擼源碼系列-zookeeper-客戶端發寫請求,最終怎麼通過2PC同步到集羣所有機器?

問題 帶着問題擼源碼系列-zookeeper-客戶端發寫請求,最終怎麼通過2PC同步到集羣所有機器? 猜測 we all know the 2PC, but how exactly does it work? 理論上,就是lead

原创 帶着問題擼源碼系列-zookeeper-源碼調試選舉過程 附mac環境搭建

參考 Zookeeper 架設源碼調試環境 maven 依賴原理 過程 從github clone到本地 git clone https://github.com/apache/zookeeper.git commit的版本是:

原创 帶着問題擼源碼系列-zookeeper-index

帶着問題擼源碼系列-zookeeper-源碼調試選舉過程 附mac環境搭建 帶着問題擼源碼系列-zookeeper-客戶端怎麼給sever發請求 ​ 帶着問題擼源碼系列-zookeeper-不同的RequestProcessor之

原创 帶着問題擼源碼系列-zookeeper-客戶端怎麼給sever發請求

問題​ 客戶端怎麼給server發請求? 猜測 parse 輸入的command 然後通過某種方式發給server。 預讀代碼 從客戶端main代碼org.apache.zookeeper.ZooKeeperMain看起,看下怎麼

原创 帶着問題擼源碼系列-zookeeper-客戶端發讀請求給follower,是轉發給leader讀還是讀自己?

問題 帶着問題擼源碼系列-zookeeper-客戶端發讀請求給follower,是轉發給leader讀還是讀自己? 猜測 讀自己就行了吧。不過可能要考慮當前有沒有在寫之類的。 讀源碼 參考寫請求的分析 還把斷點打在消費queue消

原创 帶着問題擼源碼系列-zookeeper-客戶端發寫請求給follower,是轉發給leader寫?

問題 帶着問題擼源碼系列-zookeeper-客戶端發寫請求給follower,是轉發給leader寫? 猜測 是要轉發給leader寫 預讀源碼 首先得看下在哪接受請求呢? 由於之前在 帶着問題擼源碼系列-zookeeper-客

原创 ZooKeeper 選舉過程 源碼

​ 參考:https://www.bilibili.com/video/BV1tt41137sT?p=4 視頻中帶註釋的源碼:https://github.com/boomblog/zookeeper-vip1/blob/master/s