- 博客(23)
- 收藏
- 关注
原创 C++循环队列设计——实现线程安全的生产者消费者模型
基于C++17,本文用ol::cqueue循环队列作缓冲区,外层加std::mutex和条件变量,封装成线程安全的BlockingQueue。它支持多生产者/多消费者、容量固定及安全关闭,通过等待队列非满/非空实现同步,避免忙等和异常状态破坏。
2026-09-07 09:58:31
205
原创 Qt6 替代废弃 QMediaPlaylist 的解决方案
本文介绍了Qt6中废弃QMediaPlaylist后的替代解决方案。作者基于实际项目需求,设计并实现了一个自定义的MediaPlaylist类,用于替代Qt5中的QMediaPlaylist功能。该方案主要解决了Qt6多媒体架构变更带来的兼容性问题,支持三种播放模式(单次播放、单曲循环、列表循环),自动监听播放状态实现无缝切歌,并提供简洁的接口以降低项目迁移成本。文章详细展示了头文件和源文件的完整实现代码,包括媒体资源管理、播放模式控制、播放器绑定等核心功能,为开发者提供了完整的Qt6播放列表解决方案。
2026-04-15 20:58:09
481
1
原创 Linux 命令备忘录
Linux常用命令备忘录,包含系统管理、文件操作、网络配置等核心功能: 系统管理 init 0 安全关机 reboot/init 6 重启 date 查看/设置系统时间 dmesg 查看内核日志 文件操作 pwd 显示当前目录 cd 切换目录 ls 列出目录内容 du/find 查找大文件 网络配置 firewall-cmd 管理防火墙端口 ssh 远程连接服务器 实用工具 clear 清屏 Ctrl+C 终止进程 bc 命令行计算器 常用组合命令示例: 磁盘分析:du -h --max-depth=1 |
2026-02-22 14:24:56
808
原创 CMake Memo(备忘录)
本文档是关于CMake的备忘录,主要包含两部分内容:1) 命令行命令的使用说明,重点介绍了cmake -G查看生成器、-S指定项目根目录、-B指定构建目录等常用参数;2) 参考了多位作者的教程资源,包括编程Cat加加的B站视频、爱编程的大丙的博客文章以及官方文档等。文档提供了CMake学习相关的多个优质资源链接,可作为CMake入门和进阶的参考指南。
2025-12-07 20:41:21
637
原创 Visual studio 2022高亮汇编(ASM)语法方法
本文介绍了在Visual Studio 2022中为ASM文件添加语法高亮的方法:首先下载并解压usertype.zip文件,将其复制到VS2022安装目录;然后在工具选项的文本编辑器设置中,将asm扩展名关联到Microsoft Visual C++编辑器;最后重启VS2022即可实现语法高亮。需要注意的是,由于C++不识别汇编语言的分号注释,建议在分号后添加双斜杠(;//)来使注释显示为绿色。
2025-11-25 11:26:09
659
原创 Doxygen入门指南:从注释到自动文档
摘要: Doxygen是一款支持多种编程语言的代码文档生成工具。本文介绍了Doxygen的安装方法(Windows/Linux/macOS)、基本注释规则(函数、类、文件头部的注释格式)以及常用标签速查表。详细说明通过图形化工具doxywizard或命令行生成文档的步骤,并提供了高级技巧如生成调用关系图、代码忽略和CMake集成。文章还解答了注释不生效、中文乱码等常见问题,并展示了基于开源OL库生成的文档示例,帮助开发者快速掌握Doxygen的使用方法。
2025-11-04 19:19:44
1114
原创 OL个人开发的C++跨平台工具库介绍
OL 是一款 C++ 工具库,涵盖高性能主从 Reactor 多线程网络通信(仅 Linux,需 epoll)、MySQL/Oracle 数据库交互及 FTP 客户端功能,核心组件含 ollib(基础工具 + Linux 网络库)、oldblib(数据库模块)、ol_ftp(FTP 客户端)。遵循 CC BY 4.0 协议(使用需署名),支持 C++17,基于 CMake 构建(可通过变量配置编译选项),提供完整 Doxygen 注释。数据库模块需对应客户端库。
2025-10-29 16:09:31
1108
原创 PowerShell 命令执行状态可视化:绿色圈成功、红色圈失败(VS Code 适用)
本文介绍了一种在PowerShell中实现命令执行状态可视化的方案,通过自定义prompt函数自动显示绿色圈(成功)或红色圈(失败)的状态标记。该方案兼容VS Code终端和不同PowerShell版本:新版支持ANSI颜色转义字符显示彩色圈,旧版则用"SUCCESS/ERROR"文本替代。文章详细解析了代码实现逻辑,包括命令清洗、ANSI颜色控制、状态标记管理等关键技术点,并提供了配置步骤和常见问题解决方法。该方案能有效解决手动输入$?判断结果的痛点,使命令执行状态一目了然。
2025-09-16 12:34:20
1200
1
原创 Git 备忘录
这篇文章详细介绍了Git版本控制工具的基本使用方法和常用命令。主要内容包括:Git初始化设置、仓库创建、工作区与暂存区的概念、文件添加提交与操作、查看状态与差异、撤销恢复操作、分支管理、远程仓库操作、临时存储(stash)以及标签管理等。文章特别强调了git reset的三种模式(--mixed、--hard、--soft)的区别,并提供了清晰的命令示例和解释。对于Git初学者来说,这是一份全面且实用的参考指南,涵盖了日常开发中最常用的Git操作。
2025-08-07 17:06:07
890
原创 揭秘侯捷STL源码中的“万能哈希函数”:从原理到实战
侯捷STL源码中的"万能哈希函数"通过hash_combine和hash_val组合,解决了C++中自定义类型的哈希计算难题。该方案利用黄金比例魔数0x9e3779b9优化哈希分布,通过模板递归处理任意数量和类型的参数,实现低冲突率的哈希组合。文章详细解析了其实现原理,并展示了如何为Customer类实现哈希函数,使其可用于unordered_set。该方法具有通用性强、冲突率低、易扩展等优势,是C++哈希技术的经典实践,建议作为基础工具封装复用。掌握这一技术能显著提升自定义类型在哈希容
2025-07-29 10:39:21
648
原创 关闭与开启笔记本电脑自带的键盘(Windows)
这篇文章提供了两个批处理文件,分别用于禁用和启用笔记本键盘。方法是将代码粘贴到.txt文件中,再改为.bat后缀运行。两个脚本都需要管理员权限,通过修改i8042prt服务配置实现功能变更,执行后需重启电脑生效。禁用脚本将服务设为disabled,启用脚本恢复为demand模式,操作成功会显示相应提示,3秒后自动关闭窗口。
2025-07-25 14:24:03
467
原创 VIM使用教学
本文是一篇VIM编辑器使用教程,主要介绍了VIM的三种模式及其常用操作命令。在正常模式下,详细讲解了光标移动、删除、撤销、复制粘贴、重复操作和注释等功能;编辑模式介绍了多种进入编辑的方式;命令模式则涵盖了保存退出、替换和查找等实用技巧。文章还提供了多种记忆技巧和可视化说明,帮助用户快速掌握VIM的基本操作。通过本文,读者可以系统学习VIM编辑器的核心功能,提高文本编辑效率。
2025-07-25 14:08:54
759
原创 PowerDesigner去掉Oracle生成的SQL语句中的双引号
PowerDesigner去除Oracle SQL引号的方法 在使用PowerDesigner导出Oracle建表SQL时,默认会为表名和字段名添加双引号,影响数据库操作。解决方法: 进入Database→Edit Current DBMS 导航至Script→Sql→Format→CaseSensitivityUsingQuote 将Value值改为"NO"即可禁用双引号 双引号与无引号的区别 大小写敏感:无引号时名称自动转大写;双引号保留原大小写 特殊字符:双引号允许使用SQL保留字
2025-07-18 16:25:33
271
原创 C++文件读取:getline的正确使用范式
本文深入分析了C++中std::getline函数的使用方法,通过6个测试用例和4种测试场景揭示了常见错误和正确实践。测试结果表明:直接使用eof()检查会导致最后一行重复读取,而while(getline(file,line))是最可靠的读取方式。在字符串拼接时,应先读取行再拼接,并注意处理首行换行符的特殊情况。文章提供了完整的测试代码,展示了如何正确处理文件末尾无换行符、首行为换行符等各种边界条件,为编写健壮的C++文件读取代码提供了实用指导。
2025-07-02 20:58:43
1251
原创 C++实现函数式编程的柯里化:优雅的参数分步处理
C++中的函数柯里化技术摘要 柯里化是将多参数函数转换为嵌套单参数函数的技术,具有参数复用、延迟执行和便于函数组合等优势。在C++中可通过lambda表达式实现柯里化,如构建三层嵌套lambda来逐步接收参数。相比std::bind的部分应用,柯里化保持纯函数式风格,必须顺序传递参数。现代C++建议优先使用类型安全的lambda实现,配合auto自动推导和C++17的通用柯里化模板。性能方面,lambda柯里化通常可获得更好的编译器优化,而std::bind存在运行时开销。实际开发应根据需求选择:函数式风格
2025-06-01 11:38:45
643
原创 写递归不崩栈!尾递归优化底层逻辑
尾递归是一种特殊的递归形式,其递归调用发生在函数的最后一步操作,使得编译器或解释器可以将其优化为等效的循环,从而避免栈溢出问题并提升性能。尾递归的关键特征包括递归调用是函数的最后一步操作,且不需要保留外层函数的上下文,直接复用当前栈帧。与普通递归相比,尾递归通过优化可以将栈空间复杂度从O(n)降低到O(1),彻底避免栈溢出风险。尾递归优化的条件包括递归调用必须严格位于函数末尾,且编译器或语言支持尾调用优化(TCO)。尾递归在算法优化、函数式编程和高性能计算中有广泛应用,但改写为尾递归可能降低代码可读性,且依
2025-05-21 10:23:25
413
原创 C++实现四种经典非线性方程数值解法(二分法,简单迭代法,牛顿法,弦截法)
本文介绍了四种经典的数值解法用于求解非线性方程,包括二分法、简单迭代法、牛顿迭代法和弦截法,并通过C++代码实现展示了这些方法的具体应用。二分法通过区间搜索保证绝对收敛,但速度较慢;简单迭代法实现简单但需满足压缩映射条件;牛顿迭代法收敛最快但需要导数信息;弦截法无需导数且具有超线性收敛速度。文章还通过实例测试了这些方法,并对比了它们的优缺点,最后给出了工程实践中的选择策略和参数调优建议。
2025-05-19 18:22:46
725
原创 C++:memcpy vs. memmove:性能与安全的博弈,浅谈POD类型
在C++中,memcpy和memmove都用于内存块的二进制复制,但它们在处理内存重叠时的行为有显著差异。memcpy假设源和目标内存块不重叠,若强行复制重叠区域,会导致数据被覆盖,结果不可预测。例如,将数组的一部分复制到其自身时,memcpy可能破坏原始数据。相比之下,memmove通过检查源和目标地址的相对位置,选择从前往后或从后向前复制,确保数据安全。memmove适用于内存可能重叠的场景,而memcpy仅适用于已知内存不重叠的情况,以追求更高性能。在处理POD类型时,两者均可使用,但内存重叠问题仍需
2025-05-14 22:57:19
911
原创 C++关于int与size_t比较的小陷阱
先让大家看一段代码大家首次看到肯定会觉得输出i < s,我也是,但其实会输出i >= s。这是因为C++进行了隐式类型转换,为了避免数据丢失,int类型会被提升为size_t类型。:当您在条件语句中比较int类型的k和size_t类型的s时,由于这两种类型不同,C++ 会执行一个隐式类型转换。:在这种情况下,C++ 会将int类型的k转换为size_t类型。这是因为size_t是无符号类型,而k是有符号类型,为了避免潜在的数据丢失,C++ 选择将有符号类型提升为无符号类型。
2025-03-22 17:07:36
628
原创 C++关于模板类实现Array时构造函数初始化问题
昨天我自己用模板类实现Array时,发现对于基本数据类型和类类型时,我自己实现的默认构造函数只能进行其中一个进行初始化,所以我就研究有没有即可以初始化基本数据类型,又可以初始化类类型,Array() {} //这样基本类型如int会初始化,但是string类不会调用默认构造函数,导致未定义行为造成乱码。小括号值初始化的语法是:数据类型(参数) //如果没有参数,int初始化为0,string为""。//不能int a() 这样编译器会认为是a是函数,而a()则调用函数。// 调用类型 T 的默认构造函数。
2025-02-21 13:03:53
2056
原创 虚幻5(UE5)源码编译下载指南
一文中的所述步骤,将GitHub账号与你的虚幻引擎账号关联。注意:磁盘需要200多G的内存。拥有Epic Games账号。源码构建下载虚幻引擎源代码。拥有GitHub账号。
2025-02-11 16:08:00
1633
原创 C++二叉树实现四则运算表达式计算(支持无限叠加括号,负数,小数,多位数字)
二叉树实现表达式计算有很多优点,首先它的先序遍历是前缀表达式(波兰表达式),中序遍历是中缀表达式,后序遍历是(逆波兰表达式),最后再进行计算的时候通过不同的遍历可以采用不同的算法。
2025-01-26 16:40:45
1912
3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