自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 368

原创 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 511

原创 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 541

原创 ngx_slab_pool

slab:slab是啥 借用百度百科的话来说,slab是Linux操作系统的一种内存分配机制。其工作是针对一些经常分配并释放的对象,如进程描述符等,这些对象的大小一般比较小,如果直接采用伙伴系统来进行分配和释放,不仅会造成大量的内存碎片,而且处理速度也太慢。而slab分配器是基于对象进行管理的,相同类型的对象归为一类(如进程描述符就是一类),每当要申请这样一个对象,slab分配器就从一个slab列表

2016-08-08 01:04:15 575 4

原创 ngx_rbtree的基本使用方法

ngx_rbtree导语: 红黑树是一个常用的高级数据结构,它虽然是复杂的,但它的最坏情况运行时间也是非常良好的,并且在实践中是高效的:它可以在O(log n)时间内做查找,插入和删除,这里的n是树中元素的数目.一: 红黑树的性质1. 每个节点不是红的就是黑的 (必须上色嘛)2. 根节点必须是黑的3. 每个叶节点是黑色的(ngx 是sentinel)4. 如果该节点是

2016-08-06 23:46:32 1863 3

原创 ngx_buf_t

buffer 在编程的时候经常用到,具体的概念就没啥好说的了。还是直接来看下ngx_bufngx_buf 是一个抽象的数据结构,他可以指向很多数据。比如某个内存块。比如某一个文件数据等。来具体看下他的数据结构的定义吧。struct ngx_buf_s {    u_char          *pos;//buf指向的数据在内存的时候,pos指这个buf数据开始的位

2016-08-02 18:59:15 336

原创 ngx_hash_combined_t,ngx_hash_keys_arrays_t

通过上一篇文章ngx_hash_wildcard_t 我们发现 虽然这个功能不错,但是好像不是那么好用样。主要是我们还需要对通配字段进行转换啊那些,如果不知道的话,还不一定搞得定,所以nginx就给我们提供了结构体来帮我完成这个事情。先看ngx_hash_combined_ttypedef struct {    ngx_hash_t            hash

2016-08-02 17:47:51 292

原创 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 695

原创 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 330

原创 ngx_queue

队列:一个很基础的数据结构,讲究先进先出,nginx的队列是一个双向队列,设计也非常简洁,

2016-07-31 12:07:28 171

原创 ngx_list

ngx_list 顾名思义,是一个链表的实现,但是ngx中这个list的实现有点不一样。但是非常的简单,提供的方法也特别少。稍微过下。先看数据结构:typedef structngx_list_part_s  ngx_list_part_t;struct ngx_list_part_s {    void             *elts;//

2016-07-31 11:39:40 240

原创 ngx_array

数组: 在程序中,咱们经常使用到一组相同类型的数据,这个时候一般都是使用数组来保存, 比如 int arr[10] ={0}; int * arr = (int *)calloc(sizeof(int) * 10 ,1); 然后直接操作。 但是这样有个不好的地方 如果数目不定 一直就加减,好像就要写额外操作了。所以咱们来看下 nginx是怎么玩的数组。首先还是来看数据结构:

2016-07-30 20:51:32 258

原创 ngx_pool_t

内存池:对资源进行统一的管理,我们只需要申请,在不使用的时候,进行统一释放,好处的话,便于管理,不好的地方就是不能做到太精度的释放,反正如何使用都要看自己,自己如何把握。先来看下内存的池的结构体typedef struct {    u_char               *last; //上一次分配完成后的位置    u_char               *

2016-07-30 16:18:34 256

原创 第一个数据结构ngx_str

第一个数据结构 ngx_str:ngx_str 在core\ngx_string里面。 字符串的重要性咱就不用多说了。反正基本上就是没有啥程序不用到字符串操作的。打开ngx_string 首先看到的就是咱们的ngx_str的定义typedefstruct {    size_t      len;     u_char     *data;       

2016-07-30 13:22:10 679

原创 nginx 阅读

阅读nginx代码是很久前就想做的事情了,但是由于工作一直很忙,没有时间静下心来阅读,刚好上家公司创业失败,暂时就不找工作。来好好的研读一下源码吧。丰富一下自己的知识体系。我在阅读源码的时候,会查阅很多资料,所以我写的文章,很大程度是对自己学习的一个总结。便于自己以后的查看。我使用的nginx的版本是 1.6.3 . ide 是xcode7.2.1 由于本人刚开始不大习惯网上的各种读源码的

2016-07-30 13:09:18 214

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除