-
Nacos动态配置的原理是什么?
在传统单体应用时代,配置通常写在 application.properties 或 application.yml 文件中。当配置发生变化时,往往需要修改配置文件、重新打包、重新部署应用才能生效。
NEW个对象 2026-06-11
-
Kafka怎么保证消息只消费一次?
在分布式系统中,消息队列承担着系统解耦、流量削峰、异步处理等重要职责。Kafka作为目前最主流的消息中间件之一,被广泛应用于日志采集、订单系统、支付系统、大数据平台等场景。
NEW个对象 2026-06-11
-
JVM对象内存分配在哪里?从堆内存到栈上分配全面解析
JVM对象内存分配在哪里?从堆内存到栈上分配全面解析
NEW个对象 2026-06-10
-
Java锁升级机制详解:偏向锁、轻量级锁、重量级锁是如何一步步升级的?
Java中的synchronized并不是一开始就使用重量级锁。为了减少线程竞争带来的性能损耗,HotSpot JVM设计了锁升级机制。锁会根据竞争情况经历无锁 → 偏向锁 → 轻量级锁 → 重量级锁的升级过程。锁只能升级不能降级,从而保证线程安全并提高系统吞吐量。
NEW个对象 2026-06-10
-
JVM创建对象的内存是如何分配的?如何保证线程安全?
Java对象默认在堆中分配内存。当多个线程同时创建对象时,JVM通过CAS、自旋重试、本地线程分配缓冲区(TLAB)等机制保证内存分配过程的线程安全。对象创建过程涉及类加载检查、内存分配、零值初始化、对象头设置以及构造方法执行等多个步骤,是JVM面试中的高频考点。
NEW个对象 2026-06-09
-
JVM内存模型详解:从运行时数据区到GC机制彻底搞懂
JVM内存模型是Java程序运行的基础,它规定了对象、变量、方法、线程等数据在运行期间存储的位置。面试中提到的堆、栈、方法区、程序计数器、本地方法栈以及GC垃圾回收机制,都属于JVM运行时内存结构的重要组成部分。
NEW个对象 2026-06-09
-
两个数组原地合并详解:双指针从后向前才是最优解
两个有序数组原地合并时,最优方案并不是从前往后插入,而是利用 nums1 预留空间,从数组尾部开始比较,采用三个指针从后向前填充数据,时间复杂度 O(m+n),空间复杂度 O(1)。
NEW个对象 2026-06-09
-
RocketMQ延迟消息是怎么实现的?如果让你设计一个延迟消息系统你会怎么做?
延迟消息是消息队列系统中非常常见的能力。
NEW个对象 2026-06-09
-
Redis Slot迁移时需要写多少个迁移命令?底层原理全解析
Redis Cluster Slot迁移并不是“一条命令迁移一个Slot”,而是“以Key为粒度进行迁移”。因此迁移命令数量本质上等于Slot内Key的数量(通常按批次拆分执行)。Slot只是逻辑映射单位,真正搬迁的是Key。
NEW个对象 2026-06-09
-
Redis集群扩容时如何进行数据迁移?读写请求如何保证不丢失?
Redis Cluster扩容的本质是Slot迁移。当新机器加入集群时,需要将部分Hash Slot从旧节点迁移到新节点。在迁移过程中必须保证数据不丢失、服务不中断、读写请求正常执行。因此需要设计迁移状态管理、请求重定向机制、双写保护机制以及最终一致性校验机制。
NEW个对象 2026-06-09