『 代码随想录 』 双指针 - 链表篇
   本文介绍了链表操作中的四种常见题型及解法: 合并两个有序链表:使用双指针遍历两个链表,按顺序合并到新链表中。 分隔链表:按特定值将链表分为两个子链表,再合并保留相对顺序。 合并K个有序链表:通过优先级队列(小根堆)高效合并多个链表。 删除倒数第N个节点:采用快慢指针定位目标节点进行删除。 每种解法均配有动画演示和代码实现,核心思路是通过哨兵节点简化操作,利用双指针或堆结构优化处理逻辑。
算法   双指针   链表   |  2026-03-23   0 评论   144 浏览

我在 GitHub 上的开源项目
   Github Stats 所有开源项目 仓库 项目简介 Stars fork 编程语言 cherryings.github.io 0 0 HTML JsonRpc 0 0 Makefile Start-1- 0 0
开源   GitHub   |  2026-03-17   0 评论   119 浏览

『 ProtocolBuffer 』初识ProtocolBuffer
   ProtoBuf是Google开发的一种高效、跨平台的序列化数据格式,相比XML/JSON具有更小的体积和更快的编解码速度。它通过二进制流传输数据,安全性更高,并强制使用.proto文件定义数据结构以达成通信协议。ProtoBuf支持标量数据类型(如int32、string等),采用变长编码优化存储空间,并允许向后兼容更新。通过protoc工具可将.proto文件编译为多种语言的代码,生成包含字段处理、序列化/反序列化方法的类结构。其编号机制(1-15优先) ......
Protobuf   |  2026-03-17   0 评论   100 浏览

『 代码随想录 』KMP算法
   KMP算法本质上是用来找一个字符串中, 其子串所出现的频率; **假设一个字符串为 **ABACBAACBACA 需要找子串 BACB所出现的次数; 其中此处我们能看到的最终结果: **子串出现的次数为: **1 这就是KMP算法所解决的问题;
算法   cpp   |  2026-03-10   0 评论   178 浏览

『 代码随想录 』TopK问题 - 快速选择
   快速选择的思路, 本质上是一种减分治的思路; 排序方式本质上是通过对一组无序的数据进行有序化, 在将数组有序化后, 其中len-k的位置即为TopK; 而快速排序本质上就是通过分治的思路, 将问题化为子问题, 最终达到有序状态; 以简单的双指针单次快排思路为例;
算法   |  2026-03-09   0 评论   98 浏览

『MySQL - 进阶』存储过程(上):核心概念、变量体系与流程控制
   本文是 MySQL 进阶系列的存储过程篇(上),旨在帮助开发者深入理解并掌握数据库端的编程能力。文章首先通过类比 C/C++ 函数的直观方式,剖析了存储过程“一次编译、多次执行”的核心概念,阐述了其在提升性能、降低网络 IO 及增强安全性方面的显著优势。随后,文章系统讲解了存储过程的定义与调用语法,并详细拆解了 MySQL 中的变量体系(系统变量、用户自定义变量、局部变量)及其作用域差异。最后,重点演示了 SQL 编程中的核心流程控制,包括 IF/CASE ......
MySQL   |  2025-12-04   0 评论   309 浏览

『QT』事件处理机制详解 (一)
   本文深入探讨了 Qt 框架中的事件处理(Event Handling)机制,重点解析了从 Qt 5 到 Qt 6 的演变及实际应用。首先,阐明了“事件”作为细粒度输入与“信号”的区别,并指出自定义控件通常采取“继承基类 + 重写虚函数”的模式(如 mouseMoveEvent、wheelEvent)。其次,针对 Qt 6 环境,强调了 delta() 接口的移除,明确应使用 angleDelta().y() 获取垂直滚动增量。最后,结合具体代码实例,展示了如 ......
Qt   cpp   |  2025-12-02   0 评论   229 浏览

『QT』窗口 - 深入剖析 QDialog 对话框机制与内存管理
   本文深入解析了 Qt 框架中对话框(QDialog)的开发技术及其在 GUI 交互中的应用。文章首先介绍了对话框的基本概念,演示了通过纯代码与 UI 设计器两种方式创建自定义弹窗的流程。核心部分重点探讨了 Qt 对象树机制下的内存管理陷阱,通过实验验证了窗口关闭时的资源释放问题,并详细讲解了利用 Qt::WA_DeleteOnClose 属性防止内存泄漏的最佳实践。此外,文章对比了模态(exec)与非模态(show)对话框的运行机制,并系统梳理了 Qt 提供 ......
