singhajit.com 上标称 17 分钟读完的 JVM 运行时入门:从 javap 看到的 iload、iadd 讲到 C1、C2 分层编译和 deoptimization,GC 那节覆盖 G1、ZGC 和分代回收的取舍。
Posts for: #java
Kafka producer 构造失败:fat jar 下 commonPool 抢走了第一次类初始化
同一个 JVM 里只有走 Confluent 序列化器的 topic 发不出去:它的配置类在静态初始化时按 TCCL 解析默认值的类名,而 fat jar 下那个 TCCL 看不见 BOOT-INF/lib;之后这个类不会再重新初始化,实例只能换掉。
Java 微服务在 K8s 上的运行时基线(2026):镜像、探针、滚动与可观测
Java 25 加 Spring Boot 3.5 的微服务上 Kubernetes,我给自己定了一份运行时基线,覆盖镜像、探针、优雅停机、滚动与回滚、可观测性,每块都同时写现状和差距。
用 Maven Archetype 管理微服务 Scaffold:为什么我这里暂时没用 Spring Initializr
多模块 Maven 单仓微服务平台里,脚手架我选了 Maven Archetype 而不是 Spring Initializr,选型理由、六类 Archetype 的分层逻辑、为什么 Archetype 本身也要有测试、版本怎么维护,都收在这一篇。
Kubernetes VPA InPlace Resize:原理、实战与落地注意点
基于 Kubernetes 1.35 官方文档和实操验证,梳理 VPA 的 InPlaceOrRecreate 模式、原地调容的工作链路,以及落地时最容易踩的坑。
Spring Boot 3.4+ 的结构化日志:5 行配置启用 ECS,用 Fluent API 写出 OpenSearch 可查的字段
Spring Boot 3.4+ 内建了 ECS 结构化日志支持,5 行配置能替掉大部分手写的 logback-spring.xml,再用 SLF4J Fluent API 把字段写成 OpenSearch 查得到、聚得起来的样子。
Spring Boot 3.5 Tracing:接完之后,PII 和采样怎么管
结合一次 Spring Boot 3.5 tracing 接入:自动配置覆盖范围、自定义埋点、Kafka/Redis/DB 组件接入、采样策略、PII 处理,以及用 ArchUnit 约束常见误用。
Java 日志开发约定:记什么、不记什么、message 与结构化字段怎么写
Java 日志里记什么、不记什么、message 怎么写、结构化字段如何设计;也整理我在 Spring Boot 项目里落地这些约定时的一些取舍。
Java 21→25 与 Spring Boot 3.5→4.0:为什么升级,怎么升级
Java 21→25 和 Spring Boot 3.5→4.0 值不值得升,先看版本维护周期与语言、框架层的变化;真上手时,手动迁移和 OpenRewrite 自动化两条路径的取舍也不一样。
ArchUnit 作为 Code Agent 时代的 Harness:微服务、Monorepo 与普通 Repo 的落地方式
在 code agent 普及的背景下,我在 Shop Platform 用 ArchUnit 作为可执行的 harness,它在微服务、monorepo 和普通 repo 里的落地方式各不相同。