原创 Glibc 中malloc的實現

本文轉自:http://blog.csdn.net/phenics/article/details/777053 1 前言 C語言提供了動態內存管理功能, 在C語言中, 程序員可以使用 malloc() 和 free() 函數顯式

原创 TCP 小記————三次握手四次揮手詳解

今天抽空又重新回顧了下TCP協議。自然聯想到TCP的三次握手,四次揮手機制。但是爲什麼要設計成三次握手?又爲什麼要設置成四次揮手呢? 連接建立 TCP是全雙工通信,也就是同一個套接字,客戶端和服務端都可以對其進行讀和寫。當客戶端需

原创 libevent源碼閱讀筆記——通用時間隊列

​由於libevent支持 /dev/poll, kqueue(2), event ports, POSIX select(2), Windows select(), poll(2), and epoll(4).多平臺網絡IO,所

原创 C++ 內存佈局佔用情況

C++ 中內存分佈比較複雜,主要分爲堆、棧、.data區、代碼段,在平時會涉及到一個類的內存大小,總結如下: 1.       普通的成員函數不會佔內存,但是普通的成員變量佔內存。 2.       Static的變量和函數都不會佔

原创 用Python實現Linux tree命令

早就耳聞python 功能強大,互聯網領域運用廣泛,Scrapy爬蟲框架、OpenStack雲存儲架構都是用Python實現的。最近下定決心,開始學習Python。先參考網上的demo寫一個小例子,實現linux tree命令。

原创 epoll 內核實現

1 功能介紹epoll與select/poll不同的一點是,它是由一組系統調用組成。int epoll_create(int size);int epoll_ctl(int epfd, int op, int fd, struct epo

原创 淺析GLib

GLib是GTK+和GNOME工程的基礎底層核心程序庫,是一個綜合用途的實用的輕量級的C程序庫,它提供C語言的常用的數據結構的定義、相關的處理函數,有趣而實用的宏,可移植的封裝和一些運行時機能,如事件循環、線程、動態調用、對象系

原创 nginx源碼學習——內存池

主要數據結構 struct ngx_pool_s { ngx_pool_data_t d; //內存塊的頭結構體 size_t max; //內存塊可被使用

原创 nginx源碼學習——進程間通信機制

進程架構 nginx作爲高性能的web服務器,採用的是多進程的方式,由一個master進程和若干個worker進程組成。作爲web服務器,nginx的設計從頭至尾體現兩個字:性能。一般推薦worker進程數和機器的CPU核數相同。

原创 memcached 源碼分析——半同步、半異步模式

memcached 是目前應用非常廣泛的緩存服務器,採用的是半同步、半異步模式。 半同步、半異步 半同步/半異步模型的基礎設施:主線程創建多個子線程(這些子線程也稱爲worker線程),每一個線程都維持自己的事件循環,即每個線程都

原创 進程間通信--管道、命名管道、FIFO

無名管道、有名管道(FIFO) 比較類似進程間的生產者、消費者模型。一個進程向管道中寫入數據,另一個進程從管道中讀出數據。pipe爲無名管道,提供的是一組半雙工通信方式。pipe會創建兩個文件對象,一個索引節點。pipe在內核中會

原创 libevent源碼閱讀筆記——時間管理

event_base對時間的管理 libevent 中時間採用struct timeval作爲時間類型,因爲timeval在很多平臺都支持,比如Windows、Linux。libevent接口傳入到都是超時時間間隔,所以程序內部必須做轉換

原创 爲什麼libevent 放棄紅黑樹選擇小根堆

最近學習libevent,發現libevent1.2版本對Timer事件用的是紅黑樹,但是libevent2.0版本就放棄了紅黑樹的使用,使用小根堆。於是蒐集了部分資料,以下內容來自:http://blog.chinaunix.net/

原创 nginx 源碼學習——處理stale event

處理stale event 添加到epoll後,worker進程會進入ngx_epoll_process_events函數,epoll_wait等待客戶端發起連接請求,觸發事件。而在對讀寫事件進行操作時,都會出現一個instanc

原创 Unicode 字符集學習筆記

字符集 軟件的本地化要解決的真正問題,實際上就是如何來處理不同的字符集。多年來,許多人一直將文本串作爲一系列單字節字符來進行編碼,並在結尾處放上一個零。對於我們來說,這已經成了習慣。當調用s t r l e n函數時,它在以0結尾的單字節