大会感想:牛人真的很能写代码,实现很多功能,而且开源的精品越多,影响力越大,越能过上dream life。比如beego的作者,去了America,进入了Apple。另外,精英们特点是表达能力很强,也能撕逼。比如Golang和Rust性能pk就争论得不可开交。参与这种技术社群真的是让人脑洞大开,记得谁说过那么一句话--不让你感到惊喜的语言不值得学。我想表达的是不让我感到惊喜的会议不值得花钱参加。
好多人从nodejs转向了golang,原因无非在于golang是高吞吐低延迟,适合CPU负载密集型,非中断式的后台加载。而nodejs能很好用于IO密集型的服务,解释执行和动态类型,在单线程加载解释方面会有延迟如JSON编译工作(摘自infoq)。
来个倒叙吧:我只记录我感兴趣的,有些东西我不知道什么意思,纯记录
一、网易云的人分享:
pipeline测试:树莓派+facebook argmented traffic control
cat /proc/sys/net/ipv4/tcp_wmem
##go和nginx lua性能对比测试: ab -n 1000000 -c 5000 -k "http://127.0.0.1:8081/512b"
二、grabtaxi:
docker优化经验:内存swap off
路由优化经验:
- nethttp->fasthttp
- Pool bufferio Reader/Writer
- Pool conn,buffer
- header struct
- string->[]byte
代码看不懂,上图
代码规范
golint go vet go errcheck goimports gofmt gometalinter
代码测试
stretchr/testify rafaeljusto/redisgomock 测试时替换函数指针
不能总来图片,抄写下代码
package main import "testing" var realImpl = func() int { //do something for real } func TestSomething(t *testing.T) { defer func(org func() int) { realImpl = org }(realImpl) realImpl = func() int { return 0 } //carry on with the testing }
工作流程
1.好的工作流程
- 让普通的人表现得更牛
- 让牛人逆天
2.糟糕的工作流程
- 普通人想辞职
- 牛人已经辞职了
持续集成
- TravisCI->drone.io->Jenkins
持续部署
- DataDog->NewRelic->Scalyr->Slack
资源和程序一起发布
- https://github.com/jteeuwen/go-bindata
debug性能问题
- pprof
- github prometheus/prometheus
- github tsenart/vegeta