2025-02-16 Go Go 并发编程:如何实现一个并发安全的 map 上周发布的文章「Go 并发控制:sync.Map 详解」有读者反馈说我写的太难了,上来就挑战源码,对新手不够友好。所以这篇文章算作补充,从入门到进阶的顺序讲解一下在 Go 中如何自己实现一个并发安全的 map。 阅读全文…
2025-02-10 Go Go 并发控制:sync.Map 详解 我们知道,Go 中的 map 类型是非并发安全的,所以 Go 就在 sync 包中提供了 map 的并发原语 sync.Map,允许并发操作,本文就带大家详细解读下 sync.Map 的原理。 阅读全文…
2025-02-07 Go 在 Go 中如何将 [][]byte 转为 io.Reader ? 起因:在春节前的某一天,我在 ekit 项目的交流群里看到大明老师发了这样一条消息: 各位大佬,问个小问题,有咩有谁用过 [][]byte 转为 io.Reader 的东西?我以前搞过一次,但是我忘了是我手搓了一个实现,还是用的开源的,还是SDK 自带的 阅读全文…
2025-01-30 Go 用 Go 语言还原 2025 刘谦春晚魔术! 魔术截图 去年大年初二,我写了一篇文章「用 Go 语言实现刘谦 2024 春晚魔术,还原尼格买提汗流浃背的尴尬瞬间!」,里面揭秘了小尼魔术失败的原因,这也是我公众号的第一篇文章。 今天刚好也是大年初二,我再带大家用 Go 语言还原一下刘谦在蛇年春晚上的魔术。 阅读全文…
2025-01-21 Go Go 并发控制:semaphore 详解 今天我们来介绍一个 Go 官方库 x 提供的扩展并发原语 semaphore,译为“信号量”。因为它就像一个信号一样控制多个 goroutine 之间协作。 阅读全文…
2025-01-16 Go Go os/exec 极速入门 os/exec 是 Go 提供的内置包,可以用来执行外部命令或程序。比如,我们的主机上安装了 redis-server 二进制文件,那么就可以使用 os/exec 在 Go 程序中启动 redis-server 提供服务。当然,我们也可以使用 os/exec 执行 ls、pwd 等操作系统内置命令。本文不求内容多么深入,旨在带大家极速入门 os/exec 的常规使用。 阅读全文…
2025-01-08 Go 超简单!用 Go 启动 Redis 实例 最近写了几篇 Go 并发编程相关的文章,想必有些读者看多了可能会有些厌倦,今天来点轻松的内容,介绍一个可以用来启动 redis-server 的开源库 github.com/stvp/tempredis。这是一个用 Go 语言开发的包,专门用于创建临时的 Redis 实例,主要用于测试目的。它可以在本地启动一个临时的 Redis 服务实例,在测试结束后自动关闭并清理,帮助开发者避免对实际的 Redis 环境进行操作。 阅读全文…
2025-01-01 Python 我与 Python 大家好,我是江湖十年。 2025 年第一天,我想以此文作为我的博客在今年发布的第一篇文章,也作为新一年的起点。 本文翻译自 Python 语言创始人 Guido van Rossum 在 2016 年 4 月 27 日的一次演讲,讲述自己的经历,以及如何创造出 Python 这门语言。 阅读全文…
2024-12-29 Go Go 并发控制:sync.Cond 详解 在 Go 中因为 channel 的存在,sync.Cond 并发原语并不常用。不过在一些开源组件中还能能见到 sync.Cond 的应用,比如 Kubernetes 用它来实现并发等待队列,这也是 sync.Cond 的典型应用场景。本文将通过源码和示例带你学会 sync.Cond 的正确用法。 阅读全文…
2024-12-23 Go Go 并发控制:sync.WaitGroup 详解 前段时间我在《Go 并发控制:errgroup 详解》一文中讲解了 errgroup 的用法和源码,通过源码我们知道 errgroup 内部是使用 sync.WaitGroup 实现的,那么本文就更进一步,来探索下 sync.WaitGroup 源码是如何实现的。 阅读全文…