免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2936 | 回复: 4

Linux C++培训--C++,Boost,ACE培训 [复制链接]

论坛徽章:
0
发表于 2012-08-24 13:17 |显示全部楼层
本帖最后由 dxrgr 于 2013-04-19 14:15 编辑

轩辕Linux C++训练营

      专注Linux/UNIX服务器端软件开发(后台开发)培训,课程涉及UNIX/Linux服务器端软件开发的各个方面:Linux/UNIX、C++、Boost、ACE、Oracle /MySQL、企业级的实战项目等

Linux C++全科班
上课方式:现场班/远程班

      
课程模块

       Linux C++全科班课程由以下模块组成:
Module01 - Linux系统基础

       由于本系列课程基于Linux(或UNIX),熟悉Linux操作系统是必要的前提。 该模块的课程包含以下方面的内容:

    常用Unix/Linux命令
    熟悉文件管理、文本处理、进程管理、网络、系统管理等各个方面大约100个常用的命令。
    深入了解bash
    了解Linux默认shell: bash 的语法、命令执行、I/O重定向、任务控制等。
    正则表达式基础
    由于UNIX/Linux中很多强大的文本处理命令如:grep、awk、sed,还有vi编辑器等工具配合正则表达式将产生强大的威力,所以熟悉正则表达式语法是十分必要的。
    find、grep、sed、awk
    四个强大的UNIX工具,特别是sed、awk在文本处理方面的能力非常强大,在Linux下工作应该掌握这几个命令。

Module02 - Linux开发环境

       不同系统平台下的开发工具、开发环境各有不同。该模块课程关注的是Linux C++/C开发所必需的一系列工具:

    vi(vim)文本编辑器
    一个UNIX世界标准的文本编辑器,简约而强大,不论作为开发人员还是系统管理员,熟练使用vi是一项基本的、且不可或缺的技能。
    gcc/g++ C/C++编译器
    通过具体的示例讲解使用gcc/g++编译单个、多个文件、共享库、静态库等。
    gdb 调试器
    通过具体的示例来熟悉通过gdb来调试C/C++应用程序、修正应用程序运行期的错误。
    make和makefile
    学习编写makefile,使用make来构建一个完整的项目。
    CVS - 版本控制
    运用CVS来进行代码的版本控制。
    Eclipse CDT
    一个非常强大的C/C++ IDE,强大的文本编辑器、与GCC工具链的无缝结合、方便的gdb前端、集成CVS/Subversion等版本控制等,提供众多的便利,大大减轻开发者的负担。

Module03 - C++编程语言

       深入讲解C++编程语言的各个方面,即完整的C++语法讲解:

    语言基础
    详细介绍变量、表达式、语句、指针、数组、流程控制、函数、文件组织等。
    抽象机制 - 面向对象编程
    深入讲解C++的抽象机制,封装(类)、继承、多态;操作符重载、函数对象、异常处理等。
    模板 - 泛型编程
    详细介绍C++的模板机制,类模板、函数模板、模板特化等方面的内容。

Module04 - C++标准库

       完整地讲解STL各大组件:容器、算法、函数对象、容器适配器、迭代器、迭代器适配器等;另外还包括string、I/O stream;为了更好地了解STL容器的特性、排序算法,额外安排:数据结构简介和常用排序算法简介2个部分的内容。

    常用数据结构简介
    介绍动态数组、linked-list、binary search tree、rb-tree、hash table、stack、queue、heap等常用的数据结构。
    STL容器详细介绍
    vector、list、deque、stack、queue、priority_queue、map、set等容器的特性和用法。
    常见排序算法介绍
    简要介绍各种常见排序算法的原理,及其实现。
    STL算法和预定义函数对象
    标准库提供了多达60多个算法函数,涉及排序、搜索、排列组合等多个方面,其中多数算法会使用如greater、less、binder2nd等函数对象,该单元的课程详细介绍了上述算法的使用和相关函数对象的具体作用。
    迭代器
    STL容器和算法高度解耦,而算法之所以能方便的作用于STL容器,维系二者的就是迭代器。
    在这个单元的课程中讲介绍C++迭代器的类别、各类迭代器适配器的用法。
    string - 字符串
    相对于C风格的字符串处理,C++提供了更安全和方便的字符串类型 string,给class提供类众多的方法确保针对字符串处理的安全、便捷性。该单元的课程讲完整地介绍string的使用。
    I/O stream
    C++标准库提供的一个强大的I/O流框架。本单元详细介绍标准输入/输出、文件输入/输出、字符串输入/输出流的运用,利用操控符来控制输入/输出的格式。
     数值
    介绍C++数值运算的算法,如valarray、4组数值算法函数、随机数等方面的内容。

