- 博客(78)
- 收藏
- 关注
原创 【Linux篇】线程互斥、同步与线程池设计:原理与实践
本文系统性地介绍了多线程编程中的三大核心机制:线程互斥、线程同步与线程池实现。首先,从互斥的相关背景概念入手,深入剖析了互斥量(mutex)的原理、实现及其封装方法,为解决资源竞态问题提供基础。其次,探讨了线程同步机制,重点讲解了条件变量、竞态条件、相关函数以及POSIX信号量的使用,确保线程间的有序协作。最后,结合实际应用,阐述了日志系统的概念,并详细设计了线程池的架构与实现,特别分析了线程安全的单例模式及其多种实现方式。
2025-12-15 18:39:37
885
29
原创 【Linux篇】线程深度解析:概念、原理与实践
本篇文章主要介绍了线程的概念包括什么是线程,分页式存储管理,线程的优缺点,线程异常以及线程的用途。对比了Linux下的进程和线程。再到线程的控制以及线程的ID以及线程的地址空间分布,最后实现了对线程的封装。
2025-12-07 22:45:58
1131
38
原创 【Linux篇】信号机制深度剖析:从信号捕捉到SIGCHLD信号处理
本文详细介绍了Linux信号捕捉的处理流程和操作系统运行机制。信号捕捉分为三种情况:忽略信号时只需清除pending位;默认信号通常终止进程;自定义捕捉会切换用户态执行handler。操作系统通过硬件中断(如时钟中断)驱动进程调度,本质上是一个死循环。CPU内部通过软中断处理错误(如除零、野指针),系统调用则通过特定指令(int/syscall)主动触发中断。文章还解释了中断控制器、中断向量表等关键概念,阐明了操作系统如何基于中断机制实现进程管理和信号处理。
2025-11-12 18:15:23
1605
61
原创 904. 水果成篮
使用滑动窗口算法优化暴力解法:维护哈希表统计窗口内水果种类及数量,右指针遍历数组时更新哈希表,当种类超过2时移动左指针收缩窗口,保证窗口合法性。最终窗口最大值即为结果。该算法高效地将时间复杂度优化至O(n),空间复杂度O(1)。核心在于哈希表动态维护窗口内元素,确保快速判断和调整。
2025-11-10 22:36:11
933
9
原创 【Linux篇】信号从哪来?到哪去?—— Linux信号的产生方式与保存机制
本篇文章主要介绍了Linux中信号产生的方式:1.键盘产生2.系统调用产生3.硬件异常产生4.软件条件产生。以及信号的保存,pending表,block表,handler表,以及信号集操作函数。
2025-11-09 22:01:00
1491
44
原创 面试题 16.25. LRU 缓存
题目要求实现一个LRU(最近最少使用)缓存机制,支持在O(1)时间内完成get和put操作。解决方案结合哈希表和双向链表:哈希表实现快速查找,双向链表维护使用顺序。get操作时若key存在,将对应节点移到链表头部;put操作时若key不存在则创建新节点并添加到头部,若超出容量则删除尾部节点。使用伪头尾节点简化操作,确保时间复杂度为O(1)。
2025-11-09 21:44:35
360
3
原创 88. 合并两个有序数组
本文介绍了合并两个有序数组的三种解法。解法一直接合并后排序,时间复杂度较高(O((m+n)log(m+n)))。解法二使用双指针方法,按顺序比较元素并存入临时数组,最后复制回nums1,时间复杂度O(m+n)。解法三优化空间复杂度,采用逆向双指针,从后往前填充nums1,无需额外空间。三种方法各有优劣,其中逆向双指针最优,既保证时间复杂度又节省空间。
2025-11-09 17:33:09
266
原创 【Linux篇】System V IPC详解:共享内存、消息队列与信号量
本篇文章主要介绍了system V版本的共享内存,消息队列,信号量,以及它们各自的接口使用。
2025-11-08 13:47:17
1147
38
原创 【Linux篇】进程间通信 - 管道,匿名管道与命名管道的全面解析
本篇文章主要介绍了进程间通信的目的以及本质,介绍了什么是管道,以及基于匿名管道实现的进程池,基于命名管道实现的server-client通信。
2025-10-30 16:26:23
957
38
原创 【Linux篇】ELF文件与程序加载:理解链接过程中的静态库,动态库及目标文件
本篇文章主要介绍了静态库和动态库,以及ELF文件的形成与加载,以及静态链接和动态链接。
2025-10-28 16:59:24
1296
39
原创 【C++】哈希表的实现【开放定址法vs链地址法】
本文主要介绍了哈希表的概念:包括直接定址法的介绍,什么是哈希冲突,什么是负载因子,什么是哈希函数以及哈希函数的几个应用法则。之后介绍了如何处理哈希冲突,开放定址法和链地址法的介绍以及代码实现。
2025-10-21 21:44:26
1352
40
原创 【Linux篇】- Ext系列文件系统
本篇文章主要介绍了磁盘的逻辑结构,到引入文件系统和ext2文件系统,目录名和文件名的关系,什么是路径解析,路径缓存等。
2025-09-22 17:38:39
1302
27
原创 【递归,搜索与回溯算法篇】专题(一) - 递归
本篇文章主要介绍了递归,搜索与回溯算法中的递归问题,主要包括:1.汉诺塔问题2. 合并两个有序链表3.反转链表4.两两交换链表中的节点5.Pow(x,n)
2025-05-09 18:58:53
1866
65
原创 【MySQL】005.MySQL表的约束(上)
本篇文章主要介绍了MySQL中表的约束中的 :空属性,默认值,列描述,zerofill,主键约束。
2025-04-22 18:44:56
2489
74
原创 【C++】继承 - 从基类到派生类的代码复用逻辑
本篇文章主要介绍了继承的概念和定义,继承和派生类之间的相互转化,继承中的作用域,派生类的默认成员函数,继承与友元,继承于静态成员,多继承以及菱形继承,继承和组合的问题。
2025-04-13 13:02:36
1793
79
原创 【C++】stack和queue
本文主要是stack和queue以及优先级队列的介绍以及使用,还谈到了容器适配器,以及deque的简单介绍
2025-04-08 18:49:44
1823
64
原创 【Linux篇】基础IO - 揭秘重定向与缓冲区的管理机制
本文主要介绍了重定向,dup2接口,进一步理解“一切皆文件”,以及什么是缓冲区和为什么要引入缓冲区。
2025-04-07 17:49:28
2572
61
原创 【动态规划篇】- 路径问题
本篇文章介绍了动态规划中的路径问题,其中包括 62.不同路径 63.不同路径|| LCR 166.珠宝的最高价值 931.下降路径最小和 64.最小路径和 174.地下城游戏
2025-03-29 12:53:24
2811
70
原创 【Linux篇】从冯诺依曼到进程管理:计算机体系与操作系统的核心逻辑
解析冯诺依曼体系的硬件组成与数据流,延伸讨论操作系统的“先描述,再组织”的管理思想,以进程PCB为例说明如何管理资源
2025-03-10 12:59:56
2263
69
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