channel底层实现   :buf,sendx,recvx,lock, sendq , recvq ;  hchan 结构体 并发安全:CSP  channel 通信加锁 goroutine和线程的区别:goroutine 是建立在线程之上的轻量级的抽象,允许以非常低的代价在同一地址空间中并行地执行多个函数和方法。相比如线程,创建和销毁的代价更小,调度是独立于线程之外的。 为什么说goroutine轻量:1 创建Goroutine 通常只需要2kb 的内存,但是线程则需要1mb  2 . go 中创建和销毁都是自己管理的,而不是像操作系统申请资源,销毁再归还。3 GMP调度 defer关键字后的函数在什么时候调用 主函数return前还是return后: defer的执行顺序在return之后,但是在返回值返回给调用方之前,所以使用defer可以达到修改返回值的目的。 半连接队列:三次握手中 服务器收到syn 建立半连接队列???