自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(482)
  • 收藏
  • 关注

原创 QStyleItemDelegate:自定义列表控件类神器

QStyledItemDelegate是Qt模型/视图架构中实现项自定义的核心类,负责项的绘制和编辑功能。相比旧版QItemDelegate,它深度融合Qt样式系统,支持跨平台风格一致性和样式表。开发者通过重写关键虚函数实现定制:paint()用于自定义外观,createEditor()、setEditorData()和setModelData()用于编辑功能。该委托支持精细控制,可针对整个视图或特定行列进行定制,并保持高性能渲染。作为Qt官方推荐的标准实现,QStyledItemDelegate能完

2026-02-07 19:08:28 495

原创 MinHook:Windows 平台下轻量级、高性能的钩子库

MinHook是一款轻量级Windows内联钩子库,支持x86/x64架构,通过修改目标函数机器码实现函数重定向。核心优势包括:自动处理内存权限、指令跳转和地址计算;提供简洁API(初始化、创建/启用/禁用钩子、卸载);线程安全且低侵入性。使用流程固定:获取目标函数地址→创建钩子→启用钩子→通过跳板函数调用原函数。典型应用场景包括API拦截、调试监控和游戏修改。注意事项包括:必须保持函数签名一致、通过跳板函数调用原函数、避免在DllMain中操作等。附带完整示例演示如何钩取MessageBoxA修改弹窗内容

2026-02-05 21:55:26 947 2

原创 libarchive: 一个几乎可以解压所有压缩文件的C语言库

libarchive 是跨平台开源 C 库(BSD 协议,可免费商用),原生支持解压 / 创建 tar、tar.gz、tar.bz2、tar.xz、zip、7z、rar(仅解压)等几乎所有主流压缩格式,核心优势是纯源码开源、轻量可静态编译、跨平台兼容性极强(Win/Linux/macOS/ 嵌入式),且天然支持tar.gz这类打包 + 压缩的双层格式自动解析,是跨平台 C/C++ 开发中替代 7z SDK 的优质选择,尤其适合需要无闭源依赖、同时支持解压 + 创建压缩包的场景。

2026-02-04 22:38:47 798

原创 浅谈C++插件机制的设计要点以及实现方案

本文探讨了C++插件机制的设计与实现,重点分析了其核心价值、技术挑战和解决方案。插件机制的主要优势包括动态扩展、模块解耦、热更新和故障隔离等,但面临ABI兼容性、跨平台差异、调试难度等技术挑战。文章详细介绍了标准化接口设计、ABI兼容性保障、跨平台加载封装等实现方案,并对比了Qt、Unreal Engine等优秀插件系统架构。针对插件通信、依赖管理等复杂问题,提出了接口分层、服务注册、拓扑排序等解决方案。最后,文章还讨论了进程隔离对稳定性的提升作用,为构建健壮的C++插件系统提供了全面指导。

2026-01-27 23:06:38 693

原创 浅谈CPU中的SIMD

摘要 本文介绍了CPU的SIMD(单指令多数据)技术,包括主流架构的指令集(x86的SSE到AVX-512,ARM的NEON到SVE2)及编译器启用方法。详细说明了如何检测CPU对SIMD的支持:通过命令行查询(Linux/macOS的cpuinfo、Windows的wmic)和C++代码动态检测(使用内置函数或CPUID指令)。文章还介绍了在C++中利用SIMD的三种方式:编译器自动向量化(需优化选项)、直接调用SIMD内置函数以及使用C++标准并行算法。最后提供了CMake检测SIMD支持的方法,帮助开

2026-01-21 22:47:44 869 1

原创 CMake基础: 在release模式下生成调试信息的方法

