摘要: 三次握手 ​ 主动发起请求端,发送SYN(SYN表示建立连接) ​ 被动建立连接请求端,会去应答ACK同时发送SYN ​ 主动发起请求端,发送应答ACK (ACK表示响应) 四次挥手 1主动关闭连接请求端,发送FIN (FIN表示关闭连接) 2被动关闭连接请求端,应答ACK 半关闭完成 3被动关闭连接请求端,发送FIN 4主动关闭连接请求端,应答ACK 因... 阅读全文
posted @ 2019-12-19 20:49 离地最远的星 阅读(308) 评论(0) 推荐(0) 编辑
摘要: 字典被设置成not addressble,所以不可以直接修改value成员(结构体或数组) 正确做法是返回整个value,待修改后再设置字典键值,或直接用指针类型 如果返回的是指针,可以透过指针直接修改目标对象 在创建时预先准备足够空间有助于提升性能,减少扩张时的内存分配和重新哈希操作来自为知笔记(Wiz) 阅读全文
posted @ 2019-12-19 20:45 离地最远的星 阅读(273) 评论(0) 推荐(0) 编辑
摘要: itoa可以套公式,下面的依旧会按照公式运算 package main import "fmt" func main() { const ( b = 1 << (10 * iota) kb mb tb pb ) fmt.Println(b, kb, mb, tb, pb) //1 1024... 阅读全文
posted @ 2019-12-19 20:43 离地最远的星 阅读(157) 评论(0) 推荐(0) 编辑
摘要: io包 type Reader interface{ Read(p []byte)(n int,err error) } type Writer interface{ Write(p []byte)(n int,err err) } for循环中一次读出文件 n := -1 for { n, err = file.Read(bs) if n== 0 || e... 阅读全文
posted @ 2019-12-19 20:37 离地最远的星 阅读(267) 评论(0) 推荐(0) 编辑
摘要: go启动一个简单的httpserver package main import ( "fmt" "log" "net/http" ) func main() { http.HandleFunc("/", sayhelloName) //设置访问的路由 err := http.ListenAndServe(":8080", nil) //设置监听的端口 i... 阅读全文
posted @ 2019-12-19 20:33 离地最远的星 阅读(97) 评论(0) 推荐(0) 编辑
摘要: Go语言runtime.Gosched()函数浅析 这个函数的作用是让当前goroutine让出CPU,好让其它的goroutine获得执行的机会。同时,当前的goroutine也会在未来的某个时间点继续运行。 请看下面这个例子(show.go): package main import ( "fmt" ) func showNumber (i int) { fmt.Pr... 阅读全文
posted @ 2019-12-19 20:29 离地最远的星 阅读(371) 评论(0) 推荐(0) 编辑
摘要: package main import ( "fmt" "runtime" ) func main() { n := runtime.NumCPU() fmt.Print(n) runtime.GOMAXPROCS(n - 1) //设置cpu运行的数目 } 来自为知笔记(Wiz) 阅读全文
posted @ 2019-12-19 20:26 离地最远的星 阅读(825) 评论(0) 推荐(0) 编辑
摘要: go奉行通过通信来共享内存,不像c和c++通过共享内存来通信 协程是轻量级的线程,编译器做优化** 有独立的栈空间 共享程序堆空间 调度由用户控制 协程是轻量级的线程 并行:多个cpu共同执行 并发 多个程序在cpu上不停的切换 go协程也是抢占式的 情景:在多线程情况下如果多个线程去下载同一个视频,这样多个线程可能会同时被io阻塞 这段时间所有线程都阻塞了,线程轮询所有线程都... 阅读全文
posted @ 2019-12-19 20:18 离地最远的星 阅读(485) 评论(0) 推荐(0) 编辑
摘要: sync.Cond代表条件变量,需要配置锁才能有用 package main import ( "fmt" "runtime" "sync" "time" ) func main() { runtime.GOMAXPROCS(4) testCond() } func testCond() { c := sync.NewCond(... 阅读全文
posted @ 2019-12-19 20:17 离地最远的星 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 判断io读取是否结束,尽量用if n==0这种方式,因为可以判断很多种情况 package main import ( "fmt" "io" "net/http" ) func handler(w http.ResponseWriter, r *http.Request) { w.Write([]byte("hello")) fmt.Println(r.... 阅读全文
posted @ 2019-12-19 20:15 离地最远的星 阅读(477) 评论(0) 推荐(0) 编辑