小Cの已经记不起来的博客

↓ 向下滚动

Go 语言 任务调度 实战:从原理到落地

Go 语言 任务调度 实战:从原理到落地 起因 前段时间接手了一个内部小服务,打开一看,里面塞了十几个定时任务,全是一个套路:起个 goroutine,里面 for 循环加 time.Sleep。跑是能跑,但改个执行周期要重新编译发版,任务 panic 了进程直接挂,日志里也完全看不出哪个任务几点几分跑的、跑了多久。想着反正要重构,干脆把 Go 任务调度这块从头到尾捋一遍,顺手把踩的坑记下来,就有...

阅读更多

Git 工作流中的 鉴权体系 最佳实践

Git 工作流中的 鉴权体系 最佳实践 前几天帮同事排查问题,他重装系统过后代码拉不下来了,push 一路报 Authentication failed。我瞄了一眼他的 remote 地址,好家伙,token 直接拼在 URL 里,还是两年前生成的,早过期了...说白了就是当年图省事埋的雷。趁着这个机会,把我这几年在 Git 鉴权上踩过的坑和最后固定下来的一套做法整理一下,都是实测可用的。 HTT...

阅读更多

React 项目中 任务调度 的设计取舍

React 项目中 任务调度 的设计取舍 最近在改一个数据看板的项目,首页一个页面要并发拉三十多个接口,然后渲染一堆图表和表格。测试机上一打开,浏览器直接卡住好几秒,接口那边还报了限流。同事说要不加个 loading 遮罩吧,我心想这不是 loading 的事,是任务全挤在一瞬间了。于是就开始折腾任务调度这摊子事,中间踩了不少坑,记录一下,顺便聊聊每个方案的取舍。 问题到底出在哪 先把问题拆开看,...

阅读更多

PostgreSQL 索引与 鉴权体系 的正确姿势

PostgreSQL 索引与 鉴权体系 的正确姿势 前阵子接手了一个跑了五六年的老项目,用户天天投诉列表页慢,打开 pgstatstatements 一看,最狠的一条查询要跑十几秒。顺手查了下账号,发现全公司共用一个 postgres 超级用户直连生产库,密码还是老掉牙的 md5。趁着这次优化,把索引和鉴权一起收拾了,中间踩了不少坑,记下来,省得下次又去翻文档。 索引不是建了就快的 先说结论:别猜...

阅读更多

性能优化手记:优雅停机 排查全过程

性能优化手记:优雅停机 排查全过程

阅读更多

Git 工作流中的 日志采集 最佳实践

Git 工作流中的 日志采集 最佳实践 前阵子项目要发版,让我整理一份更新日志。我打开 git log 一看,几百条 commit,"fix"、"update"、“改了个bug” 全混在一起,中间还夹着几十条 merge commit,看得我头大。手动整理是不可能的,这辈子都不可能手动整理的,于是就想办法把这件事自动化掉。 网上搜了一圈,什么 conventional commits、semant...

阅读更多

熔断:写给初学者的通俗解释

熔断:写给初学者的通俗解释 前段时间项目里有个服务半夜报警,爬起来一看日志,发现挂的原因特别憋屈:它自己代码一点毛病没有,是它依赖的下游服务卡住了。一个请求卡住不要紧,结果新请求源源不断地进来排队,最后把它也活活拖死了。修完之后我就去补了补熔断相关的知识,结果发现网上讲这东西的文章不是术语满天飞就是直接甩框架文档(也可能是我搜的关键词不对,反正当时没看到几篇讲人话的...),所以干脆自己写一篇大白...

阅读更多

一次线上 热更新 故障的复盘记录

一次线上 热更新 故障的复盘记录 事情是这样的 上周三晚上八点多,我们照常给线上推了一次热更新(skynet + Lua 那套老组合),本来是个很小的改动,一个是结算接口 reward(id, num) 加了个 reason 参数,一个是把玩家身上的 hp 字段统一改名成 hpnow。本地测了没毛病,就按老流程把 patch 推上去了。不出问题的话就没有问题了,结果偏偏出了问题。 十分钟后运营在群...

阅读更多

React 项目中 热更新 的设计取舍

React 项目中 热更新 的设计取舍 从一次莫名其妙的整页刷新说起 前几天改项目里一个表单页面,字段填了二十多个,然后想微调一下按钮颜色,保存的一瞬间整个页面直接刷新了,填的东西全没了。当时第一反应是热更新挂了,结果打开控制台一看,HMR 明明连着,日志里还写了 update applied。也就是说这次不是“没热更”,而是它主动选择了整页刷新。为什么改一行样式会走到整页刷新,这玩意儿的判断逻辑...

阅读更多

用 Docker 搭建文件上传的完整流程

用 Docker 搭建文件上传的完整流程

阅读更多
未在播放