自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(82)
  • 资源 (1)
  • 收藏
  • 关注

原创 C++语言原理与实践(二十七):lambda表达式与包装器

本文系统讲解了C++中lambda表达式与包装器的使用。lambda表达式本质是匿名函数对象,通过捕捉列表(值/引用)访问外部变量,支持隐式与混合捕捉,mutable可解除值捕捉的常量性。其底层原理为生成仿函数类,编译器自动实现operator()。std::function作为通用包装器,可统一存储函数指针、仿函数、lambda等可调用对象,便于类型统一管理。bind则用于参数适配,通过占位符_1、_2等调整参数顺序或固定部分参数,实现函数重用。二者结合可灵活处理复杂调用场景。

2026-11-07 16:03:16 251 13

原创 C++语言原理与实践(二十一):封装红黑树实现map和set

本文通过分析SGI-STL源码,揭示map与set底层均基于红黑树实现,借助模板泛型与仿函数(如identity、select1st)统一数据类型处理:set存储Key,map存储pair<const Key, T>,通过Value模板参数使同一红黑树节点适配不同数据。进一步模拟实现中,改造红黑树支持通用数据类型T,引入KeyOfT仿函数提取键值,实现共用插入、查找逻辑。迭代器基于中序遍历设计,重载++、--、*、->等操作,并通过const修饰控制访问权限——set禁止修改元素,map仅

2026-10-31 13:59:13 698 18

原创 C++语言原理与实践(二十二):unordered_set 与 unordered_map 的介绍及常用接口

本文介绍了C++ STL中的unordered_set和unordered_map容器。unordered_set用于存储不重复元素,支持快速查找、插入和删除(平均O(1)),遍历无序;常用接口包括insert、emplace、find、erase、size等。unordered_map则用于键值对映射,Key唯一,支持通过operator[]访问与修改值,适用于统计频次等场景。两者均需包含相应头文件,遍历结果无序,核心操作接口相似,重点掌握insert、find、erase及迭代器使用。

2026-10-31 11:55:13 178 1

原创 C++语言原理与实践(二十):红黑树的实现

本篇目标:1.掌握红黑树的概念与染色过程2.学会红黑树的实现注意:学习本片前必须要学会AVL树的旋转。

2026-10-28 15:56:15 333 22

原创 C++语言原理与实践(十八):set和map的使用

接口作用insert()插入元素find()查找元素count()统计元素数量erase()删除元素查找第一个大于或等于目标的元素查找第一个大于目标的元素begin()获取第一个元素的迭代器end()获取尾后迭代器rbegin()获取反向遍历的起始迭代器rend()获取反向遍历的尾后迭代器size()获取元素数量empty()判断容器是否为空clear()清空容器set和map都是基于关键字组织数据的关联式容器,底层通常使用红黑树实现。set的核心特点是:元素不能重复。自动排序。适合搜索和去重。

2026-10-24 18:59:09 235 6

原创 C++语言原理与实践(十七):二叉搜索树

本文系统讲解二叉搜索树(BST)的核心原理与操作,涵盖其定义、中序遍历的有序性、增删查逻辑及性能分析。重点实现插入、查找、删除等基础操作,特别解析了四种删除情形,引入替换法处理双子树节点。同时区分key与key/value两种使用场景:前者用于存在性判断(如车牌校验),后者支持数据关联(如词典、计费系统)。最后通过模板化框架封装,实现拷贝构造、赋值、析构与中序遍历,为后续学习AVL树、红黑树奠定基础。

2026-10-24 16:33:35 378 23

原创 C++语言原理与实践(十三):stack、queue 和 priority_queue的介绍与使用

本文介绍了C++中stack、queue和priority_queue三种容器适配器的接口使用。stack遵循LIFO,适用于括号匹配;queue遵循FIFO,可用于模拟任务调度;priority_queue按优先级出队,默认大堆,可配合greater实现小堆,适合求TopK问题。三者均需在操作前判断非空,pop()仅删除不返回元素。掌握其特性与接口,可高效解决实际问题。

2026-10-17 16:17:19 283 27

原创 C++语言原理与实践(十六):多态机制讲解

