摘要:
1、锁的类型 官网把锁分成8类,如下: 第一个是行级别的锁(包括共享锁和排他锁),第二个是表级别的锁(也叫意向锁,也有意向共享锁和意向排他锁),后面三个Record Locks、Gap Locks、Next-Key Locks,把它们叫做锁的算法,也就是分别在什么情况下锁定什么范围。 2、表锁和行锁 阅读全文
摘要:
1、什么是数据库事务 (1)使用场景 比如下单,会操作订单表,资金表,物流表等等,这个时候需要让这些操作都在一个事务里面完成。当一个业务流程涉及多个表的操作的时候,我们希望它们要么是全部成功的,要么都不成功,这个时候就会启用事务。又比如行内转账的这种操作,如果把它简单地理解为一个账户的余额增加,另一 阅读全文
摘要:
1、索引类型 在Innodb里面,索引有三种类型:普通索引,唯一索引(主键索引是特殊的唯一索引)、全文索引。 普通索引(normal):也叫非唯一索引,是最普通的索引,没有任何限制。 唯一索引(unique):要求键值不能重复。主键索引是一种特殊的唯一索引,还多了一个限制条件,要求键值不能为空。主键 阅读全文
摘要:
1、MySQL体系结构 (1)模块详解 Connector:用来支持各种语言和SQL的交互,如java的JDBC。 Management Services & Utilties:系统管理和控制工具,包括备份恢复、MySQL复制、集群等。 Connection Pool:连接池,管理需要缓冲的资源。 阅读全文
摘要:
1、MySQL通信 (1)同步和异步 * 同步:同步通信依赖于被调用方,受限于被调用方的性能。应用操作数据库,线程会阻塞,等待数据库的返回。 * 异步:异步可以避免应用阻塞,但是一个连接就会创建一个线程,线程间切换会占用大量CPU资源。而且异步通信会带来编码的复杂度,一般不建议使用,如果要使用异步, 阅读全文
摘要:
1、1.7版本concurrentHashMap ConcurrentHashMap 和 HashMap 的实现原理是差不多的,但是因为 ConcurrentHashMap 是并发安全的,所以在实现上要比hashmap复杂一些。 在 JDK1.7 的实现上,ConrruentHashMap 由一个个 阅读全文
摘要:
1、线程池的优势 (1)降低创建线程和销毁线程产生的性能开销; (2)提高响应速度,当有新任务需要执行时不需要等待线程创建就可以马上执行; (3)合理的设置线程池大小可以避免因为线程数超过硬件资源瓶颈造成的问题。 2、线程池Api 线程池返回值ExecuterService,用于管理线程池。 jav 阅读全文
摘要:
1、阻塞队列分类 2、阻塞队列原理 基于ReentrantLock和Condition实现阻塞和线程间的通信。 Condition notEmpty = lock.newCondition( ) Condition notFull = lock.newCondition( ) (1)添加元素方法:a 阅读全文
摘要:
Condition 1、Condition概述 对于synchronized,可以结合wait/notify实现线程的通信,Condition则是JUC中提供的一个多线程协调通信的工具类,可以让某些线程等待某个条件(condition),只有满足条件时才会被唤醒。 condition.await( 阅读全文
摘要:
1、Lock接口的实现——并发包锁 (1)ReentrantLock 重入锁,重入锁指线程在获得锁之后,当该线程再次请求获得该锁不需要阻塞,而是可以直接获得锁,同时计数器增加重入次数。不同线程还是会阻塞的。 (2)ReentrantReadWriteLock 重入读写锁,实现了ReadWriteLo 阅读全文