自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Re:Linux系统篇(十)工具篇 · 二:Vim 编辑器深度解析:从基础模式到高效配置

本文介绍了Linux下的高效文本编辑器Vim的基础使用与核心技巧。主要内容包括: Vim多模式操作:命令模式、插入模式、底行模式等切换与功能; 高效编辑快捷键:光标移动、复制粘贴、撤销重做、批量注释等; 底行模式指令:文件跳转、查找替换、保存退出等实用命令; 特色功能:可视块模式批量编辑、分屏操作等进阶技巧。 通过掌握这些核心操作,可以显著提升Linux环境下的文本编辑效率。文章还配有详细图示和实用场景说明,适合初学者快速上手Vim这一强大工具。

2026-05-12 10:04:57 314 36

原创 Re:Linux系统篇(九)工具篇 · 一:3分钟学会yum,让软件安装像呼吸一样简单

Linux开发工具入门:yum包管理器详解 本文介绍了Linux环境下三种软件安装方式的优缺点,重点讲解了yum包管理器的优势和使用方法。主要内容包括: 三种安装方式对比: 源码安装:灵活但编译门槛高、过程繁琐 软件包安装:简化编译但存在依赖问题 包管理器(yum/apt):自动解决依赖、网络化安装、全局共享 yum的核心优势: 全自动解决依赖关系 网络化获取与安装 系统级共享安装 完善的软件生命周期管理 yum基本使用: 安装:yum install <包名> 卸载:yum remove &l

2026-05-12 10:04:24 188 47

原创 Re:思考·重建·记录 现代C++ C++11篇(六) 从 shared_ptr 到 weak_ptr:起底智能指针的引用计数与循环引用之痛

本文介绍了现代C++中智能指针的设计原理与应用。首先通过一个内存泄漏的例子引出智能指针的必要性,分析了传统手动管理资源的缺陷。然后详细讲解了RAII(资源获取即初始化)设计思想,即通过对象生命周期自动管理资源释放。接着以自定义SmartPtr类为例,展示了智能指针如何封装资源并重载运算符来模拟指针行为。文章还回顾了C++标准库中智能指针的历史演进,重点讨论了auto_ptr的拷贝问题及其解决方案。最后对比了不同智能指针在处理资源所有权和循环引用问题上的特点,为读者提供了全面的智能指针技术解析。

2026-05-06 09:41:52 1270 58

原创 Re:从零开始的 C++ STL篇(十二)深度解析哈希函数设计、负载因子调节与两种冲突处理策略

本文深入解析了哈希表的核心原理与应用。首先介绍了直接定址法作为最简单的哈希实现,并通过计数排序案例展示其优势与局限。随后重点探讨了哈希冲突问题,提出两种解决路径:优化哈希函数设计和完善冲突处理机制。在哈希函数设计部分,详细剖析了除法散列法的数学原理,比较了不同M取值对性能的影响,包括教科书推荐的素数取法和Java HashMap采用的2次幂优化方案。文章通过丰富的代码示例和图示说明,帮助读者理解哈希表底层逻辑,为后续学习开放定址法和链地址法等冲突解决方案奠定基础。全文兼顾理论深度与实践价值,是掌握哈希表这一

2026-05-05 10:07:53 1521 74

原创 Re:Linux系统篇(八)权限篇 ·三:深度解析从 umask 位运算到粘滞位的“权力锁”

本文深入解析Linux权限管理机制,重点探讨缺省权限与粘滞位的原理与应用。首先详细讲解umask掩码的作用机制,通过二进制位运算揭示文件/目录初始权限的计算逻辑(最终权限=起始权限 & ~umask)。针对共享目录的安全需求,重点分析粘滞位(Sticky Bit)的设计哲学,说明其如何实现"防误删不防协作"的权限管控。文章包含大量实操案例,涵盖临时/永久修改umask的方法,并通过权限位运算演示帮助读者深入理解Linux权限系统的精妙设计。

2026-05-02 12:58:00 691 21

原创 Re:Linux系统篇(七)权限篇 · 二:文件属性&&文件权限与两类修改方式精讲

