PERSONAL BLOG · 技术随笔正在更新

你好呀,我是小邹

从Java出发,向系统深处走,也向AI时代延伸。这里记录技术实践、系统原理与工程思考——不止于把代码写出来,更试着把问题看明白。

“你羡慕的生活都是你没熬过的苦。”
367 篇文章
649 留言互动
14 核心专题

Java上下文传播正在改变

随着 Java 应用从传统 CRUD 走向 AI Agent,userId、tenantId、traceId、conversationId 等上下文需要在更复杂的调用链与并发任务中稳定传播。JDK 25 正式定稿的 ScopedValue,为“上游绑定、下游只读、任务结束自动失效”的场景提供了比 ThreadLocal 更清晰的语义。本文结合虚拟线程、结构化并发与 Spring AI ToolContext,分析 ScopedValue 的设计原理、适用边界、异步传播限制及安全注意事项,并给出 Spring Boot 项目的上下文分层与迁移思路,帮助开发者重新理解 Agent 时代的 Java Context 设计。

全局失效、单点注销与登录防护实践

本文围绕 JWT 在实际项目中的安全短板展开,分析了“无法主动撤销 Token、改密后旧 Token 仍有效、管理员降权失效、登录接口易被爆破”等常见问题,并给出一套工程化解决方案。通过 `authVersion` 实现账号级 Token 全局失效,通过 Redis + SHA-256 黑名单实现单设备注销,通过 Lua 脚本完成账号与 IP 双维度限流,再结合过滤器分层校验,实现从签发、验证到撤销的完整安全闭环。文章同时讨论了 Redis TTL、分布式锁、Redis Cluster hash tag、密钥强校验等细节,展示如何在保留 JWT 无状态优势的同时,补齐其安全缺陷,构建一套可靠的认证体系。

Agent为什么需要Durable Execution

随着 AI Agent 从简单问答走向多步骤、长时间运行的企业任务,传统 HTTP 请求模型开始面临状态丢失、重复执行、重试失控、服务重启后任务无法恢复等问题。本文从 Java 后端视角介绍 Durable Execution 的核心思想,分析 Workflow、Event History、Retry、Timeout、Idempotency、Human in the Loop 等关键能力,并结合 Temporal 与 Spring AI 的集成,说明如何将模型调用、Tool Calling、MCP 和传统业务 Service 纳入可恢复、可重试、可审计的执行流程,帮助 Agent 从“能运行”真正走向“可生产”。

Java项目该如何选择8.4LTS与9.7LTS

MySQL 8.0 已于 2026 年 4 月正式进入 EOL,大量仍运行在 8.0 上的 Java 项目需要重新规划数据库版本。与此同时,MySQL 9.7 已成为新的 LTS,因此升级问题不再只是“8.4 还是 9.x”。本文结合官方升级路径,从 MySQL 8.4 与 9.7 的选择、认证插件变化、Connector/J、TLS、Upgrade Checker、SQL 回归、备份和回滚等方面,给出一套适用于 Spring Boot 项目的实际迁移方案。对于存量系统,更稳妥的策略通常是先迁移到 8.4 LTS,在稳定运行后再根据生命周期决定是否继续升级 9.7 LTS。

Java开发者如何构建企业级AI智能体系统

本文围绕 Java 企业开发从传统 CRUD 向 AI Agent 演进展开,介绍 Spring AI、Tool Calling、RAG、Memory、Workflow 等核心能力,并结合企业真实场景分析 Agent 如何连接现有 Spring Boot 业务系统。文章重点强调,企业 AI 的难点并不只是调用大模型,而在于权限控制、数据治理、操作审计、幂等设计、人工确认以及系统稳定性。未来 Java 开发者不需要抛弃原有技术体系,而是应在熟悉的 Service、数据库和业务架构之上增加智能层,让系统从“执行固定流程”逐步升级为“理解用户目标并主动完成任务”。

2026年值得关注的7个技术变化

2026 年,Java 生态正在迎来新一轮技术升级。从 JDK 26 原生支持 HTTP/3、Virtual Thread 与 Structured Concurrency,到 Project Leyden 推进 AOT Cache,再到 JDK 27 在对象头压缩、垃圾回收、后量子安全和 JFR 脱敏方面的增强,JVM 正变得更高效、更安全。同时,Spring Boot 4.1 加强 gRPC、OpenTelemetry 等生产能力,Spring AI 2.0 则通过 Tool Calling、MCP 和 Agent 将 Java 深度带入 AI 时代。本文系统梳理 2026 年 Java 值得关注的核心技术变化,并给出新项目的技术选型思路。

PostgreSQL 18底层性能变革解读

PostgreSQL 18 的性能优化不再局限于加索引或调 SQL,而是从底层重构数据访问与建模方式。其异步 I/O 子系统通过 worker 或 io_uring 并发读取,显著改善大表扫描、Bitmap Heap Scan 和 VACUUM 的吞吐;B-Tree Skip Scan 允许联合索引在缺失最左列时仍能部分利用;原生 UUIDv7 提供时间有序标识,提升索引写入局部性;虚拟生成列将确定性行内计算统一到数据库;增强的 RETURNING OLD/NEW 可一次获取修改前后数据。文章强调,这些能力并非自动加速所有查询,升级前应基于真实负载测试,合理配置 I/O 并发参数,并关注统计信息恢复与生态兼容。

JDK27如何用Compact Object Headers压缩整个堆

Java应用的内存浪费不只来自业务字段,每个对象携带的对象头也会在海量实例下形成开销。本文围绕JDK 27默认启用的Compact Object Headers,拆解传统与紧凑对象头的布局差异,解释少4字节为何影响堆占用、GC频率、缓存局部性和容器密度,并通过JOL展示变化。同时给出JDK 25、26的启用方式、灰度流程、监控指标、适用场景与风险边界,帮助团队在升级前完成可验证、可回滚的内存优化。

Netty4.2如何用io_uring重构网络I/O

Netty 4.2 将 io_uring 从孵化模块升级为正式传输实现,使 Java 网络服务能够通过提交队列与完成队列批量交付 I/O。本文从 epoll 的就绪模型讲起,拆解 SQ、CQ、multishot 与缓冲区环,给出 Maven 依赖、运行时探测、三级回退和调优示例,并说明它与虚拟线程的边界。文章还分析 Docker seccomp、内核开关、原生库分类器与压测误区,帮助开发者判断 io_uring 是否适合生产环境。