课程简介
**从语法到架构的跨越:C++ 服务端工程化实战** 本课程的核心目标并非教授 C++ 语法基础,而是解决初学者如何将零散的知识点转化为可维护、高并发服务端系统能力的工程化问题。很多开发者在学习完指针、类、STL 等基础知识后,往往卡在“如何组织代码”、“如何处理并发”以及“如何与数据库交互”的实际落地环节。本资料通过一个完整的后台服务端项目,模拟真实开发…
**从语法到架构的跨越:C++ 服务端工程化实战**
本课程的核心目标并非教授 C++ 语法基础,而是解决初学者如何将零散的知识点转化为可维护、高并发服务端系统能力的工程化问题。很多开发者在学习完指针、类、STL 等基础知识后,往往卡在“如何组织代码”、“如何处理并发”以及“如何与数据库交互”的实际落地环节。本资料通过一个完整的后台服务端项目,模拟真实开发中的需求拆解、模块划分、内存管理以及网络通信逻辑,重点在于演示如何通过工程实践而非单纯 API 调用,来构建具备生产环境特征的系统。它不关注语言特性的最新演进,而是聚焦于传统 C++ 在服务端领域长期沉淀下来的最佳实践,比如单例模式的陷阱、多线程下的锁粒度控制,以及 I/O 多路复用模型的实现细节。
**适合人群与前置基础**
这门课适合已经熟练掌握 C++ 基本语法(如智能指针、虚函数、模板基本用法),理解操作系统进程/线程概念及 TCP/IP 基础协议,但缺乏实际项目经验,不清楚如何将代码组织成大型工程的开发者。如果读者还在纠结 `new` 和 `delete` 的基本区别,或者未理解同步机制中互斥锁的作用,建议先补齐操作系统与程序设计基础。课程假设读者能够阅读中大型 C++ 代码库,并具备基本的调试与日志分析能力。
**学习路径与模块拆解**
建议不要线性观看视频,而是按照“模块复用”的逻辑切入。首先关注**网络通信层**,这里会涉及 TCP 长连接保持、心跳检测机制以及基于 Reactor 模型的线程池设计,这是服务端性能的基石,读者应着重理解事件循环的非阻塞处理逻辑。其次深入**业务逻辑层**,观察如何设计分层架构(DAO、Service、Controller),特别是如何处理跨层的数据转换与异常传播。最后重点研究**基础组件层**,包括日志系统、配置管理以及连接池的实现,这些部分代码通常具备极高的复用价值,可直接移植到其他项目中。
**自学路径与工程实践**
学完本课程,读者应能独立完成一个具备 RESTful API 接口、支持并发连接、具备数据持久化能力的 C++ 后端服务,并掌握使用 GDB 或 Valgrind 进行内存泄漏检测与性能瓶颈定位的方法。资料包中的代码与视频内容紧密配合,建议采用“黑盒测试”的学习法:先不逐行看代码,而是根据视频讲解的功能点,尝试自行画出类图与时序图,再打开源码对照实现差异。重点比对自己在线程安全性考虑上的遗漏,以及内存生命周期管理的疏漏。对于视频未详细展开的第三方库依赖,应查阅官方文档理解其设计权衡,而非仅仅记住调用方式。通过这种“先设计后编码,再反思”的循环,将项目经验内化为工程直觉,而不仅仅是复制粘贴代码。
课程介绍
通过项目的毒打,把已掌握C++基础知识的初学者训练成职业的程序员。 更详细的介绍请看课程的前两个视频(课程导学和项目简介)。
课程目录
课程目录23 集
- QQ_1746849867060.png (38.43 KB, 下载次数: 0) 2025-5-10 12:05 上传 课程介绍: 通过项目的毒打,把已掌握C++基础知识的初学者训练成职业的程序员。 更详细的介绍请看课程的前两个视频(课程导学和项目简介)。 课程目录: ├──
- 第1章 课程介绍 │ ├── 1-1 想了解课程全貌看导学.mp4 │ ├── 1-2 项目简介.mp4 ├──
- 第2章 Linux编程基础(上) │ ├── 2-1 Linux的Hello world.mp4 │ ├── 2-2 VSCode的安装和配置.mp4 │ ├── 2-3 静态库和动态库.mp4 │ ├── 2-4 makefile.mp4 │ ├── 2-5 main函数的参数.mp4 │ ├── 2-6 gdb常用命令.mp4 │ ├── 2-7 gdb调试core文件.mp4 │ ├── 2-8 gdb调试正在运行中的程序.mp4 ├──
- 第3章 Linux编程基础(下) │ ├── 3-1 Linux的时间操作.mp4 │ ├── 3-2 Linux的目录操作.mp4 │ ├── 3-3 Linux的系统错误.mp4 │ ├── 3-4 目录和文件的更多操作.mp4 ├──
- 第4章 进程与进程控制 │ ├── 4-1 Linux的信号.mp4 │ ├── 4-2 进程终止.mp4 │ ├── 4-3 调用可执行程序.mp4 │ ├── 4-4 创建进程.mp4 │ ├── 4-5 僵尸进程.mp4 │ ├── 4-6 多进程与信号.mp4 │ ├── 4-7 共享内存.mp4 │ ├── 4-8 循环队列.mp4 │ ├── 4-9 信号量.mp4 │ ├── 4-10 多进程的生产消费者模型.mp4 │ ├── 4-11 UNIX环境高级编程.mp4 ├──
- 第5章 C++网络编程基础(上) │ ├── 5-1 第一个网络通讯程序.mp4 │ ├── 5-2 基于Linux的文件操作.mp4 │ ├── 5-3 socket函数详解.mp4 │ ├── 5-4 主机字节序与网络字节序.mp4 │ ├── 5-5 万恶的结构体.mp4 │ ├── 5-6 封装socket客户端.mp4 ├──
- 第6章 C++网络编程基础(下) │ ├── 6-1 封装socket服务端.mp4 │ ├── 6-2 实现文件传输功能.mp4 │ ├── 6-3 多进程的服务端.mp4 │ ├── 6-4 三次握手与四次挥手.mp4 │ ├── 6-5 TCP缓存.mp4 ├──
- 第7章 开发框架介绍 │ ├── 7-1 开发框架介绍.mp4 │ ├── 7-2 字符串操作(上).mp4 │ ├── 7-3 字符串操作(中).mp4 │ ├── 7-4 字符串操作(下).mp4 │ ├── 7-5 时间操作.mp4 │ ├── 7-6 目录和文件操作.mp4 │ ├── 7-7 写文件和读文件.mp4 │ ├── 7-8 日志文件操作.mp4 │ ├── 7-9 网络通讯.mp4 │ ├── 7-10 学习要求.mp4 ├──
- 第8章 生成测试数据 │ ├── 8-1 业务需求.mp4 │ ├── 8-2 搭建程序的框架.mp4 │ ├── 8-3 加载站点参数.mp4 │ ├── 8-4 模拟观测数据.mp4 │ ├── 8-5 把数据写入文件.mp4 ├──
- 第9章 服务程序的监控和调度 │ ├── 9-1 业务需求.mp4 │ ├── 9-2 调度模块.mp4 │ ├── 9-3 进程的心跳.mp4 │ ├── 9-4 守护模块.mp4 │ ├── 9-5 运行策略.mp4 │ ├── 9-6 清理文件.mp4 │ ├── 9-7 压缩文件.mp4 ├──
- 第10章 基于ftp协议的文件传输模块 │ ├── 10-1 业务需求.mp4 │ ├── 10-2 配置ftp服务.mp4 │ ├── 10-3 手工执行ftp命令.mp4 │ ├── 10-4 封装ftp客户端.mp4 │ ├── 10-5 文件下载模块(一).mp4 │ ├── 10-6 文件下载模块(二).mp4 │ ├── 10-7 文件下载模块(三).mp4 │ ├── 10-8 文件上传模块.mp4 ├──
- 第11章 基于tcp协议的文件传输模块 │ ├── 11-1 业务需求.mp4 │ ├── 11-2 模拟网上银行APP服务端.mp4 │ ├── 11-3 tcp短连接和长连接.mp4 │ ├── 11-4 上传文件(一).mp4 │ ├── 11-5 上传文件(二).mp4 │ ├── 11-6 上传文件(三).mp4 │ ├── 11-7 上传文件(四).mp4 │ ├── 11-8 同步和异步通讯.mp4 │ ├── 11-9 上传文件(五).mp4 │ ├── 11-10 下载文件.mp4 ├──
- 第12章 Oracle数据库基础(上) │ ├── 12-1 业务需求.mp4 │ ├── 12-2 Oracle数据库系统的安装.mp4 │ ├── 12-3 Oracle客户端的安装和配置.mp4 │ ├── 12-4 Oracle的表.mp4 │ ├── 12-5 Oracle的表-主键和约束.mp4 │ ├── 12-6 事务、虚表、序列和伪列.mp4 │ ├── 12-7 表的索引.mp4 │ ├── 12-8 where、order by子句.mp4 ├──
- 第13章 Oracle数据库基础(下) │ ├── 13-1 Oracle的函数.mp4 │ ├── 13-2 外键、别名和子查询.mp4 │ ├── 13-3 表空间、用户和权限管理.mp4 │ ├── 13-4 视图和数据字典.mp4 │ ├── 13-5 数据库链路和同义词.mp4 │ ├── 13-6 自定义函数、存储过程和触发器.mp4 │ ├── 13-7 其它的知识和相关的概念.mp4 │ ├── 13-8 数据库设计PowerDesigner(上).mp4 │ ├── 13-9 数据库设计PowerDesigner(下).mp4 ├──
- 第14章 C++开发Oracle数据库 │ ├── 14-1 创建表.mp4 │ ├── 14-2 向表中插入数据.mp4 │ ├── 14-3 修改和删除表中的数据.mp4 │ ├── 14-4 从表中查询数据.mp4 │ ├── 14-5 存取大型对象.mp4 │ ├── 14-6 其它细节.mp4 │ ├── 14-7 全国气象站点参数文件入库.mp4 │ ├── 14-8 全国气象观测数据文件入库(上).mp4 │ ├── 14-9 全国气象观测数据文件入库(下).mp4 ├──
- 第15章 数据抽取模块 │ ├── 15-1 业务需求.mp4 │ ├── 15-2 搭建程序的框架.mp4 │ ├── 15-3 全量抽取数据.mp4 │ ├── 15-4 实现增量抽取.mp4 │ ├── 15-5 应用的经验.mp4 ├──
- 第16章 数据入库模块 │ ├── 16-1 业务需求.mp4 │ ├── 16-2 搭建程序的框架.mp4 │ ├── 16-3 读取数据字典.mp4 │ ├── 16-4 准备SQL语句.mp4 │ ├── 16-5 解析xml、执行SQL语句.mp4 │ ├── 16-6 完善和优化.mp4 │ ├── 16-7 应用的经验.mp4 ├──
- 第17章 数据管理模块 │ ├── 17-1 业务需求.mp4 │ ├── 17-2 数据清理.mp4 │ ├── 17-3 数据迁移.mp4 ├──
- 第18章 数据同步模块 │ ├── 18-1 业务需求.mp4 │ ├── 18-2 不分批刷新.mp4 │ ├── 18-3 分批刷新.mp4 │ ├── 18-4 增量同步.mp4 │ ├── 18-5 应用的经验.mp4 ├──
- 第19章 IO多路复用 │ ├── 19-1 select模型(上).mp4 │ ├── 19-2 select模型(下).mp4 │ ├── 19-3 poll模型.mp4 │ ├── 19-4 epoll模型.mp4 │ ├── 19-5 阻塞&非阻塞的IO.mp4 │ ├── 19-6 水平触和&边缘触发.mp4 │ ├── 19-7 epoll的原理.mp4 ├──
- 第20章 网络代理模块 │ ├── 20-1 正向代理的实现.mp4 │ ├── 20-2 用epll处理定时器和信号.mp4 │ ├── 20-3 正向代理的优化.mp4 │ ├── 20-4 反向代理(上).mp4 │ ├── 20-5 反向代理(下).mp4 ├──
- 第21章 数据访问接口模块 │ ├── 21-1 业务需求.mp4 │ ├── 21-2 HTTP协议的本质.mp4 │ ├── 21-3 HTTP协议示例.mp4 │ ├── 21-4 表的设计.mp4 │ ├── 21-5 功能的实现(上).mp4 │ ├── 21-6 功能的实现(下).mp4 │ ├── 21-7 数据安全策略.mp4 ├──
- 第22章 学习总结 │ ├── 22-1 非结构化数据的存储.mp4 │ ├── 22-2 共享平台的辅助功能.mp4 │ ├── 22-3 如何获得项目经验.mp4 │ ├── 22-4 简历的编写.mp4 │ ├── 22-5 如何向面试官介绍项目.mp4 │ ├── 22-6 面试官可能的提问.mp4 │ ├── 22-7 下一步学习计划.mp4