本文系统介绍了Linux中的权限管理机制,重点解析了文件权限的三大核心要素:角色(Owner/Group/Other)、权限类型(r/w/x)及其控制逻辑。通过腾讯工作室协作的生动案例,阐述了权限分配的实际意义与所属组的设计哲学。文章详细讲解了chmod命令的两种使用方式(符号模式与数字模式),并配以完整的权限数值对照表,帮助读者深入理解Linux权限体系的运行原理与应用场景。最后通过实际操作演示了如何修改文件权限,为Linux系统管理提供了实用的技术参考。

2026-04-29 15:34:07 678 20

原创 Re:思考·重建·记录 现代C++ C++11篇 (五) 万能容器:std::function 如何终结 C++ 回调接口的混乱?

本文介绍了C++11中的包装器std::function和std::bind。std::function是一个类模板,可以包装存储各种可调用对象(函数指针、仿函数、lambda表达式等),统一了它们的类型。文章详细讲解了function的基本用法,包括包装全局函数、仿函数和lambda表达式,重点讨论了成员函数包装的特殊性,指出成员函数必须显式取地址且需要考虑this指针的问题。最后强调function的真正价值在于统一不同类型可调用对象的接口,提高代码的可维护性和易用性。全文通过具体代码示例展示了func

2026-04-28 09:23:15 757 16

原创 Re:思考·重建·记录 现代C++ C++11篇 (四)C++ Lambda 全解析:编译器是如何为你生成仿函数的?

摘要 本文主要介绍了现代C++中的Lambda表达式及其应用。文章首先回顾了仿函数和函数对象的概念,然后详细讲解了Lambda表达式的语法结构,包括捕捉列表、参数列表、返回值类型和函数体等组成部分。重点分析了捕捉列表的三种捕捉方式:显式传值/传引用捕捉、隐式捕捉以及混合捕捉,并指出了使用时的注意事项。 文章通过实际代码示例展示了Lambda表达式在排序场景中的优势,相比传统仿函数更简洁直观。作者还探讨了Lambda表达式的本质——编译器生成的匿名仿函数类,以及其在多线程编程和智能指针等场景中的应用价值。最后

2026-04-27 12:50:11 2163 77

原创 Re:Linux系统篇(六)权限篇 · 一:用户切换与进程嵌套&&sudo提权与sudoers设置精讲

本文系统介绍了Linux权限管理的核心概念,重点解析了用户切换指令su/su-的区别及底层原理。主要内容包括: 用户切换指令详解 su仅切换身份但保留原用户环境 su-完全切换用户及环境变量 普通用户切换需密码,root切换无需密码 权限的本质 权限是控制用户行为的限制规定 主要限制普通用户而非root 进程切换原理 通过fork()系统调用创建子进程 父子进程形成层级关系 Ctrl+D实质是终止子进程而非"退回" 权限验证机制 目录权限直接影响用户操作能力 家目录与根目录权限差异明显

2026-04-26 14:50:59 565 20

原创 Re:从零开始的 C++ 进阶篇(四)工业级 C++ 编程:如何构建异常安全的健壮系统?(含案例分析)

C++异常处理机制解析 本文深入探讨了C++异常处理机制的核心原理和工程实践。异常处理通过抛出对象实现错误通信,将问题检测与解决过程分离。异常抛出后,程序会沿着调用链查找匹配的catch子句(栈展开),未捕获则终止程序。关键点包括: 抛出异常会生成对象拷贝,就近匹配catch类型 异常抛出后到捕获前的代码全部失效,但栈帧会正常销毁 异常安全需要配合RAII机制防止资源泄漏 main函数应使用catch(...)作为未知异常的兜底处理 异常机制是C++健壮性设计的重要部分,正确理解其底层原理才能避免资源泄露等

2026-04-24 11:00:27 1231 25

原创 Re:Linux系统篇(五)指令篇 ·四:shell外壳程序及其工作原理

本文通过生动比喻解析Linux Shell的工作原理:小王(用户)想与小花(内核)互动,但需通过王婆(Shell)中转。王婆负责翻译请求(解析指令)、传递结果(系统调用),并通过创建子进程(fork())隔离风险——即使任务失败(如403权限拒绝),主Shell仍稳定运行。文章用幽默故事揭示Shell作为命令行解释器的核心功能:保护内核安全、管理进程隔离,并处理返回状态码(0成功/非0错误)。最终强调Shell是用户与Linux内核间不可或缺的"翻译官"与"防火墙"。

