linux C++学习之路

Module01 - Linux系统基础

     熟悉Linux操作系统是必要的前提。包含以下方面的内容:

·        常用Unix/Linux命令
熟悉文件管理、文本处理、进程管理、网络、系统管理等各个方面大约100个常用的命令。

·        深入了解bash
了解Linux默认shell: bash 的语法、命令执行、I/O重定向、任务控制等。

·        正则表达式基础
由于UNIX/Linux中很多强大的文本处理命令如:grepawksed,还有vi编辑器等工具配合正则表达式将产生强大的威力,所以熟悉正则表达式语法是十分必要的。

·        findgrepsedawk
四个强大的UNIX工具,特别是sedawk在文本处理方面的能力非常强大,在Linux下工作应该掌握这几个命令。

Module02 - Linux开发环境

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

·        vi(vim)文本编辑器
一个UNIX世界标准的文本编辑器,简约而强大,不论作为开发人员还是系统管理员,熟练使用vi是一项基本的、且不可或缺的技能。

·        gcc/g++ C/C++编译器
通过具体的示例讲解使用gcc/g++编译单个、多个文件、共享库、静态库等。

·        gdb调试器
通过具体的示例来熟悉通过gdb来调试C/C++应用程序、修正应用程序运行期的错误。

·        makemakefile
学习编写makefile,使用make来构建一个完整的项目。

·        CVS -版本控制
运用CVS来进行代码的版本控制。

·        Eclipse CDT
一个非常强大的C/C++ IDE,强大的文本编辑器、与GCC工具链的无缝结合、方便的gdb前端、集成CVS/Subversion等版本控制等,提供众多的便利,大大减轻开发者的负担。

Module03 - C++编程语言

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

·        语言基础
详细介绍变量、表达式、语句、指针、数组、流程控制、函数、文件组织等。

·        抽象机制 -面向对象编程
深入讲解C++的抽象机制,封装(类)、继承、多态;操作符重载、函数对象、异常处理等。

·        模板 -泛型编程
详细介绍C++的模板机制,类模板、函数模板、模板特化等方面的内容。

Module04 - C++标准库

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

·        常用数据结构简介
介绍动态数组、linked-listbinary search treerb-treehash tablestackqueueheap等常用的数据结构。

·        STL容器详细介绍
vector
listdequestackqueuepriority_queuemapset等容器的特性和用法。

·        常见排序算法介绍
简要介绍各种常见排序算法的原理,及其实现。

·        STL算法和预定义函数对象
标准库提供了多达60多个算法函数,涉及排序、搜索、排列组合等多个方面,其中多数算法会使用如greaterlessbinder2nd等函数对象,该单元的课程详细介绍了上述算法的使用和相关函数对象的具体作用。

·        迭代器
STL
容器和算法高度解耦,而算法之所以能方便的作用于STL容器,维系二者的就是迭代器。
在这个单元的课程中讲介绍C++迭代器的类别、各类迭代器适配器的用法。

·        string -字符串
相对于C风格的字符串处理,C++提供了更安全和方便的字符串类型 string,给class提供类众多的方法确保针对字符串处理的安全、便捷性。该单元的课程讲完整地介绍string的使用。

·        I/O stream
C++
标准库提供的一个强大的I/O流框架。本单元详细介绍标准输入/输出、文件输入/输出、字符串输入/输出流的运用,利用操控符来控制输入/输出的格式。

·         数值
介绍C++数值运算的算法,如valarray4组数值算法函数、随机数等方面的内容。

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_maphash_set)等组件。

·        字符串算法和文字处理
介绍boost.lexical_cast, boost.format, boost.string_algo等组件。

·        正则表达式
正则表达式语法(perl正则表达式语法)的讲解,boost.regex库的使用。

·        智能指针
详细介绍shared_ptrscoped_ptrweak_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的封装,构成了一个性能优秀、便于编程的网络编程框架,使复杂的网络编程任务变得简单、安全、并且高效。

·        Module06 - C++ ACE

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

