Nginx データ構造 – 整数と文字列
タグ: Nginx データ構造
クロスプラットフォーム、高効率、統一された仕様を考慮して、Nginx は多くのデータ構造をカプセル化しており、そのほとんどは他の開発プロジェクトで使用されています。 、頻繁に使用されるコンテナーがいくつかあり、もちろん複雑なコンテナーもいくつかあります。各記事では、著者が 1 つまたは 2 つのポイントを分析して実践します。
整数カプセル化
<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>
データポインタの2つのメンバーのみを持つ単純な構造であることがわかります。は文字列の開始アドレスであり、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>
もちろん、これは最も単純なアプリケーションにすぎません。文字列型は、ほとんどすべてのビジネス システムやネットワーク フレームワークで広く使用されている基本的な型であり、適切な設計構造は Nginx の低メモリ消費を保証する重要な要素です。