logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

深入C语言底层系列8-滑动窗口(双指针)算法

滑动窗口(双指针)算法是一种高效处理数组/字符串子区间问题的技术,通过动态调整窗口边界(left和right指针)将时间复杂度优化至O(n)。核心原理包括固定/动态大小窗口的扩展与收缩机制,通过哈希表或数组记录状态。典型应用包括无重复字符最长子串、最小覆盖子串等问题。算法实现时需注意边界处理、状态同步更新和性能优化(如数组代替哈希表)。该算法能有效解决多种子数组/子串问题,是处理高频面试题的重要工

文章图片
#算法#c语言#c++
深入C语言底层系列14-环形缓冲区

嵌入式开发中,环形缓冲区是处理异步数据流的关键数据结构。文章详细解析了其核心结构(头尾指针、固定容量)和四大操作:初始化、写入、读取及空间计算。特别强调嵌入式场景应用技巧:ISR安全写入、RTOS任务同步及死锁防御。针对常见陷阱(缓存一致性、空满判断)给出解决方案,并比较不同类型缓冲区的性能与内存权衡。最后通过自测题检验理解,揭示环形缓冲区以空间换确定性的设计精髓,是实时系统不可或缺的高效方案。

文章图片
#microsoft#服务器#windows
深入C语言底层系列7-哨兵节点

哨兵节点是链表实现中的关键优化技术,通过在链表头部添加不存储数据的辅助节点(DummyHead),统一操作逻辑并减少边界条件判断。其核心优势包括:消除头插/头删的特殊处理、避免二级指针传递、防止空指针异常,显著提升代码简洁性和健壮性。哨兵节点虽消耗少量额外内存(8-16字节),但能优化缓存命中率并大幅降低代码复杂度,特别适合频繁操作链表头部的场景。在双向链表中还可扩展为头尾双哨兵结构。该技术以空间

文章图片
#c语言#网络
深入C语言底层系列14-环形缓冲区

嵌入式开发中,环形缓冲区是处理异步数据流的关键数据结构。文章详细解析了其核心结构(头尾指针、固定容量)和四大操作:初始化、写入、读取及空间计算。特别强调嵌入式场景应用技巧:ISR安全写入、RTOS任务同步及死锁防御。针对常见陷阱(缓存一致性、空满判断)给出解决方案,并比较不同类型缓冲区的性能与内存权衡。最后通过自测题检验理解,揭示环形缓冲区以空间换确定性的设计精髓,是实时系统不可或缺的高效方案。

文章图片
#microsoft#服务器#windows
深入C语言底层系列23-信号与信号量

C语言中的信号与信号量是两种重要但完全不同的机制。信号是异步事件通知机制,用于进程间通信和异常处理(如SIGINT、SIGKILL等),通过signal()/sigaction()注册处理函数。信号量是同步原语,用于控制对共享资源的并发访问,分为POSIX信号量(sem_init/sem_wait)和System V信号量。关键区别在于:信号是瞬时事件通知(非阻塞),信号量是持续的同步工具(可能阻

文章图片
#算法
到底了