·        ACE基础网络I/O相关对象
详细介绍ACE_SOCKACE_SOCK_AcceptorACE_SOCK_ConnectorACE_INET_Addrclass的使用。

·        Reactor框架
ACE Reactor
框架简化事件驱动程序的开发,而事件驱动是很多网络化应用的基本特征,这些应用常见的事件源包括I/O事件、Posix信号或 Windows句柄激发以及定时器到期等。
本单元介绍ACE_Event_HandlerTimerACE_Reactor等类的使用,并使用该框架构建一个简易的多人聊天室应用。

·        Task框架
ACE Task
框架提供了强大而可扩展的面向对象并发能力,如在基于对象的上下文(context)中派生线程,以及在执行不同线程中的对象之间传递消息和对消息进行排队。

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

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

Module07 -数据库开发

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

·        SQL语言
详细介绍DMLDDL语句的语法和使用。

·        Oracle PL/SQL
全面介绍Oracle PL/SQL语法,以及使用PL/SQL编写存储过程、函数、触发器。

·        MySQL存储过程
编写MySQL存储过程、函数、触发器。

·         C++ OTL

OTLOracleODBC and DB2-CLI Template Library。通过OTL,可以方便、高效的与各类主流的关系型数据库如DB2OracleInfomixSybaseMySQL等通信。



六款常用的linux C/C++ IDE

一、Anjuta

Anjuta是一个多语言的IDE,它最大的特色是灵活,同时打开多个文件,内嵌代码级的调试器(调用gdb),应用程序向导(Application wizards)可以方便的帮助你创建GNOME程序而不需要你自己写一些与你兴趣无关的代码。

配置C/C++环境请看这里

项目主页:http://anjuta.sourceforge.net/

#安装:

sudo apt-get install anjuta

二、netbeans

NetBeans IDE 是一个为软件开发者提供的自由、开源的集成开发环境。您可以从中获得您所需要的所有工具,用 Java、C/C++ 甚至是 Ruby 来创建专业的桌面应用程序、企业应用程序、web 和移动应用程序。此 IDE 可以在多种平台上运行,包括 Windows、Linux、Mac OS X 以及 Solaris;它易于安装且非常方便使用。

项目主页:http://www.netbeans.org/

#安装:

sudo apt-get install netbeans

三、Code::Blocks

Code::Blocks是一个开源、免费、跨平台的c++ IDE。官方网站上称其能满足最苛刻的用户的需求。虽有点夸张,但既然敢这样说,也说明它的功能肯定不差。可扩展插件,有插件向导功能,让你很方便的创建自己的插件。Code::Blocks是用c++编写的(用wxWidgets库)

项目主页:http://www.codeblocks.org

#安装:

sudo apt-get install codeblocks

四、eclipse

Eclipse平台是IBM向开发源码社区捐赠的开发框架,它之所以出名并不是因为IBM宣称投入开发的资金总数 —4千万美元,而是因为如此巨大的投入所带来的成果:一个成熟的、精心设计的以及可扩展的体系结构。

项目主页:http://www.eclipse.org

# 安装:

sudo apt-get install eclipse-cdt eclipse

五、geany

Geany 是一个使用 GTK2 工具包开发的快速和轻巧的集成开发环境(IDE),包括以下基本功能:语法高亮显示,代码折叠,代码自动补完,自动补完经常使用的结构(如:if、 for、while 等),自动补完 XML 和 HTML 标记(tag),调用提示,支持 C、Java、PHP、HTML、Python、Perl、Pascal 等语言,符号列表等等。

项目主页:http://geany.uvena.de/

#安装:

sudo apt-get install geany

六、KDevelop

KDevelop-Project诞生于1998年,其目的是为KDE提供一个易用的集成开发环境(Integrated Development Environment)。此后,KDevelop IDE采用GPL进行发布,它支持很多 程序设计语言。

项目主页:http://www.kdevelop.org/

#安装:

sudo apt-get install kdevelop

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值