自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ 进阶:从理论到手撕 Unordered 系列容器(哈希表)

以上就是对哈希相关内容的总结了,需要具体代码的可以查看我的gitee仓库:传送门。

2026-01-08 21:50:16 335

原创 QT中的常用控件 (三)

本文系统介绍了Qt框架中常用的输入类控件及其应用场景,包括QLineEdit、QTextEdit、QComboBox、QSpinBox、QDateTimeEdit、QDial和QSlider等。详细阐述了各控件的核心属性、信号机制和典型应用示例,如个人信息录入、输入验证、多行文本编辑、点餐系统实现、窗口属性控制等。通过具体demo演示了正则表达式验证、密码校验、日期计算、透明度调节等功能实现,展现了Qt输入控件丰富的功能和灵活的应用方式。

2026-01-08 09:12:50 446

原创 QT中的常用控件 (二)

本文介绍了Qt中常用的按钮类和显示类控件的使用方法。按钮类部分详细讲解了QPushButton、QRadioButton和QCheckBox的特性与实现,包括设置图标、快捷键、单选排他性等功能,并提供了多个实践案例。显示类控件部分重点介绍了QLabel(显示文本和图片)、QLCDNumber(数字显示)、QProgressBar(进度条)和QCalendar(日历)的核心属性和应用场景,通过具体示例展示了如何实现文本格式化、图片自适应、倒计时显示和日期选择等功能。

2026-01-05 11:54:40 736

原创 mysql -- 使用CAPI访问mysql服务器

摘要: 本文详细介绍了在 Ubuntu Linux 环境下使用 C++ 调用 MySQL C API 进行数据库开发的完整流程。文章从 libmysqlclient-dev 开发环境的搭建与编译链接(-lmysqlclient)开始,深入讲解了数据库连接的初始化与配置、SQL 语句的执行(mysql_query)以及防止中文乱码的字符集处理方案。在查询结果处理部分,重点分析了 MYSQL_RES 与 MYSQL_ROW 的结构,并从源码视角剖析.

2026-01-04 19:08:32 669

原创 数据结构 -- 常见的八大排序算法

排序算法是笔试面试的必考题。除了基础的递归实现,你是否掌握了快速排序的非递归写法?是否理解归并排序非递归版中的边界修正?本文用万字长文深度解析八大排序算法,拒绝简单的代码罗列,着重分析Hoare法划分逻辑、堆的向下调整以及计数排序的映射关系。包含完整的图解与性能分析,助你彻底吃透排序底层逻辑,从容应对大厂手撕代码环节。

2026-01-02 21:06:41 774

原创 QT中的常用控件(一)

摘要:本文介绍了Qt中控件的常用属性和相关API,重点讲解了QWidget的基础特性。主要内容包括:1)控件概述,Qt内置多种可直接使用的控件;2)QWidget的共性属性,如enable状态控制、geometry几何属性、windowframe计算方式等;3)窗口相关属性设置,包括标题、图标、透明度等;4)其他实用功能,如光标样式、字体设置、提示词和焦点策略。文章通过具体示例演示了属性修改的图形化界面和代码实现两种方式,并介绍了qrc资源管理机制的应用。这些基础属性是Qt界面开发的重要知识。

2025-12-29 12:18:22 575

原创 深入理解C++智能指针

智能指针的意义是什么?智能指针的出现是为了避免内存泄漏。内存泄漏一般由于程序员的疏忽或者发生了某些错误导致某些对象未能正确释放,那么这一段空间的内存就无法使用了。对于一个长期运行的软件的软件来说是灾难性的错误,它会导致系统可用的内存越来越少,系统越来越卡,最终导致软件崩溃卡死。那么内存泄漏这么严重,我们在写代码的时候自己注意一点不就好了吗?在异常机制出现以前确实可以,但是异常机制出现以后某些情况下抛出异常以后会导致对象无法释放。throw invalid_argument("除0错误");

2025-12-20 10:34:16 563

原创 深入理解QT之信号和槽

