MySQL

Java 

核心模块 存储引擎 主要是它的存储引擎,存储引擎是什么呢?就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称

🔍 死锁诊断方法大揭秘!💡

Java 

死锁有时候很隐蔽,可能只在特定条件下触发,所以排查死锁是个技术活 🕵️‍♂️。这里介绍几种超实用的方法,帮你快速找到并解决死锁问题 🚀。 🛠 方法 1:使用 jstack(最常用) jstack 是 Java 自带的工具,可以直接查看线程堆栈,快速发现死锁!🔎 jps -l jstack -

多线程

Java 

线程 线程和进程 进程:正在运行程序的实例 线程:进程中的执行单元,CPU调度的基本单位 并行和并发 并行:同一时间动手做多件事情的能力 并发:同一时间应对多件事情的能力 创建方式 继承Thread类

JVM

Java 

类加载器 类的加载过程:加载 -> 连接 -> 初始化 连接过程:验证 -> 准备 -> 解析 加载过程:获取类的二进制字节流 -> 转换字节流的静态存储结构为运行时数据结构 -> 内存中生成一个class对象,作为数据的访问入口 作用:动态加载 Java 类的字节码( .class 文件)到 JV

MyBatis 的执行流程


配置加载阶段 读取配置文件:加载 mybatis-config.xml(全局配置,如数据源、插件、类型处理器等)。 加载映射文件:解析 Mapper.xml 或注解形式的 SQL 定义,生成 MappedStatement 对象(包含 SQL、参数/结果映射等信息)。 构建 SqlSession

自研数据库路由组件:实现动态数据源切换与分库分表

Java 

为什么需要分库分表? 背景 首先,抽奖活动通常会在短时间内吸引大量用户参与,导致系统瞬时请求量激增。同时,活动有明确的时间范围,需要在活动期间完成。然后还有一点是抽奖活动数据不会长期累积,活动结束后数据量相对来说是稳定的。 引入 业务体量较大,数据增长较快,所以需要把用户数据拆分到不同的库表中去,减