自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 题解DFS递归 LeetCode 236. 二叉树的最近公共祖先

DFS深度优先搜索

2025-03-06 20:47:14 325

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

Visual studio 2022高亮汇编(ASM)语法文件压缩包

汇编(ASM)语法压缩包,记得解压。

2025-11-25

空空如也

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

TA关注的人

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