本文系统讲解了运行时多态的构成条件与实现原理。多态需满足:继承关系下,基类指针或引用调用虚函数,且该函数被派生类重写。核心机制依赖虚函数表(vtable)和虚表指针(vfptr),通过动态绑定在运行时确定调用具体函数。虚函数重写需函数签名一致,返回类型可协变;使用override和final增强代码安全性。纯虚函数定义抽象类,强制派生类实现。基类析构函数应为虚函数,以确保正确释放资源。多态本质是同一接口不同实现,实现方式基于虚表机制,支持灵活扩展与设计。

2026-10-17 15:41:07 970 34

原创 C++语言原理与实践(十一):list类的介绍与使用

本文系统介绍C++ std::list双向链表容器,重点解析其迭代器特性——作为双向迭代器,支持前后逐个移动,但不支持随机访问。文章详述了迭代器能力等级(前向、双向、随机访问),并说明list仅支持相应算法。内容涵盖list的构造、赋值、容量查询、元素访问、头尾增删、指定位置插入与删除、splice高效转移、remove/remove_if、unique去重、sort排序、merge合并及reverse反转等核心操作,强调其在链表场景下的高效性与适用性。

2026-10-10 15:36:17 171 6

原创 图的精髓:邻接矩阵与遍历全解析

本文系统讲解图的基本概念,包括顶点、边、无向图与有向图、带权图、邻接关系、度数、路径与回路、子图、连通性等核心内容,并深入介绍邻接矩阵的存储结构及其在无权、带权图中的应用。重点阐述了图的两种遍历方式:广度优先搜索(BFS)和深度优先搜索(DFS),结合邻接矩阵实现,强调访问标记的重要性及算法实现细节。文章兼顾理论与实践,为图算法学习奠定基础。

2026-10-10 14:45:00 235 28

原创 C++语言原理与实践(十二):list类的底层实现

本文基于带头双向循环链表实现list容器,通过节点封装数据与连接关系,以头节点统一管理空链表及首尾操作。核心接口如push_back、insert、erase均在O(1)时间内完成,利用迭代器封装遍历逻辑,并通过三参数模板优化实现普通与const迭代器复用。erase返回后继迭代器支持安全遍历,clear结合拷贝交换实现深拷贝与资源管理,最终构建出功能完整、高效安全的list模拟实现。

2026-10-10 14:20:41 1067 31

原创 C++ 并查集详解:原理、实现与应用

并查集(DSU)是一种高效处理集合合并与查询的数据结构,核心操作为“并”(合并)和“查”(查找根节点)。通过数组存储,根节点值为负数,其绝对值表示集合大小,非根节点指向父节点。主要接口包括构造函数、查找根节点、合并集合及统计集合数量。优化策略如按大小合并与路径压缩可使均摊时间复杂度接近O(1)。典型应用包括“省份数量”问题——将相连城市合并后统计连通分量数;以及“等式方程可满足性”——先合并相等变量,再检查不等关系是否冲突。并查集广泛用于连通性判断与等价关系处理。

2026-10-06 17:32:07 446 2

原创 位图妙用:512MB 实现 40 亿整数的存在性查询

位图是一种高效存储整数存在状态的数据结构,仅用1位表示“存在”或“不存在”,极大节省空间。对于32位无符号整数范围(0~4,294,967,295),只需约512MB内存,即可实现O(1)时间复杂度的插入、删除和查询。适用于海量整数去重、交集求解、出现次数统计等场景。通过组合多个位图可扩展为计数位图,支持记录出现次数。其核心优势在于空间高效与操作快速,但受限于取值范围,不适用于稀疏大范围数据或非整型数据。

2026-10-04 18:19:21 469 34

原创 C++语言原理与实践(十):vector类的底层实现

本文系统讲解了vector的底层实现,核心基于三个指针(_start、_finish、_end_of_storage)管理连续内存,通过迭代器统一访问元素。重点实现push_back、insert、erase等接口,并解决扩容时的迭代器失效问题。强调memcpy导致的浅拷贝缺陷,提出用赋值操作替代字节复制以保证自定义类型(如string)的深拷贝。同时涵盖构造函数、赋值重载、析构函数及通用打印函数的设计,完整模拟了标准库vector的关键功能与细节。

2026-10-02 17:22:10 955 22

原创 C++语言原理与实践(九):vector类的介绍与使用