2026-04-23 11:07:09 414 8

原创 Re:Linux系统篇(四)指令篇 · 三:两套打包压缩重要指令方法+剩余指令收尾

本文介绍了Linux系统中两种经典的打包压缩方法:zip和tar。zip常用于跨平台压缩,支持加密和递归压缩目录;而tar则是Linux默认的归档工具,常与gzip结合生成.tgz文件。文章详细讲解了zip和tar的常用选项及典型应用场景,如备份、网络传输等,并提供了多种实用示例,包括加密压缩、增量备份、解压到指定目录等高级用法。通过对比打包与压缩的概念,帮助读者理解两者的区别与联系,掌握高效管理文件的技巧。

2026-04-22 17:19:13 702 9

原创 Re:Linux系统篇(三)指令篇 · 二:十二个高频指令精讲+重定向操作+“一切皆文件“深入理解

本文介绍了Linux中常用的打印指令(printf/echo)和重定向操作,详细讲解了输出/输入/追加重定向的使用方法。同时介绍了Linux万能手册man指令的9个章节内容及查询方式。此外还讲解了文件复制指令cp的基本用法和常用选项,包括递归复制目录等功能。文章通过具体代码示例展示了各指令的实际操作,帮助读者掌握Linux基础命令的使用技巧。

2026-04-21 07:20:18 833 16

原创 Re:Linux系统篇(二)指令篇 · 一:基础六大指令精讲+Linux操作技巧——让你从小白到入门

本文介绍了Linux基础指令的使用方法,包括pwd、ls和mkdir指令。pwd用于查看当前工作目录;ls用于列出目录内容,支持-a、-l等选项显示隐藏文件和详细信息;mkdir用于创建新目录。文章还讲解了Linux文件结构的多叉树特性,以及文件属性的查看方法。通过具体示例演示了各指令的用法,帮助读者快速掌握Linux基本操作。

2026-04-20 15:36:50 600 24

原创 Re:Linux系统篇(一)从浅谈操作系统历史背景到安装部署云服务器

Linux操作系统入门指南:从历史到实践 本文系统介绍了Linux操作系统的发展历程与应用实践。首先回顾计算机发展史,从埃尼阿克到摩尔定律驱动的PC革命,引出Unix系统的诞生及其对Linux的影响。重点解析Linux作为开源操作系统的优势:安全性、稳定性和企业级应用价值,对比闭源系统的差异。文章提供Linux版本选择建议(Ubuntu/CentOS)和源码查看方式,并详细指导环境搭建方案,推荐学生使用云服务器(如腾讯云)配合Xshell工具进行学习。最后给出Linux内核官网和云服务器购买渠道,为初学者构

2026-04-19 15:29:14 672 28

原创 Re:思考·重建·记录 现代C++ C++11篇 (三) 深度解构:可变参数模板、类功能演进与 STL 的新版图

摘要: 本文是C++11可变参数模板的深度解析,重点探讨了可变参数模板的概念、用法及其在简化代码中的优势。文章从C语言的printf函数引入可变参数概念,详细介绍了模板参数包和函数参数包的定义方式,并通过sizeof...操作符演示参数包大小的获取。核心部分通过递归函数展开参数包的实例,解析了编译时递归实例化的原理,强调了终止函数设计的重要性。此外,还分析了参数包在函数调用中的扩展场景,展示了可变参数模板的灵活性。最后总结指出,可变参数模板本质上是"模板中的模板",能大幅减少重复代码,提

2026-04-13 07:06:54 2001 94

原创 Re:Hexo博客入门「想搭个人博客?这篇零基础小白也能学会的精修教程请收好」

这是一份详细的Hexo博客搭建教程,旨在手把手指导用户从零开始创建属于自己的个人博客。教程涵盖了搭建博客的完整流程,包括环境准备(如安装Node.js、Git)、Hexo框架的基本操作、主题配置(如Next或Butterfly主题)、以及如何部署到GitHub Pages或Vercel等平台。同时,教程还会介绍如何绑定自定义域名、配置评论系统、图床设置等进阶功能,帮助用户打造一个功能完善、外观精美的个人博客空间。无论你是编程新手还是希望重新拾起博客写作的用户,这份教程都能为你提供清晰易懂的操作指引。

