& B4 g. X6 K& m0 L0 B
Linux C++训练营- l8 z. h& J1 l' D
) h+ W3 g4 P% l' ]0 A3 S7 F; ?+ g
轩辕Linux C++全科班课程,专注Linux/UNIX服务器端软件开发(后台开发)培训,培养企业所需的专业Linux/UNIX C++软件工程师。课程涉及UNIX/Linux服务器端软件开发的各个方面:Linux/UNIX、C++、Boost、ACE、Oracle /MySQL、企业级的实战项目等。9 E, x- H# \% x4 Q: K( u
) M9 i+ _- u+ S4 G8 R5 {4 B
上课方式:现场班/远程班, I: [( f" q0 _7 B
% [/ f! J8 |2 u* `课程大纲: . m( z4 ~7 k9 W! M0 f5 Z 1 s3 Z h2 T- {$ ~7 I" ?* p8 h Linux C++全科班课程由以下模块组成: ( J2 ?9 u! R2 U+ XModule01 - Linux系统基础 # r% k! ^- N; ^; i( d8 d0 q+ Y( ~& C2 O7 \$ x! y- W
由于本系列课程基于Linux(或UNIX),熟悉Linux操作系统是必要的前提。 该模块的课程包含以下方面的内容:" o* y# |9 J% @+ g
; {7 E$ y3 K) ?8 i, g+ |
常用Unix/Linux命令0 x8 Q7 x' l; i- b# F5 \
熟悉文件管理、文本处理、进程管理、网络、系统管理等各个方面大约100个常用的命令。 {+ |- s: s9 q4 C9 P5 o 深入了解bash) N* U! o* S6 X
了解Linux默认shell: bash 的语法、命令执行、I/O重定向、任务控制等。+ m) U& D4 K; L( ~. U6 N7 g2 t
正则表达式基础- M% v$ n4 h' B( m( j9 D
由于UNIX/Linux中很多强大的文本处理命令如:grep、awk、sed,还有vi编辑器等工具配合正则表达式将产生强大的威力,所以熟悉正则表达式语法是十分必要的。 9 w" r( t. z. V find、grep、sed、awk D% A# |! K: V: ]4 _& ~- n 四个强大的UNIX工具,特别是sed、awk在文本处理方面的能力非常强大,在Linux下工作应该掌握这几个命令。7 I n& A0 x3 G8 ?
/ F& Q' d9 t5 a& H9 y, A
Module02 - Linux开发环境 * m! }* ^7 y: B, T1 ^8 P" J( u 7 N6 v! K6 z) a$ s 不同系统平台下的开发工具、开发环境各有不同。该模块课程关注的是Linux C++/C开发所必需的一系列工具:( u! ]/ m, V# `5 |6 O( d
' Q* e, x9 {5 }' b' f6 d
vi(vim)文本编辑器 $ w; Z9 g# p( }) P& S8 t8 y# K 一个UNIX世界标准的文本编辑器,简约而强大,不论作为开发人员还是系统管理员,熟练使用vi是一项基本的、且不可或缺的技能。* Z- m4 E- G7 n3 Q
gcc/g++ C/C++编译器 " c# `1 \% e, E) q2 O1 a$ M 通过具体的示例讲解使用gcc/g++编译单个、多个文件、共享库、静态库等。 W; [1 Y* L1 z! q
gdb 调试器 2 {" L5 r; S+ N 通过具体的示例来熟悉通过gdb来调试C/C++应用程序、修正应用程序运行期的错误。 A! l) P2 b9 Q; R
make和makefile 8 ^4 O# W/ K$ a! K9 Q 学习编写makefile,使用make来构建一个完整的项目。 ! M/ J' N. `$ k+ W$ @4 C# } CVS - 版本控制( i7 \, D7 H' S2 N' S0 X
运用CVS来进行代码的版本控制。! [& i m3 d& _% E% z. g! l9 R/ G
Eclipse CDT, H0 f( m& o9 i Q/ j" K
一个非常强大的C/C++ IDE,强大的文本编辑器、与GCC工具链的无缝结合、方便的gdb前端、集成CVS/Subversion等版本控制等,提供众多的便利,大大减轻开发者的负担。2 v4 Q- S, V4 \/ b0 i: o
# |' H$ g" }7 ?Module03 - C++编程语言 - [- c0 I7 t3 U5 L' l- ?0 M6 E) L( \8 D3 x
深入讲解C++编程语言的各个方面,即完整的C++语法讲解:* U6 c$ M- i; t6 _. D- n$ h; A1 ]. F+ f
2 v7 D: N8 K2 | 语言基础6 g8 F5 Q: v, }; r/ _; F
详细介绍变量、表达式、语句、指针、数组、流程控制、函数、文件组织等。 9 |4 C$ z( ^) |1 j* E, C 抽象机制 - 面向对象编程9 m: M, w) F1 u0 V
深入讲解C++的抽象机制,封装(类)、继承、多态;操作符重载、函数对象、异常处理等。8 S' I8 U4 }8 U0 g
模板 - 泛型编程 ! S: b! Q, G k) |1 C$ c9 G& D 详细介绍C++的模板机制,类模板、函数模板、模板特化等方面的内容。: y# w0 Q% G/ o; k! v/ T
. ]( W" `) d) AModule04 - C++标准库# u% D f. i M% I# G
" W2 p4 c# i' h# S: u 完整地讲解STL各大组件:容器、算法、函数对象、容器适配器、迭代器、迭代器适配器等;另外还包括string、I/O stream;为了更好地了解STL容器的特性、排序算法,额外安排:数据结构简介和常用排序算法简介2个部分的内容。 4 Y* [4 u) h4 \4 y. H1 d, F + d5 [! b+ [+ c4 W" t A" s1 \ 常用数据结构简介# t' p* K0 }# E/ t' ^
介绍动态数组、linked-list、binary search tree、rb-tree、hash table、stack、queue、heap等常用的数据结构。4 C+ _& ?8 }4 a3 A" G
STL容器详细介绍 3 `8 k/ ?8 I3 ^' Y& }, n vector、list、deque、stack、queue、priority_queue、map、set等容器的特性和用法。; M8 \2 d7 r+ b3 }
常见排序算法介绍 V; @5 E" W4 ?( b 简要介绍各种常见排序算法的原理,及其实现。 " a5 K& n h/ s9 T" U( ^ STL算法和预定义函数对象5 q" o+ C" O, R B
标准库提供了多达60多个算法函数,涉及排序、搜索、排列组合等多个方面,其中多数算法会使用如greater、less、binder2nd等函数对象,该单元的课程详细介绍了上述算法的使用和相关函数对象的具体作用。 : A$ C0 a$ H! R 迭代器 3 Z# a* }5 i# s7 I STL容器和算法高度解耦,而算法之所以能方便的作用于STL容器,维系二者的就是迭代器。 ) | W$ j/ Q* n1 g& l% m. a 在这个单元的课程中讲介绍C++迭代器的类别、各类迭代器适配器的用法。 * }4 S4 ^: \/ ~# u6 e5 A string - 字符串# _5 Q7 E: g1 E1 Z$ O4 [, d; \
相对于C风格的字符串处理,C++提供了更安全和方便的字符串类型 string,给class提供类众多的方法确保针对字符串处理的安全、便捷性。该单元的课程讲完整地介绍string的使用。 2 v0 Q2 M. v9 S2 _1 ?: G- z, T0 U T I/O stream* S$ Y6 {8 B) w! I, N% b' p
C++标准库提供的一个强大的I/O流框架。本单元详细介绍标准输入/输出、文件输入/输出、字符串输入/输出流的运用,利用操控符来控制输入/输出的格式。' w+ ~$ w/ ]- W
数值9 d5 Z! J7 @" ]( I6 X# x7 q
介绍C++数值运算的算法,如valarray、4组数值算法函数、随机数等方面的内容。 + r) A' v+ K# }7 a# x/ L/ o- k% v, q, f; \! s
Module05 - C++ Boost% O4 j- A8 B9 ]
9 J& O+ T! x2 r) D9 j0 o7 y5 j
Boost是由C++标准委员会成员发起、众多C++业界高人参与设计并实现的一个涉及面广、质量高且业已广泛使用的C++标准后备库,其中 TR1已经被纳入C++0x标准库。不论从风格和内容组织上讲,都可以认为Boost项目是C++标准库的延伸。截止到boost 1.43版本,boost项目拥有大约100个用途广泛的实用库。这部分课程将介绍服务器端开发所需要的几个组件:9 F* {+ Z- B# y( u b; C
2 [2 \. |" n# i) d+ {3 D
容器与数据结构 . B) T. {' y: T; v. N% O 介绍boost.any, boost.tuple, boost.array, boost.unordered(基于hash table,即hash_map和hash_set)等组件。 7 E; _& h' l* E) t8 L 字符串算法和文字处理 / B+ z- k8 l) F 介绍boost.lexical_cast, boost.format, boost.string_algo等组件。) N4 Z; m) B9 K2 _
正则表达式 % i1 ^7 G, B2 v% w$ ]9 J% C 正则表达式语法(perl正则表达式语法)的讲解,boost.regex库的使用。8 M! r) x0 i+ Q0 N, @
智能指针 8 H2 J* L2 l6 F1 s& ~ 详细介绍shared_ptr、scoped_ptr、weak_ptr等智能指针的使用。. g9 l/ Y* i3 H9 @
函数对象相关2 k% G, Q2 F! k7 n8 \; ~* @ r
详细介绍boost.bind, boost.mem_fn, boost.function, boost.ref, boost.lambda等组件。7 I1 d$ X. j. z6 i3 L1 x Y
序列化$ m; }8 W0 o+ |+ F
通过实例熟悉boost.serialization库的用法。* W X" F4 y% l* w# }5 r" G
日期与时间 9 k. x* k- E$ @0 p boost.date_time库的详细介绍。 3 u0 L( n" }! _, Z/ m 多线程 ( a, h8 {# ~2 D7 f6 C3 M 作为服务器端开发必不可少的内容之一:多线程支持,boost提供了一个跨平台的线程库:boost.thread。/ S X/ \8 K# s( Q
本单元的课程详细介绍boost.thread。. \" t' x2 T2 e
网络编程) E4 F9 _0 } Z
boost.asio库,通过对各类操作系统原生的socket API以及事件多路分离、异步I/O API的封装,构成了一个性能优秀、便于编程的网络编程框架,使复杂的网络编程任务变得简单、安全、并且高效。 / R. a5 Q7 c* j+ e* K! B 本单元的课程通过一系列的示例来展示:通过asio来构建TCP同步/异步服务器和客户端、UDP同步/异步服务器和客户端应用,从而熟悉asio的接口和编程套路。 - w/ j. K. N. u- D5 [% A: d6 ~4 N 6 h6 G2 Y# X& ], l* C: Y0 sModule06 - C++ ACE $ W% |6 s6 \: L- F+ b9 Y6 x& L! r5 z. B: ?( O( O1 N) G
ACE是一个被广泛使用、设计优雅、高性能的C++通信框架(不仅仅是通信框架),其设计及实现被众多开源框架所借鉴。是构建稳定、高性能、高吞吐量、跨平台的服务器端程序的优秀框架。本模块的课程包含以下几个方面: ) i* o- e! c" _! J5 u$ Z% P: G5 X( d0 U8 d e0 W
ACE基础网络I/O相关对象* ~, w3 q* E, o% A3 |7 _
详细介绍ACE_SOCK、ACE_SOCK_Acceptor、ACE_SOCK_Connector、ACE_INET_Addr等class的使用。3 a+ }+ i6 h$ P, t$ o
Reactor框架 ; E7 A: P2 U: T9 {/ e2 p ACE Reactor框架简化事件驱动程序的开发,而事件驱动是很多网络化应用的基本特征,这些应用常见的事件源包括I/O事件、Posix信号或 Windows句柄激发以及定时器到期等。 + c$ k) x2 p( K; Q. E# h& H8 W 本单元介绍ACE_Event_Handler、Timer、ACE_Reactor等类的使用,并使用该框架构建一个简易的多人聊天室应用。 1 t1 N# A' I. M+ @- z8 _$ Z: ? Task框架 ; h' m' H8 @) |0 W( R: _ ACE Task框架提供了强大而可扩展的面向对象并发能力,如在基于对象的上下文(context)中派生线程,以及在执行不同线程中的对象之间传递消息和对消息进行排队。; `, [$ l% X: T# u
Acceptor-Connector框架0 H' Y: w, ?; j1 i! v- q; S
ACE Acceptor-Connector框架实现了Acceptor-Connector模式,这种模式通过解除:1,网络化应用中相互协作的对等服务的连接和初始化所需的活动、2,以及它们一旦连接和初始化后所执行的处理的耦合,增强了软件复用和可扩展性。" V9 m ]; q4 |1 Z4 _! U1 c
Proactor框架: \0 c6 Y) `; T& s1 t
Proactor框架引入异步I/O机制,既保留了Reactor框架的事件多路分离,避免多线程的开销,同时还缓和了反应式的同步I/O的瓶颈效应。- C7 E1 i* s) C' B% u1 d7 [; x: S3 O( e' r
& B' s/ R" G* H( ~" F3 lModule07 - 数据库开发 7 K F7 P5 g: m/ Q2 x3 ?: Z8 b( k# A6 g2 R* \7 i+ G4 G& e% k
数据库作为服务器端应用数据持久化的最重要的部件,在服务器端应用开发中占有非常重要的地位。本模块主要针对Oracle 10g和MySQL 5.1两种关系型数据库管理系统。本模块包含以下内容:) v9 r# Z% E1 A' a8 _- R
$ ^4 R, e& A, u6 Y+ A7 W0 N SQL语言 2 J- M& i3 X, V. }9 z# f 详细介绍DML、DDL语句的语法和使用。 ( F0 E& C! L2 }! e# I. S+ s, ]; M# l Oracle PL/SQL: C! w% X* ]/ D% ?% q/ t
全面介绍Oracle PL/SQL语法,以及使用PL/SQL编写存储过程、函数、触发器。0 x; L% M: \( F
MySQL存储过程 # I% W' a$ L7 F) V$ p3 T 编写MySQL存储过程、函数、触发器。8 z3 J4 o" b2 _: O' B# F5 |6 M
C++ OTL # j! J0 J( Q s3 X4 Q6 V* @) ]" [! [ OTL:Oracle、ODBC and DB2-CLI Template Library。通过OTL,可以方便、高效的与各类主流的关系型数据库如DB2、Oracle、Infomix、Sybase、MySQL等通信。" g' E% f' t9 ?1 O0 t l
( X( l( G( L3 U) ~& b, `
Module08 - 项目实战& J: N9 R5 V9 @. f
. N7 a2 C0 ?# \" n- O4 u7 i- M
课程结束后,学员需基于C++、Boost或ACE实现以下2个项目: 2 ]( m" _; j7 R; _, @3 q R! V0 a6 S; s6 G; W
项目1:X-Messenger Servers 4 t" q8 |6 w$ e/ ^$ b& I IM(即时通信)服务器群,类似于MSN、QQ等IM的服务器。可以基于Boost.asio或ACE实现。 0 o! }1 e* Y- j# ^# I# b 项目2:X-Messenger Client 7 [# {) i& I, @3 ? IM(即时通信)客户端软件,类似于MSN、QQ等IM的工具。实现Contacts管理、P2P文件传输、P2P一对一文本聊天、群聊等现代IM客户端功能,可以基于Boost.asio或ACE实现。 ! P. u; p, R/ J" l" `7 g$ O, } 其他项目,可由学员自行定义。& C$ H9 q1 y% m9 T( g) ?2 A