自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux进程万字详解(六)|手写Shell命令解释器:从进程控制到用户交互的完整实现

本文基于前五篇Linux进程管理知识,手把手实现一个简易Shell命令解释器。深入讲解Shell的REPL架构、内建命令与外部命令的本质区别,详解fork创建子进程、execvp程序替换、waitpid进程等待的协作流程。通过cd、echo等内建命令的实现,揭示为什么某些命令必须在当前进程执行;通过环境变量的独立管理,展示进程地址空间与页表映射的实际应用。文章将进程创建、终止、等待、替换、虚拟地址空间等理论知识融会贯通,形成完整的进程控制认知闭环,并给出重定向、管道、后台执行等扩展方向。

2026-11-06 21:02:22 288

原创 Linux进程万字详解(五) | 进程控制全解析:创建、终止、等待与程序替换

本文系统讲解 Linux 进程控制的四大核心机制:进程创建、进程终止、进程等待与进程程序替换。深入剖析 fork 的写时拷贝原理,揭示内核通过页表权限陷阱实现延迟拷贝的精妙设计;解读进程退出码的位图结构与 errno 错误码体系,区分 exit 与 _exit 的缓冲区差异;详解 wait/waitpid 的状态位图解析与 WIFEXITED/WEXITSTATUS 宏封装,对比阻塞等待与非阻塞轮询的实现模式;完整梳理 execl/execv/execvp/execve 等六种 exec 系列函数的参数风格

2026-11-03 22:24:13 288

原创 Linux进程万字详解(四) | 进程地址空间深度剖析:虚拟内存、页表映射与缺页中断

本文深入剖析 Linux 进程地址空间的核心机制,从一段 C 程序打印内存地址的实验出发,直观展示代码段、数据段、堆栈区的布局规律;通过父子进程共享同一虚拟地址却存储不同数据的奇妙现象,证明虚拟地址与物理地址的分离本质;深入内核源码解读 mm_struct 与 vm_area_struct 的数据结构设计,详解页表映射、写时拷贝、缺页中断的实现原理;揭示虚拟地址空间将物理内存无序变为有序、保护内存安全、解耦进程管理与内存管理三大核心意义;最后探讨延迟分配、进程挂起、vm_area_struct 链表与红黑树

2026-10-25 21:50:54 322

原创 Linux环境变量万字详解 | 从命令行参数到进程继承,PATH、environ与内建命令的底层原理

本文系统讲解Linux环境变量的核心机制,从命令行参数的切分原理切入,深入剖析Bash内部三张表(命令行参数表、环境变量表、本地变量表)的存储结构。通过PATH环境变量揭示系统命令查找的底层逻辑,详解env/export/unset等操作的实现原理。重点讲解三种代码获取环境变量的方法:main函数第三个参数、getenv系统调用与environ全局变量,并基于USER环境变量实现访问控制的实战案例。最后探讨环境变量的全局继承性、写时拷贝机制,以及export作为内建命令的特殊性,帮助读者建立完整的Linux

2026-10-22 14:46:00 75

原创 Linux进程万字详解(三)| 进程优先级、上下文切换与大O(1)调度算法深度剖析

本文深入剖析 Linux 进程管理的三大核心机制:优先级、切换与调度。从食堂排队的现实类比出发,揭示 PRI/NI 双变量设计的底层考量;通过"大学生保留学籍"的生动故事,图解 CPU 寄存器上下文保存与恢复的全过程;最终深入 Linux 内核 runqueue 结构体,拆解 bitmap 位图、双队列轮转与大 O(1) 调度算法的工程实现。文章涵盖 ps/top/nice/renice 实战操作、TSS 任务状态段、current 全局指针、多 CPU 负载均衡等关键技术点,从硬件原理到内核源码,建立完整

2026-10-15 16:48:02 348

原创 Linux进程万字详解(二)|进程状态深度剖析:调度队列、内核链表、D状态设计哲学、僵尸孤儿进程与Slab机制

