技术博客文章
Go 并发编排:用 errgroup 协同多 goroutine 与统一错误取消
传统 WaitGroup 的局限 sync.WaitGroup 能等一组 goroutine 跑完,但它不处理错误,也无法在某个任务失败时通知其他任务取消。真实业务里往往要求"任意一个失败就整体失败",errgroup 正好补上这块。 e...
Assad sad上撒点
打撒打算阿斯科利的饭卡时代峰峻卡阿斯顿路口发考试的饭卡啊克里斯朵夫拉萨地方
Go context 工程实践:超时、取消与链路追踪
没有 context 的 HTTP 调用迟早会拖垮服务 Go 里最容易被忽视的隐患,是 goroutine 和下游调用缺少取消信号。一个 HTTP 请求进来,里面查数据库、调第三方接口、读 Redis,只要任意一环卡住且没设超时,这个 go...
Laravel 队列与 Job:订单超时关闭的异步化与去重锁
下单后延时关单不该阻塞请求 电商里常见一个需求:用户下单后 30 分钟未支付就自动关闭订单。最直接的写法是在下单接口里 sleep 30 分钟再处理——这显然不行,会占住一个 PHP 进程直到天荒地老。正确做法是把"关闭"这件事丢进队列,用...
Rust + Axum 中间件:JWT 鉴权与请求上下文注入
把鉴权从每个 handler 里抽出来 在 Axum 里,如果每一个路由处理函数都自己解析 token、校验签名、再取用户 ID,重复代码会迅速失控。更干净的做法是用中间件(middleware):在请求进入业务 handler 之前统一完...
Vue 3 组合式函数:可复用 useRequest 封装请求与 loading
每个页面都在手写 loading 和 error 太重复了 在 Vue 3 项目里,几乎每个需要拉数据的组件都要维护 loading、error、data 三个 ref,再加上 try/catch 和 onUnmounted 清理。这些逻辑...
React 状态管理:用 Zustand 切片化 store 并规避 selector 引起的重渲染
为什么 Context 会在大型应用里变成性能陷阱 React 的 Context 用起来很直观,但它有个绕不开的问题:只要 Provider 的 value 发生变化,所有消费该 Context 的组件都会重新渲染,哪怕某个组件只用了 v...
cargo-zigbuild 跨平台编译:ARM64 Mac 直出阿里云 AMD64
本地没有目标机工具链怎么办 开发机是 ARM64 的 Mac,生产环境是阿里云的 AMD64 Linux。Rust 项目要部署上去,最省事的办法是在 Mac 上直接编译出 x86_64-unknown-linux-gnu 的二进制,而不是先...
Go 长连接网关设计:多设备、心跳与连接池
为什么网关用 Go IM 系统里,真正做业务的地方(消息存储、关系链、推送策略)可以交给任意后端,但"扛海量长连接"这一层,用 Go 非常合适:goroutine 轻量,一个连接一个 goroutine 成本极低;标准库和生态对 WebSo...
从 Vite SPA 到 TanStack Start SSR:一次全栈框架迁移的踩坑
为什么要从 SPA 切到 SSR 纯 Vite + React 的 SPA 开发体验很好,但有两个硬伤一直绕不开:首屏白屏时间随包体增大而变长,以及 SEO 几乎为零——搜索引擎拿到的是空 div。当项目里出现"内容要给外部看到"的页面(官...
