原创 redis源碼閱讀之數據結構sds

redis源碼閱讀之數據結構sds 本系列文章爲結合閱讀redis5.0源碼以及網上查閱相關資料整理,如有錯誤,歡迎交流指正(QQ:2824759538) ​ sds是simple dynamic string的縮寫,從命名上

原创 Redis源碼學習計劃

Redis源碼學習計劃 ​ 年初給自己設定了redis學習計劃,但是由於忙於工作,在研究完redis搭建的相關配置之後,將這個計劃擱置了一段時間,現在開始重新撿起來,給自己制定明確計劃,按照下面的步驟對redis源碼通讀並做詳細的

原创 __attribute__((format(printf, 2, 3)))用法詳解

_attribute_((format(printf, 2, 3)))用法詳解 在閱讀redis源碼的時候,遇到_attribute_((format(printf, 2, 3)))用法,在此記錄下該用法的作用以及需要注意的點。

原创 條款27:儘量少做轉型動作(Effective C++)

博客搬家,原地址:https://langzi989.github.io/2016/12/21/條款27-儘量少做轉型動作/ C++規則設計的目標之一是,保證類型錯誤決不可能發生。理論上如果你的程序很乾淨的通過編譯,就表示它並不企

原创 隱藏struct具體實現細節

​ 我們知道對於struct,其所有的成員默認情況下是所有對外可見的,即爲public屬性。但是有時候爲了提高程序的封裝性,我們需要將struct的內容細節隱藏起來,怎麼做呢?可以使用下面這種做法達到目的。 // a.h type

原创 以示例方式記錄unique_lock&lock_guard

#include <iostream> #include <mutex> #include <thread> #include <vector> /* 參考鏈接:https://www.cnblogs.com/fnlingnz

原创 自旋鎖、互斥鎖、樂觀鎖、悲觀鎖、讀寫鎖概念以及特點總結

文章目錄1、自旋鎖(spinlock)與互斥鎖1.1 概念1.2 特點2、樂觀鎖與悲觀鎖2.1 概念2.2 特點3、讀寫鎖3.1 概念3.2 特點 ​ 在開發的過程中,很常見的場景就是在多進程或者多線程中訪問同一份資源,而如果直接

原创 以示例方式記錄mutex

#include <iostream> #include <mutex> #include <thread> #include <vector> /* * @desc std::mutex * @constructor

原创 以示例方式記錄pthread_once_t

#include <iostream> #include <thread> #include <vector> #include <pthread.h> /* 參考鏈接:https://www.cnblogs.com/qinw

原创 以示例方式記錄pthread_key_t

#include <thread> #include <iostream> #include <string> #include <vector> #include <chrono> // 參考鏈接:https://blog.c

原创 讀擴散與寫擴散分析

寫擴散與讀擴散的概念常見於feeds流類型的業務中的數據寫入和數據讀取的流程。下面用兩張圖簡單說明一下讀擴散和寫擴散分別是什麼。 寫擴散 讀擴散 從上面的讀寫擴散的流程我們可以分析出讀寫擴散分別具有哪些優缺點。 寫擴散的優點

原创 使用示例方式記錄lamda表達式使用方法

#include <iostream> #include <vector> #include <algorithm> /* lamda表達式的基本語法: [capture](parameters)->re

原创 使用示例方式記錄unique_ptr使用方法

#include <memory> #include <iostream> // unique_ptr實現獨佔式擁有或嚴格擁有概念,保證同一時間內只有一個智能指針可以指向該對象。 // 獨佔指針內存回收和釋放是在擁有該指針的un

原创 使用示例方式記錄weak_ptr使用方法

#include <iostream> #include <memory> /* // pa與pb相互引用,導致引用計數不能減爲0,導致內存泄漏 class B; class A { public: std::share

原创 使用示例方式記錄shared_ptr使用方法

#include <memory> #include <iostream> // shared_ptr實現共享式擁有概念。 // 多個智能指針可以指向相同對象,該對象和其相關資源會在“最後一個引用被銷燬”時候釋放。 // 從名字