
教程目录
C++ 语言实战(一):为什么工业软件还在写 C++——网关项目起航
C++ 语言实战(一):为什么工业软件还在写 C++——网关项目起航 这个系列不讲 Hello World,也不打算把 C++ 语法书从头捋一遍。它的全部内容,都发生在一台我亲手从 Java 搬到 C++ 的产线采集网关上:为什么搬、搬完哪

C++ 语言实战(二):RAII 与智能指针——72 小时句柄泄漏打爆网关
C++ 语言实战(二):RAII 与智能指针——72 小时句柄泄漏打爆网关 上一章我们把网关骨架立了起来,C++ 版在工控机上跑得干干净净:零丢帧、31MB 内存。但那只是它健康的前三天。这一章讲的就是第四天发生的事——网关没崩,是慢慢「憋

C++ 语言实战(三):移动语义与拷贝省略——每秒 10 万帧被深拷贝拖死
C++ 语言实战(三):移动语义与拷贝省略——每秒 10 万帧被深拷贝拖死 前两章的网关只干一件事:200 路慢变量,100ms 一拍,C++ 版闲得 CPU 只有 6%。真正把它压垮的是产线二期:新增 50 路高频振动通道,采样率 2kH

C++ 语言实战(四):虚函数与插件化协议驱动——三种协议热插拔
C++ 语言实战(四):虚函数与插件化协议驱动——三种协议热插拔 前三章的网关只认 Modbus,日子过得简单。变故来自销售部门的一句转述:「客户 B 的设备只讲 OPC UA,客户 C 的老旧涂布机是厂里私有 TCP 协议,都得接。」这不

C++ 语言实战(五):二进制协议与帧解析——粘包拆包导致指令串台
C++ 语言实战(五):二进制协议与帧解析——粘包拆包导致指令串台 前四章我们把网关的骨架、内存、性能、架构都立住了。这一章的事故是全系列里代价最重的一起:一帧错位的控制指令,让温控器的设定值写进了涂布机的速度寄存器,产线上 400 米极片

C++ 语言实战(六):并发采集:线程池与互斥——产量对不上的数据竞争
C++ 语言实战(六):并发采集:线程池与互斥——产量对不上的数据竞争 帧解析稳了,下一个炸点在网关内部。这起事故的发现者不是运维,是客户的财务:日报产量比 MES 侧的实际统计 凭空多出一倍 。产量就是钱——一个报多的数字直接触发了停产盘

C++ 语言实战(七):无锁环形缓冲——单写单读从 8µs 到 1.2µs
C++ 语言实战(七):无锁环形缓冲——单写单读从 8µs 到 1.2µs 前六章的账都算得挺干净,但 ch03 埋的那句「高速振动通道的互斥锁版本还要再进化一次」,到这一章该还了。振动通道 2kHz 采样,单点间隔只有 500µs,而上一

C++ 语言实战(八):实时性之谜——P99 抖动 47ms 的真凶
C++ 语言实战(八):实时性之谜——P99 抖动 47ms 的真凶 无锁缓冲上线后,振动通道的平均时延账面非常漂亮,但监控图上还剩一块擦不掉的阴影: 采集循环平均 2ms,P99 偶发 47ms 。这章没有新代码要写——这起排查是全系列里

C++ 语言实战(九):模板与编译期计算——信号缩放的零开销抽象
C++ 语言实战(九):模板与编译期计算——信号缩放的零开销抽象 前八章的锅大多是内存、并发、系统层,这一章炸的是最「无辜」的东西——if else。电芯产线 400 路模拟信号,每一路都要经过「缩放、滤波、单位换算、越限判断」几个环节,第

C++ 语言实战(十):错误处理与日志——异常穿越动态库边界的崩溃
C++ 语言实战(十):错误处理与日志——异常穿越动态库边界的崩溃 ch04 立插件规矩时留过一句狠话:「C++ 异常和 std::string 不许穿越 .so 边界,这是 ch10 要深挖的主题。」现在到还账的时候了——而且事故的形态比

C++ 语言实战(十一):内存池与对象池——吞吐 ×2.3 的复用之道
C++ 语言实战(十一):内存池与对象池——吞吐 ×2.3 的复用之道 ch03 干掉了 string 深拷贝,账面上 malloc 风暴平息了——但那只是冰山露出水面的部分。这一章二期扩容(50 路加到 80 路)触底,露出了水面下的东西

C++ 语言实战(十二):跨平台交付——交叉编译与静态链接
C++ 语言实战(十二):跨平台交付——交叉编译与静态链接 性能这条线到上一章全部收口,但网关的最后一公里还没走:代码要在客户形形色色的机器上活下来——ARM 边缘盒子、客户自带的 x86 工控机、十年没升级的老 CentOS。这一章的事故

C++ 语言实战(十三):面试总纲——30 题串起 13 章事故
C++ 语言实战(十三):面试总纲——30 题串起 13 章事故 系列收官。前十二章攒下 12 起事故、40 多个实测数字和一套完整的采集网关项目——这些东西最终要汇聚到一个场景里: 面试 。这章不讲故事了,做三件事:把网关项目整理成 3