本文深入剖析 Linux 六大进程状态(R/S/D/T/t/X/Z)的底层实现与极端场景。从调度队列、设备等待队列到 swap 交换分区的换入换出,揭示 PCB 流动的数据结构本质;解读内核 list_head 链表设计,理解 task_struct 如何同时隶属多个数据结构;深度讲解 D 状态(磁盘休眠)的设计背景——为何操作系统无权杀掉深度睡眠进程,以及高 IO 场景下的数据保护机制;通过父子进程实验验证僵尸进程的内存泄漏危害、孤儿进程的 1 号进程领养机制;最后拓展 Slab 分配器优化 PCB 复用

2026-10-13 14:06:26 363

原创 Linux进程万字详解(一)|冯诺依曼体系结构、OS底层原理、进程控制块、进程基本概念与基本操作

本文系统讲解 Linux 进程管理的核心基础,从计算机底层体系结构出发,深入剖析冯·诺依曼体系结构的数据流动本质,揭示操作系统"先描述再组织"的管理哲学。文章涵盖进程控制块(PCB/task_struct)的完整属性解析、进程查看的多种方式(ps/proc)、父子进程关系溯源,以及通过 fork 系统调用创建子进程的底层原理与写时拷贝机制。配合大量终端实操示例与 C/C++ 代码演示,帮助读者建立从硬件到软件、从理论到实践的完整认知框架,为后续进程状态、进程调度、进程间通信等进阶内容打下坚实基础。

2026-10-11 14:47:11 316

原创 Linux 基础开发工具万字详解 | vim/gcc/make/gdb工具链搭建,附底层原理与实战案例

本文系统讲解Linux下C/C++开发的核心工具链,涵盖软件包管理(yum/apt)、编辑器Vim、编译器gcc/g++、自动化构建工具make/Makefile、进度条程序实现、版本控制Git以及调试器gdb/cgdb的使用。从基础概念到实战操作,配合大量代码示例和命令输出,帮助读者快速搭建完整的Linux开发环境,掌握从编码到调试的全流程开发技能。

2026-10-03 23:21:05 247

原创 Linux权限管理万字详解|用户体系、角色属性与多用户协作,结合底层原理剖析

本文系统讲解 Linux 权限体系的完整知识链。从超级用户与普通用户的区别出发,深入剖析 su、sudo 等提权机制;建立"权限 = 角色 + 目标属性"的核心理论框架,详解拥有者、所属组、Other 三种角色与读、写、执行三种属性的结合方式;通过 chmod、chown、chgrp 等命令实现权限与归属的实战修改;深入目录权限、umask 默认权限、粘滞位等进阶机制;最终落实到多用户文件级协作的最佳实践,帮助读者构建完整的 Linux 权限管理知识体系。

2026-09-06 23:32:04 832 1

原创 Git 完全指南(五):企业级开发模型

本文是《Git 完全指南》系列第五篇,系统讲解企业级 Git 开发模型。从软件工程演进出发,介绍 DevOps 文化与多环境部署体系,深入剖析 Git Flow 分支设计模型(master、develop、feature、release、hotfix)的职责与规范。通过 Gitee 企业版实操演示,展示新需求开发、测试环境 Bug 修复、预发布环境验证、正式环境紧急修复等完整工作流。帮助读者理解企业级代码管理的标准化流程,为团队协作和项目管理提供专业指导。

2026-09-04 17:44:57 211 1

原创 Git 完全指南(四):多人协作与冲突解决

本文是《Git 完全指南》系列第四篇,深入讲解多人协作的两种核心模式:同一分支协作与不同分支协作。通过 Linux + Windows 双环境模拟真实开发场景,涵盖远程分支创建、本地分支与远程分支关联、推送冲突处理、合并冲突解决、功能分支开发流程等实战技巧。进一步介绍远程分支清理、Pull Request 工作流等企业级协作规范,帮助读者掌握团队开发的核心技能。

2026-09-04 15:39:05 572

原创 Git 完全指南(三):远程仓库与标签管理

