golang--gopher北京大会(1)

时间:2023-03-25 22:22:44

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

代码看不懂,上图

golang--gopher北京大会(1)

golang--gopher北京大会(1)

golang--gopher北京大会(1)

golang--gopher北京大会(1)

golang--gopher北京大会(1)

golang--gopher北京大会(1)

golang--gopher北京大会(1)

golang--gopher北京大会(1)

代码规范

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