循环依赖 如何解决:三层缓存(1.完整Bean 2.半成品Bean 3.Bean工厂) 为什么需要三级缓存,二级缓存不行: 三级缓存(存储用于创建代理对象的 ObjectFactory)…
Spring容器启动 Bean生命周期 容器启动: 1.创建 ApplicationContext 2.加载 Bean 定义(读取配置文件.java类) 3.创建 BeanDefinition 4.实…
导致声明式事务失效的场景 1.方法非 public 修饰:代理(JDK or CGLib)默认都是代理public方法(接口中的方法都是public的) 2.rollbackfor设置不当 3.事务传…
spring事务的传播机制 1.require(默认) 作用:如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新事务。 场景:大多数业务方法都使用此传播行为。 解释:如果 methodA …
AOP实现方式 参考文章 原理:在ioc中创建了一个原对象的代理对象,而这个对象是AOP增强过的。 动态代理 JDK 1.1 实现接口 interface UserService{ vo…
MVCC 实现:undolog + 隐藏字段(trx_id, roll_prt)+ readView(活跃事务ids, 最小活跃事务id, 预分配id, 创建者事务id)只记录这一瞬间的readVie…
1. 如何做SQL优化 1.1 定位慢SQL 开启慢查询 slow_query_log = 1 long_query_time = x(s) 1.2 优化 1.2.1 查询优化 指定具体列代替* 1.…
Java中的引用有四种,分为强引用(Strongly Reference)、软引用(Soft Reference)、弱引用(Weak Reference)和虚引用(Phantom Reference)…
整体流程如下: 1. 类加载检查 分为两种情况类已经被加载过 和 未被加载过 1.1 未加载过 涉及三个阶段:加载、链接、初始化 加载: 通过类加载器将类文件(.class)加载到内存中。 链接: 验…
前言 面渣逆袭 Java 基础篇 原文戳链接 Java概述 1. 什么是Java C++(--):吸收了C++的优点,并且抛弃了指针、多继承等概念 是一门面向对象语言 2. Java特点 面向对象(封…