为开发者而生的技术社区

让技术生根,让灵感生长。

从 Java 与 Spring,到 AI 与开源。分享经得起实践的知识,和认真做技术的人一起成长。

↗ SHARE. BUILD. GROW.
⌘探索技术专题找到你的下一站Agent21 篇文章 ↗Java559 篇文章 ↗Spring576 篇文章 ↗架构运维318 篇文章 ↗面试与职场68 篇文章 ↗

最新文章

持续更新的技术实践

Claude Code 团队按风险决定一个 PR 要几个人批,我用 Spring Boot 把这套规则写成了 CI 关卡

Claude Code 团队按风险决定人工批准人数:低风险 0 人、中风险 1 人、高风险 2 人,机器人批准不算人,批准只对具体提交有效,审查三轮封顶。我用 Spring Boot 4.1.1 把这些规则写成读真实 git 数据的 CI 关卡,风险判定改用路径规则,并在 5 个样例分支上实测。

Buttondown 的创始人在 Stripe 上班时把它当副业做,现在年化收入过了 100 万美元

Newsletter 工具 Buttondown 从 2017 年起一直是创始人 Justin Duke 在 Stripe 上班之余的副业,2022 年初他才辞职全职做。按他 2026 年 9 月的自述,公司年化收入已超过 100 万美元,自筹且盈利。本文按他在 Hacker News、播客和官方年度回顾里的数字,复盘它的慢增长、辞职时机、口碑获客和定价。

JDK 27 发布前差点带上一个改坏字符串的 C2 bug,我把旧 EA 版本找回来复现了一遍

JDK 27 GA 前不到一个月,C2 的 EncodeISOArray intrinsic 被发现会把字符串前 4 个字节写坏(JDK-8390546,P1),最后在 GA 构建 27+35 里回退修掉。用 Spring Boot 实测 27-ea+23/24/34、27 GA 和 28-ea+20:ea+24 和 ea+34 稳定复现,关掉压缩对象头就消失。还钉着 27 EA 镜像的该换了。

Spring Security 的通行密钥默认存在内存里,应用一重启就得重新注册:7.1 上换 JDBC 实测

Spring Security 从 6.4 引入通行密钥起就默认把凭证存在内存里,重启后同一把密钥登录返回 401。在 Boot 4.1.1(Security 7.1.1)上用 Chrome 虚拟认证器实测:换成两个 JDBC 仓库后重启照常登录,官方建表脚本第二次启动会报表已存在;和密码组成 MFA 时要用 7.1 的 WEBAUTHN_REGISTERED 条件,否则没注册过的用户进不了注册页。

Hardwood 1.1.0.Beta2 发布,写 Parquet 时能自己切 row group,坏记录也能跳过

Gunnar Morling 的纯 Java Parquet 库 Hardwood 发布 1.1.0.Beta2:写入端新增 endRowGroup() 手动切 row group,tryWriteRow() 遇到坏记录返回 Rejected 而不中断 writer,S3 读取请求更少,还有 footer 缓存和两项破坏性变更。附 Spring Boot 4.1.1 实测:按月写 3000 行,跳过 7 条坏记录,得到 3 个 row group。

ADK Java 1.12.0 加了实验性工作流图,Agent 都成了节点,但还不能整张图跑

Google ADK Java 1.12.0 新增实验性的 Workflow、Node、Edge、Route、JoinNode 等工作流类型,BaseAgent 改为继承 BaseNode。单个节点可以直接运行,但 Workflow.runNode 目前返回 UnsupportedOperationException,整张图还不能跑。同版还新增了禁止 Agent 配置声明本地 stdio MCP 服务器的开关。