自定义博客皮肤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 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_queue

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

2016-07-31 12:07:28 191

原创 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关注的人

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