摘要:本文介绍在CMake项目中为Release模式生成调试信息(pdb)的几种方法:1)在CMakeLists.txt中配置CMAKE_CXX_FLAGS_RELEASE添加/Zi(MSVC)或-g(GCC/Clang)选项;2)使用add_compile_options/add_link_options指令;3)针对特定目标使用target_compile_options;4)直接使用CMake内置的RelWithDebInfo构建类型。推荐使用RelWithDebInfo模式,它默认包含Release

2026-01-21 21:43:00 390

原创 C++标准库并行算法从入门到实战:用 std::execution 榨干你的多核 CPU 和 SIMD

C++17/20并行算法摘要 C++17引入标准库并行算法,通过执行策略参数实现自动并行化,无需修改业务逻辑。主要策略包括: seq - 顺序执行(单线程) par - 多核并行 par_unseq - 多核并行+SIMD向量化(C++17) unseq - 纯SIMD向量化(C++20) 关键要点: 需满足C++17/20标准及编译器要求(GCC9+/Clang10+/MSVC2019+) 必须添加编译参数:-O3 -march=native -lpthread 支持随机访问迭代器的算法(如sort/tr

2026-01-18 22:15:23 919

原创 CMake进阶:模块模式示例FindOpenCL.cmake详解

本文详细解析了CMake模块模式下FindOpenCL.cmake文件的实现原理与编写规范。该脚本实现了跨平台(Windows/Linux/Mac)自动查找OpenCL库,包含头文件定位、库文件查找、版本检测等功能。核心内容包括:1) 使用find_path/find_library进行头文件和库文件搜索;2) 通过check_symbol_exists检测OpenCL版本;3) 兼容32/64位编译(CMAKE_SIZEOF_VOID_P);4) 导出标准变量(OpenCL_LIBRARIES等);5)

2026-01-18 14:50:59 624

原创 CMake基础:foreach详解

CMake 的foreach是遍历列表 / 集合的核心指令,支持传统遍历和现代关键字遍历两种语法,常用于批量处理源文件、库依赖、编译选项等场景。foreach(<循环变量> IN [LISTS <列表名>] [ITEMS <元素>] [RANGE <起始> <结束>])# 循环体LISTS:遍历已定义的 CMake 列表变量ITEMS:遍历直接给出的元素RANGE:遍历数值范围(如RANGE 1 5对应 1-5)

2026-01-14 22:28:14 422

原创 libipc: 一款轻量级、跨平台的 C++ 进程间通信(IPC)库

libipc是一款轻量级跨平台C++进程间通信库,支持Windows和Linux系统。它封装了管道、共享内存、消息队列等底层IPC机制,提供简洁的现代C++ API。主要特点包括:极简API设计、RAII资源管理、零冗余封装、强类型错误处理、纯C++实现。支持C++17/20特性,无锁或轻量级锁机制,提供单写多读和多写多读模式。安装方式支持vcpkg一键安装和源码编译两种方式。库中包含完整的文件传输示例,展示了如何通过共享内存实现跨进程大文件传输。项目适用于桌面应用进程通信、服务器多进程协作、大文件传输等场

2026-01-13 22:17:04 927

原创 QtScrcpy:基于 Qt 的安卓投屏与控制神器

QtScrcpy是一款基于scrcpy核心开发的免费开源安卓投屏控制工具,采用C++和Qt框架重构,提供可视化界面和丰富功能。支持免ROOT、跨平台、低延迟(USB 35-70ms/WiFi 100ms)、高性能(30-60fps)显示,无需手机端安装应用。主要功能包括:键鼠操控、自定义按键映射、多设备群控、屏幕录制/截图、音频同步、文件传输和剪贴板同步。相比原版scrcpy,QtScrcpy增加了GUI操作、多设备管理、一键无线连接等实用功能,稳定性更高。支持Android 5.0+设备,提供Window

2026-01-13 21:39:15 629

原创 CMake进阶:核心命令get_filename_component 完全详解