2026-04-12 11:46:09 571 29

原创 Re:思考·重建·记录 现代C++ C++11篇 (二) 右值引用与移动语义&引用折叠与完美转发

本文摘要: 本文深入探讨了C++11引入的右值引用与移动语义特性。首先扩展了左值/右值的概念,指出左值可寻址而右值不可寻址的核心区别。随后详细解析了左值引用和右值引用的语法规则及其交叉引用时的特殊处理方式(const左值引用可绑定右值,move可将左值转为右值引用)。重点阐述了右值引用的两大关键特性:允许修改临时对象和延长对象生命周期。最后引出移动语义的概念,说明其在解决深拷贝性能问题中的重要意义,为后续深入研究移动语义的实现机制奠定基础。全文通过大量代码示例和底层分析,清晰展示了现代C++在资源管理方面的

2026-04-07 09:20:29 2104 45

原创 Re:思考·重建·记录 现代C++ C++11篇 (一) 列表初始化&Initializer_List

本文介绍了C++11中引入的列表初始化和initializer_list特性。文章首先回顾了C++98中的传统初始化方式,随后详细讲解了C++11统一初始化方式的实现,包括内置类型和自定义类型的支持。重点分析了initializer_list的定义、三种写法及其底层实现原理,指出它作为只读数组轻量引用视图的特性。通过代码示例展示了列表初始化在实际编程中的应用优势,特别是在容器初始化时的便利性。最后探讨了initializer_list与模板参数推导的关系,以及编译器对其的特殊处理方式。这些特性使C++11的

2026-04-06 12:59:58 1080 31

原创 Re:从零开始的 C++ STL篇(十一)map/set使用精讲:常见问题与典型用法(下)

摘要 本文介绍了C++中map和set两种关联式容器的基本使用。主要内容包括: map容器原型:详细解析了map的模板参数声明,包括键值类型、比较函数和内存分配器,并指出map底层采用红黑树实现,具有O(logN)的查询效率。 pair类补充:说明map使用pair结构存储键值对,介绍了pair的基本结构和make_pair工具函数。 map接口介绍: 构造函数:无参构造、迭代器区间构造、拷贝构造和初始化列表构造 迭代器:支持正向和反向迭代,遍历时按键升序排列 增删查接口:插入pair的四种方法、删除和查找

2026-04-02 21:35:04 577 23

原创 Re:从零开始的 C++ STL篇(十)map/set使用精讲:常见问题与典型用法(上)

本文介绍了C++ STL中的关联式容器set和map,重点分析了set容器的基本特性、接口实现及使用场景。set作为基于红黑树实现的关联容器,具有O(logN)的增删查效率,支持有序遍历。文章详细讲解了set的构造函数、迭代器、插入、查找、计数和删除等核心接口,并通过代码示例展示其实际应用。与序列式容器不同,关联式容器通过关键字保存和访问元素,适合需要高效查找的场景。本文为理解和使用set/map容器提供了实用指南,特别适合需要处理有序数据的开发者参考。

2026-03-31 08:59:03 868 24

原创 Re:从零开始的 C++ STL篇(九)AVL树太“较真”,红黑树更“现实”:一文讲透工程中的平衡之道

本文围绕红黑树插入操作的调整过程展开,重点分析在插入新节点后可能出现的三类典型情况:叔节点为红的变色情况,以及叔节点为黑时对应的单旋与双旋调整。通过对不同结构(直线型与折线型)的分类讨论,结合黑高变化与红红冲突的消除过程,逐步推导出各类操作的必要性与正确性。同时,引入抽象子树模型,对不同黑高(bh)下的情况进行统一描述,从本质上解释红黑树能够在保证平衡的同时维持较高性能的原因。本文不仅关注操作步骤,更强调背后的结构变化与性质维持,帮助读者从“会用”走向“理解”。

2026-03-31 08:33:23 944 18

原创 算法实战论01(双指针篇一):双指针的核心思想与应用场景总结

