【C++上級】学習入門:C/C++上級の学習ルート、概要、目標

目次

1. C++ 学習ルート

2. C++ コースの概要と学習目標 

(1) 第一段階:C言語の基礎

(2) 第 2 段階: C による高度なプログラミング 

(3) 第 3 段階: C++ コア プログラミングとデスクトップ アプリケーション開発

(4) 第 4 段階: Linux の高同時実行サーバーの開発

(5) 第5段階:Windows/Linuxクロスプラットフォームエンタープライズプロジェクト実践(プロジェクト1) 

(6) フェーズ 6: 分散クラウド ストレージ開発 (プロジェクト 2)

(7) ステージ 7: 分散ゲームサーバーの開発 

(8) 第8段階:シェルスクリプトプログラミングと面接強化 

(9) ステージ 9: Lars - 負荷分散リモート サービス スケジューリング システム 

(10) フェーズ 10: 侵入検知とネットワーク攻撃と防御 (プロジェクト 3)  



1. C++ 学習ルート

C/C++ の高度な学習ルート
言語の基礎 C言語の概要とデータ型
条件判定とループ文
文字列と関数
配列
ポインタ
メモリ管理
複合型
高度なプログラミング メモリ分割、関数呼び出しモデル
ポインタの詳細
関数ポインタとコールバック関数
データ構造とリンクリスト
再帰関数
インターフェースのパッケージングとデザイン
データ構造とアルゴリズム
C++ コア プログラミングとデスクトップ アプリケーション開発 C++ の C への拡張参照
関数のオーバーロード
クラスとオブジェクト
オブジェクトの動的な割り当てと解放
演算子のオーバーロード
クラスの継承と派生、ポリモーフィズム
関数テンプレート、クラステンプレート
例外、I/O ストリーム
STL
Qt でよく使用されるコントロール
Qtの描画とファイル操作
Qt の包括的なケース演習
Linux の 高同時実行サーバー開発 Linuxコマンド
Linux 開発およびデバッグ ワーカー
システム I/O 操作
IPCとのプロセス通信
スレッドと同時実行の同期
信号
ネットワークプロトコルとネットワークプログラミング
高度な同時実行性のサービス開発 (ポーリング、選択、およびエポーリング)
Linux 同時サーバー プロジェクトの実践 (WebServer)
Windows/Linux クロスプラットフォーム エンタープライズ プロジェクトの実践 (プロジェクト1) オラクル
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 语言基础
主讲内容 技术要点
语言概述与数据类型 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. 解决私有加密应用和网络异常通信行为,并能对加密流量进行还原和审计
市场价值 熟练学习和掌握后,可满足企业开发的初中级、甚至高级需求

おすすめ

転載: blog.csdn.net/qq_39720249/article/details/131965690