int make 居然不是关键字?

这是一个小白问题,有多少人知道 int 居然不是关键字?make 也不是关键字?

我们知道每种语言都有关键字和保留字的,而 go 以关键字少著称,只有25个

Mehr lesen

如何正确设置连接保活

本文来自十年老粉小六子投稿,内容比较干,大家平时肯定也会遇到

由于线上存在网络问题,会导致 GRPC HOL blocking, 于是决定把 GRPC client改写成 HTTP client

Mehr lesen

如何阅读 redis 源码

有的网友想要学习 redis 源码的方法,鸽了一个月,今天分享我的学习方法以及路径,学习步骤不限于 redis, 换成其它开源软件套路也是一样。强调一下,没有速成方法,没有捷径,只有苦行僧一般的坚持才能做好任何一件事情,与君共勉 ^^ 以前写过 redis 系列,感兴趣的可以订阅话题

Mehr lesen

如何应对不断膨胀的接口

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

案例

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

Mehr lesen

Head Of Line Blocking 困扰两个月的线上问题

我们最近遇到一个问题,内部某个服务是有状态的,有些请求需要在内部做转发,但是请求偶尔发生超时,随机超时,并且没有任何规律,和 QPS 无关,一般 2s 内都恢复了。
经过两个月排查,不断的 narrow down, 最终排除业务代码问题,定位 root cause 是 tcp restranmit 引起的 HOL(head of line) blocking, 己经给 aws 提了 ticket, 至于重传的原因还在与 aws 确认中。

Mehr lesen

如何搭建 blog? 附带全部 Hexo + Nginx + Git 教程

个人 blog 欢迎访问:https://mytechshares.com/ , 内容同步自微信公众号。首先说下为什么自建 blog 站点:

Mehr lesen

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()
}

Mehr lesen

如何用 Go 实现 Jit compiler

原文作者是 Sidhartha Mani 首发于 Medium,曾由 jiangwei161002010 翻译后发布在 Go 语言中文网

Mehr lesen

Go error 处理最佳实践

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

什么是 error

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

Mehr lesen

Go Context 最佳实践

去年写了也许是 Context 最佳实践, 回头看有些遗漏,重新编辑整理,总结截至 go 1.17 的最佳实践

Mehr lesen