大会感想:牛人真的很能写代码,实现很多功能,而且开源的精品越多,影响力越大,越能过上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 -c -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