本文是《Git 完全指南》系列第三篇,系统讲解 Git 远程操作与标签管理。从分布式版本控制的核心思想出发,涵盖 Gitee 远程仓库创建、HTTPS/SSH 克隆、推送与拉取操作、.gitignore 文件配置、命令别名设置等完整流程。进一步深入标签(Tag)管理机制,包括创建、查看、推送、删除标签的实战技巧,帮助读者建立从本地到远程的完整 Git 工作流。

2026-09-03 11:05:02 362

原创 Git 完全指南(二):分支管理

本文是《Git 完全指南》系列第二篇,深入讲解 Git 分支管理的核心机制与实战技巧。从分支的底层原理出发,涵盖创建、切换、合并、删除等基础操作,详解 Fast-forward 与非 Fast-forward 合并模式的差异,以及合并冲突的解决方法。进一步探讨企业级分支策略、Bug 分支的 git stash 工作流、强制删除等高级场景,帮助读者建立规范的分支管理思维,为团队协作打下坚实基础。

2026-09-02 15:28:41 1080

原创 每日算法精讲 Day 5 | leetcode 209. 长度最小的子数组、leetcode 3. 无重复字符的最长子串、leetcode 1004. 最大连续1的个数 III

本文以三道 LeetCode 经典题目(209. 长度最小的子数组、3. 无重复字符的最长子串、1004. 最大连续1的个数 III)为载体,系统讲解了滑动窗口(双指针)算法的核心思想与应用技巧。文章从"正数数组的单调性"切入,逐步过渡到"哈希判重"与"状态标记转化约束",由浅入深地展示了滑动窗口在子数组/子串最值问题中的通用解题框架。每道题均包含完整的题目分析、逻辑推导、代码实现及复杂度分析,最终总结出滑动窗口的关键要点:识别单调性、定义合法性条件、保证指针单向移动。

2026-09-01 21:11:21 159

原创 Git 完全指南(一):本地仓库基础操作

本文从零开始系统讲解 Git 版本控制工具,涵盖安装配置、本地仓库创建、工作区/暂存区/版本库核心概念、文件添加与修改、版本回退、撤销修改、删除文件等完整操作流。通过大量命令行实例和原理剖析,帮助读者建立对 Git 工作机制的深入理解,为团队协作和项目管理打下坚实基础。

2026-09-01 19:32:09 725 1

原创 每日算法精讲 Day 4 | Leetcode LCR 179. 查找总价格为目标值的两个商品 和 Leetcode 15. 三数之和 和 Leetcode 18.四数之和

本文讲解"排序+双指针"解决"和为目标值"类问题:两数之和(LCR 179)直接左右指针夹逼,O(N)/O(1);三数之和(15)固定一个数后双指针找两数,用 set 或指针去重;四数之和(18)固定两个数再双指针,纯指针去重,O(N³)/O(1)。核心是"降维+去重",由浅入深层层嵌套,写码注意边界与去重细节。

2026-08-29 23:15:39 201

原创 每日算法精讲 Day 3(双指针基础) | 移动零 复写零 与 LeetCode 202. 快乐数 与 LeetCode 11.盛最多水的容器 与 LeetCode 611 有效三角形的个数

双指针算法是面试中的高频考点,本文精选 LeetCode 5 道经典题目,从入门到进阶带你彻底掌握:283. 移动零 — 同向双指针,快排分区思想原地交换1089. 复写零 — 逆向双指针,避免覆盖先找边界202. 快乐数 — 快慢指针判环,Floyd 循环检测11. 盛最多水的容器 — 对向双指针,贪心移动短板611. 有效三角形的个数 — 排序+双向指针,O(N²) 优雅降维每道题均包含思路图解 + AC 代码 + 复杂度分析,全文 O(1) 空间复杂度解法,助你面试秒杀双指针题型!

2026-08-28 15:35:32 202

原创 Linux 基础常用指令万字详解(下)|一切皆文件:重定向、管道、日志 与 Shell 原理

本文系统梳理 Linux 常用指令,涵盖 Shell 原理、文件操作(mv、cat、head/tail)、重定向与管道、文本过滤(grep、find)、打包压缩(zip、tar)、系统信息查询(uname、date)等核心内容。从"一切皆文件"的底层理念切入,深入讲解重定向、管道的实现机制,并结合大量终端实操示例,帮助读者建立完整的 Linux 命令行知识体系。

