《Apache源代码全景分析-第1卷:体系结构与核心模块》扫描版[PDF]

2019-03-20 10:56|来源: 网络

中文名: Apache源代码全景分析-第1卷:体系结构与核心模块
作者: 张中庆
梁雪平
图书分类: 网络
资源格式: PDF
版本: 扫描版
出版社: 电子工业出版社
书号: 9787121084744
发行时间: 2009年5月31日
地区: 大陆
语言: 简体中文
简介:

评论处1楼有网盘链接
内容介绍:
  本书是“apache源代码全景分析”的第1卷。书中详细介绍了apache的基础体系结构和核心模块的实现机制,包括配置文件、模块化结构、多任务并发,以及网络连接和请求读取,其中多任务并发体系结构是本书分析的重点,讨论了prefork、worker及winnt三种mpm。本书还着重介绍了apache 2.0新引入的过滤器,包括过滤器的使用、实现,以及其中的数据组织形式——存储段和存储段组,剖析了apache中常用的过滤器。.
   本书的目的是深入挖掘apache运行背后的实现机制和模块开发的细节,适合apache模块开发者、希望了解内部细节的apache管理员、web服务器开发者、大规模服务器开发者学习和阅读。...
内容截图:



目录:
第1章 web服务器概述. 1
1.1 www概述 2
1.1.1 internet概述 2
1.1.2 超文本的概念 3
1.1.3 www的历史 4
1.2 http服务器 8
1.2.1 http服务器简介 8
1.2.2 http服务器功能 9
1.2.3 www文档 11
1.2.4 工作方式 12
1.3 apache功能 15
1.3.1 虚拟主机 16
1.3.2 内容协商 16
1.3.3 持续连接 17
1.3.4 缓存 18
1.3.5 访问控制和安全 20
1.3.6 动态内容生成 21
第2章 apache体系结构 23
2.1 apache目录 24
2.2 apache层次结构 26
.2.2.1 操作系统支持层 27
2.2.2 可移植运行库层 27
2.2.3 核心功能层 28
2.2.4 可选功能层 29
2.2.5 第三方支持库 29
2.2.6 apache工具包 30
2.3 apache核心功能层 30
2.3.1 核心与可选模块的关系 30
2.3.2 核心组件 30
2.4 apache运行流程 34
2.4.1 apache启动过程 35
2.4.2 http连接处理 36
2.4.3 请求报文读取 36
2.4.4 请求处理 37
2.4.5 内容生成 39
2.4.6 关闭与重启 40
2.5 主程序main 41
2.5.1 主程序概要 41
2.5.2 主程序细节 42
第3章 配置文件管理 51
3.1 apache配置系统 52
3.2 配置文件 52
3.2.1 配置文件类 52
3.2.2 配置文件处理时机 54
3.3 指令相关概念 56
3.3.1 指令概述 56
3.3.2 指令参数 57
3.3.3 指令上下文 59
3.3.4 指令参数类型 73
3.4 指令配置 76
3.4.1 指令结构 76
3.4.2 指令定义 77
3.4.3 预定义指令函数 79
3.4.4 指令表 80
3.5 apache配置处理 81
3.5.1 指令保存 81
3.5.2 指令读取 83
3.5.3 配置指令处理 98
3.5.4 特殊指令 112
3.6 .htaccess处理 115
3.6.1 .htaccess使用场合 115
3.6.2 指令的覆盖 116
3.6.3 处理.htaccess 117
3.7 实现自己的配置段 120
第4章 apache模块化体系结构 123
4.1 apache模块概述 124
4.1.1 apache模块组成 124
4.1.2 apache核心与模块交互 125
4.2 apache模块结构 127
4.3 模块的加载 132
4.3.1 模块变量 132
4.3.2 dso(dynamic shared object,动态共享对象)的概念 134
4.3.3 静态模块加载 137
4.3.4 动态模块加载 141
4.3.5 模块卸载 146
4.4 指令表 147
4.4.1 指令表概述 147
4.4.2 指令处理函数 148
4.4.3 指令共享 151
4.5 挂钩(hook) 154
4.5.1 为什么引入挂钩 154
4.5.2 声明挂钩 158
4.5.3 挂钩数组声明(apr_hook_link) 162
4.5.4 挂钩结构(apr_hook_struct) 162
4.5.5 挂钩函数注册(apr_implement_external_hook_base) 164
4.5.6 使用挂钩 165
4.5.7 挂钩排序 168
4.5.8 可选挂钩 179
4.5.9 挂钩纵览 184
4.5.10 自己编写挂钩 191
4.6 模块与配置文件 192
4.6.1 概述 192
4.6.2 如何描述配置信息 194
4.6.3 目录相关配置(per-directory config) 195
4.6.4 服务器配置(per-server config) 198
4.7 配置存储和使用 199
4.7.1 配置向量 199
4.7.2 配置存储体系结构 201
4.7.3 虚拟主机配置存储 202
4.7.4 目录配置存储 203
4.7.5 location配置存储 205
4.7.6 文件配置存储 205
4.7.7 总体存储示意 206
4.8 模块通信 207
4.8.1 简单通信方式 208
4.8.2 可选函数 209
4.8.3 提供者api 212
4.9 常用模块 216
4.9.1 缓存模块 216
4.9.2 url映射模块.. 217
4.9.3 内容生成模块 219
4.9.4 安全模块 221
4.9.5 代理模块 223
4.9.6 其余模块 224
第5章 多任务并发处理 227
5.1 多进程并发处理 228
5.1.1 概述 228
5.1.2 mpm在apache中的位置 229
5.2 mpm数据结构 231
5.2.1 记分板 231
5.2.2 终止管道(pipe of death) 244
5.3 inetd:通用的多任务处理结构 247
5.3.1 服务器程序概述 247
5.3.2 inetd 249
5.4 预创建(prefork)mpm分析 249
5.4.1 leader/follow模式 249
5.4.2 prefork mpm概述 250
5.4.3 prefork mpm实现 253
5.5 工作者(worker)mpm分析 291
5.5.1 worker mpm概述 291
5.5.2 worker主进程 294
5.5.3 子进程管理 305
5.5.4 线程管理 310
5.5.5 信号处理 323
5.6 winnt mpm分析 326
5.6.1 winnt mpm概述 326
5.6.2 完成端口相关概念 328
5.6.3 winnt mpm主程序 330
5.6.4 监控主进程 332
5.6.5 工作进程 336
5.6.6 线程处理 345
第6章 网络连接 359
6.1 网络连接概述 360
6.1.1 网络连接上下文环境 360
6.1.2 等待连接 361
6.1.3 接受连接 361
6.1.4 创建连接 361
6.2 连接数据结构 361
6.3 等待连接 364
6.3.1 概述 364
6.3.2 套接字创建 365
6.3.3 套接字侦听 369
6.4 连接处理 376
6.4.1 连接处理概述 376
6.4.2 创建连接 377
6.4.3 连接处理 379
6.5 请求读取 385
6.5.1 请求读取概述 385
6.5.2 http请求报文 386
6.5.3 request_rec结构 388
6.5.4 请求读取实现 395
6.5.5 请求行读取 402
6.5.6 请求头读取 404
6.5.7 网络io读写 408
第7章 过滤器 409
7.1 过滤器概述 410
7.2 过滤器类型 412
7.3 过滤器结构 414
7.4 过滤器协议 416
7.5 过滤器使用 418
7.5.1 静态过滤器使用 418
7.5.2 动态过滤器使用 419
7.6 过滤器操作 419
7.6.1 过滤器注册概述 419
7.6.2 数据结构描述 420
7.6.3 过滤器结点 422
7.6.4 过滤器注册 424
7.6.5 过滤器的查找 428
7.6.6 添加过滤器至指定请求或连接 429
7.6.7 从连接中删除过滤器 436
7.6.8 过滤器初始化 437
7.7 智能过滤器 438
7.7.1 何谓智能过滤器 438
7.7.2 智能过滤器的使用 442
7.7.3 智能过滤器的实现 442
7.8 过滤器函数 457
7.8.1 输出过滤器 457
7.8.2 输入过滤器 457
第8章 存储段和存储段组 459
8.1 什么是存储段和存储段组 460
8.1.1 存储段和存储段组 460
8.1.2 为什么需要存储段组 463
8.2 存储段分配子 465
8.2.1 概述 465
8.2.2 分配子创建 466
8.2.3 存储段内存分配 467
8.2.4 存储段内存释放 471
8.3 存储段操作概述 471
8.3.1 存储段接口 471
8.3.2 存储段空接口 476
8.4 存储段类型 482
8.4.1 堆存储段(heap bucket) 483
8.4.2 内存池存储段(pool bucket) 487
8.4.3 文件存储段(file bucket) 490
8.4.4 mmap存储段(mmap bucket) 494
8.4.5 套接字存储段(socket bucket) 497
8.4.6 管道存储段(pipe bucket) 499
8.4.7 持久存储段(immortal bucket) 500
8.4.8 临时存储段(transient bucket) 502
8.4.9 刷新存储段(flush bucket) 503
8.4.10 流终止(eos)存储段 505
8.4.11 http错误存储段 507
8.5 存储段操作 508
8.6 存储段组操作 511
8.6.1 创建存储段组 512
8.6.2 存储段组的销毁 512
8.6.3 存储段组的分裂 513
8.6.4 统计存储段长度 517
8.6.5 存储段转换 518
8.6.6 数据写入 520
8.6.7 ap_r*函数写入 526
8.7 存储段组和过滤器 528
8.7.1 存储段组和过滤器的关系 528
8.7.2 获取存储段组 528
8.7.3 存储段组传递 529
第9章 常用过滤器 531
9.1 概述 532
9.2 输入过滤器 532
9.2.1 core_in输入过滤器 534
9.2.2 http_in过滤器 545
9.2.3 创建自己的输入过滤器 556
9.3 输出过滤器 558
9.3.1 资源过滤器 559
9.3.2 内容过滤器 563
9.3.3 协议过滤器 564
9.3.4 编码转换过滤器 580
9.3.5 网络过滤器(core) 583
9.3.6 编写输出过滤器 591
索引... 603


