<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Auli6的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Auli6</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Auli6]]></copyright><item><title><![CDATA[关于C/C++轻量级HTTP协议解析项目需要注意的几个关键实现]]></title><link>https://blog.youkuaiyun.com/Auli6/article/details/160593647</link><guid>https://blog.youkuaiyun.com/Auli6/article/details/160593647</guid><author>Auli6</author><pubDate>Tue, 28 Apr 2026 14:56:20 +0800</pubDate><description><![CDATA[本文探讨了两种高效数据结构的设计与实现：小顶堆计时器和线程安全队列。小顶堆计时器通过堆结构优化定时任务管理，将时间复杂度从O(n)降为O(logn)，支持高效的添加、删除和超时检测操作。线程安全队列使用互斥锁和条件变量实现线程安全，支持优雅关闭机制，确保任务队列在关闭时能完成剩余任务。这两种结构分别解决了高并发场景下的定时任务管理和线程间安全通信问题，通过精细的同步机制和数据结构优化，显著提升了系统性能。文章包含完整的C++实现代码，展示了堆操作的上浮下沉算法和条件变量的巧妙应用。]]></description><category></category></item><item><title><![CDATA[CMake基础入门]]></title><link>https://blog.youkuaiyun.com/Auli6/article/details/156313122</link><guid>https://blog.youkuaiyun.com/Auli6/article/details/156313122</guid><author>Auli6</author><pubDate>Fri, 26 Dec 2025 19:45:31 +0800</pubDate><description><![CDATA[本文介绍了CMake的基本使用方法，包括项目构建、文件管理、库文件生成与链接等核心功能。主要内容包括：1) 基础CMake命令如cmake_minimum_required、project和add_executable的使用；2) 文件搜索与管理方法，包括aux_source_directory和file命令；3) 静态库和动态库的创建与链接方法；4) 自定义宏的定义与作用域控制；5) 多目录项目的嵌套构建方法。]]></description><category></category></item><item><title><![CDATA[从零实现一个基于 epoll ET 模式的高性能聊天服务器（附完整源码）]]></title><link>https://blog.youkuaiyun.com/Auli6/article/details/155425480</link><guid>https://blog.youkuaiyun.com/Auli6/article/details/155425480</guid><author>Auli6</author><pubDate>Sun, 30 Nov 2025 18:52:58 +0800</pubDate><description><![CDATA[本文介绍了一个基于epoll ET模式的高性能聊天服务器实现。该项目采用单线程设计，通过epoll边缘触发模式实现高并发处理，无需第三方依赖。核心功能包括：ET模式事件通知、长度前缀协议解决TCP粘包问题、消息广播机制、30秒心跳超时检测以及优雅退出处理。文章详细解析了协议设计、ET模式循环读取、超时检查等关键代码实现，并提供了项目运行和测试方法。该项目完整开源，代码清晰简洁，适合学习Linux网络编程核心机制，尤其适合理解工业级服务器(如Nginx、Redis)所采用的epoll+ET模式实现原理。]]></description><category></category></item><item><title><![CDATA[[ C/C++网络编程 ] 使用长度前缀解决TCP粘包 + 拆包问题]]></title><link>https://blog.youkuaiyun.com/Auli6/article/details/154841028</link><guid>https://blog.youkuaiyun.com/Auli6/article/details/154841028</guid><author>Auli6</author><pubDate>Fri, 14 Nov 2025 16:47:05 +0800</pubDate><description><![CDATA[本文介绍了使用长度前缀方法解决TCP粘包和拆包问题的服务器和客户端实现。服务器通过select模型处理多客户端连接，在消息前添加4字节网络字节序的长度前缀。客户端采用类似机制，处理消息时先读取长度头再解析完整消息。文章还解释了网络字节序(大端)和主机字节序(小端)的转换必要性，指出只有多字节整数需要转换，单字节字符无需处理。通过htonl/ntohl函数实现字节序转换，确保跨平台数据正确传输。]]></description><category></category></item><item><title><![CDATA[C/C++并发编程基础入门]]></title><link>https://blog.youkuaiyun.com/Auli6/article/details/153794887</link><guid>https://blog.youkuaiyun.com/Auli6/article/details/153794887</guid><author>Auli6</author><pubDate>Thu, 23 Oct 2025 22:53:58 +0800</pubDate><description><![CDATA[C/C++并发编程，作为必学的一环，这是必须要走的路，本文将带你真正入门C/C++并发编程。]]></description><category></category></item><item><title><![CDATA[《伺候好多进程的“祖宗”：信号(Signal)和Sigaction的使用指南》]]></title><link>https://blog.youkuaiyun.com/Auli6/article/details/152951153</link><guid>https://blog.youkuaiyun.com/Auli6/article/details/152951153</guid><author>Auli6</author><pubDate>Fri, 10 Oct 2025 20:23:32 +0800</pubDate><description><![CDATA[本文介绍了C/C++多进程网络服务器的实现方法。首先通过fork()创建子进程处理客户端请求，主进程使用非阻塞waitpid()轮询回收子进程。随后引入更高效的信号处理机制，使用sigaction()注册SIGCHLD信号处理函数，通过SA_RESTART标志确保accept()调用不被中断。文章重点阐述了父子进程间文件描述符的管理：子进程需关闭监听socket，父进程需关闭连接socket，以避免资源泄漏和惊群效应。最后给出了完整的多进程服务器代码示例，展示了如何处理客户端连接、收发数据及进程回收。]]></description><category></category></item><item><title><![CDATA[【C/C++ 网络编程(socket)】封装client和server实现简易通信]]></title><link>https://blog.youkuaiyun.com/Auli6/article/details/152324504</link><guid>https://blog.youkuaiyun.com/Auli6/article/details/152324504</guid><author>Auli6</author><pubDate>Tue, 30 Sep 2025 15:58:30 +0800</pubDate><description><![CDATA[本文介绍了C/C++网络编程中服务器(server)的封装实现方法。文章首先回顾了服务器通信的基本流程（socket-&gt;bind-&gt;listen-&gt;accept-&gt;recv-&gt;send），然后详细讲解了如何通过类封装将这些功能模块化。作者提供了完整的TCPserver类实现代码，包含set_server_base()、listen_server()、accept_server()等核心方法。]]></description><category></category></item><item><title><![CDATA[Client客户端class封装思路，C/C++]]></title><link>https://blog.youkuaiyun.com/Auli6/article/details/152171500</link><guid>https://blog.youkuaiyun.com/Auli6/article/details/152171500</guid><author>Auli6</author><pubDate>Sat, 27 Sep 2025 17:42:23 +0800</pubDate><description><![CDATA[本文介绍了网络编程中客户端与服务器的实现差异。服务器连接流程为socket->bind->listen->accept->recv/send，而客户端则是socket->connect->send/recv。重点讲解了客户端的实现过程：通过socket创建套接字，使用inet_pton转换IP地址，connect建立连接后即可进行通信（需注意字符串转换和缓冲区处理）。最后强调套接字关闭的重要性，并指出网络编程作为基础技能需要持续学习。文章以通俗比喻解释了客户/服务器关系，适合初学者理解基本概念。]]></description><category></category></item><item><title><![CDATA[TCP_Client_and_Server，C/C++基础实现]]></title><link>https://blog.youkuaiyun.com/Auli6/article/details/151973977</link><guid>https://blog.youkuaiyun.com/Auli6/article/details/151973977</guid><author>Auli6</author><pubDate>Tue, 23 Sep 2025 07:59:22 +0800</pubDate><description><![CDATA[本文介绍了一个基于C++的TCP服务器实现代码，详细解析了网络编程中的关键概念和函数。代码展示了一个完整的服务器创建流程，包括socket创建、绑定(bind)、监听(listen)和接受连接(accept)。服务器能够处理客户端请求并返回相应信息，支持&quot;hello&quot;、&quot;time&quot;、&quot;bye&quot;等命令交互。文章特别解释了网络编程中容易困惑的概念，如文件描述符、sockaddr_in结构体、字节序转换等，并提供了类似&quot;网吧&quot;的通俗比]]></description><category></category></item><item><title><![CDATA[细说算法题不同解法的特性]]></title><link>https://blog.youkuaiyun.com/Auli6/article/details/151152544</link><guid>https://blog.youkuaiyun.com/Auli6/article/details/151152544</guid><author>Auli6</author><pubDate>Wed, 03 Sep 2025 16:44:16 +0800</pubDate><description><![CDATA[本文探讨了LeetCode算法题目的多种解法及其面试应用价值。以75.颜色分类和33.搜索旋转排序数组为例，分析了不同解法的优劣：暴力解法虽能通过但效率低下，而三指针法和标准二分查找则更高效专业。作者强调面试中应掌握普遍解法而非投机取巧，指出算法能力对技术面试的重要性，建议通过高效解法展示编程实力，避免使用简单但不符合题目要求的代码。文章提醒读者刷题要注重质量而非速度，掌握标准解法才能给面试官留下良好印象。]]></description><category></category></item><item><title><![CDATA[unordered_map简易底层代码，基础功能实现]]></title><link>https://blog.youkuaiyun.com/Auli6/article/details/151078931</link><guid>https://blog.youkuaiyun.com/Auli6/article/details/151078931</guid><author>Auli6</author><pubDate>Mon, 01 Sep 2025 18:34:25 +0800</pubDate><description><![CDATA[本文实现了一个简化版的哈希表unordered_mapfake，采用链地址法处理哈希冲突。核心结构包括：结点node存储键值对，桶数组buckets存储链表头指针，capacity表示桶数量，size记录元素数。主要功能包括：插入时自动扩容（负载因子&gt;0.75时容量翻倍）、通过哈希值定位桶处理冲突、查找和删除操作。特别说明哈希冲突仅与key相关，不同key可能哈希到同一桶形成链表，相同key则覆盖值。删除需区分头结点和中间结点。该实现展示了哈希表的基本原理，包括哈希函数、冲突处理、动态扩容等核心机制。]]></description><category></category></item><item><title><![CDATA[c++工厂函数和完美转发（参考unique_ptr）]]></title><link>https://blog.youkuaiyun.com/Auli6/article/details/150956852</link><guid>https://blog.youkuaiyun.com/Auli6/article/details/150956852</guid><author>Auli6</author><pubDate>Thu, 28 Aug 2025 17:08:40 +0800</pubDate><description><![CDATA[C++模板函数make_unique的实现细节。该函数通过模板参数T和可变参数包Args创建智能指针，其中Args&amp;&amp;...使用万能引用和完美转发保持参数的值类别。模式展开确保类型与值正确匹配，比简单展开更安全可靠。完美转发能区分左右值，示例代码演示了其在包装函数中的应用价值。该实现方式特别适合需要精确控制参数传递的场景，如结构体初始化。]]></description><category></category></item></channel></rss>