第 119 期 2021-10-21 Go monkey patch 的原理及应用

第 119 期 2021-10-21 Go monkey patch 的原理及应用

YouTube 回看

猴子补丁(Monkey Patch)可以在程序运行期间动态修改函数行为。也有人把这种技术叫「打桩」。这种技术在Python或者Ruby这样的动态语言中比较常见。但这并不意味着静态语言不能实现类似的效果。本期介绍在 Go 语言中实现 monkey patch 效果原理。核心思想来自Bouke,我在他工作的基础上添加了多协程并发 Patch 的支持。因为相关主题已经有过分享,这次我会着重分析分协程打桩的实现原理和应用场景。

大纲

  • Monkey Patch 的基本原理及问题
  • 如何实现协程独立的 Monkey Patch 效果
  • Monkey Patch 的应用场景

分享者自我介绍

我是涛叔,来自B站,从事 Go 服务端研发工作。

计划分享时间

2021-10-21 21:00:00 UTC+8

分享地址

Bilibili 直播:

https://live.bilibili.com/h5/11171965

Slides

第 119 期 Go Monkey Patch 原理及应用.pdf (565.6 KB)

参考资料

2 个赞

想问下,在用跳转汇编那段逻辑覆盖原始foo那段代码的时候,会不会出现foo函数body处内存不够那段跳转指令代码长度?

开始我也有这方面的疑虑。但实践上发现 go 会给小函数填充body指令。你可以写个没有body的函数,看看实际的汇编指令就知道了。