一致性事务:从 2PC 到 Outbox pattern

"如果你做过一点微服务开发,大概率都遇到过这种场景:

2026/4/30
阅读更多

鸿蒙 OS 的签名密钥机制,我终于整明白了!

在做移动应用开发时,不管是 Android 还是 iOS,我们都绕不开“签名”这件事。最近我们项目在筹备适配 HarmonyOS NEXT(鸿蒙 Next) 的 SDK,也顺势把鸿蒙的签名机制研究了一遍。这篇文章来分享下。

2026/4/30
阅读更多

数据库分表实践:如何优雅地切换到分表架构

"在我们的后端架构中,我们采用了以游戏为租户单位的多租户数据库设计。所有游戏共享同一套数据库 schema,每张表通过 game_id 字段进行逻辑隔离。这种设计在初期带来了显著的开发与维护效率,支持我们快速迭代、快速上线多个游戏项目。

2026/4/30
阅读更多

“该省省,该花花”

春节假期,我终于完成了两件大事:见了未来的岳父岳母,还带奶奶游览了北京。忙里偷闲,我决定总结一下这几天的经历,顺便分享一些“花钱”与“省钱”的小感悟。

2026/4/30
阅读更多

Golang 中的 EOF 与 read: connection reset by peer 错误深度剖析

在 Golang 网络请求中,我们经常会遇到两种常见的错误:`EOF` 和 `read: connection reset by peer`。这两个错误虽然看似相似,但实际上有着本质的区别。这篇文章将深入探讨这两种错误的原因、区别以及如何优雅的处理它们。

2026/4/30
阅读更多

为什么你应该在代码中消除 "context deadline exceeded" 错误

在 Go 语言中,context 包提供了一种跨 API 和进程边界传递请求作用域值、取消信号以及超时信号的方式。使用 context 可以帮助我们更好地控制 goroutine,避免 goroutine 泄漏等问题。出现 "context deadline exceeded" 错误通常是因为在请求上下文中设置了超时时间,但请求在超时时间内未完成。我们应该尽量避免这种错误...

2026/4/30
阅读更多

死锁日记:手写 GoLang 上报队列

我们团队负责的防沉迷上报服务突然在某一天遭遇了内存溢出(OOM)的情况。通过查看 Prometheus 监控数据,我们发现 Goroutines 的数量在中午十二点之后呈现出线性增长趋势,直至晚上十点 OOM 发生,Goroutines 数量骤降为零。

2026/4/30
阅读更多

gorm 中 MySQL 错误码映射与主键冲突错误处理

"在使用 gorm 处理数据库操作时,尤其是针对 MySQL,有时我们会遇到 golang 标准库`errors.Is`函数无法直接识别特定的 gorm 错误类型的情况,如主键冲突错误。尽管 gorm 提供了`gorm.ErrDuplicatedKey`来表示此类错误,但在原始错误返回中并不能直接通过`errors.Is(err, gorm.ErrDuplicatedKey)`来进行判断。本文深入探究 gorm.io/driver/mysql 包中的错误转换机制,揭示了如何借助`error_translator`模块将 MySQL 的错误码映射为 gorm 的错误类型。

2026/4/30
阅读更多

CloudFlare Tunnel 免费内网穿透的简明教程

"Tunnel 可以做什么?

2026/4/30
阅读更多

2023 年购物回忆录:值不值得买

2023年,对我来说是充满购物冒险的一年,我购买了很多东西,今天,我想回顾一下,分享哪些购买对我来说物超所值,哪些则是我冲动消费的产物,让我感到后悔。让我们开始这段回忆旅程吧~??️

2026/4/30
阅读更多

探索服务端通信技术:短轮询、WebSocket、SSE 与长轮询的深度比较

在现代 Web 应用中,服务端与客户端之间的高效通信至关重要。本文探讨了四种主流的服务端通信方法:短轮询、WebSocket、SSE(Server-Sent Events)和长轮询,分析它们的工作原理、适用场景及优缺点。

2026/4/30
阅读更多

API 设计中的多类型属性选择:OpenAPI 与 gRPC 的 oneof 与强类型对比

在谈论 API 设计和开发时,有时,一个属性可以是多种类型中的一个,但不能同时是多种类型。比如支付接口的回调处理,常常为了兼容不同平台的参数,会使用以下方式中的一种来进行接收,在程序开发中,我们往往会采用主流的 HTTP 协议和 gRPC 协议进行通信,两种技术都为开发者提供了强大的工具来描述、验证和生成 API,但它们的方法和原则有所不同。

