-
JVM:垃圾标记阶段算法之引用计数法
垃圾标记阶段 对象存活判断。 引用计数法 Reference Counting。 对每个对象保存一个整型的引用计数器属性。用于记录对象被引用的情况。 对于一个对
-
JVM:运行时数据区之程序计数器
名称 程序计数器、PC寄存器、Program Counter Register。 作用 用来存储指向下一条指令的地址,也即:将要执行的指令代码。由执行引擎取下一
-
JVM:类加载器
说明 基于Java11。 系统类加载器 ClassLoader systemClassLoader = ClassLoader.getSystemClassLo
-
JVM:类的加载过程
加载 Loading 通过一个类的全限定名获取定义此类的二进制字节流 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构 在内存中生成一个代表这个类
-
Java 中的 GC Roots
判断是否会被回收 Java使用的是可达性分析法,为了解决引用计数法的循环引用问题。 引用计数法 枚举根节点做可达性分析(根搜索路径) 基本思想 以GC Ro
-
单例双重校验为什么还要加 volatile
单例代码 双重校验 + volatile public class Singleton { //防止在new对象时指令重排序 private
-
为什么匿名内部类引用外部局部变量必须要加 final 关键字
Java 代码 public class Test { public static void main(String[] args) {
-
为什么匿名内部类引用外部局部变量不用加 final 也不报错
Java 代码 匿名内部类引用了局部变量,编写代码时没有用final修饰也没有报错,因为编译器会检查后续有没有写操作,如果有,则在编译器时就会报错(包括匿名内部
-
MySQL 性能优化之 explain Extra 字段
创建表 create table s1 ( id int auto_increment, key1 varchar(100), key2
-
MySQL 性能优化之 explain type 字段
创建表 create table s1 ( id int auto_increment, key1 varchar(100), key2
-
MySQL 索引条件下推
索引条件下推 Index Condition Pushdown简称ICP,也称索引条件下推。 MySQL中默认开启了索引下推。 开启 set optimizer
-
MySQL 索引失效的几种场景
模糊查询 模糊查询,头部模糊匹配。(尾部模糊匹配不会失效) 注意:如果覆盖索引能够使用,头部模糊查询也会走索引。 create table t_user(id
-
MySQL MVCC 多版本并发控制
当前读 读取的是记录的最新版本,读取时还要保证其他并发事务不能修改当前记录,会对读取的记录进行加锁。 select...lock in share mode,
-
MySQL 性能分析之慢查询日志
查看是否开启 show variables like 'slow_query_log%'; 输出: mysql> show variables like
-
MySQL 行级锁演示
准备数据 create table tb_user(id int, name varchar(25), data int, primary key(id));
-
MySQL 锁
锁的分类 按锁的粒度来分: 全局锁:锁定数据库中的所有表 表级锁:每次操作锁住整张表 行级锁:每次操作锁住对应的行数据 全局锁 可读不可写。 使用场景 全局
-
SQL 优化
insert 批量插入,500-1000条一批次 手动提交事务 主键顺序插入 大批量数据插入使用MySQL提供的load指令 update where条件
-
数据库表的设计规范-范式
简介 Normal Form,简称NF。 在关系型数据库中,关于数据表设计的基本原则、规则就称为范式。 一张数据表的设计结构需要满足的某种设计标准的级别。 范式
-
Lombok MapStruct cannot find symbol
现象 Lombok与MapStruct一起使用时,无法获取到getter、setter方法。 解决方法 Maven插件中添加处理Lombok注解的插件。 <
-
Windows 子系统初始化报错:参考的对象类型不支持尝试的操作
错误详情 Installing, this may take a few minutes... 参考的对象类型不支持尝试的操作。 Please create a