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