2026/4/30
阅读更多

团队开发中对于代码仓库和镜像管理的标准统一

随着现代软件开发的持续迭代,团队间的协作变得越来越重要。为了确保整个团队在编码、构建和部署过程中的效率和质量,引入一些特定的配置文件和标准工作流程显得尤为关键。以下就是一些在团队开发中常见而又重要的文件,我总结了它们的一些作用和优点。

2026/4/30
阅读更多

我的自行车

在今年7月份左右,我开始关注自行车,出于便携性而言,我更倾向于购买一辆折叠车,之前在大街上也看到了很多骑得超快的折叠车,所以我对于折叠车的竞速性能也是满意的,于是我开始看各种折叠车的测评和论坛~

2026/4/30
阅读更多

使用 rclone 命令行管理 Cloudflare R2 对象存储

Cloudflare R2 是一款高性能、低成本的对象存储服务。之前在使用 OSS 的时候,用惯了 OSS brewer, 在用 R2 时候发现,开始没有找到合适的 brewer 工具,而网页端上传会限制文件数量和大小,就尝试用命令行的 client 了哈哈, 使用之后发现,确实好用,相比使用网页管理对象存储,利用命令行工具可以大大提高管理效率,特别适合需要批量操作或脚本化的场景。

2026/4/30
阅读更多

GORM 中 SQL、慢 SQL 打印日志传递 trace ID

"GORM 中SQL、慢SQL打印日志传递 trace ID, 重写GORM日志实现,SQL日志、慢日志请求追踪

2026/4/30
阅读更多

更换博客图床,从 OSS 到 GitHub 再到 R2

"写博客一个很重要的东西就是图床, 如果没有一个合适的图床来安全稳定地存储数据,指不定哪天,你的文章就到处都是

2026/4/30
阅读更多

如何在 Go 中实现程序的优雅退出,go-kratos 源码解析

"使用kratos这个框架有近一年了,最近了解了一下kratos关于程序优雅退出的具体实现。

2026/4/30
阅读更多

os.signal golang 中的信号处理

在程序进行重启等操作时,我们需要让程序完成一些重要的任务之后,优雅地退出,Golang为我们提供了signal包,实现信号处理机制,允许Go 程序与传入的信号进行交互。

2026/4/30
阅读更多

探索 PlanetScale:划分分支的 MySQL Serverless 平台

"最近我发现了一个非常有趣的国外MySQL Serverless平台,它叫做PlanetScale。这个平台不仅仅是一个数据库,它能像代码一样轻松地创建开发和测试环境。你可以从主库中拉出一个与之完全相同结构的development或staging数据库,并在这个环境中进行开发和测试。所有的数据都是隔离的,不会相互干扰。

2026/4/30
阅读更多

优化你的RSS订阅:一次全面改进的实践

先前,我的 RSS 订阅功能过于简化,只提供了几个基本字段,而且不展示全文。我决定对订阅功能做一次全面的改进。

2026/4/30
阅读更多

最近在做的事:GitHub Action | GPT Plus | whisper | V2EX | GPT API | PMP

运动数据使用GitHub Action自动更新| 开通体验了一下GPT Plus | 买了一支录音笔,全天候录音,使用 whisper 录音转文字 |终于注册了 V2EX |GPT API续费问题曲线救国|报名了PMP的培训班和考试

2026/4/30
阅读更多

一个游戏开发者的自我介绍

职业道路上的新旅程:一个游戏开发者的自我介绍

2026/4/30
阅读更多

使用GitHub Action 同步运动数据并生成热力图

"如果你想把你的运动数据和热力图同步到 GitHub,那么你来对地方了。在这篇文章中,我将详细解释如何使用 GitHub Actions 和 Python 自动同步和更新你的数据。

2026/4/30
阅读更多

【Gorm】Save 方法更新踩坑记录

在我最近使用Gorm进行字段更新的过程中,我遇到了一个问题。当我尝试更新status字段时,即使该字段的值没有发生变化,Gorm还是提示我“Duplicate entry 'xxxx' for key 'PRIMARY'”。

2026/4/30
阅读更多

一次线上异常的追踪与处理

"5月31日晚,我们接到游戏玩家反馈,经常出现请求超时的提示。在我亲自登录游戏验证后,也出现了相同的错误,但游戏仍然可以正常运行,数据也没有任何问题。

2026/4/30
阅读更多

Go 单元测试高效实践

