自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 What is Samza?

What is Samza?Apache Samza is a distributed stream processing framework. It uses Apache Kafka for messaging, and Apache Hadoop YARN to provide fault tolerance, processor isolation, security, and resour

2015-10-15 22:49:51 469

原创 nginx源码分析2———基础数据结构六(ngx_hash_keys_arrays_t)

相关介绍在构建一个ngx_hash_wildcard_t的时候,需要对通配符的哪些key进行预处理。这个处理起来比较麻烦。而当有一组key,这些里面既有无通配符的key,也有包含通配符的key的时候。我们就需要构建三个hash表,一个包含普通的key的hash表,一个包含前向通配符的hash表,一个包含后向通配符的hash表(或者也可以把这三个hash表组合成一个ngx_hash_combin

2015-08-15 17:04:24 515

原创 nginx源码分析2———基础数据结构五(ngx_hash_wildcard_t)

相关介绍所谓支持通配符的散列表,就是把基本的散列表(ngx_hash_t)中的元素的关键字,用去除通配符以后的字符作为关键字加入,原理其实没有那么神秘。当然得先熟悉ngx_hash_t,可以看上一节,对ngx_hash_t做深入的了解。 ngx_hash_wildcard_t类型的hash表包含通配符在前的key或者是通配符在后的key。例如,对于关键字为”www.test.*”这样带通配符

2015-08-12 23:58:16 550

原创 nginx源码分析2———基础数据结构四(ngx_hash_t)

相关介绍nginx哈希表的实现是 ngx_hash_t。ngx_hash_t的实现也与数据结构教科书上所描述的hash表的实现是大同小异。 对于常用的解决冲突的方法有线性探测,二次探测和开链法等。ngx_hash_t使用的是开链法。源码分析哈希表的结构ngx_hash_elt_t是hash表中每一个元素的结构,实际存储在hash表中的结构typedef struct { void

2015-08-11 20:11:03 439

原创 nginx源码分析2———基础数据结构三(内存池)

内存池介绍内存池数据结构主要是ngx_pool_t结构体,很多重要的其他数据结构也都在使用它,包括前面提到的数组和链表。我们可以把它想象成一种提供内存的容器,它提供了一种机制,帮助管理一系列的资源(如内存,文件等),使得对这些资源的使用和释放统一进行,免除了使用过程中考虑到对各种各样资源的什么时候释放,是否遗漏了释放的担心。源码分析内存池结构内存池的数据块位置信息t

2015-08-09 16:18:20 379

原创 nginx源码分析2———基础数据结构二(链表和双向链表)

相关介绍nginx提供了大量的基础数据结构,本章将着重介绍链表和队列,该两种数据结构贯穿整个nginx。基础数据结构链表链表结构ngx_list_t封装的是链表结构,在nginx使用比较广泛,http首部就是使用该数据结构。struct ngx_list_part_s { void *elts; ngx_uint_t nelts; ngx

2015-08-08 22:22:08 305

原创 nginx源码分析2———基础数据结构一(字符串和数组)

相关介绍nginx提供了大量的基础数据结构,对一些数据结构进行了封装和实现,我们在模块开发中进程会用到,当然nginx源码里面也是随处可见,熟悉基础数据结构有助于我们更快的去了解nginx源码与内部机制。基础数据结构ngx_stringngx_string结构ngx_string的实现与封装主要在ngx_string.h和ngx_string.c中,结构如下typedef struct {

2015-08-08 21:13:20 489

原创 nginx源码分析1———进程间的通信机制六(UNIX域协议)

相关介绍Unix域协议并不是一个实际的协议族,而是在单机上客户端与服务器通信的一种方法。

2015-08-06 23:58:10 749

原创 nginx源码分析1———进程间的通信机制五(文件锁)

相关介绍

2015-08-04 23:45:16 1128

原创 nginx源码分析1———进程间的通信机制四(System V内存共享)

相关介绍SystemV共享内存区在概念上类似于前面提到的mmap,我们将先使用shmget,然后再调用shmat,其中shmget类似于open,shmat类似于mmap。相关系统调用shmget函数创建一个新的共享内存区,或者访问一个已存在的内存共享区。#include int shmget(key_t key, size_t size, int oflag);1,

2015-08-03 23:04:50 567

原创 nginx源码分析1———进程间的通信机制三(mmap)

相关介绍mmap函数把一个文件或者一个Posix共享内存区对象映射到调用进程的地址空间。使用该函数,可以达到三个目的。 1.使用普通文件以提供内存映射I/O。 2.使用特殊文件以提供匿名内存映射。 3.使用shm_open以提供无亲缘关系进程间的Posix共享内存区相关系统调用#include//若成功则返回被映射区的起始地址,若出错则为MAP_FAILEDvoid* m

2015-07-27 22:22:10 700

原创 nginx源码分析1———进程间的通信机制二(自旋锁)

自旋锁的相关介绍自旋锁的释义自旋锁与其他的锁最大的区别就是自旋锁不会引起调用者睡眠(非睡眠锁),也就是始终是可执行状态。如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里,看是否该自旋锁的保持者已经释放了锁。自旋锁的适用场景当锁的使用时间很短的时候,就可以采用自旋锁,这样开销很小。如果时间很长,锁一直自旋,又不能调度其他的程序,cpu资源将被大量占用,这样就不是很合适。对于长时间的锁,应该使用

2015-07-23 18:53:44 922

原创 nginx源码分析1———进程间的通信机制一(信号量)

nginx源码分析1———进程间的通信机制一(信号量)nginx源码分析1进程间的通信机制一信号量相关介绍相关系统调用相关结构初始化加锁解锁销毁相关介绍nginx采用信号量辅助原子变量实现互斥锁,本章我们将讨论原子变量在nginx源码里面的应用。 信号量(semaphore)是一种用于提供不同进程间或者一个给定的进程的不同线程间同步手段的原语。nginx采用的信号量是Posix的基于内

2015-07-22 22:37:08 2223

空空如也

空空如也

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

TA关注的人

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