- 博客(58)
- 收藏
- 关注
原创 打破认知!Linux 进程地址空间不是 “真实内存”?底层揭秘
本文系统介绍了进程地址空间的概念和作用。进程地址空间是操作系统为每个进程分配的虚拟内存区域,通过mm_struct和vm_area_struct结构进行管理,利用页表实现虚拟地址到物理地址的映射。
2025-12-23 15:00:00
1416
61
原创 【Linux】深入理解“进程”:进程状态 -> Linux内核O(1)调度算法
在Linux系统中 “进程” 无处不在,那什么是进程呢?本篇文章将带你深入地理解进程。看看和你以前对进程的理解有什么出入。
2025-12-08 03:45:00
1244
83
原创 “异常”处理机制 与 C++11中超实用的 “智能指针”
本文系统讲解了C++异常处理,通过智能指针部分深入解析了RAII设计思想,分析了内存泄漏的危害及防范措施,强调了智能指针在资源管理中的重要性。
2025-12-01 09:00:00
1245
73
原创 【Linux】冯诺依曼体系结构和操作系统概述
冯诺依曼体系结构是现代计算机的基础设计,由运算器、控制器、存储器、输入设备和输出设备五大部件组成,通过总线连接。操作系统采用先描述,再组织的方式进行软硬件管理,通过系统调用和库函数为用户提供安全便捷的接口。
2025-11-29 15:58:08
3244
80
原创 Linux实用工具:版本控制器Git和调试器 gdb/cgdb使用
本文介绍了版本控制工具Git和调试工具gdb/cgdb的使用。教会你如何用三板斧(git add→git commit→git push)完成代码提交。以及如何用gdb和cgdb调试代码。
2025-11-19 07:00:00
907
111
原创 Linux高效编程与实战:自动化构建工具“make/Makefile”和第一个系统程序——进度条
本文介绍了Linux下的自动化构建工具make/Makefile的使用方法,从此实现高效编程。以及如何利用它实现一个进度条程序。
2025-11-12 09:00:00
1268
96
原创 C++11实用的“新特性”:列表初始化+右值引用与偷懒艺术——移动语义
本文介绍了C++11中的几个重要新特性:列表初始化,右值引用,完美转发,移动语义。这些特性显著提升了C++的性能和灵活性,特别是在处理临时对象和资源管理方面提供了更高效的解决方案。
2025-11-10 09:00:00
1706
88
原创 Linux “ 编译 “实战:动态链接库让代码动起来的核心原理
本文介绍了在Linux系统中使用gcc/g++编译器将代码转换为可执行程序的过程。
2025-11-04 03:00:00
1526
99
原创 【Linux】yum包管理详解 + vim高效编辑技巧(入门到牛逼)
本文介绍了Linux系统中两个核心功能:软件包管理和文本编辑。帮助读者快速掌握Linux系统下编写代码。
2025-10-31 14:30:00
1437
102
原创 哈希表进阶:挑战用哈希桶封装unordered_set和unordered_map,帮你深度理解迭代器!!!
深入哈希表底层进行讲解,包教包会!
2025-10-29 19:00:00
1166
73
原创 【高阶数据结构】红黑树
红黑树是一种自平衡二叉搜索树,通过颜色约束确保最长路径不超过最短路径的2倍。时间复杂度为O(logN)。红黑树相比AVL树放宽了平衡要求,减少了旋转次数,在插入频繁的场景下性能更优。
2025-10-20 12:00:00
1438
105
原创 【Linux】“ 权限 “ 与相关指令
在Linux系统中,一切皆文件!!!而权限对文件的操作至关重要,本文将系统介绍Linux系统中的权限问题。
2025-10-20 09:00:00
1308
80
原创 【高阶数据结构】AVL树:从原理到旋转平衡艺术(附完整代码)
本文详细介绍了AVL树(平衡二叉搜索树)的实现原理与核心操作。重点讲解了AVL树的四种旋转调整策略(左旋、右旋、左右双旋、右左双旋),并提供了完整的C++实现代码,包括节点结构、插入操作、平衡调整等核心算法。
2025-10-11 19:22:24
1672
83
原创 【Linux】入门指南:基础指令详解Part Two
本文是Linux系统进阶指令指南。文章强调通过实践而非死记硬背来掌握这些指令,特别推荐掌握Ctrl+C/R等热键以提高操作效率。适合已掌握Linux基础指令的用户进一步提升系统管理能力。
2025-10-10 09:00:00
2192
60
原创 【C++】STL有序关联容器的双生花:set/multiset 和 map/multimap 使用指南
本文详细介绍了C++ STL中的关联容器set、multiset、map和multimap的核心用法。这些容器能有效解决数据快速查找、统计等需求,相比手动实现更高效简单。
2025-10-07 11:30:00
1189
58
原创 【数据结构】二叉搜索树 C++ 简单实现:增删查改全攻略
本文实现的是一个二叉搜索树的基础版本,旨在帮助理解二叉搜索树的基本原理,为后续学习更复杂的平衡二叉搜索树数据结构奠定基础。
2025-10-06 11:30:00
1558
59
原创 【Linux】入门指南:基础指令详解Part One
本文介绍了Linux系统的基本操作指南,以及常见Linux指令详解,文章通过可视化测试演示了各命令的具体用法,适合Linux初学者快速掌握基础操作。
2025-10-04 08:15:00
1861
64
原创 【C++哲学】面向对象的三大特性之 多态
多态分为编译时多态(函数重载/模板)和运行时多态(虚函数),⭐️运行时多态的实现条件:基类指针/引用调用虚函数+虚函数重写。文章深入剖析了虚函数表机制,解释了多态动态绑定的底层原理。并通过典型面试题演示了多态的实际应用场景。
2025-10-02 08:00:00
1561
63
原创 【C++哲学】面向对象的三大特性之 继承
本文系统讲解了C++继承机制的核心概念与应用以及一些细节的考点。文章通过类图示例和代码演示,详细剖析了继承体系中的关键技术和设计原则,为面向对象编程提供了实践指导。
2025-09-26 08:30:00
1651
73
原创 【数据结构OJ】BFS算法的可视化:二叉树“层序遍历”
本文介绍了二叉树的层序遍历解题思路与实现方法。核心思路是使用队列实现广度优先搜索(BFS):先将根节点入队,通过记录每层节点数level_k_size来控制遍历层数,每次循环处理一层节点,将节点值存入临时数组,并将子节点入队。最后将结果二维数组逆置即可实现自底向上的输出。
2025-09-25 13:19:04
1070
57
原创 【C++】【STL】别再混淆!C++容器适配器不是“容器”,这篇讲清它的本质
本文介绍了C++中的三种容器适配器:stack、queue和priority_queue。它们通过封装底层容器(如deque、vector)提供特定功能,stack基于LIFO原则,queue基于FIFO原则,priority_queue则通过堆算法维护优先级。
2025-09-20 18:06:10
1334
59
原创 【C++】容器进阶:deque的“双端优势” vs list的“链式灵活” vs vector的“连续高效”
本文对比了STL中vector和list容器的优缺点(面试⭐),并介绍了双端队列deque的设计目的与特性。deque通过分段连续空间(中控数组管理)结合两者优势,支持O(1)首尾操作和部分随机访问,但遍历和中间操作效率较低,因此主要作为stack/queue的底层容器⭐。
2025-09-20 13:35:09
1290
40
原创 【C++】STL之list模拟实现:关于链表容器的双向迭代器你知道多少?
本文深入剖析了STL中的list容器底层实现,并通过对比查阅stl_list.h头文件中源码的方式,重点模拟实现了list容器的双向迭代器⭐️,通过模板参数Ref和Ptr区分const与非const迭代器,并重载了++、--、*、->等运算符。
2025-09-18 17:35:34
2705
61
原创 【C++】【STL】双向链表你还在手撕代码❓️STL list容器那些藏在文档里的实用方法,你用过几个❓️
本文介绍了C++标准库中的list双向链表容器,重点讲解其核心特性和常用接口。文章详细说明了构造方法(默认构造、拷贝构造等)、容量操作(size/empty)、迭代器使用(begin/end)以及增删查改接口(push_front/pop_back等),并演示了两种遍历方式(范围for和迭代器)。此外,还介绍了emplace_back、merge、unique等拓展接口的特性与使用场景.
2025-09-14 20:44:32
1097
50
原创 【STL】STL最常用容器之——动态数组容器vector(超详细)
本文详细介绍了C++标准库中的vector容器的基本特性、常用接口实现和底层原理剖析。文章首先讲解了vector的构造方法、容量操作、访问遍历和增删改查等核心接口,随后深入剖析了其底层实现机制,包括迭代器失效(⭐)、深拷贝(⭐)等关键问题,并提供了完整的模拟实现代码。通过具体示例演示了vector的使用方法和注意事项,帮助读者全面理解这一重要容器的实现原理和使用技巧。
2025-09-13 08:00:00
1368
27
原创 【STL】C++ 开发者必学字符类详解析:std::string
C++的string类是标准库提供的字符串处理工具,相比C语言手动管理字符串更安全高效。本文详细介绍string类的常用接口和模拟实现方法。主要内容包括: string类的构造、容量操作、访问遍历、修改查找等常用接口 通过多文件方式模拟实现string类,包括构造函数、拷贝控制、扩容机制等核心功能 实现字符串操作如push_back、append、insert、find等成员函数 重载运算符和流操作,完整模拟标准库string类行为。
2025-09-03 12:26:02
1354
27
原创 一文读懂C++内存管理:new + delete
本文系统介绍了C/C++内存管理机制,同时,重点分析了面试中常见的一个问题:C语言的malloc/free和C++的new/delete有什么区别?。文章指出new/delete更安全高效,能自动处理对象生命周期,而错误使用free释放new分配的空间,可能会导致内存泄漏,因此我们要规范使用!!!
2025-08-23 09:04:18
687
18
原创 【C++】类和对象(下)
本文介绍了C++中构造函数初始化列表、static成员、友元、内部类、匿名对象及编译器优化的关键知识点。初始化列表是成员变量定义初始化的地方,必须用于引用、const及无默认构造的成员变量;static成员变量需类外初始化,静态成员函数无this指针;友元突破封装限制,但会增加耦合;内部类独立存在,默认是外部类的友元;匿名对象生命周期仅限当前行;编译器会对连续拷贝进行优化。这些特性为C++面向对象编程提供了灵活性和效率。
2025-08-21 13:12:07
702
15
原创 【C++】类和对象——默认成员函数(中)
本文主要介绍了C++中类的默认成员函数,重点讲解了拷贝构造函数和赋值运算符重载。拷贝构造函数用于用一个已初始化对象初始化另一个对象,其首参数必须是类类型引用以避免无限递归。赋值运算符重载用于两个已存在对象间的拷贝赋值,需返回引用以支持连续赋值。编译器会为未显式定义的类生成默认版本,但涉及资源管理时(如动态内存)需手动实现深拷贝。文章还对比了传值返回和传引用返回的区别,介绍了运算符重载规则(如const成员函数、取地址运算符重载等),并通过Date和Stack类示例说明不同场景下的实现需求。最后强调资源管理类
2025-08-21 10:07:08
976
12
原创 【C++】类和对象——默认成员函数(中上)
C++类的6个默认成员函数包括构造函数、析构函数、拷贝构造、赋值重载以及两个取地址重载函数。其中构造函数负责对象初始化,特点包括与类同名、无返回值、自动调用、可重载等;析构函数负责资源清理,在对象销毁时自动调用。编译器生成的默认构造和析构函数对内置类型不做处理,对自定义类型调用其对应函数。当涉及动态内存等资源管理时,必须自定义实现这些函数以防止资源泄漏。默认构造函数包括无参构造、全缺省构造和编译器自动生成的构造,三者只能存在一个。这些默认成员函数是C++类设计的核心机制,理解其行为对正确管理资源至关重要。
2025-08-16 13:05:56
931
13
原创 【C++】类和对象(上)
本文介绍了C++中类的定义和使用方法。主要内容包括:1.类定义格式,使用class关键字,包含成员变量和成员函数;2.访问限定符(public/protected/private)的作用及使用规则;3.类域的概念及作用域操作符的使用;4.实例化过程,说明类与对象的关系;5.对象大小的计算规则,包括空类对象占1字节的特殊情况;6.this指针的原理和作用,解释成员函数如何区分不同对象;7.两道关于this指针的面试题解析。文章通过代码示例和类比说明,帮助理解C++类的基本概念和特性。
2025-08-16 13:04:02
1184
10
原创 C++入门基础(万字详解)建议收藏!!!
C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。因此:C++是基于C语言而产生的,
2025-08-14 07:30:22
4761
10
原创 八大排序算法全景指南:从插入排序到计数排序,解锁排序算法的效率密码(动图演示+文末附动图下载)
在编程的世界里,排序算法就像一把基础却锋利的“瑞士军刀”——从简单的数组整理到复杂的数据库索引,从日常开发的小需求到面试中的高频考点,几乎无处不在。你或许也曾有过这样的困惑:为什么学了冒泡排序,还要费劲理解快排?归并排序的“稳定”到底有什么用?面对一串数字,该选计数排序还是堆排序?其实,每种排序算法的诞生都对应着特定的场景和需求:有的追求极致简单,有的为了降低时间消耗,有的则在空间占用上做了妥协。本篇文章我们就聊聊每种算法的底层逻辑、优劣势,以及那些藏在“时间复杂度”“稳定性”背后的实际意义。
2025-08-09 23:27:25
746
10
原创 【数据结构】二叉树接口实现指南:递归方法的高效运用 (附经典算法OJ)
用链式结构实现二叉树,节点结构就类似于链表的节点。同时,我们还需要两个结构体类型的指针来连接孩子节点。//定义二叉树存储的数据类型//定义节点结构}BTNode;
2025-08-02 15:54:26
1073
6
原创 【数据结构】树、二叉树、堆 + 堆的实现 + 堆排序TOP_k问题(附完整源码)
二叉树是树形数据结构中极其重要的组成,堆又是二叉树中一种更加特殊的数据结构。
2025-07-28 23:28:06
1023
9
原创 【数据结构】栈和队列(接口超完整)
栈和队列是计算机科学中两种重要的线性数据结构,均用于存储和管理数据元素。但它们的操作规则和应用场景不同,栈遵循“先进后出”的原则,而队列遵循“先进先出”的原则。
2025-07-20 23:33:01
1359
4
原创 【数据结构】 链表 + 手动实现单链表和双链表的接口(图文并茂附完整源码)
/创建单链表的一个节点DateType x;//指向下一个节点的指针}SLT;节点中有两个变量,一个用来存储数据,一个用来存储下一个节点的地址。由于next指针指向下一个节点,所以next为struct SList* 类型的指针变量。用typedef关键字来重定义,既方便我们修改,也方便我们书写。双向链表中有一个存储Dateype类型的数据的变脸,一个用来指向下一个节点的指针next,还有一个用来指向上一个节点的指针prev。//定义双向链表(带头双向循环链表)的一个节点//指向前一个节点。
2025-07-17 15:00:02
1178
6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