54 归档分页
370 留言互动
4 核心专题

最近更新

算法 2025-09-09

分糖果问题

本文介绍了“分糖果”问题:给定孩子们的得分数组,要求每个孩子至少分到一颗糖,且相邻得分更高的孩子糖数必须更多,返回最少糖果总数。要求时间 O(n)、空间 O(n)。解法采用双向遍历的动态规划:首次从左至右若得分递增则糖数加一;随后从右至左若得分递减且当前糖数不大于右侧,则更新为右侧+1。最终累加所有糖数即为答案。代码实现基于上述思路,时间复杂度线性,空间使用额外数组存储每个孩子的糖数。

NowCoder 阅读全文
算法 2025-09-09

编辑距离(一)

本文介绍了求两个仅含小写字母的字符串之间最少编辑操作数的问题,操作包括插入、删除和修改。给出示例说明计算过程,并提供基于动态规划的 O(n·m) 解法。实现中使用两行滚动数组 dp,分别记录当前行和前一行的最优值,通过字符相等与否分别处理转移,最终返回 dp[str1.length % 2][str2.length] 即编辑距离。

NowCoder 阅读全文
Java 2025-09-09

Seata分布式事务:Java微服务架构下的“数据一致性”通关指南

Seata 通过事务协调器(TC)、事务管理器(TM)和资源管理器(RM)实现微服务间的全局事务,解决跨服务的数据一致性问题。文章先分析传统 XA、TCC、消息表等方案的性能与实现缺陷,随后介绍 Seata 三种主流模式:AT 通过自动生成回滚日志实现零代码侵入,适用于大多数关系型业务;TCC 采用 Try‑Confirm‑Cancel 手动补偿,支持非关系型资源并要求幂等、防悬挂;Saga 采用正向+补偿链式执行,适合长事务场景。随后给出基于 Spring Boot 的实战步骤、配置要点以及 XID 传播方式,并提供 TC 高可用、事务日志存储、常见坑点的防范建议,帮助 Java 开发者在生产环境安全、快速落地分布式事务。

Java 2025-09-08

Istio服务网格:Java微服务无侵入式治理实战

文章介绍了在 Java 微服务中通过 Istio 服务网格实现无侵入治理的完整方案。首先分析传统硬编码治理导致的代码冗余、侵入性强和可观测性差等问题,随后阐述 Istio 的 Sidecar 架构及流量治理、自动 mTLS 安全、链路追踪与指标监控四大核心能力。接着提供在 K8s 环境下安装 Istio、自动注入 Sidecar、部署 order‑service 与 inventory‑service 示例的步骤,并演示灰度发布、熔断、OpenTelemetry 集成以及 Kiali、Grafana 可视化。文末列出 Sidecar 注入失败、追踪数据缺失、路由规则不生效等常见坑及排查方法,并给出从基础路由到多集群安全的最佳实践建议。

Java 2025-09-07

Java虚拟线程(Project Loom):并发编程的新纪元

Java 21引入的虚拟线程是轻量级、由JVM调度的线程,创建和切换成本极低,可实现百万级并发。它兼容现有并发API,支持阻塞IO、结构化并发和调试监控。文章展示了在Web服务器、批量处理、微服务等场景的使用示例,提出避免pin、合理使用ThreadLocal、使用ReentrantLock等最佳实践,并提供渐进式迁移方案。虚拟线程解决了传统线程的数量、上下文切换和内存瓶颈,标志着Java并发编程进入新纪元。

多线程 阅读全文
Java 2025-09-02

Java Record:重新定义数据载体的简洁与安全

Java 16 正式引入 Record,提供一种简洁的不可变数据载体。它自动生成 getter、equals、hashCode、toString 与构造函数,省去大量样板代码,字段隐式 final,保证不可变性。仍可定义紧凑构造函数和自定义方法,实现参数校验或业务逻辑。适用于 DTO、复合键、模式匹配等场景,但不宜用于需要继承或可变状态的类(如 JPA 实体)。遵循仅用于简单数据模型的最佳实践,可显著提升代码可读性和安全性。

Java 17 阅读全文