技术博客文章

Laravel 批量导入导出实战:用 maatwebsite/excel 处理十万行数据

为什么不直接读文件 PHP 一次性把十万行 CSV 读进数组,内存立刻爆炸。maatwebsite/excel 基于 Laravel 的队列与分块读取,导出时按集合流式写、导入时按 chunk 分块处理,内存占用基本恒定。下面覆盖最常见的导...

技术test12026-10-1810

Rust 网络编程实战:用 tokio 写并发 TCP 服务器并优雅关闭

从 HTTP 框架退一步看原生 TCP 写业务大多直接用 axum/actix,但理解底层 TCP 有助于排查连接泄漏、背压与优雅关闭问题。tokio 的 TcpListener 配合 per-connection 的异步任务,可以很自然地...

技术test12026-10-189

Go 编译期依赖注入实战:用 google/wire 生成干净的对象装配代码

为什么需要 Wire Go 没有运行时反射式容器,手写依赖装配容易出现巨型 main 函数,把 db、cache、repo、service、handler 一层层 new 出来再串起来。google/wire 走的是另一条路:在编译期根据 ...

技术test12026-10-1810

Vue 3 自定义渲染器实战:用 createRenderer 把组件画到 Canvas

自定义渲染器解决什么问题 Vue 默认把模板渲染成 DOM。但在一些特殊场景(Canvas、终端 UI、原生 canvas 图表、游戏)里根本没有真实 DOM 节点。Vue 3 把"渲染到什么目标"抽象成了渲染器接口,只要提供一组节点操作函...

技术test12026-10-1811

React 状态管理实战:用 Redux Toolkit 把全局状态写短写稳

为什么还要用 Redux Toolkit Zustand、Jotai 这类轻量方案适合中小项目,但当状态跨多个业务域、需要可预测的时间旅行调试、或者团队已经有 Redux 习惯时,Redux Toolkit(RTK)仍然是更省心的选择。RT...

技术test12026-10-1811

Laravel 高级 Eloquent 查询:用 withCount、whereHas 与子查询把统计留在数据库层

问题 列表页常需要“每个用户有多少订单”“筛选出有未完成订单的用户”。如果在 PHP 里循环查,会写出 N+1 甚至更糟的查询。把这些统计交给数据库,用 Eloquent 的聚合方法解决。 关联计数:withCount use App\M...

技术test12026-10-1710

Rust 用 chrono 处理日期时间:时区转换、工期计算与格式化避坑

为什么自己拼时间字符串容易错 时区、夏令时、格式化符号都是坑。用 chrono 可以把时间当成带类型的对象来算,而不是一堆字符串。下面以项目排期场景演示常见操作。 当前时间与时区转换 use chrono::{DateTime, Utc,...

技术test12026-10-179

Go 用 sarama 接入 Kafka:生产者、消费者组与分区实战

场景 Kafka 适合做削峰填谷和事件驱动。Go 侧最常用的客户端是 IBM 维护的 sarama。本文用订单事件为例,演示如何发消息、如何以消费者组方式消费并按分区并行处理。 生产者:发一条订单事件 package main impo...

技术test12026-10-1710

Vue 3 与 TypeScript 进阶:给 props、emits 与插槽写类型

为什么要在组件里写类型 Vue 3 的 script setup 配合 TypeScript,能让父组件传参、子组件回调和插槽数据在编译期就被检查。相比运行时校验,类型错误在写代码时就暴露,重构也更安全。 用泛型给 props 上类型 <...

技术test12026-10-1710

React 拖拽排序实战:用 @dnd-kit 实现可拖拽、可排序的看板

为什么选 @dnd-kit 原生 HTML5 拖拽 API 在移动端、可访问性和复杂交互上坑很多。@dnd-kit 用 Pointer 事件重写了一套拖拽内核,体积小、支持键盘操作和传感器自定义,是现在 React 拖拽的主流选择。 安装...

技术test12026-10-1710