
数据结构:二叉树与堆
树的基本概念、二叉树的定义与性质、特殊二叉树类型(满、完全、排序),以及堆的概念与实现。重点讲解了基于数组的顺序存储结构,并通过 C 语言代码演示了堆的初始化、插入(向上调整)、删除(向下调整)等核心操作,阐述了建堆算法的关键步骤。

树的基本概念、二叉树的定义与性质、特殊二叉树类型(满、完全、排序),以及堆的概念与实现。重点讲解了基于数组的顺序存储结构,并通过 C 语言代码演示了堆的初始化、插入(向上调整)、删除(向下调整)等核心操作,阐述了建堆算法的关键步骤。
介绍单向链表的基础概念与 C 语言实现。涵盖节点定义、链表创建与销毁、尾部/中间/头部插入、节点查找及遍历打印。重点解析指针操作细节,如插入时后继节点的保存顺序、销毁时的内存释放流程,以及避免野指针的关键点。最后提供双向链表与循环链表的概念扩展及完整可运行代码示例。

介绍 Linux 进程标识符 PID 的获取与管理方法,深入解析 fork 系统调用创建子进程的原理,涵盖父子进程代码共享、写时拷贝技术及返回值机制。同时阐述进程调度器的工作原理及 Bash 执行命令时的 fork 流程,结合代码示例帮助理解进程并发与资源管理。

介绍在 Mac 系统下通过虚拟机运行 Windows 以搭建 Keil uVision5 和 STM32 开发环境的完整流程。涵盖虚拟机安装、Keil 软件部署、芯片支持包配置、许可证激活以及 ST-Link 调试器驱动安装与故障排查。重点解决了 ST-Link USB Command Error 等常见硬件识别问题,并提供常见问题解决方案,帮助开发者快速完成嵌入式开发环境配置。
详细说明了如何在 STM32 开发流程中统一配置 STM32CubeMX、Keil MDK、Git 和 VS Code 为 UTF-8 编码,以防止中文注释乱码及串口调试软件显示异常。内容涵盖各工具的具体参数设置、系统区域调整建议以及团队代码规范配置方法。

C 语言中指针与函数的核心机制。内容包括指针作为参数实现地址传递修改外部变量,指针函数返回动态内存地址,以及函数指针实现回调函数解耦。同时深入分析栈区、堆区等内存分布逻辑,并总结返回局部变量指针、签名不匹配及内存泄漏三大常见陷阱及避坑方案。

详细讲解了 Linux 进程控制的核心知识,包括进程创建(fork)、进程终止(exit/_exit)、进程等待(wait/waitpid)及进程替换(exec 系列)。文章阐述了 fork 的返回值机制与写时拷贝原理,解释了 exit 与_exit 在缓冲区刷新上的区别。重点介绍了父进程如何通过 wait 和 waitpid 回收子进程资源并获取退出状态,涵盖阻塞与非阻塞模式。最后说明了 exec 系列函数实现程序替换的原理、参数差异…

一款基于 STM32F103 芯片的全自研高速电动滑板开源项目。系统包含滑板和遥控器两部分,支持无线控制,最大时速 40km/h,续航约 25km。硬件采用电调板、分电板和遥控板三块 PCB,使用 IR2104 半桥芯片驱动三相无刷电机。软件未使用 RTOS,通过手动时间管理与 DMA 实现多任务。核心功能包括六步换向法电机控制、弱场滑行控制、NTP 时间同步、ADC 采样及 Flash 数据存储。机械结构采用碳纤维板 CNC 加工,内…
介绍数据结构入门知识,重点讲解线性结构(数组、链表、栈、队列)的核心特性与C语言实现。涵盖顺序存储与链式存储的区别,时间复杂度分析,以及动态数组扩容、单链表操作、顺序栈与链式队列的代码示例。包含括号匹配实战案例,总结内存管理、空指针处理等常见问题,并提供进阶学习路线,适合底层开发与嵌入式场景参考。

