【Go 夜读】第 8 期 2018-05-31 线下活动 - Go 标准包阅读

yangwen13 · · 313 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

>文章来自于:https://reading.developerlearning.cn/reading/8-2018-05-31-net-http-part2/ ## 观看视频 https://youtu.be/U84dn76gixQ *Go 标准包阅读* Go 版本:go 1.10.2 ### net/http - server.go ### 问题 1. ```go func (s *Server) doKeepAlives() bool { return atomic.LoadInt32(&s.disableKeepAlives) == 0 && !s.shuttingDown() } ``` 为什么要用 `atomic.LoadInt32(&s.disableKeepAlives) == 0` ? 原子操作比用锁更节约一点性能。 2. server.go#Shutdown 不保险 3. panicChan := make(chan interface{}, 1) ```go 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) ... ``` 外部处理就不能按照你的意愿去处理了,如果不拿出来,那么进程就挂掉了。 4. // Deprecated: ErrWriteAfterFlush is no longer used. ErrWriteAfterFlush = errors.New("unused") 5. Header() Header 注释引发的Trailer的思考? ![](https://reading.developerlearning.cn/images/2018-05-31-night-reading-go-01.jpeg) ![](https://reading.developerlearning.cn/images/2018-05-31-night-reading-go-03.jpeg) ![](https://reading.developerlearning.cn/images/2018-05-31-night-reading-go-02.jpeg) ## 延伸阅读 1. [HTTP Chunked Body/Trailer编码](http://www.unclekevin.org/?p=203) 2. [example_ResponseWriter_trailers](https://golang.org/pkg/net/http/#example_ResponseWriter_trailers) 3. [HTTP Header Trailer](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Trailer)

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

313 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传