Java电子书:Linux高性能服务器编程 格式 pdf 电子书 PDF 电子书 Java吧 java8.com0 G& r( W4 m& L6 C6 H$ R/ D$ I: J" b
4 l6 L5 w7 y% J$ s' g" m" P9 A9 k8 k( F! v9 \4 R5 |
编号:mudaima-P0207【Java吧 java8.com】
/ `- A: N& t% W2 L, D" h2 w4 ]5 a) d0 r
( X. y' Y) d v) \8 s/ |: y; h7 C& u0 j7 \2 |1 m
Java电子书目录:第一篇 TCPIP协议详解$ u( I: N$ n! F& ?; J( k
第1章 TCPIP协议族
+ \2 T5 R' ?0 X _8 D' V6 D, m V1 ]& C 1.1 TCPIP协议族体系结构以及主要协议
( Z" D+ S% m6 j" a! R2 x6 C% K 1.1.1 数据链路层
/ S& d% P* ^: \) Y7 m1 k 1.1.2 网络层 1 C( I6 H3 ~2 F/ h! V& h; C
1.1.3 传输层
+ U+ ]3 y9 x3 L. }6 Y 1.1.4 应用层 2 _2 ~2 v$ V3 t. j5 O. ~! l
1.2 封装
; w" }& \; c; F- Q7 [3 J 1.3 分用
) S& l, t6 c& A" h* j 1.4 测试网络
5 B: O {6 ]7 ~. F$ y c [ 1.5 ARP协议工作原理
6 c9 J; `7 h3 t" `: A 1.5.1 以太网ARP请求应答报文详解 7 O: c/ T: [( ~9 t4 V# z/ j4 h
1.5.2 ARP高速缓存的查看和修改 ( A9 r2 N* X* R. q, p+ H8 _
1.5.3 使用tcpdump观察ARP通信过程 : f+ E3 o' l- X. @2 t+ O
1.6 DNS工作原理
* }* R: R+ M( [ }& Y) A 1.6.1 DNS查询和应答报文详解
) T2 s/ K- q6 c# P5 Q; q8 s 1.6.2 Linux下访问DNS服务
; v1 c* B& ^' n, f/ E& b$ u' Y 1.6.3 使用tcpdump观察DNS通信过程
a& o7 F$ @9 B/ \& I7 N+ g 1.7 socket和TCPIP协议族的关系 & b% ^: c4 ~! ^# d& @# v
第2章 IP协议详解
9 f* h% w3 [, V- D1 T5 z 2.1 IP服务的特点
1 R; H0 ?% a8 g( N$ {1 e4 q 2.2 IPv4头部结构
7 @& v- t4 v0 Y9 K. s4 ~0 v) x 2.2.1 IPv4头部结构 - X5 g9 x* y2 Y% \# Q9 J& ^
2.2.2 使用tcpdump观察IPv4头部结构 $ \2 ~' O1 U% s4 A5 j3 O
2.3 IP分片
! Z$ i$ |2 ~7 i- U 2.4 IP路由
3 V$ `0 n" w% d 2.4.1 IP模块工作流程
7 }& ?: T- Z4 f/ c9 j9 O 2.4.2 路由机制 " q2 d) d; O, W9 U
2.4.3 路由表更新
) \+ I: Z) X5 y. l; b! L0 B: y 2.5 IP转发 # { c! T6 |2 I8 N4 r6 P% O
2.6 重定向
& c8 i7 Q% {2 D# r3 z2 w 2.6.1 ICMP重定向报文
n6 [, d7 c/ L& u. P8 u3 T 2.6.2 主机重定向实例 ! |1 W" D1 d0 v: C- G n/ N
2.7 IPv6头部结构
) R0 S& \ A' Q6 F! @1 O, V 2.7.1 IPv6固定头部结构
2 |1 F6 e, v9 V* K 2.7.2 IPv6扩展头部 " [; t/ W2 u0 b' n% Y9 C
第3章 TCP协议详解
7 k( f, L7 p) e$ O% t8 `5 S2 B7 N 3.1 TCP服务的特点
4 P. g" [0 g# }3 N# \0 B6 F, q 3.2 TCP头部结构 5 r5 |; F' K) l% `% z. k0 K
3.2.1 TCP固定头部结构 5 K0 D* d& |1 K! r; u
3.2.2 TCP头部选项
s: X2 Y1 ~ K2 V% k. S/ } 3.2.3 使用tcpdump观察TCP头部信息
1 Z; h- l. }/ c4 A' U 3.3 TCP连接的建立和关闭 4 Z; e0 k4 b. n2 o: K! I/ K
3.3.1 使用tcpdump观察TCP连接的建立和关闭
4 P9 L+ x8 p7 @5 D( n8 Y4 O 3.3.2 半关闭状态
8 c' \8 N# S N0 O 3.3.3 连接超时 H9 m# d/ v4 z5 l! {* ]
3.4 TCP状态转移 % S% E! h: a# l! A+ ~ n- W0 a+ M# t, ~
3.4.1 TCP状态转移总图 . e& o; c" e/ o0 `
3.4.2 TIME_WAIT状态 3 s, e( _* u7 _! ^
3.5 复位报文段 ; o' K' g9 K% K9 G
3.5.1 访问不存在的端口 3 `" S+ T& O7 U7 V' \) ~. @
3.5.2 异常终止连接
1 }9 h# j, |' a/ I5 ~( s 3.5.3 处理半打开连接 8 H* l* _; }) o7 X8 w, D" x
3.6 TCP交互数据流
9 G( }. I9 [. I0 j 3.7 TCP成块数据流
9 z; ^$ ]9 M% j V! E6 Z2 v0 ?: a 3.8 带外数据 ' U$ @7 r" ~5 K1 A
3.9 TCP超时重传 + {" r2 _6 s6 z k. z8 N
3.10 拥塞控制
; K! ^1 \5 H0 B8 X; ` 3.10.1 拥塞控制概述
1 ^8 o/ ^9 a2 c2 B, R! Y" l1 m 3.10.2 慢启动和拥塞避免
. _9 ?! F5 E' a$ @$ ~5 c1 P) O2 b& E 3.10.3 快速重传和快速恢复 6 Q2 x0 }# o4 J! g/ N% w0 c
第4章 TCPIP通信案例:访问Internet上的Web服务器 4 T+ B& q7 c m: n5 f0 j+ O' ~* x
4.1 实例总图 c( ^ _6 w% K6 f2 Y' s
4.2 部署代理服务器
6 i- {) }% ?9 `4 g7 I6 q1 f6 u, n5 W 4.2.1 HTTP代理服务器的工作原理
- K! j8 n. e2 }: l7 e4 X% a3 _( O 4.2.2 部署squid代理服务器
; K0 D4 j- @ [+ {' Q7 u 4.3 使用tcpdump抓取传输数据包 / ^( g, D( d- R* _
4.4 访问DNS服务器
) j( X3 b, h& m* ~$ U+ M 4.5 本地名称查询
: `3 `, A2 [" ^& k' ~/ b 4.6 HTTP通信
7 f1 l/ F2 e. M8 `2 \- |0 z5 T 4.6.1 HTTP请求
; U. ]4 @! c, G' b* [9 ?0 R 4.6.2 HTTP应答
: r* q; a; T3 p- h3 m 4.7 实例总结 $ Q7 r# v" }+ J& B, N
第二篇 深入解析高性能服务器编程) Y2 a$ ]' d7 y& I2 v6 K
第5章 Linux网络编程基础API , e+ C p2 w% r
5.1 socket地址API
* P8 I" h" f& e# D 5.1.1 主机字节序和网络字节序 9 `; @: U m4 c& C6 s
5.1.2 通用socket地址
4 X/ [+ O" F$ g 5.1.3 专用socket地址
: W+ z6 `+ S' l5 `3 l 5.1.4 IP地址转换函数
1 s* E. R. X6 }# l$ s6 _; j$ T 5.2 创建socket
+ o/ ]8 X6 k" h, p- D% v* z% h% b 5.3 命名socket 8 p/ ]5 Q4 H' t8 z" ^
5.4 监听socket
$ x) L. F0 z3 M1 I' J8 O 5.5 接受连接
1 G- q6 F9 D/ L5 r7 S! K5 L 5.6 发起连接
/ ?' y' J# p6 x7 x8 ? 5.7 关闭连接 6 G# }, ~( z9 H9 b! ` ~
5.8 数据读写 - F2 e! M0 a1 m
5.8.1 TCP数据读写
% w5 ]1 D) W, r9 W) J, M 5.8.2 UDP数据读写 6 e- N1 S7 Q% N5 J3 z
5.8.3 通用数据读写函数
0 j: r( _% Q ~4 V6 o 5.9 带外标记 1 v2 E/ Y. c% l1 ?, M: x7 N
5.10 地址信息函数 6 Q- A" s, w$ d8 S) I. C0 e
5.11 socket选项
' S0 \' H5 _$ d6 a" W6 x 5.11.1 SO_REUSEADDR选项 : j4 C; X7 S2 q" b0 |
5.11.2 SO_RCVBUF和SO_SNDBUF选项
3 m3 v6 b: y/ ~ 5.11.3 SO_RCVLOWAT和SO_SNDLOWAT选项 ' j/ S% t; Y+ a1 B2 m
5.11.4 SO_LINGER选项 1 f7 A2 p$ f4 }8 K! \& S2 _. ]6 C
5.12 网络信息API
' D0 l+ o; \& y: t" c 5.12.1 gethostbyname和gethostbyaddr : O: z: v4 n8 c
5.12.2 getservbyname和getservbyport $ q6 [ M1 T8 v* ?
5.12.3 getaddrinfo
N4 s# F, F, J( N 5.12.4 getnameinfo 8 t9 w# o* I" M4 T, \6 l- _
第6章 高级IO函数
' j) o+ a* Z2 e3 ?5 Y% h$ h1 f 6.1 pipe函数 + o7 V/ o+ k2 g$ b: F1 B
6.2 dup函数和dup2函数
8 l9 u3 w. |, `9 P' f' K, J% f 6.3 readv函数和writev函数 , W: H% d8 t1 ~9 K0 z
6.4 sendfile函数 5 Y% q. P+ d b# `: g3 [: C w3 d
6.5 mmap函数和munmap函数
8 |9 A5 M: k+ V! @/ f 6.6 splice函数
1 ^! H1 t8 Z" ~. I9 _/ Z% e2 u 6.7 tee函数
: Q/ a6 P) g. U( E0 H# Z. Q 6.8 fcntl函数
/ A! r: t9 w' j- ^7 v) p! l4 Z Q 第7章 Linux服务器程序规范
/ e' x! `+ c2 K# x 7.1 日志 * E& v! g* k! q5 J
7.1.1 Linux系统日志
- M' T7 w7 \! j* ^- M+ x4 l 7.1.2 syslog函数
5 r( p+ s- [% E# d" O. n, y 7.2 用户信息 U* \+ h% o6 c* Q( F
7.2.1 UID、EUID、GID和EGID 9 q9 Z7 V& G5 _" {- q
7.2.2 切换用户 : j4 I& ^7 ?3 N! ]" C& n0 C
7.3 进程间关系 * a. R- J3 h( ?: J5 ]/ N3 Q" ~
7.3.1 进程组
: o( i7 z* _$ ^6 X7 U 7.3.2 会话
2 h. _3 _0 ?2 R- r- C4 U. v! c 7.3.3 用ps命令查看进程关系
+ y, y. T6 q+ w" ~+ b 7.4 系统资源限制 + M7 c" b9 N) b4 i3 O
7.5 改变工作目录和根目录
, e0 v5 g( C+ T7 v4 I 7.6 服务器程序后台化
! D) l' Z) @* L% N6 m4 S1 p 第8章 高性能服务器程序框架
: @' v) u1 A1 D' k% x; ~ 8.1 服务器模型
7 |; a( ~1 D2 a7 p 8.1.1 CS模型
( w1 r$ ~; e. k; F5 \6 e- `0 r2 q) l2 E 8.1.2 P2P模型 8 ~, d2 p! g% c
8.2 服务器编程框架 % k F, O' B% N( {
8.3 IO模型
- z3 l* J3 a$ i) ~ p, k 8.4 两种高效的事件处理模式 7 p0 m8 _8 d1 z) o
8.4.1 Reactor模式
1 I1 K" J5 k6 V4 n+ R8 \% z. {# V 8.4.2 Proactor模式 : `; V3 _: v: ?
8.4.3 模拟Proactor模式
( e4 _" c x. M9 q3 U, l 8.5 两种高效的并发模式 ) A) c! } `5 k- c0 m- v
8.5.1 半同步半异步模式
: I, {3 W% }& Q: X3 y5 ] 8.5.2 领导者追随者模式 , L/ @, V" _4 ?6 Y W( k5 f
8.6 有限状态机
* |: Q1 A4 S; O; ?* r" H9 r 8.7 提高服务器性能的其他建议 . h% W0 e# H& X' [/ B9 `
8.7.1 池 ' o; Q" j1 z# Q$ g4 T' k( V
8.7.2 数据复制 ' p$ d# Z5 V1 O/ ?
8.7.3 上下文切换和锁
( ]2 X. ^9 P, | 第9章 IO复用
) ~) C! t8 c: O5 `0 H2 a 9.1 select系统调用 0 X: S0 {) K/ T% `& a( }5 m" q
9.1.1 select API ( e; p' f2 ~( C4 q" U2 E+ ^
9.1.2 文件描述符就绪条件
" J) z }3 I% p1 e+ w. |: I 9.1.3 处理带外数据 3 a2 E7 T; m- a9 f' L* u5 }
9.2 poll系统调用
4 m, v8 G+ B R4 t5 j5 ^$ W 9.3 epoll系列系统调用 3 i# v6 w L5 R5 a/ L8 R2 c; u
9.3.1 内核事件表 , K5 J/ c; Z8 U9 B
9.3.2 epoll_wait函数 2 f* M/ Y- j' l4 x, J/ o5 l
9.3.3 LT和ET模式
* A$ k5 c! ~; K+ H! E" o. S 9.3.4 EPOLLONESHOT事件
q0 j' G z6 X3 e! ~7 u 9.4 三组IO复用函数的比较 8 {# z: \- P, B. d
9.5 IO复用的高级应用一:非阻塞connect
* O0 i8 O) @0 U4 l$ z 9.6 IO复用的高级应用二:聊天室程序
* q% f3 ^4 ?1 }, q2 x9 N+ N, e 9.6.1 客户端 * c3 w7 B8 h' i
9.6.2 服务器
9 n9 C9 g3 G& X9 q% U: Y* D 9.7 IO复用的高级应用三:同时处理TCP和UDP服务
7 j( |8 ?, U$ [( d 9.8 超级服务xinetd
! c' c" B$ D% c% G* a: J 9.8.1 xinetd配置文件
2 i' p3 r! j, t* m* _ 9.8.2 xinetd工作流程 ( Y; C" R. [) F! d% ]
第10章 信号 6 C1 S6 V; a$ [6 k1 D" a
10.1 Linux信号概述 + b; K) j" S z" m
10.1.1 发送信号 4 r [% e. A, u2 B. H% K4 c
10.1.2 信号处理方式 , u/ o6 l. Z9 Y8 l' j; o
10.1.3 Linux信号
& v7 n W* @. \( p- d& f 10.1.4 中断系统调用 6 g7 x0 ]- o) D' ]2 Y' }! k' s4 j! r
10.2 信号函数
, d/ b5 ?) Z; ^( m( P+ ?6 j 10.2.1 signal系统调用
+ X5 O4 _4 @/ e 10.2.2 sigaction系统调用 & x' {7 l, j( J2 Y: ^
10.3 信号集
) }0 E4 J) T! z 10.3.1 信号集函数 ! o8 q+ K! N/ @( g9 `
10.3.2 进程信号掩码
5 |# w1 K3 w* w& [3 w( i2 ~ 10.3.3 被挂起的信号
: e t6 H0 O2 w2 z* Y: ?, D. r% t 10.4 统一事件源 3 h& j( P0 Y5 y5 J0 f# M
10.5 网络编程相关信号 1 f% l7 \& e9 v; x! Q- R. v: D
10.5.1 SIGHUP
- S& c1 V: H B2 w4 X( }8 w! K \ 10.5.2 SIGPIPE ' G0 B+ g- M7 L x3 T, P% J* b
10.5.3 SIGURG
7 C0 A6 R& s1 y7 M7 ?0 J) ` 第11章 定时器
# l1 ]7 m+ n" H; C8 x 11.1 socket选项SO_RCVTIMEO和SO_SNDTIMEO
9 y* E' c. F7 K/ g# a 11.2 SIGALRM信号 ; W$ i4 F$ T1 m$ O r$ Y; a9 @
11.2.1 基于升序链表的定时器
Q, }5 S# u) h. v 11.2.2 处理非活动连接
& o1 Q. h4 n% \: L0 l8 d ? 11.3 IO复用系统调用的超时参数
, }7 b, z" j* ` 11.4 高性能定时器 : O# `1 j3 }1 n( ^
11.4.1 时间轮
. J! I8 ^3 V) n0 x% y 11.4.2 时间堆
5 p! @! i/ v( w) s$ g* N* T 第12章 高性能IO框架库Libevent 6 @# i2 w( F* K P
12.1 IO框架库概述 4 b" x7 Z* g8 R4 F- m. j
12.2 Libevent源码分析 ; p, J2 U: B/ @1 ?; h3 \
12.2.1 一个实例
9 i, F( V7 g; s5 S 12.2.2 源代码组织结构 4 {4 ^* ]5 s, I8 l& l' }8 l! W
12.2.3 event结构体
3 |0 h/ C# C/ B. Y 12.2.4 往注册事件队列中添加事件处理器 x0 r- e& ]; e, |0 z
12.2.5 往事件多路分发器中注册事件 # A1 {- |6 A- a# c' m; ^
12.2.6 eventop结构体 * p+ V) {. B6 ]7 _0 B. n$ g) T
12.2.7 event_base结构体
' k( C; p5 ^; E. t+ F- Z/ M4 l# } 12.2.8 事件循环 1 C* {! V$ | C! h7 y7 F& ?
第13章 多进程编程 6 o* u+ R8 o+ J
13.1 fork系统调用
: V8 Q! h% O2 ?" d+ S( O 13.2 exec系列系统调用
( x- [& y& i6 f4 j1 h8 z: m" B 13.3 处理僵尸进程 " `# q' z8 o2 i! l
13.4 管道 6 I* @% B, r- r1 _ D' L
13.5 信号量
& q& P8 T( W8 v# |$ Q9 q 13.5.1 信号量原语
! U2 s# ^9 a1 c/ _# i9 J 13.5.2 semget系统调用
9 g4 z6 e% J! u6 U/ \- s7 h# s 13.5.3 semop系统调用
: R2 \! N; X* s 13.5.4 semctl系统调用 . t2 L6 c1 G- n# h Y
13.5.5 特殊键值IPC_PRIVATE
6 x# A3 R1 [6 l: c& T, l; p y 13.6 共享内存
2 R/ r6 x7 _. E6 t 13.6.1 shmget系统调用
6 \- s6 N% Q* K; ]% I! G 13.6.2 shmat和shmdt系统调用 7 I- f+ f) p6 x
13.6.3 shmctl系统调用
& c; c; H' n5 U 13.6.4 共享内存的POSIX方法 & ]) ?9 ~" j. r# \* [6 J
13.6.5 共享内存实例
0 V( M; }2 [% c% l% ?2 p 13.7 消息队列
1 x( U7 s8 j$ G: h 13.7.1 msgget系统调用
# _& @3 Z8 K2 l% m, D 13.7.2 msgsnd系统调用
3 }8 P8 A4 ^0 p( r; k 13.7.3 msgrcv系统调用 ( s. V; ^1 l5 |1 u! P8 l- V/ L% a
13.7.4 msgctl系统调用 9 ?. ]% u2 P! z. S" n- u! W! b7 \4 L
13.8 IPC命令
6 Z0 a$ ?3 G6 j5 I$ q5 X 13.9 在进程间传递文件描述符 6 \/ P) d" s! I# m
第14章 多线程编程 6 s! L5 `9 f6 m; ~# E2 d
14.1 Linux线程概述
" D* `' R# _4 E h 14.1.1 线程模型
, |0 f& p, A* T% D 14.1.2 Linux线程库
; {; f7 R2 D8 y& P) G% r 14.2 创建线程和结束线程 * z, |- R0 x, ^% d& h# D5 X5 r
14.3 线程属性
# i7 D8 C- h. X" E" m 14.4 POSIX信号量 8 T* ^* s" v0 M1 W) u. E
14.5 互斥锁
+ ^7 d7 s k) k. b& W9 W/ t$ i 14.5.1 互斥锁基础API
& {9 a) J% N. S3 x, ` 14.5.2 互斥锁属性 2 k5 O3 V9 n y* a( \& m7 Z. @
14.5.3 死锁举例 ; y# A: H; ^* j& r2 g$ P" h
14.6 条件变量 0 a" |6 Q$ l) u2 ^4 e- Z5 C
14.7 线程同步机制包装类 # ]1 y" `5 B7 v i
14.8 多线程环境
+ m9 J; ?# `" s; x 14.8.1 可重入函数
! i# _ |- J% {0 h; _, l& g' V 14.8.2 线程和进程 ; e) k' d7 W! p' F( W: r8 `
14.8.3 线程和信号 y6 z0 q% Q" ~( i
第15章 进程池和线程池 - {8 f( Z* _' d% t$ {1 r4 K; s1 H& ]
15.1 进程池和线程池概述 # d. i6 l3 r- g# c; m- a
15.2 处理多客户 ( J6 P8 o9 K5 D( I- B; X
15.3 半同步半异步进程池实现 ; P2 X2 ?* d6 q3 Y# m
15.4 用进程池实现的简单CGI服务器
: D5 M0 a; M0 c' U3 ?9 W4 c' m 15.5 半同步半反应堆线程池实现
# e- J f! D% e0 j% P& C4 R 15.6 用线程池实现的简单Web服务器 . ^* P; S* M8 U' ?
15.6.1 http_conn类 6 @' T+ Z- w' W5 T) [ S1 W7 X1 \
15.6.2 main函数
) I4 r% Q- A5 J/ ]$ k7 x第三篇 高性能服务器优化与监测
3 @6 k# q: y2 _' O3 G, s 第16章 服务器调制、调试和测试 5 Z/ p* X! w8 o
16.1 最大文件描述符数
U: ^& q- U: L 16.2 调整内核参数 F! X C" a: p8 h% o( p8 B3 }
16.2.1 procsysfs目录下的部分文件 ) M6 e3 i3 p/ h! J* L) [7 _
16.2.2 procsysnet目录下的部分文件
& ]: \& x! I4 Q+ R) E' {# m 16.3 gdb调试
( ~' O3 \+ q7 ^ h. O' e 16.3.1 用gdb调试多进程程序 * `9 p; ?) i( o. x) w) H( A
16.3.2 用gdb调试多线程程序
# d9 t, A' [6 y, L+ r/ P$ n! ~ 16.4 压力测试 - [% ]- l& j# e& K( s3 u# J% ? }
第17章 系统监测工具 / E3 Y# w @& o) a7 f5 K: }
17.1 tcpdump - B5 q2 c7 \$ B
17.2 lsof $ T8 p2 h- i- r
17.3 nc
' w$ H; {( ~# O+ D ^0 H, W4 G 17.4 strace " I6 s9 x( D8 i: K: U/ L3 h
17.5 netstat
1 Z! [1 c& H$ W! E* ]/ J7 Z+ u 17.6 vmstat : Y" `* k: N# W: Z
17.7 ifstat 1 t% ^2 C' K" I) J' e, w
17.8 mpstat ' L( i4 u4 ]: V) G3 G- E3 X0 V% n
参考文献 - g6 I! |9 L7 J0 I4 i
/ |8 ~) Z# m @& y
) [' x: X# C/ d" H百度云盘下载地址(完全免费-绝无套路):
^; C3 E% v7 s5 A) X" X7 r& b |