本文详细介绍了CMake中get_filename_component命令的使用方法,该命令是处理文件路径的核心工具,主要用于解析路径信息。文章重点讲解了5种常用解析模式:DIRECTORY(提取上级目录)、NAME(获取文件名)、NAME_WE(无后缀文件名)、EXT(文件扩展名)和ROOT(根目录)。特别强调了在编写XXXConfig.cmake时,如何通过多级路径向上推导库的根目录及相关子目录,实现库路径的自动识别。文中还提供了路径规范化处理、文件名提取等实用场景示例,并给出了自定义XXXConfig

2026-01-09 23:06:51 1051 1

原创 VS2019编译的C++程序,在win10正常运行,在win7上Debug正常运行,Release运行报错0xC0000005,进不了main函数

本文分析了VS2019编译的C++Release程序在Win7上出现0xC0000005错误的原因。该错误发生在程序加载阶段,导致无法进入main函数。主要原因包括:VS2019默认工具集针对Win10而非Win7;VC++运行时库版本不兼容;启用了Win7不支持的AVX2等高级指令集。最终发现是用于内存泄露检测的动态库在Win7上存在兼容性问题。该问题排查耗时两天,具有典型参考价值。

2026-01-09 22:40:04 338

原创 CMake进阶:vcpkg中OpenSSLConfig.cmake详解

摘要:OpenSSLConfig.cmake是vcpkg安装OpenSSL后生成的CMake配置文件,主要功能包括:1)防止重复导入OpenSSL目标;2)自动推导安装路径;3)根据OPENSSL_USE_STATIC_LIBS选择静态/动态库;4)创建标准导入目标(OpenSSL::Crypto/SSL/applink)。该文件兼容原生FindOpenSSL接口,特别处理了Windows平台的applink.c和系统库依赖。使用时需注意目标冲突检查、静态/动态库选择以及Windows特有的运行时DLL和C

2026-01-03 19:26:59 974

原创 C++ union 的一种妙用法

本文探讨了C++中union的特殊用法,通过分析标准库中的constant_init模板结构体,揭示了union在编译期常量初始化中的巧妙应用。该设计利用union特性避免自动调用成员析构函数,实现编译期构造且手动管理生命周期的需求。文章详细说明了三种初始化union的方法,并指出其适用于平凡析构类型和编译期默认初始化的场景,同时警告了非平凡析构类型可能导致的内存泄漏风险。最后提出了使用静态断言增强安全性和用std::optional替代的建议。

2026-01-03 13:35:47 615

原创 浅谈Qt中的QSql模块整体设计

Qt的QSql模块是Qt框架提供的数据库抽象层,旨在屏蔽不同数据库(如SQLite、MySQL等)的底层API差异,提供统一的操作接口。其核心设计包括三层架构:应用层调用API执行数据库操作,抽象接口层定义统一接口(如QSqlDatabase、QSqlQuery),驱动适配层通过插件机制适配具体数据库。QSql支持SQL执行、参数绑定、事务控制等功能,并与Qt的MVC组件深度整合。模块采用工厂模式、适配器模式等设计模式,确保扩展性和跨平台兼容性。开发者可通过自定义驱动和模型扩展功能,但需注意线程安全和性能优

2026-01-01 22:38:21 1421

原创 CMake进阶:find_package使用总结

本文总结了CMake配置库目录的多种方法:1)设置库根目录(XXX_ROOT)适用于现代库;2)指定配置文件目录(XXX_DIR)实现精准定位;3)添加全局查找路径(CMAKE_PREFIX_PATH)适合多库项目;4)设置模块查找路径(CMAKE_MODULE_PATH)用于老库兼容;5)直接设置头文件和库文件目录(不推荐)。文章详细说明了find_package的查找顺序,列举了查找成功后自动设置的变量(如_FOUND、_INCLUDE_DIRS等),并以Boost为例演示了完整配置流程。最后给出了跨平

2025-12-30 22:06:52 1219

原创 Q-Dir:高效多窗口文件管理神器

