跳至主要內容
JUC-JMM

JMM 简称是 java 内存模型,


HFwas...小于 1 分钟
JUC-synchronized

并发编程三个特性

分别是:

  • 可见性
  • 原子性
  • 有序性

可见性:

  • 有两个线程,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));
}

HFwas...大约 3 分钟
实现 MetaObjectHandler 接口自动填充字段值

实体类字段添加注解

  • 在实体类上添加注解@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;

HFwas...小于 1 分钟
JUC-ThreadLocal详解

简单实用

  • 提供一个简单例子来使用 ThreadLocal
  • 声明 ThreadLocal,比如:private static final ThreadLocal<Object> threadLocal = new NamedThreadLocal<>("logs");
  • 先暂时省略 set 步骤,当需要 threadLocal 的时候,我们通常是:threadLocal.get()

ThreadLocal数据结构


HFwas...大约 3 分钟
JUC-线程池详解

创建线程池

  • 通过 Executor 框架的工具类 Executors 创建线程池
  • 通过 ThreadPoolExecutor 构造函数创建

ThreadPoolExecutor

构造函数

  • ThreadPoolExecutor 有七个参数,其中核心参数有三个:
    • corePoolSize:核心线程数量
    • maximumPoolSize:最大线程池数量
    • workQueue:工作队列
  • 其他参数:
    • keepAliveTime:空闲线程存活时间
    • unit:keepAliveTime 参数的单位
    • threadFactory:线程工厂
    • handler:线程的拒绝策略

HFwas...大约 2 分钟
MySql-日志

redo log

结构

  • redo log日志结构如下图所示:
image-20250518182237011
  • 字段含义:
    • type:该条 redo log 的类型
    • space id:表空间ID
    • page number:页号
    • data:该条 redo log的数据

undo log

bin log


HFwas...小于 1 分钟