双指针算法实战解析 双指针算法是解决数组和链表问题的有效技巧,主要包括对撞指针和快慢指针两种形式。本文通过两个实战案例详细讲解双指针的应用: 移动零问题: 使用双指针将数组分为零和非零两部分 定义cur指针遍历数组,dest指针标记非零元素末尾 通过交换操作实现零元素后移 时间复杂度O(n),空间复杂度O(1) 复写零问题: 先模拟异地操作确定指针初始位置 再从后向前进行本地复写操作 处理边界情况如数组末尾溢出 时间复杂度O(n),空间复杂度O(1) 这两个案例展示了双指针在数组分块问题中的典型应用,通过指

2026-03-28 13:49:32 502 25

原创 Re:从零开始的 C++ STL篇(八)深度解构AVL树自平衡机制:平衡维护与旋转调整背后的严密逻辑

AVL树:自平衡二叉搜索树的核心原理 本文深入解析AVL树的核心概念与实现方法。AVL树是最早的自平衡二叉搜索树,通过平衡因子控制高度差(不超过1),确保操作效率维持在O(logN)。文章详细介绍了: AVL树的基本概念和平衡因子定义 三叉链结构设计及其必要性 插入操作的三个关键步骤: 按二叉搜索树规则插入 更新平衡因子(右子树高-左子树高) 根据平衡因子变化进行旋转调整 平衡因子更新的三种情况及其处理逻辑 旋转操作的类型与触发条件 文章通过图解和代码示例(C++实现)展示了AVL树如何通过高度平衡机制提升

2026-03-25 07:27:03 1720 38

原创 Re:从零开始的 C++ 进阶篇(三)彻底搞懂 C++ 多态:虚函数、虚表与动态绑定的底层原理

摘要:本文系统解析C++多态机制的底层原理,重点探讨运行时多态的实现方式。通过虚函数和重写机制,结合基类指针/引用的动态绑定特性,实现同一行为在不同对象上的差异化表现。文章详细讲解虚函数重写的"三同"原则(函数名、参数列表、返回值相同),并通过经典面试题演示多态调用时的参数传递规则,揭示虚函数表在动态绑定中的关键作用。最后通过"买瓜"案例生动展示多态在实际编程中的应用场景,帮助读者深入理解这一面向对象编程的核心特性。

2026-03-19 20:17:03 1101 83

原创 Re:从零开始的 C++ STL篇(七)二叉搜索树增删查操作系统讲解(含代码)+key/key-value场景联合分析

本文介绍了二叉搜索树(BST)的概念、性能分析及基本操作实现。二叉搜索树是一种特殊的二叉树结构,通过左子树小于根节点、右子树大于根节点的性质实现高效搜索。文章详细讲解了BST的查找、插入原理,并分析了最优(O(log N))和最差(O(N))情况下的性能差异。此外,还对比了BST与二分查找的优劣,指出BST在动态数据操作上的优势。最后给出了C++实现框架,包括节点类和功能类的基本结构。文章强调平衡二叉搜索树(如AVL树和红黑树)对解决BST退化问题的重要性,为后续学习奠定基础。

2026-03-16 12:42:17 1520 35

原创 Re:从零开始的 C++ 进阶篇(二)C++继承到底做了什么?从对象模型到底层内存布局彻底讲透

本文系统解析了C++继承机制的核心原理与应用。首先介绍了继承的基本概念,通过Person、Student和Teacher类的案例展示了代码复用优势。详细讲解了继承的三种方式(public/protected/private)及其访问权限规则,强调基类private成员在派生类中不可见的特点。文章还探讨了模板继承中的适配器实现方式,分析了按需实例化导致的依赖成员访问问题。最后深入解析了父子类对象的赋值兼容转换(切片)机制,通过图示说明public继承下子类对象向父类赋值的底层原理。全文从语法到内存模型层层深入

2026-03-10 06:59:10 1948 19

原创 哈希表里的“垃圾元素”,为什么有时必须删除?

摘要: 本文探讨了哈希表中"垃圾元素"(value=0的键值对)的处理策略。作者指出,当算法依赖哈希表结构(如map1==map2或map.size()判断)时,必须通过if(mp[key]==0) mp.erase(key)清理垃圾元素,否则会导致逻辑错误(如例题LCR015)。反之,若算法仅依赖频率数值比较(如mp[a]<=mp[b]),则可不清理(如例题30)。文章通过力扣例题对比两种场景,总结出"结构依赖必清,数值依赖可留"的实战原则,帮助优化滑动窗口+

