nginx
文章平均质量分 82
禾夕
这个作者很懒,什么都没留下…
展开
-
nginx----array
1、array的结构体ngx_array_t是nginx中定义的数组结构,用于存储数据,其结构体定义如下:typedef struct { void *elts; //指向分配给数据存储空间的内存起始地址 ngx_uint_t nelts; //当前数组中存储的元素的个数 size_t size; //每个元素的大小原创 2015-07-09 21:25:13 · 563 阅读 · 0 评论 -
nginx----ngx_buf
在ngx_buf.h文件中,定义了ngx_chain_t和ngx_buf_t两个结构体。其中chain起到一个链的作用,将待发送的数据包串联起来,而buf则是chain中的每一个节点。ngx_buf_t的数据结构如下:struct ngx_buf_s { u_char *pos; u_char *last; off_t原创 2015-07-10 15:46:48 · 704 阅读 · 0 评论 -
nginx----list
nginx中的list也是一个链表,但与我们之前遇到的list却不太一样。一般的list中的每一个节点都表示链表中的一个元素,但是nginx中list的每一个节点都是一个数组,其中可以存储固定大小的元素,每次存储空间不够时,都是分配一个固定大小的数组的,而不再是只分配一个元素的空间。1、数据结构链表中每一个节点的数据结构如下:struct ngx_list_part_s { v原创 2015-07-13 10:47:29 · 480 阅读 · 0 评论 -
nginx----queue
1、数据结构nginx中queue的数据结构非常简单,其中并不包含任何实际数据相关的结构,只有两个指针用于找到前后的元素。struct ngx_queue_s { ngx_queue_t *prev; ngx_queue_t *next;};2、基本操作queue的操作也几乎都是通过宏定义来实现的,队列包含的具体操作如下:#define ngx_queue原创 2015-07-13 16:03:09 · 681 阅读 · 0 评论 -
nginx----hash
hash也是一种数据结构,相比于list、queue等要复杂一些。在利用hash表存储数据时,都是通过key-value的形式,通过对key进行hash得到一个key-hash值,然后利用该值找到数据应该在hash表中存放的位置,再插入数据。1、基本数据结构实现hash表涉及的主要数据结构如下:typedef struct { //hash表 ngx_hash_elt_t原创 2015-07-14 16:43:30 · 867 阅读 · 0 评论 -
nginx-----内存池
nginx对内存的管理由其内部的内存池实现,nginx在/src/os/unix/ngx_alloc.h/.c中定义了基本的内存分配操作,如malloc等。内存池部分的操作在/src/core/ngx_palloc.(h/c)中实现。一、内存池相关数据结构一个基本的nginx内存池结构如下所示 由上图可知,nginx通过将多个内存块串联成链表以形成一个内存池的,其中每个内存块都包含了一个固定头部(原创 2015-12-29 21:45:45 · 627 阅读 · 0 评论