2026-08-28 12:03:47 689

原创 每日算法精讲 Day 2 | BITKY120 单词识别 与 LeetCode 53. 最大子数组和 与 LeetCode 152. 乘积最大子数组 与 LeetCode 918. 环形子数组的最大和

本文解析了四道子数组相关题目:1. 牛客「单词识别」:字符串处理题,通过map统计词频后自定义排序输出;2. LeetCode53.最大子数组和:Kadane算法模板题,用动态规划或滚动变量求连续子数组最大和;3. LeetCode152.乘积最大子数组:需同时维护最大/最小乘积状态,处理负数相乘变正的特殊情况;4. LeetCode918.环形子数组最大和:拆解为不跨环(直接Kadane)和跨环(总和减最小子数组)两种情况。四题均实现O(n)时间优化,其中53、152、918题可优化至O(1)空间。子数组

2026-08-25 19:01:34 229 1

原创 每日算法精讲 Day 1 | 双指针、摩尔投票、滚动数组:三道题搞懂数组原地操作

LeetCode 26.删除有序数组中的重复项、LeetCode 17.电话号码的字母组合及牛客「数组中出现次数超过一半的数字」精讲。本文详解双指针、摩尔投票与滚动数组三大核心算法,提供完整 C++ AC 代码及时间复杂度、空间复杂度分析。从基础思路到最优解法,帮你建立数组原地操作的解题框架。适合算法面试与秋招春招复习,代码模板可直接复用。关注我,每日更新高频算法题精讲,陪你系统提升编程能力。

2026-08-24 21:13:04 152

原创 C++11 智能指针与 RAII 万字详解 | 从异常安全到 shared_ptr 控制块与循环引用,深度拆解现代 C++ 内存管理 Ownership 语义【现代 C++ 深度解析】

C++11 智能指针是现代 C++ 资源管理的基石。本文从"异常导致内存泄漏"这一原始痛点出发,系统讲解 RAII 设计思想,逐层拆解 auto_ptr、unique_ptr、shared_ptr、weak_ptr 的 Ownership 语义与演进逻辑。文章包含大量代码对比与手写模拟实现,深入剖析引用计数的堆分配设计、shared_ptr 删除器的类型擦除原理、控制块(Control Block)内存模型、循环引用的形成与破局、以及 shared_ptr 的线程安全边界。无论你是刚接触智能指针的初学者,还

2026-08-24 00:04:07 995 3

原创 C++ 异常机制万字详解 | 从 throw/catch 到 noexcept,深度剖析栈展开与异常安全

异常是 C++ 错误处理的核心机制。本文从 throw、try、catch 基础语法出发,深入讲解调用链与栈展开过程、异常对象的存储与传递、派生类向基类的赋值兼容转换;结合多模块异常体系实战演示异常 + 多态的工程用法;并覆盖异常重新抛出、异常安全三种保证等级、noexcept 规范与移动语义优化,以及 std::exception 标准库继承体系。万字长文,系统梳理 C++ 异常机制全貌。

2026-08-22 18:40:54 539 8

原创 C++11 可变参数模板与 Lambda 万字详解 | 从 emplace 到 function/bind,深度拆解现代 C++ 工程实践【C++11 新特性 · 下篇】

C++11 新特性万字详解(下篇)| 系统拆解可变参数模板、Lambda 表达式、function/bind 包装器、emplace 原地构造与 default/delete。从编译期参数包展开到匿名闭包底层原理,从手撕 list 到 LeetCode 逆波兰表达式实战,覆盖面试高频考点与工程落地细节。上篇吃透右值引用与移动语义,下篇补齐现代 C++ 工程主线,两篇独立成文亦可搭配阅读,完整构建你的 C++11 知识体系。

2026-08-21 19:53:32 444 4

原创 C++11 右值引用与移动语义万字详解 | 从列表初始化到完美转发,深度剖析现代 C++ 性能革命【C++11 新特性 · 上篇】