2026-03-06 16:03:51 491 9

原创 Re:从零开始的 C++ 进阶篇(一)超全的模板进阶详解:非类型模板参数、模板特化、与模板的分离编译

本文深入探讨了C++模板的高级应用,主要包括非类型模板参数、模板特化和分离编译三大主题。首先介绍了非类型模板参数的概念及其与宏定义的对比优势,详细说明了其只支持整型参数的限制和使用注意事项。其次,重点讲解了函数模板和类模板的特化机制,包括全特化与偏特化的实现方式及其调用规则,并指出了函数模板不能偏特化的原因。最后,分析了模板分离编译失败的根本原因,提出将声明和定义放在同一文件的解决方案。文章通过丰富的代码示例和原理分析,为读者呈现了C++模板编程的进阶知识。

2026-02-26 10:39:56 964 9

原创 Re:从零开始的 C++ STL篇(六)一篇文章彻底掌握C++stack&queue&deque&priority_queue

本文系统讲解了C++中stack、queue和deque的底层实现原理。首先介绍了容器适配器的概念,说明stack和queue是基于其他容器实现的适配器。重点剖析了deque的双端队列结构,详细解释其底层由buffer数组、中控数组和迭代器三大组件构成的工作原理,分析其头尾插入和随机访问的实现机制。通过对比vector和list,说明deque作为stack和queue默认容器的优势。最后介绍了优先级队列(堆)的实现,并讲解了仿函数在比较操作中的应用。文章由浅入深,从适配器设计模式到具体容器实现,为理解ST

2026-02-15 19:27:38 1482 8

原创 Re:从零开始的 C++ STL篇(五)一篇文章彻底掌握C++list

本文详细讲解了C++ STL中list容器的特性与实现。文章首先介绍了list作为带头双向循环链表的特点,包括常数时间的插入删除操作和迭代器类型限制。重点分析了list与vector在排序效率上的差异及优化方案。随后通过手写list实现,深入探讨了节点类、迭代器类的设计思路,包括operator重载、const迭代器实现等关键技术。文章还涉及list的构造方式、迭代器失效问题以及C++11新增的初始化列表构造等特性。最后简要提及模板的按需实例化机制,为后续内容埋下伏笔。

2026-02-10 09:42:17 902 8

原创 Re:从零开始的 C++ STL篇(四)一篇文章彻底掌握C++vector

本文系统讲解了C++中vector容器的使用方法和底层实现原理。主要内容包括:vector的基本概念与接口使用,与string的区别;vector的特殊构造方式如初始化列表;vector的扩容机制和迭代器失效问题;二维vector的使用方法;vector源码解析,包括成员变量、构造函数和push_back实现;以及迭代器失效的原因和解决方案。文章通过代码示例和图示详细说明了vector的内部工作机制,并提供了实际应用场景如杨辉三角的实现建议。最后还分享了关于构造函数、容器初始化和编译器匹配原则等实用知识点。

2026-02-09 11:02:42 820 9

原创 你真的懂快速排序吗?从底层机制到工业级优化一次讲透——快速排序六大方法的深度剖析

本文详细介绍了快速排序算法的多种实现方法及其优化策略。主要内容包括:1. 经典霍尔法的核心思想和代码实现,重点分析了单趟排序的细节处理;2. 时间复杂度分析及常见优化方法(三数取中、小区间优化);3. 其他实现方法(挖坑法、前后指针法)及其特点;4. 非递归实现思路;5. 现代优化技术(三路划分处理重复数据、自省排序防止退化)。文章强调快速排序在面试中的重要性,提供了完整的代码示例和性能优化方案,适合算法学习者深入理解快速排序的原理与应用。

2026-02-01 14:13:22 1299 76

原创 你以为你会排序?六大经典排序的真正底层逻辑(上)

本系列文章系统梳理经典排序算法的思想演进链路与结构本质,而非停留在代码实现层面。内容从最基础的交换类排序出发,逐步过渡到插入思想、增量分组优化,再进入选择策略与堆结构,完整展现排序算法从局部有序构造 → 全局有序建立 → 结构化优化的技术脉络。文章覆盖:冒泡排序 —— 交换驱动的最朴素有序化模型直接插入排序 —— 局部有序区扩张机制希尔排序 ——插入思想的工程级加速方案直接选择排序 —— 确定性选择策略堆排序 —— 选择思想的结构化极致形态