Q-Dir是一款高效的Windows多窗口文件管理器,支持1-4个窗口同时显示,每个窗口可独立浏览不同目录并支持多标签页(最多64个文件夹)。核心功能包括窗口间拖拽文件、批量操作、文件过滤、颜色标记分类等,兼容本地/网络/FTP等多种存储介质。提供便携版和安装版,支持Win7-Win11系统。相比系统资源管理器,Q-Dir在多窗口管理、标签页浏览和批量操作方面优势明显,特别适合需要频繁处理多目录文件的用户,能显著提升工作效率。

2025-12-30 21:30:09 1377

原创 QProcess在Windows下不能正常启动exe的原因分析

Qt框架中的QProcess类提供了跨平台进程管理功能,支持三种启动方式:start()用于交互式进程(可监控状态和I/O通信),startDetached()用于独立后台进程,execute()用于阻塞式简单命令执行。使用QProcess时需注意:1)正确设置工作目录;2)拆分程序路径和参数;3)处理跨平台差异(如Windows的GBK编码问题)。常见问题包括启动失败(工作目录未设置)、输出乱码(编码转换)和进程卡死(未及时读取输出)。对于需要完全独立运行的子进程,推荐使用startDetached()或

2025-12-27 23:09:05 960 2

原创 Jieba库: 一个中文分词领域的经典库

Jieba-cpp是高效的中文分词C++库,支持精确模式、全模式和搜索引擎模式三种分词方式。它采用前缀词典和双向最大匹配算法保证分词精度,结合HMM模型识别未登录词。支持TF-IDF关键词提取和词性标注功能,可与Xapian等检索系统无缝集成。工程实践中建议使用单例模式初始化分词器,通过批量处理、多线程优化性能。该库支持自定义词典,适合企业级中文搜索服务开发,是C++项目中处理中文分词的优选方案。

2025-12-26 22:59:57 1051 1

原创 librf: 一款基于 C++11/14/17 标准实现的轻量级无栈协程库

librf是一个基于C++11/14/17的轻量级无栈协程库,专为高效异步编程设计。它采用无栈协程架构,通过co_await实现异步等待,上下文存储在堆上task<>对象中,无需独立栈空间。该库支持跨平台、零外部依赖,提供task<>、generator<>等异步原语,单进程可支持百万级协程并发。安装方式灵活,可直接嵌入源码或通过CMake编译。示例展示了协程定时器和异步文件读取功能,适用于高并发网络服务、仿真系统等场景。相比Boost.Coroutine等库,librf

2025-12-26 22:59:04 915

原创 Xapian: 一款C++全文检索解决方案

Xapian是一款高性能开源全文检索库,支持中文分词、模糊查询、排序加权等功能,适用于嵌入式系统和轻量级检索场景。其核心优势包括毫秒级检索响应、批量索引优化、低资源占用(内存模式仅占用1.2倍索引数据)以及多平台支持(Windows/Linux/macOS/ARM)。提供三种安装方式:vcpkg一键安装(推荐)、源码编译和CMake集成。功能演示涵盖索引创建(支持批量提交和压缩)、关键词检索(支持布尔逻辑和模糊查询)以及索引更新删除。相比同类工具,Xapian在轻量级和嵌入式场景表现优异,但缺乏原生分布式支

2025-12-23 21:41:15 1268

原创 C++之std::stringstream详解

std::stringstream 是 C++ 处理字符串的 “瑞士军刀”,核心价值:灵活的类型转换(数字↔字符串);高效的字符串拼接;便捷的字符串分割;所有操作在内存中完成,无 IO 开销,性能优异。实际开发中,优先用 istringstream 处理 “读 / 解析”、ostringstream 处理 “写 / 拼接”,stringstream 仅在需要双向操作时使用(略占内存)。

2025-12-23 21:15:13 1237

原创 标准C++操作文件方法总结