C++11是现代C++的分水岭。本文从C++98的语法痛点出发,系统讲解C++11三大核心机制:列表初始化如何统一 {} 语法并规避窄化转换;右值引用与移动语义如何将深拷贝的 O(n) 代价降为指针交换的 O(1);引用折叠与完美转发又如何消除左值/右值重载的代码冗余。全文采用(问题→机制→落地)的推导逻辑:先对比拷贝与移动的性能差异,再剖析return str;走移动构造的底层原因(将亡值/implicit move),最后通过手写带完美转发的list实现知识闭环。包含大量VS编译器优化对比,

2026-08-19 21:43:49 781 4

原创 C++ STL unordered系列(哈希) 底层剖析与模拟实现万字详解 | 基于哈希表,复刻 SGI-STL 泛型哈希容器架构

C++11 提供的 unordered_map 与 unordered_set 无序容器被广泛用于高频查找场景,但多数开发者仅会调用接口,并不了解其底层哈希表的设计原理与 STL 分层架构。本文溯源 SGI-STL 原版哈希容器源码,从底层框架设计、键萃取机制、哈希仿函数、相等谓词解耦逐层剖析,通过迭代式重构,从耦合硬编码版本逐步演进为通用型哈希表。完整手写实现支持迭代器遍历、素数扩容、元素增删查、map 下标访问等核心功能,完美对标标准库设计思想,帮助读者彻底吃透 STL 无序容器底层原理与模板仿函数架构

2026-08-17 13:55:53 559 4

原创 C++ 高阶数据结构:哈希表万字详解 | 哈希冲突、负载因子、扩容机制、链地址法与开放定址法实现【STL unordered系列底层】

哈希表是 C++ 后端面试高频数据结构考点。本文讲解哈希函数、哈希冲突、负载因子、扩容机制,对比链地址法与开放定址法两种冲突解决方案,剖析 SGI STL unordered_map 素数扩容、Java HashMap 扰动算法底层差异,使用 C++ 从零实现哈希表,理清工业级哈希容器核心设计思路。

2026-08-15 20:02:30 743 3

原创 C++ STL 无序容器详解:unordered_map和unordered_set|set/map 与 unordered系列 性能对比与场景选型

C++11 新增了 unordered_set、unordered_map 等基于哈希表的无序 STL 容器,与 set、map 等红黑树有序容器接口高度一致,初学者极易混淆选错。本文详细对比两套容器的 Key 约束、迭代器特性、遍历顺序、时间复杂度差异,搭配百万级数据性能测试直观对比效率差距,讲解哈希冲突性能退化、不支持区间查找等核心踩坑点,总结开发中的容器选型策略,帮助大家彻底分清有序容器与无序容器的适用场景。

2026-08-13 10:58:32 229 2

原创 C++ STL map 与 set 底层剖析与模拟实现万字详解|基于红黑树,复刻 SGI-STL 泛型复用架构

本文基于前文红黑树基础,不再重复讲解红黑树底层算法,重点剖析 SGI-STL 中 set 与 map 的底层架构设计。通过研读 STL 原生源码,讲解 STL 如何依靠泛型 + KeyOfT 键值提取仿函数实现一套红黑树复用支撑两套容器的核心思想,并循序渐进完成从耦合红黑树到通用型红黑树的改造,最终模拟实现出具备插入、查找、中序迭代、map 下标访问等核心功能的 set、map 容器。同时深入解析红黑树迭代器正反遍历原理、end 空节点实现方案、set 只读与 map 键不可修改的底层约束,完整还原 STL

2026-08-12 23:04:55 555

原创 C++ 高阶数据结构:红黑树万字详解|完整原理推导 + 插入实现 + 完整性校验【STL 底层】

红黑树是 C++ STL 中 map 与 set 的底层数据结构,属于弱平衡二叉搜索树,依靠颜色规则保证最长路径不超过最短路径 2 倍。本文详细讲解红黑树五大规则、黑高推导、与 AVL 树性能对比,分析插入的三大修复场景:变色、单旋变色、双旋变色。使用 C++ 模板从零实现红黑树节点结构、插入、旋转、查找,并实现一套完整红黑树合法性校验函数。文中纠正常见误区:树高 2 倍只是推论,不能作为红黑树校验条件。删除部分仅口述原理,不做代码实现,适合面试复习与底层原理学习。