2026-01-30 11:32:59 1003 10

原创 Re:从零开始的 C++ STL篇(三)string的疑难问题详细解析:深拷贝,写时拷贝,三个swap

摘要:本文深入探讨C++ string类的底层实现与优化技术。重点分析了深拷贝的两种实现方式(传统写法和现代写法),对比了三种swap方法(通用模板、成员函数和特化版本)的性能差异。文章还介绍了引用计数与写时拷贝技术,比较了VS和g++下string的不同内存结构。最后讨论了常用转换接口和构造函数实现的注意事项,帮助开发者更深入理解string类的实现原理和优化技巧。

2026-01-24 18:21:42 702 6

原创 Re:从零开始的 C++ STL篇(二)万字干货!全站最全的std::string 全面解析与硬核指南(下)

摘要:本文详细讲解了C++中string类的常用接口操作,包括数据增加(operator+=、append、insert)、修改(assign、replace)、删除(erase、pop_back)等功能,并提供了接口原型说明和测试代码示例。文章还介绍了查找(find)、比较运算符重载、swap交换等操作,最后提及substr、getline等实用功能。作者指出部分接口(如append)存在更优替代方案,并提醒注意操作效率问题。

2026-01-22 17:38:12 649 3

原创 Re:从零开始的 C++ STL篇(一)万字干货!全站最全的std::string 全面解析与硬核指南(上)

C++ 标准库中的 std::string 是处理文本数据不可或缺的核心组件。本文旨在提供一份全面而深入的学习指南,带领读者从 string 的基本概念出发,逐步掌握其精髓。文章首先阐述了 string 的定义、作用以及所需包含的 <string> 头文件,并借助图表直观展示其内部可能的结构。紧接着,探讨了字符串编码(特别是 UTF-8)与 string 存储的关系,帮助理解字符是如何被表示和存储的。核心部分围绕 string 的常用功能展开:对象管理: 详述了构造、拷贝构造、赋值 (operator

2026-01-20 18:38:46 1606 3

原创 Re:从零开始的 C++ 入門篇(十二)<过渡章节>模板初阶与STL简单介绍

《C++模板与STL入门指南》是一篇介绍C++模板编程和STL基础知识的博客文章。文章首先阐述了泛型编程的概念及其在C++中的实现方式,重点讲解了函数模板和类模板的定义、分类、格式及实例化过程。通过swap函数等具体示例,详细说明了模板的使用方法和注意事项。第二部分简要介绍了STL(标准模板库)的背景、主要版本和六大组件构成,为后续深入学习STL打下基础。文章采用循序渐进的方式,从模板基础到STL框架,帮助读者理解C++这一重要特性,适合准备进入STL学习的C++开发者阅读参考。

2026-01-15 09:02:44 758 10

原创 Re:从零开始的 C++ 入門篇(十一):全站最全面的C/C++内存管理的底层剖析与硬核指南

《C/C++内存管理深度解析》摘要 本文系统讲解了C/C++内存管理机制。C语言部分详细介绍了malloc、calloc、realloc和free的使用方法及常见错误。C++部分重点分析了new/delete操作符,包括其底层实现原理(operator new/delete)、自定义类型的构造/析构调用机制,以及内存分配失败的异常处理。文章通过汇编代码展示了底层调用过程,对比了malloc/free与new/delete的区别,并探讨了混用情况下的潜在问题。最后简要介绍了placement new技术。全文

2026-01-14 08:47:11 2840 54

原创 Re:从零开始的 C++ 入門篇(十)类和对象·最终篇下:类型转换、static成员、友元、匿名对象、内部类、拷贝编译优化

本文是一篇关于C++中类与对象高级特性的系统性总结文章,涵盖了类型转换、static成员、友元、内部类、匿名对象以及编译器在拷贝过程中的优化机制等核心概念。文章结构清晰,内容详实,旨在帮助读者全面掌握类和对象的进阶知识,并深入理解编译器在底层所做的优化。

2026-01-07 21:46:06 2868 63

空空如也

空空如也

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

TA关注的人

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