Module05 - C++ Boost

       Boost是由C++标准委员会成员发起、众多C++业界高人参与设计并实现的一个涉及面广、质量高且业已广泛使用的C++标准后备库,其中 TR1已经被纳入C++0x标准库。不论从风格和内容组织上讲,都可以认为Boost项目是C++标准库的延伸。截止到boost 1.43版本,boost项目拥有大约100个用途广泛的实用库。这部分课程将介绍服务器端开发所需要的几个组件:

    容器与数据结构
    介绍boost.any, boost.tuple, boost.array, boost.unordered(基于hash table,即hash_map和hash_set)等组件。
    字符串算法和文字处理
    介绍boost.lexical_cast, boost.format, boost.string_algo等组件。
    正则表达式
    正则表达式语法(perl正则表达式语法)的讲解,boost.regex库的使用。
    智能指针
    详细介绍shared_ptr、scoped_ptr、weak_ptr等智能指针的使用。
    函数对象相关
    详细介绍boost.bind, boost.mem_fn, boost.function, boost.ref, boost.lambda等组件。
    序列化
    通过实例熟悉boost.serialization库的用法。
    日期与时间
    boost.date_time库的详细介绍。
    多线程
    作为服务器端开发必不可少的内容之一:多线程支持,boost提供了一个跨平台的线程库:boost.thread。
    本单元的课程详细介绍boost.thread。
    网络编程
    boost.asio库,通过对各类操作系统原生的socket API以及事件多路分离、异步I/O API的封装,构成了一个性能优秀、便于编程的网络编程框架,使复杂的网络编程任务变得简单、安全、并且高效。
    本单元的课程通过一系列的示例来展示:通过asio来构建TCP同步/异步服务器和客户端、UDP同步/异步服务器和客户端应用,从而熟悉asio的接口和编程套路。

Module06 - C++ ACE

       ACE是一个被广泛使用、设计优雅、高性能的C++通信框架(不仅仅是通信框架),其设计及实现被众多开源框架所借鉴。是构建稳定、高性能、高吞吐量、跨平台的服务器端程序的优秀框架。本模块的课程包含以下几个方面:

    ACE基础网络I/O相关对象
    详细介绍ACE_SOCK、ACE_SOCK_Acceptor、ACE_SOCK_Connector、ACE_INET_Addr等class的使用。
    Reactor框架
    ACE Reactor框架简化事件驱动程序的开发,而事件驱动是很多网络化应用的基本特征,这些应用常见的事件源包括I/O事件、Posix信号或 Windows句柄激发以及定时器到期等。
    本单元介绍ACE_Event_Handler、Timer、ACE_Reactor等类的使用,并使用该框架构建一个简易的多人聊天室应用。
    Task框架
    ACE Task框架提供了强大而可扩展的面向对象并发能力,如在基于对象的上下文(context)中派生线程,以及在执行不同线程中的对象之间传递消息和对消息进行排队。
    Acceptor-Connector框架
    ACE Acceptor-Connector框架实现了Acceptor-Connector模式,这种模式通过解除:1,网络化应用中相互协作的对等服务的连接和初始化所需的活动、2,以及它们一旦连接和初始化后所执行的处理的耦合,增强了软件复用和可扩展性。
    Proactor框架
    Proactor框架引入异步I/O机制,既保留了Reactor框架的事件多路分离,避免多线程的开销,同时还缓和了反应式的同步I/O的瓶颈效应。

