自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux】深入Linux多线程架构与高性能编程

揭秘Linux线程底层实现机制!从页表管理到线程栈优化,从TLB缓存到NUMA架构,全面解析多线程性能瓶颈与解决方案,带你掌握亿级并发背后的核心原理。

2025-09-14 16:07:37 456 2

原创 信号:Linux系统中那些你不知道的“暗号“与“机关“

本文将深入剖析Linux信号机制的完整知识体系,从信号的基本概念、产生方式到内核处理流程全面讲解。涵盖信号捕捉、阻塞、保存等核心机制,通过实际代码演示信号处理的最佳实践。无论你是系统程序员还是Linux开发者,都能从中掌握信号编程的精髓,避免僵尸进程等问题,提升系统编程能力。

2025-09-03 18:24:31 1174 27

原创 【Linux】进程聊天室:管道传纸条、共享内存开黑,内核如何当裁判?(进程间通信)

本文系统剖析Linux进程间通信(IPC)的核心机制,涵盖匿名/命名管道的父子进程通信、System V三大IPC(共享内存、消息队列、信号量)的原理与实战,并深入内核源码层,解析IPC资源如何通过struct ipc_namespace和kern_ipc_perm组织管理。结合代码示例与内核数据结构图示,揭示从用户态系统调用到底层资源隔离的完整链路,助力开发者理解高效进程协作的底层逻辑。

2025-05-28 19:46:26 1441 47

原创 【Linux】ELF与动静态库的“暗黑兵法”:程序是如何跑起来的?

静态库在编译时嵌入程序,动态库则运行时加载,实现多程序共享。文章解析了两种库的生成与使用,并提供了库路径问题的解决方案。通过ELF文件结构分析,揭示了程序加载的底层机制,最后对比了静态链接和动态链接的工作原理,重点讲解了动态链接中GOT/PLT的实现机制。

2025-05-18 17:31:25 1628 42

原创 【Linux】深入拆解Ext文件系统:从磁盘物理结构到Linux文件管理

本文详细介绍了计算机硬件中的磁盘结构及其存储方式,包括磁盘的物理和逻辑结构、CHS与LBA地址的转换,以及文件系统的基本概念。文章进一步探讨了ext2文件系统的宏观结构,包括块组、超级块、块组描述符表、块位图、inode位图、i节点表和数据块等组成部分。此外,还解释了inode与数据块的映射关系、目录与文件名的关联、路径解析与缓存机制,以及分区的挂载与卸载过程。最后,文章对比了软链接和硬链接的特点及其局限性,帮助读者深入理解文件系统的运作机制。

2025-05-09 17:58:51 1964 41

原创 【Linux】深入理解Linux基础IO:从文件描述符到缓冲区设计

本文系统讲解Linux文件IO的核心机制,涵盖文件描述符、系统调用(open/read/write)、缓冲区原理及实现。通过对比C标准库与系统调用,分析重定向、文件操作流程,并手写模拟FILE结构体,深入理解“一切皆文件”的设计哲学

2025-05-05 16:37:01 1584 28

原创 【Linux】进程替换与自定义 Shell:原理与实战

本文深入探讨进程替换原理与实现,解析 exec 函数的关键特性,同时设计并实现一个自定义 Shell 命令行解释器,揭示函数调用与进程通信的内在相似性,助力读者掌握 Unix 环境下的核心编程技巧。

2025-04-21 14:35:34 1920 27

原创 Linux进程控制:fork、exit与waitpid的江湖恩怨

深入解析Linux进程控制的三部曲,涵盖fork的写时拷贝优化、exit与_exit的区别、waitpid的状态捕获,助你彻底掌握进程管理。

2025-04-09 15:56:13 1122 32

原创 深入浅出:环境变量与进程地址空间的核心机制

本文系统讲解环境变量的查看、获取方式及其特性,并深入分析进程地址空间的页表映射与虚拟内存管理机制,揭示其实现内存隔离与管理优化的核心原理。

2025-04-07 12:13:40 1097 23

原创 深入解剖Linux进程:从诞生到调度的核心机制

