----------------------------------------------------------------------------------------------------
我很高兴,你能抽点时间看看我的文章!
本人大二,水平有限。故所写有误请指导!
----------------------------------------------------------------------------------------------------
很多同学常常对编程的职业发展感到迷茫,起因所在:诱惑太多,易动摇自己的计划!
今天就分享一下自己在迷茫走出来的一些总结.
列一下提纲:
1.知道自己想学什么,并知道要学那些内容,如何阶梯的学习。
2.遇到阶梯发展瓶颈怎么办?
-----------------------------------------------------------------------------------------------------
以下资料来源一些培训机构;但是他们都忽视一些很基础,很原理,很重要的课程:比如操作系统,数据结构,计算机系统结构....
--------------------------------------------------------------------------------------------------------
1.知道自己想学什么,并知道要学那些内容。
几种IT职业发展道路及详细培训计划
《1》 C++ 工程师
1. LINUX C /C++ (嵌入式方向)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
课程单元
课程内容
C/C++编程语言基础
C/C++过程化语言基础
C++开发环境和IDE介绍;学习C++的技巧和方法;C++基础知识(基本数据类型、复合数据类型、循环与关系表达式、分支语句与逻辑操作符、函数、内联函数、函数重载、函数模板、内存模型与名称空间);基本控制结构程序设计;类与对象;源文件和程序(分别编译、连接、使用头文件、程序); 数组、指针与字符串;引用;结构。
C++面向对象程序设计
对象与类;类 (类的声明,定义,对象的初始化与清除,对象赋值,对象地成员);类与动态内存分配;类的继承和派生,虚函数和多态性,运算符重载 ;输入/输出流类库;异常处理(错误处理、异常的结组、捕捉异常、资源管理、异常的描述、未捕捉的异常、异常和效率、标准异常),名字空间; C++中的代码重用;友元、异常和TTTI。
算法、模版和STL库
模板(String模板、泛型算法、函数模板、模板参数、专门化、派生和模板、源代码组织);STL库组织和容器(标准库的设计、容器设计、向量);标准容器(标准容器、序列、关联容器、拟容器);迭代器和分配器(迭代器和序列、带检查迭代器、分配器);串(字符、基础串类、C标准库)。
OOA/OOD及软件工程实践
统一建模语言(UML)与OOA&D分析和设计技术;RUP开发流程介绍;用例建模;类及其关系图;用例实现,对象活动图;CMM基本概述、模型、实施
Unix/Linux下C++编程
Unix/Linux基础
UNIX/Linux操作系统介绍;Linux/Unix操作系统家族介绍,文件系统结构、程序运行与交互过程、Linux的安装、常用服务配置。
程序开发系统的预备知识。
程序设计开发
开发工具:C++ 编译器:GCC、G++、Make、gdb;开发与调试;QT窗口系统的程序设计;Linux常用命令、vi编辑:Linux下命令执行过程、管道、命令帮助的使用、常用命令的熟悉(ls、chmod、cp、grep、find、locate、tar、gzip等等);功能强大通用性强的编辑器vi的使用 (编辑模式、命令模式、查找、替换、块操作、复制、删除、撤销、关标快速定位等)、常用Linux技巧。
Linux下程序的编译与调试:gcc编译器的使用、常用编译选项,makefile文件的配置,gdb调试、常用gdb调试命令的使用,assert、系统日志、自定义日志等其他调试手段的使用。
文件系统与输入输出:Linux文件系统的理解、无缓冲文件操作、ANSI文件操作、文件操作函数系统归纳总结、配置文件读写等。
进程与进程间通信
什么是进程,进程的结构,进程表,查看进程,系统进程,进程的调度,启动新的进程,等待进程,僵进程,输入和输出重定向,线程,信号,发送信号,信号队列、进程管道,父进程和子进程,客户接口函数,服务器接口。
Linux下多线程程序设计:Linux多线程的实现机制、多线程函数的使用、线程间的同步与互斥。
设备驱动模块
什么是字符设备,块设备,驱动加载内核机制. 开发驱动程序过程以及限制,掌握RS232 字符设备 usb设备驱动开发。
ARM9 2440 架构
嵌入式处理器概述、ARM体系结构、ARM指令分类及 其寻址方式
ARM程序设计
ARM C/C++ 混合编程、ADS的使用、ARM开发调试环 境的建立(JTAG 调试)、汇编语言设计、混合编程设计 、U-BOOT移植(改造)、内核移植、根文件系统制作、Linux网络编程、GUI-QT编程
实验:从裸机到LINUX启动全过程;学会写 OS
NAND flash 读写编程; BootLoader编程(自己简化);根文件系统制作;LINUX 内核设备增减编译;U_boot 调用 LINUX 。
项目: WIFI 网络电话(QT/JAVA)
通过WIFI通信协议接入INTERNET 和手机(具有WIFI功能)通话,实现零话费。并拨入和拨出电话进行管理。
项目:远程监控系统
嵌入式上位机通过USB(RS232) 摄像头把图像传输到INTERNET网络中,由下位机(PC)通过INTERNET和ARM机相连通信,把图像显 示出来,进行实时监控,此系统可用于普通家庭,解决人们在外的后顾之忧。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
2. Linux C++工程师(服务器方向)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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等类的使用,并使用该框架构建一个简易的多人聊天室应用。
Service Configuration框架
Service Configuration框架允许应用在运行期重新配置其服务(包括静态服务和动态服务),而不必修改、重新编译或重新连接程序自身,或是关闭和重启应用等。
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 - 软件建模基础及设计模式 简要介绍UML面向对象建模的方法,理解UML的表示。简要介绍GOF设计模式的核心内容,以及各种设计模式的C++实现。本模块包含以下内容:
类建模
状态建模
交互建模(用例、顺序、活动建模)
GOF设计模式简介 Module09 - 项目实战
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
《2》VC++工程师:
课程单元
课程内容
C/C++编程语言基础
C/C++过程化语言基础
C 基础以及深层次分析(函数和指针),C++开发环境和IDE介绍;学习C++的技巧和方法;C++基础知识(基本数据类型、复合数据类型、循环与关系表达式、分支语句与逻辑操作符、函数、内联函数、函数重载、函数模板、内存模型与名称空间);基本控制结构程序设计;类与对象;源文件和程序(分别编译、连接、使用头文件、程序); 数组、指针与字符串;引用;结构。
C++面向对象程序设计
对象与类;类 (类的声明,定义,对象的初始化与清除,对象赋值,对象地成员);类与动态内存分配;类的继承和派生,虚函数和多态性,运算符重载 ;输入/输出流类库;异常处理(错误处理、异常的结组、捕捉异常、资源管理、异常的描述、未捕捉的异常、异常和效率、标准异常),名字空间; C++中的代码重用;友元、异常和TTTI。
算法、模版和STL库
模板(String模板、泛型算法、函数模板、模板参数、专门化、派生和模板、源代码组织);STL库组织和容器(标准库的设计、容器设计、向量);标准容器(标准容器、序列、关联容器、拟容器);迭代器和分配器(迭代器和序列、带检查迭代器、分配器);串(字符、基础串类、C标准库)。
OOA/OOD及软件工程实践
统一建模语言(UML)与OOA&D分析和设计技术;RUP开发流程介绍;用例建模;类及其关系图;用例实现,对象活动图;CMM基本概述、模型、实施
Windows编程技术
Win32程序开发基础知识
Windows编程基本概念,Win32编程环境,Win32程序的执行单元,Win32 API函数介绍内存管理,Windows内核对象/句柄,Windows窗口及消息循环处理机制,键盘,鼠标接口,子窗口控件,GDI图形知识,进程和线程,DLL动态连接库,Window同步与互斥对象, ATL编程。
Socket网络通讯
TCP/IP 网络通讯协议详解,Socket编程技术(阻塞、非阻塞、多线程、多进程模型),理解Socket套接字接口,Windows Socket API程序设计应用程序间;Web与Internet应用协议编程,网络安全与实践;网络通讯实战。客户端和服务器端网络程序设计;聊天室应用。 HTTP、FTP应用协议讲解。
MFC程序设计
基础知识:VC++集成开发环境的安装、工作区管理、项目配置、程序的调试(变量查看、内存查看、函数调用堆栈、汇编代码、寄存器、单步调试、断点设置。)
Win32程序设计:Windows程序的处理过程,消息循环与处理机制,Windows对象与句柄的概念,窗体类的注册,窗体对象的创建,标准控件的创建与使用。
MFC框架层次结构:MFC框架程序剖析,MFC类层次结构、MFC程序初始化过程、RTTI、动态创建、永久保存机制、消息映射、命令传递。普通窗体的创建、GDI绘图、文档视图程序、对话框程序、标准控件的创建与使用、菜单、鼠标、键盘、工具条、状态条等。
静态连接库与动态链接库:库的原理、库的创建与装载过程、标准C运行时库、C++运行时库、Win32静态链接库、MFC静态连接库、MFC正则动态库、MFC扩展动态库。
Windows多线程技术:Windows下多线程概念、处理机制、同步与互斥(原子函数、临界段、互斥量、事件、信号量)、MFC多线程技术。
WinSock2网络通讯:Windows平台下的Socket编程技术,同步通讯模型、事件模型、消息模型。
C++数据库编程
数据库知识
关系型数据库原理、SQL数据查询语言、索引、存储过程、触发器、游标、事务、函数等,简单数据库优化技术,数据库中对象的建立与使用。
MS SQL SERVER/ORACLE数据库的使用。
MFC的ODBC数据库访问技术。
MFC的ADO数据库访问技术。
3.java工程师
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
课程
内容
目标
课时
初级一
JAVA特点;运行原理,JAVA源代码构成;类的构成与写法
能用JAVA书写简单的类;
能用面向对象的方法来思考和解决简单问题
5
初级二
循环和各种逻辑语句;类的深入;继承
能编写一些较为复杂的逻辑方法;
能用面向对象的思考方法解决较为复杂的模型
5
初级三
深入学习继承,多态,抽象方法,接口,内部类,匿名内部类
了解继承中的各种语法在实际工作中的意义;
能熟练运用这些技术解决问题.
15
初级四
异常,多线程,APPLET编写(主要是通过APPLET来训练面向对象的思考方法)
了解异常给实际工作带来的好处;
灵活运用异常;
灵活运用多线程;
能编写一些APPLET小游戏
20
初级五
深入多线程
了解多线程运行原理;
熟练处理线程同步;
能编写较为复杂的APPLET游戏
10
初级六
网络编程SOCKET,TCP/IP,UDP,HTTP:
Linux操作基础
编写各种网络应用
25
初级七
包的使用,案例中学习数据结构和常用算法:
Linux各种JAVA开发环境配置:
Linux服务器配置
用包的概念让大代码更有条理;
熟练用常用数据结构和算法解决问题
10
中级一
HTML,JAVASCRIPT快速入门
J2EE简介和配置,SERVLET
使用SERVLET开发动态页面,能制作普通网站,聊天室和BBS
20
中级二
JSP
了解JSP的工作原理;
能结合使用SERVLET和JSP开发网站和简单企业级应用
20
中级三
数据库(SQL SERVER)--SQL查询语句,约束,存储过程;JDBC
能熟练使用和操作SQLSERVER;
能合理的设计数据库;
能灵活运用SQL语句:
使用JDBC开发企业级应用
30
中级四
数据库(ORACAL)--SQL查询语句,约束,存储过程;JDBC
能熟练使用和操作ORACAL;
能合理的设计数据库;
能灵活运用SQL语句;
使用JDBC开发企业级应用
10
中级五
JSP标签库;JAVA BEAN;三层架构MVC模式;
UML建模语言和工具
能自定义JSP标签库;
熟练使用JAVA BEAN来优化JSP;
养成MVC构架项目的习惯,培养松偶合构架的能力;
能熟练快速运用各种UML图表达项目构架和流程
30
中级六
远程访问技术(RMI)
熟悉RMI的应用领域和使用技术
10
中级七
Hibernate
理解HIBERNATE工作原理;
使用HIBERNATE进行数据库访问
15
中级八
XML,CSS,XHTML
书写良好规范的WEB页面;
书写易于维护的健壮页面;
能熟练使用XML
20
中级九
表现层框架:Struts框架
了解Struts能给大型项目带来的好处;
了解Struts的工作原理;
能熟练使用Struts框架来架设三层模型
25
中级十
控制反转 (IOC) 设计模式;
Spring;
了解并能设计控制反转 (IOC) 设计模式;
熟练使用Spring实现IOC;
使用Spring处理Struts动作
25
高级一
表现层框架:JSF
了解同为表现层框架的JSP和STRUTS的区别和各自适用的领域;
熟练使用JSF
20
高级二
WebService
熟练开发各种WebService通用WEB服务
10
高级三
Web2.0风格元素和技术元素
理解Web2.0思想;
熟练掌握Web2.0开发中常用的技术
10
高级四
JavaScript深入与Ajax技术元素
深入掌握JAVASCRIPT;
熟练运用AJAX常用技术;
25
高级五
Flash Action Script;
Flex
熟练运用FLEX技术制做高交互性,表现丰富的表示层
30
高级六
大型项目的构架和管理团队开发的技巧
通过大型项目训练架构技巧和管理能力
60
4..NET 工程师
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
课程
内容
目标
课时
初级一
C#特点;运行原理,C#源代码构成;类的构成与写法
能用C#书写简单的类;
能用面向对象的方法来思考和解决简单问题
5
初级二
循环和各种逻辑语句;类的深入;继承
能编写一些较为复杂的逻辑方法;
能用面向对象的思考方法解决较为复杂的模型
5
初级三
深入学习继承,多态,抽象方法,接口
了解继承中的各种语法在实际工作中的意义;
能熟练运用这些技术解决问题.
15
初级四
异常,多线程,.NET WINDOWS编写
了解异常给实际工作带来的好处;
灵活运用异常;
灵活运用多线程;
能编写一些Windows小游戏
20
初级五
深入多线程
了解多线程运行原理;
熟练处理线程同步;
能编写较为复杂的Windows游戏
10
初级六
网络编程SOCKET,TCP/IP,UDP,HTTP:
编写各种网络应用
25
初级七
案例中学习数据结构和常用算法:
熟练用常用数据结构和算法解决问题
10
中级一
HTML,JAVASCRIPT快速入门
ASP.NET简介和配置
使用ASP.NET开发动态页面,能制作普通网站,聊天室和BBS
20
中级二
ASP.NET web控件和服务器控件
了解两种控件的工作原理;
了解两种控件的区别;
熟练使用所有标准控件
20
中级三
数据库(SQL SERVER)--SQL查询语句,约束,存储过程;
ADO.NET
能熟练使用和操作SQLSERVER;
能合理的设计数据库;
能灵活运用SQL语句:
使用ADO.NET开发企业级应用
30
中级四
数据库(ORACAL)--SQL查询语句,约束,存储过程;
ADO.NET
能熟练使用和操作ORACAL;
能合理的设计数据库;
能灵活运用SQL语句;
使用ADO.NET开发企业级应用
10
中级五
三层架构MVC模式;
UML建模语言和工具
养成MVC构架项目的习惯,培养松偶合构架的能力;
能熟练快速运用各种UML图表达项目构架和流程
30
中级六
远程访问技术(RMI)
熟悉RMI的应用领域和使用技术
10
中级七
自定义控件
能够熟练开发自定义控件;
具备在大项目中模块化分析的能力
5
中级八
C0M+
熟练使用开发COM+;
了解COM+工作原理
15
中级九
WebService
熟练使用开发WebService;
了解WebService工作原理
10
中级十
控制反转 (IOC) 设计模式;
了解并能设计控制反转 (IOC) 设计模式;
15
中级十一
XML
熟悉XML,DOM,XML PARSER,XML SERVICE
10
高级一
各种报表处理:
水晶报表;
能处理和生成各种规范的单证,报表,统计
10
高级二
物流系统/ERP/财务的.net处理
使用各种模式组合来解决复杂的物流,ERP,财务系统
40
高级三
Web2.0风格元素和技术元素
理解Web2.0思想;
熟练掌握Web2.0开发中常用的技术
10
高级四
JavaScript深入与Ajax技术元素
深入掌握JAVASCRIPT;
熟练运用AJAX常用技术;
25
高级五
Flash Action Script;
Flex
熟练运用FLEX技术制做高交互性,表现丰富的表示层
30
高级六
大型项目的构架和管理团队开发的技巧
通过大型项目训练架构技巧和管理能力
60
----------------------------------------------------------------------------------------------------------------------------------
2.遇到阶梯发展瓶颈怎么办?
现阶段,学生我还没有碰到什么大的问题,因为很多书和代码都在看!
本文不是以技术为主,希望对你有点帮助!