相关问答

更多
  • 电脑体系结构?[2022-10-20]

  • ....就是这样
  • 百度一下,想飞社区,在资源里有这本书,第八版中文版+英文版,在"JAVA开发-JAVA文档"分类下面,还有不少JAVA经典教程和书籍,你可以参考一下
  • 成功的体系结构遵循各种指导原则和最佳实践。SEI 在这方面做了广泛的研究,并最终创建了几种用于改进和评估体系结构的方法。四种代表性的方法如下: 质量属性专题研讨会 (QAW) 体系结构权衡分析方法 (ATAM) 软件体系结构分析方法 (SAAM) 积极的中间设计审核 (ARID) QAW 在定义体系结构之前执行,ARID 在设计工作过程中执行,而 ATAM 和 SAAM 则在已经完成体系结构之后执行。这些方法的引出部分的执行由一个协调人员引导。
  • 软件体系结构论文:一种面向方面软件体系结构模型 摘 要: 为了分离软件系统中的核心关注点和横切关注点,通过引入面向方面软件开发的思想设计了一种面向方面软件体系结构模型,并详细分析了该模型的三个基本构成单元,即构件、连接件和方面构件。最后通过一个网上支付实例验证了该模型具有一定的理论意义和实用价值。 关键词: 面向方面软件体系结构;横切关注点;构件;连接件;方面构件 20世纪60年代的软件危机使得人们开始重视软件工程的研究。起初,人们把软件设计的重点放在数据结构和算法的选择上,然而随着软件系统规模越来越大,对 ...
  • TL; DR 根据我的理解,您可以编译为LLVM支持的任何目标(这里可能还有一些注意事项,前端使用内联汇编程序或模块级内联汇编 ),但不能保证它实际上可以正确执行 。 前端负责将作品移植到作者支持的平台上。 还要注意,作为前端开发人员,您负责提供数据布局和目标三元组 。 也可以看看: LLVM-位码跨平台 llvm常见问题 实现便携式sizeof 与Clang交叉编译 你的问题: 假设我正在写Rust(使用LLVM作为后端)。 我是否能够自动将我的Rust代码编译到LLVM可以定位的每个体系结构(假设该机器 ...
  • 最省力的选项是通过删除所有工作表/数据将代码从工作表移动到VBA加载项,然后使用“另存为”将工作簿转换为加载项,然后可以将其加载到excel和将一直可用。 根据您的编写方式,可能需要进行一些更改,但它们不会像c#的端口那么大。 也就是说,将代码集中在一个地方将使整个过程在未来更容易被照顾。 另外,你已经有了自动化excel的C#代码来启动VBA,所以如果你有时间的话,现在可以做得更好。 The least-effort option is moving the code from the worksheet ...
  • 当我使用开源项目/代码库时,我通过检查软件包名称和结构来获得高级视图并关注核心代码/逻辑。 然后,我通常通过查看项目中包含的任何示例代码/文档来确定API的工作方式。 如果我仍然需要更多的帮助,我将绘制一些继承图,打印出可能需要做出重大更改的有趣类,并尝试查找其他地方使用的代码的更多示例。 我很偏向于使用我们最近推出的Architexa Eclipse插件来完成上述任务。 我相信还有其他人可以做类似的事情。 When I am working with a open source project/codeb ...