本文详细介绍C++中std::vector的创建、初始化、元素访问、大小容量管理、迭代器使用、增删操作及常见错误。vector是动态数组,支持自动扩容、连续存储,具备高效随机访问与缓存友好性。重点区分了reserve()(仅扩容)与resize()(改变大小并初始化),强调迭代器在扩容或插入删除后可能失效,需谨慎使用。同时介绍了二维vector的构建与遍历方法,以及sort()、find()等常用算法的应用。

2026-09-26 13:59:44 389 28

原创 C++语言原理与实践(八):string类的底层实现

本文系统模拟实现C++ string类,涵盖构造函数、析构函数、赋值重载、扩容机制(倍增与按需扩容)、插入(push_back、insert)、删除(erase)、查找(find)、比较、流操作符重载及优化策略。重点解析了size_t下溢问题、写时拷贝思想与资源管理,强调通过合理扩容、避免重复拷贝提升效率,最终构建出功能完整、高效安全的字符串类。

2026-09-24 19:19:24 490 21

原创 数据结构之排序算法(下):归并、计数与基数排序

归并排序通过分治思想,将数组递归分割至单元素后合并两个有序子数组,实现稳定且时间复杂度始终为O(nlogn)的排序。其核心是二路归并,利用临时数组保证稳定性。计数排序则基于整数取值范围,通过统计频次与前缀和确定元素位置,实现O(n+range)的线性时间复杂度,但仅适用于值域集中的整数。两者分别体现了“分治均衡”与“非比较计算”的优化思路。选型需综合考虑数据特性、稳定性、空间与性能要求,理解算法背后的不变量与适用前提,方能合理应用。

2026-09-22 15:00:00 424 34

原创 数据结构之排序算法(中):冒泡排序与快速排序,从相邻交换到工程级优化

本文系统对比了冒泡排序与快速排序的核心思想与实现细节。冒泡排序通过相邻元素交换逐步将最大值“上浮”,时间复杂度为O(n²),但具有稳定性与提前终止优化,适用于教学或小规模有序性检测。快速排序基于分治与划分,采用挖坑法、Lomuto、Hoare等不同策略,平均时间复杂度O(nlogn),最坏O(n²),不具稳定性。为提升性能,引入随机化、三数取中选基准、三路划分处理重复元素,并结合内省排序动态切换算法,兼顾效率与最坏情况保障。核心启示:算法应根据输入特征自适应选择策略,体现工程思维的进阶。

2026-09-19 15:01:15 1207 37

原创 数据结构之排序算法(上):从评价指标到插入、希尔、选择与堆排序

本文系统介绍排序基础概念及四种核心排序算法:直接插入排序(稳定、适合小规模有序数据)、希尔排序(改进插入排序,提升效率)、简单选择排序(交换少但不稳定)和堆排序(最坏O(nlogn),原地但不稳)。重点分析各算法思路、时间/空间复杂度与稳定性,并通过性能测试代码对比实际表现。强调排序在工程中的应用价值,如多关键字排序依赖稳定性,同时指出算法选择需结合数据特征与需求。

2026-09-16 17:18:51 610 27

原创 嵌入式(二): ARM、意法半导体与 STM32:嵌入式产业生态是怎样形成的?

本文梳理了从终端需求到STM32选型的嵌入式产业链:终端产品(如手机、汽车、家电)驱动芯片需求,ARM通过IP授权模式提供CPU核心,意法半导体基于ARM架构设计MCU(如STM32系列),再由终端企业或培训机构集成至主板。其中,STM32F103ZET6因引脚丰富、生态成熟,成为教学主流。整个链条涵盖ARM生态、SoC集成、MCU选型与供应链协同,体现嵌入式产业分工协作的本质。

2026-09-13 15:52:49 419 5

原创 嵌入式(一):嵌入式历史与计算机基础:从 ENIAC 到 MCU 四大技术方向

学习嵌入式,不能一开始就只盯着开发板、寄存器和代码。面对一个拥有大量细分方向的行业,首先要建立宏观认知,也就是理解这个行业为什么出现、靠什么力量发展、形成了怎样的产业生态。只有先建立“世界观”,后面学习 GPIO、时钟、串口和定时器时,才能知道这些知识在整个技术体系中的位置。嵌入式系统本质上是计算机发展的一个分支。因此,要理解嵌入式的历史与生态,必须先理解计算机是如何诞生和发展的。故事可以从 ENIAC 讲起。1946 年 2 月 14 日,ENIAC 作为早期电子计算机的代表公开亮相。它由美国宾夕法尼亚大

