Nginx源码分析-数据结构之哈希表hashTable

Nginx 中定义了自己的哈希表 ngx_hash_t,定义在 ngx_hash.c/h 中,有关哈希表可参考散列表(一)- 散列表及常用字符串哈希函数 及 散列表(二)- 散列表解决冲突的方式。 数据结构定义 哈希表元素定义为 ngx_hash_elt_t,它的链值采用的是变长数组的方式,len 记录链值的...

阅读更多

认识RGB

RGB 简介 RGB 色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB 即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。 RGB 格式 索引形式 R...

阅读更多

Nginx源码分析-数据结构之红黑树rbTree

Nginx 中的红黑树结构 ngx_rbtree_t,定义在 ngx_rbtree.c/h 中,红黑树的详细情况可参见红黑树及其C语言实现。 数据结构定义 红黑树结点中包含结点的键值,结点的左右孩子,父结点,结点颜色数据及结点的数据值,红黑树结点定义: typedef ngx_uint_t ngx_rbt...

阅读更多

Nginx源码分析-数据结构之双向链表queue

Nginx 中定义了一个同一般双向链表基本相同的双向链表结构 ngx_queue_t,定义在 ngx_queue.c/h 中。 数据结构定义 typedef struct ngx_queue_s ngx_queue_t; struct ngx_queue_s { ngx_queue_t *pre...

阅读更多

C 语言编程风格约定

写了多年代码,每个公司的代码风格都不一样,这里结合一些常用的规范,对本站的 C 语言代码风格作一个约定。 排版格式 缩进统一采用 4 空格缩进,禁止使用 tab。 缩进使用 K&R 缩进风格或 BSD 缩进风格均可,但是要统一。建议使用 K&R 缩进风...

阅读更多

散列表(二)- 散列表解决冲突的方式

散列表冲突 当哈希函数把不同的关键字映射到同一个散列表地址(即哈希数组索引)上时,就产生了冲突(collision),当关键字集比散列表地址(哈希数组个数)大时,关键字映射必然会出现冲突。我们用链接法(chaining)和开放寻址法(open addressing)来处理冲突。 使用链接法处理冲突 链...

阅读更多

散列表(一)- 散列表及常用字符串哈希函数

散列表 散列表又称哈希表(hash table),是普通数组概念的推广。它将数据的关键字信息通过哈希函数映射到数组的索引上,然后将数据存储在数组对应的索引上,这样访问数据时就可以按照数组的方式来访问,可以加快访问速度。 将关键字映射到数组索引的函数就叫做哈希函数。 常用字符串哈希函数 下面我们对一些...

阅读更多

Nginx源码分析-数据结构之字符串string

Nginx 中封装了自定义的字符串类型和一系列字符串操作函数,定义在 ngx_string.c/h 中。 自定义字符串类型 ngx_str_t 是 nginx 的自定义字符串类型,包含一个字符串长度和不以 ‘\0’ 结尾的字符串。 typedef struct { size_t len; ...

阅读更多