整型的封装

typedef intptr_t ngx_int _t;//有符号整型

typedef uintptr_t ngx_uint_t;//无符号整型

字符串的封装

typedef struct
{
size_t len;
u_char *data;
}ngx_str_t;

链表容器的封装

typedef struct ngx_list_part_s ngx_list_part_t;
//链表结点
struct ngx_list_part_s
{
void *elts;//数组的起始地址
ngx_uint_t nelts;//数组中已经使用的元素个数,必须小于nalloc
ngx_list_part_t *next;//
}; typedef struct
{
ngx_list_part_t *last;
ngx_list_part_t part;
size_t size;//ngx_list_part_t中元素的大小上限
ngx_uint_t nalloc;//每个ngx_list_part数组的容量
ngx_pool_t *pool;//链表中管理内存分配的内存池对象
}ngx_list_t;

对于链表,Nginx提供的接口包括:

//pool为内存池对象,size是结点中数组的每个元素的大小,n是数组中可容纳元素的个数,即结点大小为n*size

ngx_list_t *ngx_list_create(ngx_pool_t *pool,ngx_uint_t n,size_t size);

//初始化一个已有的链表

static ngx_inline ngx_int_t ngx_list_init(ngx_list_t *list,ngx_pool_t *pool,ngx_uint_t n,size_t size);

//添加新的元素

void *ngx_list_push(ngx_list_t *list);

ngx_table_elt_t数据成员

typedef struct

{

ngx_uint_t hash;

ngx_str_t key;

ngx_str_t value;

u_char *lowcase_key;

}ngx_table_elt_t;

ngx_table_elt_t常用于http头部。

ngx_buf_t数据结构

缓冲区ngx_buf_t是Nginx处理大数据的关键数据结构,它既应用于内存数据也应用于磁盘数据。

ngx_chain_t数据结构

ngx_chain_t是与ngx_buf_t配合使用的链表数据结构。

typedef struct ngx_chain_s ngx_chain_t;

struct ngx_chain_s

{

  ngx_buf_t *buf;

  ngx_chain_t *next;

};

【Nginx】基本数据结构的更多相关文章

  1. Nginx学习笔记(三) Nginx基本数据结构

    Nginx基本数据结构 话说学习一种编程语言,例如C语言,我们首先学的也是数据结构,这是以后开发程序的关键.为了更好更方便的开发Nginx,Nginx自己实现了很多适合nginx的数据结构. Ngin ...

  2. nginx的数据结构集合(随时更新)

    在学习nginx的时候,因为其数据结构略多,看过后一般就忘记了.所以边学习边记录在这里吧,方便以后查看. ngx_buf_t:缓冲区结点 1: typedef struct ngx_buf_s ngx ...

  3. 结合源码看nginx-1.4.0之nginx模块组织结构详解

    目录 0. 摘要 1. nginx模块组织结构 2. nginx模块数据结构 3. nginx模块初始化 4. 一个简单的http模块 5. 小结 6. 参考资料 0. 摘要 nginx有五大优点:模 ...

  4. Nginx模块开发-理解HTTP配置

    理解HTTP配置 相关数据结构 先明白Nginx下述数据结构,再理解 HTTP配置的解析与合并过程 ngx_module_t 官方API typedef struct{ NGX_MODULE_V1; ...

  5. NGINX开篇

    前言 最近空闲时间比较多, 开始阅读nginx源码, 阅读的过程总结和笔记整理了下, 汇集成了一个系列的文章, 由于nginx功能实在太多, 没法做到面面俱到, 只对已经阅读过的源码进行记录总结, 以 ...

  6. Nginx源码研究一:NGINX模块启动

    Nginx 是一个轻量级,但是高性能的 HTTP 和 代理 服务器,也是一个 IMAP/POP3/SMTP代理服务器. 它的第一个版本0.1.0是由俄罗斯的工程师Igor Sysoev与2004年10 ...

  7. 结合源码看nginx-1.4.0之nginx内存管理详解

    目录 0. 摘要 1. nginx内存结构设计 2. nginx内存数据结构 3. nginx内存管理原理 4. 一个简单的内存模型 5. 小结 6. 参考资料 0. 摘要 内存管理,是指软件运行时对 ...

  8. Nginx源码分析:3张图看懂启动及进程工作原理

    编者按:高可用架构分享及传播在架构领域具有典型意义的文章,本文由陈科在高可用架构群分享.转载请注明来自高可用架构公众号「ArchNotes」.   导读:很多工程师及架构师都希望了解及掌握高性能服务器 ...

  9. 物联网安全himqtt防火墙数据结构之红黑树源码分析

    物联网安全himqtt防火墙数据结构之红黑树源码分析 随着5G的发展,物联网安全显得特别重要,himqtt是首款完整源码的高性能MQTT物联网防火墙 - MQTT Application FireWa ...

  10. 同事不太懂负载均衡,我直接把阿里架构师的这份Nginx笔记甩给他

    Nginx功能强大,架构复杂,学习.维护和开发的门槛较高. 本份笔记深入最新的Nginx源码,详细剖析了模块体系.动态插件.功能框架.进程模型.事件驱动.线程池.TCP/UDP/HTTP 处理等Ngi ...

随机推荐

  1. Python小记-- 读取当前目录下所有文件名

    # -*- coding: utf-8 -*- import os def file_name(file_dir): with open("SelectAllFiles.txt", ...

  2. nginx的编译安装

    下载源码 wget http://nginx.org/download/nginx-1.15.9.tar.gz 安装开发包组 yum groupinstall "Development To ...

  3. Calling method 'get' is not valid without an active transaction

    在进行使用注解来配置Spring和Hibernate的整合的时候, 遇到了这个问题, 它的意思是说在调用'get'方法的时候,没有活动的事务. 原因分析: Hibernate强制要求在进行数据库操作的 ...

  4. bacula快速部署

    快速部署: Server端:DD.SD.Monitor.Console均部署在Server上Client端:FD Server端部署:上传事先下载的源码包 tar xvf bacula-9.2.0.t ...

  5. dell服务器快速设置idrac

    前提:将服务器专用的idrac网络接口,连接到网络上 1.登录到服务器(即被监控的服务器). 2.安装客户端工具 yum  install  OpenIPMI OpenIPMI-devel OpenI ...

  6. KNN算法原理及实现

    1.KNN算法概述 kNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性.该方法在确定分类决策上只依据最邻近的一 ...

  7. 前端基础之JavaScript_2

    摘要: window对象 BOM(Browser Object Model) DOM (Document Object Model) 0.引子: JavaScript分为三部分:ECMAScript. ...

  8. zzuli 1905 小火山的跳子游戏

    Description   小火山和火山火山在一块玩跳子游戏.规则如下:   1:跳子的起始位置为0,棋盘大小从1到N   2:每次跳子跳k步. 例如当前位置为i, 那么下一步为i + k   3:跳 ...

  9. 大数据学习——linux常用命令(五)

    1 挂载外部存储设备 可以挂载光盘.硬盘.磁带.光盘镜像文件等 1/ 挂载光驱 mkdir   /mnt/cdrom      创建一个目录,用来挂载 mount -t iso9660 -o ro / ...

  10. java数据结构简单点

    java常用的数据结构一 集合框架主要就是Collection和Map: 1.Collection包含了List和Set两大分支. (1)List是一个有序的集合,每一个元素都有它的索引.第一个元素的 ...