2025-03-02 Go 在 Go 中如何使用分布式锁解决并发问题? 在分布式系统中,协调多个服务实例之间的共享资源访问是一个经典的挑战。传统的单机锁(如 sync.Mutex)无法实现跨进程工作,此时就需要用到分布式锁了。本文将介绍 Go 语言生态中基于 Redis 实现的分布式锁库 redsync,并探讨其使用方法和实现原理。 阅读全文…
2025-02-23 Go 在 Go 中使用 cron 执行定时任务 如果你曾经在 Go 中实现过定时任务,可能会发现,原生的 time.Timer 或 time.Ticker 虽然简单易用,但在复杂的场景下(如多任务调度、时区处理、任务失败重试等)往往显得力不从心。这时,一个功能强大且灵活的定时任务库就显得尤为重要。 github.com/robfig/cron 正是为此而生。它不仅支持标准的 crontab 表达式,还提供了秒级精度、时区设置、任务链(Job Wrappers)等高级功能,能够轻松应对各种复杂的定时任务场景。 阅读全文…
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 这门语言。 阅读全文…