nginx原始碼剖析 1 概要

2022-03-16 17:42:38 字數 639 閱讀 3098

用「剖析」這個詞語有點大言不慚了。

一直對伺服器程式設計感興趣,選擇nginx作為分析的物件是因為其效率比較高,**量也比較合適(10w行左右),

**質量高,作者對效率要求非常高,對**也有異乎尋常的潔癖。

打算寫成乙個系列,但是本人文件水平一直偏弱,而且寫在這裡主要目的也只是為了當作學習筆記記錄,所以如果各位看官覺得

水平太菜的話盡請見諒,如果有任何錯誤,敬請指出,在此先行謝過了。

要分析原始碼,首先需要知道其功能,關於功能請google之。然後分析總體結構,最後深入每乙個小塊逐步研究和學習。

首先看下nginx的目錄結構:

nginx原始碼的src目錄下分為如下6個子目錄

1. core    // 是nginx伺服器的主幹部分,包含基本資料結構,main()函式,寫log等等

2. event    // 事件驅動模型以及相關**

3. http    // 不用多解釋了,肯定與http的實現相關了

4. mail    // 郵件**相關了

5. misc    //c++相容性測試和google perftools模組的原始碼

6. os      // 包裝(是包裝)了系統的函式呼叫,unix網路程式設計裡面把這個方式叫做「包裹函式」

和一張結構大圖:

原始碼剖析 Hashtable 原始碼剖析

hashtable同樣是基於雜湊表實現的,同樣每個元素都是key value對,其內部也是通過單鏈表解決衝突問題,容量不足 超過了閾值 時,同樣會自動增長。hashtable也是jdk1.0引入的類,是執行緒安全的,能用於多執行緒環境中。hashtable同樣實現了serializable介面,它支...

《STL原始碼剖析》筆記 1

第一章 stl概論與版本簡介 一 臨時物件的產生與運用。p36 這裡的臨時物件,指的是一種無名物件 unnamed subjects 如果它們的產生不在程式設計師的預料之下,往往造成效率的負擔,但有時刻意製造臨時物件會讓程式乾淨清爽。刻意製造臨時物件的方法是,在型別名稱後直接加一對小括號,並可指定初...

Nginx原始碼剖析 記憶體池結構ngx pool t

struct ngx pool s ngx pool data t 結構 該結構就是包含了操作該記憶體池的資料的一些指標 typedef struct ngx pool data t ngx pool large t 結構 表示大塊記憶體 struct ngx pool large s ngx po...