什么是进程?为何需要调度?本文以Linux为例,详解进程的创建、状态切换及优先级竞争,剖析O(1)调度器如何高效管理CPU资源,并探讨僵尸进程等经典问题,助你掌握操作系统核心概念。

2025-03-28 19:10:58 1070 26

原创 开发者必备:深入Git版本控制与gdb调试技巧

本教程全面揭秘版本控制神器Git,从历史到安装,从GitHub/Gitee项目创建到日常操作三板斧:add, commit, push。深入gdb调试器,揭示watch、set var、条件断点等高级调试技巧。

2025-02-10 10:49:10 1509 32

原创 Linux 编程入门:打造你的首个动态进度条

快速了解Linux系统中的回车与换行机制、行缓冲区的工作原理,以及如何在Linux环境下实现倒计时和进度条代码。通过这些实用的编程技巧,您将能够更有效地与Linux命令行交互,提升您的开发效率。

2025-01-06 14:09:14 1971 40

原创 Makefile秘籍:打造高效编译流程

Makefile是编程中的魔法配方书,它告诉make如何一步步构建你的程序。简洁、强大,它让编译过程变得简单而高效,是开发者的得力助手。

2024-12-28 16:51:30 938 8

原创 模拟算法实例讲解:从理论到实践的编程之旅

本文简要介绍了几种模拟算法,包括替换问号、提莫攻击、Z字形变换、外观数列和数青蛙问题。每个算法都针对特定的问题,提供了详细的解决方案和应用场景。

2024-11-22 12:02:06 3239 68

原创 【Linux】深入理解GCC/G++编译流程及库文件管理

本文将带你走进GCC/G++的编译流程,揭示静态与动态库的奥秘,为你的编程之路打下坚实的基础。让我们开始吧!

2024-11-19 09:29:36 3006 61

原创 Linux软件包管理与Vim编辑器使用指南

本文旨在为Linux用户提供一个全面的指南,涵盖软件包管理器Yum和强大的文本编辑器Vim的使用和管理。文章提供了参考资料,以便读者可以进一步深入学习和探索。

2024-11-14 20:40:50 1634 53

原创 Linux权限解析:用户、组和权限的协同

初学者权限理解必看:Shell命令是Linux操作系统中的命令行工具,用于执行各种系统操作。Linux权限系统基于用户、组和其他人对文件和目录的访问控制。权限包括读、写和执行,用于保护系统资源。Linux权限管理涉及文件访问者分类、文件类型和权限、权限值表示方法以及chmod、chown、chgrp和umask等命令。目录权限、缺省权限和粘滞位是权限管理中的关键概念,确保系统安全性和数据保护。

2024-11-06 10:31:34 1900 61

原创 Linux命令速查手册:快速参考与实践

Linux常用基础指令详细讲解,同时会讲解Linux重点知识,新手小白必看!

2024-11-04 10:49:27 1196 38

原创 位运算揭秘:如何用0和1征服算法世界

&:有 0 取 0| :有 1 取 1^:相同为 0 ,相异为 1 / 无进位相加。

2024-10-31 11:44:45 1619 16

原创 【C++】详解STL之 hash table — 超绝“常数平均时间”效率

哈希(hash)又称散列,是一种组织数据的方式。从译名来看,有散乱排列的意思。函数把关键字Key跟存储位置建立一个映射关系,查找时通过这个哈希函数计算出Key存储的位置,进行快速查找。hash table 可提供对任何有名项的存取操作和删除操作。由与操作对象是有名项。所以hash table也可被视为一种字典结构。这种结构的用意在于提供常数时间之基本操作,就像stack和queue那样。乍听之下这就是不可能完成的任务,因为制约条件如此少,而元素个数增加,搜寻操作必定耗费更多时间。

2024-10-27 20:03:39 1373 12

原创 【C++】详解STL之set和map --- 关联式容器的再封装

