首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Java场景面试题
用户6854537597769
创建于2025-10-08
订阅专栏
用于场景面试
等 7 人订阅
共274篇文章
创建于2025-10-08
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
🔐 分布式锁的三大门派:Redis、Zookeeper、数据库谁更强?
别慌!今天我们深入剖析分布式锁的三大流派,从原理到实战全搞定! 🎬 开篇:为什么需要分布式锁? 单机时代(一个人的江湖) 分布式时代(群雄争霸) 解决方案:需要一个所有服务器都能访问的"锁"! 🥇 第
🎮 Seata分布式事务框架:选择AT、TCC还是Saga?
别慌!今天我们深入剖析Seata的三大模式,让你做选择时胸有成竹! 🎬 开篇:Seata是什么? Seata(Simple Extensible Autonomous Transaction Arch
💍 从相亲到结婚的漫长征程:分布式事务的四种解决方案
别慌!今天我们用最生动的方式,把分布式事务的四大门派讲得明明白白! 🎬 开篇:为什么需要分布式事务? 单体应用时代(一个人说了算) 微服务时代(众人拾柴火焰高,但也容易扯皮) 核心痛点:不同服务使用不
🎭 鱼与熊掌不可兼得?揭秘分布式系统的CAP定理和BASE理论
别慌!今天我们用最接地气的方式,把这个让无数程序员头疼的问题讲得明明白白! 📚 第一章:CAP定理 - 分布式系统的"不可能三角" 什么是CAP定理? CAP定理是分布式系统的三大核心保证,由计算机科
并行流Parallel Stream:便捷但有陷阱🌊
一、基本使用 串行 vs 并行 二、底层实现 ForkJoinPool 自定义线程池 三、使用陷阱⚠️ 陷阱1:线程安全问题 陷阱2:IO操作 陷阱3:任务太小 四、适用场景判断 ✅ 适合并行流 CP
高性能对象池:对象复用的艺术🏊
一、为什么需要对象池? 问题:频繁创建销毁对象 解决:对象池复用 二、简单对象池实现 三、Apache Commons Pool 四、使用场景 数据库连接池:HikariCP、Druid 线程池:Th
Fork/Join框架:分治法的完美实践🌲
一、核心思想 二、基本使用 三、任务拆分策略 阈值设置 经验值 四、工作窃取(Work Stealing) 双端队列: 自己从头部取任务 别人从尾部偷任务 五、面试高频问答💯 Q: Fork/Join
Executor框架:任务与执行的解耦🏗️
一、Executor框架层次 二、核心接口 Executor 最简单实现: ExecutorService 三、设计思想 1. 任务抽象 2. 执行策略 3. 结果获取 四、生命周期管理 五、使用示例
手写无锁栈和队列:CAS的极致应用🔓
一、无锁栈(Treiber Stack) 实现 ABA问题解决 二、无锁队列(Michael-Scott Queue) 实现 三、性能对比 结果: 实现 吞吐量(ops/秒) 竞争程度 synchro
SynchronousQueue:零容量的交接站🎭
一、SynchronousQueue是什么? 核心特点 容量为0:不存储元素 直接交付:生产者阻塞,直到消费者取走 配对模式:生产者和消费者必须同时到达 生活类比 普通队列像快递柜📦: 快递员放进柜子
读写锁的锁降级:只降不升🔽
一、什么是锁降级? 锁降级(Downgrade)✅ 顺序: 写锁 → 读锁 → 释放写锁 = 降级成功 二、为什么不能锁升级? 锁升级(Upgrade)❌会死锁 原因: 三、完整的锁降级示例 缓存更新
并发三性:可见性、原子性、有序性🔺
一、可见性(Visibility)👁️ 问题:一个线程的修改,另一个线程看不到 解决方案 方案1:volatile✅ 方案2:synchronized✅ 方案3:Atomic类✅ 方案4:final✅
活锁检测与避免:比死锁更隐蔽🔄
一、什么是活锁? 死锁 vs 活锁 死锁: 线程阻塞,互相等待 活锁: 线程运行,但无进展 生活类比 死锁像两辆车在窄路相遇🚗🚙: 谁都不让,卡死 活锁像两个人在走廊相遇🚶🚶: 都想让路 同时左移 →
为什么禁止用Executors创建线程池?💣
一、Executors的三大陷阱 陷阱1:newFixedThreadPool - 无界队列OOM 源码: 问题: LinkedBlockingQueue默认容量Integer.MAX_VALUE(2
Future.cancel的假象:协作式取消🛑
一、Future.cancel的签名 参数: true:如果任务正在运行,发送中断信号 false:如果任务还未开始,取消;如果已开始,让它完成 二、cancel()的三种情况 情况1:任务还未开始
手写限流器:令牌桶与漏桶算法🚰
一、四大限流算法 1. 固定窗口计数器(最简单) 缺点: 临界问题 2. 滑动窗口(改进) 3. 令牌桶(Token Bucket)⭐推荐 特点: ✅ 支持突发流量(桶内有令牌就放行) ✅ 平均速率控
并发编程的内存泄漏场景:隐藏的杀手💣
一、ThreadLocal导致的内存泄漏⚠️ 问题代码 内存泄漏原理 正确做法✅ 二、线程池未关闭 问题代码 正确做法✅ 三、监听器未移除 问题代码 正确做法✅ 四、静态集合持有对象 问题代码 正确做
ThreadLocalRandom:并发场景的随机数生成器🎲
一、Random的性能问题 问题代码 Random的内部实现 问题: 所有线程竞争同一个seed,高并发下性能差! 二、ThreadLocalRandom的解决方案 正确用法 原理 关键: 每个线程独
优雅关闭线程池:shutdown vs shutdownNow🛑
一、两种关闭方式对比 shutdown() - 温柔派 行为: ✅ 不再接受新任务 ✅ 执行已提交的任务(队列中的继续执行) ⏳ 等待所有任务完成 生活类比: 餐厅打烊🍽️ 不接新客人 服务完已经点单
Exchanger:线程间的数据交换站🔄
一、Exchanger是什么? 核心概念 生活类比: Exchanger像快递代收点📦: 你把包裹放在代收点 等对方也放一个包裹 双方交换后各自取走 二、基本使用 输出: 三、实战场景 场景1:遗传算
下一页