Go 1.17 调用规约

2021-09-01
阅读 5 分钟
2.4k
x86 calling convention,简单概括一下,其实就是语言对于函数之间传参的一种约定。调用方要知道我要把参数按照什么形式,什么顺序传给被调用函数,被调用函数也遵守该规范去相应的位置找到传入的参数内容。

Go 语言的非协作式抢占原理

2021-07-26
阅读 9 分钟
3.7k
从 Go 1.14 开始,通过使用信号,Go 语言实现了调度和 GC 过程中的真“抢占“。抢占流程由抢占的发起方向被抢占线程发送 SIGURG 信号。当被抢占线程收到信号后,进入 SIGURG 的处理流程,将 asyncPreempt 的调用强制插入到用户当前执行的代码位置。本节会对该过程进行详尽分析。抢占发起的时机抢占会在下列时机发生:STW ...

Go 语言中的一些不太常见的优化

2021-07-10
阅读 2 分钟
1.4k
这次去 Gopher China 和不少老朋友见了个面,还有不少在微信上认识已久,一直没见过面的网友。同时也和各个公司的一线开发们聊了聊,互相交流了彼此使用 Go 时的一些心得和痛点。

MQ 解耦?骗你的

2021-06-09
阅读 2 分钟
2k
有一个观点已经被说烂了:使用 MQ 可以帮助业务系统解耦。想法很简单,在业务状态流转时,如果没有 MQ,那么其它系统想要知道状态变了,那就需要核心流程系统去主动做通知。比如电商系统里订单从创建到处理中状态切换了,客服系统需要知道,风控系统需要知道,用户系统也需要知道。这里的通知通过 RPC 来进行,下游系统...

Google 怎么解决长尾延迟问题

2021-05-11
阅读 4 分钟
7.4k
要知道怎么解决长尾问题,先要理解长尾延迟是个什么问题,在开发在线服务的时候,我们都知道要关注服务的 p99/p999 延迟,要让大部分用户都能够在预期的时间范围内获得响应。