Andy's Blog

个人技术分享

深入理解 Linux 进程的本质,涵盖 task_struct (PCB)、进程状态转换、fork 系统调用以及进程地址空间与写时拷贝原理。

阅读全文 »

探讨“一切皆文件”的设计哲学,详细解析文件描述符 fd、系统级调用 (open/write/read) 与语言层缓冲区的刷新策略。

阅读全文 »

总结 PATH、HOME、USER 等常见环境变量的作用,以及如何通过 C 语言 main 函数参数或 getenv 获取系统环境变量。

阅读全文 »

掌握 Makefile 的依赖关系与方法、伪目标 .PHONY、自动化变量 以及如何利用时间戳规则触发重新编译。

阅读全文 »

整理了 GDB 的核心断点操作、调试指令、监视变量以及临时修改变量值等实用技巧,提升代码排错效率。

阅读全文 »

详细讲解预处理、编译、汇编、链接四个阶段,并对比动静态库(.so 与 .a)的优缺点及其对可执行程序的影响。

阅读全文 »

解析力扣(LeetCode)热门题目“有效的括号”。本文阐述了如何利用栈(Stack)的后进先出特性实现符号匹配,并详细讨论了边界情况处理(如空字符串、单括号等),强调了在 C 语言中手动管理内存、防止内存泄漏的重要性。

阅读全文 »

本文详细讲解了堆的结构和操作用C语言的基本实现本文深入浅出地讲解了完全二叉树中的堆(Heap)结构。涵盖大堆与小堆的逻辑定义、基于数组的物理存储实现,以及核心算法——向上调整(AdjustUp)与向下调整(AdjustDown)的 C 语言代码详解。此外,文章还揭秘了时间复杂度为 O(N) 的高效建堆算法与堆排序原理。

阅读全文 »

算法题目实战:如何利用两个队列(Queue)模拟实现栈(Stack)的后进先出功能?本文通过逻辑图示讲解了队列间数据交替转移的原理,并巧妙运用“假设法”简化代码实现,助你攻克力扣(LeetCode)经典面试题。

阅读全文 »
0%