数据结构中顺序表和链表的经典算法题。涵盖双指针法在数组中的应用(如移除元素、去重、合并),以及快慢指针、三指针法在链表操作中的实现(如反转、找中间节点、判环、相交检测)。提供了详细的思路分析、时间复杂度说明及 C 语言代码示例,并包含哨兵位优化技巧。

探讨了 Linux 高并发服务器的实现原理及演进历程。首先回顾了多进程和多线程等传统模型及其优缺点,指出阻塞式 IO 是主要瓶颈。随后重点介绍了多路 IO 转接机制,包括 select、poll 和 epoll,详细分析了它们的工作原理、性能差异及适用场景。文章通过 Nginx、Redis 等案例展示了 epoll 在实际中的应用,并提供了边缘触发、连接管理等性能优化技巧。最终强调了理解底层机制对构建高性能服务器的重要性。

深入解析 Linux 读写锁机制,涵盖基础概念、实现原理及 API 使用。通过对比互斥锁,阐述读写锁在读多写少场景下的性能优势。提供配置管理与缓存系统实战案例,分析常见陷阱如写者饥饿与锁升级问题。介绍自旋锁与 RCU 等高级替代方案,并给出最佳实践与调试技巧,帮助开发者在高并发系统中合理选择同步原语。

STM32Cube AI Studio 是 ST 推出的独立桌面工具,用于 STM32 设备上 AI 模型的准备、优化与验证。详细演示了从软件安装、环境检查到新建工程、模型导入、参数配置、性能分析及代码生成的全流程。支持 ONNX、TFLite 等模型格式,提供量化、内存优化及目标板验证功能,可生成优化的 C 代码或完整工程,助力边缘 AI 开发。

介绍 C 语言中带头双向循环链表的结构与实现。通过哨兵位简化边界处理,利用双向指针实现 O(1) 复杂度的头尾插入删除操作。涵盖节点定义、函数接口、核心逻辑及测试代码,帮助理解该数据结构的应用。
介绍递归算法的核心概念、工作原理及设计步骤。递归指函数调用自身解决子问题,需满足子问题结构一致、规模递减及明确终止条件三个条件。通过 C 语言阶乘和斐波那契数列示例,详细解析了递归在栈内存中的入栈(递推)与出栈(回溯)机制,包括栈帧组成及销毁过程。文章旨在帮助开发者深入理解递归的执行流程与实现细节。
TCP 协议的基本概念、特征及报文格式,详细解析了三次握手与四次挥手过程。内容涵盖 TCP 状态机、常用 Socket 函数(socket、bind、listen、accept 等)、字节序转换以及缓冲区机制。最后提供了基于多线程和多进程的多连接服务端 C 语言示例代码,帮助读者理解 Linux 网络编程的核心实现。

详细讲解堆(Heap)数据结构。堆是特殊的完全二叉树,分大顶堆与小顶堆,用于优先队列、Top-K 及堆排序。文章阐述基于数组的物理存储逻辑及节点下标关系。核心涵盖初始化、插入(上浮)、删除(下沉)及释放操作,提供完整 C 语言代码实现与思维逻辑分析,帮助读者掌握堆的原理与应用。

解决两个单链表相交节点查找问题。提供两种解法:长度差法和双指针法。长度差法通过计算长度对齐起点后遍历;双指针法利用路径总长相等特性,无需计算长度。两者时间复杂度均为 O(m+n),空间复杂度 O(1)。重点在于比较节点地址而非值,并处理空链表边界情况。

详细总结了 C 语言中顺序表的定义、特点及基本操作实现。内容包括顺序表的数据结构定义、初始化、插入、删除、查找和遍历功能的代码实现。文章分析了顺序表在随机访问上的优势以及插入删除时的内存开销问题,并给出了完整的应用示例代码,适合需要快速访问元素且数据量相对固定的场景。

树与二叉树的基本概念、性质及存储结构,重点讲解了完全二叉树与堆的定义。内容涵盖树的表示法(如孩子兄弟表示法)、满二叉树与完全二叉树的区别,以及二叉树的顺序和链式存储。最后通过 C 语言实现了堆的数据结构,包括建堆、插入(向上调整)和删除(向下调整)算法的核心逻辑。