<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                nginx為了處理帶有通配符的域名的匹配問題,實現了ngx_hash_wildcard_t這樣的hash表。他可以支持兩種類型的帶有通配符的域名。一種是通配符在前的,例如:“*.abc.com”,也可以省略掉星號,直接寫成”.abc.com”。這樣的key,可以匹配www.abc.com,qqq.www.abc.com之類的。另外一種是通配符在末尾的,例如:“mail.xxx.*”,請特別注意通配符在末尾的不像位于開始的通配符可以被省略掉。這樣的通配符,可以匹配mail.xxx.com、mail.xxx.com.cn、mail.xxx.net之類的域名。 有一點必須說明,就是一個ngx_hash_wildcard_t類型的hash表只能包含通配符在前的key或者是通配符在后的key。不能同時包含兩種類型的通配符的key。ngx_hash_wildcard_t類型變量的構建是通過函數ngx_hash_wildcard_init完成的,而查詢是通過函數ngx_hash_find_wc_head或者ngx_hash_find_wc_tail來做的。ngx_hash_find_wc_head是查詢包含通配符在前的key的hash表的,而ngx_hash_find_wc_tail是查詢包含通配符在后的key的hash表的。 下面詳細說明這幾個函數的用法。 [](http:// "點擊提交Issue,反饋你的意見...") ngx_int_t ngx_hash_wildcard_init(ngx_hash_init_t *hinit, ngx_hash_key_t *names, ngx_uint_t nelts); 該函數迎來構建一個可以包含通配符key的hash表。 | hinit: | 構造一個通配符hash表的一些參數的一個集合。關于該參數對應的類型的說明,請參見ngx_hash_t類型中ngx_hash_init函數的說明。 | |-----|-----| | names: | 構造此hash表的所有的通配符key的數組。特別要注意的是這里的key已經都是被預處理過的。例如:“*.abc.com”或者“.abc.com”被預處理完成以后,變成了“com.abc.”。而“mail.xxx.*”則被預處理為“mail.xxx.”。為什么會被處理這樣?這里不得不簡單地描述一下通配符hash表的實現原理。當構造此類型的hash表的時候,實際上是構造了一個hash表的一個“鏈表”,是通過hash表中的key“鏈接”起來的。比如:對于“*.abc.com”將會構造出2個hash表,第一個hash表中有一個key為com的表項,該表項的value包含有指向第二個hash表的指針,而第二個hash表中有一個表項abc,該表項的value包含有指向*.abc.com對應的value的指針。那么查詢的時候,比如查詢www.abc.com的時候,先查com,通過查com可以找到第二級的hash表,在第二級hash表中,再查找abc,依次類推,直到在某一級的hash表中查到的表項對應的value對應一個真正的值而非一個指向下一級hash表的指針的時候,查詢過程結束。**這里有一點需要特別注意的,就是names數組中元素的value值低兩位bit必須為0(有特殊用途)。如果不滿足這個條件,這個hash表查詢不出正確結果。** | | nelts: | names數組元素的個數。 | 該函數執行成功返回NGX_OK,否則NGX_ERROR。 [](http:// "點擊提交Issue,反饋你的意見...") void *ngx_hash_find_wc_head(ngx_hash_wildcard_t *hwc, u_char *name, size_t len); 該函數查詢包含通配符在前的key的hash表的。 | hwc: | hash表對象的指針。 | |-----|-----| | name: | 需要查詢的域名,例如: www.abc.com。 | | len: | name的長度。 | 該函數返回匹配的通配符對應value。如果沒有查到,返回NULL。 [](http:// "點擊提交Issue,反饋你的意見...") void *ngx_hash_find_wc_tail(ngx_hash_wildcard_t *hwc, u_char *name, size_t len); 該函數查詢包含通配符在末尾的key的hash表的。 參數及返回值請參加上個函數的說明。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看