|
' a/ H. N+ n$ V6 I! u8 X; b
课程介绍
7 D0 D v" Z7 c4 ~! Z本课程从网络编程的基本原理入手,基于Linux系统平台,通过大量的实践案例,帮助学员掌握服务端网络编程的核心机制、编程模型、以及最佳实践。同时交叉演练使用C++,Python和Go语言进行编码。整个课程深入浅出,由现在美国Google硅谷总部从事大规模分布式系统开发的资深专家担纲主讲。
7 O, V. V$ q2 L3 A" ^% V8 i4 o
) r1 q) F5 r! G2 n" H
! f% p& K, l" x- x( {# S7 W/ j4 z# f' a' }. a1 b9 S+ M
课程目录
3 n9 I9 l/ s. f l课程概要
, a8 n2 ?4 X' U, i1.网络编程概览7 D% K5 m$ \% o( U( e5 k$ t. F
2.一个TCP的简单实验
4 P# E% F. p5 Q o& Z3.课程内容大纲
9 Q0 }# y/ X; p6 _/ [! _/ H3 d: ]8 v; ?2 [9 o
第一部分 基本的非并行阻塞式网络编程" |% u+ f( O' L; J- n( t& W6 U6 ]
一.TTCP
6 v* T% e- b' K& V4.回顾基础的Sockets API
. O6 s! V, S6 O) K0 s5.TTCP代码概览' u9 R/ L1 r( |, T
6.使用TTCP进行网络传输性能测试
B. D7 v8 s8 j; ~- y& O- N7.阻塞IO下的TTCP实验- R0 S6 I8 V6 u/ h1 K. E& q
8.TCP自连接
. j2 [. Z, ^, Y' O9 ~2 t9.扩展练习" \! B, Q6 h- r5 N
( _" n9 s, S5 c" t c% y
二.Round-trip) E- s' U9 E, Z0 J: s }3 e0 c3 c
10.时钟概述& d. Q5 U. C( N9 h( m- A! A* b# S& c
11.时钟精确度和校准1 q, M% ]7 d) j, }
12.网络时间同步( U( `7 |. F; q- n H
13.Roundtrip代码分析7 u1 V/ X/ d$ N6 x8 ~
14.其他测试方案* Y+ \9 M J0 q/ n& i5 [( B0 L
15.UDP vs TCP9 a, s ~* Q( P
16.扩展知识& \; \- ~1 X; E' k V
0 t0 e3 Y- I4 ^& v% W/ T; t$ K
三.NetCat; y9 S- x) s+ r9 I$ @' X% P$ `
17.如何正确使用TCP# W8 {3 o4 m9 }5 @ h. ]
18.TCP使用的注意事项 f! Y8 D- X( E1 |. E1 e& ?, q
19.多个版本的Netcat概览- ]* c6 D" Q9 A
20.第一个Netcat的实现* c" a0 [: H- h# S7 x; {
21.IO-multiplexing方式实现Netcat
# c1 \7 Y! B" q& Z( c. a22.使用非阻塞IO 1
' W# b: _4 \4 e23.使用非阻塞IO 2 G: F5 b' V _
" n* T! v* E$ _+ j! o# ^第二部分 非阻塞式的并行网络编程
5 T! l: e1 O" ]+ N/ E四.一个监视进程状态的例子-procmon- N7 f2 X5 w. B) {# g! J7 m
24.进程监控概述
0 z; R! S( ?& r. ^4 `/ k25.实现前要考虑的问题, j9 K! y8 L5 n+ v/ l. c, E
26.procmon代码解析
, r' `. f- D% G# B8 {* F+ n" n: V1 R27.dummyload实现原理和代码解析
8 \" b0 K$ p' {' N28.procmon性能测试0 {, h2 x7 o3 s4 h
29.知识扩展和总结
4 O# [% `1 h, z1 \$ P8 y. @4 |9 c: w( Z& L) W1 F
五.memcached
/ n; {1 X0 v% Z# Y/ Z' {- E7 z; L30.功能描述9 }; a: {! r6 y, c
31.数据结构设计与分析% W/ D* r# A4 {% a3 E; A* G
32.数据结构代码解读6 O8 V9 x4 ?2 B; f5 v
33.网络IO模型与代码解读6 q- {4 ?/ x3 T( F R. {
34.性能测试 1
1 a+ G( C# K2 V; g/ ^2 U; G35.性能测试 24 x( A! N) l0 q5 [: C
36.性能分析
' t" I: n6 w% b& w37.定制数据结构以减小内存使用
$ Z8 F, N0 G$ J" s, A# n+ Z
) A: L9 A0 ?4 {3 g; p六.数独求解器6 c h) l/ W: m+ i' q
38.数独求解服务简介, Z3 e) ~% P. l5 L
39.并发模型和测试工具
# Z/ c8 F/ x) L( t* @40.批处理模型及疑似内存泄露
3 i1 f5 O3 O% ]% _6 }41.内置性能监控4 `1 R7 ~' K, _
42.延迟测量与禁用Nagle_s算法: K |' m4 t, ?9 ~. c
43.最大容量及伸缩性测试& \: Z, r& Y$ o/ r! ?+ U+ q
44.延迟分布于请求数及并发模型的关系' |' K/ x( T7 s& Q) H
45.过载保护% c2 q3 I( e6 d) ~) G7 A
46.负载均衡# r2 q' d* S7 W: ?1 U2 F7 T
47.负载均衡实例
4 Q3 ]1 _2 @! P5 A48.如何进一步适应生产环境
3 i5 i0 w; V, r" W+ j49.代码阅读1:客户端
+ m6 i7 R% r* h5 C50.代码阅读2:服务端
- p9 _, Y8 x- J7 x' I
+ Z4 }6 @2 ^! e( L5 E H, |7 v! Q七.广播与聊天服务
2 r5 }5 {' z* f) J* Z" [! H9 G% A51.苏迪曼杯羽毛球比赛7 g3 k- \5 V2 D
52.记分系统设计: v' D8 Q/ d3 L; |/ k5 [' D
53.聊天服务器4 O: a2 D& L3 Y8 {
54.聊天服务器代码改进
1 A) g2 @1 O- `9 q55.hub服务器[new!]
" L' R7 ^( b4 c- V8 h* G* L; H56.设计难点[new!]/ S: n1 p. T+ f8 U4 H) G) ]" @
- z: x; L. g# r0 B! j# \9 `1 L
八.SOCKS代理服务器(新)
* P' F) P9 A* `9 J; {57. TCP relay功能描述及Python实现/ E$ g* L8 B; h' R- Q" }4 ]
58. TCP半关连接
+ L% F( p1 B; r3 ]( V% c59. 非阻塞TCP relay实现
9 D2 y) l8 D! S! D# Q" P60. 源码及运行
* W/ B) O5 b2 E, O* b$ ~! h' u: D61. 竞态条件及修复, m& m' b/ H$ o. K" Q. B/ X. o" u
62. SOCKS4a服务器实现7 i! c: G% n" P8 U
63. 非阻塞IO之外的选择
1 A6 U2 z" i9 A64. 用 GO 语言实现 TCP relay
. }' K9 E# N) g/ T w" E- s65. 事件驱动与多线程的取舍1 q: O. ` J& |9 m: K7 p
66. 第七层以外的实现方式& l# `& W7 X1 u/ m
67. 正确理解TCP的可靠性
6 R( x. R6 j+ Q9 s. A* M$ D) q68. Muduo与C++113 d p# m8 A- y4 J C# u1 k: n
* Y; V; p. `% q% a) A7 `第三部分 使用多台机器并行处理数据
+ d/ I: w' ?8 L九.N皇后问题的多机并行求解
3 i& K: r" Y" ~9 Q( H69. N皇后问题及单机求解方法.
& W* W) l. I' T& ]/ d4 F( x$ A% S, `70. 并行算法与MapReduce
5 H4 |' l# Y3 l! k71. RPC简介与接口定义2 I, a6 [4 S( I- s# A- S& c/ O
72. 代码实现与运行实例9 n8 _- \2 I6 i, ?
73. Go语言客户端
+ \+ g, M; \1 C+ v% k: Y" r. A74. RPC 负载均衡
* w4 P& j+ f$ d7 r# q5 L- f
% j6 b: ~$ t r十.多机求解中位数4 J* k1 {7 S1 i) A
75. 多机求平均数和中位数的算法
% z8 ]4 K( r# |76. 代码实现及运行实例' ~) ]$ p# j( |8 y7 o% n9 {
77. 实现RCP框架:服务端
* r+ f# c& ~- o$ S$ u78. 实现RPC框架:客户端
! i% b8 N; g. T7 b0 l9 e, `9 y* e+ M* s2 l9 O/ [1 `6 T0 y! b1 m
十一.多机找出最频繁出现的数据项: b/ k5 ~# J. @* P9 o3 |
79. 单词计数及按频度排序,单机算法
- s q' U J7 r9 M; B! u) i80. 单机版代码阅读
t5 a0 Y% t+ x7 ?8 |81. 多机单词计数算法与代码
, }. P \! w8 B0 j6 z6 n% }: a3 j82. 多机找出最常见的K个单词
, T. W- N( \2 T6 n( `+ |+ U83. 复活《TCP/IP 详解第2卷》讲的4.4BSD协议栈
; ^7 \* e' z2 b. ?7 M84. 课程总结/ N( _' E* o) r6 c- d( _
+ Y& ]# Q6 c/ |& Z( s! Y
! s s' K4 Z& L
/ {! z/ V7 l5 V# K0 ?# ]5 d9 A5 J. ~3 o+ J/ h1 X: Q
: o2 r& r6 d; w |
|