<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[记录代码路上的点滴思考。]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/bit_pan</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; bit_pan]]></copyright><item><title><![CDATA[STM32 I2C 通信协议详解：从通信过程到开漏输出、线与和总线仲裁]]></title><link>https://blog.youkuaiyun.com/bit_pan/article/details/169944002</link><guid>https://blog.youkuaiyun.com/bit_pan/article/details/169944002</guid><author>bit_pan</author><pubDate>Tue, 03 Nov 2026 20:48:07 +0800</pubDate><description><![CDATA[本文详解STM32 I2C通信协议，涵盖其同步串行、双线（SDA/SCL）特性及主从架构。重点解析起始/停止信号、地址传输、读写方向位、应答机制与重复起始信号的应用。深入探讨开漏输出原理及其在总线“线与”逻辑中的关键作用，确保多设备共用总线时无电平冲突，并实现总线仲裁，保障通信可靠性。]]></description><category></category></item><item><title><![CDATA[读懂 USART]]></title><link>https://blog.youkuaiyun.com/bit_pan/article/details/169362114</link><guid>https://blog.youkuaiyun.com/bit_pan/article/details/169362114</guid><author>bit_pan</author><pubDate>Wed, 28 Oct 2026 22:31:54 +0800</pubDate><description><![CDATA[本文以STM32F103ZET6为例，详解USART（通用同步/异步收发器）原理与应用。USART是实现串行通信的硬件模块，支持异步模式（常用）和同步模式，具备全双工通信能力。通过约定波特率、帧格式（起始位、数据位、停止位等），收发双方可在无时钟线情况下实现可靠数据传输。数据发送依赖TDR寄存器与发送移位寄存器，接收则通过RDR寄存器获取；状态寄存器（如TXE、RXNE、TC）用于管理发送/接收状态。使用前需开启时钟并配置相关寄存器，确保波特率、数据位、校验方式等参数一致。]]></description><category></category></item><item><title><![CDATA[RCC与时钟树详解]]></title><link>https://blog.youkuaiyun.com/bit_pan/article/details/168139325</link><guid>https://blog.youkuaiyun.com/bit_pan/article/details/168139325</guid><author>bit_pan</author><pubDate>Fri, 16 Oct 2026 23:13:29 +0800</pubDate><description><![CDATA[本文详解STM32的RCC时钟系统，涵盖时钟源（HSI、HSE、LSI、LSE）、PLL倍频与分频机制，以及基于时钟树的时钟分配结构。通过RCC寄存器（如RCC_CR、RCC_CFGR、APB2ENR等）实现时钟选择、使能与配置，支持按需开启外设时钟，提升能效。核心在于：时钟源生成、时钟树分配、寄存器精准控制，共同保障各模块稳定运行。]]></description><category></category></item><item><title><![CDATA[MCU 中的统一地址编址：从地址空间到总线与地址译码]]></title><link>https://blog.youkuaiyun.com/bit_pan/article/details/167174230</link><guid>https://blog.youkuaiyun.com/bit_pan/article/details/167174230</guid><author>bit_pan</author><pubDate>Tue, 06 Oct 2026 15:50:30 +0800</pubDate><description><![CDATA[MCU采用统一地址编址，将Flash、SRAM及外设寄存器映射至同一地址空间，使CPU可通过普通读写指令访问外设（如GPIOA->ODR = 1）。实际通过总线传输地址、数据与控制信号，由地址译码器判断目标模块（如GPIOA），再结合寄存器偏移定位具体寄存器。该机制实现高效访问，是ARM Cortex-M等架构的核心设计之一。]]></description><category></category></item><item><title><![CDATA[GPIO 是什么？]]></title><link>https://blog.youkuaiyun.com/bit_pan/article/details/167081341</link><guid>https://blog.youkuaiyun.com/bit_pan/article/details/167081341</guid><author>bit_pan</author><pubDate>Sun, 04 Oct 2026 21:55:30 +0800</pubDate><description><![CDATA[GPIO介绍及其原理。]]></description><category></category></item><item><title><![CDATA[C++ 核心知识点思维导图]]></title><link>https://blog.youkuaiyun.com/bit_pan/article/details/165006817</link><guid>https://blog.youkuaiyun.com/bit_pan/article/details/165006817</guid><author>bit_pan</author><pubDate>Fri, 11 Sep 2026 20:57:04 +0800</pubDate><description><![CDATA[C++思维导图。]]></description><category></category></item><item><title><![CDATA[手写 C++ 内存泄漏检测器]]></title><link>https://blog.youkuaiyun.com/bit_pan/article/details/161634206</link><guid>https://blog.youkuaiyun.com/bit_pan/article/details/161634206</guid><author>bit_pan</author><pubDate>Fri, 05 Jun 2026 00:18:10 +0800</pubDate><description><![CDATA[本文介绍了三种检测C++内存泄漏的方法：宏定义替换法、Hook系统调用法和AddressSanitizer工具法。宏定义方法通过重定义malloc/free记录分配位置；Hook方法劫持系统调用获取调用堆栈；ASan是Google开发的高效检测工具，能自动发现多种内存错误。文章还提出了一个内存检测器的设计方案，包含malloc/free hook、new/delete hook、内存越界检测等功能模块。这三种方法由浅入深，从原理到实践，为开发者提供了检测内存泄漏的有效手段。]]></description><category></category></item><item><title><![CDATA[从零实现Nginx风格内存池]]></title><link>https://blog.youkuaiyun.com/bit_pan/article/details/161400500</link><guid>https://blog.youkuaiyun.com/bit_pan/article/details/161400500</guid><author>bit_pan</author><pubDate>Tue, 26 May 2026 22:50:19 +0800</pubDate><description><![CDATA[本文将从为什么需要内存池讲起，重点探讨内存池的设计哲学，并详细拆解其实现方案，从而搭建起读者对内存池从理论到实践的完整认知模型。]]></description><category></category></item><item><title><![CDATA[从零实现 Reactor + ThreadPool TCP 服务器]]></title><link>https://blog.youkuaiyun.com/bit_pan/article/details/161321489</link><guid>https://blog.youkuaiyun.com/bit_pan/article/details/161321489</guid><author>bit_pan</author><pubDate>Sat, 23 May 2026 16:42:36 +0800</pubDate><description><![CDATA[本文介绍了如何从零实现一个基于Reactor模型和线程池的TCP服务器。首先分析了传统阻塞IO模型和一连接一线程模型的局限性，指出它们在高并发场景下的性能问题。然后引入非阻塞IO和IO多路复用技术，提出Reactor模型作为解决方案。Reactor模型由多路复用器、事件分发器和事件处理器三部分组成，能够高效管理大量并发连接。进一步引入线程池来提升性能，将IO操作与业务处理分离，Reactor线程负责IO操作，线程池负责业务处理。文章提供了完整的C++实现代码，包括线程池的实现和Reactor核心逻辑，展示了]]></description><category></category></item><item><title><![CDATA[Redis与多线程]]></title><link>https://blog.youkuaiyun.com/bit_pan/article/details/161224710</link><guid>https://blog.youkuaiyun.com/bit_pan/article/details/161224710</guid><author>bit_pan</author><pubDate>Tue, 19 May 2026 16:46:48 +0800</pubDate><description><![CDATA[Redis从单线程到多线程的演进]]></description><category></category></item><item><title><![CDATA[io_uring原理与实践]]></title><link>https://blog.youkuaiyun.com/bit_pan/article/details/161112204</link><guid>https://blog.youkuaiyun.com/bit_pan/article/details/161112204</guid><author>bit_pan</author><pubDate>Sat, 16 May 2026 01:28:53 +0800</pubDate><description><![CDATA[本文介绍了Linux异步I/O框架io_uring的原理与实践。首先分析了五种I/O模型的特点，指出前四种都是同步I/O，而io_uring是真正的异步I/O。io_uring通过提交队列(SQ)、完成队列(CQ)和内存映射技术，避免了用户态与内核态的数据拷贝。文章详细讲解了liburing库的关键接口，包括队列初始化、任务提交和结果处理等。最后通过实现一个单线程Echo服务器示例，展示了如何利用io_uring构建高性能网络应用。该技术通过共享内存和环形队列设计，显著提升了I/O效率。]]></description><category></category></item><item><title><![CDATA[Redis的两种持久化方式]]></title><link>https://blog.youkuaiyun.com/bit_pan/article/details/160835865</link><guid>https://blog.youkuaiyun.com/bit_pan/article/details/160835865</guid><author>bit_pan</author><pubDate>Thu, 07 May 2026 13:54:37 +0800</pubDate><description><![CDATA[Redis提供了RDB和AOF两种持久化机制来保障数据可靠性。RDB通过定时生成内存快照实现高效持久化，具有文件小、恢复快的特点，但存在数据丢失风险。AOF则通过记录每条写命令实现更精细的持久化，支持三种刷盘策略平衡性能与安全性，并通过重写机制解决文件膨胀问题。两种方式各有优劣：RDB适合大规模数据备份恢复，AOF提供更高数据安全性。实际应用中可根据业务需求选择或组合使用这两种方式，在性能与数据可靠性间取得平衡。]]></description><category></category></item><item><title><![CDATA[Redis的底层数据结构]]></title><link>https://blog.youkuaiyun.com/bit_pan/article/details/160800979</link><guid>https://blog.youkuaiyun.com/bit_pan/article/details/160800979</guid><author>bit_pan</author><pubDate>Wed, 06 May 2026 14:39:15 +0800</pubDate><description><![CDATA[摘要：本文深入剖析了Redis底层数据结构的设计原理。string类型采用SDS结构实现二进制安全；hash类型使用ziplist和hashtable两种编码，其中ziplist通过连续内存提升空间利用率但存在连锁更新问题，为此Redis 7.0引入listpack替代方案。重点分析了dict字典结构，其采用渐进式rehash策略，通过双哈希表设计和后台任务分批迁移数据，既保证扩容时不阻塞主线程，又能确保数据一致性。]]></description><category></category></item><item><title><![CDATA[POSIX API与TCP网络编程]]></title><link>https://blog.youkuaiyun.com/bit_pan/article/details/160686412</link><guid>https://blog.youkuaiyun.com/bit_pan/article/details/160686412</guid><author>bit_pan</author><pubDate>Sat, 02 May 2026 01:56:29 +0800</pubDate><description><![CDATA[摘要：本文深入剖析TCP网络编程中的POSIX API工作原理及核心机制。重点讲解了三次握手和四次挥手过程，揭示了SYN Flood攻击原理及防御策略（如SYN Cookie）。详细分析了socket()、bind()、listen()等API如何操作TCP控制块(TCB)，包括连接队列管理（半连接/全连接队列）。针对异常情况（如断电）提出了保活机制和超时重传的解决方案，并解释了TIME_WAIT状态的重要性。]]></description><category></category></item><item><title><![CDATA[基于C语言与Epoll的Reactor模型]]></title><link>https://blog.youkuaiyun.com/bit_pan/article/details/160661975</link><guid>https://blog.youkuaiyun.com/bit_pan/article/details/160661975</guid><author>bit_pan</author><pubDate>Thu, 30 Apr 2026 16:15:13 +0800</pubDate><description><![CDATA[本文介绍了Reactor模型在高性能网络编程中的应用。Reactor作为一种事件驱动设计模式，通过多路复用器(如epoll)、事件分发器和事件处理器三大组件，实现了单线程处理高并发连接的能力。文章详细解析了如何使用C语言实现Reactor框架，包括定义事件结构体、构建反应堆核心、封装epoll操作以及实现回调函数等关键步骤。该模型相比传统多线程方案具有高并发、低延迟、代码清晰等优势，被广泛应用于Nginx、Redis等高性能系统中。通过事件循环机制，Reactor能够高效处理大量网络连接请求。]]></description><category></category></item><item><title><![CDATA[TCP服务器并发模型：单线程、多线程与Select实现]]></title><link>https://blog.youkuaiyun.com/bit_pan/article/details/160419672</link><guid>https://blog.youkuaiyun.com/bit_pan/article/details/160419672</guid><author>bit_pan</author><pubDate>Thu, 23 Apr 2026 16:31:20 +0800</pubDate><description><![CDATA[《TCP服务器编程模型解析》摘要 本文系统介绍了三种TCP服务器实现模型：单线程模型通过accept逐个处理客户端请求，但频繁建连开销大；多线程模型为每个连接创建独立线程，虽支持并发但资源消耗大；select模型采用I/O多路复用技术，单线程即可监控多个连接，通过文件描述符集合高效处理并发请求。文章详细解析了socket()创建套接字、bind()绑定地址、listen()监听端口等核心函数，以及select()实现的多路复用机制。通过代码示例对比了三种模型的优缺点，为开发者选择适合的服务器架构提供了实践参]]></description><category></category></item><item><title><![CDATA[从零实现C++轻量线程池]]></title><link>https://blog.youkuaiyun.com/bit_pan/article/details/160148371</link><guid>https://blog.youkuaiyun.com/bit_pan/article/details/160148371</guid><author>bit_pan</author><pubDate>Tue, 14 Apr 2026 18:31:27 +0800</pubDate><description><![CDATA[本文介绍了如何从零实现一个轻量级的C++线程池。线程池通过预先创建一组工作线程并复用它们，避免了频繁创建销毁线程的开销，提高了系统性能和响应速度。文章详细讲解了线程池的核心组成：工作线程集合、任务队列和同步机制（互斥锁和条件变量）。实现中使用了C++标准库的关键组件：std::thread、std::mutex、std::condition_variable等，并通过std::function、std::future和std::packaged_task等技术实现了任务提交和结果获取功能。代码示例展示了如何]]></description><category></category></item><item><title><![CDATA[设计模式：观察者模式]]></title><link>https://blog.youkuaiyun.com/bit_pan/article/details/160055611</link><guid>https://blog.youkuaiyun.com/bit_pan/article/details/160055611</guid><author>bit_pan</author><pubDate>Sat, 11 Apr 2026 17:24:46 +0800</pubDate><description><![CDATA[本文介绍了观察者模式在UP主视频推送场景中的应用。首先展示了一个基础实现方案，指出了其扩展性不足的问题。然后详细讲解了观察者模式的概念，包含抽象观察者、具体观察者、抽象主题和具体主题四个角色。通过优化后的代码示例，演示了如何实现一个支持动态添加/移除观察者的发布-订阅系统。文章还分析了该模式符合的设计原则：开闭原则、单一职责和接口隔离原则，并列举了违反接口隔离的反例。最后指出观察者模式适用于消息发布-订阅场景，提供了良好的扩展性和灵活性。]]></description><category></category></item><item><title><![CDATA[设计模式：模板方法模式]]></title><link>https://blog.youkuaiyun.com/bit_pan/article/details/160031893</link><guid>https://blog.youkuaiyun.com/bit_pan/article/details/160031893</guid><author>bit_pan</author><pubDate>Fri, 10 Apr 2026 22:01:19 +0800</pubDate><description><![CDATA[本文介绍了模板方法模式在饮料制作场景中的应用。通过分析初始代码存在的问题（违背开闭原则），提出使用模板方法模式重构的方案。在优化后的代码中，父类Drink定义了制作饮料的固定流程（烧水、冲泡、倒入杯子、添加配料），将可变步骤（冲泡和添加配料）声明为纯虚函数由子类实现。这样既保持了流程结构的稳定性，又允许通过子类扩展新的饮料类型（如罗汉果茶）而不修改父类代码，符合开闭原则和单一职责原则。该模式适用于流程固定但具体步骤可能变化的场景。]]></description><category></category></item><item><title><![CDATA[哈希核心三件套：哈希表、布隆过滤器、一致性哈希]]></title><link>https://blog.youkuaiyun.com/bit_pan/article/details/159987599</link><guid>https://blog.youkuaiyun.com/bit_pan/article/details/159987599</guid><author>bit_pan</author><pubDate>Thu, 09 Apr 2026 17:23:36 +0800</pubDate><description><![CDATA[本文系统介绍了三种基于哈希思想的经典技术方案。哈希表通过哈希函数实现快速查找，采用链地址法或开放定址法解决冲突，通过负载因子控制扩容时机；布隆过滤器利用位图和多个哈希函数实现高效存在性判断，具有空间效率优势但存在误判可能；一致性哈希通过环形映射解决分布式系统节点增减时的数据重分布问题，引入虚拟节点优化数据倾斜。这三种技术在数据查找、去重和分布式存储等场景中各具优势，共同构成了处理海量数据的高效解决方案。文章对每种技术的实现原理、应用场景及优化方法进行了详细阐述。]]></description><category></category></item></channel></rss>