ngx_string
nginx的数据结构设计的非常精巧,高效,学习nginx的数据结构设计可以加深我们对于其后续代码的阅读深度。
nginx的数据结构在源码包的src/core目录中,nginx对应的文件是ngx_string.c和ngx_string.h文件:
[root@rsync core]# ll ngx_string.*
-rw-r--r-- 1 1001 1001 43851 Oct 11 11:03 ngx_string.c
-rw-r--r-- 1 1001 1001 6550 Oct 11 11:03 ngx_string.h
ngx_string.h
首先我们查看ngx_string.h头文件:
最基本的ngx_str_t定义如下,他有长度和指针两个元素:
typedef struct {
size_t len; //字符串长度
u_char *data; //data是一个指针,在后续中只是起指示左右
} ngx_str_t;
紧接着定义了键值的结构,其实就