- 博客(9)
- 收藏
- 关注
原创 红黑树的前世今生
情况3:被删除节点有两个子节点(非叶子节点)这种情况下,不会直接删除该节点,而是找到其前驱节点(左子树中最大节点)或后继节点(右子树中最小节 点),用前驱 / 后继节点的值覆盖被删除节点的值,然后删除前驱 / 后继节点。前驱 / 后继节点最多只有一个子节点(因为是最大 / 最小节点),因此转化为 “删除只有一个子节点或无子节点的节点” 的情况(即上述 1、2 两种情况)。对于删除流程图,没有进行总结,直接看代码应该更容易理解。
2025-09-06 11:16:16
566
原创 探索高性能IO:io_uring与epoll对比
因为我是直接安装了linux系统,可能qps比虚拟机更快一点。由此可以看出,io_uring比epoll性能稍微好一点。
2025-08-07 22:28:34
317
原创 u_context实现网络io协程
关于什么是协程?见过最多的一句话就是:同步的代码实现异步的效能。网上有很多关于协程的博文,但要么照抄别人,要么只是一个简介,还有的是直接上汇编,可是没有汇编基础呀。难受了好久,总算出来了一个雏形。由于c语言天然缺少面向对象的特性,可能代码比较杂乱,有心之人可以整理成c++代码,应该会有条理一点。代码共分了四个模块,协程模块、调度器模块、socket模块、hook劫持模块。另外有个main.c,还有一个公共头文件。共10个文件。
2025-06-25 23:46:14
1535
原创 用TCP实现PTP
关于什么是SYN_SENT、SYN_RCVD状态,读者可自行搜索“TCP状态连接图”。两个客户端同时连接,状态如下。想要用epoll,但是只能知道自己的socket fd,不能知道连接者的fd,所以没必要用epoll。这里实现了两者能正常通信就可。因为这里目的就是为了验证从SYN_SENT到SYN_RCVD状态的更换。
2025-06-18 21:50:27
305
原创 Windows编写Linux代码代码补全
在linux上使用samba服务,远程用Windows连接Linux,并在Windows上用VScode写Linux代码时。
2025-06-14 09:40:11
326
原创 Reactor百万级并发
Qps:前面1000个连接耗费大约1秒多一点。到达28万左右时1000个连接将近10秒钟,后面慢慢达到20秒。最终测试一台虚拟服务器,一台虚拟客户端。测试可以连接到34万。:五元组不够-Cannot assign requested address。代码逻辑其实没有啥复杂,关键就是要把epoll三个函数弄懂到底是干啥的。方法2:需要在/etc/security/limits.conf中添加。方法1:Ubuntu没测试,centos可以。它是一种简单并且有效的实现资源限制的方式。:centos中修改不生效。
2025-06-09 21:28:02
685
原创 vs2019制作静态库
首先建立项目时选静态库 他喵的生成什么乱七八糟的东西,不想要 把每一个文件删除。然后建立自己的.h和.cpp(或.c)文件 例如 .h文件 #pragma once int add(int a, int b); cpp文件 #include "testlib.h" int add(int a, int b) { return a + b; } 关键来了, 编译 解决方案 这样就可以了。 ...
2022-03-31 11:19:31
259
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