2026-09-12 16:18:50 428 23

原创 c++语言原理与实践(五):内存管理

本文系统讲解C++内存分布与管理机制,涵盖栈、堆、数据段、代码段等内存区域的划分,解析全局变量、局部变量、静态变量等存储位置。对比C语言malloc/free与C++ new/delete的差异,重点揭示new/delete在自定义类型中自动调用构造/析构函数的底层原理,阐明operatornew/operatordelete的实现机制,并警示混用malloc/free与new/delete可能导致的未定义行为与资源泄漏问题。

2026-09-12 14:21:34 138 29

原创 C++语言原理与实践(四):类与对象(下)

本文深入探讨C++核心特性:构造函数初始化列表的使用与顺序、类型转换机制(含explicit关键字)、static成员变量与函数的特性与访问规则、友元函数与类的突破封装能力、内部类的定义与作用,以及匿名对象的应用场景和编译器优化原理。重点强调初始化列表优先于构造体、引用/const/无默认构造类成员必须用初始化列表、静态成员共享性与无this指针、友元破坏封装但提升灵活性、匿名对象临时性及编译器对拷贝操作的优化策略,全面揭示C++面向对象编程的底层机制与高效实践。

2026-09-09 15:45:16 324 28

原创 Linux系统之网络基础概念(下)

• 发送主机通常将发送缓冲区中的数据。

2026-08-29 17:06:13 279 34

原创 Linux系统之网络基础概念

本文介绍了网络传输的基本流程,包括局域网通信原理、MAC地址和IP地址的作用、数据包封装和解包过程。重点分析了以太网通信中MAC地址的识别机制,以及数据从应用层到物理层的逐层封装和解包流程。文章通过类比教室点名和唐三藏取经等生动例子,解释了IP地址和MAC地址的区别:IP地址标识通信的起点和终点,保持不变;MAC地址则负责当前链路的交付,每经过路由器都会改变。最后展示了跨网络传输时数据包经过路由器的重新封装过程,说明了网络协议栈"后进先出"的特点。全文深入浅出地讲解了网络通信的核心概念和

2026-08-23 15:15:00 440 1

原创 Linux系统之网络基础概念

摘要 本文系统介绍了计算机网络的发展历程与协议概念。第一部分阐述了计算机网络从独立模式到广域网的演进过程,重点描述了局域网和广域网的组成结构。第二部分深入解析了协议概念:1)通过生活实例说明协议是通信双方约定的规则;2)强调标准协议对异构设备互联的重要性;3)详细讲解TCP/IP五层模型(物理层、数据链路层、网络层、传输层、应用层)及各层功能;4)指出协议本质是结构化的数据类型约定,通过分层实现解耦,使不同操作系统设备能相互通信。文章通过图示和代码示例生动展现了协议如何确保通信双方对数据格式的理解一致。

2026-08-20 20:42:32 436 29

原创 MySQL数据库原理与实践(五):内置函数

本文系统介绍了MySQL常用内置函数,包括日期函数(now()、date_add()、datediff()等)、字符串函数(concat()、substring()、replace()等)、数学函数(abs()、rand()、mod()等)及其他实用函数(user()、md5()、ifnull())。通过具体案例演示了这些函数在日期处理、字符串操作、数值计算和数据转换中的应用场景,如计算日期差值、字符串拼接、大小写转换、随机数生成等。掌握这些内置函数能有效简化SQL语句,提高数据处理效率,为数据查询、统计分

2026-08-02 21:17:37 365 44

原创 MySQL数据库原理与实践(四):基本查询

本文介绍了MySQL数据库的基本操作,包括表的增删改查、条件查询、排序、分页以及聚合函数的使用。主要内容包括:1.表的创建、插入和更新操作;2.基本查询语法(全列查询、指定列查询、表达式查询、别名设置);3.where条件筛选(比较运算符、逻辑运算符、范围查询、模糊查询);4.结果排序(order by)和分页(limit);5.聚合函数(count、sum、avg等)和分组统计(group by);6.删除操作(delete和truncate的区别)。文中通过大量实例演示了各种SQL语句的用法,并强调了执

2026-07-28 16:08:10 588 31

