第 8 期 2018-05-31 線下活動 - Go 標準包閱讀
文章來自於:https://reading.developerlearning.cn/reading/8-2018-05-31-net-http-part2/
觀看視訊
Go 標準包閱讀
Go 版本:go 1.10.2
net/http
- server.go
問題
func (s *Server) doKeepAlives() bool {
return atomic.LoadInt32(&s.disableKeepAlives) == 0 && !s.shuttingDown()
}
為什麼要用 atomic.LoadInt32(&s.disableKeepAlives) == 0
?
原子操作比用鎖更節約一點效能。
server.go#Shutdown 不保險
panicChan := make(chan interface{}, 1)
panicChan := make(chan interface{}, 1)
go func() {
defer func() {
if p := recover(); p != nil {
panicChan <- p
}
}()
h.handler.ServeHTTP(tw, r)
close(done)
}()
select {
case p := <-panicChan:
panic(p)
...
外部處理就不能按照你的意願去處理了,如果不拿出來,那麼程式就掛掉了。
// Deprecated: ErrWriteAfterFlush is no longer used. ErrWriteAfterFlush = errors.New("unused")
Header() Header 註釋引發的 Trailer 的思考?
延伸閱讀
更多原創文章乾貨分享,請關注公眾號
更多原創文章乾貨分享,請關注公眾號
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- 第 7 期 2018-05-24 線下活動 - Go 標準包閱讀Go
- 第 31 期 flag 包原始碼閱讀原始碼
- 第 27 期 go mod 原始碼閱讀 part 2Go原始碼
- Go標準包-http包serverGoHTTPServer
- Go標準包—http clientGoHTTPclient
- Go標準包——net/rpc包的使用GoRPC
- 第 36 期 k8s context 實踐原始碼閱讀K8SContext原始碼
- 第 35 期 context 原始碼閱讀Context原始碼
- Go標準庫flag包的“小陷阱”Go
- go標準庫-log包原始碼學習Go原始碼
- jbpm4.4原始碼閱讀(第8次)原始碼
- 專家審讀第8期——《提速C程式》+《征服C語言指標》C程式C語言指標
- Swift標準庫原始碼閱讀筆記 - DictionarySwift原始碼筆記
- Go基礎系列:讀取標準輸入Go
- 第13周-閱讀專案1-標準輸入輸出物件及文字檔案物件
- C++11標準後的C++閱讀書目C++
- 怎麼提高go讀取標準輸入的速度Go
- 第 67 期 Go database/sql 資料庫連線池分析GoDatabaseSQL資料庫
- 閱讀筆記8筆記
- [Go 夜讀 第 139 期] Go 語言 Excelize 開源基礎庫介紹GoExcelize
- buffer 原始碼包閱讀原始碼
- Go 的 golang.org/x/ 系列包和標準庫包有什麼區別?Golang
- Go標準庫ContextGoContext
- 每週分享第 8 期
- Go標準庫:Go template用法詳解Go
- Swift標準庫原始碼閱讀筆記 - Array和ContiguousArraySwift原始碼筆記
- Go語言基礎,想要了解的可以閱讀下Go
- go package官方文件閱讀方式GoPackage
- 第14章. 標準元素 (轉)
- go語言標準庫 - logGo
- go語言標準庫 - timeGo
- 第 55 期 Go&WebAssembly 簡介GoWeb
- 五月敏捷線下活動:Agile User Club(第二期)敏捷
- 精華閱讀第 12 期 | 最新 App Store 稽核指南與10大被拒理由?APP
- 一週活動速遞|深入淺出第8期;Meetup成都站報名進行中
- [譯品堂]第1期翻譯活動發起!
- spring原始碼閱讀環境(幾分鐘下載包)Spring原始碼
- go 中 select 原始碼閱讀Go原始碼