原创 三種單例與線程安全單例模式詳解

//Singleton返回的實例的生存期是由Singleton本身所決定的,而不是用戶代碼。 //我們知道,指針和引用在語法上的最大區別就是指針可以爲NULL,並可以通過delete運算符刪除指針所指的實例,而引用則不可以。 /

原创 Reactor --《面向模式的軟件架構》

作用 Reactor是一種事件處理模式,事件驅動應用程序使用Reactor架構來同步地等待一個或多個指示事件的發生,然後分離並分派一個或多個服務請求給事件處理程序中合適的鉤子(回調)方法。 通過這種方式將事件分離分派機制與服務程序

原创 【深度探索C++對象模型】(2)構造函數語意學

1.Default Constructor的構造操作 默認構造函數是在編譯器需要的時候構建出來的,被合成的默認構造函數只執行編譯器所需的動作。被合成的默認構造函數中只有base class subobjects以及member c

原创 複製狀態機(State Machine Replication)

State Machine Replication 這篇博文主要是對wiki上的複製狀態機的翻譯,也是爲了讓自己更熟悉相關概念。 複製狀態機在分佈式領域是一個常用且重要的技術,通過複製服務副本,並和副本一起來協調客戶端的交互,來實

原创 Linux內核:內存管理(2)——內存管理

1 頁框管理 內核把物理頁(4kb)作爲內存管理的基本單位。每個頁放置在頁框中,內核記錄頁框的狀態信息保存在page頁描述符中,page放置在mem_map數組中。每個page長度爲32字節,故mem_map佔RAM不到1%(32

原创 記一次沒有正確設置返回值的嚴重後果

由於在讀取fd傳來的數據後,忘記寫return n,導致到接收到EPOLLRDHUP | EPOLLIN信號進入handleRead()後,無法正確判斷出讀取不到信息,對方已經關閉,然後進入handleClose(),導致epo

原创 Linux內核:內存管理(1)——內存尋址

內存控制單元(MMU)由分段單元和分頁單元組成。 分段單元:將邏輯地址轉換成一個線性(虛擬)地址,給一個進程分配不同的線性地址空間。 分頁單元:將線性(虛擬)地址轉化成一個物理地址,把同一線性地址空間映射到不同的物理空間。

原创 阻塞connect與accept返回時機與syn攻擊

![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20190722132458582.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpd

原创 Linux errno詳解

1. 錯誤碼 / errno Linux中系統調用的錯誤都存儲於 errno中,errno由操作系統維護,存儲就近發生的錯誤,即下一次的錯誤碼會覆蓋掉上一次的錯誤。 PS: 只有當系統調用或者調用lib函數時出錯,纔會置位err

原创 Linux errno詳解

1. 錯誤碼 / errno Linux中系統調用的錯誤都存儲於 errno中,errno由操作系統維護,存儲就近發生的錯誤,即下一次的錯誤碼會覆蓋掉上一次的錯誤。 PS: 只有當系統調用或者調用lib函數時出錯,纔會置位errn

原创 十七道海量數據處理面試題與Bit-map詳解

十七道海量數據處理面試題與Bit-map詳解 第一部分、十五道海量數據處理面試題1. 給定a、b兩個文件,各存放50億個url,每個url各

原创 C++ 簡易線程池實現

//threadpool.h #ifndef THREADPOOL_H #define THREADPOOL_H #include <pthread.h> #include <deque> #include <vector> c

原创 bind、function的使用

#include <iostream> #include <functional> using namespace std; class Temp { public: typedef function<void(int)> ca

原创 智能指針的實現(構造,析構,賦值,移動,析構)與測試

智能指針代碼: // 引用計數器類 用於存儲指向同一對象的指針數 template<typename T> class Counter { private: // 數據成員 T* ptr; // 對象指針 in

原创 三種常見的線程安全單例模式

//懶漢式 1 class CSingleton { private: //構造 拷貝 賦值均是私有或關閉 CSingleton(); static pthread_t m