<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[daqiaoligong的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/daqiaoligong</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; daqiaoligong]]></copyright><item><title><![CDATA[11.1 KV存储——基于三种网络模型、四种KV引擎、支持多语言访问]]></title><link>https://blog.youkuaiyun.com/daqiaoligong/article/details/150357491</link><guid>https://blog.youkuaiyun.com/daqiaoligong/article/details/150357491</guid><author>daqiaoligong</author><pubDate>Wed, 13 Aug 2025 23:10:33 +0800</pubDate><description><![CDATA[本项目实现了一个模块化键值存储系统，采用分层架构设计：网络层支持Reactor/Proactor/协程模型，存储层提供数组/哈希表/红黑树/跳表四种引擎。文章以Reactor+数组组合为例，详细解析了从连接建立、请求处理到响应返回的完整流程，包括epoll事件驱动机制、协议解析和数组存储引擎的核心操作。系统采用文本协议实现多语言兼容，支持SET/GET/DEL等基础命令。通过回调函数和配置化设计，实现了网络层与存储层的解耦，展现了高性能KV存储系统的核心实现原理。]]></description><category></category></item><item><title><![CDATA[11.2 基于协程与JSON的轻量级C语言RPC框架设计与实现]]></title><link>https://blog.youkuaiyun.com/daqiaoligong/article/details/150343095</link><guid>https://blog.youkuaiyun.com/daqiaoligong/article/details/150343095</guid><author>daqiaoligong</author><pubDate>Wed, 13 Aug 2025 21:16:13 +0800</pubDate><description><![CDATA[本文提出了一种基于协程与JSON的轻量级C语言RPC框架ZRPC。该框架采用协程机制实现高并发处理能力，使用JSON作为通信数据格式保证跨平台兼容性。系统包含客户端(zrpc_client.c)、服务器(zrpc_server.c)和核心库(zrpc.c)三个主要组件，通过配置文件register.json实现服务注册与发现。服务器端利用nty_coroutine协程库处理并发请求，客户端通过本地函数调用透明地访问远程服务。框架采用包头-包体协议确保数据传输完整性，并支持动态加载业务逻辑(libzrpc_m]]></description><category></category></item><item><title><![CDATA[11.3 DPDK应用开发—构建TCP/UDP协议栈实现数据收发、构建DNS服务器]]></title><link>https://blog.youkuaiyun.com/daqiaoligong/article/details/150213753</link><guid>https://blog.youkuaiyun.com/daqiaoligong/article/details/150213753</guid><author>daqiaoligong</author><pubDate>Mon, 11 Aug 2025 22:05:21 +0800</pubDate><description><![CDATA[摘要：本文详细介绍了基于DPDK的高性能网络编程实践，包括UDP/TCP协议处理和DNS服务器实现。主要内容涵盖：1) DPDK环境初始化与内存池创建；2) 网卡端口配置与数据包收发机制；3) UDP/TCP协议解析与状态机实现；4) 自定义epoll原理；5) 基于开源DNS库构建高性能DNS服务器。实验表明，DPDK能显著提升网络处理性能，跳过内核协议栈实现用户态直接处理网络数据包。文章提供了完整的代码实现框架和关键配置参数说明，为开发高性能网络应用提供了实践参考]]></description><category></category></item><item><title><![CDATA[十、内核网络协议栈效率低，如何绕开内核，实现更高性能网络？——DPDK技术]]></title><link>https://blog.youkuaiyun.com/daqiaoligong/article/details/150151521</link><guid>https://blog.youkuaiyun.com/daqiaoligong/article/details/150151521</guid><author>daqiaoligong</author><pubDate>Mon, 11 Aug 2025 22:05:12 +0800</pubDate><description><![CDATA[DPDK技术通过绕过内核协议栈实现高性能网络处理。其核心原理包括：1)使用UIO/VFIO技术将网卡数据直接映射到用户空间；2)采用巨页技术减少TLB缺失；3)轮询模式替代中断处理；4)CPU亲和性绑定减少上下文切换。主要组件包含EAL环境抽象层、Ring队列管理、Mempool内存池和mbuf缓冲区。相比传统Linux网络栈，DPDK避免了数据复制和系统调用开销，特别适合高并发场景。配置过程涉及多队列网卡设置、巨页调整、模块加载等步骤。该技术显著提升了网络数据包处理效率，但需专用硬件支持和特定环境配置。]]></description><category></category></item><item><title><![CDATA[1_网络编程知识体系总结(陆续补充更新）]]></title><link>https://blog.youkuaiyun.com/daqiaoligong/article/details/149260945</link><guid>https://blog.youkuaiyun.com/daqiaoligong/article/details/149260945</guid><author>daqiaoligong</author><pubDate>Mon, 11 Aug 2025 22:01:09 +0800</pubDate><description><![CDATA[本文系统梳理了网络编程知识体系，分为基础理论、高并发处理、性能优化和项目实践四个部分。基础部分涵盖网络I/O、协议、套接字等核心概念；高并发处理探讨IO多路复用、多进程/线程模型及Reactor模式；性能优化涉及异步I/O、协程和DPDK技术；最后提供KV存储、RPC框架等实战项目案例。文章以问题驱动方式展开，逐步深入网络编程的各个进阶领域，并附有相关技术书籍和开源项目参考。]]></description><category></category></item><item><title><![CDATA[Linux 网络编程：epoll 为何能实现高并发？非阻塞 socket 又是什么？]]></title><link>https://blog.youkuaiyun.com/daqiaoligong/article/details/148316060</link><guid>https://blog.youkuaiyun.com/daqiaoligong/article/details/148316060</guid><author>daqiaoligong</author><pubDate>Thu, 29 May 2025 19:07:54 +0800</pubDate><description><![CDATA[问题解答epoll 为什么能实现多并发？它只监听“有事件”的 fd，不遍历所有连接，效率极高非阻塞 socket 有什么用？防止某个连接阻塞线程，是高并发编程的关键epoll + 非阻塞 有什么好处？单线程就能同时处理上万个连接，是构建高性能服务器的基础。]]></description><category></category></item><item><title><![CDATA[使用 C 语言实现一个简易 HTTP 客户端（含详细中文注释 + 语法解析）]]></title><link>https://blog.youkuaiyun.com/daqiaoligong/article/details/148310796</link><guid>https://blog.youkuaiyun.com/daqiaoligong/article/details/148310796</guid><author>daqiaoligong</author><pubDate>Thu, 29 May 2025 16:08:47 +0800</pubDate><description><![CDATA[本文介绍了一个用C语言实现的简易HTTP客户端程序。代码实现了完整的HTTP请求流程：通过DNS解析域名获取IP地址，创建TCP套接字连接到80端口，构造并发送GET请求报文，使用select非阻塞方式接收服务器响应。关键功能包括域名解析、socket通信、HTTP报文构造和响应处理。程序展示了网络编程的基础流程，涉及字符串处理、内存管理、socket API和非阻塞编程等核心技术。通过这个项目可以学习到网络通信的基本原理和C语言网络编程的实现方法。]]></description><category></category></item><item><title><![CDATA[用 C 语言实现简单 DNS客户端查询域名的 IP 地址]]></title><link>https://blog.youkuaiyun.com/daqiaoligong/article/details/148259979</link><guid>https://blog.youkuaiyun.com/daqiaoligong/article/details/148259979</guid><author>daqiaoligong</author><pubDate>Tue, 27 May 2025 17:22:13 +0800</pubDate><description><![CDATA[本文介绍了如何使用C语言在Linux系统中实现一个简单的DNS查询客户端。主要内容包括：1) DNS请求头的构造，包含ID、标志位等关键信息；2) DNS查询构建，处理域名格式和查询类型；3) 通过UDP套接字发送请求和接收响应；4) 解析DNS响应获取IP地址；5) 客户端主函数实现。文章详细讲解了DNS协议的基本工作原理，并提供了完整的代码实现方法。通过这个示例，读者可以学习网络编程的基本技巧，理解DNS查询的底层实现机制，为开发更复杂的网络应用打下基础。]]></description><category></category></item><item><title><![CDATA[使用 C 语言操作 MySQL 实现用户管理与图像存储—— 代码结构分析与实现详解]]></title><link>https://blog.youkuaiyun.com/daqiaoligong/article/details/148256183</link><guid>https://blog.youkuaiyun.com/daqiaoligong/article/details/148256183</guid><author>daqiaoligong</author><pubDate>Tue, 27 May 2025 15:34:28 +0800</pubDate><description><![CDATA[define DAQIAO_DB_SERVER_PORT 3306 //端口号#define DAQIAO_DB_USERNAME "xxxxx" //用户名#define DAQIAO_DB_PASSWORD "xxxxxx" //密码#define DAQIAO_DB_DEFAULTDB "xxxxxxxx" //默认数据库定义了数据库连接的基本信息（IP、端口、用户名、密码、默认库）定义了常用 SQL 语句，包括插入、查询、删除用户，以及对图像字段的操作。]]></description><category></category></item><item><title><![CDATA[Linux环境下用C语言实现线程池（3）—线程池的销毁与pthread线程包常用函数]]></title><link>https://blog.youkuaiyun.com/daqiaoligong/article/details/148040833</link><guid>https://blog.youkuaiyun.com/daqiaoligong/article/details/148040833</guid><author>daqiaoligong</author><pubDate>Sun, 18 May 2025 11:04:46 +0800</pubDate><description><![CDATA[本文介绍了线程池的销毁过程及pthread线程包的常用函数。线程池销毁时，首先遍历所有工作线程并标记为终止，随后加锁、广播通知线程退出、解锁，并清空线程和任务队列，最终返回成功状态。pthread常用函数包括：pthread_create（创建线程）、pthread_mutex_lock（加锁）、pthread_mutex_unlock（解锁）、pthread_cond_wait（等待条件变量）、pthread_cond_signal（唤醒单个线程）和pthread_cond_broadcast（广播唤醒所]]></description><category></category></item><item><title><![CDATA[Linux环境下用C语言实现线程池（2）—线程池中添加任务与线程任务的执行]]></title><link>https://blog.youkuaiyun.com/daqiaoligong/article/details/148040023</link><guid>https://blog.youkuaiyun.com/daqiaoligong/article/details/148040023</guid><author>daqiaoligong</author><pubDate>Sun, 18 May 2025 10:28:47 +0800</pubDate><description><![CDATA[本文介绍了线程池中任务的添加与执行过程。首先，通过nThreadPoolPushTask函数将任务添加到线程池的任务队列中，使用互斥锁确保多线程环境下的安全访问，并通过条件变量通知工作线程有新任务。其次，工作线程通过nThreadPoolCallback函数执行任务，线程在任务队列为空时阻塞，直到有新任务或收到终止信号。线程获取任务后，调用任务的执行回调函数完成任务处理，并在任务执行完毕后释放资源。整个过程通过互斥锁和条件变量实现线程间的同步与通信，确保线程池的高效运行。]]></description><category></category></item><item><title><![CDATA[Linux环境下用C语言实现线程池（1）—线程池的结构与创建]]></title><link>https://blog.youkuaiyun.com/daqiaoligong/article/details/148035609</link><guid>https://blog.youkuaiyun.com/daqiaoligong/article/details/148035609</guid><author>daqiaoligong</author><pubDate>Sun, 18 May 2025 00:04:11 +0800</pubDate><description><![CDATA[2.1 初始化线程池、条件变量、互斥锁。2.3 将线程加入线程池队列中。1.3 线程池管理器 (1. 线程池的基本结构。1.1 线程队列 (1.2 任务队列 (2.2 创建工作线程。]]></description><category></category></item><item><title><![CDATA[Linux系统下数据库MySQL远程连接出现的问题及解决办法]]></title><link>https://blog.youkuaiyun.com/daqiaoligong/article/details/148018121</link><guid>https://blog.youkuaiyun.com/daqiaoligong/article/details/148018121</guid><author>daqiaoligong</author><pubDate>Fri, 16 May 2025 21:55:10 +0800</pubDate><description><![CDATA[在Ubuntu中配置MySQL以连接MySQL Workbench时，需要修改my.cnf文件中的bind-address配置项。默认情况下，bind-address设置为127.0.0.1，仅允许本地连接。若需远程连接，应将其改为0.0.0.0或具体IP地址。然而，在/etc/mysql/my.cnf中未找到该选项。最终，在/etc/mysql/mysql.conf.d/mysqld.cnf文件中找到了bind-address，并将其修改为0.0.0.0，以允许所有IP地址远程连接。]]></description><category></category></item></channel></rss>