分布式专题-4、多级缓存
1. 什么是多级缓存黑马资料:[[多级缓存]] https://www.bilibili.com/video/BV1LQ4y127n4?p=157&vd_source=c5b2d0d7bc377c0c35dbc251d95cf204 2. JVM 进程缓存 3. Lua 语法4. 多级缓存 5. 缓存同步 5.1. canal[[安装Canal]] 6. 实战经验7. 参考与感谢7.1. 黑马程序员分布式专题-5、负载均衡-Ribbon
框架源码专题-Spring-10、
1. 注册 BPP 的 BD 2. 创建 BPP Bean在 refresh () 的 6. registerBeanPostProcessors () ,将所有 BeanPostProcessor 注册到容器中。注意:只是注册但并未执行 3. 预解析❕%%▶1. 🏡⭐️◼️Autowired 注解完成自动装配功能所需要的方法和执行时机是什么 ?🔜MSTM📝 Autowired 自动装配功能是依靠 AutowiredAnnotationBeanPostProcessor 来完成的,这个 BPP 分别实现了 MergedBeanDefinitionPostProcessor 的 postProcessBeanDefinitionRegistry 方法和 InstantiationAwareBeanPostProcessor 的 postProcessProperties 方法,分别完成注解的预解析和装配动作。◼️⭐️-point-20230223-1834%%在 refresh () 的 11. finishBeanFactoryInitialization(),在实例化之后 ...
1
1. 注册 BPP 的 BD 2. 创建 BPP在 refresh () 的 6. registerBeanPostProcessors () ,将所有 BeanPostProcessor 注册到容器中。注意:只是注册但并未执行 ❕%%1926-🏡⭐️◼️CommonAnnotationBeanPostProcessor 与 AutowiredAnnotationBeanPostProcessor ?🔜MSTM📝 都实现了 MergedBeanDefinitionPostProcessor,在 invokeBeanPostProcessor 中创建 BPP,并执行 postProcessMergedBeanDefinition 方法◼️⭐️-point-202302061926%% 3. LifecycleMetadata 存入%%▶31.🏡⭐️◼️【🌈费曼无敌🌈⭐️第一步⭐️】◼️⭐️-point-20230323-1910%%❕ ^er3o6i 执行 CommonAnnotationBeanPostProcessor 的方法 postProcessMergedB ...
框架源码专题-MySQL-4、锁
1. 行锁、记录锁、临键锁、间隙锁%%▶4.🏡⭐️◼️【🌈费曼无敌🌈⭐️第一步⭐️】◼️⭐️-point-20230412-1210%%❕ ^vafwau 记录锁、临键锁、间隙锁,都是 Mysql 里面 InnoDB 引擎下解决事务隔离性的一系列排他锁。 行级锁的种类主要有三类: Record Lock,记录锁,也就是仅仅把一条记录锁上; Gap Lock,间隙锁,锁定一个范围,但是不包含记录本身; Next-Key Lock:Record Lock + Gap Lock 的组合,锁定一个范围,并且锁定记录本身。 1.1. 查看命令有什么命令可以分析加了什么锁 1select * from performance_schema.data_locks\G; 这条语句,查看事务执行 SQL 过程中加了什么锁。 1.2. 记录锁 - 主键或者唯一索引当我们针对主键或者唯一索引加锁的时候,Mysql 默认会对查询的这一行数据加行锁,避免其他事务对这一行数据进行修改。锁住的是一条记录。而且记录锁是有 S 锁和 X 锁之分的: 当一个事务对一条记录加了 S 型记录锁后,其他事务也可 ...
框架源码专题-MySQL-3、redolog undolog binlog
1. 日志流程图 逻辑日志: 可以简单理解为记录的就是 sql 语句。 物理日志:mysql 数据最终是保存在数据页中的,物理日志记录的就是数据页变更。 只有 Redolog 是物理日志,Binlog 和 Undolog 都是逻辑日志。 2. Binlog逻辑日志 2.1. 记录内容 - DDL 和 DMLbinlog 用于记录数据库执行的写入性操作 (DDL 和 DML)信息,以二进制的形式保存在磁盘中。binlog 是 mysql 的逻辑日志,并且由 Server 层进行记录,使用任何存储引擎的 mysql 数据库都会记录 binlog 日志比如 update T set c=c+1 where ID=2; 这条 SQL,redo log 中记录的是 :xx页号,xx偏移量的数据修改为xxx;binlog 中记录的是:id = 2 这一行的 c 字段 +1 binlog 文件是记录了所有数据库表结构变更和表数据修改的日志,不会记录查询类的操作,比如 SELECT 和 SHOW 操作。 2.2. 记录时机 - 更新完数据页之后更新完成之后,事务提交之前,先写入 binlog c ...
框架源码专题-MySQL-2、MVCC
1. 隔离级别实现原理事务-1、Spring事务(本地事务) 对于「读未提交」隔离级别的事务来说,因为可以读到未提交事务修改的数据,所以直接读取版本链上最新的数据 对于「串行化」隔离级别的事务来说,通过加读写锁的方式来避免并行访问; 对于「读已提交」和「可重复读」隔离级别的事务来说,它们是通过 Read View 来实现的,它们的区别在于创建 Read View 的时机不同。 「读已提交」隔离级别是在「每个语句执行前」都会重新生成一个 Read View 「可重复读」隔离级别是「启动事务时」生成一个 Read View,然后整个事务期间都在用这个 Read View 2. 事务实现原理⭐️🔴%%▶1.🏡⭐️◼️【🌈费曼无敌🌈⭐️第一步⭐️】◼️⭐️-point-20230406-0712%%❕ ^9cpr5j Mysql 里面的事务,满足 ACID 特性。 首先,A 表示 Atomic 原子性,也就是需要保证多个 DML 操作是原子的,要么都成功,要么都失败。那么,失败就意味着要对原本执行成功的数据进行回滚,所以 InnoDB 设计了一个 undo lo ...
Java基础-关键字和接口-7、Throwable
1. 异常结构1.1. Error(错误)定义:Error 类及其子类。程序中无法处理的错误,表示运行应用程序中出现了严重的错误。特点:此类错误一般表示代码运行时 JVM 出现问题。通常有 Virtual MachineError(虚拟机运行错误)、NoClassDefFoundError(类定义错误)等。比如 OutOfMemoryError:内存不足错误;StackOverflowError:栈溢出错误。此类错误发生时,JVM 将终止线程。这些错误是不受检异常,非代码性错误。因此,当此类错误发生时,应用程序不应该去处理此类错误。按照 Java 惯例,我们是不应该实现任何新的 Error 子类的! 1.2. Exception(异常)程序本身可以捕获并且可以处理的异常。Exception 这种异常又分为两类:运行时异常和编译时异常。 2. 异常分类%%▶9.🏡⭐️◼️【🌈费曼无敌🌈⭐️第一步⭐️】◼️⭐️-point-20230321-1604%%❕ ^u110am 2.1. 运行时异常和编译时异常2.1.1. 运行时异常定义:RuntimeException 类及其子类, ...
分布式专题-1、Spring事务(本地事务)
1. 本地事务商品新增功能非常复杂,商品管理微服务在 service 层中调用保存 spu 和 sku 相关的方法,为了保证数据的一致性,必然会使用事务。 1.1. 基本概念事务的概念:事务是逻辑上一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败。 事务的四个特性(ACID): 原子性 (atomicity):“原子”的本意是“不可再分”,事务的原子性表现为一个事务中涉及到的多个操作在逻辑上缺一不可。事务的原子性要求事务中的所有操作要么都执行,要么都不执行。 一致性 (consistency):“一致”指的是数据的一致,具体是指:所有数据都处于满足业务规则的一致性状态。一致性原则要求:一个事务中不管涉及到多少个操作,都必须保证 事务执行之前 数据是正确的,事务执行之后 数据仍然是正确的。如果一个事务在执行的过程中,其中某一个或某几个操作失败了,则必须将其他所有操作撤销,将数据恢复到事务执行之前的状态,这就是回滚。 隔离性 (isolation):在应用程序实际运行过程中,事务往往是并发执行的,所以很有可能有许多事务同时处理相同的数据,因此每个事务都应该与其他事务隔离 ...
框架源码专题-Spring-9、@Lazy
1. 源码流程图https://www.processon.com/diagraming/63fad8c81c6b02464eef690a 2. BD 中设置属性2.1. 使用方法2.1.1. @Component 类上加上@Lazy 注解12345@Lazy@Componentpublic class XXXX { ...} 2.1.2. 在@Configuration 类中配置@Bean 时添加@Lazy 注解12345678@Configurationpublic class XXXX { @Lazy @Bean public XXX getXXX() { return new XXX(); }} 2.1.3. @ComponentScan 配置延迟加载使用包扫描的配置方式如下: 12345@ComponentScan(value = "XXX.XXX", lazyInit = true)@Configurationpublic class XXXX ...
面试专题-2、Spring事务
1. Spring 的事务传播行为实现原理%%▶2.🏡⭐️◼️【🌈费曼无敌🌈⭐️第一步⭐️】◼️⭐️-point-20230413-1415%%❕ ^27ji6t Spring 的事务信息是存在 ThreadLocal 中的,所以一个线程永远只能有一个事务❕%%2217-🏡⭐️◼️Spring 事务的实现原理◼️⭐️-point-20230214-2217%% **融入 (NESTED)**:当传播行为是融入外部事务则拿到 ThreadLocal 中的 Connection、共享一个数据库连接共同提交、回滚; **创建新事务 (REQUIRES_NEW)**:当传播行为是创建新事务,会将嵌套新事务存入 ThreadLocal、再将外部事务暂存起来;当嵌套事务提交、回滚后,会将暂存的事务信息恢复到 ThreadLocal 中 1.1. 融入try { 3. 内嵌: 判断 ThreadLocal 是否已经有 Connection, 有的话就说明是一个内嵌事务, 判断当前事务的传播行为 如果是融入: =& ...


