Ekko Blog

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

spring-startup-analyzer Spring 启动分析

从 Java Agent 采集、交互式报告、异步 Bean 初始化到启动优化闭环,系统理解 spring-startup-analyzer

这篇笔记的目标不是泛泛讨论“Spring 为什么启动慢”,而是围绕 spring-startup-analyzer 这个工具本身,梳理它到底采了什么、报告应该怎么看、适合解决哪类启动问题,以及怎么把“看到卡点”真正变成一轮可验证的启动优化。 文中会重点区分 3 件容易混淆的事情:Spring Boot 自带的 ApplicationStartup / actuator sta...

SkyWalking 可观测平台

从 Probe、OAP、Storage、UI 到 Java Agent、OAL/MAL、Mesh 与 eBPF,系统理解 SkyWalking

这篇笔记的目标不是把 SkyWalking 只记成“另一个链路追踪系统”,而是把它放回自己的真实定位里理解: 它更像一个完整的可观测分析平台,既能接自己的 Agent,也能接 OpenTelemetry、Prometheus、Zipkin、Service Mesh 等多种遥测来源,再通过 OAP 做统一分析、聚合与展示。 文章重点会放在 4 个问题上:SkyWalking 到...

SkyWalking / Pinpoint / OpenTelemetry 对比

从产品定位、架构分层、数据模型、接入方式、标准化程度到选型场景,理清三者边界

这篇笔记的目标不是做一张“功能打勾表”,而是回答一个更关键的问题:为什么 SkyWalking、Pinpoint、OpenTelemetry 明明都和 trace、metrics、logs 有关,却经常被拿来错误地一对一比较。核心原因在于,这三者并不处在完全相同的层级。 文中会先把三者放进同一张架构坐标系,再分别比较它们的定位、强项、限制、部署与接入复杂度,最后给出更实用的选...

Pinpoint 分布式链路追踪与 APM

从 Agent、Collector、Web 架构到 ServerMap、Scatter、Call Tree、Inspector 页面解读

这篇笔记的目标不是把 Pinpoint 简单介绍成“一个 Java APM 工具”,而是把它真正拆成可落地的几个问题:它到底监控了什么、和 Metrics / Prometheus / Grafana 这类体系有什么区别、页面上的每一块图到底代表什么,以及线上排障时应该先看哪里、再看哪里。 文中穿插的页面截图主要来自 Pinpoint 官方文档与官方演示风格页面,重点放在 S...

Flowable 工作流引擎

从 BPMN 执行原理、事务与异步机制、引擎对比,到 Spring Boot 接入独立部署实战

这篇笔记不是停留在“Flowable 怎么跑一个请假流程 demo”这一层,而是把问题往下压到引擎本身:Flowable 到底在执行什么、流程定义是如何被解析和版本化的、一次流程推进为什么会和事务边界、异步任务、历史表、重试机制绑在一起,以及它和 Camunda、Activiti、jBPM 这些流程引擎到底差在哪。 文章后半部分会落到工程实战:不是把 Flowable 简单塞...

Webpack 模块化构建与部署

从依赖图、Loader 与 Plugin 机制,到代码分割、Chunk 运行时和 Module Federation,系统梳理 Webpack 的构建原理与模块交互链路

这篇笔记的目标是把 Webpack 放回它真正擅长的上下文里重新梳理一遍:它不是“把很多 JS 打成一个包”这么简单,而是一套围绕模块依赖图、构建流程、运行时加载和产物部署展开的前端工程化系统。文章重点会回答三个核心问题:Webpack 为什么能管理复杂模块关系、不同模块在构建期和运行期如何交互、以及模块化部署到底应该怎么落到工程实践里。 文中会把 entry -> m...

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,以及怎样把“接口文档”真正变成持续交付流程中的一个构建产物。 文中重点不是泛泛介绍“如何安装一个文档工具”,而是...