所有文章
37 篇文章,关于软件工程、系统设计和 AI 的深度思考
UploadFile-大文件上传/断点续传/秒传
使用浏览器多线程 Web Worker API,用于并行计算与并行上传,使用SparkMD5 高性能 MD5 计算库,用于生成分片及文件的唯一标识; 使用FileReader / Blob.slice 等浏览器原生 API,实现文件切割与读取。
AI-RAG检索增强生成
RAG(Retrieval-Augmented Generation,检索增强生成)可以说是目前企业级 AI Agent、企业知识库、智能客服、内部 Copilot 最重要的技术之一。
MicroFrontend-微前端实战
微前端架构实战:基于 qiankun 与 Module Federation 的企业级应用拆分方案
BFF-BFF在前端中的应用
BFF 是 Backend For Frontend,是前端应用和后端微服务之间的一层服务。主要使用 Node.js 实现,根据不同客户端需求进行接口聚合、数据转换、权限控制、缓存以及流式数据处理。相比前端直接调用多个后端服务,BFF 可以降低前端复杂度,提高接口复用性,同时保护后端服务和敏感信息。
Vue3-provide/inject跨层级组件通信原理
provide / inject 是一种跨层级组件通信机制。它允许祖先组件向后代组件提供数据,而不需要通过每一层组件的 props 逐级传递。
Vue3-reactive重赋值及解构丢失响应式的原因
reactive返回的是代理对象的引用,一旦引用变了,就脱离了Proxy;解构拿到的是普通值,不是代理。
AbortController 完全指南
AbortController 最初主要用于 fetch 请求,现在 Axios 也支持通过 signal 使用它。
React-reRender哪些Hooks会触发re-render?
useState:调用 set 函数更新 state,组件重渲染;同一 state 设相同值,一般不触发。 useReducer:dispatch 派发 action,state 改变则重渲染,逻辑同 useState。 useContext:context 值更新,所有使用 useContext 的组件都会重渲染,不管是否用到部分属性。 useSyncExternalStore:订阅外部 store,store 数据变化触发组件重渲染。
React Fiber架构原理
React Fiber 是 React 16 推出的全新协调(Reconciliation)架构,它最大的价值不是"更快",而是让 React 首次具备了可中断、可恢复、可调度的渲染能力。
Sentry-线上异常监控
用户在生产环境遇到 JS 错误,开发人员如何第一时间知道错误发生在哪里,并定位到源码。可以理解成:浏览器端错误采集 SDK + 服务端错误分析平台 + sourceMap 解析系统
JS-Troubleshooting and monitoring生产环境前端异常排查与监控体系建设
线上用户遇到一个 JS 错误后,前端开发如何从“发现问题”一路定位到“源码位置 → 根因 → 修复 → 验证 → 防止再次发生”?
go-TCP/HTTP网络编程
Go 被誉为“云原生时代的 C 语言”,其网络编程能力是核心优势。
Go-Reflection反射
反射是 Go 语言中一个非常强大但需要谨慎使用的特性。它允许程序在运行时检查、修改变量的类型和值,而不需要在编译时知道具体的类型。
go-UnitTest单元测试
在 Go 语言中,单元测试是语言设计中的一等公民。Go 自带了强大的测试工具链(go test),无需第三方框架即可编写和运行高效的测试。
Electron-SecurityAndPermission安全防入侵 + 登录权限验证
Electron 本身安全风险点 → 防入侵安全手段(主进程、渲染进程隔离) → 登录 & 权限验证方案,区分渲染进程、主进程、后端三者职责,不要把登录校验全部放在前端。
go-File文件操作
Go 把文件看作一种“数据流(Stream)”,os 负责与操作系统交互,io 定义读写抽象,bufio 提升读写效率,filepath 负责跨平台路径处理。
Vector Database选型
向量数据库作用: 文本、图片、音频经过 Embedding 模型转为高维向量(Embedding);向量数据库专门存储向量 + 元数据,提供近似最近邻检索(ANN),快速找出语义 / 特征最相似的数据。 核心用途:RAG 知识库、语义搜索、以图搜图、推荐系统、多模态检索、AI Agent 记忆。
go-panic异常处理
Go 里的“异常处理”与 Java、JavaScript、Python 等语言有很大区别。Go 没有传统意义上的 try/catch/finally 异常体系。 它主要把错误分成两类:可预期的运行错误 → error;不可预期的严重错误 / 程序异常 → panic;程序从 panic 中恢复 → recover。
go-线程安全与sync.Map
Go里的“线程安全”,本质上是指多个 goruntine 并发访问同一份共享数据时,程序是否还能保持正确性。而 sync.Map 是 Go 标准库针对特定并发读写场景提供的一种并发安全 Map。
Zod/v4速查表
整理的是日常业务开发、封装组件库最值得使用的公开 zod/v4 API,而不是内部实现 API。
go-select语句与协程的超时处理
select 是Go语言中处理并发操作的核心机制之一,它允许一个goroutine同时等待多个channel操作。
go-goroutine-channel协程与channel
Go语言的并发编程模型基于两个核心概念:协程(Goroutine)和通道(Channel)。Goroutine是轻量级的执行单元,而Channel则是它们之间进行通信的管道。它们的核心理念是:“不要通过共享内存来通信,而要通过通信来共享内存”。
go-Interface
接口是一组方法签名的集合。它定义了“行为契约”:任何类型只要实现了接口中所有的方法,就隐式地实现了该接口。
go-Struct结构体
结构体(Struct)是Go语言中最重要的类型系统核心,它既是传统面向对象编程中“类”的轻量级替代,也是Go实现代码复用、数据建模和接口绑定的基础。
go-value-reference值传递与“引用传递”
Go语言中所有参数传递都是值传递(pass by value),没有引用传递!但是很多人会误以为有引用传递,因为切片、map、channel、指针等类型的行为看起来像是在“引用传递”。实际上,它们传递的是指针的副本,但这个副本本身是按值传递的。
Brotli-Gzip-如何在Nginx中配置
Brotli是一种由Google开发的通用无损压缩算法,通过结合LZ77变体、霍夫曼编码和二阶上下文建模,在压缩率和解压速度上通常优于Gzip,尤其适合Web文本(如HTML、CSS、JS)的静态资源传输。
Performance optimization前端实际项目场景的性能优化
用更少的资源、更短的路径,让用户更快看到内容、更流畅地交互。
inject-resource-hints.js
零依赖 Node.js 脚本:扫描 dist 目录,自动向 HTML 注入 Resource Hints。
go-function-函数
Go 函数支持多返回值、闭包、defer,函数本身是一等公民可以像变量一样传递,错误处理靠多返回值而非异常。
Go-if-and-for判断与循环
Go 用 if/switch 做条件判断,用唯一的 for 关键字涵盖所有循环形式(计数、while、无限、range),没有 while 和 do-while。
Go-baseType基础数据类型
Go 基础数据类型分四类:整数(int/uint系列)、浮点(float32/64)、布尔(bool)、字符串(string),所有变量自动初始化为零值,且类型转换必须显式。
go-Map
Map 是用空间换时间的键值索引结构,核心价值是将任意 key 的查找、插入、删除从 O(n) 降为 O(1)。
go-Array and Slice-数组与切片
优先用切片,数组主要用于固定大小的场景
deploy-部署Next.js项目到服务器
Next.js + PostgreSQL (Prisma) + pnpm,已有 docker-compose.yml。用 Docker + Nginx 方式部署,方便管理和后续更新。
server-初始化腾讯轻量应用服务器
购买腾讯轻量应用服务器后必做的几件事,以Ubuntu系统为例;
go-基础类型格式化
在 Go 语言中,% 和 print 主要涉及格式化输出。其中 % 是格式化占位符,通常配合 fmt 包中的 Printf、Sprintf、Println 等使用;print 是 Go 内置函数,用于简单输出(不推荐用于正式开发)。
Vue3-watch监听对象时第一个参数为什么是箭头函数?
箭头函数可以让 Vue 明确知道要追踪哪个响应式数据,同时能够在数据变化时重新读取最新值。




