Module07 - 数据库开发

       数据库作为服务器端应用数据持久化的最重要的部件,在服务器端应用开发中占有非常重要的地位。本模块主要针对Oracle 10g和MySQL 5.1两种关系型数据库管理系统。本模块包含以下内容:

    SQL语言
    详细介绍DML、DDL语句的语法和使用。
    Oracle PL/SQL
    全面介绍Oracle PL/SQL语法,以及使用PL/SQL编写存储过程、函数、触发器。
    MySQL存储过程
    编写MySQL存储过程、函数、触发器。
    C++ OTL
    OTL:Oracle、ODBC and DB2-CLI Template Library。通过OTL,可以方便、高效的与各类主流的关系型数据库如DB2、Oracle、Infomix、Sybase、MySQL等通信。

Module08 - 项目实战

       项目实战可选以下项目之一:

    项目1:X-Messenger Servers
    IM(即时通信)服务器群,类似于MSN、QQ等IM的服务器。可以基于Boost.asio或ACE实现。
    项目2:X-Messenger Client
    IM(即时通信)客户端软件,类似于MSN、QQ等IM的工具。实现Contacts管理、P2P文件传输、P2P一对一文本聊天、群聊等现代IM客户端功能,可以基于Boost.asio或ACE实现。
    项目3:X-Crawler
    一个网络爬虫,即搜索引擎的前端,负责收集网络上的数据(网页内容、解析URL)供搜索引擎使用。
    其他项目,可由学员自行定义。

课程资源

       可获取的课程资源见:教学资源。
http://www.xuanyuan-soft.cn

昆山:0512-5525 3348,189 1267 1348
Q   Q:5705 08473
昆山苇城南路1666号清华科技园创新大厦
北京:133 9087 8792
Q   Q:251 732 6542
北京海淀区西二旗地铁站出口辉煌国际大厦六号楼322室

论坛徽章:
0
发表于 2012-10-09 11:12 |显示全部楼层
Boost培训(项目班)
       昆山轩辕高端IT培训,C++ Boost现场项目班课程,通过对Boost几个实用组件的学习,掌握高吞吐量、低延迟的服务器端应用开发的有效知识,且通过最终项目的历练,学员将对高性能服务器端应用开发有一个清晰的认识,并能熟练使用Boost相关的类库来开发服务器端应用。
         该课程的项目实战部分时间,主要讲解服务器端应用的架构、设计,以及项目实现技术的运用。
上课方式
       现场班:全日制脱产学习,历时1个月,每月开班。
         远程班:远程视频学习,学习时间自定,随时开课。
课程大纲
       C++ Boost强化班课程由以下模块组成:
1 - C++ Boost
       Boost是由C++标准委员会成员发起、众多C++业界高人参与设计并实现的一个涉及面广、质量高且业已广泛使用的C++标准后备库,其中 TR1已经被纳入C++0x标准库。不论从风格和内容组织上讲,都可以认为Boost项目是C++标准库的延伸。截止到boost 1.43版本,boost项目拥有大约100个用途广泛的实用库。这部分课程将介绍服务器端开发所需要的几个组件:
容器与数据结构
介绍boost.any, boost.tuple, boost.array, boost.unordered(基于hash table,即hash_map和hash_set)等组件。
字符串算法和文字处理
介绍boost.lexical_cast, boost.format, boost.string_algo等组件。
正则表达式
正则表达式语法(perl正则表达式语法)的讲解,boost.regex库的使用。
智能指针
详细介绍shared_ptr、scoped_ptr、weak_ptr等智能指针的使用。
函数对象相关
详细介绍boost.bind, boost.mem_fn, boost.function, boost.ref, boost.lambda等组件。
Boost.Signals2 - 实现回调机制
Boost Signal2:线程安全的Signal-Slot机制 (Publishers → Signals/Subscribers → Slots),即Observer模式的实现;
序列化
通过实例熟悉boost.serialization库的用法。
日期与时间
boost.date_time库的详细介绍。
多线程
作为服务器端开发必不可少的内容之一:多线程支持,boost提供了一个跨平台的线程库:boost.thread。
本单元的课程详细介绍boost.thread。
网络编程
boost.asio库,通过对各类操作系统原生的socket API以及事件多路分离、异步I/O API的封装,构成了一个性能优秀、便于编程的网络编程框架,使复杂的网络编程任务变得简单、安全、并且高效。
本单元的课程通过一系列的示例来展示:通过asio来构建TCP同步/异步服务器和客户端、UDP同步/异步服务器和客户端应用,从而熟悉asio的接口和编程套路。
2 - 项目实战
       课程结束后,学员需基于C++、Boost实现以下项目:
项目1:X-Messenger Servers
IM(即时通信)服务器群,类似于MSN、QQ等IM的服务器。可以基于Boost.asio或ACE实现。
课程资源
       可获取的课程资源见:教学资源。
http://www.xuanyuan-soft.cn
QQ:570508473
电话:18912671348
昆山苇城南路1666号清华科技园创新大厦230室

论坛徽章:
0
发表于 2012-10-18 15:39 |显示全部楼层
Linux C++ ACE现场全科班
       Linux C++ ACE 现场全科班课程,专注Linux/UNIX服务器端软件开发(后台开发),培养企业所需的专业Linux/UNIX C++软件工程师。课程涉及UNIX/Linux服务器端软件开发的各个方面:Linux/UNIX、C++、ACE、Oracle /MySQL、企业级的实战项目等。

上课方式

       全日制脱产学习,历时4个月。学费¥10,000元。

课程大纲

       Linux C++全科班课程由以下模块组成:

1 - Linux系统基础

       由于本系列课程基于Linux(或UNIX),熟悉Linux操作系统是必要的前提。 该模块的课程包含以下方面的内容:

常用Unix/Linux命令
熟悉文件管理、文本处理、进程管理、网络、系统管理等各个方面大约100个常用的命令。
深入了解bash
了解Linux默认shell: bash 的语法、命令执行、I/O重定向、任务控制等。
正则表达式基础
由于UNIX/Linux中很多强大的文本处理命令如:grep、awk、sed,还有vi编辑器等工具配合正则表达式将产生强大的威力,所以熟悉正则表达式语法是十分必要的。
find、grep、sed、awk
四个强大的UNIX工具,特别是sed、awk在文本处理方面的能力非常强大,在Linux下工作应该掌握这几个命令。
2 - Linux开发环境

       不同系统平台下的开发工具、开发环境各有不同。该模块课程关注的是Linux C++/C开发所必需的一系列工具:

vi(vim)文本编辑器
一个UNIX世界标准的文本编辑器,简约而强大,不论作为开发人员还是系统管理员,熟练使用vi是一项基本的、且不可或缺的技能。
gcc/g++ C/C++编译器
通过具体的示例讲解使用gcc/g++编译单个、多个文件、共享库、静态库等。
gdb 调试器
通过具体的示例来熟悉通过gdb来调试C/C++应用程序、修正应用程序运行期的错误。
make和makefile
学习编写makefile,使用make来构建一个完整的项目。
Git / CVS / Subversion - 版本控制
运用Git / CVS / Subverstion等工具来进行代码的版本控制。
Eclipse CDT
一个非常强大的C/C++ IDE,强大的文本编辑器、与GCC工具链的无缝结合、方便的gdb前端、集成CVS/Subversion等版本控制等,提供众多的便利,大大减轻开发者的负担。
3 - C++编程语言

       深入讲解C++编程语言的各个方面,即完整的C++语法讲解:

语言基础
详细介绍变量、表达式、语句、指针、数组、流程控制、函数、文件组织等。
抽象机制 - 面向对象编程
深入讲解C++的抽象机制,封装(类)、继承、多态;操作符重载、函数对象、异常处理等。
模板 - 泛型编程
详细介绍C++的模板机制,类模板、函数模板、模板特化等方面的内容。
4 - C++标准库

       完整地讲解STL各大组件:容器、算法、函数对象、容器适配器、迭代器、迭代器适配器等;另外还包括string、I/O stream;为了更好地了解STL容器的特性、排序算法,额外安排:数据结构简介和常用排序算法简介2个部分的内容。

常用数据结构简介
介绍动态数组、linked-list、binary search tree、rb-tree、hash table、stack、queue、heap等常用的数据结构。
STL容器详细介绍
vector、list、deque、stack、queue、priority_queue、map、set等容器的特性和用法。
常见排序算法介绍
简要介绍各种常见排序算法的原理,及其实现。
STL算法和预定义函数对象
标准库提供了多达60多个算法函数,涉及排序、搜索、排列组合等多个方面,其中多数算法会使用如greater、less、binder2nd等函数对象,该单元的课程详细介绍了上述算法的使用和相关函数对象的具体作用。
迭代器
STL容器和算法高度解耦,而算法之所以能方便的作用于STL容器,维系二者的就是迭代器。
在这个单元的课程中讲介绍C++迭代器的类别、各类迭代器适配器的用法。
string - 字符串
相对于C风格的字符串处理,C++提供了更安全和方便的字符串类型 string,给class提供类众多的方法确保针对字符串处理的安全、便捷性。该单元的课程讲完整地介绍string的使用。
I/O stream
C++标准库提供的一个强大的I/O流框架。本单元详细介绍标准输入/输出、文件输入/输出、字符串输入/输出流的运用,利用操控符来控制输入/输出的格式。
5 - Linux系统编程

         学习Linux常用的系统调用,并分别用C和C++实现一个简易、可用的 I/O Demultiplexing and Event Dispathing 框架。

文件I/O
read()、write()等系统调用函数。
文件和目录
文件与目录相关的一系列操作。
进程管理
进程创建和管理操作。
进程间通信 (IPC)
详细介绍传统System V和Posix风格的进程间通信机制,如Pipe、Fifo、Message Queue、Shared Memory、Semaphore,Memory Mapped File等等。
Linux 信号API
详细介绍signal相关的系统调用。
Linux多线程编程
pthread编程。
Linux网络编程
详细介绍Linux下的socket编程。
高级文件I/O和I/O多路复用
Linux系统下的高级I/O机制,以及I/O多路复用机制,如select和Linux epoll。
6 - C++ ACE

       ACE是一个被广泛使用、设计优雅、高性能的C++通信框架(不仅仅是通信框架),其设计及实现被众多开源框架所借鉴。是构建稳定、高性能、高吞吐量、跨平台的服务器端程序的优秀框架。本模块的课程包含以下几个方面:

ACE基础网络I/O相关对象
详细介绍ACE_SOCK、ACE_SOCK_Acceptor、ACE_SOCK_Connector、ACE_INET_Addr等class的使用。
Reactor框架
ACE Reactor框架简化事件驱动程序的开发,而事件驱动是很多网络化应用的基本特征,这些应用常见的事件源包括I/O事件、Posix信号或 Windows句柄激发以及定时器到期等。
本单元介绍ACE_Event_Handler、Timer、ACE_Reactor等类的使用,并使用该框架构建一个简易的多人聊天室应用。
Task框架
ACE Task框架提供了强大而可扩展的面向对象并发能力,如在基于对象的上下文(context)中派生线程,以及在执行不同线程中的对象之间传递消息和对消息进行排队。
Acceptor-Connector框架
ACE Acceptor-Connector框架实现了Acceptor-Connector模式,这种模式通过解除:1,网络化应用中相互协作的对等服务的连接和初始化所需的活动、2,以及它们一旦连接和初始化后所执行的处理的耦合,增强了软件复用和可扩展性。
Proactor框架
Proactor框架引入异步I/O机制,既保留了Reactor框架的事件多路分离,避免多线程的开销,同时还缓和了反应式的同步I/O的瓶颈效应。
7 - 数据库开发

       数据库作为服务器端应用数据持久化的最重要的部件,在服务器端应用开发中占有非常重要的地位。本模块主要针对Oracle 10g和MySQL 5.1两种关系型数据库管理系统。本模块包含以下内容:

SQL语言
详细介绍DML、DDL语句的语法和使用。
Oracle PL/SQL
全面介绍Oracle PL/SQL语法,以及使用PL/SQL编写存储过程、函数、触发器。
MySQL存储过程
编写MySQL存储过程、函数、触发器。
C++ OTL
OTL:Oracle、ODBC and DB2-CLI Template Library。通过OTL,可以方便、高效的与各类主流的关系型数据库如DB2、Oracle、Infomix、Sybase、MySQL等通信。
8 - 项目实战

       课程结束后,学员需基于C++、ACE实现以下2个项目:

项目1:X-Messenger Servers
IM(即时通信)服务器群,类似于MSN、QQ等IM的服务器。可以基于ACE实现。
项目2:X-Messenger Client
IM(即时通信)客户端软件,类似于MSN、QQ等IM的工具。实现Contacts管理、P2P文件传输、P2P一对一文本聊天、群聊等现代IM客户端功能,可以基于ACE实现。
课程资源

       可用课程资源见:教学资源。
http://www.xuanyuan-soft.cn
QQ:570508473
电话:18912671348
昆山苇城南路1666号清华科技园创新大厦230室

论坛徽章:
0
发表于 2013-03-19 08:13 |显示全部楼层

高性能网络编程

本帖最后由 athxy 于 2013-09-08 17:47 编辑


Boost高性能网络编程

一、课程目标

本次课程围绕高性能网络编程这一主题,从众多的Boost类库中挑选出Boost.Asio、Boost.Thread以及其它配套的实用库,作为主要学习的内容,通过本次课程的学习,学员将具备以下能力:

    掌握智能指针、高阶函数对象、对象序列化/反序列化等类库的使用;
    理解现代操作系统线程模型、并发以及同步机制;
    熟练使用Boost.Thread线程管理和同步机制接口开发并发应用;
    深刻理解现代操作系统中事件多路分离和分派机制如select、epoll等、了解异步I/O以及完成事件的分派;
    熟练使用Boost.Asio构建稳定、高效和灵活的网络应用。

二、参训要求

参加本次课程的学员须具备以下能力:

    熟练掌握C++语法,理解C++面向对象和泛型(模板)机制;
    了解TCP/IP协议,有网络编程概念。

三、课程实践环境

    学员自备电脑
    实践平台 (以下二者之一):
        Win32 / Visual Studio 2008 (或更新)
        Linux 2.6.18+ x86-32 / GCC 4.1.2+ / Eclipse CDT 、vi
    Boost 1.47.0+

注:在上课之前,学员须搭建好上述开发实践环境,如有困难,可以在开课前通过E-Mail或MSN、QQ等方式与讲师沟通。
四、课程大纲

本次课程由以下几个部分构成:
1、Boost.Serialization - 序列化

    基本类型和自定义类型的序列化;
    数组、指针和智能指针的序列化;
    STL容器、std::string的序列化;
    识别类的版本;
    XML格式的archive;
    二进制格式的archive。

2、Boost.Smart_Ptr - 智能指针

    回顾std::auto_ptr<>;
    无Copyable 语义的scoped_ptr<>;
    shared_ptr<>;
    weak_ptr<>;
    enable_shared_from_this<>;

3、Boost.Bind and Boost.Function- 函数对象相关

    什么是函数对象?
    回顾std::bind1st()、std::bind2nd()、std::mem_fun()、std::ptr_fun()等适配器;
    Boost bind();
    Boost Function;
    Boost ref()。

4、Boost.Signals2 - 实现回调机制

    Boost Signal2:线程安全的Signal-Slot机制 (Publishers → Signals/Subscribers → Slots),即Observer模式的实现;
    简单的回调;
    多个Slot回调;
    管理Connections;
    一些示例。

5、一些实用类库

    Boost.Property_Tree;
    Boost.Format;

6、Boost.Thread - 多线程

    线程与进程之区别;
    用户线程与内核线程;
    不同操作系统中的线程模型;
    线程管理:线程创建、中断、分离/连接等;
    同步机制:Mutex、Lock、Condition_variable、TSS等。

7、Boost.Asio - 网络编程

Boost.Asio库,通过对各类操作系统原生的socket API以及事件多路分离、异步I/O API的封装,构成了一个性能优秀、可移植性高、便于编程的网络编程框架,使复杂的网络编程任务变得简单、安全、并且高效。

    Asio相关概念:同步I/O和异步I/O、Proactor模式、Asio和线程;
    Linux 下 I/O事件多路分离机制:select、epoll;
    TCP同步I/O Server/Client编程示例;
    UDP同步I/O Server/Client编程示例;
    TCP异步I/O Server/Client编程示例;
    UDP异步I/O Server/Client编程示例;
    Timer - 定时器;
    Asio核心接口介绍。

8、高性能网络编程讨论

    考究高性能网络编程中应该遵循的原则,讨论并发、同步、事件多路分离等机制的适用场合。
    网络应用的瓶颈在何处?
    事件多路分离 vs 一连接一线程 (Event demultiplexing vs One thread per connection);
    同步I/O vs 异步I/O (Synchronous I/O vs Asynchronous I/O);
    如何适当地使用多线程?
    什么时候需要多个 事件多路分离线程?

9、应用层协议定义与实现

    为什么要自定义应用层协议?
    定义应用层协议 (以XMMEP协议为例);
    用C++实现自定义的协议 (以XMMEP协议为例)。

注:XMMEP为X-Messenger Message Exchanging Protocol。
五、时间安排

课程时间:3天,以每天6小时计,具体安排如下:

    Day1
        1 - Boost.Serialization - 序列化
        2 - Boost.Smart_Ptr - 智能指针
        3 - Boost.Bind and Boost.Function- 函数对象相关
        4 - Boost.Signals2 - 实现回调机制
        5 - 一些实用类库
    Day2
        6 - Boost.Thread - 多线程
        7 - Boost.Asio - 网络编程1
    Day3
        7 - Boost.Asio - 网络编程2
        8 - 高性能网络编程讨论
        9 - 应用层协议定义与实现
        课程回顾与总结

六、课程资源

      可获取的课程资源见:教学资源。

专注 Linux下C/C++、ACE、Boost、高性能服务器端应用 开发技术培训

论坛徽章:
0
发表于 2013-09-08 17:49 |显示全部楼层
本帖最后由 athxy 于 2013-09-08 17:50 编辑

ACE高性能网络编程

一、课程目标

本次课程针对使用ACE工具包进行高性能网络应用开发,通过本次课程的学习,学员将具备以下能力:

    了解ACE的架构和组件;
    理解现代操作系统线程模型、并发以及同步机制;
    熟练使用ACE线程管理和同步机制接口开发并发应用;
    熟练使用ACE基本的IPC SAP接口,如SOCK_Stream、SOCK_Dgram等;
    深刻理解现代操作系统中事件多路分离和分派机制如select、epoll等、了解异步I/O以及完成事件的分派;
    熟练使用ACE Reactor组件、Acceptor-Connector组件、Proactor组件等构建稳定、高效和灵活的网络应用。

二、参训要求

参加本次课程的学员须具备以下能力:

    熟练掌握C++语法,理解C++面向对象和泛型(模板)机制;
    了解TCP/IP协议,有网络编程概念。

三、课程实践环境

    学员自备电脑
    实践平台 (以下二者之一):
        Win32 / Visual Studio 2008 (或更新)
        Linux 2.6.18+ x86-32 / GCC 4.1.2+ / Eclipse CDT 、vi
    ACE 6.0.0+

四、课程大纲

本次课程由以下几个部分构成:
1、 ACE简介

    什么是ACE?
    ACE的使用范围;
    ACE工具包的架构层次;
    ACE的组件简介。

2、ACE基础的网络I/O对象

    详细介绍ACE_SOCK、ACE_SOCK_Acceptor、ACE_SOCK_Connector、ACE_INET_Addr等class的使用。
    ACE Socket基类:ACE_SOCK;
    TCP主动连接对象:ACE_SOCK_Connector;
    基于TCP、面向连接的Socket:ACE_SOCK_Stream;
    TCP被动连接对象:ACE_SOCK_Acceptor;
    基于UDP、无连接的Socket:ACE_SOCK_Dgram (Unicast)、ACE_SOCK_Dgram_Mcast (Multicast)、ACE_SOCK_Dgram_Bcast (Broadcast)。

3、ACE并发编程:线程与同步

    线程与进程之区别;
    用户线程与内核线程;
    不同操作系统中的线程模型;
    ACE线程管理:Thread_Manager;
    ACE线程同步:ACE_Guard、ACE_Thread_Mutex等;
    ACE Task框架:Message_Block、Message_Queue、ACE_Task。

4、ACE Reactor框架

ACE Reactor框架简化事件驱动程序的开发,而事件驱动是很多网络化应用的基本特征,这些应用常见的事件源包括I/O事件、Posix信号或 Windows句柄激发以及定时器到期等。

    关于ACE Reactor框架;
    关于事件多路分离和分派 (Event demultiplexing and dispatching );
    Linux下 I/O事件多路分离机制:select、epoll;
    事件处理器 ACE_Event_Handler:
    I/O事件(输入、输出)、信号、超时事件、异常事件的捕获和处理;
    ACE_Timer_Queue和ACE_Time_Value:
    定时器的应用;
    ACE_Reactor:ACE的反应器为ACE Reactor框架的核心,负责事件的检测、多路分离和事件处理器的分派;
    例程:基于ACE Reactor框架实现一个多人聊天室。

5、ACE Acceptor-Connector框架

ACE Acceptor-Connector框架实现了Acceptor-Connector模式,这种模式通过解除:1,网络化应用中相互协作的对等服务的连接和初始化所需的活动、2,以及它们一旦连接和初始化后所执行的处理的耦合,增强了软件复用和可扩展性。

    集成了Message_Queue的ACE_Event_handler:ACE_Svc_Handler;
    接受器:ACE_Acceptor;
    连接器:ACE_Connector;
    例程:基于Acceptor-Connector框架实现一个转发服务器。

6、ACE Proactor框架

Proactor框架引入异步I/O机制,既保留了Reactor框架的事件多路分离,避免多线程的开销,同时还缓和了反应式的同步I/O的瓶颈效应。

    关于Proactor模式和Proactor框架;
    关于异步I/O;
    异步I/O工厂类:
    ACE_Asynch_Read_Stream和ACE_Asynch_Write_stream;
    ACE_Handler;
    前摄式Acceptor-Connector;
    前摄器:ACE_Proactor;
    例程:基于Proactor框架重新实现多人聊天室。

7、ACE实用工具

    ACE日志实用工具:ACE_Log_Msg;
    读写配置文件:ACE_Configuration_Heap;
    Singleton模式 (单例模式) 的ACE实现:ACE_Singleton类模板。

8、高性能网络编程讨论

    考究高性能网络编程中应该遵循的原则,讨论并发、同步、事件多路分离等机制的适用场合。
    网络应用的瓶颈在何处?
    事件多路分离 vs 一连接一线程 (Event demultiplexing vs One thread per connection);
    同步I/O vs 异步I/O (Synchronous I/O vs Asynchronous I/O);
    如何适当地使用多线程?
    什么时候需要多个 事件多路分离线程?

9、应用层协议定义与实现

    为什么要自定义应用层协议?
    定义应用层协议 (以XMMEP协议为例);
    用C++实现自定义的协议 (以XMMEP协议为例)。
    注:XMMEP为X-Messenger Message Exchanging Protocol。

五、时间安排

课程时间:3天,以每天6小时计,具体安排如下:

    Day1
        1 - ACE简介
        2 - ACE基础的网络I/O对象
        3 - ACE并发编程
    Day2
        4 - ACE Reactor框架
        5 - ACE Acceptor-Connector框架
    Day3
        6 - ACE Proactor框架
        7 - ACE实用工具
        8 - 高性能网络编程讨论
        9 - 应用层协议定义与实现
        课程回顾与总结

六、课程资源

      可获取的课程资源见:教学资源。
专注 Linux下C/C++、ACE、Boost、高性能服务器端应用 开发技术培训
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP