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

↓ 向下滚动

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

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

阅读更多

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

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

阅读更多

Python 异步编程与 幂等设计 实践

Python 异步编程与 幂等设计 实践 前段时间把一个跑了两三年的消息回调服务用 asyncio 重构了一遍,压测数据确实好看,QPS 从三百多干到两千多,延迟也降了一截,当时还觉得自己挺牛。结果上线不到一周就翻车了:下游对账发现同一笔退款被处理了两次。翻日志才发现,是 MQ 那边网络抖动导致消费超时,消息被重新投递了一次,而我的消费者是"收到就干活",压根没管这条消息之前是不是已经处理过。 后...

阅读更多

Go 语言 配置中心 实战:从原理到落地

Go 语言 配置中心 实战:从原理到落地 起因 最近手上的项目从单实例拆成了四个实例,配置文件也跟着从一份变成了四份。上周想临时调一下日志级别排查线上问题,结果是改四个 yaml、重新构建、挨个重启,折腾完小半个小时没了,问题早就凉透了。改到第三次的时候实在忍不了,决定花个周末把这事儿彻底解决。 现成的方案不少,Nacos、Apollo、Consul,个个都挺能打。Apollo 功能最全,但部署得...

阅读更多

正则表达式进阶:幂等设计 匹配技巧

正则表达式进阶:幂等设计 匹配技巧

阅读更多

微服务架构下 消息队列 的设计与权衡

微服务架构下 消息队列 的设计与权衡 从一次线上事故说起 之前负责的系统里,订单服务下单成功后要同步调用积分、通知、物流三个下游服务,有一次通知服务发布重启挂了半分钟,结果把订单服务也拖垮了,用户下单直接超时。当时的第一反应就是:这三件事凭什么要在下单的主流程里同步干完?加个消息队列吧。 说干就干,但真正接入之后才发现,消息队列不是引个依赖、发条消息那么简单,它解决老问题的同时会带进来一堆新问题,...

阅读更多

用 Docker 搭建灰度发布的完整流程

用 Docker 搭建灰度发布的完整流程 之前有次发版比较头铁,容器一把全量替换,结果新代码里一个慢查询把数据库拖垮了,接口响应从几十毫秒飙到七八秒,手忙脚乱回滚折腾了半个多小时。从那以后我就把灰度发布这套流程搭起来了。说实话这玩意儿没什么高深的,就是两个容器加一个 Nginx,但它确实把发版的心理压力降下来不少——最坏情况也就是一小部分用户受影响,回滚就是改两行配置的事。 整套东西只需要 doc...

阅读更多

机器学习入门:链路追踪 数据预处理

机器学习入门:链路追踪 数据预处理 上周把两个月前写的一个用户流失模型重新跑了一遍,AUC直接从0.81掉到了0.76。数据文件没换,代码也没动过,就很离谱。排查了一晚上才发现,中间某次我图省事手动删过几十行脏数据,什么都没记,这次全量重跑,那几十行又混回来了。预处理这玩意儿不留痕是真的会翻车啊,而且翻得你一点脾气都没有... 下面是我踩完坑之后整理的一套做法,没什么高深的东西,全是笨办法,但实测...

阅读更多

机器学习入门:任务调度 数据预处理

机器学习入门:任务调度 数据预处理 前段时间开始折腾机器学习,跟着教程走的时候一切都挺美好,数据集是现成的,loadiris() 一调,fit 完直接出准确率。等真拿自己的数据上手才发现,数据这玩意儿才是最磨人的。缺失值要填,异常值要剔,类别要编码,数值要归一化,而且每次改个参数就得从头手动再跑一遍,一天下来大半时间都耗在这上头了。 后来干脆把预处理写成脚本,再挂到定时任务里让它自己跑,才算是解脱...

阅读更多

WebSocket 实时通信与 熔断 应用

WebSocket 实时通信与 熔断 应用 最近在做一个实时行情推送的项目,前端用 WebSocket 连后端,后端从 Kafka 拿数据再推给前端。本来觉得挺简单的,结果上线第一天就翻车了。某个后端实例因为内存泄漏卡住了,前端一看连接断了,就开始疯狂重连,一秒一次,网关连接数直接飙到几万,最后整个服务都挂了。当时就想着,这玩意儿得加个熔断啊。 WebSocket 的长连接没那么简单 WebSoc...

阅读更多
未在播放