本文介绍了C++文件操作的核心知识。主要包含:1)使用<fstream>头文件中的ifstream、ofstream和fstream类进行文件读写;2)文件打开模式(如ios::in、ios::out等)及其组合使用;3)文本文件和二进制文件的具体操作方法,包括读写文本(<<、>>、getline())和二进制数据(write()、read());4)文件指针定位(seekg()、seekp())和错误处理(is_open()、eof()等);5)注意事项如文本/二进制模

2025-12-21 10:49:07 810

原创 ZeroMQ: 一款高性能、异步、轻量级的消息传输库

ZeroMQ是一款高性能异步消息传输库,提供REQ/REP、PUB/SUB、PUSH/PULL等多种通信模式,支持跨网络/进程/线程通信。相比传统消息队列,它无中心节点、延迟低至微秒级,但缺乏持久化功能。安装可通过包管理器或源码编译,核心组件包括Context和Socket。典型应用场景包括RPC调用、实时推送和任务分发。使用时需注意套接字类型匹配和线程安全问题,适合对实时性要求高但不需要强持久化的分布式系统。

2025-12-20 22:15:53 1685

原创 QTableWidget和QTableView插入数据比较

QT表格控件性能优化指南 摘要:QT中QTableWidget和QTableView是两种常用表格控件。QTableWidget开箱即用但性能有限,适用于小数据量场景,可通过禁用UI更新、预分配空间等优化手段提升插入效率。QTableView采用模型视图架构,搭配自定义模型可实现百万级数据的高效展示,通过懒加载仅渲染可见区域,内存占用低且扩展性强。核心差异在于:QTableWidget适合简单静态表格(千行级),而QTableView更适合大数据量、多数据源等复杂场景。开发者应根据数据规模、性能需求和扩展性

2025-12-19 22:26:51 1025

原创 Qt实现多语言原理和实践详解

Qt多语言实现核心是通过QTranslator加载.qm翻译文件,结合tr()标记实现字符串替换。关键步骤包括:1)用lupdate提取代码中的tr()字符串生成.ts文件;2)使用QtLinguist编辑翻译;3)用lrelease编译为.qm文件。程序运行时通过load()加载翻译文件,installTranslator()安装翻译器。支持运行时语言切换,需卸载旧翻译器并刷新界面。注意事项包括:正确使用tr()宏、处理复数形式、避免动态拼接字符串等。还可将.qm嵌入资源文件或加载Qt内置控件翻译。完整流

2025-12-17 22:48:48 1447 1

原创 Typora:优雅的 Markdown 编辑器

Typora是一款所见即所得的Markdown编辑器,提供无缝写作体验。它支持CommonMark和GitHub语法,包含表格、数学公式、代码高亮等高级功能,具有简洁界面和智能快捷键。支持导出多种格式,适用于个人笔记、技术写作、学术论文等场景。安装简单,基础操作包括标题、列表、表格等快捷键,并提供专注模式、大纲视图等实用功能。Typora以极简设计和高效体验成为Markdown编辑标杆,适合需要专注创作的各类用户。

2025-12-17 21:50:12 623

原创 同一线程有两个boost::asio::io_context可以吗?

Boost.Asio的io_context是异步操作的核心调度引擎,采用Reactor模式封装了操作系统的多路复用机制(epoll/kqueue/IOCP/select)。它包含服务注册表、事件多路复用器、完成队列等核心组件,负责监听和分发异步事件。io_context提供run()、poll()等接口控制事件循环,支持多线程并发处理。为保障线程安全,推荐使用strand序列化回调。work_guard可防止事件循环提前退出。实际应用中应避免单线程使用多个io_context,注意处理回调异常和fork后的

2025-12-12 22:22:28 897

原创 async_simple:一个轻量级C++异步协程框架

