- 博客(73)
- 收藏
- 关注
原创 JVM 之 垃圾回收算法及其内部实现原理【垃圾回收的核心问题有哪些?分别怎么解决的?可达性分析解决了什么问题?回收算法有哪些?内部怎么实现的?】
JVM垃圾回收面临的核心问题有哪些?分别怎么解决的?可达性分析解决了什么问题?回收算法有哪些?内部怎么实现的?根节点枚举、安全点、安全区域、记忆集与卡表、写屏障、并发性可达性分析各自解决了什么问题?怎么协同工作的?G1中他们是怎么协作的?
2025-12-16 01:07:25
1435
原创 Spring Cloud熔断与降级:核心区别与实践指南【怎么理解?解决了什么问题?各自的适用场景?Sentinel实现代码示例】
Spring Cloud熔断与降级:核心区别与实践指南【怎么理解?解决了什么问题?各自的适用场景?Sentinel实现代码示例】
2025-12-14 21:22:49
947
原创 JVM 之 内存溢出实战【OOM? SOF? 哪些区域会溢出?堆、虚拟机栈、元空间、直接内存溢出时各自的特点?以及什么情况会导致他们溢出?并模拟溢出】
OOM异常:除了程序计数器外,堆、虚拟机栈、元空间、直接内存都有发生的可能 。该篇文章内,我们将演示引起各区域OOM的情况,及观察下其异常表现,进而总结各异常时的调优策略。JVM调优实例:堆-》heap OOM ->获取堆转储快照-》分析是溢出(调大堆)还是泄漏(优化代码),并解决虚拟机栈:-》SOF -》根据堆栈信息去解决;-》OOM -> 线程过多 -》调小堆给虚拟机栈留出内存元空间-》OOM:Metaspace ->调整代码+调大元空间上限直接内存-》OOM,但没异常-》调大直接内存
2025-12-14 16:14:53
999
原创 JVM 之 线上诊断神器Arthas实战【内部原理?常用命令?如何使用Arthas排查cpu飙高、类加载问题、死锁、慢接口等线上问题?】
JVM 之 线上诊断神器Arthas【常用命令?如何使用Arthas排查cpu飙高、类加载问题、死锁、慢接口等问题?】Arthas 是什么?解决了什么问题?怎么解决的这些问题?有哪些常用命令?线上cpu飙高、死锁、慢接口、类加载问题等场景通过Arthas排查定位的思路及具体实施步骤?cpu: thread - n 3 -> jad -> profiler死锁: thread -b慢接口: trace -> watch 类加载问题:sc -> jad ->classloader
2025-12-14 07:14:30
898
原创 JVM 之 HotSpot虚拟机对象在Java堆中分配、布局和访问的全过程【对象分配的具体流程?内存分配时有哪些策略?如何解决并发问题?对象布局?头信息中存放了哪些数据?对象访问定位的方式有哪些?】
1、对象的创建:类加载检查(没加载则加载,获取对象所需内存)-》内存分配(指针碰撞、空闲列表,并发通过TLAB+CAS重试 解决)-》对象初始化(设置对象头信息+其他信息零值填充)-》调用构造器(dup指令复制对象指针+invokespecial指令调用对象构造方法)。2、对象的内存分布:对象头(mark word(哈希码+GC年龄+锁标志位)+类元数据指针+数组长度)+实例数据(根据字段类型排序)+对齐填充(保证是8字节的倍数)3、对象的访问定位:句柄访问、直接指针访问
2025-12-07 00:07:31
528
原创 JVM 之 运行时数据区内存模型【堆、方法区、运行时常量池、虚拟机栈、本地方法栈、程序计数器是如何协作的?他们各自起什么作用?虚拟机栈中局部变量表、操作数栈、动态链接、方法出口信息各自的作用及原理?】
- 1、堆、方法区、运行时常量池、虚拟机栈、本地方法栈、程序计数器是如何协作的?- 2、他们各自起什么作用?- 3、虚拟机栈的单个栈帧中局部变量表、操作数栈、动态链接、方法出口信息各自的作用及原理?
2025-12-06 23:21:50
917
原创 SpringBoot 之 AOP【aop核心概念?实现机制?应用场景?JDK与CGLIB的区别?@EnableAspectJAutoProxy如何使用?核心参数配置后的行为】
aop核心概念?实现机制?应用场景?JDK与CGLIB的区别?@EnableAspectJAutoProxy如何使用?核心参数配置后的行为
2025-12-01 14:21:48
418
原创 MySQL 之 SQL关键字执行顺序【FROM\JOIN、WHERE、GROUP BY、HAVING、SELECT、ORDER BY、LIMIT、UNION 】?
SQL关键字的执行顺序与书写顺序不同,理解其执行顺序对于SQL优化至关重要。
2025-11-28 11:29:46
440
原创 MySQL 之 高可用策略 【如何判断读、写限制?怎么针对性的进行扩展?业务切分(分库 分表)、排队机制、增加读副本、增加写分区等方式使用的前后思路】
如何判断读、写限制?怎么针对性的进行扩展?业务切分(分库 分表)、排队机制、增加读副本、增加写分区等方式使用的前后思路
2025-11-22 15:22:01
47
原创 JUC 之 异步编程框架completableFuture【completableFuture怎么实现的高性能? 提供了哪些功能?组合异步任务提供了哪些方案?各方案提供了哪些方法?怎么使用?】
CompletableFuture是什么?解决了什么问题?怎么实现的高性能?提供了哪些功能?组合异步任务提供了哪些方案?任务串联依赖、并行任务聚合、多任务协同、异步任务结果消费、异步任务异常处理。他们分别提供了哪些方法?有什么区别?
2025-11-19 18:26:10
770
原创 Mysql 之 锁【表锁、行锁、意向锁、记录锁、间隙锁、临键锁、共享锁、排它锁。他们是怎么分类的?各自有什么作用?共享锁、排它锁怎么使用?锁的兼容性?锁与事务隔离界别的关系?锁升级?死锁检测?】
表锁、行锁、意向锁、记录锁、间隙锁、临键锁、共享锁、排它锁。他们是怎么分类的?各自有什么作用?共享锁、排它锁怎么使用?锁的兼容性?锁与事务隔离界别的关系?锁升级?死锁检测?
2025-11-19 14:24:38
571
原创 MySQL 之 事务【事务是什么?解决了什么问题?通过什么实现的?ACID分别是什么意思?MYSQL隔离级别?Spring事务传播机制?什么情况下Spring事务会失效?如何避免?如何处理大型事务?】
事务是什么?解决了什么问题?通过什么实现的?ACID分别是什么意思?MYSQL隔离级别?Spring事务传播机制?什么情况下Spring事务会失效?如何避免?如何处理大型事务?
2025-11-19 13:47:49
453
原创 MySQL 之 表分区【如何理解分区表?怎么使用分区表?分区表在增删改查中的行为?分区表解决了什么问题?分区表适合哪些场景?分区有哪些常见方案?分区表使用中需注意哪些问题?常见面试题】
如何理解分区表?怎么使用分区表?分区表在增删改查中的行为?分区表解决了什么问题?分区表适合哪些场景?分区有哪些常见方案?分区表使用中需注意哪些问题?常见面试题?
2025-11-18 17:33:21
628
原创 MySQL 之 SQL性能优化思路【有哪些性能瓶颈?排查&优化思路?慢日志、EXPLAIN发挥了什么作用?有哪些具体优化案例?如何理解sql查询?sql查询的生命周期?善用业务优化?最后的大招加资源】
MySQL 之 SQL性能优化思路【有哪些性能瓶颈?排查&优化思路?有哪些常见案例?SHOW PROCESSLIST、慢日志、EXPLAIN发挥了什么作用?分别如何使用?如何理解sql查询?sql查询的生命周期?优化的核心思路?善用业务优化?最后的大招加资源? COUNT、联接查询、LIMIT、子查询、UNION、插入、大型删除更新、下一页功能、GROUP BY、ORDER BY等如何优化?旧表建索引的注意事项?大表如何优化?】什么是半双工?语法解析器、预处理、查询优化器分别起什么作用?如何查看sql性能?
2025-11-17 18:07:19
1239
原创 MySQL的IO行为【事务日志(redo log)、undo log、bin log、缓冲区、日志缓冲区是怎么协作的?各自的作用是什么?二阶段提交启什么作用?内核态、用户态对mysql有什么影响?】
事务日志(redo log)、undo log、bin log、缓冲区、日志缓冲区是怎么协作的?各自的作用是什么?二阶段提交启什么作用?内核态、用户态对mysql有什么影响?
2025-11-14 17:47:02
1290
原创 消息队列 之 如何理解RocketMQ和Kafka的消息模型【结合生活场景理解 生产者、消费者、消费者组、Topic、Broker、队列 各自的角色及定位?】
结合生活场景理解 生产者、消费者、消费者组、Topic、Broker、队列 各自的角色及定位?
2025-11-14 07:15:05
676
原创 消息队列 之 如何处理消息积压问题【什么情况下会出现消息积压?生产端、消费端分别应该怎么处理?处理的思路是怎样的?消息积压可能的情况有哪些?批量消费的适用场景?】
什么情况下会出现消息积压?生产端、消费端分别应该怎么处理?处理的思路是怎样的?消息积压可能的情况有哪些?批量消费的适用场景?
2025-11-13 17:16:06
726
原创 消息队列 之 如何使用幂等性解决重复消息问题?【重复消息是如何出现的?幂等性为什么可以解决这个问题?幂等性有哪些方案?消息队列允许重复消息做了哪些考量?】
重复消息是如何出现的?幂等性为什么可以解决这个问题?幂等性有哪些方案?消息队列允许重复消息做了哪些考量?
2025-11-13 09:41:50
937
原创 消息队列 之 如何确保消息不丢失?【生产者->broker、broker存储、broker->消费者?如何自检消息是否丢失?解决方案引发了哪些其他问题?】
消息不丢失的关键在于什么?生产者->broker、broker存储、broker->消费者 各个阶段如何确保消息不丢失?如何自检消息是否丢失?解决方案引发了哪些其他问题?
2025-11-13 07:40:59
638
原创 消息队列 之 如何实现的分布式事务【事务消息是如何通过2PC实现分布式事务的?】
分布式事务是什么?有哪些方案?事务消息是怎么通过2PC实现的?事务消息实现了完整的ACID吗?这其中有什么考量?
2025-11-13 07:37:07
705
原创 MySQL 之 InnoDB索引【B+树(复合索引、索引覆盖、索引合并、索引前缀、最左原则)、聚集索引、哈希索引、全文索引;如何建立高性能索引;常见面试题】
InnoDB有哪些索引数据结构?B+树解决了什么问题?怎么实现的?B+树适用于哪些场景?什么是回表?索引覆盖为什么可以减少回表?索引合并如何优化?索引选择性是什么?如何确定复合索引的顺序?什么情况下索引生效?什么情况下索引会失效?如何建立高性能索引?如何管理索引?
2025-11-05 01:30:21
1019
原创 MySQL 之 InnoDB的MVCC(多版本并发控制)机制【MVCC实现原理?Undo日志和ReadView在其中起到了什么作用?ReadView可见性规则?不同隔离级别下SELECT的不同行为?】
MVCC解决了什么问题?MVCC是如何实现的?undo日志在其中起到了什么作用?ReadView在其中起到了什么作用?ReadView可见性规则?不同隔离级别下SELECT的不同行为?INSERT、UPDATE、DELETE的行为?
2025-10-31 00:13:09
1208
1
原创 JUC 之 ThreadLocal简谈【ThreadLocal解决了什么问题?怎么实现的?为什么采取弱引用?弱引用导致了什么问题?怎么解决这个问题?父子线程的实现思路?】
ThreadLocal简谈【ThreadLocal解决了什么问题?怎么实现的?为什么采取弱引用?弱引用导致了什么问题?怎么解决这个问题?父子线程的实现思路?】
2025-10-29 17:56:07
714
原创 JUC 之 Executor框架【Executor框架是如何设计的?解决了什么问题?其提供的5中线程池是怎么工作的?有哪些缺点?】
Executor框架组成:任务、任务的提交、异步计算的结果。cutors提供的5种线程池:1、fixThreadPool:固定线程数搭配无界队列2、singleThreadPool:单线程+无界队列3、cacheThreadPool:空线程数,无线线程池+无容量队列4、scheduleThreadPool(定时任务线程池):固定线程数+DelayQueue优先级队列。5、singleScheduleThreadPool(定时任务线程池):一个线程数+DelayQueue优先级队列。
2025-10-29 11:28:24
956
原创 JUC 之 ThreadPoolExecutor线程池【核心参数如何协同?线程管理方法在使用上的区别?有哪些方便线程池监控的方法?】
核心参数(corePoolSize, maximumPoolSize, keepAliveTime, milliseconds,runnableTaskQueue, RejectedExecutionHandler)如何协同?核心方法(execute、submit、shutdown、shutdownNow、isShutdown、isTerminaed)如何使用?有哪些线程池监控方法?
2025-10-27 18:37:08
893
原创 JUC 之 ConcurrentHashMap 实现 及 JDK1.7与JDK1.8实现差异
ConcurrentHashMap 1.7分段锁的解决了什么问题?怎么实现的?有哪些缺点?1.8有哪些改进?常用方法的实现思路是怎样的?
2025-10-24 00:37:35
812
原创 JUC 之 AQS【队列同步器、阻塞与唤醒、Condition】
AQS解决了什么问题?ReentrantLock、CountDownLatch是怎么借助AQS实现的?AQS内部是如何实现的?同步器和FIFO队列是如何协同的?线程如何实现阻塞与唤醒?锁释放后是如何通知等待线程的?
2025-10-22 21:48:39
425
原创 JUC 之 ReentrantLock、 读-写锁 (ReentrantReadWriteLock)及与synchronized的异同
ReentrantLock可重入、可响应中断,可实现公平锁、轮询锁、定时锁。读写锁是如何工作的?读写锁如何存储读写状态?写锁如何获取、释放及锁降级?读锁如何获取、释放?建议:如非必要,推荐使用synchronized,因为synchronized是隐式调用,不存在ReentrantLock显示调用忘记释放锁的情况,其次,synchronized是jdk内置的,如后续jdk有优化,可以在不改造代码的前提下使用到。
2025-10-17 17:55:30
760
原创 JVM 之 锁优化(自旋锁 适应性自旋 锁消除 锁粗化 轻量级锁 偏向锁)
自旋锁:解决频繁的线程切换。适应性自旋: 解决自旋锁不够灵活锁粗化:解决对同一对象一连串细碎操作连续加锁带来的线程切换开销锁消除:解决确定无竞争时,同步带来的开销偏向锁:解决无竞争时的同步代码的轻量级锁重复进入时的CAS开销轻量级锁:利用CAS解决互斥量带来的开销
2025-10-16 00:45:32
1084
原创 IDE(IntellijIdea )非Maven项目打 运行包 Jar包
IDE(IntellijIdea )非Maven项目打 运行包 Jar包
2024-11-22 14:31:49
2341
原创 记一个RequestContextHolder.getRequestAttributes()空指针问题
记一个RequestContextHolder.getRequestAttributes()空指针问题
2024-11-07 17:07:57
719
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