PERSONAL BLOG · 技术随笔正在更新

你好呀,我是小邹

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

“你羡慕的生活都是你没熬过的苦。”
41 归档分页
647 留言互动
14 核心专题

博客自动目录功能的实现

长篇文章缺少目录会增加用户查找信息的成本,影响阅读体验。本文介绍了一种轻量级的文章目录实现方案,通过浏览器原生 API 自动提取正文中的 `h2`、`h3` 标题,为章节生成唯一锚点,并动态构建目录导航。同时结合 `IntersectionObserver` 监听标题进入视口的状态,实现滚动阅读时目录自动高亮。针对固定导航栏遮挡问题,文章还介绍了 `scroll-margin-top` 的优化方式。整个方案无需依赖第三方插件,具有实现简单、性能稳定、扩展性强等特点,适用于博客、技术文档、知识库等内容型网站,能够有效提升长文章的浏览效率和用户阅读体验。

网络、资源、安全、存储一次说清

Kubernetes 1.37 的重点并非新增大量业务功能,而是推动 IPVS、cgroup v1 等旧基础设施路径退场,并加强 SELinux 卷挂载、Metrics API、Rootless kubelet 和存储健康监测。本文从 Java 服务视角分析这些变化对 Service 网络、JVM 资源识别、Static Pod、共享 PVC、HPA 和节点安全的影响,同时提供可直接执行的集群、节点与 Java 工作负载审计命令,以及分阶段升级和回滚思路。

Java项目软件供应链安全实战

传统 Java 项目往往只关注依赖漏洞,却忽略了依赖解析、CI 构建、制品存储和部署替换等供应链风险。本文从工程实践出发,讲解如何使用 CycloneDX Maven Plugin 生成 SBOM,利用 Trivy 扫描漏洞与许可证,通过 Cosign 为镜像签名并绑定 SBOM Attestation,再结合 SLSA Provenance、VEX 和策略门禁建立可验证的发布链路。同时分析 SBOM 与最终镜像差异、签名密钥隔离、例外审批、历史清单归档和持续重扫等生产落地问题,帮助 Java 团队将发布流程从“默认信任”升级为“基于证据验证”。

我的AI能力私有化实践

文章详细介绍了整体架构、Responses API 与 Chat Completions 兼容、SSE 流式响应、图片识别支持,以及公网暴露过程中的安全设计。同时记录了路径白名单、Bearer 鉴权、限流、并发控制、权限收缩和协议兼容等关键细节。通过这套方案,可以在不直接暴露宿主机和 Codex 登录状态的前提下,为个人工具和智能体系统提供受控的 AI 能力接口。

生活没有彼岸,只有一程又一程

小时候我们总以为人生存在一个“彼岸”:毕业就好了、找到工作就好了、工资高了就好了、买房结婚以后就好了。真正长大才发现,生活并不会在某个节点之后突然变得无忧无虑。工作、收入、家庭、健康,每个阶段都有属于自己的问题。成熟也许不是彻底摆脱焦虑,而是接受人生的不确定性,改变能够改变的,接受暂时无法改变的,同时不再把幸福无限推迟到未来。人生没有永久的彼岸,我们真正需要学习的,是在一次次渡河的过程中,仍然认真吃饭、认真生活、珍惜身边的人,也珍惜那些平凡却真实的幸福瞬间。

Java与Spring AI如何跨越兼容性断层

MCP 2026-07-28规范移除了初始化握手和协议级Session,转向每次请求自带版本与能力声明的无状态模型。当前Java MCP SDK 2.0.0和Spring AI仍基于2025-11-25协议,接入客户端时可能出现探测失败、未知方法返回500等问题。本文梳理新旧协议差异与Java生态现状,并给出兼容测试、状态外置、权限校验、协议网关和双栈灰度方案,帮助Java团队平稳完成MCP升级。

如何建立回归评测与质量门禁

大模型接口返回 HTTP 200,并不代表回答正确。Prompt、模型、RAG、工具和参数的任何变化,都可能引发难以察觉的质量回归。本文基于 Java、JUnit 与 Spring AI 2.0,设计一套可落地的 AI 回归测试体系:使用版本化数据集管理正常、边界、对抗和历史失败样本,通过确定性规则拦截格式、安全、Token 与时延问题,再使用模型裁判评估正确性、事实一致性和相关性,并结合多次运行通过率、基线对比和 CI 质量门禁,让 AI 功能从人工聊天验收走向可量化、可回归、可持续交付。

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 无状态优势的同时,补齐其安全缺陷,构建一套可靠的认证体系。