本题要求给一组孩子的得分数组分配糖果,满足每人至少一颗,得分更高的相邻孩子糖果数必须更多(得分相同则无约束)。在 n≤100000、时间 O(n)、空间 O(n) 的限制下,采用双向遍历的动态规划:先初始化全部为 1,左至右若当前得分大于前一位则糖果数加 1;再右至左若当前得分大于后一位且糖果数不够则设为后一位 +1。最后累计所有糖果即为最少总数。示例 [1,1,2] → 4, [1,1,1] → 3。代码实现即上述两遍遍历并求和。

本文介绍了编辑距离问题:给定两个仅含小写字母的字符串(长度≤1000),求将第一个字符串转化为第二个字符串的最少插入、删除或替换操作数。通过动态规划建立 dp[i][j] 表示前 i、j 个字符的最小操作数,利用仅保留两行的滚动数组将空间降至 O(|str2|)。代码实现了上述思路并给出示例验证。

Seata 通过事务协调器(TC)、事务管理器(TM)和资源管理器(RM)实现微服务间的全局事务,解决跨服务“全或无”的一致性难题。文章先分析传统 XA、TCC、消息表等方案的性能与实现成本,随后介绍 Seata 的三大模式:AT(自动生成回滚日志、零代码侵入,适用于大多数关系型业务)、TCC(手动 Try‑Confirm‑Cancel,支持非关系型资源并需保证幂等与防悬挂)以及 Saga(正向 + 补偿链,适用于长事务的最终一致性)。在实战部分给出 AT 场景的环境搭建、全局事务注解、XID 传递及 RM 的本地事务实现;并演示 TCC 接口定义与注意事项、Saga 注解与补偿方法编写。最后提供生产环境的避坑指南:TC 高可用(推荐 DB/Redis 存储)、XID 传播要在 HTTP、RPC、消息等链路中显式传递,以及常见配置要点。全文为 Java 开发者提供了从原理到落地的完整 Seata 使用手册。

微服务治理常因代码冗余、侵入式、可观测差而难以维护。Istio 通过 Sidecar 将流量治理、安全、可观测等能力从业务代码剥离,只需在 K8s 上部署 Istio、开启自动注入,即可为 Java 微服务(如 order‑service、inventory‑service)提供灰度发布、熔断、限流等配置,无需改动业务代码。结合 OpenTelemetry、Jaeger/Prometheus,自动生成调用链、指标仪表盘。文中还列出 Sidecar 注入失败、链路缺失、规则不生效等常见坑及排查方法,并给出从基础路由到多集群安全的最佳实践建议。

Java 21 引入的虚拟线程是轻量级、JVM 调度的线程,创建和切换成本极低,内存占用千分之一,实现“一请求一线程”并发。它兼容现有并发 API,阻塞 IO 不再占用平台线程,支持结构化并发、线程本地变量和调试监控。文章展示了在 Web 服务器、批量处理、微服务聚合等场景的使用示例,并给出避免 pin、合理使用锁和 ThreadLocal 的最佳实践。提出渐进式迁移方案,认为虚拟线程将成为 Java 高并发编程的主流选择。

Java 16正式引入Record,提供只需一行代码即可定义不可变数据载体,编译器自动生成getter、equals、hashCode、toString和构造函数,极大削减POJO的样板代码。Record字段隐式final,保证不可变性,可通过紧凑构造函数加入校验或自定义方法,适用于DTO、复合键、模式匹配等场景。但不支持继承、不可变状态不适用于JPA实体等需要可变字段的情况。掌握Record可提升代码简洁性、安全性和可维护性,是现代Java开发的重要工具。