async_simple是一个轻量级C++异步编程库,兼容C++11+标准,提供无栈/有栈协程、Future/Promise等多种异步模型。核心特性包括多协程支持、轻量级Task模型、灵活执行器、异步同步原语等,具有高性能、低内存开销特点。适用于IO密集型应用、高并发系统等场景。相比Boost.Asio等库,它在易用性和性能间取得更好平衡,且无第三方依赖。安装支持源码编译和包管理器,提供CMake集成方案。典型应用包括网络服务器、数据库客户端等需要高并发但线程开销敏感的场景。

2025-12-07 14:04:54 1203 4

原创 VS2022编译C++报错:fatal error C1060: compiler is out of heap space

本文针对C++编译时出现的"compile is out of heap space"错误,分析了原因并提供了多种解决方案。主要原因包括编译器处理大型代码文件、复杂模板或重型库时内存不足,特别是在Windows+Visual Studio环境下。解决方法包括:1)调整VS编译器堆空间参数/ZmXXX;2)在CMake中全局配置堆空间比例;3)工程优化如拆分大文件、关闭冗余选项、切换64位编译;4)确保系统盘有足够空间。文章还提供了完整的跨平台CMake配置示例,支持Qt/Boost依赖,

2025-12-07 10:37:39 765

原创 sigslot: 一个轻量级实现观察者模式的C++开源库

摘要: sigslot是一个轻量级C++信号槽库,实现观察者模式,用于解耦事件发送者与接收者。其特点包括:纯头文件实现、类型安全(编译期检查)、支持多线程(可选锁机制)、无虚函数开销。核心机制基于回调列表,支持全局函数、成员函数及lambda作为槽。安装仅需包含头文件,使用示例涵盖基础连接、多参数信号及线程安全配置。需注意对象浅拷贝问题(需手动实现深拷贝),与Qt/Boost相比更轻量化但功能精简,适用于非Qt项目。默认同步调用机制可能导致阻塞,需谨慎设计槽函数。

2025-12-05 22:20:07 1215

原创 fmilib: 一个FMI 标准的 C 语言实现库

FMI(功能模型接口)是一种跨平台模型交换标准,其核心产物FMU文件包含模型二进制和XML描述。本文详细介绍了FMU文件结构、fmilib库的功能特性及使用方法,包括:1)FMU标准目录结构解析;2)fmilib库的安装与集成方法;3)提供完整的C语言示例代码,展示从加载FMU到执行仿真的全流程;4)给出汽车发动机冷却系统仿真实战案例,包含模块化代码、配置管理和结果输出。该文为开发者使用fmilib实现FMI标准集成提供了实用指南。

2025-12-04 21:39:02 1420 1

原创 嵌入式软件架构设计浅谈

本文系统阐述了嵌入式软件架构设计的核心原则与典型模式。针对不同硬件资源(8位/32位MCU)和业务复杂度,重点分析了五种主流架构:前后台架构(适合8位MCU简单系统)、时间片轮询架构(裸机多任务过渡方案)、RTOS多任务架构(32位MCU标准方案)、分层架构(中大型系统解耦方案)和事件驱动架构(交互密集型系统)。文章强调嵌入式架构设计必须遵循实时性优先、硬件适配等原则,在资源受限条件下平衡性能与可维护性。通过具体代码示例展示了各架构的实现要点,为开发者提供了从裸机到RTOS的完整架构演进路径。最终指出嵌入式

2025-12-02 22:49:47 1196 2

原创 Asio2: 一个基于 Boost.Asio 封装的高性能网络编程库

Asio2是基于Boost.Asio封装的第三方C++网络库,提供简化API并增强功能。支持TCP/UDP/HTTP/SSL等协议,内置断线重连、心跳检测等机制,兼容C++11及以上标准。通过VCPKG或CMake快速集成,提供模块化HTTP服务器实现方案,包含路由管理、静态文件处理等功能。相比原生Boost.Asio,Asio2具有更简洁的接口、更丰富的内置功能,同时保持跨平台特性(Windows/Linux/macOS),显著提升网络应用开发效率。典型应用包括高性能服务器开发、IoT通信等场景。

