11 2020 档案
MySQL中的事务原理和锁机制
摘要:本文主要总结 MySQL 事务几种隔离级别的实现和其中锁的使用情况。因为 Mysql 几种存储引擎中 InnoDB 使用的最多,同时也支持事务和锁,所以这篇主要说得是 InnoDB 引擎下的锁机制与事务。 在开始前先简单回顾事务几种隔离级别以及带来的问题。 四种隔离级别:读未提交、读已提交、可重复读 阅读全文
posted @ 2020-11-30 20:32 萌新J 阅读(5386) 评论(0) 推荐(7)
索引基础知识总结
摘要:定义 一句话总结,索引是一个排好序的用于快速查找的数据结构。这句话说明了索引的三个特点,第一个是有序的,已经将索引列数据排好序了;第二个是快速查找,这就意味着使用索引可以快速定位到符合条件的数据;第三个是一个数据结构。我们平时使用 SQL 语句查询数据时,比如执行 select * from stu 阅读全文
posted @ 2020-11-26 10:40 萌新J 阅读(801) 评论(1) 推荐(2)
等待-唤醒模型的几种实现
摘要:1、wait-notify 1.0 就存在,最初始的实现方式。 wait()、notify()、notifyAll() 是 Object 类中的方法,所以使用范围是最广的,所有对象都可以使用这个方式再搭配 synchronized 关键字实现等待-唤醒模型。 缺点:1、nofity() 只能将调用当 阅读全文
posted @ 2020-11-22 17:21 萌新J 阅读(245) 评论(0) 推荐(0)
暂停当前线程方法改进
摘要:如果我们想要当前线程暂停2s,常用的方法是下面这种 try { Thread.sleep(2*1000); }catch(Exception e) {e.printStackTrace();} 这种方式是以毫秒为单位进行计算的,在需要的时间比较长时就需要进行计算,像上面这种乘法,如果比较复杂的话sl 阅读全文
posted @ 2020-11-22 16:23 萌新J 阅读(224) 评论(0) 推荐(0)
线程池知识点详解
摘要:引入 为什么使用线程池? 在连接数少的情况下,对于需要线程的地方我们只需要直接新建线程来处理就可以了,但是在并发量高的场景下,频繁的线程创建、销毁是非常消耗资源的,所以针对于这样的场景可以使用线程池,让一开始就创建好线程,在需要新连接进来需要线程时就从线程池中拿一条执行,完成后再将线程放回线程池,等 阅读全文
posted @ 2020-11-22 15:56 萌新J 阅读(407) 评论(0) 推荐(0)
JUC锁种类总结
摘要:在并发编程中有各种各样的锁,有的锁对象一个就身兼多种锁身份,所以初学者常常对这些锁造成混淆,所以这里来总结一下这些锁的特点和实现。 乐观锁、悲观锁 悲观锁 悲观锁是最常见的锁,我们常说的加锁指的也就是悲观锁。顾名思义,每次修改都抱着一种 "悲观" 的态度,每次修改前都会认为有人会和他一样执行同一段代 阅读全文
posted @ 2020-11-21 15:16 萌新J 阅读(535) 评论(0) 推荐(0)
常见容器的重要知识点与多线程下的安全问题
摘要:List ArrayList 知识点 1、1.7之前默认初始容量是10,1.8开始是0,后面执行 add 方法后才会将内部用于存储数据的数组容量初始化为10,这样可以节省内存空间,防止创建后一直没有使用浪费空间。 2、扩容时机是添加的数据超过当前数组可以存储的容量时,会扩容为原来的1.5倍。 3、A 阅读全文
posted @ 2020-11-19 16:59 萌新J 阅读(240) 评论(0) 推荐(0)
等待-唤醒模型中的wait、await应使用while判断
摘要:等待-唤醒模型中,之前一直使用if进行条件判断是否达到阀值来进行阻塞,比如下面的例子 1 public class CoTest01 { 2 public static void main(String[] args) { 3 SynContainer container = new SynCont 阅读全文
posted @ 2020-11-10 20:32 萌新J 阅读(628) 评论(0) 推荐(0)
DCL单例模式中的缺陷及单例模式的其他实现
摘要:DCL:Double Check Lock ,意为双重检查锁。在单例模式中懒汉式中可以使用DCL来保证程序执行的效率。 1 public class SingletonDemo { 2 private static SingletonDemo singletonDemo = null; 3 priv 阅读全文
posted @ 2020-11-09 16:37 萌新J 阅读(522) 评论(0) 推荐(0)
AQS全解析
摘要:什么是AQS? AQS是JUC内容的基石,它本质上是一个抽象类,定义了多线程下资源争夺与释放的规则和过程,许多实现类都是继承于AQS,使用AQS的骨架。 AQS的原理 AQS总体上来看是由一个FIFO(先进先出)队列和一个state属性配合组成的。FIFO用来存储线程结点的,state属性用来表示资 阅读全文
posted @ 2020-11-08 11:33 萌新J 阅读(1942) 评论(0) 推荐(1)
多线程基础概念总结
摘要:单线程下的程序,是一段代码一段代码按顺序执行,而一些代码在执行时往往用不到 CPU,这样CPU就得不到充分的利用,效率非常低下。所以 "并发编程" 这一概念就产生了,我们可以在没有用到 CPU 的时候去执行其他代码来提高总体代码的执行效率。比如在修改文件时,CPU 需要先等待读取文件,然后才能进行修 阅读全文
posted @ 2020-11-05 20:17 萌新J 阅读(291) 评论(0) 推荐(0)