SGI-STL30版本源代码,map和set等几个头文件中。•通过下图对框架的分析,我们可以看到现key的搜索场景,还是key/value的搜索场景不是直接写死的,而是由第二个模板参数Value决定_rb_tree_node中存储的数据类型。•set实例化rb_tree时第而个模板参数给的是key,map实例化rb_tree时第二个模板参数给的是这样一颗红黑树既可以实现key搜索场景的set,也可以实key/value搜索场景的map。•要注意一下,

2024-10-25 15:58:03 1085 20

原创 【C++】详解STL之RBtree---关联式容器的底部机制值之用

c一定不是新增,c之前是黑色的,是在c的子树中插入,符合情况1,变色将c从黑色变成红色,更新上。如果p是g的右,c是p的左,那么先以p为旋转点进行右单旋,再以g为旋转点进行左单旋,再把c变黑。3. 如果一个结点是红色的,则它的两个孩子结点必须是黑色的,也就是说任意一条路径不会有连续的。当于保持g所在子树的黑色结点的数量不变,同时解决了c和p连续红色结点的问题,需要继续往上更新。如果g的父亲是黑色,则处理结束。c变成课这颗树新的根,这样子树黑色结点的数量不变,没有连续的红色结点了,且。

2024-10-19 20:22:04 909 11

原创 【C++】详解STL之 AVL tree --- “额外平衡条件的”二叉搜索树

VL树是一种高度平衡的二叉搜索树,通过严格控制左右子树高度差(不超过1)来保证操作效率为O(logN)。文章详细介绍了AVL树的核心概念、平衡因子机制及实现方法,重点阐述了插入操作时的四种旋转调整策略(左/右单旋、左右/右左双旋)及其代码实现。通过平衡检测函数验证树的平衡性,并提供了测试案例展示其性能优势。AVL树在保证搜索效率的同时,有效解决了普通二叉搜索树可能退化为链表的问题。

2024-10-15 15:30:22 1172 7

原创 【C++】set 和 map 的恋爱物语:插入、删除与查找的浪漫

本文详细介绍了STL中set和map的使用方法。set是一种基于红黑树实现的有序容器,自动排序且不允许重复元素,支持高效的查找(O(logN))、插入和删除操作。map是键值对容器,同样基于红黑树实现,按键自动排序且键必须唯一。文章详细讲解了set/map的构造函数、迭代器使用、增删查操作,并通过多个示例代码展示了基本用法和常见应用场景。此外,还介绍了multiset/multimap的区别及特殊用法,并通过leetcode题目演示了set和map在实际编程中的应用技巧。map特有的operator[]操作

2024-10-12 15:11:42 1118 8

原创 【C++】key 的单身日记 vs key/value 的完美搭档

本文介绍了关联式容器和二叉搜索树的核心概念与实现。关联式容器(如set、map及其衍生体)基于红黑树实现,通过键值自动排序元素,不支持序列式操作。二叉搜索树的实现包括插入、查找和删除操作,其中删除操作根据节点子节点情况分为四种处理方式。文章还区分了key-only和key-value两种应用场景,并给出了对应的C++代码实现,包括节点结构、基本操作和遍历方法。最后展示了支持key-value对的二叉搜索树完整实现,包含拷贝构造、赋值运算符等特殊成员函数。

2024-09-28 08:18:55 1133 31

原创 【C++】多态生存手册:从override到final的生存法则

本文摘要: 多态是面向对象编程中同一操作在不同对象上呈现不同行为的特性,分为编译时多态(静态)和运行时多态(动态)。运行时多态通过基类指针/引用调用虚函数实现,需满足两个条件:1)基类指针/引用调用;2)派生类对虚函数进行重写。虚函数通过虚函数表(虚表)实现动态绑定,运行时确定调用函数地址。析构函数应声明为虚函数以确保正确释放派生类资源。纯虚函数(=0)使类成为抽象类,强制派生类实现特定接口。多态机制通过虚表指针和动态绑定实现,提升了代码的灵活性和扩展性。

2024-09-24 17:55:02 897 24

原创 【C++】继承:当子类想“白嫖”父类的代码

