05 2023 档案
摘要:GEO Geolocation 简写形式,表示一个地址位置,存储地理位置的数据类型,在 3.2 版本增加这种数据类型 底层是 zset 实现,所以删除成员要用 zrem 命令 GEOADD:GEOADD key longitude latitude member [longitude latitud
阅读全文
摘要:springcloud 和 springboot https://spring.io/projects/spring-cloud#overview 更详细的 https://github.com/spring-cloud/spring-cloud-release/wiki/Supported-Ver
阅读全文
摘要:1. 全局配置文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "https://mybatis.org/dtd/mybatis
阅读全文
摘要:General 命令 作用 使用 描述 keys * 模糊搜索 keys qwe* 搜索 qwe 打头的 exists key 判断 keys 是否存在 exists mykey mykey 是否存在 type key 查看 key 的类型 type mykey del key 删除 key del
阅读全文
摘要:Vertor 如果初始化不指定长度,长度默认为 10 初始化后,数组不为空,就设置好了长度和扩容增量,ArrayList 是第一次 add ,HashMap 第一次 put 才设置长度 如果创建实例时没有指定扩容增量,默认每次扩容后长度变为原来的 2 倍;如果指定了增量,每次扩容后,长度变为原来的长
阅读全文
摘要:成员变量和构造方法 transient int size = 0; // 元素个数 transient Node<E> first; // 第一个节点 transient Node<E> last; // 最后一个节点 // 无参构造 public LinkedList() { } // 有参构造,
阅读全文
摘要:成员变量 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // 数组默认长度 static final int MAXIMUM_CAPACITY = 1 << 30; // 数组长度最大值 static final float DEFAULT_
阅读全文
摘要:成员变量和构造方法 private static final Object[] EMPTY_ELEMENTDATA = {}; private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; 定义了两个空数组成员变量,这两个
阅读全文
摘要:Collection 继承关系 Map 继承关系 数组 链表 红黑树 二叉树:和链表类似,链表一个节点只有一个子节点(下一个节点),而二叉树就是可以有两个子节点,不能超过2,超过就是多叉树了 平衡二叉树:任意节点的左子树和右子树的高度之差的绝对值不超过 1 二叉搜索树:任意节点,左子树中所有节点的值
阅读全文
摘要:工作流程 提交任务时,如果线程池当前线程数量小于核心线程数时,直接创建线程来处理任务(线程池初始不会创建线程,当有任务提交才创建) 当线程池线程数量达到核心线程数,任务进入队列 当队列满了不能继续放时,再次创建线程来处理任务 这时的线程叫救急线程 当救急线程处理完任务空闲时,达到存活时间后会销毁救急
阅读全文
摘要:创建线程方式 继承 Thread 实现 Runnable 实现 Callable,线程也能有返回值,必须搭配线程池或 FutureTask 使用 Callable 示例 FutureTask<Integer> futureTask = new FutureTask<>(() -> 123); new
阅读全文
摘要:产生背景 已经有了 ReentrantLock ,为什么还来一个 ReentrantReadWriteLock? ReentrantLock 是独占锁,哪怕所有线程都是读操作,其实不用加锁,但是 ReentrantLock 一次还是只能让一个线程获取,ReentrantReadWriteLock 就
阅读全文
摘要:类结构 public class ReentrantLock implements Lock, java.io.Serializable { // 有个 Sync 的属性(是内部类 Sync,就是 AQS) private final Sync sync; // Sync 继承 AQS abstra
阅读全文
摘要:属性 public abstract class AbstractQueuedSynchronizer extends AbstractOwnableSynchronizer implements java.io.Serializable { // 头节点 private transient vol
阅读全文
摘要:线程等待和唤醒三种方式 方式 等待 唤醒 描述 Object wait notity/notifyAll 必须用在 synchronized 里,需要先等待再唤醒 Condition await singal 必须用在 Lock 块中,需要先等待再唤醒 LockSupport park unpark
阅读全文
摘要:转义字符 -- '_' 在mysql中是表示任一字符,下面查的是名字等于 *Aaaa 的 SELECT * FROM USER WHERE NAME = '_Aaaa'; -- 如果就要查名字是 _Aaaa 的人需要使用转移字符,把_当成普通字符 SELECT * FROM USER WHERE N
阅读全文
摘要:配置参数 long_query_time 的值(默认是10秒),超过这个值的就会被是为慢查询,后面可以根据 EXPLAIN 来跟踪 默认是关闭的。如果打开超过阈值的会被记录,所以建议在调优的时候才打开这个参数 -- 查看慢查询是否开启 show variables like 'slow_query_
阅读全文
摘要:索引情况 -- 查询冗余索引(比如对于 name 字段创建了一个单列索引,有创建了一个 name 和 code 的联合索引) select * from sys.schema_redundant_indexes; -- 查询未使用过的索引 select * from sys.schema_unuse
阅读全文
摘要:连接查询 原理涉及到 index nested-loop join , block nested-loop join ,join buffer size ,hash join(mysql8)等,感觉没必要记那么多 需要知道会一次性把驱动表的数据加载到内存中(如果 join buffer size 放
阅读全文
摘要:一条 sql 的执行,会生成一个执行计划,这个执行计划是 优化器 认为最优的,然后执行器再执行这个执行计划 执行计划只是优化器自认为最优,不见得就是最优的 执行计划里面包括:可用的索引,真正用到的索引,表的读取顺序,每张表有多少行被优化等等 EXPLAIN 和 DESCRIBE 效果一样 EXPLA
阅读全文
摘要:范围条件放最后面,不管单列还是多列索引,把能过滤最多的索引放前面 用不用索引最终都是优化器决定的,EXPLAIN json 格式里的执行成本决定 最左匹配,如果是联合索引,查找索引树的时候,只能根据第一个索引才能找到第二个第三个,如果顺序没对就不会走索引 -- 联合索引(name, code, ad
阅读全文
摘要:回表 只查询一次索引得不到想要的数据,典型的场景就是非聚簇索引查询:先拿到主键ID,再根据id查询一次得到数据(再次查询这就是回表) 索引覆盖:根据普通索引查询不回表就能得到数据 -- 联合索引(age, addr) select age, addr from t_user where age >
阅读全文
摘要:列是唯一的,或有唯一约束(alibaba 规范指出只要是唯一的必须加索引,哪怕是多列组合是唯一的也要添加一个多列索引) 频繁作为 where 条件的字段 经常 group by 或 order by 的字段(对 select 结果集再次索引才能再次得到一个最终结果集) distinct 字段 upd
阅读全文
摘要:思路 是否存在周期波动(如果是云数据库,控制台能看到),如果是,分析高峰,适当加缓存 加了缓存仍没有解决问题,开启慢查询,并使用 EXPLAIN 分析慢 sql 索引情况,也可通过 profile 查看每个步骤时间成本 分析结果如果是等待时间长,对数据库参数进行调优(连接池等) 分析结果如果是 sq
阅读全文
摘要:表锁:InnoDB 支持行锁,不代表着就不支持表锁 表锁的 S 和 X 锁,MyISAM 的锁(不建议在 InnoDB 中使用) -- 查看当前有表锁的表 show open tables where in_use > 0; -- 给表加 S 锁(所有事务都能读,所有事务都不能写) lock tab
阅读全文
摘要:ACID Atomicity:原子性(UNDO LOG实现),一组操作要么都成功,要么都失败 Consistency:一致性(UNDO LOG实现),从一个合法状态变为另一个合法状态(语义上不是语法上)。比如转账之后余额为负数,虽然也能守恒,但是明显不合法。或者转账时A账户钱少了,B账户钱没多,也是
阅读全文
摘要:内存和磁盘每次交互都是完整的页,数据页里面存放的是行(不仅仅是数据库的数据行,还有行格式等) 页(16k,计算机与内存的最小单位)的上层单位还有区(一个区存放64个页,64*16k = 1024k,刚好 1M),区上面是段(一个或多个区组成),段上面是表空间(一个或多个段组成) 行格式 show t
阅读全文
摘要:存储引擎 |引擎|特性|文件| |--|--|--| |InnoDB|默认,支持事务,支持外键,支持行锁和表锁|.frm 文件存储表结构.ibd 文件存储数据和索引| |MyISAM|不支持事务,不支持外键,只支持表锁不支持行锁专门维护了一个常量保存每个表的总记录数(count 很快)MyISAM
阅读全文
摘要:数据定义语言分类 | 类型 | 解释 | 备注 | | | | | | DDL | 数据定义语言 | 创建修改库、表、视图、索引、约束等CREATE、DROP、ALTER 等 | | DML | 数据操作语言 | 数据行的增删改INSERT 、 DELETE 、 UPDATE 等 | | DQL |
阅读全文