- 博客(9)
- 收藏
- 关注
原创 【计算机网络】TCP拥塞控制在Linux内核中的实现
在内核中,TCP拥塞控制主要依靠ACK报文的反馈进行。每当收到ACK报文时,内核首先检查该ACK报文是否是“可疑ACK”,如果是“可疑ACK”的话,那么检查此时是否发生了丢包并更新更新丢包计数器和拥塞状态。最后,根据丢包计数器和拥塞状态使用用户注册的或默认的拥塞控制算法调整发送速率。刚开始接触内核网络协议栈,可能很多地方不是很准确并存在错误,欢迎大家指正。
2025-01-28 18:54:57
1069
原创 【计算机网络】较大RTT对CUBIC吞吐的影响及优化方案
由于CUBIC发送数据后会等待确认,然后再发送数据,因此当RTT较大时等待时间也较长,最终导致吞吐受到影响。当接收缓存较小时,可以通过增大接收缓存来优化吞吐(一般将接收缓存设置为与BDP相等或稍大一点)。
2024-08-13 16:52:59
553
原创 【Docker】Docker SDK for Python
参考链接:https://www.osgeo.cn/docker-py/networks.html
2024-02-28 10:51:33
180
原创 【Redis】Redis数据类型
Zset与Set的区别在于:Zset会为每个元素关联一个double类型的分数(形成键值对),redis根据这个分数将集合中的元素按照从小到大进行排序。(元素唯一,分数可重复,可用于排行榜)Redis中的List其实就是链表。List的一个用处就是消息队列。String类型,无序且集合中的元素都是唯一的。
2024-01-17 16:30:28
904
原创 【Docker】Dockerfile
Dockerfile是用来用来构建Docker镜像的文本文件,是由一条一条构建镜像所需要的指令和参数构成的脚本文件。构建过程:(1)编写Dockerfile文件;(2)docker build构建镜像;(3)docker run运行镜像。
2023-09-17 20:27:36
1006
原创 【C++】C++指针
C++作为面向对象编程语言,其与传统的过程性编程的区别在于OOP强调的是在程序运行阶段进行决策而不是在编译阶段。运行阶段决策提供了灵活性,可以根据当时程序的执行情况对变量存储空间进行调整。以为数组分配内存为例。传统的方法是在声明数组时就指定数组的长度,因此数组的长度在程序编译时就已经设定好了,这就是编译阶段决策。比如说先声明一个包含200个元素的数组,但是在实际使用的时候只用到了20个,那么此时程序便浪费了内存。OOP通过将这样的决策推迟到运行阶段进行使程序更加灵活。
2023-07-21 18:31:49
100
原创 【C++】C++生成随机数
计算机所产生的随机数其实并不是真正随机的,而是伪随机的。当我们在使用rand()生成随机数时得到的实际上是从由随机数种子生成的一个数字序列中生成的一个数,该数字序列的长度一般是65535。也就是说一个固定的随机数种子生成的数字序列长度一般是65535,当我们在这个数字序列中生成随机数时,如果已经得到了65535个随机数那么接下来生成的随机数会和之前的随机数重复。
2023-07-11 17:35:28
18902
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人