时间还是像流水一样就这么流过去了。
十年前的九月十二日,我们站在北航的图书馆门前,怀着对未来的憧憬进入了离家几百或者几千公里以外的大学。远离亲人和家乡,踏上了陌生的土地和教室。环顾四周,再也没有熟悉的同学和旧友。惆怅么?惆怅。悲伤么?不好说。
浪漫的散漫的童年时代就在拿到录取通知书的时候划上句号了。可是下一段青春好像怎么都找不到可以落笔的开头。新的班级和新的同学,虽说这样的场面还是在两次升学过程中经历过,这一次在他乡多多少少让人百感交集。
把人送到宿舍,别过依依不舍的父母。新的生活就这么开始了。然后就是想着漫长的大学时代。那个时候北京的房价还没有到五位数,房租还是以百计。年轻人们在狭窄的宿舍里开朗地讨论着未来和梦想----哦,梦想这算东西说归说,听到同宿舍的同学们说自己对软件和互联网没什么兴趣,是被调剂过来的。还是有些许的失望,但在他乡,即使同僚不上进,那依然是你可以依靠的为数不多的同僚。
紧跟着便是悠长的大学时代,哦,
之前在 golang 群里有人问过为什么程序会莫名其妙的 hang 死然后不再响应任何请求。单核 cpu 打满。
这个特征和我们公司的某个系统曾经遇到的情况很相似,内部经过了很长时间的定位分析总结,期间还各种阅读 golang 的 runtime 和 gc
代码,最终才定位到是业务里出现了类型下面这样的代码:
package main
import "time"
func main() {
var ch = make(chan int, 100)
go func() {
for
最近在部门内组织了一场撕逼大会,几个 golang 组坐在一起聊一聊未来的应用应该怎么写。感觉收获颇丰。
在企业内部做开发的时候,实际上 99%
的程序员都不太在意代码的质量问题。这个比例我没有任何夸大,从上一家公司出来(倒闭)来到滴滴,又转过一次部门。经手了很多系统,个个也都是国内顶级公司(BAT)来的程序员们,但是代码写出来个顶个的垃圾。不管是维护还是阅读,都非常得痛苦。
一年多以来我一直在思考原因,刚开始的时候想法很极端,认为这些程序员就是基础不过关。但是在和很多人沟通的过程中发现,实际上大部分人都还比较聪明,并且务实而理智,分得清优劣,而不像是我刚来的时候想像的那个样子。
那为什么最终的结果却是写出了无数的垃圾代码呢?又经过了一段时间的思考,我大概总结出以下一些原因:
1.
发现有同事还不会用 pprof 来排查性能问题。希望看完这篇文章以后能学会。
go 里自带的 pprof 是非常强大的工具。平常可以用来排查线上的 cpu 问题,内存问题。官方的 pprof 使用起来非常简单。如果你的进程是个 web
服务,只要:
import _ "net/http/pprof"
然后你的 web 应用就有了生成 profile 的能力。当线上出现问题的时候,如果是进程 cpu 占用过高,我们可以先用
昨天看到大佬们讨论摩拜和 ofo 谁会成,马化腾提到 ofo 使用的是 token 锁。又想起来半年前和同事们讨论过 ofo
这种离线的会变化的锁密码是怎么实现的。那时候也没有细想,不过现在看着 token 锁这个词。。想起来之前写过的这一篇:关于token
[http://xargin.com/about-token/]。原理应该都是一样的。
这里我们假装 geek。用上一篇讲的 token 原理可以很简单地设计出一套 ofo 这样的系统。先来看看 ofo 的系统有哪些组成要件:
车牌号