第 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原始碼
- Swift標準庫原始碼閱讀筆記 - DictionarySwift原始碼筆記
- Go基礎系列:讀取標準輸入Go
- 今天3點,15年行業經驗大咖線上解讀:標準如何助力開源發展 | 第 55 期行業
- 第 6 期 Arthas 徵文活動開啟!(內附第 5 期獲獎名單)
- Swift標準庫原始碼閱讀筆記 - Array和ContiguousArraySwift原始碼筆記
- Android 進階之旅 | JTalk 掘金線下活動第四期Android
- 怎麼提高go讀取標準輸入的速度Go
- Go標準庫ContextGoContext
- 閱讀筆記8筆記
- 一週活動速遞|深入淺出第8期;Meetup成都站報名進行中
- 【GBASE的那些事兒】系列直播活動第03期《GBase 8a產品全景能力展示》
- 前端安全大起底 | JTalk 掘金線下活動第八期前端
- [Go 夜讀 第 139 期] Go 語言 Excelize 開源基礎庫介紹GoExcelize
- buffer 原始碼包閱讀原始碼
- 第 67 期 Go database/sql 資料庫連線池分析GoDatabaseSQL資料庫
- Go 的 golang.org/x/ 系列包和標準庫包有什麼區別?Golang
- 每週分享第 8 期
- Go標準庫:Go template用法詳解Go
- spring原始碼閱讀環境(幾分鐘下載包)Spring原始碼
- go package官方文件閱讀方式GoPackage
- go 中 select 原始碼閱讀Go原始碼
- Go Wednesday活動提案Go
- go語言標準庫 - timeGo
- go語言標準庫 - strconvGo
- go語言標準庫 - regexpGo
- go語言標準庫 - logGo
- NEP-6錢包標準
- 每週分享第 8 期(20181228)