本文系统介绍了C++继承机制的核心概念与应用,主要包括:1. 继承基础:阐述了继承的定义方式、访问权限控制及类模板继承的实现技巧;2. 对象关系:讲解父子类对象赋值转换规则(切片现象)和继承作用域中的隐藏规则;3. 成员函数:详细分析子类默认成员函数(构造/拷贝/赋值/析构)的生成规则及调用顺序;4. 特殊关系:探讨继承与友元、静态成员的交互特性;5. 复杂继承:重点剖析多继承的指针偏移问题和菱形继承的解决方案(虚继承);6. 设计原则:对比继承与组合的适用场景,强调组合优先的设计思想。文中通过大量代码示例

2024-09-22 13:31:14 1221 26

原创 【C++】模板特化:当泛型代码遇到特殊情况怎么办?

文章摘要: 本文系统探讨了C++模板编程的三大核心内容。首先介绍非类型模板参数的概念与使用,包括C++20前后的支持差异,以及模板静态数组的优势特性;其次详细解析模板特化技术,涵盖函数模板特化和类模板特化(全特化与偏特化),通过日期类比较示例展示实际应用;最后分析模板分离编译问题及解决方案(如将声明定义合并为.hpp文件)。文章还总结了模板编程的优势(代码复用、灵活性)和不足(代码膨胀、错误信息混乱),为开发者提供了全面的模板技术参考。

2024-09-19 16:30:52 1108 31

原创 STL-vector练习题

vector的练习题

2024-09-16 21:17:40 1305 26

原创 【C++】容器适配器探秘:从 deque 到 priority_queue 的底层架构

文章摘要:本文主要介绍了STL中的容器适配器stack、queue和priority_queue。首先解释了适配器设计模式的概念,并分析了deque作为stack和queue底层容器的优缺点,指出其分段连续存储的特性适合作为不涉及遍历操作的容器基础。随后详细讲解了stack和queue的结构特点、使用方法及模拟实现,包括最小栈和栈序列匹配等经典问题。最后重点介绍了优先级队列priority_queue,阐述其基于堆结构的实现原理、自定义比较方式的方法(仿函数),并给出了模拟实现的完整代码。全文通过原理分析、

2024-09-16 13:39:55 1039 22

原创 【C++】STL链表全解析:从底层实现到迭代器设计

本文摘要: 本文详细介绍了C++ STL中list容器的实现原理和使用方法。list作为双向链表,相比vector具有更灵活的空间管理和O(1)时间复杂度的插入删除操作。文中通过代码示例展示了list的构造方式、迭代器使用、元素访问和修改等核心功能,并重点分析了list迭代器失效的独特特性。通过模拟实现list的节点结构、迭代器和完整容器类,深入剖析了list的内部工作机制。最后对比了list与vector在底层结构、性能特点和应用场景上的主要差异,为开发者选择合适容器提供了参考依据。文章结合大量代码示例,

2024-09-07 18:28:47 1656 26

原创 【C++】memcpy的致命诱惑:vector模拟实现中的深坑预警

介绍了vector的使用和模拟等知识点,其中重点讲vector的迭代器失效与vector模拟实现的各种注意事项

2024-09-05 20:47:07 2080 21

原创 LeetCode—string练习

介绍了字符串string的各类练习题

2024-09-03 17:17:57 959 14

原创 【C++】String类实现揭秘:传统写法与现代写法的本质差异

本文介绍了C++中string类的经典实现方法,重点讲解了深拷贝与浅拷贝的区别及实现方式。文章首先展示了完整的String类实现代码,包括构造、拷贝构造、赋值重载等核心功能。随后详细分析了浅拷贝的问题及深拷贝的解决方案,比较了传统与现代两种深拷贝实现方式的优劣,并探讨了swap函数的不同实现对性能的影响。最后,文章对比了在VS和g++编译器下string内部结构的差异,说明VS采用固定缓冲区优化短字符串,而g++使用写时拷贝技术来提高效率。全文提供了string类设计的详细技术见解和实践指导。

2024-08-15 23:59:16 772 26

原创 【C++】字符串完全指南:从C风格到现代string类

