自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 io_uring以及liburing介绍

由于io_uring要实现强大的功能和最优的效率,因此其接口和使用方式会比较复杂。但对于大部分不需要极致IO性能的场景和开发者来说,只使用io_uring的基本功能就能获得大部分的性能收益。当只需要基本功能时,io_uring的复杂接口中很大一部分是不会使用的,同时一部分初始化操作也是基本不变的。因此,io_uring的作者又开发了liburing来简化一般场景下io_uring的使用。

2024-01-28 13:37:25 619

原创 setjmp和longjmp

1.setjmp功能:把执行这个函数时的各种上下文信息保存起来,主要就是一些寄存器的值2.longjmp从 jmp_buf 结构体中恢复上下文,该函数不返回,而是将val作为恢复上下文后setjmp的返回信息。

2024-01-02 21:43:50 361

原创 Linux C: hook read和write函数

通过拦截软件模块间的函数调用、消息传递、事件传递来修改或扩展操作系统、应用程序或其他软件组件的行为的各种技术。处理被拦截的函数调用、事件、消息的代码,被称为hook。

2024-01-02 00:43:07 484

原创 C: 动态链接函数介绍

dlopen()以指定模式打开动态连接库文件,并返回句柄const char *__file : 库文件路径int __mode : 绑定模式TLD_LAZY : 表示使用延迟绑定,当函数第一次被用到时才进行绑定。有助于提高加载动态库的速度。RTLD_NOW : 表示当模块被加载时即完成所有函数的绑定工作,如果有任何未定义的符号引用的绑定工作没法完成,那么就返回错误。dlclose()关掉句柄dlsym()

2024-01-01 22:12:57 350

原创 KCP协议和源码解析

官方简介:KCP是一个快速可靠协议,能以比 TCP 浪费 10%-20% 的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。纯算法实现,并不负责底层协议(如UDP)的收发,需要使用者自己定义下层数据包的发送方式,以 callback的方式提供给 KCP。连时钟都需要外部传递进来,内部不会有任何一次系统调用。KCP可以当作一个应用层的协议,通常使用UDP作为底层协议,在提供可靠传输机制的情况下提高传输速度。那为什么不直接使用TCP呢?

2023-12-30 01:35:59 1368

原创 基于KCP的聊天室项目--(服务器端)

基于KCP的聊天室项目代码的主要逻辑kcp: https://github.com/skywind3000/kcp封装一个ChatServer类,该类保存服务器端正在进行的会话的指针,并实现消息处理和会话处理业务。ChatServer类的run函数定义一个主循环,该主循环中包含两个线程,一个线程循环检测现有的会话是否失效。另一个线程循环接收消息,根据消息中的会话id找到或者添加新会话,然后判断是保活信息还是聊天信息并进行相应处理主程序中建立一个ChatServer类对象并设置它的kcp属性,然后调用ru

2023-12-29 17:10:17 490 1

原创 UDP网络编程

所以TCP一般用在需要传输大量数据且对可靠性要求高的情况下,如HTTP;而UDP一般适用于对实时性要求高的场景,如直播、游戏、语音通话等。这么写需要服务器端先启动,不然客户端发送的时候服务端还没启动就会丢失数据然后阻塞在recvfrom。端口复用允许在一个应用程序可以把 n 个套接字绑在一个端口上而不出错。

2023-12-28 16:54:27 768 1

原创 Posix 中 TCP网络IO API 详解

Posix 全称是(Portable Operating System Interface of UNIX) ,翻译过来就是便捷式操作系统接口。它是一个IEEE标准,定义了应用程序(以及命令行 shell 和实用程序接口)与 UNIX 操作系统之间的语言接口。tcp网络io有三个过程,介绍各个阶段使用的API。

2023-12-27 21:03:25 377 1

原创 网络编程: 服务器百万连接实现

实验内容: 用三个客户端与服务器建立百万连接服务器代码:将实验遇到的问题记录如下。

2023-12-26 23:26:09 871 1

原创 Http Server实现

用上文的实现简单的HTTP Server通信。

2023-12-25 01:34:35 352 1

原创 reactor实现(二)

reactor的核心是事件驱动本文接着进一步完成实现。

2023-12-24 16:53:00 373

原创 reactor实现(一)

IO驱动型epoll:reactor的核心是事件驱动本文是将改为reactor的第一步。

2023-12-24 01:37:16 816

原创 网络异步IO编程:epoll

学习记录,epoll方法网络IO通信 服务器端。

2023-12-23 15:43:37 430 1

原创 网络异步IO编程:Poll

/从socket_fd开始方便将索引直接作为文件描述符//标志最大文件描述符。

2023-12-23 01:16:53 852

原创 网络异步IO编程: Select

定义已打开的socket集合和就绪的socket集合//已打开的socket, 就绪的socket//标志最大文件描述符。

2023-12-22 23:20:35 796

原创 网络编程:IO通信

学习记录,代码解析服务器和客户端连接方式1:服务器为每个客户端连接请求创建一个线程来进行通信。

2023-12-21 19:34:49 406

原创 虚拟机中Ubuntu C++开发环境搭建

该用户名和邮箱地址用于在提交git任务时,能够显示提交者的用户名和邮箱,为了区分不同开发人员的身份,但与你的github账号无关。配置Vmware Ubuntu系统中vscode C/C++ 开发环境,并通过 SSH连接本地仓库和Github远程仓库。生成的密钥文件默认在~/.ssh,id_rsa是私钥文件,id_rsa.pub是公钥文件。5.在Github上建立SSH密钥并填入生成的公钥"id_rsa.pub"内容。2.建立launch.json和tasks.json文件。点击图像–Setting。

2023-12-21 15:52:11 607 1

空空如也

空空如也

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

TA关注的人

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