自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 io_uring的性能测试以及其与epoll的对比

通过编写命令行测试工具来对该io_uring服务器进行测试。由于一次测试需150秒,故仅测了这一组数据,后续可自行进行测试。uring_tcp_server的结果。epoll_tcp_server的结果。将这些信息存在一个结构体中。

2026-01-16 00:38:04 329

原创 io_uring的原理及其应用

我们在对IO进行操作,如读写IO的时候,如有read,write,recv,send这四个函数都是同步的。意思是read(fd,buffer,length)函数执行时在读请求和返回数据是一起的,没有做到分开,write,recv,send同理。异步IO就是要把这两个步骤拆开来做,io_uring就是这样的一个工具。由于这三个系统调用不太好理解,故使用liburing这个库来封装了前面三个系统调用。

2026-01-14 16:45:28 503

原创 markdown语法

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:撤销:Ctrl/Command + Z重做:Ctrl/Command + Y加粗:Ctrl/Command + B斜体:Ctrl/Command + I标题:Ctrl/Command + S

2025-12-22 11:58:04 587

原创 协程的原理

要用易于理解的同步方式的代码表达来表示异步的东西,并且其拥有异步的性能。

2025-11-23 17:08:56 185

原创 UDP的可靠传输----KCP以及前景

举个简单的例子,我们从服务器发送数据时,网关通常有其限速,再G0,G1,G2带宽都为100M,这时服务器都以100M速率发送过来,但在G2分配给两个客户端的速率总和最多只有100M,这其中的发送方的速率与接受方的速率不相等,其实就可以降低发送方速率来进行一定的控制。举个例子:在发送端发送了1,2,3,4,5这几个包之后,远端收到ACK1,3,4,5,收到ACK3时,跳过一次,收到ACK4时,知道2被跳过两次,则认为2号包丢失,不用等超时时间,直接重传2号数据包,fastresend = 2。

2025-11-16 00:44:43 1087 1

原创 理解Posix网络编程7个API

POSIX:可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX )。它是一套标准,Unix与Linux和苹果系统的Unix-base都遵循这个标准,话不多说,赶紧进入正题。

2025-10-23 01:17:56 480

原创 理解Reactor

reactor用来关注网络中的事件,在处理网络的时候由网络IO的管理变为网络事件管理,其核心的思想就是通过回调函数来处理这些IO,也称为IO事件。每一个不同的IO事件调用不同的回调函数。

2025-10-08 23:47:58 238

原创 网络IO中多路复用:select,poll与epoll的理解与应用

在上篇中实现的一请求一线程的方式优点是其代码逻辑简单,但缺点也是很明显的,不太利于并发,若每个线程8M,16G内存大概能做到1k的并发,无法做到更多。故而需要用多路复用技术如select、poll、epoll。

2025-10-08 11:08:54 227

原创 理解网络IO

Socket FD(File Descriptor)是用来标识网络IO与管理网络连接的。在linux中,它仅仅代表一个整数,用来表示当前创建的IO的编号,是在从0开始依次增加。0是标准输入:stdin,1是标准输出:stdout,2是标准错误:stderr。如下图在客户端连接服务端的时候,服务端创建一个监听的fd等待客户端的连接,在listenfd收到连接请求后,服务端会创建一个用于与客户端通信的fd来进行数据传输。下面我将创建一个server端的网络IO来进行实验。

2025-09-22 00:27:53 391

原创 65536个端口如何做到百万并发

端口数量为65536,这个数字是因为在Linux系统中,系统用一个唯一的四元组来标识一个TCP连接,{本机IP,本机端口,远程IP,远程端口}。而在Linux系统中,端口号这个变量是个unsigned short,占16位,故其端口号有65536个。

2025-09-20 16:51:00 278

原创 数据库基本操作

这里以登录操作为例,客户端通过网络连接到业务服务器,待其解析后在执行其想要进行的操作,这里是查询,网络连接到数据库进行查询。

2025-09-19 23:15:19 344

原创 线程池原理

线程池是一种多线程处理机制,通过预先创建和复用线程来优化资源管理。它包含任务队列、执行队列和管理组件三个核心部分,适用于服务器通信(避免大量线程耗尽内存)和日志处理(分离任务与执行)等场景。线程池的优势包括防止内存耗尽、减少线程创建销毁开销、实现任务与执行解耦。其实现涉及线程创建、任务调度(使用互斥锁和条件变量同步)和资源销毁等API。管理组件负责协调任务分配与线程执行,通过条件变量唤醒休眠线程处理任务队列中的请求,从而提升系统性能和资源利用率。

2025-09-19 01:40:52 324

原创 多项式除以多项式代码思路

即A[n] = 4,然后拿一个数组存商,对于商的每一项,若t1为多项式A的最高次幂,t2为多项式B的最高次幂t1-t2即为商的指数,其系数为A[t1]/B[t2].然后更新A数组,用更新后的A数组继续去算直到t1

2023-04-13 15:40:10 105 1

原创 AtCoder Beginner Contest 156题解(未完)

atcoder abc156题解

2023-02-21 11:03:48 207

原创 重庆邮电大学python实验6

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档重庆邮电大学python实验6汉诺塔:st = 1def hnt(h,s1,s2,s3): global st; if h == 1: if st >= 10: print("[STEP %d] %c->%c " %(st,s1,s2)) else : print("[STEP %d] %c->%c " %(st,.

2022-04-14 19:44:23 1467

空空如也

空空如也

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

TA关注的人

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