- ngx_queue_t双向链表
- ngx_array_t动态数组
- ngx_list_t单向链表—>基础数据结构以涉及
- ngx_rbtree_t红黑树
- ngx_radix_tree_t基数树
- 支持通配符的散列表
Stack Pub
欢迎来到堆栈酒馆。
-
-
Nginx源码分析-内存池
内存池是在真正使用内存之前,预先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够用时,再继续申请新的内存。
内存池概念一定程度上符合 “计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决“ 的设计理念,内存池避免出现内存碎片,减少向操作系统申请内存的次数,降低各个模块的开发复杂度。
阅读全文… -
Haskell趣学指南
-
Nginx源码分析-基础数据结构(一)
为了进行平台无关层(PAL, Platform Abstraction Layer)抽象, 优化数据结构对内存空间的占用以及同一代码风格等因素, Nginx为此定义,封装了一些基本数据结构。
阅读全文… -
Nginx源码分析-配置文件解析
本节是在配置文件解析(即
ngx_cycle_t ngx_init_cycle(ngx_cycle_t *old_cycle)
)函数上的深入学习,主要围绕ngx_module_t
类型数组,ngx_command_t
类型数组与void *ctx
上下文结构体进行。 -
定时器组件设计
- timefd时间描述符+epoll
- 基于升序链表的定时器
- 基于时间轮(环形队列+双向链表)定时器:
- 基于时间堆(小根堆/优先队列)定时器:Libevent与Rust Async: futures-timer
- 红黑树定时器(nginx红黑树实现)
-
Nginx源码分析-从编译到启动
本节主要说明:
configure
编译脚本,nginx.conf
配置文件,nginx命令与main()
函数主流程。configure
不同的参数决定了编译出的nginx拥有哪些功能,nginx.conf
配置文件决定了这些功能具体的使用方式。nginx命令决定了如何与nginx交互,包括但不限于:以何种方式启动nginx, 停止服务, 重新读取配置文件与平滑升级等。 -
八皇后问题
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:
在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。