- 博客(444)
- 资源 (8)
- 收藏
- 关注
原创 libdatrie: 一个高效的 基于双数组字典树(Double-Array Trie)的C语言函数库
摘要: libdatrie是一个高效的C语言库,实现了双数组字典树(Double-Array Trie),用于处理大规模字符串集合。它通过base[]和check[]两个数组替代传统Trie树的指针结构,显著降低内存占用(仅为传统Trie的1/5~1/10)并提升查询效率(时间复杂度O(n))。支持UTF-8编码、前缀匹配、通配符查询及数据持久化,适用于字典检索、输入法词库、敏感词过滤等场景。提供简洁API,支持插入、删除、精确/前缀查询及文件存储/加载功能,是高性能字符串处理的优选方案。
2025-11-22 13:27:13
760
原创 fast_float: 一个专注于快速将字符串解析为浮点数的高性能C++库
fast_float是一个高性能C++开源库,专门用于快速解析字符串为浮点数(float/double/long double)。相比标准库函数(如std::strtod),其速度可提升2-10倍,同时保证IEEE 754标准的解析精度。该库采用头文件only设计,支持C++11及以上标准,兼容主流编译器和操作系统。 核心优势包括:1)极致性能,通过算法优化减少分支判断和内存操作;2)准确性保证,实现"四舍六入五成双"的精确舍入;3)易用性,提供简洁的from_chars API;4)支
2025-11-18 22:29:47
780
1
原创 Mysql5.7执行脚本报错:unknown collation: ‘utf8mb4_0900_ai_ci‘
MySQL低版本不兼容utf8mb4_0900_ai_ci排序规则的解决方案:1)新建或修改表时改用utf8mb4_unicode_ci;2)导入SQL文件时批量替换排序规则;3)升级到MySQL8.0+版本。utf8mb4是MySQL支持完整Unicode的字符集,推荐使用utf8mb4_unicode_ci排序规则,它在多语言排序和兼容性方面表现最佳。若需更高性能可选utf8mb4_general_ci,但排序准确性稍逊。升级MySQL版本是根本解决之道,但需注意数据迁移方式。
2025-11-18 21:53:31
292
原创 fineftp-server: 轻量级C++跨平台FTP服务器解决方案
fineftp-server是一个轻量级C++ FTP服务器库,支持Windows和Unix系统,提供极简API快速集成FTP功能。主要特性包括支持被动模式、文件操作、用户认证、UTF-8编码及跨平台运行。该库采用CMake构建,仅依赖asio库,无需Boost支持。 安装需准备CMake 3.10+、C++17编译器和Git。通过克隆项目、初始化子模块、配置构建目录等步骤完成安装。核心API包括创建服务器实例、添加用户(匿名/普通)、设置权限和启动服务。 该库专为嵌入式设备、测试环境和快速集成FTP功能的
2025-11-14 21:47:19
1078
1
原创 Poco: 一个功能丰富、易于使用的跨平台C++开发框架(FTP上传下载、断点续传等)
Poco是一个跨平台C++开发框架,提供丰富的即用型组件,涵盖基础工具、网络通信、数据处理等功能模块。核心模块包括Foundation(基础工具)、Net(网络协议)、Data(数据库访问)等。安装方式支持Windows(推荐vcpkg)和Linux(apt或源码编译)。典型应用场景包括FTP文件传输(支持断点续传)、Web服务开发、配置文件管理等。相比Boost更侧重应用层,比Qt更轻量(无GUI)。该框架简化了C++跨平台开发,适合构建高性能后端服务。
2025-11-11 22:13:04
1037
1
原创 C++中的智能指针std::shared_ptr是线程安全的吗?以及它的详细实现原理
C++智能指针使用指南 本文重点介绍了C++中std::shared_ptr和std::weak_ptr的使用方法及实现原理。主要内容包括: shared_ptr核心用法 推荐使用std::make_shared创建,避免单独new导致的两次内存分配 支持共享所有权,通过引用计数自动管理资源 可通过reset()释放资源或变更所有权 提供自定义删除器功能,支持非内存资源管理 C++17起原生支持动态数组 weak_ptr核心特性 作为"弱引用"不增加引用计数,解决循环引用问题 必须通过l
2025-11-07 17:17:15
923
3
原创 Boost-endian: C++ 字节序转换的利器
字节序(Endianness)是多字节数据在内存中的存储顺序,分为大端序(高位先存)和小端序(低位先存)。不同CPU架构使用不同字节序,导致跨平台数据交换时需转换。Boost.Endian库(1.89.0+)提供高效的字节序处理工具,包括转换函数(如big_to_native)、缓冲/算术类型(如big_uint32_t)和字节序检测宏。该库支持C++11及以上,头文件-only设计,适用于网络协议、文件格式、嵌入式系统等场景,能自动处理字节序转换,确保数据跨平台正确性。核心功能涵盖原生类型转换、自定
2025-11-07 10:51:47
635
原创 C++编译期间验证单个对象可以被释放、验证数组可以被释放和验证函数对象能否被指定类型参数调用
本文深入解析了C++中SFINAE(替换失败非错误)的核心原理及其应用。SFINAE通过在模板参数替换时忽略无效代码实现编译期类型检查,主要工具包括decltype、void_t和模板参数约束。文章重点介绍了三种典型SFINAE应用场景:验证单个对象能否被释放(_Can_scalar_delete)、验证数组能否被释放(_Can_array_delete)以及验证函数对象能否被调用(_Can_call_function_object)。这些技术在智能指针(如shared_ptr)构造时用于确保类型安全,将潜
2025-11-06 21:58:53
961
原创 DocxFactory: 一个C++操作word的开源库(不依赖office控件)
DocxFactory是一个C++库,专用于动态生成和修改Microsoft Word文档(.docx格式)。它采用"模板+数据填充"模式,支持文本替换、表格生成、图片插入等功能,适用于合同、报表等批量文档生成场景。该库具有轻量级、跨平台特点,提供简洁API屏蔽XML底层细节,性能优于Python等脚本语言库。使用需安装libxml2依赖,通过模板定义占位符(如${variable}),代码填充数据后生成文档。支持Windows/Linux环境,适合嵌入C++项目实现高效文档处理。典型应
2025-11-06 17:52:58
971
原创 Qt-VLC: 一个集成VLC的开源跨平台媒体播放库
本文介绍了Qt-VLC集成方案,详细说明了跨平台编译方法和项目应用实践。主要内容包括:1) Qt-VLC概述,作为连接Qt框架与VLC媒体引擎的封装库;2) 多平台编译指南(Windows/Linux/macOS),涵盖工具链配置、依赖项管理和常见问题解决;3) Qt项目集成示例,展示网络流媒体播放的实现流程,包含初始化、播放控制、状态监控等核心功能;4) 直接调用libvlc的备选方案。该方案显著简化了Qt项目中多媒体功能的开发,支持主流音视频格式和流媒体协议,适用于需要高性能媒体处理的跨平台应用开发。
2025-11-03 18:47:41
1327
2
原创 Eigen:一个好用的线性代数运算的C++算法库
Eigen是一个高效的C++线性代数模板库,提供矩阵运算、线性方程组求解、特征值计算等功能。作为纯头文件库,它易于集成并支持跨平台使用。核心特性包括:模块化设计(仅包含所需功能)、丰富的API(支持稠密/稀疏矩阵)、几何变换模块以及接近手写代码的性能。安装方式灵活,可通过包管理器或手动配置。使用中需注意编译器优化、固定大小矩阵的优势以及避免混叠问题。适用于科学计算、机器人学、图形学等领域,是C++数值计算的重要工具。
2025-11-02 13:29:44
992
原创 Qt-Nice-Frameless-Window: 一个跨平台无边框窗口(Frameless Window)解决方案
Qt-Nice-Frameless-Window是一个基于Qt的跨平台无边框窗口解决方案,支持Windows、Linux和macOS系统。它封装了窗口拖拽、缩放、标题栏交互等基础功能,并支持窗口阴影、半透明效果等视觉增强特性。相比Qt原生无边框窗口实现,该库解决了跨平台适配复杂、功能缺失等问题,开发者只需继承核心窗口类即可快速集成。安装方式包括源码编译或直接集成到项目,支持高DPI屏幕适配,让开发者能专注于业务逻辑开发而非基础窗口交互实现。
2025-11-02 12:32:49
919
原创 C++中的那些零拷贝技术
零拷贝技术是一种高效的数据传输优化方法,旨在减少内存中的冗余拷贝,提升性能并降低CPU和内存开销。在C++中,零拷贝技术可分为内核态和用户态两类。内核态零拷贝通过sendfile、splice、mmap等技术实现数据在内核态的直接流转,避免用户态与内核态之间的拷贝开销,适用于文件传输、网络通信等场景。用户态零拷贝则通过引用语义、移动语义、智能指针、字符串视图等技术优化内存操作,减少数据复制。本文详细介绍了mmap、sendfile、splice等内核态零拷贝的实现原理及示例代码,并分析了用户态零拷贝的多种实
2025-10-29 22:39:51
1013
2
原创 std::set、std::multiset 和 std::unordered_set的异同
std::set和都是 C++ 标准库中用于存储元素的容器,但它们在元素唯一性有序性底层实现和性能特性上有显著差异。容器底层实现有序性元素唯一性插入 / 删除 / 查找复杂度头文件典型用途std::set平衡二叉搜索树(红黑树)有序(默认升序)唯一O(log n)<set>有序去重场景(如排序后的唯一值)平衡二叉搜索树(红黑树)有序(默认升序)允许重复O(log n)<set>有序允许重复场景(如统计频率前的排序)哈希表(链地址法)无序唯一平均 O (1),最坏 O (n)
2025-10-28 22:32:35
1159
1
原创 QRingBuffer:Qt内部高效环形缓冲区
QRingBuffer是Qt内部实现的高效环形缓冲区,虽然不属于公开API,但通过分析其源码可以学习到优秀的设计思想。该实现由QRingChunk和QRingBuffer两个核心类组成:QRingChunk作为基础存储单元,封装QByteArray和偏移量管理,利用写时复制特性减少内存拷贝;QRingBuffer通过QVector管理多个QRingChunk,实现环形缓冲区的读写操作。其亮点包括:零拷贝数据操作(仅调整偏移量)、内存复用优化、高效的片段调度策略,特别适合高频IO读写场景。使用时需要注意线程安
2025-10-27 17:56:29
864
原创 qtmqtt: 一个开源且好用的mqtt开源客户端
MQTT是一种轻量级的物联网消息传输协议,适用于低带宽、高延迟网络环境。Qt提供了QMqtt模块实现客户端功能,支持Qt5.10+和Qt6。安装可通过维护工具或源码编译,核心类包括QMqttClient(连接管理)、QMqttSubscription(订阅管理)等。使用时需配置.pro文件添加mqtt模块,通过信号槽处理连接状态和消息接收。开发技巧包括断线重连、遗嘱消息、SSL加密等。QtMQTT适合物联网设备通信、跨平台消息推送等场景,特别适合与Qt其他模块协同开发的项目。注意不同Qt版本的接口差异和常见
2025-10-26 19:59:30
988
原创 setMouseGrabEnabled: Not setting mouse grab for invisible window QWidgetWindow/‘QMenuClassWindow’
本文分析了Qt项目中自定义菜单弹出警告的原因及解决方法。当为不可见状态的QMenu窗口设置鼠标捕获(setMouseGrabEnabled(true))时,会触发警告,因为Qt只允许对可见窗口执行此操作。解决方法是在QMenu中添加QAction项,确保菜单处于可见状态后再进行鼠标捕获操作。示例代码展示了如何在菜单中添加QAction后成功消除警告。
2025-10-26 19:23:15
331
原创 Drogon: 一个开源的C++高性能Web框架
Drogon是一个基于C++14/17/20的高性能HTTP Web框架,采用异步非阻塞架构,支持epoll/kqueue等高效事件处理机制,适用于构建高并发后端服务。核心特性包括:全面的HTTP/1.x和WebSocket支持、内置ORM(MySQL/PostgreSQL等)、RESTful路由系统、JSON处理、过滤器机制和跨平台能力。安装需要现代C++编译器,通过源码编译。示例展示了基础路由、控制器类、ORM操作和过滤器等核心功能,支持快速构建RESTful API。Drogon特别适合需要高性能的A
2025-10-25 20:19:32
1538
1
原创 Fruit框架:C++依赖注入解决方案
Fruit是一个轻量级C++依赖注入框架,基于C++11特性实现编译时依赖检查。它通过组件(Component)声明依赖关系,由注入器(Injector)自动解析创建对象。核心特性包括:支持接口绑定、单例模式、延迟初始化;编译时验证确保类型安全;无运行时开销。安装可通过包管理器(vcpkg/apt/brew)或源码编译。使用步骤:1)用INJECT标记构造函数)定义组件绑定接口与实现)创建注入器获取实例。适用于大型应用、微服务、单元测试等场景,能有效降低耦合度,提升代码可测试性和可维护性。
2025-10-22 22:03:29
1109
3
原创 CMake进阶:生成器表达式
CMake生成器表达式是CMake 3.0+引入的高级特性,用于在生成构建系统时动态计算值,而非配置阶段。它支持多配置构建(如VS的Debug/Release)、跨平台适配和目标类型区分等场景,通过条件表达式、字符串操作和目标相关表达式实现灵活配置。核心语法为$<条件:真结果;假结果>,支持构建配置判断、平台识别、目标类型区分等操作。使用注意事项包括版本兼容性、适用范围限制和调试技巧。掌握生成器表达式可显著提升CMake脚本的动态配置能力,特别适合复杂跨平台项目。
2025-10-21 19:41:13
835
3
原创 QDarkStyleSheet: 一个Qt应用的暗色主题解决方案
QDarkStyleSheet是为Qt框架设计的暗色主题样式表集合,支持PyQt/PySide和C++ Qt,兼容Qt5.x/6.x版本。它提供跨平台一致的暗色界面,覆盖所有原生控件,支持高DPI显示,仅需2-3行代码即可集成。Python用户可通过pip安装并调用对应函数加载样式,C++用户需手动导入QSS文件。支持直接修改QSS文件或代码动态覆盖来自定义样式。开源免费,适合需要暗色模式的应用开发。
2025-10-19 15:58:47
1148
2
原创 CFF Explorer: 一款Windows PE 文件分析的好工具
CFFExplorer是一款专业的Windows PE文件分析工具,支持PE32/PE64格式,提供深度结构解析、可视化编辑和逆向工程辅助功能。它能详细展示PE文件结构,支持字段级编辑,包括资源修改、导入表操作和脱壳处理(内置UPX/ASPack脱壳引擎)。工具还支持脚本扩展,可批量处理PE文件。适用于软件调试、恶意代码分析和资源修改等场景。免费绿色版解压即可使用,但中文版可能存在兼容性问题建议使用英文版。相比同类工具,CFFExplorer在PE编辑和脱壳方面表现突出,是逆向工程和软件开发的实用工具。
2025-10-17 15:41:35
1498
1
原创 Qt程序高分辨界面显示不正常解决办法
Qt程序在高分辨率屏幕(如3072x1920)下出现布局变形、字体模糊等问题,主要原因是高DPI适配不足。解决方案包括:在程序启动前启用Qt高DPI支持(Qt5.6+需设置AA_EnableHighDpiScaling和AA_UseHighDpiPixmaps),适配系统缩放策略(多屏情况下需监听DPI变化),建议升级到Qt5.15+或Qt6.2+版本以获得更好的高DPI支持。实践表明,正确配置后程序在不同分辨率设备上均可正常显示。
2025-10-16 22:02:03
1174
原创 QT 中的元对象系统(七):Q_GADGET 机制
本文深入解析Qt中的Q_GADGET宏,它是Q_OBJECT的轻量级替代方案,为普通类提供元对象支持而无需继承QObject。Q_GADGET支持元对象反射(类名、属性、枚举等),但不支持信号槽功能,适用于轻量级数据结构、枚举容器等场景。文章详细介绍了Q_GADGET的声明方式、与Q_OBJECT的区别、使用方法(包括属性定义和元信息访问),以及通过SFINAE技术实现的编译时类型判断机制。Q_GADGET需要moc预处理,适用于需要元对象功能但无需信号槽的类,是对Qt元对象系统的有效补充。
2025-10-15 21:34:29
742
5
原创 C++类型转换通用接口设计实现
本文提出了一种基于类型擦除和适配器模式的C++通用类型转换接口设计。核心思路是通过抽象基类AbstractConverterFunction定义统一转换接口,使用模板子类适配不同转换逻辑(成员函数、带校验函数、lambda等)。实现采用void*类型擦除技术,在子类中通过静态类型转换确保安全。该系统支持动态管理多种转换器,通过基类指针统一调用,适用于需要灵活处理多种类型转换的场景,如框架开发或数据绑定。设计亮点包括:类型擦除实现统一接口、多源适配扩展性强、类型安全保证及轻量高效。
2025-10-14 22:33:46
761
1
原创 QT 中的元对象系统(六):connect函数详解
本文深入解析了Qt中信号槽机制的核心函数QObject::connect的使用方法和原理。文章详细介绍了多种重载形式,包括连接到成员函数、lambda表达式和全局函数等场景,重点分析了带context和不带context版本的区别及其对生命周期管理和线程安全的影响。文章还比较了信号槽与回调函数的异同,指出信号槽在解耦、多对多支持、类型安全和跨线程通信方面的优势。最后总结了使用connect时的注意事项,如对象生命周期管理、跨线程风险等。通过全面解析connect函数的参数含义和匹配规则,帮助开发者正确使用这
2025-10-12 21:11:48
1096
原创 gSOAP: 一个C++构建Web服务和跨语言开发的利器
gSOAP是一个C/C++开发工具包,用于快速实现SOAP Web服务和XML数据绑定。它通过自动生成代码屏蔽底层细节,支持跨平台、跨语言通信,广泛应用于企业系统集成和工业控制。工具包包含wsdl2h和soapcpp2,可解析WSDL生成接口定义,并自动生成客户端/服务端框架代码。开发流程包括定义接口、生成代码、实现业务逻辑和编译运行。其核心优势在于标准化SOAP消息和WSDL接口契约,实现C++与Java/C#/Python等语言的互操作。适用于需要强类型契约和高可靠性的场景,但不适合轻量级实时通信。
2025-10-09 21:50:00
705
3
原创 C++回调函数的设计以及调用者应注意的问题
本文介绍了C++中回调函数的设计与实现。回调函数通过函数指针、std::function等方式实现,用于解耦调用者与被调用者。现代C++推荐使用std::function,支持lambda、成员函数等多种调用方式。参数设计应遵循最小化原则,明确输入输出方向,复杂数据建议封装为结构体。多线程环境下需特别注意线程安全问题,包括回调对象加锁、生命周期管理及异常处理。合理设计的回调能提升代码灵活性,是事件驱动编程的关键技术。
2025-10-08 18:09:26
674
1
原创 CMake进阶:解析自定义函数 / 宏的可变参数(ARGN)的指令cmake_parse_arguments
本文介绍了CMake中cmake_parse_arguments命令的功能与使用方法。该命令用于解析自定义函数/宏的可变参数(ARGN),能自动将参数分类为开关参数、单值参数和多值参数,并通过前缀统一管理解析后的变量,提高代码可读性和可维护性。文章详细说明了其语法格式和参数类别,并提供了基本用法、复杂函数和互斥参数处理等示例。特别介绍了在NuttX RTOS项目中自定义的nuttx_add_subdirectory函数的应用场景,该函数扩展了标准CMake功能,支持Kconfig配置检查和模块依赖管理。最后
2025-10-08 12:44:50
1045
1
原创 通信中间件 Fast DDS(三) :fastddsgen的安装与使用
fastddsgen是FastDDS的IDL编译器,用于将IDL定义的数据结构转换为C++/Python等代码,自动生成序列化、类型注册等逻辑。安装需JDK8+和Maven,支持源码编译或vcpkg/Linux包管理安装。使用时需编写IDL文件(如定义结构体),通过命令生成代码,常见问题包括环境配置(如cl.exe缺失)和IDL语法错误。集成到CMake项目时,需配置生成规则并链接FastDDS库。核心优势是简化通信代码开发,推荐结合-example参数快速生成示例框架。 (字数:150)
2025-10-01 10:18:30
1384
2
原创 QEvent和它的涉及类继承体系和设计思想
本文系统介绍了Qt框架中的QEvent事件系统。QEvent作为Qt事件驱动模型的核心基类,封装了各类事件信息,具有类型标识、接受/忽略状态和跨线程传递等特性。文章详细解析了QEvent的继承体系(包括输入事件、窗口事件、绘制事件等子类)、事件处理流程(产生→分发→过滤→处理→传递)以及自定义事件实现方法。重点阐述了Qt事件系统的设计思想:面向对象封装、多态处理、层次化分发、过滤机制和同步/异步发送机制。这些设计使Qt能够灵活处理用户交互和系统通知,同时提供丰富的扩展点,是其响应性和可定制性的关键所在。
2025-09-27 22:00:31
929
原创 dbswitch:一款免费开源、功能强大的异构数据库迁移同步工具
dbswitch是一款开源的跨数据库数据迁移与同步工具,支持MySQL、PostgreSQL、Oracle等多种关系型数据库和部分非关系型数据库。核心功能包括全量/增量数据迁移、表结构自动转换、并行迁移处理等,提供命令行、Java API等多种使用方式。工具采用流式处理降低内存占用,支持插件化扩展新数据库类型,适用于数据库升级、多数据源同步、数据中台建设等场景。相比Sqoop、DataX等工具,dbswitch更专注于数据库间的结构+数据迁移,具有配置灵活、支持国产数据库等优势。
2025-09-27 11:08:52
1828
原创 C++算法之std::inplace_merge:合并两个连续的排序子序列
std::inplace_merge是C++标准库中的高效原地合并算法,用于将两个连续有序子序列合并为一个整体有序序列,无需额外空间。其核心通过分治和旋转操作实现,时间复杂度O(nlogn),空间复杂度O(logn)。相比std::merge,它牺牲部分效率换取内存优化,适用于嵌入式等内存受限场景。使用时需确保输入子序列已排序,并支持自定义比较器。典型应用包括归并排序、合并分块数据等。该算法稳定保留相等元素顺序,但要求使用双向迭代器,且未排序输入会导致未定义行为。
2025-09-24 21:04:23
706
1
原创 FFTW:一个好用的快速傅里叶变换库
FFTW是MIT开发的高性能开源傅里叶变换库,支持多种变换类型和维度,通过自适应优化和硬件加速实现接近理论极限的性能。其核心创新包括"计划"机制、SIMD指令集优化和多线程支持。安装方式灵活,可源码编译或使用包管理器。典型应用场景涵盖信号处理、图像分析、科学计算和音频工程等。示例展示了FFTW在噪声抑制中的实际应用,通过频域滤波有效去除高斯噪声。作为工业级标准,FFTW凭借卓越性能和跨平台特性成为科研与工程领域首选的傅里叶变换解决方案。
2025-09-20 16:05:25
2609
1
原创 Berkeley DB: 一款高性能的嵌入式键值对数据库
BerkeleyDB是一款高性能嵌入式键值数据库,采用库嵌入方式直接链接应用程序,提供低延迟、高吞吐能力。其核心特性包括:支持多种数据结构(B树、哈希、队列、堆),页式存储管理,完整的ACID事务支持及崩溃恢复机制。通过环境(Environment)统一管理缓存、日志等资源,提供C API进行数据操作。典型应用场景包括嵌入式设备、缓存系统和消息队列等,但不支持SQL查询和分布式部署。BerkeleyDB以轻量高效著称,适合对性能和资源占用有严格要求的场景,但需要开发者自行处理事务和恢复等细节。
2025-09-19 21:11:26
1043
原创 CMake实践: VS2022工程转为CMake工程过程与经验分享
本文详细介绍了将VS2022工程转换为CMake工程的完整流程。主要内容包括:1)分析VS工程配置并映射到CMake命令;2)分步骤实现转换,包括搭建基础框架、导入源文件、复现编译链接选项、配置输出目录等;3)关键跨平台适配方法;4)常见问题解决方案,如Qt模块缺失、UI文件处理、Winsock冲突、第三方库配置等;5)总结转换核心思想是"配置映射"和跨平台兼容性。通过本文的指导,开发者可以成功将VS工程转换为可跨平台构建的CMake项目。
2025-09-19 14:12:49
1382
1
原创 CMake进阶: 路径处理指令join_paths和cmake_path
本文介绍了CMake中两种路径处理方法:自定义join_paths函数和cmake_path命令。join_paths是一个自定义路径拼接工具,支持多路径片段拼接、绝对路径覆盖和空片段过滤,适用于CMake3.0+环境。而cmake_path是CMake3.20+引入的官方路径处理命令,提供JOIN、GET_FILENAME_COMPONENT、ABSOLUTE_PATH等子命令,支持路径拼接、解析、转换和判断等功能,具有更好的跨平台兼容性和语法简洁性。文章通过参数解析、逻辑拆解和示例对比,详细说明了两种方
2025-09-17 21:31:31
743
1
原创 JsonCpp: 一个好用且轻量级的JSON解析库
JsonCpp是一个功能完善的C++ JSON处理库,支持解析、生成和操作JSON数据。它具有跨平台性、双接口设计(简单与高级接口)和轻量易集成等特点。文章详细介绍了JsonCpp的两种安装方式:包管理器安装(推荐)和源码集成,并提供了对应的CMake配置方法。核心组件包括Json::Value(存储数据)、Json::CharReader(解析)和Json::StreamWriter(生成),通过示例展示了基本使用方法。还介绍了高级功能如解析含注释的JSON和处理大型文件,并提醒了类型安全、线程安全等注意
2025-09-17 20:57:34
1986
原创 std::thread是可以被std::move吗?
std::thread通过移动语义(std::move)实现线程资源所有权的转移,因其拷贝操作被禁用,仅支持移动构造/赋值。核心用法包括线程对象转移、容器存储及移动赋值。被移动后,原对象失效(joinable()==false),需通过joinable()判断有效性。关键注意事项:移动后原对象不可操作线程;必须对有效线程调用join()或detach();避免悬空引用。std::move是线程资源管理的唯一合法手段,适用于传递、存储等场景,需确保线程生命周期正确管理。
2025-09-12 22:51:40
872
3
原创 cargs: 一个轻量级跨平台命令行参数解析库
cargs 是一个轻量级、跨平台的 C/C++ 命令行参数解析库,核心特点包括:单文件实现(不足 1000 行)、无第三方依赖、支持长短选项和位置参数,并自动生成帮助信息。通过定义 cag_option 结构体和调用 cag_init、cag_next 等函数即可快速集成,适合中小型项目。其优势在于简单易用,相比标准库 getopt 提供更友好的接口,又避免了 Boost.Program_options 的复杂性。典型应用场景包括配置工具和脚本开发,支持必填选项标记和错误自动处理。测试显示其在 Linux/
2025-09-05 11:38:45
909
3
浮点数与十六进制转换工具
2024-01-22
C++设计模式例程,工厂模式例子
2024-01-15
高质量 C++编程指南,编程的好书籍
2023-12-26
C++模板函数重载规则详解
2023-12-26
sscom 串口调试工具
2023-12-20
NetAssist 网络调试工具
2023-12-20
基于C++CORBA高级编程
2023-12-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