gopher china 2019 参会笔记

听课是真的累 @_@,学生时代过得真不容易。
两天的会议,第一天还算认真,就最后一个演讲没听。
第二天实在累,腰酸背痛,就只听了一个演讲。
记录一下主要的收获。

4月27日

滴滴

关于做一个业务框架,学到了如下几个不错的点:

  1. 协议劫持 - 方便在框架层做一些通用的逻辑,如超时控制、trace等
  2. 超时控制 - 最上游来控制,防雪崩

Grab

主要了解了go在地图类应用的工程实践,讲到一些算法,仅限听过,无法短时间完全掌握。

TiDB

讲到了许多不错的技巧

  1. 如何检测 goroutine泄漏:在单元测试开始和结束时调用 runtime.Stack() 去找到所有在运行的goroutine,比较是否有变化
  2. Apache Arrow这样一个紧凑的数据表示格式
  3. 起初采用 go fail 这个有趣的工具,他们进行了自己的实现

Dave Cheny 讲 Tests

讲得比较基础,还是学到了一些有用的工具

  1. sub test
  2. go-cmp 用于比较以及diff,打印更可读的test failure 信息
  3. unit test 的单元是 package
  4. 写代码的同时写test(跟我想法一致)

bilibili 毛剑

  1. 一种error的封装 github.com/pkg/errors Dave写的,获取根因,打印堆栈
  2. 把错误抛给调用者,由最顶层调用者打印。而不是到处打印错误信息(这个思路很好,到处打印错误日志的问题在我们自己项目中也存在)。有些通用的error如io.EOF之类的不要去wrap,可能有代码直接调用 err == io.EOF 进行判断。
  3. 服务间的错误码如何处理:封装一种结构,微服务间的错误码局部消化,不随意透传。
  4. context - 入口设置超时(跟滴滴英雄所见略同)。超时传递:跨服务级别的全链路覆盖
  5. context传递给新协程 - 用原来的copy一个新的,直接传会有并发访问问题。
  6. context.WithDeadline 忽略第二个参数会导致 泄漏?
  7. 显式传递 > 隐式传递,context显式传递,别包在struct里

新浪 鸟窝老师

讲了很多关于并发的基础知识,很详尽很基础,坐等拿到ppt再认真学习。
有一点记得比较清楚,mutex是不可重入的,func a调用func b,如果a 和b对同一个mutext进行lock,会死锁。

百度

大概讲了下百度用go的方方面面,之前参加过百度开放日的活动,所以已经有所了解。比较触动的是他们做依赖管理上付出的辛苦,不能访问外网的编译机,对第三方库又有严格审核,确实不容易。作为一个开放的创业公司,对于政策原因偶尔翻墙失败导致的依赖下不到就很头大了。
另外提到了go get 协议,值得了解一下。

4月28日

下雨天很阴冷,肩膀又痛,瞎听了一下,get到以下要点。

流利说

只听了个结尾。
大概讲了用 go 实现 lexer & parser,讲的比较基础,比较细,留待以后查阅 ppt 和 源码。

腾讯Tars

只听了一部分。
对于系统的timer不满意,自己基于 时间轮算法实现了一套timer,用到 sync.pool ?

你可能感兴趣的:(gopher china 2019 参会笔记)