Qt   cpp   |  2025-12-01   0 评论   205 浏览

『QT』窗口 (一)
   本文介绍了Qt中QMainWindow窗口的基本布局和菜单栏(Menu Bar)的创建与使用方法。主要内容包括: QMainWindow窗口布局结构,包含标题栏、菜单栏、工具栏、浮动窗口、状态栏和中心部件。 菜单栏的三种创建方式: 使用new手动创建 调用QMainWindow的menuBar()函数 使用Qt Designer可视化创建 菜单操作: 使用addMenu()添加菜单 使用addAction()添加菜单项 使用addMenu()添加子菜单 使用 ......
Qt   cpp   |  2025-11-30   0 评论   158 浏览

『MySQL』C++ MySQL C-API 开发入门
   本文详细介绍了在 Linux 环境下,如何使用 C++ (C-API) 连接并操作 MySQL 数据库。文章涵盖了从环境配置、CMake 编译、数据库连接,到执行增删改查(CRUD)及处理查询结果集的完整流程。同时,针对中文乱码和内存管理等常见问题提供了解决方案,并附带完整的代码示例,适合 C++ 开发者快速上手数据库开发。
MySQL   cpp   |  2025-11-30   0 评论   141 浏览

『QT』布局管理器 (二)
   本文介绍了Qt中的两种布局方式:QFormLayout表单布局和QSpacerItem空白控件。QFormLayout适用于表单样式的N行2列布局,通过示例演示了创建标签和输入框并添加提交按钮的过程。QSpacerItem用于在布局中创建空白区域,通过水平布局中添加两个按钮和间隔条的实例,展示了其宽度、高度等属性的应用。两种方法都能有效优化Qt界面布局设计。
Qt   cpp   |  2025-11-27   0 评论   193 浏览

『MySQL』用户管理
   本文介绍了MySQL中的用户管理机制,主要包括用户信息的存储方式、创建与删除用户、修改密码以及权限管理等内容。MySQL用户信息存储在mysql.user表中,通过CREATE USER和DROP USER语句可以方便地创建和删除用户。修改密码可使用ALTER USER语句,而修改用户名和登录主机则使用RENAME USER。新创建的用户权限较低,需要通过GRANT语句赋予特定权限,如SELECT、INSERT等操作权限。文章还演示了如何查看用户权限和撤销权 ......
MySQL   |  2025-11-26   0 评论   313 浏览

『MySQL』视图
   本文介绍了MySQL中视图的概念与使用。视图是一种虚拟表,基于查询结果创建,能够与原表数据双向同步。文章详细讲解了视图的创建、修改和删除操作,并通过示例展示了视图与原表的数据映射关系。同时总结了视图的6个使用限制,包括命名唯一性、性能考量、索引限制、访问权限等注意事项。视图作为一种临时表,既能简化查询又能提高数据安全性,但使用时需遵循相关规则。
MySQL   |  2025-11-26   0 评论   186 浏览

『QT』布局管理器
   本文介绍了Qt中的三种布局管理器:垂直布局(QVBoxLayout)、水平布局(QHBoxLayout)和网格布局(QGridLayout)。垂直布局将控件按垂直方向排列,水平布局按水平方向排列,网格布局则以表格形式(M×N)组织控件。每种布局管理器都支持设置边距和间距等属性。文章重点说明了布局管理器的使用方法和注意事项,包括如何通过代码添加控件、一个Widget中只能有一个有效布局管理器等问题。通过布局管理器可以更高效地实现控件的自动排列和窗口大小调整时的 ......
Qt   cpp   |  2025-11-25   0 评论   260 浏览

『QT』容器类控件
   本文介绍了Qt中的QGroupBox控件及其应用。QGroupBox是一个带有标题的分组框,可用于将其他控件分组以优化布局和界面美观。文章对比了QGroupBox与QButtonGroup的区别,详细说明了QGroupBox的核心属性(如title、alignment、flat、checkable等)。通过一个点餐系统的代码示例,展示了如何使用QGroupBox进行分组布局,包括初始化控件、设计辅助函数、实时更新显示内容等功能。示例中还演示了checkabl ......
Qt   cpp   |  2025-11-25   0 评论   210 浏览