首頁  >  文章  >  後端開發  >  Nginx的資料結構--整數與字串

Nginx的資料結構--整數與字串

WBOY
WBOY原創
2016-07-29 09:08:35961瀏覽

Nginx的資料結構–整型和字串

Tags: Nginx資料結構


考慮到跨平台、高效率、統一規範,Nginx封裝了許多的資料結構,大多數都是我們在其他開發專案中常用到的一些,當然還有一些複雜的容器,筆者每篇文章會對其中一至兩個點進行分析和練習講解。

整型封裝

<code><span>typedef</span> intptr_t ngx_int_t;
<span>typedef</span> uintptr_t ngx_uint_t'</code>

字串型別

在Nginx中,使用Ngx_str_t表示字串,它的定義如下:

<code><span>typedef</span> struct {
    size_t      len;
    u_char     *<span><span>data</span>;</span>
} ngx_str_t;</code>

我們可以看到它是一個簡單的結構指針指向字串起始位址,len表示字串的長度。
這裡你可能會產生疑惑,C語言中的字串只需要有一個指標就能表示了,為什麼這裡還需要一個長度?這是因為C語言中我們常說的字串,其實是以’ 那這樣做有什麼好處呢?作為網絡伺服器,Nginx當然更多考慮的這一方便開發的需求,在網絡請求中,我們最多接觸的就是URL地址,請求頭信息,請求實體等,就拿URL地址來說,例如用戶請求:

<code>GET /test/<span>string</span>?<span>a</span>=<span>1</span>&b=<span>2</span><span>http</span>/<span>1.1</span>\r\n</code>
那如果我們使用了一個Ngx_str_t結構體來儲存了這個值,現在我們想取得請求類型,是GET還是POST或是PUT?我們不需要拷貝一份內存,我們要做只是做一個新的ngx_str_t,裡面的data指針是指向和原先的ngx_str_t一個地址,然後將len改為3即可。

當然,這只是個一個最簡單的應用,字串類型幾乎是各種業務系統也好,網路框架也好使用十分廣泛的一種基本類型,良好的設計結構是Nginx低記憶體消耗的重要保證。

ngx_str_t的操作

有了字符串這個簡單的一個結構體其實並不是特別的方便,在Java,Python這樣的現代高級語言中,都提供了豐富對於字符串類型的操作,Nginx也提供了不少的字串操作公共函數,儘管有些看上去並不是那麼容易用好,那麼我們來一一看下這些函數。

睡覺了,明天來寫吧

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); }); 以上就介紹了Nginx的資料結構--整型和字串,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn