Linux/UNIX、C++、Boost、ACE、Shell

Linux C++训练营

2014年3月20日 #

Linux C++高性能网络编程

     摘要: 轩辕高端C++培训:专注 Linux下C/C++、ACE、Boost、高性能服务器端应用 开发技术培训
http://xuanyuan-soft.cn/  阅读全文

posted @ 2014-03-20 16:09 athxy 阅读(845) | 评论 (0)编辑 收藏

2013年9月3日 #

Java02:使用Jdbc连接Oracle数据库

Java02:使用Jdbc连接Oracle数据库

一、编写代码

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JdbcTest02 {

    public static void main(String[] args) {
        Connection con = null;
        Statement st = null;
        ResultSet rs = null;
        try {
            String driver = "oracle.jdbc.driver.OracleDriver";
            String url = "jdbc:oracle:thin:@localhost:1521:xe";
            String user = "xuanyuan";
            String password = "xuanyuan";

            Class.forName(driver);
            con = DriverManager.getConnection(url, user, password);

            st = con.createStatement();
            rs = st.executeQuery("select sysdate from dual");

            while (rs.next())
                System.out.println(rs.getString(1));

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

            if (st != null) {
                try {
                    st.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

            if (con != null) {
                try {
                    con.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

二、编译代码

$ javac JdbcTest02.java

三、运行程序 JdbcTest02

$ java -cp /opt/javalib/orajdbc/ojdbc14.jar:. JdbcTest02
2009-10-31 14:34:50.0

说明:Oracle和MySQL的jdbc 驱动都在 /opt/javalib/目录下
轩辕高端LinuxC/C++ACEBoost高性能服务器端应用 开发技术培训

posted @ 2013-09-03 15:03 athxy 阅读(166) | 评论 (0)编辑 收藏

2013年1月27日 #

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

Linux C++培训(现场及远程班)

中国唯一一家专注 LinuxC/C++ACEBoost高性能服务器端应用 开发技术培训的机构。

上课方式

现场班:全日制脱产学习、历时4个月,每月开班。

远程班:远程视频学习,学习时间自定,随时开课。

课程模块

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://xuanyuan-soft.cn

posted @ 2013-01-27 14:41 athxy 阅读(526) | 评论 (0)编辑 收藏

2012年11月6日 #

Linux高性能网络编程

Linux高性能网络编程

一、课程目标

昆山轩辕高端IT培训本次课程深入讲解Linux下的socket编程,并以此为基础,着重讨论如何提高网络服务端应用的性能,通过本次课程的学习,学员将收获以下方面的成果:

  • 熟练使用socket系列函数进行网络编程;
  • 深刻理解服务端应用的性能要求;
  • 利用Linux提供的各种机制,有效地解决服务端应用的性能瓶颈。

二、参训要求

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

  • 了解TCP/IP协议,有网络编程概念。
  • 本次课程使用 C语言 教学,所以学员需拥有较好的C语言基础;
  • 能熟练使用常用的Linux命令;
  • 能熟练使用gcc、gdb、熟练撰写makefile;
  • 最好熟练使用vi、emacs等文本编辑器其中的一种。

三、课程实践环境

  • 操作系统:GNU/Linux 2.6+(建议使用Redhat AS 5+或Ubuntu、Fedora)
  • 编译器:GCC v4.1+、GDB v7.0+
  • 可选IDE:Eclipse CDT

四、课程大纲

本次课程由以下几个部分构成:

1、POSIX Thread - 多线程

  • 线程管理
    • 线程创建:pthread_create()
    • 线程终止:pthread_exit()
    • 线程连接和分离:join and detach
  • 线程同步机制
    • 互斥体:mutex
    • 读写锁:read-write lock
    • 条件变量:condition variable
  • 线程属性控制
  • mutex属性控制

2、Socket 简介

  • Socket地址数据结构:struct sockaddr,struct sockaddr_in
  • 字节序以及字节序操作:ntohl(), ntohs(), htonl(), htons()
  • Internet地址操作:inet_aton(), inet_addr(), and inet_ntoa(), inet_pton(), inet_ntop()

3、TCP Socket

  • socket():创建socket
  • bind():绑定地址
  • listen():开始侦听
  • accept():接受来自客户端的连接
  • connect():连接到服务器
  • getsockname()和getpeername():获取本地和对端地址
  • I/O 操作:read(), write()
  • 更高效的I/O 操作:readv(), writev()
  • TCP Server编程步骤
  • TCP Server v1:迭代式Echo Server
  • TCP Server v2:多进程并发式Echo Server,使用fork()和exec*()
  • TCP Server v3:多线程并发式Echo Server,使用pthread
  • TCP Client编程步骤
  • TCP Client:Echo Client

4、UDP Socket

  • recvfrom()和sendto():收发UDP数据报
  • UDP Echo Server
  • UDP Echo Client
  • 组播(Multicast)和广播(Broadcast)

5、Socket Options和 IP Options

  • 常用的Socket Options
  • 常用的IP Options
  • Socket选项和IP选项对网络应用的影响

6、I/O多路复用:构建反应式(Reactive)网络应用

  • UNIX I/O多路复用机制概要
  • 为什么I/O 多路复用对于网络应用很重要
  • I/O 多路复用与多线程(反应式模型和并发模型)
  • select / poll
  • 在TCP Server和UDP Server中使用select和poll
  • Linux特有I/O 多路复用机制:Event poll (epoll)
  • 在TCP Server和UDP Server中使用epoll

7、异步I/O:构建前摄式(Proactive)网络应用

  • 相关概念:同步I/O和异步I/O、Proactor模式
  • 异步I/O 是如何提高I/O 性能的
  • 异步I/O系列操作
  • 使用异步I/O的机制构建TCP Server

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

六、课程资源

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

http://www.xuanyuan-soft.cn
Q          Q:570508473
电        话:0512-55253348
邮        箱:athzhang@gmail.com
昆山轩辕软件技术有限公司
昆山苇城南路1666号清华科技园创新大厦230室

posted @ 2012-11-06 16:36 athxy 阅读(361) | 评论 (0)编辑 收藏

2012年8月29日 #

ACE高性能网络编程

     摘要: 昆山轩辕高端IT培训---ACE高性能网络编程一、课程目标本次课程针对使用ACE工具包进行高性能网络应用开发,通过本次课程的学习,学员将具备以下能力:了解ACE的架构和组件;理解现代操作系统线程模型、并发以及同步机制;熟练使用ACE线程管理和同步机制接口开发并发应用;熟练使用ACE基本的IPC SAP接口,如SOCK_Stream、SOCK_Dgram等;深刻理解现代操作系统中事件多路分离和分派机...  阅读全文

posted @ 2012-08-29 15:00 athxy 阅读(2398) | 评论 (1)编辑 收藏

2012年8月24日 #

轩辕Linux C++开放实验室

简介

为方便广大Linux软件开发爱好者,轩辕高端IT培训中心于2009年10月设立了Linux开放实验室,轩辕Linux开放实验室提供了完整的 Linux软件开发环境,包括:Ubuntu Linux 10.04 Server、C/C++(GCC、GDB)、make、Java、Python、Perl、C++ Boost、C++ ACE、C++ OTL、Oracle、DB2、MySQL、Tomcat...,囊括了网络、多线程、数据库等服务器端软件开发的各个方面。

Linux开放实验室典型用途

  • 熟悉Linux操作系统,如系统命令、Shell编程、vi等编辑器;
  • C++语言的学习与软件开发,包括基于Boost和ACE的软件开发;
  • C++数据库开发,OTL;
  • Java语言的学习与软件开发;
  • Java数据库开发,jdbc;
  • Python、Perl等脚本语言的学习与软件开发;
  • 更多您能发掘到的用途...

开发环境

  • 操作系统:Ubuntu Linux 10.04 Server;
  • 文本编辑器:vim、emacs、nano
  • C/C++:GCC工具链(g++/gcc 4.4.3、gdb 7.1)、GNU make 3.8.1、GNU autotools 2.59等;
  • C++第三方库:Boost 1.43、ACE 5.6.3、OTL 4.0;
  • Java:Java se 6(Openjdk6);
  • Jdbc:Oracle ojdbc14、MySQL mysql-connector-java-5.0.8;
  • 数据库:Oracle 10g XE、DB2 Express-C 9.7、MySQL 5.1.41;
  • Python 2.6.5、Perl 5.10.1;
  • 版本控制:CVS 1.12.13
  • ...

实验室面向的人群

  • 所有能通过互联网登录到实验室服务器的朋友。
http://www.xuanyuan-soft.cn/zh/lab/registration

posted @ 2012-08-24 14:21 athxy 阅读(286) | 评论 (0)编辑 收藏

2012年1月27日 #

Boost高性能网络编程

一、课程目标

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

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

四、课程大纲

本次课程由以下几个部分构成:

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。

六、课程资源

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

posted @ 2012-01-27 09:28 athxy 阅读(562) | 评论 (1)编辑 收藏

2010年11月1日 #

C++ Boost

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实现以下项目:

  • 项目1X-Messenger Servers
    IM(即时通信)服务器群,类似于MSN、QQ等IM的服务器。可以基于Boost.asio或ACE实现。

课程资源

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

http://xuanyuan-soft.cn

posted @ 2010-11-01 12:04 athxy 阅读(464) | 评论 (0)编辑 收藏

2010年7月22日 #

C++ ACE项目班

C++ ACE 项目班

       昆山轩辕高端IT培训,C++ ACE现场项目班课程,通过对ACE几个主要的框架的学习,掌握高吞吐量、低延迟的服务器端应用开发的有效知识,且通过最终项目的历练,学员将对高性能服务器端应用开发有一个清晰的认识,并能熟练使用ACE相关的框架来开发服务器端应用。

       该课程的项目实战部分时间,主要讲解服务器端应用的架构、设计,以及项目实现技术的运用。

上课方式

       现场班:全日制脱产学习,历时1个月。学费¥4,000元。

       远程班:远程视频学习,学费3000元

课程大纲

       C++ ACE现场项目班的课程由以下部分组成:

1 - 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等类的使用,并使用该框架构建一个简易的多人聊天室应用。
  • Service Configuration框架
    Service Configuration框架允许应用在运行期重新配置其服务(包括静态服务和动态服务),而不必修改、重新编译或重新连接程序自身,或是关闭和重启应用等。
  • Task框架
    ACE Task框架提供了强大而可扩展的面向对象并发能力,如在基于对象的上下文(context)中派生线程,以及在执行不同线程中的对象之间传递消息和对消息进行排队。
  • Acceptor-Connector框架
    ACE Acceptor-Connector框架实现了Acceptor-Connector模式,这种模式通过解除:1,网络化应用中相互协作的对等服务的连接和初始化所需的活动、2,以及它们一旦连接和初始化后所执行的处理的耦合,增强了软件复用和可扩展性。
  • Proactor框架
    Proactor框架引入异步I/O机制,既保留了Reactor框架的事件多路分离,避免多线程的开销,同时还缓和了反应式的同步I/O的瓶颈效应。

2 - 项目实战

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

  • 项目1:X-Messenger Servers
    IM(即时通信)服务器群,类似于MSN、QQ等IM的服务器。基于ACE实现。

课程资源

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


http://www.xuanyuan-soft.cn
QQ:570508473

posted @ 2010-07-22 17:04 athxy 阅读(620) | 评论 (0)编辑 收藏

仅列出标题