摘要:
主协程如何等其余协程完再操作 主协程自我阻塞,直到需要的协程完成 阻塞方法 使用sync.WaitGroup()管理其余协程 优点:操作简单 缺点:不能管控协程的执行完成的顺序 利用缓存管道进行协程之间的通信 优点:能够管控一组协程结束 缺点:不能管控协程的执行完成顺序 利用无缓存管道进行协程之间的 阅读全文
摘要:
TCP连接示意图 长连接和短链接的区别 客户端和服务端响应的次数 长连接:可以多次。 短链接:一次。 传输数据的方式 长连接:连接 数据传输 保持连接 短连接:连接 数据传输 关闭连接 长连接和短链接的优缺点 长连接 优点 省去较多的TCP建立和关闭的操作,从而节约时间。 性能比较好。(因为客户端一 阅读全文
摘要:
golang的server push server push作用的理解 客户端和服务端建立连接之后,服务器主动将一些资源推送给服务端。 注意:推送的内容,要放在发送响应数据之前。 server push示意图 server push特点 理论上,缩短数据加载的时间 将请求数据存放在缓存中 serve 阅读全文
摘要:
context学习 context的struct设计 go type Context interface { Deadline() (deadline time.Time, ok bool) Done() 阅读全文
摘要:
空结构体的特点和作用 参考代码 go package main import ( "fmt" "unsafe" ) func main() { empStruct() } //空结构体的实例和作用 func empStruct(){ //空结构体的特点:1、不占用内存;2、地址不变 var s st 阅读全文
摘要:
time包中Parse和Format的区别 参考代码 输出结果 总结:两者的区别:Format表示将时间转化为字符串,parse表示将字符串转化为时间 阅读全文
摘要:
参考代码 go func main(){ // 错误写法 // ch1 := make(chan string) // ch1 阅读全文
摘要:
defer func(参数){} 参考代码 输出结果 结果分析 defer运行特点 在return之后执行 先赋值后放入堆栈 阅读全文
摘要:
循环开协程情况分析 代码 现象说明 a的值为什么会是一样? 第一个go func中a是外部变量,因为协程运行时间不确定性,可能此时for循环完之后,才创建完协程,而此时得a=10,协程操作的也是这个变量。因此值会是一样的。 b的值为什么会不一样? 第二个go func中 是函数参数,与外部for中的 阅读全文
摘要:
for range 经典问题 问题 输出结果 个人理解(要是理解的不对,请指出,谢谢) 在该for循环中,range驱动数组内部初始指针走动,每次遍历数组的时候,数组内初始指针都会向下移动。循环结束之后,range使得数组内部的初始指针指向最后一个元素。根据指针的特性,赋给data的value值都是 阅读全文