- 博客(68)
- 收藏
- 关注
原创 用状态机管理多阶段任务:让失败、重试与恢复有据可依
本文阐述在复杂任务中使用有限状态机替代简单布尔值的必要性,通过C++示例展示如何用枚举定义状态与事件,实现安全的状态转换。强调状态、错误与重试策略应分离,状态需明确决定操作权限与恢复路径。指出状态机不自动保护副作用,需结合持久化与幂等恢复逻辑,并说明并发下需额外同步机制。最后提醒:状态表仅规范路径,不能解决竞争问题,且状态名称应保持稳定以支持版本兼容。
2026-10-31 11:20:03
494
原创 序列化与反序列化:把 C++ 对象可靠地保存下来
本文详解C++对象序列化与反序列化原理,强调需区分内存布局与存储格式,避免直接保存对象内存。以Qt6 Core实现JSON格式的可靠持久化:定义数据契约(含版本、字段校验),通过QJsonDocument编码,严格验证类型、范围与结构,确保反序列化安全。关键实践包括:编码与写入分离、先检查类型再转换、临时对象构建后提交、使用QSaveFile保障写入原子性。对比二进制格式需约定魔数、字节序、长度单位与版本兼容策略。强调反序列化必须校验边界(截断、越界、未知字段等),并指出非持久化成员无需更新格式。示例展示可
2026-10-31 09:27:10
239
原创 数据库存储基础:理解表结构、主键、事务与 BLOB
本文通过SQLite3内存数据库示例,系统讲解关系型数据库核心概念:数据持久化、表结构与模式设计、主键外键约束、NULL与零值区别、事务ACID特性、索引优化、BLOB字段应用及C++安全操作。重点强调对象与数据库的显式映射、参数绑定防注入、空值处理、复合唯一性约束与业务语义分离。示例验证了外键约束、事务回滚、聚合函数对NULL的处理,揭示“行号非稳定身份”“查询无序”“BLOB不自动解析”等关键认知误区,指导开发者构建可靠、可维护的数据层逻辑。
2026-10-31 09:21:28
330
原创 C++ 接口与插件设计:从工厂注册到 Qt 动态插件
本文通过C++17与Qt6示例,阐述如何设计可扩展的功能入口:分离接口、工厂、注册表与动态加载职责。核心思想是通过抽象接口定义能力,工厂创建实例,注册表管理ID映射,实现调用方与具体实现解耦。静态注册适用于内部扩展,动态插件则支持运行时发现与独立部署,但需注意ABI兼容性、生命周期管理及可用性验证。强调稳定ID、所有权清晰与错误处理的重要性,避免过度设计,建议从功能需求出发合理选择架构。
2026-10-29 10:48:34
114
原创 C++ 虚函数与多态:从基类引用到正确的对象销毁
本文通过C++17多态示例,讲解虚函数实现运行时多态的机制,涵盖纯虚函数、override、虚析构函数及对象切片等核心概念。使用Shape基类与Circle、Rectangle派生类演示动态绑定,强调通过引用调用虚函数可自动选择正确实现。结合智能指针管理生命周期,说明虚析构函数对安全删除的重要性,并指出常见陷阱如切片、构造期虚调用、默认参数差异等。学习目标包括理解多态原理、正确使用关键字、识别类型问题,以及设计可扩展接口。
2026-10-27 18:59:38
383
原创 AOI 第一步:用 C++ 和 OpenCV 完成图像读取、灰度化与二值化
本文详解AOI(自动光学检测)中图像预处理的核心步骤:使用C++与OpenCV实现从彩色图到黑白前景图的转换。通过imread读取图像,cvtColor转灰度(基于人眼敏感度加权),再用threshold结合大津法(Otsu)自动二值化,实现高效、鲁棒的前景分割。代码完整可运行,强调检查空矩阵、注意BGR顺序、避免手动阈值依赖等关键细节。三步操作——读图、灰度化、二值化——是缺陷检测的基石,为后续轮廓提取与分析提供可靠输入。
2026-10-22 16:41:11
381
原创 C++ 机器视觉入门:从零搭建 AOI 开发环境(OpenCV + CMake)
本文面向有C++基础的初学者,手把手指导如何从零搭建可复用的AOI(自动光学检测)开发环境。通过理解AOI应用场景与工业选型原因,掌握OpenCV+ C++的性能优势,并完成环境安装(Windows/Ubuntu)、CMake工程组织及首个读图显示程序的编译运行。重点解决路径错误、链接失败、窗口闪退等常见坑点,实现“装环境→建工程→跑代码”闭环,为后续图像处理算法开发打下坚实基础。
2026-10-21 14:34:50
246
原创 Qt 线程迁移机制完整实战指南(moveToThread)
本文系统讲解了Qt中基于moveToThread()的线程管理方案。文章首先介绍了线程亲和性概念,指出QObject默认依附创建它的线程,而UI控件必须运行在主线程。
2026-07-08 23:28:34
583
原创 Qt 有限状态机 QStateMachine 完整实战指南
本文摘要:Qt的QStateMachine状态机框架是解决多模式互斥切换场景(如编辑/查看模式切换、分步流程等)的标准化方案。文章系统介绍了状态机的核心概念(QState、QSignalTransition等)、完整使用流程,并通过PCB编辑模式切换案例演示了状态初始化、生命周期绑定和信号跳转配置。
2026-07-08 23:19:37
487
原创 吃透C++设计模式:从基础到实战,新手也能轻松上手
本文系统介绍了23种C++设计模式,分为创建型、结构型、行为型三大类。创建型模式(单例、工厂、建造者等)关注对象创建,解耦创建与使用;结构型模式(适配器、装饰器、代理等)优化对象组合,实现功能复用;行为型模式(观察者、策略、模板方法等)规范对象交互,灵活分配职责。 文章通过具体代码示例(如单例模式日志系统、工厂模式文档编辑器、观察者模式订单通知等)详细解析了各模式的应用场景和实现方法,强调设计模式的核心价值在于解耦、复用和扩展,而非语法技巧。 作者建议开发者理解模式解决的问题本质,结合SOLID原则灵活运用
2026-04-17 14:48:08
467
原创 从内存到底层:C++ 有符号 / 无符号字符混用,为什么总是踩坑?
如果你在写嵌入式、Qt 图像处理、网络解析、MAVLink 数据解包,这篇里的坑,基本就是你线上 80% 诡异 bug 的来源。
2026-04-14 16:41:51
664
原创 每日一算:整数反转问题
整数反转是一个经典的编程问题,不仅考察基本的数字操作能力,还涉及到边界条件处理和性能优化。本文将详细解析这一问题,并提供多种 C++ 解法。问题描述
2025-09-02 11:23:30
626
原创 C++多线程编程实战:从入门到精通的7道经典题目
多线程编程是现代C++开发中的核心技能之一。本文通过7道精心设计的题目,覆盖多线程编程的常见场景,帮助你掌握线程同步、通信、管理等关键技能。
2025-09-01 20:08:03
1983
原创 C++ 中的重载、重写与隐藏:从语法到底层实现
本文将从语法规则到底层实现,全面解析三者的差异,并深入探讨虚函数表(vtable)的工作原理,让你彻底掌握面试常问问题。
2025-08-04 15:34:07
1905
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