1)除了使用QT提供的槽函数,我们也可以自定义槽函数。这里在Widget类中定义了一个handleclick函数。编译运行点击按钮发出信号,widget窗口执行槽函数2)除此之外,还可以通过以下这种方法连接信号和槽:首先点击widget.ui文件,转到设计页面,然后创建一个按钮,右击此按钮,点击转到槽然后点击clicked信号接着系统会自动在widget.cpp中生成一个函数,其中的定义由我们自己填写然后运行编译点击按钮一样可以实现信号和槽的连接效果。

2025-12-19 17:13:27 815

原创 初识QT -- 第一个QT程序

本文介绍了QT框架的基本概念与应用。QT是一个跨平台的C++图形用户界面开发框架,支持可视化拖拽和代码编写两种开发方式。文章重点解析了QT的对象树模型机制,通过QObject父子关系实现内存自动回收,有效防止内存泄漏。同时详细说明了QT项目文件结构,包括widget.h、widget.cpp和widget.ui等核心文件的组成与作用。通过实例演示了按钮创建和对象树工作原理,展现了QT框架在GUI开发中的优势。掌握这些基础知识为后续复杂QT应用开发奠定了重要基础。

2025-12-18 17:01:28 1072

原创 MySQL 指南:全面掌握用户管理与权限控制

本文系统介绍了MySQL用户管理体系,包括用户创建、删除、密码修改和权限管理。重点讲解了如何通过专用SQL指令(而非直接操作user表)进行用户管理,详细说明了GRANT和REVOKE语句的权限控制方法。文章强调数据库安全原则:禁止使用root账户操作生产环境、限制访问IP、遵循最小权限原则。通过合理的用户权限分配,可以有效保障数据库安全,是开发者和DBA必须掌握的核心技能。

2025-12-18 00:20:01 952

原创 MySQL -- 深入剖析事务底层原理

事务是数据库中的一组逻辑操作单元,具有ACID四大特性:原子性(Atomicity)确保操作全部成功或全部失败;隔离性(Isolation)通过不同隔离级别防止并发问题;持久性(Durability)保证事务提交后数据永久保存;一致性(Consistency)确保数据合法性和业务逻辑正确性。MySQL中InnoDB引擎支持事务,可通过设置自动提交模式控制事务提交方式。事务隔离级别从低到高分为读未提交、读提交、可重复读和串行化,级别越高并发性能越低。MySQL默认采用可重复读隔离级别,通过间隙锁解决幻读问题。

2025-12-10 00:17:10 981

原创 深入理解 C++ 异常机制:从原理到工程实践

本文系统介绍了C++异常处理机制。相比C语言的错误码方式,C++异常通过throw/try/catch实现错误处理与业务逻辑分离,避免了返回值检查的繁琐。文章详细讲解了异常抛出与捕获规则、栈展开机制、异常安全等级(基本/强/无异常保证)及RAII原则。同时指出异常可能导致性能开销和代码膨胀的缺点,建议合理使用noexcept和自定义异常体系。异常处理是C++健壮编程的核心,正确运用能显著提升代码质量,但需注意区分常规错误与真正异常场景。

2025-12-06 13:04:17 980 1

原创 算法百练 ,直击OFFER -- DAY7

本文分享了四道数据结构与算法面试题的解法:1.最短无序连续子数组(双指针法):通过两次遍历找到无序子数组的左右边界。2.回文链表(快慢指针+链表反转):反转后半部分链表后与前半部分比较。3.每日温度(单调栈):维护递减栈寻找每个温度的下一个更高温度。4.接雨水(单调栈):通过递减栈寻找凹槽计算雨水容量。

2025-12-06 00:38:51 534 1

原创 C++11 现代特性精华总结:从原理到实战

本文系统介绍了C++11的核心特性,主要包括:列表初始化({}语法和initializer_list)、变量类型推导(auto/decltype)、范围for循环、final与override关键字、右值引用与移动语义(提升性能的关键)、可变参数模板、Lambda表达式以及包装器(function/bind)。重点剖析了移动语义如何通过资源转移减少深拷贝,以及完美转发保持参数属性的原理。

