golang开发的二进制程序,一般需要长期后台运行的,在linux上可以用supervisor或upstart或systemd等第三方守护进程来实现.其实golang自己也可以实现以服务的形式常驻后台. 需要的库 https://github.com/kardianos/service 这个库里面有两个接口定义,一个是: type Service interface { // Run should be called shortly after the program entry point.
背景 一个简单的代理程序,发现单核QPS达到2万/s左右就上不去了,40%的CPU消耗在pb的decode/encode上面. 于是我想,对于特定的场景,直接从[]byte中取出字段,而不用完全的把整个结构在内存展开,岂不是要快很多. so, 温习了一些PB二进制格式的知识. pb的二进制格式: 参考的文章有: Google Protobuf 编码原理 Protocol Buffers(3):阅读一个二进制文件 几个关键点总结如下: 5 bit的 field index 3 bit的wire t
package main import ( "fmt") // pc[i] is the population count of i.var pc [256]byte func init() { for i := range pc { pc[i] = pc[i/2] + byte(i&1) }} func PopCount(x uint64) int { return int(pc[byte(x>>(0*8))] +
从今天起,将学习go语言.今天翻了一下许式伟前辈写的<Go语言编程>中的简要介绍:Go语言——互联网时代的C语言.前面的序中介绍了Go语言的很多特性,很强大,迫不及待地想要一探究竟,于是便问道Go语言.很幸运地发现了无闻大师已录制了一套针对新手的Go语言入门教程,深表感谢!教程在这儿. 官方网址是:https://golang.org/(呃,很无辜地被屏蔽了,办法看这里) 这是官网首页的介绍.The Go Programming Language Go is an open source pr