目录
一、C++ 学习路线
二、C++ 课程大纲与学习目标
(1)第一阶段:C 语言基础
(2)第二阶段:C 高级编程
(3)第三阶段:C++ 核心编程与桌面应用开发
(4)第四阶段:Linux 高并发服务器开发
(5)第五阶段:Windows/Linux 跨平台企业项目实战 (项目1)
(6)第六阶段:分布式云存储开发 (项目2)
(7)第七阶段:分布式游戏服务器开发
(8)第八阶段:Shell 脚本编程与面试强化
(9)第九阶段:Lars - 负载均衡远程服务调度系统
(10)第十阶段:入侵检测与网络攻防 (项目3)
一、C++ 学习路线
C/C++ 进阶学习路线 | |
C 语言基础 | C 语言概述与数据类型 |
条件判断与循环语句 | |
字符串与函数 | |
数组 | |
指针 | |
内存管理 | |
复合类型 | |
C 高级编程 | 内存分区、函数调用模型 |
指针高级 | |
函数指针与回调函数 | |
数据结构与链表 | |
递归函数 | |
接口的封装和设计 | |
数据结构与算法 | |
C++ 核心编程与桌面应用开发 | C++ 对 C 的扩引用 |
函数重载 | |
类和对象 | |
对象的动态分配和释放 | |
运算符重载 | |
类的继承和派生、多态 | |
函数模板、类模板 | |
异常、I/O 流 | |
STL | |
Qt 常用的控件 | |
Qt 绘图与文件操作 | |
Qt 综合案例实战 | |
Linux 高并发服务器开发 | Linux 命令 |
Linux 开发与调试工 | |
系统 I/O 操作 | |
进程与 IPC 通信 | |
线程与并发同步 | |
信号 | |
网络协议与网络编程 | |
高并发服务开发 (poll、 select 和 epoll) | |
Linux 并发服务器项目实战 (WebServer) | |
Windows/Linux 跨平台企业项目实战 (项目1) | oracle |
MySQL | |
企业财富库的接口的封装和设计 | |
windows 经典应用程序开发 | |
Linux 信息安全开发 | |
跨平台兼容开发与调试 | |
金融类安全传输平台 | |
分布式云存储开发 (项目2) | 分布式文件存储服务器和缓存服务器 |
深入理解 nginx | |
负载均衡反向代理 | |
分布式云存储系统 | |
分布式游戏服务器开发 | 游戏开发 |
异常处理、云部署 | |
lHome 微服务应用开发 | |
docker 操作 | |
Shell 脚本编程与面试强化 | Shell 高级编程 |
面试强化 | |
Lars - 负载均衡远程服务调度系统 | Reactor 模式并发 Service C++ 网络服务器框架开发 |
DNS 与路由 Service | |
负载均衡代理 Service | |
信息上报 Service | |
开发者 API 设计 | |
压力测试 | |
入侵检测与网络攻防 (项目3) | Kali Linux 操作系统实战 |
网络防御技术 | |
网络攻击技术 | |
异常通信行为分析 | |
加密流量还原 | |
网络隐匿私有应用入侵检测系统 |
二、C++ 课程大纲与学习目标
(1)第一阶段:C 语言基础
【第一阶段】 C 语言基础 | |
主讲内容 | 技术要点 |
C 语言概述与数据类型 | 1. 计算机基础 2. 第一个 C 语言程序 3. C 的代码的含义与编译 4. 集成开发环境 (vs) 5. 常量与变量 6. 进制转换 7. 数组与字符串 |
条件判断与循环语句 | 1. 运算符与优先级 2. 强制类型转换运算符 3. if 条件控制语句 4. if-else 语句 5. 三目运算符 6. switch 语句 7. for/break/continue |
字符串与函数 | 1. 函数的基本概念 2. 字符串操作的常用函数 3. 自定义函数 |
数组 | 1. 一维数组的定义和使用 2. 一维数组的基本操作 3. 一维数组的案例 (如: 最值、排序) 4. 二维数组的定义和使用 5. 二维数组的基本操作 |
指针 | 1. 指针变量的定义 2. 指针基本使用 3. const 修饰的指针 4. 一级指针与数组名的关系 5. 指针法操作数组元素 6. 指针作为函数的参数 7. 数组作为函数的参数 8. 指针做函数的返回值 9. 指针处理字符串 |
内存管理 | 1. 局部变量的作用域和生命周期 2. 静态局部变量的作用域和生命周期 3. 全局变量的作用域和生命周期 4. 静态全局变量的作用域和生命周期 5. 静态函数和非静态函数的区别 6. 内存分区 7. 堆区内存的分配 (malloc) 和释放 (free) |
复合类型 | 1. 结构体的基本用法 2. 结构体嵌套指针和数组 3. 结构体作为函数参数 4. 复合类型的声明与使用 |
学习目标 | |
可掌握的核心能力 | 1. 通过 C 语言培养编程思维和动手能力 2. 通过 C 语言的学习培养面向过程编程思想,为以后的深入学习就业课程打下坚实基础 |
可解决的现实问题 | 1. 具备 C/C++ 领域基础专业编程能力 2. 实现电子词典项目案例 3. 实现贪吃蛇项目案例 |
市场价值 | 具备学习编程思维,但尚不能达到任何企业用人标准 |
(2)第二阶段:C 高级编程
【第二阶段】 C 高级编程 | |
主讲内容 | 技术要点 |
内存分区、函数调用模型 | 1. 数据类型、变量的含义 2. 内存四区特点 3. 函数的调用模型 4. 内存操作函数 5. 宏定义与预处理 |
指针高级 | 1. 指针基本使用 2. 指针的步长的概念 3. 指针简介赋值 4. 指针以及多级指针做函数参数的特性与使用 5. 通过指针操作字符串 6. const 类型修饰符 7. 位的逻辑运算符 8. 移位运算符 9. 数组指针与指针数组 10. 多维数组做函数参数 11. 结构体嵌套一级指针 12. 浅拷贝深拷贝 |
函数指针与回调函数 | 1. 封装和设计的思想 2. 函数指针定义的三种方式 3. 回调函数 |
数据结构与链表 | 1. 链表的基本概念 2. 单链表的相关操作 |
递归函数 | 1. 递归函数的概念 2. 递归的使用 |
接口的封装和设计 | 1. 函数的封装设计 2. 解耦合的设计理念 3. 模块实现与业务分离的思想 |
数据结构与算法 | 1. 大 О 表示法基本概念 2. 线性表顺序存储和链式存储概念 3. 线性表的顺序存储 (数组) 4. 线性表的链式存储 (链表) 5. 队列的顺序与链式存储 6. 栈的顺序与链式存储 7. 二叉树基本操作 8. 常用排序算法 |
学习目标 | |
可掌握的核心能力 | 1. 掌握 C 语言中的字符串、一维数组、二维数组的用法 2. 掌握一级指针、二级指针、三级指针的高级用法,理解 N 级指针概念,指针数组和数组指针 3. 学会结构体、文件的使用 4. C 语言接口封装设计 |
可解决的现实问题 | 1. 可以实现自己开发小程序,例如贪吃蛇一类的用 C 语言写的程序 2. 应用 C 语言接口封装设计的方法,进行企业项目开发 |
市场价值 | 可以掌握 C 语言深入技巧,灵活应用 C 语言接口封装设计的方法,但尚不能达到任何企业用人标准 |
(3)第三阶段:C++ 核心编程与桌面应用开发
【第三阶段】 C++ 核心编程与桌面应用开发 | |
主讲内容 | 技术要点 |
C++ 对 C 的扩引用 | 1. C++ 语言的命名空间的使用 2. C++ 对 C 的扩展 3. C、C++ 中 const 不同之处 4. 定义和使用引用类型变量 5. C++ 常用语法 |
函数重载 | 1. 类的的默认参数 2. C++ 的函数重载 3. 类和对象的基本概念 4. 类的封装和访问控制权限 5. 类和对象进行简单编程 |
类和对象 | 1. 类的构造函数 2. 类的析构函数 3. explicit 关键字作用 4. 类的铂贝构造函数的使用 5. 深拷贝和浅拷贝问题 6. 多个对象的构造和析构函 (初始化列表) |
对象的动态分配和释放 | 1. 类和对象的动态分配和释放内存 2. 静态成员变量和函数的使用 3. C++ 编译器对成员变量和成员方法的处理机制 4. this 的使用 5. 友元函数 6. 友元类 |
运算符重载 | 1. 运算符重载概念 2. 常用运算符重载 3. 自定义的智能指针类 4. 实现一个自定义的 String 类 |
类的继承和派生、多态 | 1. 继承中的访问控制 2. 继承中的构造和析构 3. 多继承 4. virtual 继承的基本概念 5. 多态的使用 (多态成立条件、使用场景) 6. 区分成员函数的重写和重定义 7. 虚函数表指针,分步初始化 8. 虚函数 9. 纯虚函数 10. 抽象类的使用 11. 虚析构函数和纯虚析构函数 |
函数模板、类模板 | 1. 函数模板基本语法 2. 函数模板和函数重载的调用规则 3. 编译器对模板的编译过程 4. 类模板的概念和基本语法 5. 继承中的类模板 6. 类模板中普通友元函数、友元函数模板的处理 |
异常、I/O 流 | 1. C++ 类型转换 2. C++ 标准异常库 3. 异常的抛出与捕获 4. C++ 标准 I/O 流 (cin、cout) 5. C++ 的文件 l/O 类的使用 |
STL | 1. STL 容器、迭代器的原理 2. 序列式容器 vector、string、deque 3. 堆栈容器 stack.quenue 4. 双向链表容器 list 5. 关联式容器 set.multiset 6. 对组 pair 7. 关联式容器 map. multimap 8. STL 算法详解 |
Qt 常用的控件 | 1. Qt 的基本概念 2. Qt 应用程序框架 3. Qt 信号和槽的应用 4. Qt 窗口系统 5. 常用对话框的使用 6. Qt 界面设计 7. Qt 事件处理 |
Qt 绘图与文件操作 | 1. QPainter 绘图 2. update 函数 3. 绘图设备 (QPixmap、QBitmap、Qlmage、QPicture ) 4. 文件操作 |
Qt 综合案例实战 | Qt 综合案例 |
学习目标 | |
可掌握的核心能力 | 具备常用 C++ 方向基本知识和常用技能 |
可解决的现实问题 | 能够具备基本的开发能力,看懂简单代码,实现开发简单程序软件的功能 |
市场价值 | 熟练学习和掌握后,可满足企业开发的初级需求 |
Qt 可掌握的核心能力 | 具备常用 QT 界面开发的基本技巧和常用技能 |
Qt 可解决的现实问题 | 能够实现简单的前台界面开发 |
Qt 市场价值 | 熟练学习和掌握后,可满足企业开发的初级需求 |
(4)第四阶段:Linux 高并发服务器开发
【第四阶段】 Linux 高并发服务器开发 | |
主讲内容 | 技术要点 |
Linux 命令 | 1. Linux 下的目录结构 2. 工作日常应用命令 3. Ubuntu下的软件安装和卸载 |
Linux 开发与调试工 | 1. vim 命令模式下操作 2. vim 末行模式下操作 3. vim 的配置 4. gcc 的工作流程和掌握常见参数 5. Linux 下的静态库与共享库 (windows 动态库) 的制作和使用 6. Makefile 7. gdb 调试 8. pcb 和文件描述符,虚拟地址空间 9. Linux 系统 IO 函数 10. 阻塞和非阻塞的概念 |
系统 I/O 操作 | 1. stat/lstat 函数 2. 文件属性相关函数 3. 链接相关概念及函数 4. 目录操作相关概念及函数 5. dup、dup2 函数 6. fcntl 函数 |
进程与 IPC 通信 | 1. 进程相关的概念 2. 进程操作相关函数 3. 孤儿进程 4. 僵尸进程 5. 进程回收 6. 进程间通信 |
线程与并发同步 | 1. 互斥量 2. 死锁以及解决方案 3. 读写锁 4. 条件变量 5. 条件变量实现生产消费者模型 6. 信号量实现生产消费者模型 7. 线程同步解决哲学家就餐问题 |
信号 | 1. 信号中的基本概念 2. 使用信号相关的函数 3. 信号内核实现原理 4. 信号捕捉函数 signal、sigaction 5. 使用信号完成子进程的回收 6. 发送信号时如何进行参数传递 |
网络协议与网络编程 | 1. OSI 七层模型结构 2. TCP/IP 四层模型结构 3. B/S、C/S 优缺点对比 4. 常见网络协议格式 5. 套接字、网络字节序 6. IP 地址转换函数 7. 编写 TCP 的 C/S 网络程序 8. UDP 通信机制与模型 9. 本地套接字 10. 三次握手建立连接过程 11. 四次握手断开连接过程 12. 滑动窗口概念 13. 错误处理函数封装 14. TCP 状态转换 15. 2MSL 概念 16. 端口复用方法 17. 半关闭 |
高并发服务开发 (poll、 select 和 epoll) | 1. 多路 IO 转接模型 2. select 函数 3. fd_set 相关操作函数 4. select 多路 IO 转接模型 poll 操作函数 5. epoll 多路 IO 模型 6. 线程池模型的设计思想 7. 多进程并发服务器 8. 多线程并发服务器 9. libevent 库 10. epoll 反应堆模型 11. 使用 BufferEvent.evBuffer |
Linux 并发服务器项目实战 (WebServer) | 1. 通过项目实战,使大家熟悉 Linux 知识的应用 2. 以及如何开发服务器程序 3. 从项目需求分析项目设计,到项目实现,对程序开发有个整体的认识 |
学习目标 | |
可掌握的核心能力 | 1. 具备常用后台服务器开发方向基本知识和常用技能 2. 并具备基本的开发能力 |
可解决的现实问题 | 能够实现包括服务器后台、前端界面、服务器数据库的开发 |
市场价值 | 熟练学习和掌握后,可满足企业开发的初中级需求 |
(5)第五阶段:Windows/Linux 跨平台企业项目实战 (项目1)
【第五阶段】 Windows/Linux 跨平台企业项目实战 (项目1) | |
主讲内容 | 技术要点 |
oracle | 1. 简单查询 2. oracle 的常用函数 3. 多表查询 4. 集合操作 5. DDL 操作管理表 6. DML 管理数据 7. 其它数据库对象 8. PL/SQL 编程 9. 存储过程与存储函数 10. 触发器 11. 工具查询 12. 解决 Top-N 问题 |
MySQL | 1. mysql 表的约束 2. mysql 中出现的中文乱码问题 3. mysql 函数库连接数据库 4. mysql API 访问数据库 5. 使用基础类 API 实现 mysql 客户端工具 6. 预处理类 API 访问 mysql 数据库 7. 使用 api 修改 mysql 事务特性 |
企业财富库的接口的封装和设计 | 1. 外联接口 2. 线程同步 3. socket 4. 线程池 |
windows 经典应用程序开发 | 1. windows 下图形化界面 2. 设计模式的应用 3. 异步通信 4. xml 5. json 6. html 7. 共享内存、消息队列 |
Linux 信息安全开发 | 1. 共享内存、消息队列 2. 秘钥加密 (对称、非对称) 3. 接口封装设计 4. protobuf 介绍与使用 5. git 代码管理 6. 程序操作数据库 |
跨平台兼容开发与调试 | 1. windows 与 linux 跨平台通信 2. windows 与 linux 跨平台调试 |
金融类安全传输平台 | 1. 数据安全传输基础设置平台项目(简称,数据传输平台),类似于支付宝与银行的汇帐,二者相互识别与身份认证,是一款基础设施类项目,为集团、企业信息系统提供统一、标准的信息安全服务 2. 本项目类似于支付宝与银行的汇帐,二者相互识别与身份认证,是一款基础设施类项目,实现标准的信息安全服务 3. 本项目具有通用组件和业务流合理分层、子系统和子系统之间完全解耦合、Win 的客户端和 Linux 服务程序异构对接 4. 并发服务器开发、MFC/QT 客户端开发;Win 系统和 Linux 系统对接调试;还有企业级的通用财富组件:报文编解码组件、Socket 通信组件、IPC 机制读写组件、日志库组件,基础组件支持 windows 和 Linux 操作系统 |
学习目标 | |
可掌握的核心能力 | 掌握常用数据库类型的操作技巧和简单开发 |
可解决的现实问题 | 熟练应用项目中使用的数据库知识,能做简单的数据库开发 |
市场价值 | 熟练学习和掌握后,可满足企业开发的初中级需求 |
(6)第六阶段:分布式云存储开发 (项目2)
【第六阶段】 分布式云存储开发 (项目2) | |
主讲内容 | 技术要点 |
分布式文件存储服务器和缓存服务器 | 1. fastDFS 分布式存储系统应用开发 2. redis 缓存开发 |
深入理解 nginx | 1. nginx 的部署 2. nginx 维护机制 3. nginx 通信架构模型 4. nginx 的高并发性能架构 |
负载均衡反向代理 | 1. 基于 nginx 搭建反向代理 2. 分布式 web 应用服务器搭建 |
分布式云存储系统 | 本项目是指通过集群应用、网络技术或分布式文件系统等功能,实现的云盘可实现高性能、分式式存储,可以为社区、电子商务网站、银行、政府、证券等提供公共后端云平台 |
学习目标 | |
可掌握的核心能力 | 1. 掌握高性能服务器解决方案 (负载均衡) 2. 掌握分布式存储解决方案 ( redis 集群/ mysql 集群) 3. 掌握项目压力测试和单元测试,掌握服务器逻辑开发 |
可解决的现实问题 | 1. 解决大型互联网公司并发高吞吐问题 2. 解决分布式 web 应用服务器集群问题 |
市场价值 | 熟练学习和掌握后,可满足企业开发的初中级需求 |
(7)第七阶段:分布式游戏服务器开发
【第七阶段】 分布式游戏服务器开发 | |
主讲内容 | 技术要点 |
游戏开发 | 1. 游戏开发采用 3D、2D 两种游戏引擎 2. 游戏框架采用 FPS 射击场景应用 3. 后端服务器采用高性能、分式式解决方案,实现统一游戏或其他应用后端云平台,同时实现跨平台、高并发小文件的快速云服务功能 4. 集群基础设施采用 Docker 容器搭建 |
异常处理、云部署 | 1. 隐藏资源管理和错误处理,用户仅需要关注应用的开发,服务高可用、高可靠 2. 可将负载运行在由成千上万的机器联合而成的集群中 3. 支持云平台、模块化、插件化,可挂载,可组合,且自动部署,自动伸缩/扩展 |
lHome 微服务应用开发 | 1. RESTful 的设计 2. MVC 框架 3. orm 的作用及工作流程 4. 使用 gorm 对关系型数据库进行增删改查操作 5. 使用 gin 框架进行 web 应用开发 ① session 和 cookie 使用 ② 验证码业务 ③ 注册业务 ④ 登陆业务 ⑤ 头像业务 ⑥ 轮播图业务 ⑦ 订单业务 |
docker 操作 | 1. docker 容器的进入、生成新的镜像 2. docker 私有仓库的使用配置 3. docker 数据卷的使用 4. docker 数据卷容器的使用 5. docker 端口映射的使用 6. docekrfile 的功能介绍 7. dockerfile 的使用 |
学习目标 | |
可掌握的核心能力 | 1. 具备市场主流分布式技术 2. 具备 go 语言高并发后台开发能力 3. 具备 docker 虚拟化容器技术 4. 具备分布式微服务架构设计能力 |
可解决的现实问题 | 1. 具备 C/C++ 领域基础专业编程能力 2. 实现电子词典项目案例 3. 实现贪吃蛇项目案例 |
市场价值 | 具备学习编程思维,但尚不能达到任何企业用人标准 |
(8)第八阶段:Shell 脚本编程与面试强化
【第八阶段】 Shell 脚本编程与面试强化 | |
主讲内容 | 技术要点 |
Shell 高级编程 | 1. 高级指令引入 2. Shell 函数 3. Shell 特殊用法 4. Shell 案例实战 |
面试强化 | 1. 高级数据结构 2. 数据库加强训练 3. 面试强化训练 |
学习目标 | |
可掌握的核心能力 | 1. Unix/Linux 下 Shell 编程开发 2. 掌握 Shell 的函数语法和工具制作 3. 掌握 Linux 常用 Shell 指令和问题定位方法 4. 面试强化训练 |
可解决的现实问题 | 复习和巩固所学知识,进行专题面试强化 |
市场价值 | Shell 编程作为 Linux 平台高级运维语言,掌握 Shell 可以在任意 Linux/Unix 操作系统做系统维护和问题定位 |
(9)第九阶段:Lars - 负载均衡远程服务调度系统
【第九阶段】 Lars - 负载均衡远程服务调度系统 | |
主讲内容 | 技术要点 |
Reactor 模式并发 Service C++ 网络服务器框架开发 | 1. io_buffer 缓冲处理 2. event callback 模型 3. 定时器队列管理 4. 定时器队列超时事件 5. eventLoop 初始化 6. tcp/udp server API 封装 7. 常见服务器处理机制 |
DNS 与路由 Service | 1. 初始化 one loop per thread 模型 server 2. route 信息存储 3. RouerVersion 及时间戳存储 4. ChangeLog 存储 5. Backend Thread 后台守护线程 |
负载均衡代理 Service | 1. 节点获取服务 2. 节点调用结果上报服务 3. 负载节点调度模型 4. 健康检查 5. LoadBalance 负载均衡算法 |
信息上报 Service | 1. Single Thread TCP Server 模型 2. 消息封装内容 3. 一致性 hash 算法 4. hash 数据结构 |
开发者 API 设计 | 1. API 缓冲层 api 调度方式 2. cpp 接口 api 封装 3. python 接口 api 封装 4. java 接口 api 封装 |
压力测试 | 1. qps 压力测试 2. 单元测试 |
学习目标 | |
可掌握的核心能力 | 1. 具备市场并发服务器框架发开能力 2. 具备源码分析能力 3. 具备企业基础设施架构层编程能力 |
可解决的现实问题 | 1. 解决大型企业服务器高并发问题 2. 解决门户网站内部服务器负载均衡问题 3. 解决电商类或其他互联网类服务器监控及负载均衡问题 |
市场价值 | 熟练学习和掌握后,课满足企业开发的初中级,甚至高级需求 |
(10)第十阶段:入侵检测与网络攻防 (项目3)
【第十阶段】 入侵检测与网络攻防 (项目3) | |
主讲内容 | 技术要点 |
Kali Linux 操作系统实战 | 1. Kali Linux 介绍 2. Kali Liunx 安装 3. Kali Linux 系统更新 4. Kali Linux 基本配置 5. Kali Linux 常用攻击工具 |
网络防御技术 | 1. 网络攻防环境搭建 2. 信息安全理论 3. Linux 基本安全防护技术 ① 访问权限 ② 访问控制列表 ACL ③ 文件属性 ④ PAM 技术 ⑤ 特权机制 4. 安全审计 5. 网络嗅探及协议分析技术 ① Wireshark 抓包工具 ② Tcpdump 抓包工具 ③ 网络噢探技巧 6. Linux 防火墙技术 ① lptables 详解配置规则 ② TCP Warrpper 7. Linux 入侵检测分析技术 ① Debian 9 入侵分析 ② 开机自启服务与安全防护机制 |
网络攻击技术 | 1. 安全渗透 2. 范围界定 3. 信息收集与 DNS 记录分析 4. 目标识别技术 ① 识别目标主机 ② 系统指纹信息识别 5. 服务枚举 ① 端口扫描 ② Nmap 识别服务指纹信息 6. DDOS 分布式拒绝服务攻击 ① TCP SYN Flood 攻击 ② TCP Reset 攻击 7. 口令暴力破解 8. 网络攻防艺术 9.渗透测试实战 |
异常通信行为分析 | 1. 异常域名检测:通过分析域名请求、应答记录发现异常域名,留存域名访问记录元数据 2. 异常通信行为分析:发现网络异常通信行为,如内部主机和外部主机的间歇性连接、服务器主动外联、工作主机非工作时间主动外联等 |
加密流量还原 | 支持自由门、极速 VPN、 shadowsocks 等隐匿通道的流量破解还原能力,支持 Talkbox 应用的破解还原 |
网络隐匿私有应用入侵检测系统 | 网络私有应用监测系统主要由多核硬件平台、安全操作系统、监测引擎、存储管理、数据关联分析、协同分析、升级管理、维护管理、综合管理界面等功能模块组成。 |
学习目标 | |
可掌握的核心能力 | 1. 具备市场主流网络安全攻防技术 2. 具备流量监测等核心安全研发能力 |
可解决的现实问题 | 1. 解决国内外敌对势力通过隐 H 通道 (如 VPN、即时通信软件) 有限监控手段现状问题 2. 解决私有加密应用和网络异常通信行为,并能对加密流量进行还原和审计 |
市场价值 | 熟练学习和掌握后,可满足企业开发的初中级、甚至高级需求 |