2025-12-04 17:04:25 647 1

原创 MySQL -- 索引

MySQL索引原理与应用解析 摘要: 本文深入探讨了MySQL索引的核心原理与实现机制。首先介绍了索引的基本概念及其在提升查询效率方面的优势,同时分析了索引带来的空间和时间代价。文章详细剖析了磁盘物理结构及其与MySQL的交互方式,重点解释了MySQL采用16KB页(Page)作为IO基本单位的设计考量。通过B+树数据结构的演变过程,阐述了InnoDB引擎如何利用聚簇索引高效组织数据,并对比了MyISAM的非聚簇索引实现方式。最后介绍了主键索引、唯一索引和普通索引的具体操作方式及其特性差异

2025-12-03 21:34:30 953

原创 【C++】面向对象之痛点与精髓:C++ 继承详解

本文系统介绍了C++中的继承机制,从基础概念到高级应用。主要内容包括:1)继承的基本语法和访问权限控制;2)基类与派生类对象转换的"切片"特性;3)继承中的作用域与成员隐藏;4)派生类默认成员函数的实现规则;5)复杂的菱形继承问题及其解决方案——虚继承。文章还对比了继承与组合的差异,建议优先使用组合降低耦合度。最后强调继承是C++的重要特性,但需谨慎使用。通过本文可以建立完整的C++继承知识体系,掌握面向对象设计中的代码复用技术。

2025-12-01 01:21:35 724 3

原创 【C++】深入理解多态:从用法到原理

本文系统讲解了C++多态的核心概念与应用。首先介绍了多态的定义及实现条件,重点分析了虚函数、虚函数重写及其两个例外情况(协变和析构函数重写)。接着探讨了抽象类与接口继承,深入剖析了多态的实现原理——虚函数表机制,比较了动态绑定与静态绑定的区别。文章还详细阐述了单继承和多继承中的虚函数表结构,并解答了继承和多态相关的常见面试问题。最后总结了多态在面向对象设计中的重要性,强调其实现了"接口与实现分离"的设计哲学,在代码可维护性和扩展性方面的优势。

2025-11-30 23:47:51 192 6

原创 【数据结构】红黑树详解:从原理到C++实现

本文介绍了红黑树的基本概念与实现原理。红黑树是一种二叉搜索树,通过颜色标记和旋转操作维持近似平衡。文章详细解析了红黑树的四大性质、节点定义(默认红色插入以减少调整代价)以及插入操作的处理逻辑,包括变色和旋转(单旋/双旋)两种情况。与AVL树相比,红黑树通过牺牲严格平衡性换取更高效的插入/删除性能,广泛应用于STL容器和操作系统内核中。文章最后指出,理解红黑树对掌握底层数据结构实现具有重要意义,并建议读者尝试实现删除操作或封装简易容器以加深理解。

2025-11-30 23:27:53 777 2

原创 专题四 -- 模拟

本文分享了三个算法题的解题思路与代码实现:1)替换字符串中的'?'为不重复字符的贪心策略;2)计算提莫攻击中毒总时长的遍历模拟方法;3)生成外观数列的双指针模拟解法。每个题目均包含详细的问题描述、核心算法思想、推理流程图和具体代码实现。文章采用技术博客风格,配有激励性前言和清晰目录结构,旨在为算法学习者提供可参考的解题范式,帮助掌握常见问题的解决技巧。

2025-11-29 23:57:31 579 3

原创 【数据结构】AVL树详解:从原理到C++实现

本文介绍了AVL树(平衡二叉搜索树)的基本概念和实现方法。AVL树通过平衡因子控制树高,保持左右子树高度差不超过1,确保查找效率为O(logN)。文章详细讲解了AVL树的节点定义、插入操作、四种旋转调整方法(左旋、右旋、左右双旋、右左双旋)以及验证方法。最后分析了AVL树的性能特点,指出其适合静态数据查询,但对频繁修改的数据结构效率较低。AVL树为后续红黑树等数据结构奠定了基础。

