自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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篇】软链接vs硬链接:Linux文件系统中的两种引用机制

本文主要介绍了什么是软链接以及什么是硬链接

2025-10-21 21:10:52 414 17

原创 【Linux篇】- Ext系列文件系统

本篇文章主要介绍了磁盘的逻辑结构,到引入文件系统和ext2文件系统,目录名和文件名的关系,什么是路径解析,路径缓存等。

2025-09-22 17:38:39 1302 27

原创 【C++】红黑树

本篇文章介绍了什么是红黑树,以及红黑树的实现。

2025-09-21 14:54:03 1098 32

原创 【C++】AVL树

本文主要介绍了AVL树的概念以及AVL树的实现。

2025-09-13 22:24:25 941 3

原创 【C++】map和set的使用

本篇文章最主要介绍了什么是序列式容器,什么是关联式容器以及map和set的使用。

2025-05-18 20:32:14 2493 70

原创 【递归,搜索与回溯算法篇】专题(一) - 递归

本篇文章主要介绍了递归,搜索与回溯算法中的递归问题,主要包括:1.汉诺塔问题2. 合并两个有序链表3.反转链表4.两两交换链表中的节点5.Pow(x,n)

2025-05-09 18:58:53 1866 65

原创 【C++】二叉搜索树 - 从基础概念到代码实现

本篇文章主要介绍了什么是二叉搜索树,二叉搜索树的增删查,以及二叉搜索树的底层实现。

2025-04-26 19:47:18 1439 65

原创 【MySQL】005.MySQL表的约束(上)

本篇文章主要介绍了MySQL中表的约束中的 :空属性,默认值,列描述,zerofill,主键约束。

2025-04-22 18:44:56 2489 74

原创 【C++】多态 - 从虚函数到动态绑定的核心原理

本篇文章主要介绍了多态的概念以及多态的定义及实现,虚函数和抽象类,多态的原理等内容。

2025-04-20 16:06:31 2130 65

原创 【MySQL】004.MySQL数据类型

本篇文章主要介绍了MySQL中的数据类型的分类以及各种数值的类型。

2025-04-19 19:56:09 5586 49

原创 【MySQL】003. MySQL操作库

本文只要介绍了数据库中对库的操作以及对表的操作

2025-04-16 22:16:21 1013 57

原创 【C++】继承 - 从基类到派生类的代码复用逻辑

本篇文章主要介绍了继承的概念和定义,继承和派生类之间的相互转化,继承中的作用域,派生类的默认成员函数,继承与友元,继承于静态成员,多继承以及菱形继承,继承和组合的问题。

2025-04-13 13:02:36 1793 79

原创 【MySQL】002.MySQL数据库基础

本文主要介绍了什么是数据库以及数据库的基本使用,服务器,数据库,表之间的关系

2025-04-11 14:37:38 1840 49

原创 【MySQL】001.MySQL安装

本篇文章介绍了 MySQL在Ubuntu 20.04 环境下的安装方法

2025-04-10 18:52:17 1536 38

原创 【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

原创 【Linux篇】基础IO - 文件描述符的引入

本篇文章从理解文件到C语言文件的接口再到系统文件的I/O,引出了文件描述符

2025-04-06 13:00:08 2312 60

原创 【Linux篇】自主Shell命令行解释器

本文介绍了一个基本的shell命令行解释器的实现方法

2025-04-02 18:10:15 4138 65

原创 【动态规划篇】- 路径问题

本篇文章介绍了动态规划中的路径问题,其中包括 62.不同路径 63.不同路径|| LCR 166.珠宝的最高价值 931.下降路径最小和 64.最小路径和 174.地下城游戏

2025-03-29 12:53:24 2811 70

原创 【递归,搜索与回溯算法篇】- 名词解释

本篇文章主要介绍了什么是递归,以及为什么会用到递归等问题

2025-03-21 17:13:38 528 15

原创 【Linux篇】进程控制

本篇文章介绍了linux里面的进程创建,进程终止,进程等待,进程替换等细节问题

2025-03-20 14:48:41 2280 62

原创 【动态规划篇】91. 解码方法

本篇文章讲解了动态规划中91.解码方法这道题的解题思路和代码实现

2025-03-20 14:30:25 1106 34

原创 【Linux篇】环境变量与地址空间

linux中的环境变量与地址空间

2025-03-17 11:11:11 1596 71

原创 【动态规划篇】746.使用最小花费爬楼梯

746.使用最小花费爬楼梯

2025-03-14 10:13:59 1101 8

原创 【Linux篇】进程状态(僵尸进程,孤儿进程),优先级与调度机制

解析了Linux中进程的多种状态,及优先级机制与调度方法

2025-03-13 10:38:08 2308 74

原创 【动态规划篇】面试题 08.01. 三步问题

面试题08.01.三步问题

2025-03-13 08:55:04 428 2

原创 【动态规划篇】1137. 第 N 个泰波那契数

1137.第N个泰波那契数

2025-03-12 15:46:58 1012 46

原创 【Linux篇】从冯诺依曼到进程管理:计算机体系与操作系统的核心逻辑

解析冯诺依曼体系的硬件组成与数据流,延伸讨论操作系统的“先描述,再组织”的管理思想,以进程PCB为例说明如何管理资源

2025-03-10 12:59:56 2263 69

原创 【Linux篇】调试器-gdb/cgdb使用

Linux中gdb和cgdb的介绍

2025-03-09 17:08:12 1855 48

空空如也

空空如也

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

TA关注的人

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