原创 《linux高性能服務器編程》—— 一種多個獨立進程共享內存的方式

(1)源代碼 #include <sys/mman.h> #include <fcntl.h> #include <unistd.h> #include <sys/stat.h> #define BUFFER_SIZE 1024 i

原创 數據流分析之WorkList Algorithm

目錄   (1)如何求解數據流方程? (2)WorkList Algorithm (1)如何求解數據流方程? 不論是Reaching Definition Analysis中對可達定義集合的求解,還是Liveness Analysis中對

原创 一種基於最小堆和epoll的高性能定時器——時間堆

(1)時間堆的原理     定時器以到期時間作爲排序值,存放於最小堆這種數據結構中。時間堆不以固定的頻率來查詢是否有定時器到期,而是每次當堆頂的定時器到期後才處理一次定時事件,避免了定期查詢導致的開銷。  (2)難點分析及解決思路

原创 C++語法系列——const的頂層/底層之分

目錄   (1)先聲明用處 (2)除指針外,頂層或底層const這一說法對其他對象適用嗎? (3)頂層/底層const在函數重載時有何區別? (4)頂層/底層const在初始化有何區別? (1)先聲明用處 頂層/底層通常用於修飾在定義指針

原创 數據流分析之Liveness Analysis

目錄   (1)什麼是Liveness? (2)什麼是Liveness Analysis? (3)Liveness Analysis有何用處?  (4)如何實現Liveness Analysis? - 信息在通過指令時的傳播規則  - 信

原创 如何理解最大子序列和的在線算法

目錄   (1)先給出在線算法的僞代碼 (2)疑問一:當子序列之和爲非正數時,爲何不能繼續使用該序列? (3)疑問二:當子序列之和爲非正數時,爲何不從子序列中的任一元素開始往後掃描,而是從子序列之後的元素開始掃描? (1)先給出在線算法的

原创 C++語法系列——怎樣理解函數名

結論:在使用函數名時,可將函數名理解爲一種特殊的指針,即指向自身的指針,再換句話說,指針存儲的地址與自身的地址相同。可用以下程序驗證: void fun() { int i = 0; } printf("fun = %p, *fun

原创 C++ primer——基於面向對象解決方案的文本查詢程序

目錄   (1)程序基本框架 (2)查詢案例分析 a. 查詢最簡單的query b. 最簡單的“~”查詢 c. 最簡單的“&”查詢 (1)程序基本框架 其中需要注意的是: a. WordQuery類中的query本質上是單個詞彙,因此

原创 數據流分析之Reaching Definition Analysis

目錄 (1)什麼是Reaching Definition?  (2)什麼是Reaching Definition Analysis? (3)Reaching Definition Analysis有何用處? (4)如何實現Reaching

原创 一種高性能定時器——時間輪的實現

(1)時間輪樣貌  (2)源代碼及註釋 #ifndef TIME_WHEEL #define TIME_WHEEL #include <stdio.h> #include <math.h> template <typename T

原创 C++語法系列——引用的左值/右值之分

目錄   (1)爲何要區分? (2)那什麼是左值/右值引用? (3)左值?右值? (4)左值/右值,與左值/右值引用有什麼區別? (1)爲何要區分?     引用的類型是左值/右值,指明瞭其綁定的對象的狀態是仍有可能被使用,or不再被修

原创 《linux高性能服務器編程》—— 一種高效的異步進程池的實現

此文與《linux高性能服務器編程》—— 一種高效的異步線程池的實現是姊妹篇。 (1)進程池框架   (2)源代碼及註釋 #ifndef PROCESSPOOL #define PROCESSPOOL #include <sys/t

原创 帶有時間輪定時器的異步進程池的實現

此進程池是在《linux高性能服務器編程》—— 一種高效的異步進程池的實現 基礎上結合一種高性能定時器——時間輪的實現 改造而來。 (1)進程池框架 (2)源代碼及註釋 #ifndef PROCESSPOOL #define PROC

原创 《linux高性能服務器編程》—— 一種高效的異步線程池的實現

此文與《linux高性能服務器編程》—— 一種高效的異步進程池的實現 是姊妹篇。 (1)線程池框架 (2)源代碼及註釋 #ifndef THREADPOOL #define THREADPOOL #include <sys/ty

原创 《linux高性能服務器編程》—— 三種線程同步機制的包裝類:POSIX信號量、互斥鎖和條件變量

(1)POSIX信號量:提供對共享資源的獨佔式訪問 以下使用未命名信號量作爲包裝類的核心。 class sem { private: sem_t semp; //信號量 public: sem() {