2025-11-29 22:15:46 1242 3

原创 Mimalloc:一款高性能、低开销和线程安全的C++内存分配器

mimalloc是微软开发的高性能内存分配器,具有低碎片、快速分配和线程安全等特点。采用隔离内存池和页级缓存设计,性能比glibc的ptmalloc2提升30%以上,碎片率降低20%-50%。支持Windows/Linux/macOS平台,可无缝替换标准malloc/new,并提供内存统计、泄漏检测等高级功能。集成方式灵活,可通过CMake或源码级集成,特别适合高性能服务器、Qt应用和内存密集型程序。使用时需注意避免混合分配器,并针对不同场景优化编译选项。

2025-11-29 13:57:34 833

原创 QT 中的元对象系统(八):数据类型的识别

Qt元类型系统是框架的核心基础设施,通过在运行时提供类型信息实现C++的动态特性。它支持信号槽机制的类型安全通信、QVariant的万能容器功能、动态属性系统和对象序列化。自定义类型需通过Q_DECLARE_METATYPE宏声明和qRegisterMetaType()函数注册,QObject派生类则通过Q_OBJECT宏自动注册。系统通过模板特化和原子操作确保线程安全,并严格检查类型兼容性。QVariant的canConvert()方法利用类型ID和注册的转换器实现灵活的类型转换。该系统弥补了C++在运行

2025-11-23 18:57:59 1000 3

原创 fmt: 一个高效易用的字符串格式化C++库

fmt是一个现代C++格式化库,提供类型安全、高效易用的字符串格式化功能。其特点包括:编译期类型检查、类似Python f-string的简洁语法(使用{}占位符)、优于iostream的性能、丰富的格式控制(对齐/进制/精度等)以及支持自定义类型格式化。可通过包管理器或源码安装,核心函数为fmt::format和fmt::print。作为C++20 std::format的前身,fmt支持更早的C++标准并广泛用于日志库spdlog中,是替代传统printf/iostream的理想选择。

2025-11-23 11:36:08 731 1

原创 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 1247 2

原创 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 1152 1

C++继承多接口,调用虚函数跳转到错误接口的虚函数的奇怪问题demo

C++继承多接口,调用虚函数跳转到错误接口的虚函数的奇怪问题,一个示例的dmeo

2024-04-11

浮点数与十六进制转换工具

 在 C/C++中,使用浮点方式存储实数,用两种数据类型来保存浮点数: foat(单精度)和double(双精度)。float在内存中占4字节,double在内存中占8字节。由于占用空间大,double可描述的精度更高。这两种数据类型在内存中同样以十六进制方式存铺,但写大类型有所不同。         整型类型是将十进制转换成二进制保存在内存中,以十六进制方式显示。浮点类型并不是将一个浮点小数直接转换成二进制数保存,而是将浮点小数转换成的二进制码重新编码,再进行存储。C/C++的浮点数是有符号的。         在C/C++中,将浮点数强制转换为整数时,不会采用数学上四舍五人的方式,而是食弃掉小数部分,不会进位。         浮点数的操作不会用到通用寄存器,而是会使用浮点协处理器的浮点寄存器,专门对浮点数进行运算处理。

2024-01-22

C++设计模式例程,工厂模式例子

C++设计模式例程,工厂模式例子,环境是VS2019打开即可运行 工厂模式也是平时我们编程用的比较多的一种行为设计模式,它提供了一种创建对象的最佳方式。工厂模式提供了一种创建对象的方式,而无需指定要创建的具体类。工厂模式属于创建型模式,它在创建对象时提供了一种封装机制,将实际创建对象的代码与使用代码分离。 作为一种创建类模式,在任何需要生成复杂对象的地方,都可以使用工厂方法模式。有一点需要注意的地方就是复杂对象适合使用工厂模式,而简单对象,特别是只需要通过 new 就可以完成创建的对象,无需使用工厂模式。如果使用工厂模式,就需要引入一个工厂类,会增加系统的复杂度。