原创 数据结构之堆

本文系统介绍了堆数据结构及其应用,主要内容包括:1. 堆的基本概念:作为完全二叉树,堆分为大堆(父节点≥子节点)和小堆(父节点≤子节点),通常用数组实现以优化空间利用和访问效率。2. 核心操作实现:重点讲解了插入时的向上调整和删除堆顶时的向下调整算法,通过动态数组管理堆空间,保持堆的性质不变。3. 建堆方法:比较了向上建堆(O(nlogn))和向下建堆(O(n))的时间复杂度差异。4. 堆排序应用:通过建大堆和反复交换堆顶元素实现升序排序。5. Top-K问题解决方案:使用大小为K的小堆高效筛选海量数据中的

2026-07-27 12:49:58 820 28

原创 硬核拆解:Linux 静态库从原理到实战

简单来讲,库是写好的现有的,成熟的,可以复用的代码,我们可以把它想象成一个装备齐全的工具箱,假设我们正在造一辆汽车时,我们并不需要从零开始去炼钢、做轮胎、造发动机,而是直接从仓库里把现成的轮胎和发动机拿过来组装,那么库就是提供给程序员的就是这些现成的零部件。现实中每个程序都要依赖很多基础的底层库,就比如说我们常用的printf,如果没有了库,那么每个程序员都要自己写printf的实现,这就会导致每个人printf实现的都不相同,所以为了方便写代码,世界上的顶级程序员就联合起来,编写了库,这样以后,

2026-07-24 16:42:05 764 37

原创 MySQL数据库原理与实践(三):表的约束

本文系统介绍了MySQL中表约束的概念与应用,重点讲解了8种核心约束及其使用场景:1. NOT NULL约束:强制字段非空,确保数据完整性 2. DEFAULT约束:为字段设置默认值,简化数据插入 3. COMMENT描述:为字段/表添加说明文档,提高可维护性 4. ZEROFILL属性:数值显示宽度不足时自动前补零 5. PRIMARY KEY主键:唯一标识记录(非空、唯一、单表唯一) 6. AUTO_INCREMENT自增长:自动生成递增值(需配合主键/索引) 7. UNIQUE唯一键:保证字段业务唯一

2026-07-24 16:38:50 865 45

原创 MySQL数据库原理与实践(二):数据类型

本文介绍了MySQL中常用的数据类型,包括数值类型(TINYINT、INT、BIT)、小数类型(FLOAT、DECIMAL)、字符串类型(CHAR、VARCHAR)、日期时间类型(DATE、DATETIME、TIMESTAMP)以及枚举和集合类型(ENUM、SET)。重点分析了各类型的存储范围、语法格式和使用场景,并通过实例演示了数据越界处理、精度差异等特性。文中对比了CHAR和VARCHAR的定长/变长特性,解释了ENUM和SET的数值存储原理,特别强调了SET类型的位图查询方法。整体上,文章系统梳理了M

2026-07-20 17:47:56 1000 21

原创 线程同步与线程互斥(中)

本文介绍了线程同步中的条件变量及其应用,重点讲解了生产者-消费者模型。主要内容包括:1. 线程同步概念:通过条件变量让线程按照特定顺序访问临界资源,避免饥饿问题。2. 条件变量工作原理:当条件不满足时线程释放锁并等待;条件变化时通知等待线程。3. 生产者-消费者模型:通过阻塞队列解耦生产者和消费者,支持并发操作。4. 关键实现细节:使用互斥锁保护共享资源,条件变量实现等待和唤醒机制,注意伪唤醒问题需用while循环判断条件。文章还提供了基于阻塞队列的生产者-消费者模型代码实现示例。

2026-07-16 17:46:44 327 13

原创 数据结构之双链表

本文介绍了双向链表的结构与实现方法,重点对比了链表与顺序表的优缺点。双向链表通过在节点中增加前驱指针,解决了单链表查找前驱节点效率低的问题,并详细实现了初始化、插入、删除等核心操作接口。与顺序表相比,链表在插入删除已知位置节点时效率更高(O(1)),但不支持随机访问;顺序表则具有随机访问优势(O(1)),但插入删除需要移动元素。文中还特别说明了带头双向循环链表的结构优势,并通过代码演示了各种操作的具体实现,最后对两种存储结构的适用场景进行了总结:顺序表适合随机访问和尾部操作,链表更适合频繁的中间插入删除。

