本模块仅供参考,如有存疑请指出或者自己实践检验
1.go的defer是在函数中止(正常或者异常结束后),开始调用,然后return或者painc返回
2.使用net/http建立链接的时候已经默认长连接,但是单个client的默认长连接数量为2,如果收到server的数据不读取的话,就会产生新的链接
3.tcp的三次握手链接/四次分手链接
time_wait 是保证服务器要求的last_ack确认报文收到而不会引起重传
握手
c.seq{a} -> s.ack{a+1},s.seq{b} -> c.ack{b+1},c.seq{a+1}
分手
c.Fin{1},c.seq{a} ,c.set_state(fin_wait_1) -> s.Ack{1},s.seq{b},s.ack{a+1},s.set_state(close_wait),c.set_state(fin_wait_2)
s.Fin{1},s.Ack{1},s.seq{b},s.ack{a+1},s.set_state{last_Ack} -> c.Ack{1},c.seq{a+1},c.ack{b+1},c.set_state{time_wait}
4.nil slice 和 empty slice 的区别
执行 := 获得的slice 就是empty slice | 执行定义 = 获得的slice就是nil slice