2024-01-15

高质量 C++编程指南,编程的好书籍

前言......................................................................................................................................6 第 1 章 文件结构....................................................................................................................8 1.1 版权和版本的声明........................................................................................................8 1.2 头文件的结构 ....................................................................................................

2023-12-26

C++模板函数重载规则详解

模板函数重载匹配规则,他规定着,当我们调用一个具有多个重载的模板函数时,该选择哪个函数作为我们的调用对象。与普通函数的重载类似,但是模板属性会增加一些新的规则。 模板函数重载匹配规则可以引用《c++ primer》中的一段话来总结: 对于一个调用,其候选函数包括所有模板实参推断成功的函数模板实例。 候选的函数模板总是可行的,因为模板实参推断会排除任何不可行的模板。 与往常一样,可行函数(模板与非模板)按类型转换 (如果对此调用需要的话)来排序。当然,可以用于函数模板调用的类型转换是非常有限的。 与往常一样,如果恰有一个函数提供比任何其他函数都更好的匹配,则选择此函数。 但是,如果有多个函数提供同样好的匹配,则: 如果同样好的函数中只有一个是非模板函数,则选择此函数。 如果同样好的函数中没有非模板函数,而有多个函数模板,且其中一个模板比其他模板更特例化,则选择此模板。 否则,此调用有歧义。 看着有点不知所以然,我们一条条来看。这里我给整个过程分为三步: 第一步:模板函数重载匹配会将所有可行的重载列为候选函数。 ...

2023-12-26

sscom 串口调试工具

SSCOM串口调试助手是一款串口通讯软件,在这款软件中主要帮助用户在电脑中对串口进行管理和设置;软件能在任意串口中设置参数,并提供数据的接收、发送等操作,让用户能更加方便轻松的对其管理;软件界面简洁,可以通过十六进制的方式来进行数据转换,操作流程十分的方便,上手难度极低,十分好用。 软件特色 1、SSCOM还支持多种发送方式,如单次发送、循环发送、分段发送等; 2、能够满足不同需求场景的使用要求; 3、SSCOM的独立性较高,支持在没有Python等其他软件的环境下使用,更加方便了用户的使用操作。 软件优点 1、在使用SSCOM时,我们只需将串口设备连接到电脑上; 2、并在SSCOM中选择对应的串口号和通讯协议,设置好波特率等参数,即可开始使用; 3、在数据接收时,我们可以进行数据的实时监控和记录,并且支持数据的导出; 4、在数据发送时,我们可以通过简单的设置实现数据的快速发送和测试。

2023-12-20

NetAssist 网络调试工具

NetAssist,就是网络助手,可以模拟网络之间的通信,互相发送消息 网络调试助手是一款用于Android端网络调试的工具,支持TCP,UDP协议,支持机器自带的串口(可能需要root权限)支持多种网络端口的链接,让网络维修人员或者是个人能够更加简单的对网络进行深度的调试,从而让整个网络更加的符合用户在使用上面的需求,如果你需要的话这款自带中文的调试软件能够满足你的需求。 网络调试助手(NetAssist)软件功能 支持TCP Server,TCP Client, UDP 支持机器自带的串口 支持USB转串口 Esp Touch配网 以对话形式显示通信数据,支持同时建立多个连接 16进制格式数据发送

2023-12-20

基于C++CORBA高级编程

全书共22章,系统地介绍了CORBA的基本体系和概念,IDL语义和映射为C++的规则、POA和对象生命周期,CORBA机理和ORB,动态CORBA特性以及CORBA重要的服务程序。本书的独到之处在于它不仅介绍概念及资源,更重要的是讲述超越API的CORBA内部机制

2023-12-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除