Ekko Blog

路漫漫其修远兮 ,吾将上下而求索

Puppeteer 渲染服务

从浏览器自动化、截图与 PDF 生成,到独立部署和 Spring Boot 对接,系统梳理服务端渲染的工程化方案

这篇笔记的目标是把 Puppeteer 放到真实业务里重新拆开来看:它到底适合解决什么问题,为什么很多团队最后会把它做成一个独立渲染服务,以及这个服务应该怎样暴露图片、HTML、PDF 等基础能力,供业务系统按 url 或 html 传参调用。 文章重点不放在“写一个能跑的截图 demo”,而放在可长期维护的工程设计上:浏览器实例如何复用、接口怎样抽象、服务怎样部署、风险如何...

html2canvas 前端截图导出

从 DOM 截图原理、跨域与清晰度问题,到 Vue 封装和 Spring Boot 上传落库,系统梳理前端导出图片的工程化方案

这篇笔记的目标是把 html2canvas 放到真实业务里重新拆开来看:它到底能截什么、为什么经常出现“样式不对 / 图片丢失 / 导出发虚 / 跨域失败”,以及在 Vue 项目里应该怎样封装成复用能力,而不是在页面按钮点击里堆一段临时脚本。 文章重点围绕一个完整链路展开:前端页面渲染业务卡片,html2canvas 负责把指定 DOM 节点转成画布和图片,前端再把图片上传到...

Swagger 接口文档

从 OpenAPI、Swagger UI 到 Spring Boot 3 接入实战,系统梳理接口文档生成、调试与协作边界

这篇笔记的目标是把 Swagger 放回 Spring Boot 的真实工程语境里重新理解一遍:它到底是什么,和 OpenAPI、springdoc-openapi 分别是什么关系,在项目里解决的核心问题是什么,以及一套完整的接入方案应该怎样落到代码、配置和团队协作流程上。 文中重点不是停留在“把页面跑起来”这一层,而是围绕一个典型后端项目展开:接口持续迭代、前后端要对齐字段...

apidoc 接口文档

从 Spring Boot 注释式文档到 Jenkins 自动生成发布,系统梳理 apidoc 的接入方式与工程化落地

这篇笔记的目标是把 apidoc 放到 Spring Boot 项目里按工程化方式重新理解一遍:它到底适合解决什么问题,和 springdoc / Swagger、Spring REST Docs 有什么差异,注释应该写到什么粒度,生成链路如何放进 Jenkins,以及怎样把“接口文档”真正变成持续交付流程中的一个构建产物。 文中重点不是泛泛介绍“如何安装一个文档工具”,而是...

Superpowers

技能驱动的 AI 工程方法、与 OpenSpec 的边界、典型疑问,以及混合使用完整案例

这篇笔记的目标是把 Superpowers 放回一个更准确的位置里看清楚:它不是另一个“写 spec 的工具”,而是一套约束 AI 编码助手工作方式的技能体系。重点不在“产出哪几个文档”,而在“让代理按什么工程纪律工作”。 文章会把 Superpowers 和 OpenSpec 放在同一张图里比较,并给出一套更实用的搭配思路:由 OpenSpec 负责定义变更意图和长期规范,...

Arex-Agent 流量回放

从录制数据结构、存储方式、字节码增强到源码切入,系统梳理 Java 微服务里的流量回放机制

这篇笔记的目标是把 AREX Agent 放到 Java 后端工程里真正拆开来看:一次录制到底会产出什么数据对象,数据如何落到 Storage Service + MongoDB + Redis,回放时又是怎么把真实下游调用短路成录制结果。重点不再停留在“它能做回放测试”这类概念层,而是直接进入数据模型、运行机制和源码入口。 文章会尽量站在 Java 业务开发和源码阅读的双重...

Sentinel 原理与源码解析

从资源模型、Slot Chain、流控熔断到 @SentinelResource 与动态规则

这篇笔记不是只回答“Sentinel 怎么配规则”或者“控制台怎么点”,而是把问题往下压一层:Sentinel 到底在保护什么、它靠什么抽象统一了限流/熔断/热点参数/系统保护、一次请求进入 Sentinel 后会经过哪些核心对象和执行链。 正文会同时覆盖三层内容:一层是日常开发最需要的能力视图,一层是规则与统计的运行机制,一层是源码主线,包括 SphU、CtSph、Entr...

最小 RAG 项目落地

从 MVP 边界、数据入库、检索问答到 Java Spring Boot / Spring AI + pgvector 实践方案

这篇笔记的目标,不是继续解释 RAG 的概念,而是把问题直接落到“怎么起一个最小可行项目”上:如果现在要做一个能接文档、能入库、能检索、能回答、还能继续迭代的 RAG 服务,第一版到底应该长什么样。 这篇内容会有明确的技术偏向:优先给出 Java Spring Boot / Spring AI 的落地方案,向量库侧默认从 pgvector 起步,因为它对很多已有 Java 后...

向量库扫盲

从 Embedding、ANN 索引、混合检索到工程选型,系统理解向量数据库到底解决什么问题

这篇笔记的目标,不是把向量库当成一个“AI 时代的新中间件名词”简单过一遍,而是把它拆回工程本质:向量库到底在存什么、查什么、快在哪里、为什么 ANN 索引会成为核心,以及它和关系型数据库、搜索引擎、RAG 系统之间到底是什么关系。 这篇内容重点覆盖四件事:一是向量检索的基本计算模型,二是 HNSW / IVF / PQ 这类常见索引的取舍,三是过滤、混合检索、重排、更新删除...

RAG 扫盲

从检索增强生成的基本流程、关键模块到工程边界,系统理解它为什么有效、又为什么经常不稳

这篇笔记的目标,不是把 RAG 当成一个“给大模型外挂知识库”的流行词简单过一遍,而是把它拆回最核心的工程问题:为什么大模型单靠参数记忆不够、RAG 到底在哪个环节补位、一个能上线的 RAG 系统究竟由哪些模块组成。 这篇内容更偏“整体视图 + 概念辨析 + 工程边界”。它会说明 Naive RAG、Advanced RAG、Modular / Agentic RAG 的差异...