- 博客(65)
- 收藏
- 关注
原创 【Linux手册】进程的状态:从创建到消亡的“生命百态”
本文介绍了操作系统中的进程状态管理。主要内容包括:运行状态进程在运行队列中排队执行,通过时间片轮转保证公平;阻塞状态进程因I/O等操作暂停,存放于外设等待队列;挂起状态是内存不足时将阻塞进程数据置换到磁盘。Linux系统详细定义了7种进程状态:R运行、S浅度睡眠、D深度睡眠、T/t暂停、X终止、Z僵尸状态,其中D状态确保磁盘操作安全,Z状态需父进程回收避免内存泄漏。文章还解析了孤儿进程的处理机制和僵尸进程的危害。
2025-06-15 13:52:34
1281
12
原创 【算法深练】二分答案:从「猜答案」到「精准求解」的解题思路
本文系统性地介绍了二分查找算法的应用。将时间复杂度从O(N)优化到O(logN)。详细讲解了三种二分实现方法(左闭右闭、半开半闭、左开右开),并通过代码示例展示具体实现。文章还提供了基础题目(如34题、35题等)和进阶题目(如2300题、2070题等)的解法,涵盖排序数组查找、区间查询、前缀和等典型应用场景。最后总结了二分查找与其他算法(如双指针、哈希表)结合的解题技巧,强调在数据量大时优先考虑二分查找的解题思路。
2025-06-14 13:37:06
1720
11
原创 【Linux手册】从「程序」到「进程」:计算机世界的运行机制
本文介绍了进程的基本概念及其在操作系统中的管理方式。进程被定义为正在运行的程序,操作系统通过创建PCB(进程控制块)结构体task_struct来管理进程,该结构体包含PID、状态、优先级等关键属性。文章详细讲解了Linux中查看进程属性的两种主要方法:ps命令(静态查看)和top命令(动态监控),并介绍了/proc目录存储进程信息的特点。最后指出进程的本质是PCB结构体对象与代码数据的结合体,为后续深入学习进程知识奠定基础。
2025-06-12 17:34:28
1076
1
原创 【烧脑算法】三指针的降维打击:三线并行锁定解题细节
三指针算法是双指针的扩展,通过引入第三个指针解决更复杂的数组/链表问题。本文结合4道力扣例题,展示了三指针的应用场景:在有序数组中维护两个边界指针,处理区间计数时跟踪有效范围,以及同时约束最大最小值。核心在于通过三个指针的协同移动,将时间复杂度优化至O(n)或O(n²),避免暴力枚举。解题关键是根据条件变化规律,设计指针的移动时机和边界维护策略。
2025-06-11 17:36:32
1186
3
原创 【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅
本文系统地解释了计算机指令如何从用户操作传递到底层硬件的流程。主要内容包括:1)操作系统作为管理软硬件的软件,通过描述(结构体)和组织(双链表)实现资源管理;2)驱动程序作为桥梁将硬件信息传递给操作系统;3)系统调用作为用户与操作系统的安全交互接口;4)用户操作接口对系统调用的二次封装。整个过程展现了从用户指令到硬件操作的完整链路:用户→用户接口→系统调用→操作系统→驱动程序→硬件资源。
2025-06-09 19:46:01
1132
2
原创 【算法深练】二分查找:从O(n)到O(log n)以对数级效率秒杀海量数据的解题利刃
本文系统性地介绍了二分查找算法及其应用。首先阐述了二分的基本原理,将时间复杂度从O(N)优化到O(logN)。然后详细讲解了三种二分实现方法(左闭右闭、半开半闭、左开右开),并通过代码示例展示具体实现。文章还提供了基础题目(如34题、35题等)和进阶题目(如2300题、2070题等)的解法,涵盖排序数组查找、区间查询、前缀和等典型应用场景。最后总结了二分查找与其他算法(如双指针、哈希表)结合的解题技巧,强调在数据量大时优先考虑二分查找的解题思路。
2025-06-07 17:20:36
2057
22
原创 【Linux手册】冯诺依曼体系结构
冯诺依曼体系结构是现代计算机的基础架构,包含五大组件:输入设备、输出设备、存储器(内存)、运算器和控制器(CPU)。数据流动遵循特定路径:输入设备→内存→CPU→内存→输出设备。内存作为中间存储层,解决了CPU与外设速度不匹配的问题,实现计算与I/O并行处理。该体系解释了程序加载到内存的必要性,以及数据缓存机制。典型应用场景如QQ文件传输过程,也遵循这一数据流动模式。未下载的文件存储在服务器而非本地内存中。
2025-06-05 20:07:17
2002
1
原创 【算法深练】分组循环:“分”出条理,化繁为简
分组循环算法是一种高效处理数组分组问题的模板方法,适用于需要将数组划分为连续子数组并根据特定条件进行统计的场景。其核心思想是:外层循环负责遍历组之前的准备工作(记录起始位置)和组之后的统计工作(更新结果),内层循环负责遍历当前组并确定组的结束位置。
2025-06-04 20:23:09
2071
22
原创 【Linux手册】从文本到运行:代码向可执行程序转化的深度拆解
本文详细介绍了从源代码到可执行程序的生成过程,主要包括预处理、编译、汇编和链接四个阶段。预处理阶段会进行头文件展开、去注释、宏替换和条件编译等操作;编译阶段将代码转换为汇编语言并进行语法分析;汇编阶段生成机器可识别的二进制文本;链接阶段则负责合并多文件和链接库(包括动态库和静态库)。文章还对比了Debug和Release版本的区别,分析了静态链接和动态链接的优缺点,并解释了库文件在软件开发中的重要作用。通过了解这些编译原理知识,可以帮助开发者更好地理解程序的构建过程。
2025-06-03 20:53:37
956
2
原创 【烧脑算法】不定长滑动窗口:从动态调整到精准匹配以灵活特性实现高效破题
滑动窗口基于暴力解法的优化,将时间复杂度降到线性,解题时的关键是定义好循环不变量。掌握好滑动窗口,可以进一步提升你的算法能力和解题效率。本文深入探讨了不定长滑动窗口算法,通过多个LeetCode题目实例,详细解析了如何利用滑动窗口解决不同类型的问题。
2025-06-02 11:35:41
1007
19
原创 【Linux手册】一文吃透Vim编辑器:Linux环境下编辑器使用全维度剖析与实操指南
本文介绍了Linux系统下三种软件安装方式:1)源代码安装(复杂不推荐);2)rpm安装(类似手机直接安装但需手动处理依赖);3)yum安装(推荐,自动解决依赖关系)。详细说明了yum的基本命令(install/remove/list)和拓展源安装。第二部分讲解vim编辑器的三种主要模式:命令模式(介绍光标定位、文本操作等快捷键)、插入模式(文本编辑)和底行模式(文件对比、行号显示等)。特别说明了模式间的切换方法及常用操作指令。
2025-05-30 12:19:05
1239
20
原创 【烧脑算法】定长滑动窗口:算法题中的“窗口”智慧
本篇博客深入探讨了定长滑动窗口在解决复杂算法问题中的应用,通过多个LeetCode题目展示了滑动窗口与其他算法(如二分查找、哈希桶等)的结合使用。
2025-05-28 17:20:21
1540
28
原创 【算法深练】双序列双指针:用“双轨并行”思维,高效破解算法难题
本文通过一系列LeetCode题目,深入探讨了双指针算法在双序列问题中的应用。文章从基础题目如“向字符串添加空格”和“最小公共值”入手,逐步深入到更复杂的题目如“合并两个有序数组”和“区间列表的交集”,展示了双指针在不同场景下的灵活应用。通过这些题目的解析,读者可以更好地理解双指针算法的核心思想,并掌握其在解决实际问题中的高效应用。
2025-05-26 17:24:18
2095
24
原创 【Linux手册】Linux权限:系统世界的“门禁卡”
本文介绍了指令的本质和命令行解释器的作用,探讨了Linux下的权限管理,区分了root用户和普通用户的权限,并解释了如何将普通用户添加到白名单中以暂时提升权限。此外,文章详细说明了Linux文件权限的三种类型(可读、可写、可执行)及其对不同用户身份(拥有者、所属组、其他人)的应用。最后,文章提到了权限掩码的概念,解释了文件和目录创建时默认权限的差异。
2025-05-24 11:18:13
1039
19
原创 【烧脑算法】单序列双指针:从暴力枚举到高效优化的思维跃迁
本篇博客是对《单序列双指针---基础篇》的补充,主要探讨了更高难度的双指针算法题目。文章通过多个LeetCode题目的解析,展示了双指针在不同场景下的应用,包括相向双指针和同向双指针的使用。通过这些题目的解析,读者可以进一步提升对双指针算法的掌握和应用能力。
2025-05-22 21:14:54
1503
23
原创 【Linux手册】图绘Linux基础指令脉络
本文介绍了Linux命令行的基本操作和常用指令,涵盖了目录操作、打包和压缩方式,如何浏览大文本,文件操作、查找指令、系统指令以及热键使用。这些命令和操作是Linux系统管理和日常使用的基础。
2025-05-18 20:56:58
2537
27
原创 【入门算法】单序列双指针:从暴力枚举到高效优化的思维跃迁
本文对双指针算法在面试中的常见应用进行了详细分类和解析,帮助读者掌握双指针的解题技巧和底层逻辑。双指针主要分为相向双指针、同向双指针和背向双指针,分别适用于不同的问题场景。通过本文的学习,帮助读者可以更好地理解双指针的核心思想,并灵活运用于实际面试中。
2025-05-16 20:12:05
4458
20
原创 【入门算法】不定长滑动窗口:从动态调整到精准匹配以灵活特性实现高效破题
滑动窗口基于暴力解法的优化,将时间复杂度降到线性,解题时的关键是定义好循环不变量。掌握好滑动窗口,可以进一步提升你的算法能力和解题效率。本文深入探讨了不定长滑动窗口算法,通过多个LeetCode题目实例,详细解析了如何利用滑动窗口解决不同类型的问题。
2025-05-12 21:57:15
1331
17
原创 【入门算法】定长滑动窗口:算法题中的“窗口”智慧
滑动窗口基于暴力解法的优化,将时间复杂度降到线性,解题时的关键是定义好循环不变量。掌握好滑动窗口,可以进一步提升你的算法能力和解题效率。本文将帮助读者正确的使用滑动窗口,理解其应用场景。
2025-05-07 17:24:00
1244
19
原创 C++11新特性
本文对C++11重要特性进行介绍,重点解析了C++中的左值引用和右值引用的区别,帮助读者快速了解C++11新特性以及这些特性的使用方法。
2025-04-18 21:03:43
1318
20
原创 位图和布隆过滤器
对于海量数据查找,使用位图和布隆过滤器的解决方案,文章通过对经典面试题的剖析来帮助读者理解位图和布隆过滤器的底层实现以及其优缺点。文章结尾附有大厂经典面试题。
2025-04-15 22:38:57
1087
18
原创 哈希表的封装
本文对unordered_set和unordered_map的底层实现进行深度剖析,分析其是如何通过哈希表进行封装的,对其迭代器的实现进行深度剖析,对库中封装的逻辑进行详细分析,帮助读者理解两种容器的结构以及实现逻辑。
2025-04-10 18:04:10
2307
21
原创 哈希表(开散列)的实现
通过除留余数法确定数据位置,再根据开散列的方法解决哈希冲突。本篇博客对哈希表开散列的实现进行细致剖析,帮助读者理解哈希表性能的优缺点。
2025-04-08 21:28:43
1042
16
原创 哈希表(闭散列)的实现
通过除留余数法确定数据位置,再根据闭散列的方法解决哈希冲突。本篇博客对哈希表闭散列的实现进行细致剖析,帮助读者理解哈希表性能的优缺点。
2025-04-06 21:57:43
1444
23
原创 set和map封装
本文对set和map的底层实现进行深度剖析,分析如何通过相同的底层逻辑红黑树来封装出不同的容器,对set和map的迭代器进行底层实现,对库中封装的逻辑进行详细分析,帮助读者理解两种容器的结构以及实现逻辑。
2025-04-03 12:18:49
2461
19
原创 红黑树剖析
红黑树用于高效查找数据,及防止了普通搜索二叉树,也规避了AVL树的插入时多次旋转的代价,本文深度剖析了红黑树插入的逻辑,步骤以及插入后调整的方法,帮助读者能够理解和正确使用红黑树。
2025-04-01 12:32:25
2590
17
原创 C++多态
对多态的思想进行详细的介绍,通过虚函数的各个细节来帮助读者进一步理解多态的含义及使用方法,文章结尾对常见多态的面试题进行分析,解答。
2025-03-23 00:25:47
1302
原创 C++继承
本文对面向对象编程的三大特性之一的继承做了详细的分析和介绍,包括继承后派生类的默认成员函数的细节分析,以及多继承中菱形继承的解决方法等做出详细的解释和分析。
2025-03-20 21:06:36
1450
2
原创 priority_queue模拟实现
优先级队列的模拟实现依靠的还是堆,通过对优先级队列的模拟实现,帮助读者理解优先级队列的底层实现逻辑,文章补充讲解了反向迭代器的模拟实现,文章结尾搭配习题供读者练习。
2025-03-16 20:39:49
1101
1
原创 std::stack和std::queue
本文通过对stack和queue两个容器适配器的模拟实现,对deque容器的解释来让读者能够更好的理解使用stack和queue的功能,文章结尾配有习题来供读者练习。
2025-03-14 20:38:56
1331
13
原创 std::list的模拟实现
对std::list的模拟实现,详细介绍了list迭代器的特点及其独特之处,帮助读者快速了解list的底层实现逻辑,能够更好的使用list完成程序。
2025-03-12 12:43:02
1324
10
原创 std::vector的模拟实现
通过模拟实现vector可以帮助读者理解vector成员函数的底层逻辑,让读者更准确地使用vector中的成员函数。
2025-03-09 20:56:31
807
9
原创 string的模拟实现
通过模拟实现string可以帮助读者理解string成员函数的底层逻辑,让读者更准确地使用string中的成员函数。
2025-03-06 23:10:51
2252
9
原创 C++类和对象
C++类和对象,类和对象是C++学习的一个‘’坎‘’,本篇文章帮助读者能够真正的理解类和对象存在的意义,全面掌握如何正确的使用类和对象
2025-03-01 15:51:20
2298
10
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人