- 博客(11)
- 收藏
- 关注
原创 Linux:进程间通信-消息队列
消息队列本质就是“中间暂存需求的地方”,像餐厅的点餐单盒、小区的快递驿站,核心是 “先存着,再按顺序处理”;它的核心价值是解耦、削峰、异步,避免 “请求方” 和 “处理方” 直接硬碰硬,让两边都按自己的节奏来;生活中所有 “先排队、再处理” 的场景,都是消息队列的底层逻辑,理解了这个,再看编程里的消息队列就很容易了。1.消息队列中的消息:读取一个消息,则直接在这个消息队列中删除这个消息2.读取的消息类型不存在,终端会阻塞住解决:让消息队列中有该类型的消息。
2026-03-21 16:02:43
426
原创 数据结构:堆排序
堆的物理存储是数组,逻辑结构是完全二叉树(除最后一层外每层满,最后一层节点靠左),数组下标规则(下标从 0 开始):父节点下标:左孩子下标:右孩子下标:大顶堆:任意父节点值 ≥ 子节点值(堆排序升序用)小顶堆:任意父节点值 ≤ 子节点值(堆排序降序用)堆化(Heapify):将以 i 为根的子树调整为符合堆性质的结构(核心是 “下沉”);建堆:将无序数组从最后一个非叶子节点开始,自下而上完成堆化,构建完整堆。堆排序本质是利用堆的 “极值特性” 逐步筛选有序元素,分两步完成:建堆阶段:将无序数组构建为大顶堆(
2026-03-18 17:19:02
396
原创 数据结构:冒泡排序
这个算法是通过「交换标记(swapped)」检测数组是否提前有序,一旦有序就立即终止循环,避免执行后续所有无效的轮次,这是它最核心的优势。核心思路记录每一轮最后一次发生交换的位置,这个位置之后的元素已经是有序的,下一轮只需比较到这个位置即可,从而大幅缩小每一轮的比较范围,进一步减少内层循环次数。/** 冒泡排序优化版2:记录最后交换位置,缩小比较范围*/#include<assert.h>//assert()的头文件assert(arr!=NULL);// 确保数组非空return;
2026-03-17 20:48:51
484
原创 Linux:进程间通信-管道vs共享内存vs消息队列
这三个都是进程间通信的方式p.s进程间通信 简称为IPC进程间通信,即多个进程之间传输数据的方式:1.管道匿名管道(pipe):仅适用于有血缘关系的进程(父子/兄弟进程),半双工通信,随进程退出销毁;有名管道(FIFO):适用于任意独立进程(无血缘限制),全双工通信,文件系统可见(数据仅存于内存)。2.共享内存适用于任意独立进程(通过内核key标识访问);性能最高(零拷贝),但无内置同步/互斥,需配合信号量实现进程间的同步与互斥。3.消息队列适用于任意独立进程(通过内核key标识访问)
2026-03-16 14:49:08
363
原创 数据结构:简单选择排序
核心逻辑:分已排序 / 未排序区间,每轮找未排序区间的最值,交换到已排序区间末尾;关键坑点:记录最值下标、避免自身交换、注意不稳定性;优化方向:双向选择排序(减少循环次数)、堆排序(降低时间复杂度);适用场景:小数据量、内存受限、交换成本高且无需稳定排序的场景。选择排序是入门级排序算法,虽然效率不高,但理解它的 “选择 - 交换” 思路,能为后续学习堆排序、快速排序打下基础。
2026-03-14 20:45:56
435
原创 数据结构:哈希拓展
布隆过滤器 = 超大二进制矢量(位数组) + 若干独立哈希函数二进制矢量:有序的二进制位集合(1 字节 = 8 位),极致省空间(100 万条数据仅 1.2MB);哈希函数:将元素映射到矢量的多个位置,置 1 / 查值实现存在性判断。一致性哈希:核心解决 “分布式节点增减导致的数据全量迁移”,虚拟节点是关键优化;布隆过滤器:核心解决 “大数据量快速存在性判断”,公式计算参数 + 双层校验(布隆 + 真实数据)是落地关键;
2026-03-08 17:46:56
202
原创 Linux:匿名管道和命名管道
匿名管道没有实体文件,仅存在于内存中,只能用于有血缘关系的进程(父子进程、兄弟进程),随进程创建、随进程销毁。命名管道有实体磁盘文件(伪文件,仅标识管道),不限制进程关系,任意两个无关进程都可通过它通信,因此叫命名管道。单向、阻塞、先进先出、内核缓冲区传输匿名管道轻量简单,适合父子进程内部通信;命名管道突破亲缘限制,适合任意进程间数据传递。二者是 Linux 进程通信的入门核心,掌握原理与关闭机制,是理解进程间协作的关键。
2026-03-08 12:07:19
95
原创 C语言重点知识梳理
核心定义C 语言无专门 “字符串类型”,字符串是以空字符'\0'(ASCII 值为 0)结尾的字符数组'\0'是字符串的终止标志,不计入字符串长度,但占用内存空间与字符数组的区别字符数组:仅存储字符序列,未必以'\0'结尾(如字符串:字符数组 + 末尾'\0'(如总结:逻辑关系上,字符串包含于字符数组。即字符数组不一定是字符串,但是字符串一定是字符数组。1.核心概念:(1)指针是地址的别名(2)指针变量是存储内存地址的变量(本质是“地址容器”,其值为另一个变量的内存地址)
2025-10-16 10:21:11
1411
原创 位运算总结
特点:有1即为1 0b1010|0b1100 ---> 0b1110。(6)^ 异或运算符 ---> 二进制位 相同位上值相同0,不同结果1。(3) ~ 取反 所有数值位都取反 ~val ~-1 ----> 0。(4)& 按位与 n&m 二进制位 相同位上值有一方是0.该位结果0。(5)| 按位或 n|m 二进制位 相同位上值有一方是1,该位结果1。(1) << 左移符号 val<<n val * 2的n次方。(2) >> 右移符号 val >> n val/2的n次方。(1)一个数与自身异或,结果为0。
2025-10-13 10:13:50
473
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