C++中的string类提供了比C字符串更安全、高效的操作方式。主要特点包括:1. 支持多种构造函数和赋值重载;2. 提供迭代器遍历方式(正向/反向);3. 容量操作如resize/reserve;4. 元素访问通过[]或at();5. 丰富的修改器(push_back/append/insert等);6. 字符串操作如find/substr等;7. 兼容C字符串的c_str()接口。此外还介绍了auto关键字和范围for循环的用法,建议使用string类替代C字符串操作,注意避免replace等方法的性能

2024-08-11 11:08:13 1090 28

原创 【C++】模板编程完全指南:从泛型思维到STL实现

本文摘要: C++模板(初阶)部分介绍了泛型编程概念,通过函数模板和类模板实现代码复用。函数模板允许编译器根据参数类型自动生成特定版本,包含隐式和显式实例化方式。类模板通过显示实例化创建不同类型对象。STL简介部分阐述其作为标准模板库的重要性,包含不同版本发展历史(HP、P.J.、RW、SGI),其中SGI版本因可读性好被广泛采用。STL核心由六大组件构成,重点在于容器和算法的实现。模板技术为STL提供了强大的泛型编程支持,是C++标准库的关键组成部分。

2024-07-23 02:00:00 844 39

原创 【C++】深入理解C/C++内存管理:从基础到实现原理

本文系统讲解了C/C++中的内存管理机制。主要内容包括:1. 内存分布:详细解析了栈、堆、数据段等内存区域的特点及存储内容;2.动态内存管理:对比C语言(malloc/free)和C++(new/delete)的实现差异,强调new/delete会自动调用构造/析构函数;3.底层原理:剖析operator new/delete的实现机制及new/delete的工作流程;4.特殊用法:介绍定位new表达式及其应用场景;5.关键区别:总结malloc/free与new/delete在初始化、失败处理等方面的核心

2024-07-22 12:53:37 895 20

原创 【C++】构造函数进阶:初始化列表与类型转换探秘

本文摘要: 本文系统讲解了C++面向对象编程中的核心概念。首先介绍了构造函数的初始化列表机制,强调引用/const成员必须在初始化列表初始化,并分析了初始化顺序问题。其次讲解了类型转换规则,包括隐式转换和explicit关键字的作用。然后详细阐述了static成员的特性和使用方法,包括静态变量初始化、访问控制等。接着探讨了友元机制(友元函数和友元类)的使用场景和限制。文章还介绍了内部类的定义和应用,匿名对象的生命周期特性,以及编译器对对象拷贝的优化策略。最后通过多个示例代码演示了这些概念的实际应用,帮助读者

2024-07-20 15:00:22 1015 15

原创 【C++】类的“生存法则“:构造函数到析构函数之旅

本文介绍了C++类的6个默认成员函数:构造函数、析构函数、拷贝构造函数、赋值运算符重载、取地址运算符重载和const取地址运算符重载。重点讲解了构造函数的特点与实现、析构函数的作用、拷贝构造函数的深浅拷贝问题、运算符重载规则及日期类实现示例。文章还详细说明了赋值运算符重载的特性、const成员函数的作用以及取地址运算符重载的应用场景。通过示例代码展示了各类成员函数的实际用法,并分析了编译器自动生成与用户自定义实现的区别,为理解C++类的核心机制提供了全面指导。

2024-07-17 16:39:16 911 11

原创 【C++】this指针的秘密:谁在调用我的方法?

本文摘要(147字): 本文系统讲解了C++类的核心概念:1)类定义格式与访问限定符,区分public/protected/private权限;2)实例化过程,分析对象内存只包含成员变量;3)this指针机制,解释成员函数如何区分不同对象;4)通过Stack实现对比C与C++差异,体现封装特性。重点包括:类域作用、对象内存对齐、this指针本质(隐含形参)、成员函数调用原理。文章通过代码示例演示了类定义、实例化、this指针使用及封装优势,为理解面向对象编程奠定基础。

2024-07-13 22:15:00 1273 7

空空如也

空空如也

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

TA关注的人

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