...大约 5 分钟
...小于 1 分钟
JMM 简称是 java 内存模型,
...小于 1 分钟
并发编程三个特性
分别是:
- 可见性
- 原子性
- 有序性
可见性:
- 有两个线程,B线程对共享变量的修改A线程可以获取到共享变量的最新值
代码demo展示效果:
private static boolean testBoolean = true;
public static void main(String[] args) throws InterruptedException {
new Thread(()->{
while(testBoolean){
}
}).start();
Thread.sleep(2000);
new Thread(()->{
testBoolean = false;
}).start();
System.out.println(String.format("testBoolean = %s", testBoolean));
}
...大约 3 分钟
...小于 1 分钟
...小于 1 分钟
实体类字段添加注解
- 在实体类上添加注解
@TableField(fill = FieldFill.INSERT)
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
@TableField(fill = FieldFill.INSERT)
private String createBy;
@TableField(fill = FieldFill.INSERT_UPDATE)
private String updateBy;
...小于 1 分钟
简单实用
- 提供一个简单例子来使用 ThreadLocal
- 声明 ThreadLocal,比如:
private static final ThreadLocal<Object> threadLocal = new NamedThreadLocal<>("logs");
- 先暂时省略 set 步骤,当需要 threadLocal 的时候,我们通常是:threadLocal.get()
ThreadLocal
数据结构
...大约 3 分钟
创建线程池
- 通过 Executor 框架的工具类 Executors 创建线程池
- 通过 ThreadPoolExecutor 构造函数创建
ThreadPoolExecutor
构造函数
- ThreadPoolExecutor 有七个参数,其中核心参数有三个:
- corePoolSize:核心线程数量
- maximumPoolSize:最大线程池数量
- workQueue:工作队列
- 其他参数:
- keepAliveTime:空闲线程存活时间
- unit:keepAliveTime 参数的单位
- threadFactory:线程工厂
- handler:线程的拒绝策略
...大约 2 分钟
redo log
结构
- redo log日志结构如下图所示:
- 字段含义:
- type:该条 redo log 的类型
- space id:表空间ID
- page number:页号
- data:该条 redo log的数据
undo log
bin log
...小于 1 分钟