2026-07-11 15:32:30 852 19

原创 线程同步与线程互斥(上)

本文主要介绍了线程互斥的原理和锁的概念。首先解释了共享资源、临界资源、临界区等基本概念,以及互斥的必要性。通过代码示例演示了多线程访问共享资源时可能出现的数据不一致问题(如票数减为负数),并分析了原因:非原子操作和线程切换导致。接着介绍了Linux提供的互斥量(mutex)接口,包括初始化、加锁、解锁和销毁操作,并通过修改后的代码展示了如何正确使用互斥锁来保护临界资源。最后探讨了锁的实现原理,说明其原子性保证机制,并提出了一种锁的简单封装方法,采用RAII风格管理锁的生命周期。全文重点阐述了线程互斥的必要性

2026-07-10 13:43:48 1492 19

原创 线程概念与控制(中)

本文介绍了Linux线程控制的基本概念与操作,主要内容包括:1. 线程库引入:Linux通过pthread库在用户层封装线程接口,底层使用轻量级进程(LWP)实现。通过pthread_create创建线程时需链接-lpthread库。 2. 线程控制接口: 线程等待:pthread_join获取线程返回值,需处理退出方式(return、pthread_exit或pthread_cancel)。 线程终止:可通过函数return、pthread_exit或pthread_cancel实现,注意资源释放问题。

2026-06-28 16:43:57 766 17

原创 线程概念与控制(上)

本文系统探讨了Linux线程与进程的核心概念及其底层实现机制。首先从资源视角区分进程(资源分配单位)与线程(CPU调度单位),揭示Linux通过轻量级进程模拟线程的本质。重点剖析了分页存储管理:详细阐述物理内存以4KB页框为单位的管理方式,深入解析多级页表(页目录+页表)的地址转换机制,包括TLB快表的作用和缺页中断处理流程。通过虚拟地址空间管理(mm_struct/vm_area_struct)阐明资源分配本质是地址空间划分。最后对比线程与进程特性:分析线程在创建开销、切换效率等方面的优势,以及存在的健壮

2026-06-27 19:19:57 2138 19

原创 Linux信号机制(终)

本文围绕操作系统核心概念展开:1. 用户态与内核态:解释了进程地址空间的划分(0-3GB用户空间/3-4GB内核空间),通过CPU的CS寄存器权限位实现状态切换(CPL=0内核态/CPL=3用户态),内核空间由所有进程共享但受权限保护。2. 可重入函数:通过链表插入示例说明函数重入可能导致的数据错乱问题,强调信号处理函数应使用只访问局部变量的可重入函数。3. volatile关键字:演示编译器优化可能导致信号修改的全局变量未被及时读取,volatile强制每次从内存读取最新值。4. SIGCHLD信号:分析

2026-06-25 15:47:54 498 11

原创 Linux信号机制(下)

本文深入解析了操作系统的信号捕获机制和运行原理。信号处理并非即时完成,而是由内核在返回用户态前检查并递达,通过修改执行现场让信号处理函数以用户态运行。操作系统通过四种主要入口获得执行权:硬件中断(如键盘输入)、时钟中断(实现进程调度)、异常(如除零错误)和软中断/系统调用。其中,硬件中断实现了外设主动通知机制,时钟中断周期性触发使内核能维护系统状态,而系统调用通过中断指令和调用表实现功能服务。这些机制共同构成了操作系统响应外部事件、管理硬件资源和提供服务的基础架构。

2026-06-18 17:08:15 428 14

原创 Linux信号机制(中)

本文深入探讨了Linux系统中的信号机制,重点分析了信号产生和保存的机制。在信号产生方面,详细讲解了通过alarm函数实现软件条件触发的信号产生方式,并演示了周期性信号处理的实现方法。在信号保存方面,系统阐述了信号从产生到处理的完整生命周期,包括阻塞、未决和递达三种状态,以及对应的三张核心表:block表(阻塞信号集)、pending表(未决信号集)和handler表(信号处理函数表)。通过代码实验验证了信号屏蔽与解除的过程,并解释了SIGKILL和SIGSTOP信号的特殊性。

2026-06-13 18:13:59 618 22

空空如也

空空如也

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

TA关注的人

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