2025-11-29 22:23:57 1444 4

原创 算法百练,直击OFFER --DAY 6

本文讲解两道高频面试算法题:最小栈和Z字形变换。最小栈问题通过双栈设计实现O(1)时间获取最小值,使用主栈存储数据,辅助栈同步存储当前最小值。Z字形变换采用模拟法,通过行索引游标和方向标志位控制字符填充方向,最后拼接各行字符串。

2025-11-28 18:12:18 783 22

原创 算法百练,直击OFFER -- day5

本文分享了三个算法面试题的解法:1. 验证回文串II(字节跳动)使用碰撞双指针,当字符不匹配时尝试删除左/右字符验证剩余部分是否为回文;2. 最长回文串(谷歌/字节跳动)通过哈希表统计字符频率,利用贪心算法计算偶数对并处理中心位;3. 寻找重复数(彭博)将数组抽象为链表,应用快慢指针的Floyd判圈算法找到环入口即重复数。每个问题都提供了核心思路、流程图和具体代码实现,帮助读者掌握常见面试题的解法技巧。

2025-11-28 00:51:34 1296 16

原创 MySQL -- 复合查询

本文介绍了MySQL数据库查询操作,包括基本查询、多表查询、自连接和子查询等高级技巧。通过经典的scott_data雇员信息表案例,详细讲解了复合查询条件设置、分组聚合、排序操作等基础查询方法。在多表查询部分,演示了笛卡尔积过滤和表连接应用。特别讲解了自连接查询和子查询的多种用法,包括单行/多行子查询、多列子查询及在FROM子句中使用子查询作为临时表的技巧。文章还提供了部门统计、工资级别筛选等实用案例,适合数据库学习者提升SQL查询技能。

2025-11-26 22:56:29 1226 11

原创 MySQL -- 内置函数

本文介绍了MySQL中常用的日期、字符串、数学及其他函数的使用方法。日期函数部分讲解了获取当前时间、日期加减计算等操作;字符串函数包括字符集查询、字符串连接、大小写转换等;数学函数涵盖绝对值、进制转换、取整等运算;其他函数如用户查询、MD5加密等也有详细说明。每个函数都配有具体应用案例,帮助读者快速掌握函数用法。文章以励志语句开篇和结尾,鼓励读者坚持学习,适合MySQL初学者快速查阅常用函数。

2025-11-26 00:18:28 779 8

原创 每日一练,直击OFFER -- day4

本文介绍了两个二叉树相关的面试题解法。第一题是腾讯2023年开发的"二叉树的右视图",通过从右向左的层序遍历,输出每层第一个节点值。第二题是腾讯2022年开发的"N叉树的层序遍历",在二叉树层序遍历基础上处理不固定数量的子节点。两题都采用队列实现层序遍历,前者记录每层首节点,后者按层存储所有节点值。文章提供了详细的代码实现思路和关键步骤,适合准备算法面试的开发者参考学习。

2025-11-25 16:58:25 822 12

原创 每日一练,直击OFFER -- day3

本文介绍了两个基于位运算的算法题解:1. 在数组中找出唯一出现一次的数字(其他数字均出现三次),通过统计每位比特位总和并取模3来确定目标数字的比特位;2. 在1-N序列中找出缺失的两个数字,利用异或运算分组处理,通过比特位差异将数字分为两组分别异或求解。两个算法均实现了O(N)时间复杂度和O(1)空间复杂度,展示了位运算在解决特定问题中的高效性。

2025-11-23 21:09:07 737 3

原创 MySQL -- 基本查询

本文主要介绍MySQL数据库的基本操作,包括表的增删查改等核心功能。详细讲解了SELECT查询语句的使用方法,涵盖where条件筛选、结果排序、分页查询等操作。同时阐述了INSERT、UPDATE、DELETE语句的具体用法,以及主键冲突处理、批量插入等特殊场景。文章还介绍了聚合函数(COUNT、SUM、AVG等)的应用,通过学生成绩表的实例演示了各种查询技巧。内容包含大量SQL语法示例,适合MySQL初学者快速掌握数据库基本操作。

