技术 文章

Go 配置管理实战:用 viper 加载多环境配置并支持热重载

配置不该写死在代码里 开发、测试、生产三套环境的数据库地址、端口、密钥各不相同。把配置散落在常量里,每次换环境都要重新编译。用 viper 统一读取文件、环境变量与命令行参数,并按环境切换,是 Go 服务的标准做法。 基础读取:文件 + ...

技术test12026-09-1712

Vue 3 状态管理实战:用 Pinia 拆多 store、做持久化与调试

为什么从 Vuex 切到 Pinia Vue 3 项目里,Pinia 已经是官方推荐的状态方案。它去掉了 Vuex 里 mutations 这个冗余概念,state、getters、actions 直接对应,TypeScript 类型推断顺...

技术test12026-09-1616

Rust 所有权实战:从 clone 滥用到借用,把性能与内存吃透

新手最常见的两个误区 刚写 Rust 的人,遇到编译器报 move 或 borrow 错误,第一反应往往是到处加 .clone() 或者把参数都改成 String。代码是能编译了,但代价是大量无意义的堆分配和深拷贝,性能悄悄劣化。 所有权(...

技术test12026-09-1610

React 长列表性能实战:用 windowing 渲染十万条数据不卡顿

问题:一次性渲染十万行会怎样 后台表格、日志面板、聊天记录经常需要渲染成千上万条数据。如果直接用 map 把整个数组渲染成 DOM,浏览器会瞬间创建几万个节点,主线程被布局和绘制占满,滚动掉帧、输入卡死。 核心矛盾在于:屏幕可视区域同时只能...

技术test12026-09-1617

Laravel 参数校验实战:用 FormRequest 把验证逻辑收拢到一处

把校验从控制器里搬出来 新手常把校验写在控制器里,用 $request->validate([...]) 堆十几条规则。控制器越来越胖,而且同一个接口在后台和开放 API 复用时要重复写一遍规则。Laravel 的表单请求(FormRequ...

技术test12026-09-1614

Go 数据库连接池调优:用 sql.DB 的 SetMaxOpenConns 扛住高并发

一个被忽略的默认行为 Go 标准库 database/sql 的 sql.DB 不是「一条连接」,而是一个连接池。但很多人以为它是单连接,于是在函数里反复 Open,或者从不开连接数,结果线上突发流量时数据库侧连接被打满,应用也开始排队等待...

技术test12026-09-1612

Laravel Eloquent 作用域与模型事件:软删除与审计字段的工程化

作用域:把查询条件收敛到模型 查询条件如果散落在控制器各处,既重复又难维护。Eloquent 的局部作用域让你把“已支付”“有效”这类语义封装成可读的方法,全局作用域则能默认给所有查询加上过滤(例如排除已取消订单),从根源减少误查。 局部与...

技术test12026-09-1422

Rust + Axum 统一错误处理:用 ApiResponse 收敛成功与失败

为什么要统一 Axum 的 handler 可以返回实现了 IntoResponse 的任意类型。如果成功返回 Json,失败随手抛一个 (StatusCode, &str),前端拿到的响应结构就会乱七八糟。用统一的 AppError 和 ...

技术test12026-09-14107

Go 泛型实战:用 constraints 写出可复用的容器与工具

何时该上泛型 当你发现自己在为 int、string、自定义结构体各写一遍几乎相同的逻辑时,就是泛型出场的时候。泛型的价值是“一套实现,多种类型”,而不是为了炫技。Go 1.18 引入泛型后,容器、工具函数、仓储接口都能写得又安全又简洁。 ...

技术test12026-09-1424

Vue 3 自定义指令:用 directive 封装权限控制与按钮防抖

指令的本质 Vue 的指令是“带副作用的 DOM 行为封装”。和组件解决“渲染什么”不同,指令解决“这个 DOM 元素挂载后要做点什么”——权限裁剪、事件节流、自动聚焦都是它的典型舞台。复用逻辑时,指令比混入组件模板更轻。 权限指令 v-p...

技术test12026-09-1417