2026-08-10 19:51:45 698 5

原创 C++ 高阶数据结构:AVL 树万字详解|原理、四种旋转、key‑value 实现、调试校验、set/map/红黑树 底层前置知识

普通BST在有序数据下会退化成链表,查询效率暴跌。AVL树是经典平衡二叉搜索树,依靠平衡因子约束节点左右子树高度差不超过1,保障增删查稳定O(logN),也是学习红黑树的重要前置。本文基于C++实现key‑value非冗余版AVL树,详解平衡因子更新、LL/RR/LR/RL四种旋转,剖析双旋复用单旋的经典踩坑点;提供独立的高度校验调试接口,同时梳理插入与删除回溯逻辑差异及面试考点。阅读前需要掌握二叉搜索树BST基础,注意C++

2026-08-09 14:34:21 965 7

原创 C++ STL 关联式容器万字详解:set、multiset、map、multimap|接口用法 + 易错点 + 力扣真题实战

本文深入讲解了C++ STL中set/map系列关联式容器的核心用法,包括基本构造、迭代器遍历、增删查等接口操作,并通过力扣真题展示了实际应用场景。文章对比了set与multiset、map与multimap的关键差异,着重分析了map的operator[]复合功能实现原理。在性能优化方面,不仅介绍了容器的基础用法,还针对特定题目给出了更优的非容器解法(如环形链表检测和链表深拷贝),帮助读者在便捷性和性能之间做出合理选择。本文适合已经掌握序列式容器的C++学习者,可作为理解红黑树底层实现的铺垫知识。

2026-08-08 10:22:41 545 4

原创 C++ 高阶数据结构:二叉搜索树(BST)万字详解 | 原理、增删查、key 与 key‑value 双版本实现、看懂 set/map 底层

本文介绍了二叉搜索树(BST)的基本概念、实现原理和两种应用场景。主要内容包括:1. BST的定义和性质,中序遍历可得到升序序列;2. 详细讲解了BST的插入、查找和删除操作原理;3. 用C++实现了key-only和key-value两种BST模板类;4. 分析了BST的两种主要应用场景:key搜索(对应set)和key-value搜索(对应map);5. 通过车牌识别、单词统计等实例演示了BST的实际应用。文章最后提供了完整的BST实现代码,并强调了BST作为平衡树基础的重要性,为后续学习AVL树和红黑

2026-08-06 17:53:52 538 2

原创 C++ 多态万字详解|吃透虚函数、虚表、重写、虚析构、汇编与底层实验

本文系统讲解 C++ 多态全套核心,覆盖多态构成条件、虚函数重写、经典笔试题坑点、协变、虚析构、override/final、纯虚函数与抽象类。深入虚表内存布局,对比静态与动态绑定汇编,附带读取虚表地址的内存实验,从语法刷题到底层原理完整闭环,适配面试笔试学习。

2026-08-05 18:18:58 619 5

原创 Linux 基础常用指令万字详解(上)|文件目录命令,结合底层原理剖析

本文为 Linux 常用指令,采用实操 + 底层方式,覆盖 ls、pwd、cd、mkdir、touch、rm、cp、man、which、cat、tree 等高频文件目录指令;深入讲解文件内容与文件属性、Linux 不靠后缀区分文件类型、ll 别名原理、隐藏文件、绝对路径 / 相对路径、通配符、命令本质为可执行程序、家目录、man 手册章节等底层知识。横向对比 Windows 与 Linux 文件树结构,重点提醒 rm 删除风险、通配符陷阱等实操坑点,配套完整云服务器演示。适合零基础、后端初学者、面试复习。

2026-08-04 14:32:06 316 5

原创 C++继承万字详解|吃透切片、菱形虚继承、多继承指针偏移(面试必考)