2025-11-22 14:06:23 1041 2

原创 专题三 -- 二分查找

本文系统讲解了二分查找算法及其变种应用。首先介绍了基础的二分查找模板,重点分析了循环条件、中间值计算和边界更新的关键点。随后详细解析了6个经典变种问题:查找目标值的起始和结束位置、搜索插入位置、平方根计算、寻找峰值元素、旋转数组最小值查找。每种变种都提供了清晰的算法思路、边界条件分析和优化后的代码实现。文章强调二分查找的核心在于利用数据的二段性,通过调整左右边界逼近目标值。所有算法均满足O(logn)时间复杂度要求,并针对不同场景给出了具体实现细节和注意事项,为读者提供了实用的二分查找解题框架。

2025-11-22 11:04:19 886 1

原创 MySQL -- 表的约束

本文介绍了MySQL中的表约束及其意义,包括空属性、默认值、列描述、zerofill、主键、自增长、唯一键和外键等约束类型。表约束通过数据类型和其他限制条件,确保数据的合法性、一致性和可靠性。主键用于唯一标识记录,自增长与主键搭配使用,唯一键保证业务字段不重复,外键则维护表间关系。这些约束共同作用,防止数据库变成"垃圾堆",从业务逻辑角度保证数据正确性,是数据库设计的根本基石。

2025-11-20 21:13:18 1092 1

原创 每日一练,直击OFFER -- day2

本文介绍了两个算法问题的递归解法:1.递归乘法:通过俄罗斯农夫算法实现两数相乘,利用位运算和递归分解,核心是保持A×B乘积不变的情况下不断分解问题;2.栈实现队列:使用两个栈(inStack和outStack)模拟队列操作,通过"懒倒"策略保证元素顺序,仅在需要出队且outStack为空时才整体转移元素。两种解法都体现了递归和数据结构转换的巧妙思想,展示了算法设计中问题分解和逻辑转换的重要性。

2025-11-20 17:51:32 975 2

原创 每日一练,直击OFFER -- day1

本文介绍了两个算法问题:合并区间和连续数组。合并区间通过排序后比较相邻区间的端点来合并重叠区间;连续数组通过将0转为-1并使用前缀和求最长连续子数组。解决思路包括区间端点比较和哈希表记录前缀和。

2025-11-19 23:38:21 1436 2

原创 C++ -- 二叉搜索树

本文介绍了二叉搜索树(BST)的基本概念和实现方法。BST是一种特殊的二叉树结构,其左子树节点值都小于根节点,右子树节点值都大于根节点。文章详细讲解了BST的模板实现,包括节点的查找、插入和删除操作,重点分析了删除节点时处理不同子节点情况的逻辑。此外还介绍了BST的两种应用模型(K模型和KV模型),以及它们的性能特点,最优情况下查找效率为O(logN),最差会退化为O(N)。最后指出AVL树和红黑树可以解决BST退化为单支树的问题,确保树高平衡。

2025-11-19 20:40:15 1123 3

原创 C++ -- list

摘要:list是STL中的双向链表容器,支持高效(O(1))的任意位置插入删除操作,但随机访问效率低(O(n))。其底层采用带头节点的双向循环链表结构,每个节点独立存储数据。list提供丰富的操作接口,包括迭代器、容量查询和元素操作等。与vector相比,list在频繁插入删除场景下性能更优,但空间利用率较低。使用时需注意迭代器失效问题:list删除时仅影响当前迭代器,而vector可能影响所有迭代器。选择容器时应根据具体需求(随机访问或插入删除性能)决定使用vector还是list。

2025-11-18 15:01:16 1053

原创 C++ -- stack和queue

本文介绍了三种容器适配器:stack、queue和priority_queue。stack实现后进先出(LIFO)操作,queue实现先进先出(FIFO)操作,priority_queue基于优先级排序(默认大堆)。它们都是通过封装底层容器(如deque、vector)实现的,提供特定接口来访问元素。文章详细说明了各容器的特性、底层要求、默认实现容器及适用场景,并给出了模拟代码实现。priority_queue特别适用于任务调度、数据排序和事件驱动模拟等场景。最后解释了容器适配器作为设计模式的本质,即通过封

