- 博客(49)
- 收藏
- 关注
原创 < 7 > Linux 开发工具:git 版本控制器 和 cgdb/gdb 调试器
本文系统介绍了Git版本控制和GDB/CGDB调试器的使用。主要内容包括:1) Git的基本概念、操作流程(克隆、三板斧add/commit/push)和工作区/暂存区/仓库结构;2) Git远程仓库同步与冲突处理方法;3) GDB/CGDB调试器的核心功能(断点设置、变量监控、单步执行等)和常用指令;4) 高级调试技巧如条件断点、动态修改变量值等。文章详细阐述了从代码版本管理到调试优化的完整开发流程,为开发者提供了实用的工具使用指南。
2026-04-28 23:34:23
494
8
原创 < 6 > Linux 自动化构建工具:makefile 详解 + 进度条实战小项目
本文系统介绍了Makefile自动化构建工具的核心知识体系。首先解析了依赖关系与依赖方法的本质,说明make命令通过栈结构实现自动推导编译过程。重点讲解了.PHONY伪目标的强制执特性、增量编译原理及ACM时间机制在编译优化中的应用。随后详细列举了Makefile实用语法,包括$@/$^符号、变量定义、通配符%的使用等高级特性。最后通过Linux进度条实例,深入剖析了\r\n控制字符、缓冲区刷新等底层机制,演示了如何结合Makefile实现高效开发。全文从原理到实践,完整呈现了自动化构建工具的核心技术栈
2026-04-27 09:00:00
539
22
原创 <5> Linux 开发工具:包管理 + Vim 实操 + GCC 编译流程 + 静态与动态链接详解
本文介绍了Linux系统中的软件包管理和Vim编辑器使用技巧。在软件包管理方面,重点讲解了yum/apt包管理器的工作原理、软件生态评估标准及基本操作命令。在Vim编辑器部分,详细说明了命令模式、插入模式、底行模式等不同模式下的操作快捷键,包括光标移动、文本编辑、搜索替换等功能。此外,还介绍了编译器工作流程(预处理、编译、汇编、链接)和链接方式(动态链接与静态链接)的区别。文章内容涵盖了Linux系统下软件安装、文本编辑和程序编译的实用知识,适合Linux初学者快速掌握基础操作技能
2026-04-25 17:30:00
548
13
原创 <4>Linux 权限:从 Shell 核心原理 到 权限体系的底层逻辑 详解
1) Shell作为命令行解释器的工作原理,通过创建子进程保护内核安全;2) Linux权限体系,包括用户/组/other三级权限、rwx权限设置及root特权;3) 目录特殊权限与粘滞位的应用,解决共享文件删除漏洞;4) umask权限掩码机制与文件默认权限计算;5) 重要命令如chmod、sudo、su等的使用场景。文章特别强调了权限匹配规则、所属组存在的必要性以及目录权限与普通文件的本质区别,为Linux系统管理提供了全面的指导
2026-04-23 10:00:00
423
10
原创 <1>Linux基础指令:Linux 高频指令详解 + 文件与目录认知
文章详细介绍了Linux常用命令及其功能,包括clear(清屏)、ls(列出文件)、pwd(显示路径)、mkdir(创建目录)、cd(切换路径)等基础指令。重点讲解了文件系统的树形结构、路径概念、文件属性(元信息)以及家目录的作用。同时涵盖了文件操作命令如touch(创建文件)、stat(查看文件信息)、rm(删除文件)等,并强调了一些危险操作(如rm -rf)的注意事项。文章通过类比Windows系统帮助理解Linux文件管理机制,适合初学者系统学习Linux基础命令和文件系统概念。
2026-04-16 09:00:00
818
17
原创 <2>Linux基础指令:Linux 常用命令 + 管道机制
本文摘要:本文系统介绍了Linux常用命令及其底层原理。主要内容包括:1) which查找命令路径,揭示Linux命令本质是可执行文件;2) alias命令别名设置;3) man帮助手册使用;4) Linux"一切皆文件"的核心设计理念;5) echo输出与重定向操作;6) cat文件读取与输入重定向;7) 文件拷贝(cp)、移动(mv)等操作;8) 文本编辑器nano;9) 文件查看命令(tac/more/less/head/tail)及管道(|)操作;10) 匿名管道与命名管道的区别
2026-04-16 09:00:00
805
9
原创 <3>Linux 基础指令:从时间、查找、文本过滤到 .zip/.tgz 压缩解压与常用热键
日期时间相关操作包括date命令显示日期、时间戳转换;文件查找与管理涵盖find、whereis、grep等命令;系统监控使用top查看资源占用;打包压缩重点介绍了zip和tar两种方式,包括创建、解压及跨系统传输;其他实用命令如bc计算器、uname查看系统信息等。这些命令组合使用可高效完成文件管理、日志分析、系统监控等任务,是Linux系统操作的基础技能
2026-04-16 09:00:00
617
17
原创 【优选算法3】二分查找经典算法面试题
本文系统讲解了二分查找算法及其变体应用。首先介绍了二分查找的基本原理,包括中点计算、边界处理和数据溢出防范。然后详细分析了多个经典问题:在有序数组中查找元素边界、搜索插入位置、计算平方根、寻找山脉峰值、旋转数组最小值查找以及点名问题。针对每个问题,文章剖析了二分查找的二段性特征,给出了具体的区间划分策略和边界处理技巧,强调了中点计算方式对循环终止的影响。特别指出处理边界情况时左右区间写法的差异及注意事项,为正确实现二分查找提供了清晰的逻辑框架
2026-04-10 10:00:00
896
27
原创 C++进阶必备:智能指针从 RAII 核心原理 到 手撕面试高频 shared_ptr 全解析
系统介绍了C++智能指针的核心概念与应用。主要内容包括:1)智能指针的设计思路基于RAII机制,通过对象生命周期管理资源;2)标准库智能指针类型(auto_ptr、unique_ptr、shared_ptr、weak_ptr)的特性与使用场景;3)智能指针的模拟实现,重点剖析shared_ptr的引用计数机制;4)循环引用问题及其weak_ptr解决方案;5)内存泄漏的危害与防范措施。文章从原理到实践,深入浅出地讲解了智能指针这一C++核心特性,为资源管理和内存安全提供了系统性的解决方案
2026-03-30 10:00:00
511
23
原创 C++进阶必备:异常:从原理、栈展开到异常安全实践
异常机制是面向对象编程中处理错误的有效方式,相比C语言的错误码更高效灵活。异常通过throw抛出对象,沿着调用链寻找匹配的catch处理,支持类型转换和多态调用。异常重新抛出可改善用户体验,但需注意异常安全问题,如资源泄漏。C++11引入noexcept规范函数异常行为,标准库采用继承体系实现异常类。异常处理机制提高了程序健壮性,但需要合理使用以避免安全隐患。
2026-03-26 09:00:00
406
14
原创 【优选算法2】滑动窗口经典算法面试题
本文总结了多个滑动窗口算法的经典题目及其解法,包括长度最小的子数组、无重复字符的最长子串、最大连续1的个数III等。通过分析暴力枚举的优化过程,揭示了滑动窗口的核心思想:利用单调性和同向双指针减少重复计算。针对每道题目,详细探讨了如何将问题转化为滑动窗口模型,并重点分析了边界条件处理、哈希表优化等关键点。特别强调了不同题目中更新结果的时机选择、有效字符统计等易错环节,并提供了反向思考等解题技巧。这些题目共同展示了滑动窗口算法在子串/子数组问题中的高效性和通用性。
2026-03-25 10:00:00
775
7
原创 (3)C++11:可调用对象的统一封装:function和bind
文章主要介绍了C++中的两种包装器std::function和std::bind。std::function是一个类模板,能够统一包装函数指针、仿函数、lambda等可调用对象,其原理是通过类型擦除技术存储不同对象。std::bind则是函数适配器,可调整参数顺序和固定参数值,常与占位符配合使用。两者结合使用可实现更灵活的调用方式,如优化逆波兰表达式计算、游戏技能映射等场景。
2026-03-23 10:00:00
398
8
原创 (1)C++11:从版本发展史、列表il初始化、移动语义和右值引用、引用折叠到完美转法的语法、使用、底层原理的全方面解析
C++11是C++98以来最重要的更新,带来了多项核心语法改进。主要包括:1)列表初始化统一了对象初始化方式;2)引入std::initializer_list支持多参数初始化;3)新增移动语义和右值引用,通过移动构造和移动赋值提升效率;4)引用折叠实现万能引用,扩大模板泛用性;5)完美转发解决参数传递问题。这些改进显著优化了C++编程体验,使语法更直观高效,成为企业广泛使用的版本。特别是移动语义和右值引用,通过资源转移而非拷贝大幅提升了性能。
2026-03-22 10:00:00
743
15
原创 (2)C++11:从可变参数模板、emplace接口、默认移动构造、移动赋值 到 lambda表达式的语法、使用、底层原理全面解析
本文系统介绍了C++11引入的关键新特性:1. 可变参数模板的原理与应用,包括递归展开方式和emplace系列接口的实现;2. 类功能的增强,如默认移动构造/赋值、default/delete关键字、委托和继承构造函数;3. lambda表达式的完整语法体系,重点解析了捕获列表的多种使用方式(显式/隐式/混合捕获)及其底层实现原理。这些特性显著提升了C++在泛型编程、资源管理和代码简洁性方面的表现,其中可变参数模板与lambda表达式是核心创新,通过编译器生成的匿名类实现高效封装。
2026-03-22 10:00:00
1014
4
原创 改造哈希表实现封装unordered_map/unordered_set:通过封装 uset/umap 掌握底层逻辑和细节控制
本文介绍了unordered_map和unordered_set(unmap/uset)的实现要点,重点讲解了哈希表迭代器的核心实现。主要内容包括:1. 基本框架设计,通过KeyOfT仿函数实现底层哈希表对不同数据类型的兼容;2. 哈希表迭代器的实现难点,采用哈希表指针解决跨桶遍历问题;3. 哈希表与迭代器的相互引用问题,通过前置声明和友元声明解决;4. const迭代器的特殊处理,避免权限放大问题;5. Insert、Erase、Find等操作的改造封装;6. operator[]的实现Key不被修改。
2026-03-18 08:30:00
537
9
原创 C++STL:unordered_set 与 unordered_map VS set 与 map,了解他们的差异
本文对比分析了unordered_set/unordered_map与set/map的核心差异:1.底层结构:无序容器基于哈希表(O(1)平均效率),有序容器基于红黑树(O(logN)稳定效率);2.特性差异:无序容器不排序只去重,有序容器保持排序;3.迭代器类型:无序容器为单向,有序容器为双向;4.关键要求:无序容器需要Key可哈希化和相等比较,有序容器需要Key可比较大小。总体而言,无序容器综合效率更高但存在扩容波动,有序容器性能稳定但效率稍低。接口设计上二者高度相似,但有序容器额外提供排序相关操作。
2026-03-17 08:30:00
515
6
原创 C++进阶必备:哈希表深度拆解:从原理、底层再到代码,哈希表的开放寻址法 与 链地址法,哈希桶结构实现
哈希表是一种通过哈希函数将关键字映射到存储位置的散列结构,核心在于减少冲突并实现快速查找。哈希函数包括直接定址法(适用于小范围关键字)、除留余数法(推荐使用素数避免冲突)等。哈希冲突不可避免,可通过开放定址法(线性探测易导致堆积)或链地址法(哈希桶结构,冲突值挂链表)解决。负载因子需控制在0.5-0.7以平衡空间与冲突。实现时需注意:开放定址法删除需标记状态避免查找失效;链地址法扩容时节点迁移优于深拷贝;Key需转为整型(如BKDR哈希处理字符串)。红黑树虽平均效率低于哈希表,但稳定性更优。
2026-03-17 08:30:00
506
2
原创 改造红黑树实现封装 map/set:感受C++ 标准容器的精妙设计与底层实现
本文详解如何通过红黑树封装实现STL中的map和set容器。核心思路是利用仿函数提取键值,使单棵红黑树能同时支持map(kv结构)和set(k结构)。关键实现包括:1) 模板参数改造,使用通用类型T替代KV;2) 通过仿函数回调获取键值;3) 迭代器实现基于中序遍历的++/--操作;4) 解决键值不可修改问题(set用const Key,map固定pair的Key);5) 完善Insert返回pair<Iterator,bool>以支持operator[]。这种设计极大提高了代码复用率。
2026-03-16 17:44:37
815
14
原创 【优选算法1】双指针经典算法题
本文总结了多个双指针算法的应用场景:1.移动零:通过双指针划分非零/零区间;2.复写零:逆向处理避免覆盖;3.快乐数:快慢指针检测循环;4.盛水容器:对撞指针利用单调性;5.三角形个数:排序后固定最大值优化比较;6.两数之和:首尾指针逼近目标;7.三数之和:排序+双指针+去重处理;8.四数之和:三数之和的嵌套扩展。所有解法都通过双指针降低时间复杂度,需注意边界条件和去重处理。
2026-03-16 17:37:45
493
14
原创 C++进阶必备:红黑树从 0 到 1: 手撕底层,带你搞懂平衡二叉树的平衡逻辑与黑高检验
红黑树是一种自平衡二叉搜索树,通过节点着色规则确保平衡性。文章详细介绍了红黑树的定义、规则(根节点为黑、无连续红节点、路径黑高相同)及其O(logN)的效率。重点阐述了底层实现,包括插入时的三种处理情况(变色、单旋+变色、双旋+变色),以及查找、常用接口和平衡验证方法。红黑树相比AVL树旋转次数更少,通过颜色约束而非严格高度差来维持平衡,具有较高的实用价值。
2026-02-07 17:26:17
661
13
原创 C++进阶必备:AVL树详解:平衡因子、旋转、平衡检测与底层实现全方位拆解!!
AVL树是一种自平衡二叉搜索树,由Adelson-Velsky和Landis于1962年提出。其核心特性是左右子树高度差绝对值不超过1,通过平衡因子(右子树高度-左子树高度)监控平衡状态。插入操作需更新平衡因子,当出现不平衡(|平衡因子|>1)时进行旋转调整(单旋或双旋),保证树高始终为O(logN),使增删查改效率稳定在O(logN)。旋转分为四种情况:左单旋、右单旋、左右双旋和右左双旋,每种旋转都遵循保持搜索树性质、恢复平衡和降低高度的原则。
2026-02-02 17:42:02
863
34
原创 C++STL:set、map不会用?一篇吃透基础用法+中等难度OJ题熟悉核心使用场景!!
本文主要介绍了C++中关联式容器set和map的使用。首先区分了序列式容器和关联式容器的特点,指出set和map底层采用红黑树实现。详细讲解了set的构造、迭代器、增删查操作,以及multiset的区别。随后介绍了map的使用,重点解析了operator[]的多功能特性及其底层实现原理。最后通过OJ题展示了set和map的实际应用,包括环形链表检测、数组交集查找、链表深拷贝和前K高频词统计等场景。文章全面覆盖了set和map的核心知识点,并提供了典型问题的解决方案。
2026-01-30 21:00:58
927
33
原创 C++进阶必备:key,key/value二叉搜索树详解:从原理分析到底层实现,带你一步步拿下二叉搜索树!!
摘要:本文系统介绍了二叉搜索树(BST)的基本概念和实现方法。BST是一种特殊的二叉树,其左子树节点值小于根节点,右子树节点值大于根节点,具有高效搜索特性(最优情况时间复杂度O(logN))。文章详细讲解了BST的插入、查找和删除操作,重点分析了删除节点时的四种情况处理。此外,还介绍了键值对BST的实现及应用场景,如字典翻译和词频统计等。最后指出BST在极端情况下会退化为链表(O(N)时间复杂度),引出后续将学习更高效的平衡二叉搜索树(AVL树和红黑树)。
2026-01-28 15:56:53
1103
28
原创 C++进阶必备:继承与多态的通关秘籍(2):多态详解!!
本文系统讲解了C++多态的核心概念与实现原理。首先区分编译时多态(函数重载)和运行时多态(虚函数机制),重点阐述动态多态的实现条件:必须通过基类指针/引用调用虚函数,且派生类需完成虚函数重写。文章详细解析了虚函数表机制,指出多态本质是通过虚表指针实现动态绑定,并对比了重载、重写、隐藏的差异。最后介绍了纯虚函数、抽象类等进阶概念,以及override/final关键字的使用场景。全文通过丰富代码示例,深入浅出地揭示了多态在继承体系中的底层运作原理。
2026-01-24 15:44:31
626
29
原创 C++进阶必备:继承与多态的通关秘籍(1):继承详解!!
本文详细讲解了继承与多态的核心概念和使用方法。首先介绍了继承的基本概念、三种继承方式及其访问限定符的变化规则,重点阐述了基类与派生类之间的转换赋值规则。然后深入剖析了派生类默认成员函数的实现机制,特别是构造函数和析构函数的调用顺序问题。接着讨论了继承中的特殊场景,包括友元关系、静态成员和多继承问题。最后指出了菱形继承的潜在风险,建议谨慎使用多继承。文章通过大量代码示例帮助读者理解继承机制中的常见的坑,为后续学习多态打下基础。
2026-01-18 16:11:27
933
29
原创 C++STL:仿函数、模板(进阶) 详解!!:“伪装术”和模板特化、偏特化的深度玩法指南
本文深入探讨C++中仿函数和模板的进阶应用。仿函数部分重点讲解了其在优先级队列中的使用、指针内容比较控制及算法中的应用。模板进阶内容涵盖非类型模板参数、array容器优势、模板特化(全特化和偏特化)以及模板分离编译问题。特别分析了指针模板特化的const修饰问题,解释了vector<bool>的特化实现原理,并通过编译链接过程揭示了模板不能分离编译的根本原因。文章提供了多个实用案例,帮助读者深入理解这些高级特性的应用场景和技术细节。
2026-01-13 22:30:44
881
23
原创 C++STL:deque、priority_queue详解!!:详解原理和底层
本篇详细介绍了deque,priority_queue,其中分析了deque部分源码和优劣,相比与vector和list的优劣。
2026-01-12 18:38:56
736
21
原创 C++STL:list(双链表)的底层实现 && 部分源码解析
C++STL:list(双链表)的底层实现 && 部分源码解析 ,充分讲解了list迭代器原理。
2025-12-07 14:12:30
1446
39
原创 C++STL: list(双链表) 简单介绍,了解迭代器类型,list sort 的弊端
本文介绍了list双链表,介绍了几个不一样的接口,说明了list sort的弊端,迭代器类型不同导致的部分问题
2025-12-06 22:40:39
937
17
原创 C++STL:熟悉vector的底层实现,部分源码解析,迭代器失效和深层次浅拷贝
对vector的底层代码深度解析,包括迭代器失效,传参与模板冲突,更深层次的浅拷贝以及部分源码解析
2025-12-05 09:42:55
432
24
原创 手搓简单 string 库:了解C++ 字符串底层
这一篇实现了简单的string的库,从原理到代码讲解,帮助大家理解string的底层逻辑,为后续学习STL打下坚实基础
2025-11-25 22:22:15
960
11
原创 C++string类常用的库函数和全局函数2——补充
对C++ string类 常用库函数 和 全局函数 做补充,find,rfind,substr,cmp类全局函数
2025-11-23 00:25:55
935
11
原创 C++ string类 常用的库函数 + 迭代器,范围for,auto,附使用方式
本文介绍了C++string类的实用库函数,带领代价掌握string的使用,同时介绍了STL重点内容-迭代器,以及auto和范围for,
2025-11-21 19:43:36
860
11
原创 C++ 内存管理:深入了解new、delete与内存管理方式
本文详细的介绍了new,delete操作符的使用方法,底层原理以及他们与malloc,free函数的区别。干货满满
2025-11-12 17:56:02
797
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