- 博客(10)
- 收藏
- 关注
原创 Java后端:锁的底层原理都是什么?
因为:会锁住总线 或 cache line(MESI协议)CAS = CPU 原子指令 + 缓存一致性协议synchronized = 对象头 + CAS + OS mutexAQS = CAS + 队列 + park/unpark(基于 OS)
2026-03-19 09:08:32
115
原创 拿不到锁时,线程到底在干嘛?
阶段行为轻量级锁CAS + 自旋重量级锁线程挂起(阻塞)短暂自旋 + 队列阻塞(park/unpark)机制获取失败时行为是否自旋是否阻塞OS阻塞❌✅自旋 + park✅(短)✅CAS一直自旋✅❌setnx轮询✅❌Redisson订阅 + park少量✅Java 本地锁(synchronized、ReentrantLock)主要通过 AQS 实现,自旋 + 阻塞结合;CAS 是纯自旋机制;而 Redis 原生 setnx 是轮询方式,效率较低;
2026-03-19 08:52:51
108
原创 Kafka 实现超高吞吐量(百万级消息 / 秒)和极低延迟(毫秒级)原因
硬件层面:用磁盘顺序 IO + 零拷贝最大化 IO 效率,避开随机 IO 的性能陷阱;架构层面:用分区 + 批量处理实现并行化,摊薄网络 / 磁盘开销;交互层面:用拉取模式 + 轻量级存储简化服务端逻辑,避免不必要的性能损耗。不追求 “最快的单个操作”,而是通过 “批量 + 并行 + 复用系统底层能力” 实现整体极致性能,这也是 Kafka 区别于其他消息队列(如 RabbitMQ)的核心优势。
2026-03-18 15:07:01
631
原创 Java算法lru和带ttl的lru
可以,这个题如果改成外部测试类main函数LRUCache类打印测试结果我先给你整理成一个,尽量保持你原来的写法和思路不变。
2026-03-06 13:18:58
591
原创 工厂模式及简单demo
本文介绍了工厂模式的三种实现方式:1.简单工厂:一个工厂类通过参数创建不同产品,实现简单但不支持扩展;2.工厂方法:每个产品对应独立工厂类,扩展性好但类增多;3.抽象工厂:创建整套产品族,保证一致性但扩展麻烦。每种模式都配有精简的Java代码示例,展示了产品接口、具体产品和工厂类的实现方式。文章最后对比了三者的优缺点,并给出了面试中的一句话总结:简单工厂用if/switch判断,工厂方法为每个产品建工厂,抽象工厂创建相关产品组。
2026-02-28 08:40:01
645
原创 面试中常见数据类型的测试用例写法大全(Java版)
本文系统整理了Java面试中常见数据类型的测试用例编写方法,涵盖基本数据类型、字符串、数组、集合类和数据结构(链表、二叉树)等。重点强调了边界测试、空值处理、特殊情况和易错点,如int的MAX_VALUE/MIN_VALUE边界、long类型必须加L后缀等。针对链表和二叉树提供了手动构建和辅助函数两种实现方式,并推荐使用可修改的ArrayList初始化写法。文章指出测试用例的核心在于边界思维,而非写法高级程度,建议面试时必须考虑正常值、空值、单元素、边界和大数据等测试场景。最后提供了完整示例结构和测试思维导
2026-02-22 15:37:46
385
原创 Java特性清单
如果面试官问:你能总结一下 Java 的重要特性吗?可以分四大块回答:面向对象特性并发特性JVM 特性框架特性这样显得非常体系化。
2026-02-22 10:32:08
677
原创 Java常见输入输出总结
数据类型半ACMACM关键点int直接赋值nextInt()int[]{}循环读 nextIntString[]{}int[][]双层{}双循环char[][]双层{}List链表new + nextdummy构造树层序解析。
2026-02-20 12:13:47
477
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