原创 深入探索C++對象模型之七 --- 站在對象模型的尖端

深入探索C++對象模型之七 — 站在對象模型的尖端 template instantiation 模版具現化 template、exception handling和runtime type idetification Template

原创 C++11新特性--線程庫相關

線程的創建 std::thread t() 提供線程函數或者函數對象 t.join() 阻塞線程直到線程函數執行完畢 t.detach() 如果不希望線程被阻塞執行就調用detach(),但是這會導致線程和線程對象分離。 std::

原创 深入探索C++對象模型之二 --- 構造函數語意學

深入探索C++對象模型之二 — 構造函數語意學 2.1 默認構造函數 當編譯器需要的時候,default Constructor纔會被合成出來,而且只執行編譯器需要的任務。 class Foo { public:

原创 深入探索C++對象模型之六 --- 執行期語意學

深入探索C++對象模型之六 — 執行期語意學 C++最困難的一點就在於:無法從程序源碼看出程序表達式的複雜度。因爲編譯器會在背後給你做很多的工作。對於一些表達式諸如T a = b +c,編譯器可能會創建在執行期過程創建臨時對象,那麼在程序

原创 c++11實現的一個消息總線框架

最近在看C++11的特性,然後按照網上的例子實現了一個消息總線框架。 https://github.com/hejiajie1989/MessageBus 項目裏README文檔裏有詳細的設計說明, 使用的時候 g++ test.cpp

原创 設計模式之8 -- 適配器模式

適配器模式 學習筆記 有時候我們需要現有的類,但是此類的接口不符合系統的需要,即接口不兼容。那麼我們就需要引入適配器類來使得我們目標接口和原來的類接口兼容。 適配器模式定義: 將一個接口轉換成客戶希望的另一個接口,使得接口不兼容的那些類

原创 構造函數不能聲明爲虛函數, 析構函數可以

構造函數不能聲明爲虛函數, 析構函數可以 在構造一個對象的時候,必須要知道對象的實際類型,而虛函數是在執行期才能確定實際的對象類型,在構造對象的時候,由於此時對象還沒有構建成功,編譯器無法知道該對象的實際類型,是該類本身還是該類的一個派

原创 深入探索C++對象模型之五 --- 析構、構造、拷貝語意學

深入探索C++對象模型之五 — 析構、構造、拷貝語意學 一般而言,class的data member應該被初始化,並且只在constructor中或是在class的其它member functions中指定初值,其它任何操作都將破壞封裝性

原创 IO多路複用之epoll

IO多路複用之epoll總結 基本概念 相對於之前介紹的select和poll, epoll更加的靈活而且沒有描述符數量的限制。epoll使用一個文件描述符管理多個描述符,將用戶關心的文件描述符以及事件存放到內核的一個事件表中,這樣在用戶

原创 深度探索C++對象之四 --- Function語意學

深度探索C++對象模型 — Function語意學 C++支持三種類型的member functions: static、nonstatic和virtual。下面我們就來介紹下這三種member functions的調用方式。 nonst

原创 設計模式之7 -- 外觀模式

外觀模式學習筆記 在軟件開發中,有時候爲了完成一項很負責的功能,客戶端需要和很多個業務類進行交互,這些業務類通常以一個整體的方式出現,那麼這時候就可以引入一個外觀類來充當客戶端和子系統之間的交互傳遞者,客戶端只需要和外觀類交互,就好像外

原创 設計模式之10--橋接模式

橋接模式學習筆記 橋接模式是一種很實用的結構型設計模式,如果軟件系統中某個類存在兩個獨立變化的維度,通過該模式可以將這兩個維度分離出來,使得兩者可以獨立擴展。 橋接模式用一種巧妙的方式處理多層繼承存在的問題,用抽象關聯取代了傳統的多層繼

原创 設計模式之11--組合模式

組合模式學習筆記 軟件產品設計過程會遇到諸如遍歷文件夾和文件的情況(這只是一種情況,還有部分和員工),而在文件夾裏面可能還會存在文件夾和文件,那麼如果要統一對文件夾和文件進行某些操作(比如殺毒)那麼我們該怎麼進行呢?這裏就需要使用組合模

原创 Muduo之Channel源碼解析

Muduo之Channel源碼解析 前面我們分析了Acceptor處理連接請求,之後創建TcpConnection對象分發給合適的EventLoop,而TcpConnection裏面是包含Channel,EventLoop以及相應的soc

原创 TCP連接分析

TCP連接的建立、終止以及狀態變化 TCP連接建立 TCP是面向連接的傳輸,在真正開始傳輸消息之前需要建立一條“專有”的鏈路才行。通常客戶端在調用connect()系統調用的時候就會發送一個SYN給服務器開始連接建立。我們都知道TCP連接