新手如何调试 MySQL

前几天看到姜老师的旧文用 VSCode 编译和调试 MySQL,每个 DBA 都应 get 的小技能, 文末留了一个思考题,如何修改源码,自定义版本,使得 select version() 输出自定义内容

Read More

为什么泛型使你的程序变慢

强烈推荐大家读完,可以很好的理解泛型实现,以及当前有哪些性能问题,翻译时我会加些注释,以便大家更好的理解,原文链接请看底部

Go 1.18 发布很久了,人们期待己久的第一个版本终于可以投入生产环境使用。泛型是经常被提到的功能,在 Go 社区中一直存在争议

Read More

每个 gopher 都需要了解的 Go AST

最近业务迁移,大约 100+ 个接口需要从旧的服务,迁到公司框架。遇到几个痛点:

  1. 结构体 dto 做 diff, 对比结果
  2. 自定义的结构体与 protobuf 生成的互相转换,基于 json tag

Read More

围观 Roblox 持续三天的故障

Roblox 是一家游戏公司,也是元宇宙概念股。去年底发生一起故障,持续三天之久,官网也发布 blog总结了原因,但并没有说清楚底层 boltdb 的问题。由于需要 FQ, 同时把官方 blog 复制了一份,欢迎围观 https://mytechshares.com/2022/02/16/roblox-return-to-service/

Read More

Roblox Return to Service 10_28-10_31 2021

版权归 Roblox 所有,方便大家免 FQ 查看,复制在此。原文地址:https://blog.roblox.com/2022/01/roblox-return-to-service-10-28-10-31-2021/

Read More

基于 nginx quic 分支体验 http3

去年发过文章 HOL blocking 困扰两个月的问题, http2 通过多路复用虚拟 stream 最大化的利用了 tcp 连接的性能,并且解决了七层的 HOL 问题,但是没有解决四层 tcp 的 HOL, 如果有丢包,那么同一 tcp 上的所有业务都会产生影响,QPS 高的时候非常明显

Read More

如何应对不断膨胀的接口

难怪码农自嘲是 CRUD boy, 每天确实在不断的堆屎,在别人的屎山上缝缝补补。下面的案例并没有 blame 任何人的意思,我也是堆屎工^^ 如有雷同,请勿对号入座

案例

最近读一个业务代码,状态机接口定义有 40 个函数,查看 commit log, 初始只有 10 个,每当增加新的业务需求时,就不断的在原接口添加

Read More

Gopher 需要知道的几个结构体骚操作

我们知道 Go 没有继承的概念,接口结构体多使用组合,很多开源产品或是源代码都有大量的内嵌 (embeded field) 字段,用于特殊目的。本次分享的内容来自 grpc 与 go 源码

NoCopy

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package main

import (
"sync"
)

func test(wg sync.WaitGroup) {
defer wg.Done()
wg.Add(1)
}

func main() {
var wg sync.WaitGroup
wg.Add(1)
go test(wg)
wg.Wait()
}

Read More

聊聊为什么 IDL 只能扩展字段而非修改

前几年业界流行使用 thrift, 比如滴滴。这几年 grpc 越来越流行,很多开源框架也集成了,我司大部分服务都同时开放 grpc 和 http 接口

Read More

Go error 处理最佳实践

今天分享 go 语言 error 处理的最佳实践,了解当前 error 的缺点、妥协以及使用时注意事项。文章内容较长,干货也多,建义收藏

什么是 error

大家都知道 error 是源代码内嵌的接口类型。根据导出原则,只有大写的才能被其它源码包引用,但是 error 属于 predeclared identifiers 预定义的,并不是关键字,细节参考int make 居然不是关键字?

Read More