同事给了一个挺有意思的程序:
package main
import (
"fmt"
"os"
"runtime/trace"
"sync"
"time"
)
var mlock sync.RWMutex
var wg sync.WaitGroup
func main() {
trace.Start(os.Stderr)
defer trace.Stop()
wg.Add(100)
for i := 0;
几个月前网友建议我切换到 https,当时比较懒,假期给各种烂尾楼扫尾想起来这件事情,看了看 caddy,确实非常简单。
caddy 的宣传口号是 “Caddy is the HTTP/2 web server with automatic HTTPS.”,会使用 Let's
Encrypt 的服务自动帮你把 https 相关的证书流程自动搞定。颇有各种“一键干坏事脚本”风范。
个人用户用起来确实方便不少。
ghost blog 切换
ghost
某团圆节日公司服务到达历史峰值 10w+ QPS,而之前没有预料到营销系统又在峰值期间搞事情,雪上加霜,流量增长到 11w+ QPS,本组服务差点被打挂(汗
所幸命大虽然 CPU idle 一度跌至 30 以下,最终还是幸存下来,没有背上过节大锅。与我们的服务代码写的好不无关系(拍飞
事后回顾现场,发现服务恢复之后整体的 CPU idle
和正常情况下比多消耗了几个百分点,感觉十分惊诧。恰好又祸不单行,工作日午后碰到下游系统抖动,虽然短时间恢复,我们的系统相比恢复前还是多消耗了两个百分点。如下图:
确实不太符合直觉,cpu
之前有人在某群里询问 Go 的编译器是怎么识别下面的代码始终为 false,并进行优化的:
package main
func main() {
var a = 1
if a != 1 {
println("oh no")
}
}
先说是不是,再说为什么。先看看他的结论对不对:
TEXT main.main(SB) /Users/xargin/test/com.go
com.go:3
1.13 正式发布了,Release notes 上说 defer 现在大多数情况下可以提升 30% 的性能。这 30% 的性能怎么来的呢?
我们知道,以前的 defer func 会被翻译成 deferproc 和 deferreturn 两个过程,这里
[https://github.com/cch123/golang-notes/blob/master/defer.md]
现在