2021 schedule
2021年的N个问题
通过问题的形式完成2021年的技术领域的学习计划,每个部分最少包含5个问题,问题总数在50个左右
-
数据结构与算法
- 决策树是什么
- 深度优先遍历
- 广度优先遍历
-
设计模式
- 分布式的AP CP CAP什么意思
-
缓存和数据库
- mysql 丁奇的课程
- redis的sentinel机制 哨兵
-
中间件 kafka CDN
- kafka极客时间的课程
- 分布式锁的实现 redis
-
编程语言 golang rust
- golang 连接池的实现
- golang interface 依赖倒置
- 单元测试的最佳实践
- go的并发编程怎么搞的
- 仿照rosedb实现一个golang版本的kv缓存数据库
-
linux
- I/O模型
- 协议状态
关闭连接过程:
-
客户端没有待发送的数据时,向服务端发送FIN消息,发送消息后进入FIN_WAIT_1状态;
-
服务端接收到FIN消息后,进入CLOSE_WAIT状态并向客户端发送ACK消息,客户端接收到ACK进入到FIN_WAIT_2状态;
-
服务端没有待发送数据时,服务端会发送FIN消息;
-
客户端接收到FIN消息后,会进入TIME_WAIT状态,并给服务端发送ACK消息,服务端收到后CLOSED;
-
客户端等待两个最大数据段生命周期后进入CLOSED状态。
tcp建立连接为什么需要3次握手:
reference
https://draveness.me/whys-the-design-tcp-three-way-handshake/
https://mp.weixin.qq.com/s/8WmASie_DjDDMQRdQi1FDg
transmission control protocol 传输控制协议 用于保证可靠性和流控制机制的信息。 其中一个tcp连接包括socket、序列号和窗口大小。
- socket由ip和端口组成
- 窗口大小用于进行流控制
- 序列号用来追踪数据包序号,保证不丢失。
- 三次握手才能阻止重复历史连接的初始化(主要)
- 三次握手才能对通信双方的序列号进行初始化
- 其他次数握手的可能性
引入RST控制信息,发送方会判断是否为历史连接
- 判断SEQ即序号,SEQ过期或者超时,发送方会发送RST中止连接。
- 如果不是,发送ACK建立连接。
**三次握手把是否连接的控制权交给发送方。**
Time_Wait的作用
- 防止前一个连接上延迟的数据包被后面的链接复用
DNS为什么用UDP
I/O模型 多路复用
select epoll区别
– test
- 原文作者:nepp
- 原文链接:https://nepp-an.github.io/post/2021/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。