原创 線程使用共享堆而非私有堆的原因分析

進程創建線程,每個線程可以共享進程的地址空間;但同時線程需要保留一些自己私有的數據 unix中的thread獨自持有的資源: Stack pointerRegistersscheduling properties(policy and

原创 shell腳本學習資源

Linux shell 之 提取文件名和目錄名的一些方法 http://blog.csdn.net/ljianhui/article/details

原创 筆記:Effective C++

03.const 1.const的修飾,mutable可以釋放變量的const屬性 記住就近原則 另外: void f1(const Widget *pw); void f2(Widget const *pw); 以上兩者是等價的。 2.

原创 C++中變量的聲明與定義的異同

分離式編譯機制允許將程序分割爲若干個文件,每個文件可以被獨立編譯。這種方式必須解決一個問題,即如何在多個文件之間共享代碼?(例如一個全局變量,在一個一個文件中被定義,如何在其他文件中被使用?) 爲了解決這個問題,即多個文件中使用同一個變

原创 C++中的智能指針——auto_ptr, unique_ptr, shared_ptr和weak_ptr

http://www.cnblogs.com/lanxuezaipiao/p/4132096.html STL一共給我們提供了四種智能指針:auto_ptr、unique_ptr、shared_ptr和weak_ptr 所有的智能指針類

原创 unix網絡編程

TCP的連接 (1)服務器,調用socket, bind和listen,被動打開 (2)客服,調用connect,主動打開 1.爲了執行網絡I/O,一個進程必須做的第一件事就是調用socket函數,指定期望的通信協議類型,客戶端和服

原创 《STL源碼剖析》閱讀筆記

1.空間的配置與釋放 對象構造前的空間配置和對象析構後的空間釋放,由<stl_alloc.h>負責,SGI對此的設計哲學: 向system heap要空間考慮多線程狀態考慮內存不足時的應變措施考慮過多“小型區塊”可能造成的內存碎片(fr

原创 C++內存池(memory pool)管理

1.內存池 程序員在使用C++中的動態內存分配器時,new/delete, malloc/free等操作時,可能會出現以下問題: Memory Leak:new一塊空間,但中間拋出錯誤,最後沒有釋放成功,導致memory leak;這個

原创 C++中的虛函數

1.虛函數的實現原理(http://www.cnblogs.com/malecrab/p/5572730.html) 如果一個類含有虛函數,那麼編譯器會爲該類生成一個與之對應的虛函數表,其中存放着該類所有的虛函數對應的虛函數指針。虛函數表

原创 C++中內存管理

http://www.cnblogs.com/lancidie/archive/2011/08/05/2128318.html 1 分配方式簡介   在C++中,內存分成5個區,他們分別是堆、棧、自由存儲區、全局/靜態存儲區和常量存儲區

原创 linux內存管理——kmalloc和vmalloc

直接映射區:線性空間中從3G開始最大896M的區間,爲直接內存映射區,該區域的線性地址和物理地址存在線性轉換關係:線性地址=3G+物理地址。 動態內存映射區:該區域由內核函數vmalloc來分配,特點是:線性空間連續,但是對應的物

原创 linux進程調度

進程從非TASK_RUNNING狀態變爲TASK_RUNNING狀態,是由別的進程(也可能是中斷處理程序)執行喚醒操作來實現的。執行喚醒的進程設置被喚醒進程的狀態爲TASK_RUNNING,然後將其task_struct結構加入到某個C

原创 《深度探索C++對象模型》讀書筆記

第三章(The Semantics of Data) 一個空的class的大小並不爲0; class x { };//sizeof(x) = 1;即空的class並不是真的空,它有一個隱晦的1bytes,那是編譯器安插進去的一個ch

原创 B樹、B+樹和B*樹

參考http://blog.csdn.net/v_july_v/article/details/6530142 大規模數據存儲中,實現索引查詢這樣一個實際背景下,樹節點存儲的元素數量是有限的(如果元素數量非常多的話,查找就退化成節點內部的

原创 排序算法的總結

每種排序的總結見http://www.cnblogs.com/gaochundong/p/comparison_sorting_algorithms.html#intro_sort 內省排序(Introsort)是由 David Mu