<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[葱卤山猪的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_46016136</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_46016136]]></copyright><item><title><![CDATA[C++ 内存泄漏：ASAN 工具使用教程]]></title><link>https://blog.youkuaiyun.com/qq_46016136/article/details/162461537</link><guid>https://blog.youkuaiyun.com/qq_46016136/article/details/162461537</guid><author>qq_46016136</author><pubDate>Tue, 30 Jun 2026 18:03:57 +0800</pubDate><description><![CDATA[C++ 排查内存泄漏首选 ASAN，自带能准确定位到行号。。运行程序，退出后自动打印泄漏报告。能查：泄漏、越界、野指针、重复释放。你只要把你的代码用这个参数重新编译运行，就能立刻看到所有内存泄漏位置。]]></description><category></category></item><item><title><![CDATA[C++常见移动语义编译错误及解决办法]]></title><link>https://blog.youkuaiyun.com/qq_46016136/article/details/162010190</link><guid>https://blog.youkuaiyun.com/qq_46016136/article/details/162010190</guid><author>qq_46016136</author><pubDate>Mon, 15 Jun 2026 16:37:36 +0800</pubDate><description><![CDATA[本文分析了C++11中常见的移动语义编译错误，重点针对包含不可移动类型（如std::condition_variable）的类无法使用移动赋值的问题。核心错误是尝试用临时对象赋值时移动运算符被自动删除。根本原因是类中存在不可移动成员（如condition_variable），导致编译器禁止移动操作。 文章提出了三种解决方案： 最优方案是添加reset()方法直接重置对象状态，无需创建临时对象； 次优方案是显式声明移动运算符（但对含condition_variable的类无效）； ]]></description><category></category></item><item><title><![CDATA[二进制字节流序列化]]></title><link>https://blog.youkuaiyun.com/qq_46016136/article/details/161858254</link><guid>https://blog.youkuaiyun.com/qq_46016136/article/details/161858254</guid><author>qq_46016136</author><pubDate>Thu, 11 Jun 2026 19:14:16 +0800</pubDate><description><![CDATA[本文介绍了工业嵌入式开发中二进制序列化的实战应用，重点解析了EEPROM读写打包函数的设计与实现。文章首先对比了二进制协议相对JSON的优势：体积小、速度快、稳定性高，适合工业设备的资源限制。然后详细拆解了函数实现，包括协议格式设计、缓冲区管理、小端序处理、CRC校验等核心环节，并提供了三种典型调用示例（读取、写入、批量擦除）。该方案采用std::vector自动管理内存，通过offset指针跟踪写入位置，严格校验边界，可广泛应用于Modbus、CAN等工业协议开发。]]></description><category></category></item><item><title><![CDATA[C++17 联合体]]></title><link>https://blog.youkuaiyun.com/qq_46016136/article/details/161459053</link><guid>https://blog.youkuaiyun.com/qq_46016136/article/details/161459053</guid><author>qq_46016136</author><pubDate>Wed, 27 May 2026 19:32:39 +0800</pubDate><description><![CDATA[本文探讨了使用C++17的std::variant解析两种风格JSON配置的方法。通过定义ConfigValue为std::variant<std::string, ConfigNode>，可以优雅地处理配置值可能是简单字符串或嵌套子映射的情况。对于多层嵌套JSON，建议使用std::shared_ptr实现递归结构。这种方法利用现代C++特性实现了类型安全的联合体解析，比传统方式更清晰可靠。文章主要面向C++高级语法学习，实际开发中可直接使用现成的JSON解析库。]]></description><category></category></item><item><title><![CDATA[【自用】常用c++操作]]></title><link>https://blog.youkuaiyun.com/qq_46016136/article/details/161109238</link><guid>https://blog.youkuaiyun.com/qq_46016136/article/details/161109238</guid><author>qq_46016136</author><pubDate>Fri, 15 May 2026 12:14:03 +0800</pubDate><description><![CDATA[【代码】【自用】常用c++操作。]]></description><category></category></item><item><title><![CDATA[动态库makefile生成模板手把手教学]]></title><link>https://blog.youkuaiyun.com/qq_46016136/article/details/161106693</link><guid>https://blog.youkuaiyun.com/qq_46016136/article/details/161106693</guid><author>qq_46016136</author><pubDate>Fri, 15 May 2026 12:11:30 +0800</pubDate><description><![CDATA[Makefile构建系统配置摘要 该Makefile提供了一个跨平台C/C++动态库构建系统，支持x86_64和多种ARM64架构平台（包括通用ARM64、瑞芯微RK3588和自定义平台）。系统采用模块化设计，包含： 基础配置区：定义目标库名(libipapply.so)、源文件目录、头文件路径等基础参数 平台选择区：通过PLATFORM变量切换不同目标平台 平台差异化配置：为每个平台定制编译器工具链、编译选项和Boost库路径 自动化功能：自动查找源文件、生成依赖关系、支持增量编译]]></description><category></category></item><item><title><![CDATA[架构设计——工厂加策略实现不同板卡管理优化]]></title><link>https://blog.youkuaiyun.com/qq_46016136/article/details/161072841</link><guid>https://blog.youkuaiyun.com/qq_46016136/article/details/161072841</guid><author>qq_46016136</author><pubDate>Thu, 14 May 2026 14:09:41 +0800</pubDate><description><![CDATA[这篇文章介绍了一个基于C++的策略模式实现，主要特点包括： 遵循开闭原则：新增板卡类型时只需添加新的策略类并注册，无需修改工厂代码 自动注册机制：通过模板类StrategyRegistrar实现策略类的静态注册 工厂解耦：工厂类与具体策略类完全解耦，通过映射表管理创建函数 优化版本升级：引入单例模式和配置文件驱动，支持运行时动态配置 错误处理：编译期不检查注册情况，但运行时会抛出明确异常 核心设计亮点在于利用静态注册和模板技术实现策略类的自动注册，同时通过工厂模式隐藏具体实现细节。优化版进一步增加了配置文件]]></description><category></category></item><item><title><![CDATA[【自用】解析http post表单数据，将其中的二进制数据保存到csv文件且加载到内存]]></title><link>https://blog.youkuaiyun.com/qq_46016136/article/details/161058209</link><guid>https://blog.youkuaiyun.com/qq_46016136/article/details/161058209</guid><author>qq_46016136</author><pubDate>Wed, 13 May 2026 21:05:29 +0800</pubDate><description><![CDATA[本文介绍了如何使用Mongoose网络库解析HTTP POST表单数据，并将二进制文件保存到CSV文件并加载到内存数据结构中。文章首先展示了前端发送的HTTP POST请求数据结构，包含MD5值和二进制文件。然后详细解释了Mongoose库中的关键数据结构：mg_str、mg_http_header、mg_http_message和mg_http_part，这些结构用于解析HTTP请求和表单数据。接着提供了文件操作工具函数，包括目录创建、删除和文件保存功能。最后展示了load_config_calibrat]]></description><category></category></item><item><title><![CDATA[【自用】C++每日一读(三)]]></title><link>https://blog.youkuaiyun.com/qq_46016136/article/details/160866525</link><guid>https://blog.youkuaiyun.com/qq_46016136/article/details/160866525</guid><author>qq_46016136</author><pubDate>Thu, 07 May 2026 19:43:56 +0800</pubDate><description><![CDATA[本文分析了一个设备拓扑配置文件解析函数parse_device_topology()的实现。该函数从JSON配置文件中读取设备拓扑信息，包括版本、设备类型、名称等基础信息，并调用相关管理器解析协议数据、升级配置和版本信息。函数首先确保单次解析，然后读取JSON文件内容并验证。接着解析关键配置字段，如产品类型和设备名称等，若缺失则终止解析。最后，函数通过单例模式调用各管理器处理子配置，并解析设备配置数组。整个过程实现了设备拓扑信息的完整加载和初始化。]]></description><category></category></item><item><title><![CDATA[【小白必看】C++回调函数流程详解]]></title><link>https://blog.youkuaiyun.com/qq_46016136/article/details/160251765</link><guid>https://blog.youkuaiyun.com/qq_46016136/article/details/160251765</guid><author>qq_46016136</author><pubDate>Fri, 17 Apr 2026 17:51:22 +0800</pubDate><description><![CDATA[本文介绍了C++回调机制的核心概念和标准实现方法。回调是通过将函数传递给对象，在特定时机由对象调用该函数的设计模式。文章通过外卖比喻生动解释了回调原理，并详细分解了实现回调的5个关键步骤：定义回调类型、存储回调函数、注册回调、执行回调以及主程序使用。特别强调了注册和执行回调的区别，指出前者是传递函数但不执行，后者才是真正调用。最后总结回调的本质是&quot;你写函数，别人帮你调用&quot;，并指出这是C++中基于std::function的标准回调实现模板。]]></description><category></category></item><item><title><![CDATA[C++每日一读（二）【自用】]]></title><link>https://blog.youkuaiyun.com/qq_46016136/article/details/159729296</link><guid>https://blog.youkuaiyun.com/qq_46016136/article/details/159729296</guid><author>qq_46016136</author><pubDate>Wed, 01 Apr 2026 15:22:21 +0800</pubDate><description><![CDATA[﻿选取实战项目代码，每日一读，逐句解析，逐步提高阅码速度]]></description><category></category></item><item><title><![CDATA[每日一读（一）【自用】]]></title><link>https://blog.youkuaiyun.com/qq_46016136/article/details/159691420</link><guid>https://blog.youkuaiyun.com/qq_46016136/article/details/159691420</guid><author>qq_46016136</author><pubDate>Tue, 31 Mar 2026 16:48:13 +0800</pubDate><description><![CDATA[这段代码实现了一个极简的二进制数据透传打包器。函数接收原始数据指针、长度和打包方式，返回智能指针管理的字符串。主要功能包括：参数校验、内存预分配、原始数据直接拷贝到字符串中，最后通过智能指针自动管理内存。该打包器不做任何数据修改或封装，仅实现数据透传功能，确保内存安全的同时提升性能。适用于需要原样传输二进制数据的场景。]]></description><category></category></item><item><title><![CDATA[linux常用命令积累【自用】]]></title><link>https://blog.youkuaiyun.com/qq_46016136/article/details/159682741</link><guid>https://blog.youkuaiyun.com/qq_46016136/article/details/159682741</guid><author>qq_46016136</author><pubDate>Tue, 31 Mar 2026 11:32:04 +0800</pubDate><description><![CDATA[以实战项目为背景，积累工作中常用Linux语句]]></description><category></category></item><item><title><![CDATA[批量备份恢复文件脚本]]></title><link>https://blog.youkuaiyun.com/qq_46016136/article/details/159651516</link><guid>https://blog.youkuaiyun.com/qq_46016136/article/details/159651516</guid><author>qq_46016136</author><pubDate>Mon, 30 Mar 2026 16:56:52 +0800</pubDate><description><![CDATA[本文介绍了一个用于备份和恢复系统配置文件及库文件的bash脚本。脚本主要功能包括： 备份功能： 自动创建带时间戳的备份目录 将配置文件和库文件/二进制程序分别打包成.tar.gz文件 生成备份清单记录备份内容 恢复功能： 支持全量恢复或选择性恢复（仅配置文件/仅库文件） 可从最新备份或指定时间戳备份恢复 主要特点： 使用绝对路径确保文件定位准确 包含详细的错误处理和状态提示 支持文件有效性检查，跳过不存在的文件 提供使用说明和示例 脚本通过tar命令实现文件打包/解包，适合用于系统关键配置和程序的备份恢复场]]></description><category></category></item><item><title><![CDATA[Git常用核心命令实操总结（新手避坑版）]]></title><link>https://blog.youkuaiyun.com/qq_46016136/article/details/159157648</link><guid>https://blog.youkuaiyun.com/qq_46016136/article/details/159157648</guid><author>qq_46016136</author><pubDate>Tue, 17 Mar 2026 11:06:07 +0800</pubDate><description><![CDATA[本篇整理日常开发中最常用的Git命令，全是实操干货、无冗余理论，收藏起来，忘记的时候直接查，新手也能快速上手～]]></description><category></category></item><item><title><![CDATA[【Qt】心跳检测与粘包处理：打造稳定可靠的TCP Socket通信]]></title><link>https://blog.youkuaiyun.com/qq_46016136/article/details/155954716</link><guid>https://blog.youkuaiyun.com/qq_46016136/article/details/155954716</guid><author>qq_46016136</author><pubDate>Tue, 16 Dec 2025 19:24:04 +0800</pubDate><description><![CDATA[摘要 本文介绍了基于Qt的TCP Socket通信中解决粘包和心跳检测问题的关键技术。针对TCP粘包问题，采用长度前缀法，通过自定义数据包头（包含类型和长度信息）确保数据完整解析。心跳检测机制则通过定时发送检测包和超时计数器实现连接状态监控，服务端30s超时断开，客户端30秒无响应则重连。项目采用信号槽机制实现异步解包，并设计完整的状态管理逻辑，构建了稳定可靠的网络通信框架。源码已上传Git，包含基础版和优化版两个版本实现。]]></description><category></category></item><item><title><![CDATA[【Qt】 TCP套接字通信学习文档]]></title><link>https://blog.youkuaiyun.com/qq_46016136/article/details/155755398</link><guid>https://blog.youkuaiyun.com/qq_46016136/article/details/155755398</guid><author>qq_46016136</author><pubDate>Wed, 10 Dec 2025 14:59:58 +0800</pubDate><description><![CDATA[Qt提供了跨平台的TCP套接字通信功能，通过QTcpServer和QTcpSocket类简化网络编程。相比标准C++需要手动处理平台差异，Qt封装了底层细节，提供面向对象的API和信号槽机制实现异步通信。服务器端使用QTcpServer监听连接，通过nextPendingConnection()获取客户端套接字；客户端通过QTcpSocket的connectToHost()连接服务器。]]></description><category></category></item><item><title><![CDATA[QPainter 指南：绘制各种图形]]></title><link>https://blog.youkuaiyun.com/qq_46016136/article/details/155754563</link><guid>https://blog.youkuaiyun.com/qq_46016136/article/details/155754563</guid><author>qq_46016136</author><pubDate>Tue, 09 Dec 2025 23:33:23 +0800</pubDate><description><![CDATA[可以在各种绘图设备上进行绘制。QPainter 是 Qt 的。]]></description><category></category></item><item><title><![CDATA[模型视图代理（MVD）手把手教程]]></title><link>https://blog.youkuaiyun.com/qq_46016136/article/details/155748806</link><guid>https://blog.youkuaiyun.com/qq_46016136/article/details/155748806</guid><author>qq_46016136</author><pubDate>Tue, 09 Dec 2025 23:03:24 +0800</pubDate><description><![CDATA[📝 Qt MVD框架笔记摘要 MVD基础：Qt的Model-View-Delegate框架实现数据与界面分离，支持多视图共享同一模型。Model管理数据，View负责显示，Delegate控制编辑和渲染方式。]]></description><category></category></item><item><title><![CDATA[【Qt】QFile文件编程]]></title><link>https://blog.youkuaiyun.com/qq_46016136/article/details/155613327</link><guid>https://blog.youkuaiyun.com/qq_46016136/article/details/155613327</guid><author>qq_46016136</author><pubDate>Fri, 05 Dec 2025 19:13:18 +0800</pubDate><description><![CDATA[本教程详细介绍了Qt文件编程的核心类和方法，包括： QFile基础：文件创建、打开模式（ReadOnly/WriteOnly/Append等）和基本读写操作 文件读取：一次性读取或逐行读取，重点讲解了不同编码（UTF-8/GBK等）的处理方法 文件写入：覆盖写入和追加写入两种模式 高级文本处理：使用QTextStream进行格式化的文本读写，自动处理编码 二进制数据处理：通过QDataStream实现跨平台的二进制数据序列化 文件信息获取：利用QFileInfo查询文件大小、路径、时间等元数据 文件对话框]]></description><category></category></item></channel></rss>