- 博客(15)
- 收藏
- 关注
原创 ngx_listen
listen的作用大家都知道,来主要看下他的结构体和一些使用方法:struct ngx_listening_s { ngx_socket_t fd;//套接字 struct sockaddr *sockaddr;//监听的sockaddr地址 socklen_t socklen; /* size of sockaddr */
2016-08-21 19:52:23 393
原创 ngx_connection
上一节说了ngx_event 对于底层事件封装,这节来看下ngx_connection 先来看下ngx_connection结构体struct ngx_connection_s { void *data;//关联的模型 在空闲链表的时候是next 比如在http的时候就是http_request ngx_event_t *read;//读取
2016-08-09 23:38:36 545
原创 ngx_event
前面说了一些基本的数据结构,现在来看ngx关于网络这块的处理。ngx_event会牵涉到一个模块的东西,这个暂时先不说,在后面的文章,整合的时候才说,现在只是来看这个数据结构和功能。看下结构体:typedef void (*ngx_event_handler_pt)(ngx_event_t *ev); typedef void (*ngx_connection_handler_pt)(ngx_con
2016-08-08 17:54:53 571
原创 ngx_slab_pool
slab:slab是啥 借用百度百科的话来说,slab是Linux操作系统的一种内存分配机制。其工作是针对一些经常分配并释放的对象,如进程描述符等,这些对象的大小一般比较小,如果直接采用伙伴系统来进行分配和释放,不仅会造成大量的内存碎片,而且处理速度也太慢。而slab分配器是基于对象进行管理的,相同类型的对象归为一类(如进程描述符就是一类),每当要申请这样一个对象,slab分配器就从一个slab列表
2016-08-08 01:04:15 604 4
原创 ngx_rbtree的基本使用方法
ngx_rbtree 导语: 红黑树是一个常用的高级数据结构,它虽然是复杂的,但它的最坏情况运行时间也是非常良好的,并且在实践中是高效的:它可以在O(log n)时间内做查找,插入和删除,这里的n是树中元素的数目. 一: 红黑树的性质 1. 每个节点不是红的就是黑的 (必须上色嘛) 2. 根节点必须是黑的 3. 每个叶节点是黑色的(ngx 是sentinel) 4. 如果该节点是
2016-08-06 23:46:32 1920 3
原创 ngx_buf_t
buffer 在编程的时候经常用到,具体的概念就没啥好说的了。还是直接来看下ngx_buf ngx_buf 是一个抽象的数据结构,他可以指向很多数据。比如某个内存块。比如某一个文件数据等。来具体看下他的数据结构的定义吧。 struct ngx_buf_s { u_char *pos;//buf指向的数据在内存的时候,pos指这个buf数据开始的位
2016-08-02 18:59:15 364
原创 ngx_hash_combined_t,ngx_hash_keys_arrays_t
通过上一篇文章ngx_hash_wildcard_t 我们发现 虽然这个功能不错,但是好像不是那么好用样。主要是我们还需要对通配字段进行转换啊那些,如果不知道的话,还不一定搞得定,所以nginx就给我们提供了结构体来帮我完成这个事情。 先看ngx_hash_combined_t typedef struct { ngx_hash_t hash
2016-08-02 17:47:51 318
原创 nngx_hash_wildcard_t
通配符hash: 在nginx中,有可能会处理配符的域名的匹配问题, nginx喃 实现了 前匹配和后匹配 , 就是 *.xxx.com www.xxx.* 这种配备模式。 这个实现就是通过nngx_hash_wildcard_t(当然 里面会用ngx_hash_t) 来我们先从代码入手吧 ,先看代码吧: typedef struct { ngx_hash_
2016-08-02 15:31:28 738
原创 ngx_hash
hash 一个常用的数据结构,一般来说 hash主要是主要关注key的散列算法和冲突处理的方法。nginx的hash对冲突处理使用的是开链法。并且ngx_hash是一次初始化,没有删除和添加方法。来看下ngx_hash的实现吧。首先还是数据结构。 typedef struct { ngx_str_t key; //name ngx_uint_
2016-08-01 16:41:02 353
原创 ngx_list
ngx_list 顾名思义,是一个链表的实现,但是ngx中这个list的实现有点不一样。但是非常的简单,提供的方法也特别少。稍微过下。 先看数据结构: typedef struct ngx_list_part_s ngx_list_part_t; struct ngx_list_part_s { void *elts; //
2016-07-31 11:39:40 260
原创 ngx_array
数组: 在程序中,咱们经常使用到一组相同类型的数据,这个时候一般都是使用数组来保存, 比如 int arr[10] ={0}; int * arr = (int *)calloc(sizeof(int) * 10 ,1); 然后直接操作。 但是这样有个不好的地方 如果数目不定 一直就加减,好像就要写额外操作了。所以咱们来看下 nginx是怎么玩的数组。 首先还是来看数据结构:
2016-07-30 20:51:32 282
原创 ngx_pool_t
内存池:对资源进行统一的管理,我们只需要申请,在不使用的时候,进行统一释放,好处的话,便于管理,不好的地方就是不能做到太精度的释放,反正如何使用都要看自己,自己如何把握。 先来看下内存的池的结构体 typedef struct { u_char *last; //上一次分配完成后的位置 u_char *
2016-07-30 16:18:34 272
原创 第一个数据结构ngx_str
第一个数据结构 ngx_str: ngx_str 在core\ngx_string里面。 字符串的重要性咱就不用多说了。反正基本上就是没有啥程序不用到字符串操作的。 打开ngx_string 首先看到的就是咱们的ngx_str的定义 typedef struct { size_t len; u_char *data;
2016-07-30 13:22:10 712
原创 nginx 阅读
阅读nginx代码是很久前就想做的事情了,但是由于工作一直很忙,没有时间静下心来阅读,刚好上家公司创业失败,暂时就不找工作。来好好的研读一下源码吧。丰富一下自己的知识体系。 我在阅读源码的时候,会查阅很多资料,所以我写的文章,很大程度是对自己学习的一个总结。便于自己以后的查看。 我使用的nginx的版本是 1.6.3 . ide 是xcode7.2.1 由于本人刚开始不大习惯网上的各种读源码的
2016-07-30 13:09:18 239
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人