"敏捷开发中有一个广为人知的开发方法就是 XP(极限编程),XP 提倡测试先行,为了将以后出现 bug 的几率降到最低,这一点与近些年流行的 TDD(测试驱动开发)有异曲同工之处。

2026/4/30
阅读更多

一个有趣且实用的开源项目,将网页打包成应用

"最近在GitHub上面发现了一个[很有趣的开源应用](https://github.com/tw93/Pake),可以将网页打包成应用

2026/4/30
阅读更多

GitHub Action 自动化部署简单尝试

之前看到很多大佬的 Blog 是部署在 Github 上面的,但因为自己目前的博客是带后端的,所以就没有考虑。很久之前看到 @yihong 的心跳和跑步,感觉挺不错的,但因为自己没有跑步的习惯,就感觉不是很感冒 ???? 直到最近在听零机一动的时候,又听到了 yihong 的跑步, 我突然想到,我应该也可以把我的游泳 骑车 有氧也像 @yihong 的跑步数据一样上传过来。那么第一件事,我需要了解一下 GitHub Action 的机制,小小地尝试一下。

2026/4/30
阅读更多

从零开始搭建家庭软路由系统(安装OpenWrt,并做为旁路由接入家庭网络)

"之前刷推看到了不少人发软路由,最近又看到a姐发了一句:全推入手软路由了

2026/4/30
阅读更多

Clash 设置国内国外自动分流访问

Clash 是一款开源的网络代理工具,可以帮助用户实现对网络流量的控制和管理。我使用了很久,但苦于每次访问国内外网络需要手动开关代理,于是我就问了下GPT, 还真就解决了。

2026/4/30
阅读更多

将本地服务通过 SSH 代理给外部访问

如何使用 ssh 将本地服务代理给外部访问并保持 SSH 会话的连接性

2026/4/30
阅读更多

惊喜又焦虑,AI 技术的发展

"最近,我接触了很多关于AI技术的东西。例如ChatGPT、NewBing、ChatGPT更快的API、stable diffusion、AI语音识别等等。这些技术让我惊喜,也让我感到焦虑。

2026/4/30
阅读更多

体验 New Bing:一个比 ChatGPT 更强大、更幽默、更有用的搜索引擎聊天机器人

最近在推特上看到很多人在谈论New Bing申请的事情,我也收到了试用通过的邮件。于是我马上打开Edge浏览器体验了一下。

2026/4/30
阅读更多

Interesting & Useful 的开源项目

分享一些平时遇到的有趣的开源项目

2026/4/30
阅读更多

聊天记录存储实践

公司的某款游戏在1月初接入微软小冰AI聊天功能。为了保存聊天记录并为后续的统计功能做好准备,决定将聊天记录存放在服务端。

2026/4/30
阅读更多

在 Google 设置静态页面 CDN 加速

在google设置静态页面 CDN加速

2026/4/30
阅读更多

发现优质 Newsletter 和 Blog

我平时一直都在发现很多优质的资源,但都没有整理。一直增加,单独一个页面可能开始会有些乱,就先开一篇放在这里。

2026/4/30
阅读更多

Nginx 代理静态网站 CSS 解析异常

"今天在使用ecs进行部署网页时,出现了一个问题。使用nginx代理到页面index.html路径下,同路径的资源都可以加载到,但是却无法正确加载到页面样式。打开f12,网络和控制台都没有资源异常,但页面乱成了一锅粥。

2026/4/30
阅读更多

macOS 12 Monterey + Windows11 我的生产力答案

大学毕业以后,买了一台乞丐版的13寸的macbook pro(8 + 128 这个配置可能还不如现在的安卓手机),今年年中,我开始把工作用的macbook pro(18款 15寸 16 + 256)往家里带,勉强够用。到了今年下半年,我渐渐感觉,这俩电脑,一个能打的都没有,真顶不住了。

2026/4/30
阅读更多

最新版 Let’s Encrypt 免费证书申请步骤,保姆级教程

最近将域名迁到了google domain,就研究了一下Let’s Encrypt的域名证书配置。发现网上找到的教程在官方说明中已经废弃,所以自己写一个流程记录一下。

2026/4/30
阅读更多

五人墓碑记

"五人墓碑记 明 张溥

2026/4/30
阅读更多

随想—生活效能

效能,效就是结果,能就是取效所做的功。

2026/4/30
阅读更多

测试一下功能吧

阿里服务器被ban了,数据全没了

2026/4/30
阅读更多