01多线程基础 多线程基础进程和线程 进程是指一个内存中正在运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程。进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建、运行到消亡的过程。 线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程 中是可以有多个线程的,这个应用程序也可以称之为多线程程序 线程可以创建和撤 2025-10-26 04Java > 多线程
02同步容器 同步容器 同步容器的单个操作都是线程安全的,但是组合操作需要手动加锁,例如遍历删除。 同步容器由于对所有的方法都加了锁会有效率问题, 所以推荐使用并发容器。 同步容器包装类1List<String> synchronizedList = Collections.synchronizedList(new ArrayList<>()); SynchronizedL 2025-10-26 04Java > 多线程
03线程池 线程池ThreadLocal 用于为每个线程提供独立的变量副本,实现线程隔离,避免共享变量的线程安全问题。它在高并发场景下广泛应用 实现原理 每个 Thread 对象内部维护一个 ThreadLocalMap,本质是一个定制化的哈希表。 ThreadLocalMap 的键(Key)是 ThreadLocal 实例,值(Value)是线程的变量副本。ThreadLocal 实例是 弱引用(WeakR 2025-10-26 04Java > 多线程
04JUC JUCATOMIC 提供了一系列原子操作类,用于在多线程环境下实现高效、无锁的线程安全操作。这些类基于CAS(Compare and Swap)机制,避免了传统锁机制的性能开销,适用于低到中等竞争场景 核心原理 CAS机制:通过硬件指令(如cmpxchg)实现无锁并发。基本流程为: 读取内存中的当前值(current)。 计算新值(new)。 若内存值仍为current,则更新为new;否则重试 2025-10-26 04Java > 多线程
1.MySql基础 数据库三范式 第一范式:当关系模式R的所有属性都不能在分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF。满足第一范式是关系模式规范化的最低要求,否则,将有很多基本操作在这样的关系模式中实现不了。(属性不可分) 第二范式:如果关系模式R满足第一范式,并且R的所有非主属性都完全依赖于R的每一个候选关键属性,称R满足第二范式,简记为2NF。(非主键属性,完全依赖于主键属性) 第三范式:设R是 2025-10-26 05数据库 > MySQL
2.MySql读写分离及分库分表 主从复制 主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从数据库上,然后在从数据库上对这些日志进行重新执行,从而使从数据库和主数据库的数据保持一致。 主要涉及三个线程:binlog 线程、I/O 线程和 SQL 线程。 binlog 线程(主库) :负责将主服务器上的数据更改写入二进制日志(Binary log)中。 I/O 线程(从库) :负责从主服务器 2025-10-26 05数据库 > MySQL
3.MySql锁与事务 锁按模式分类乐观锁 业务实现 12-- 如果更新失败则重新尝试update value = value where version = curversion 悲观锁 select…for update 注意weher条件要明确指定主键 对符合 WHERE 条件的行加锁(默认行级锁) 必须在事务中(BEGIN 或 START TRANSACTION)使用,否则锁会立即释放。 如果 WHER 2025-10-26 05数据库 > MySQL
4.MySql日志 日志错误日志(err log) 记录了运行过程中遇到的所有严重的错误信息,以及 MySQL每次启动和关闭的详细信息。 二进制日志(bin log) 默认是关闭的,需要通过配置:log-bin=mysql-bin进行开启。其中mysql-bin是binlog日志文件的basename,binlog日志文件的名称:mysql-bin-000001.log binlog用于实现mysql主从 2025-10-26 05数据库 > MySQL
5.mysql8新特性 跳跃索引 MySQL 8.0.13 版本对于range查询,引入了索引跳跃扫描(Index Skip Scan)优化,支持不符合组合索引最左前缀原则条件下的SQL,依然能够使用组合索引,减少不必要的扫描。 MySQL 8.0推出的适合联合索引左边列唯一值较少的情况的一种优化策略。 限制条件 查询只能涉及一张表,多表关联无法使用该特性 查询SQL不能使用 GROUP BY 或者 DISTINCT子句 2025-10-26 05数据库 > MySQL
6.mysql调优 MySql调优索引 重复性较强的字段, 不适合添加索引 性能监控 show status like “handler_read%” 查看用到索引的次数 show status like ‘last_query_coat’ 最后一次查询所耗费的成本 set profiling = 1; 开启监控 show profiles (query n) 根据query id查看 2025-10-26 05数据库 > MySQL