2025-11-17 21:52:50 787

原创 C++ -- 模板

摘要:本文介绍了C++模板的基础和进阶应用。在模板初阶部分,讲解了函数模板的概念、格式和使用方法,通过加法函数示例展示模板如何解决函数重载的代码复用问题。在模板进阶部分,探讨了非类型模板参数、模板特化(全特化和偏特化)的技术,以及模板分离编译时的注意事项。文章重点阐述了模板实例化机制和参数匹配原则,指出模板声明和定义应放在同一文件中以避免链接错误。通过具体代码示例,说明了模板在泛型编程中的灵活性和强大功能。

2025-11-17 20:56:43 783

原创 专题二 -- 滑动窗口

初始化窗口:确定窗口的起始位置和初始大小,通常使用两个指针(如左指针和右指针)来标记窗口的边界。扩展窗口:移动右指针,将新元素纳入窗口,直到窗口满足问题的特定条件(如包含所有目标元素、达到特定大小等)。收缩窗口:一旦窗口满足条件,尝试移动左指针,尽可能缩小窗口,同时保持条件成立,以找到最优解(如最小长度、最大和等)。更新结果:在每次窗口满足条件时,记录当前窗口的状态(如长度、元素和等),并根据问题要求更新全局最优解。重复步骤:继续扩展和收缩窗口,直到右指针遍历完整个数组。

2025-11-17 13:03:48 1413 3

原创 MySQL -- 数据类型

本文介绍了MySQL的主要数据类型及其使用方法。MySQL数据类型可分为整型、小数类型、字符串类型、日期时间类型、枚举和集合等。整型包括tinyint、smallint等5种,各有不同存储范围;小数类型float和decimal需注意精度差异;字符串类型char和varchar在定长/变长存储上各有优劣;日期类型datetime和timestamp在存储方式上存在区别;enum和set分别实现单选和多选功能。文章通过具体创建表和插入数据的示例,详细演示了各类数据类型的使用场景、存储特性及注意事项。

2025-11-16 11:40:08 833

原创 专题1:双指针

本文介绍了双指针算法的两种主要形式:对撞指针和快慢指针,并通过多道力扣题目展示了其应用场景。对撞指针用于顺序结构(如盛水容器问题),而快慢指针适用于环形问题(如快乐数判断)和数组处理(如移动零)。文章详细解析了7个典型题目的解法思路,包括移动零、复写0、快乐数判断、盛水容器、有效三角形个数、两数之和及三数之和等问题。通过具体示例演示了如何运用双指针技巧优化暴力解法,提高算法效率(如将O(n²)降至O(n)),并总结了处理重复元素等边界条件的技巧。

2025-11-15 13:34:16 1025

原创 MySQL -- 库的操作

本文介绍了MySQL数据库的基本操作,主要包括:1)数据库创建语法,可通过CREATE DATABASE指定名称、字符集和校验规则;2)校验规则对数据查询的影响,区分大小写与否会导致不同查询结果;3)数据库操作命令如查看、修改和删除;4)数据库备份恢复方法,使用mysqldump工具导出数据。文中通过具体SQL示例演示了各项操作,并解释了相关参数选项的作用。

2025-11-14 14:17:18 601

原创 MySQL -- 数据库基础

数据库是用于存储和管理结构化数据的系统,相比文件存储具有安全性高、便于查询管理、支持海量数据等优势。主流数据库包括MySQL、Oracle等,其中MySQL采用客户端-服务器架构,通过SQL语言与存储引擎交互。SQL分为DDL(数据定义)、DML(数据操作)和DCL(数据控制)三类。MySQL支持多种存储引擎(如InnoDB、MyISAM),具有平台可移植性,通过数据库管理系统实现对数据的统一管理和安全控制。

2025-11-14 13:00:41 1063

空空如也

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

TA关注的人

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