07 2023 档案
摘要:一、前引 相信大家 MySQL 都用了很久了,各种 join 查询天天都在写,但是 join 查询到底是怎么查的,怎么写才是最正确的,今天我就和大家一起学习探讨一下 二、索引对 join 查询的影响 1. 数据准备 假设有两张表 t1、t2,两张表都存在有主键索引 id 和索引字段 a,b 字段无索
阅读全文
摘要:1. List哪些实现类 Java List一共三个实现类分别是ArrayList、Vector和LinkedList。 (1) ArrayList是最常见用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,
阅读全文
摘要:1. 如何将1千万个数据加到List中 ArraysList可以存下,但是效率低,可以使用LinkedList。 2. 两个1千万List如何找到,A中有,但B中没有的元素。 可以将List转成HashSet,使用HashSet的retainAll方法。retainAll作用是保留集合中与另一个集合
阅读全文
摘要:问题:当出现某些特殊场景,一个事务A需要在未提交之前,一定要读取的是事务B提交的最新数据,该如何处理? 在MySQL中,事务隔离级别:读未提交、读提交、可重复读、串行化。 一、读未提交 读未提交会读到其它线程未提交的脏数据,虽然可以一直读到数据,但大部分都是脏数据,所以无法保证是最新有效的数据。 二
阅读全文
摘要:JDK动态代理:是Java标准库提供的一种动态代理实现方式,基于接口生成代理对象。使用Proxy类和InvocationHandler接口来创建代理对象,被代理的类必须实现接口。 CGlib动态代理:使用CGLib库实现,通过生成目标类的子类来创建代理对象。不需要目标类实现接口,可以直接代理普通类。
阅读全文
摘要:这是一篇学习后的心得分享,在正文之前,我们需要对一些索引的基本概念进行说明讲解。 1. 什么是索引? 索引(在 MySQL 中也叫“键key”)是存储引擎快速找到记录的一种数据结构,通俗来说类似书本的目录,这个比方虽然被用的最多但是也是最恰如其当的,在查询书本中的某个知识点不借助目录的情况下,往往都
阅读全文
摘要:比较简单的是单列索引(b+tree)。遇到多条件查询时,不可避免会使用到多列索引。联合索引又叫复合索引。 b+tree结构如下: 每一个磁盘块在mysql中是一个页,页大小是固定的,mysql innodb的默认的页大小是16k,每个索引会分配在页上的数量是由字段的大小决定。当字段值的长度越长,每一
阅读全文
摘要:SpringBoot自动化装配中,如果有两个AutoConfiguration,A依赖B,这时ConditionalOnBean如何保证顺序使需要的Bean会提前加载 使用@AutoConfigureAfter, 当几个组件加载完成后,再加载当前组件,如:Nacos服务注册自动配置类加载前需要加载:
阅读全文
摘要:原子性:加锁(乐观锁CAS,悲观锁) 原子性是指一个操作或一系列操作要么全部执行成功并且不被中断,要么完全不执行,没有中间状态。在多线程或并发环境下,如果一个操作是原子性的,那么其他线程不会在该操作执行过程中看到该操作的部分结果。原子性是为了保证操作的一致性和正确性。例如,一个转账操作,涉及从一个账
阅读全文
摘要:一、CAP理论 在一个分布式系统(指互相连接并共享数据的节点的集合)中,当涉及读写操作时,只能保证一致性(Consistence)、可用性(Availability)、分区容错性(Partition Tolerance)三者中的两个,另外一个必须被牺牲。 1、CP架构 如下图,当node1发生异常时
阅读全文