本文系统讲解 C++ 继承全部核心内容。主要内容包括:继承的基本概念与语法格式,派生类对基类成员的访问权限变化规则,继承中的类模板处理方式,基类与派生类间的赋值兼容转换(切片原理),继承体系中的作用域与隐藏规则,派生类默认成员函数的处理要点(构造/拷贝构造/赋值/析构的顺序与调用关系),多继承与菱形继承问题及其解决方案(虚继承),以及继承与组合的设计选择原则。文章通过大量代码示例,系统讲解了继承机制在代码复用、类层次构建中的核心作用,并分析了不同继承方式下的内存模型和实现细节。

2026-08-02 09:49:25 626 4

原创 C++ 反向迭代器万字详解 | 新旧双版本实现、迭代器萃取、STL源码剖析

本文详细讲解了C++反向迭代器的实现原理。通过分析SGI-STL3.0源码,介绍了三种反向迭代器类模板的设计思路:适配器模式利用正向迭代器实现反向功能,避免了重复开发。重点对比了老版本(多模板参数)和新版本(单模板参数+迭代器萃取)的实现方式,并给出了具体代码示例。最后通过vector容器的反向迭代器实现演示了实际应用,验证了方案的可行性。文章为理解STL反向迭代器设计提供了清晰的思路和实用的实现方法。

2026-08-01 20:03:15 383 5

原创 Linux初识(了解即可)

本文介绍了Linux操作系统的背景知识与应用基础。首先概述了Linux的发展历程,从Unix到开源的演进,分析了开源模式的优势(快速修复、安全透明)。随后讲解了Linux环境搭建的三种方式,推荐使用云服务器(腾讯云/阿里云等)配合Xshell远程连接工具。文章详细演示了服务器购买、root密码设置及多用户管理(adduser/passwd/userdel等指令)。最后指出Linux在后端编程和网络服务中的核心作用,为后续系统编程和网络编程专栏奠定基础。全文兼顾理论知识与实践操作,适合Linux初学者建立系统

2026-07-30 21:02:40 346 4

原创 C++_模板进阶

本文主要介绍了C++模板的进阶知识,包括非类型模板参数、模板特化和模板分离编译三部分内容。首先讲解非类型模板参数的概念和应用场景,通过静态数组示例说明其与宏定义的区别优势。其次详细阐述模板特化的两种形式:函数模板特化(不推荐使用)和类模板特化(包括全特化和偏特化),并分析特化的实际应用价值。最后探讨模板分离编译问题的成因及两种解决方案,指出将声明定义放在同一文件是最佳实践。文章总结模板编程的优势(代码复用、灵活性)和缺点(代码膨胀、编译错误难定位),帮助读者深入理解模板机制及其应用场景。

2026-07-29 22:34:24 315 4

原创 C++_stack和queue和priority_queue(容器适配器)

本文详细讲解了C++ STL中的stack、queue和priority_queue容器适配器。首先介绍了容器适配器的概念,说明它们是通过封装其他容器接口实现的。重点分析了deque作为默认底层容器的原因及其实现原理,比较了它与vector和list的性能差异。随后分别讲解了三种容器适配器的使用方法,并通过LeetCode题目进行实践演示。最后展示了如何模拟实现这些容器适配器,特别强调了priority_queue中仿函数的使用技巧。全文通过代码示例和性能分析,帮助读者深入理解这些重要数据结构的实现原理和应

2026-07-27 16:20:19 458 3

原创 C++_list

本文详细讲解了C++ STL中list容器的使用与模拟实现。list是基于带哨兵位的双向循环链表的顺序容器,支持高效插入删除但随机访问效率低。文章首先介绍list的基本接口(构造、迭代器、容量操作等),重点分析了专属接口(splice、remove、sort等)的实现原理与使用场景。随后通过源码观察,逐步模拟实现了list的核心功能,包括节点结构、迭代器设计(普通/const迭代器优化)、插入删除操作及内存管理等。最后补充了C++11的initializer_list构造方式。全文通过代码示例和图示相结合的

2026-07-26 12:41:42 437

空空如也

空空如也

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

TA关注的人

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