自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 协程的作用与工作原理

协程的作用与工作原理摘要 协程是一种轻量级线程,能够在单线程内实现多任务并发执行。其主要作用体现在:1)解决传统同步阻塞方式下线程资源浪费问题;2)避免异步回调带来的代码逻辑混乱。协程通过"同步逻辑+异步性能"的方式,在执行IO操作时主动让出CPU,待IO就绪后再恢复执行,既保持了代码的可读性,又实现了高性能并发。 典型应用场景如B站首页数据获取,协程可并发请求多个服务数据,在等待IO时切换执行其他任务,显著提升响应速度。实现方式主要有两种:1)setjmp/longjmp通过保存/恢复

2025-12-25 18:49:55 926

原创 UDP可靠性传输协议

摘要 本文对比分析了UDP和TCP协议的核心特性及适用场景。UDP是无连接的不可靠协议,支持多播通信,面向报文传输,首部开销小(8字节),适用于实时应用;TCP是面向连接的可靠协议,仅支持单播,面向字节流传输,首部较大(20-60字节),适合文件传输等场景。文章详细解析了TCP的可靠性机制(ARQ协议、流量控制、拥塞控制),包括停等式、回退n帧和选择重传三种重传算法,并阐述了TCP通过滑动窗口实现流量控制的原理。最后指出UDP要实现可靠传输需依赖上层协议补充ARQ机制(如KCP协议),而TCP已内置完整的可

2025-12-25 16:07:31 983 1

原创 Posix网络开发常用API详解

在 Linux 系统的 C 语言网络编程领域,POSIX(Portable Operating System Interface)网络 API 是构建网络应用的核心基础。POSIX 标准定义了一套跨平台的操作系统接口,而其网络编程接口则为开发者提供了从底层套接字创建到高层数据传输的完整解决方案。

2025-06-26 12:34:06 828

原创 事件驱动reactor的原理与实现

本文介绍了事件驱动框架Reactor的原理与实现。通过分析传统网络IO模型的不足,提出使用Reactor模式来管理IO事件。文章详细讲解了Reactor的核心数据结构设计,包括双缓冲区和联合体的使用。重点展示了服务器初始化、客户端连接处理、数据收发等关键流程的实现代码,特别是事件注册和状态转换机制。该框架通过epoll多路复用结合回调函数,实现了高效的请求-响应处理循环,为构建高性能网络服务提供了基础架构。

2025-06-13 13:53:35 807

原创 网络io的多路复用:select/poll/epoll详解

本文详细介绍了三种网络I/O多路复用技术:select、poll和epoll。首先分析了一请求一线程方式的弊端,指出多路复用技术可以有效解决高并发问题。select通过比特位集合管理文件描述符,但存在参数复杂、效率低下等缺点;poll采用结构体数组pollfd,比select更灵活高效;epoll则是Linux内核的重大改进,通过事件触发机制显著提升性能。文章分别展示了三种技术的代码实现,对比了它们的工作原理和优缺点,为开发高并发网络应用提供了技术参考。

2025-06-05 17:24:17 1825

原创 网络io与tcp服务器

本文主要在linux上用c语言实现一个tcp server,在这个场景下可以把网络IO 理解为客户端与服务器之间通信的通道。各种即使通讯软件,例如微信刷抖音短视频github/gitlab 上 git clonelisten 监听套接字:监听是否有新的客户端请求,有则创建一个新的tcp连接与clientfdtcp连接:listen收到新的客户端请求后为该客户端创建一个tcp连接clientfd 客户端文件描述符。

2025-05-24 17:11:06 2164

原创 数据库基础Mysql项目实战

本文介绍了MySQL数据库的基础操作,包括数据库建模、远程连接、数据传递、查询、删除以及图片操作。首先,通过SQL语句创建数据库和表,并插入数据。接着,使用C语言与MySQL服务器建立连接,并通过管道传递SQL指令。查询数据时,通过mysql_store_result存储结果,并逐行抓取数据。删除操作中,为避免误删,需退出安全模式或使用存储过程。最后,针对图片等大字段二进制数据,介绍了如何从本地读取图片并存储到数据库中。这些操作涵盖了MySQL的基本使用场景,为开发者提供了实用的参考。

2025-05-18 16:49:20 893

原创 锁与线程池的学习笔记

本文介绍了锁与线程池的基本概念及其实现。锁分为互斥锁和自旋锁,互斥锁适合处理复杂任务,而自旋锁适合简单任务。原子操作通过减少指令数量提升性能。线程池用于管理线程,避免频繁创建和销毁线程的开销,核心组件包括任务队列、执行队列和管理组件。线程池通过初始化、回调函数、任务推送和销毁等操作实现高效任务管理。代码示例展示了线程池的创建、任务处理及销毁过程,帮助理解其工作原理。

2025-05-16 10:58:33 1270 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除