摘要: JVM中关于GC参数配置如下: 这样配置以后,发生GC时输出的日志就类似于下面这种格式: 1、Heap before GC 发生GC前的堆信息 (1)par new generation total 1507328K, used 1507328K 年轻代,GC前总共容量1507328K,使用1507 阅读全文
posted @ 2019-02-05 20:02 saiQsai 阅读(441) 评论(0) 推荐(0) 编辑
摘要: 一、事务 1、定义 事务是一组原子性的SQL查询。如果数据库引擎能够成功的对数据库应用该组查询的全部语句,那么就执行该组查询;如果其中有任意一条语句因为崩溃或其他原因无法执行,那么所有的语句都不会执行。也就是说,事务内的语句,要么全部执行成功,要么全部执行失败。 2、特性 事务必须符合ACID特性。 阅读全文
posted @ 2019-02-05 19:53 saiQsai 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 自己实现锁时一般要满足以下几个条件: 1、锁要互斥 2、锁要可重入 3、加锁操作要提供阻塞和非阻塞两种模式 4、提供锁释放操作 5、锁要具备失效机制,避免死锁 用redis的几个简单命令就能实现分布式锁:1、setnxsetnx key val:当且仅当key不存在时,set一个key为val的字符 阅读全文
posted @ 2018-05-06 16:14 saiQsai 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 定义 WeakHashMap实现了Map接口,它比HashMap多了一个引用队列: 为了搞清WeakHashMap的原理,必须先搞清楚ReferenceQueue这个引用队列和其引用的对象Reference: Java中的引用类型 强引用(Strong Reference):强引用是Java中实例化 阅读全文
posted @ 2018-05-05 13:52 saiQsai 阅读(170) 评论(0) 推荐(0) 编辑
摘要: HashMap是无序的:利用迭代器访问HashMap的顺序和其插入的顺序是不一致的。当需要有序访问时,可以使用LinkHashMap。 LinkedHashMap可以认为是HashMap+LinkedList,即它既使用HashMap操作数据结构,又使用LinkedList维护插入元素的先后顺序。 阅读全文
posted @ 2018-05-05 13:46 saiQsai 阅读(399) 评论(0) 推荐(0) 编辑
摘要: HashSet数据结构: 初始化方法: HashSet的增删改查操作都是调用HashMap的方法实现的: LinkedHashSet继承了HashSet 初始化方法: HashMap、LinkedHashMap,HashSet,LinkedHashSet之间的关系: 阅读全文
posted @ 2018-05-05 13:42 saiQsai 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 结构图: Entry的数据结构: put操作: transfer后: 查找元素: 阅读全文
posted @ 2018-05-05 13:38 saiQsai 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 结构图: segment的数据结构: 实际存放元素的HashEntry数组: 初始化: CurrentHashMap的初始化一共有三个参数: initialCapacity:决定CurrentHashMap的初始容量 loadFactor:表示负载参数,决定每个Segment中元素的阈值thresh 阅读全文
posted @ 2018-05-05 13:33 saiQsai 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 在java.util.concurrent包下提供了若干个阻塞队列,主要有以下几个: (1)ArrayBlockingQueue 基于数组实现的一个阻塞队列,在创建ArrayBlockingQueue对象时必须制定容量大小。 (2)LinkedBlockingQueue 基于链表实现的一个阻塞队列, 阅读全文
posted @ 2018-05-05 13:25 saiQsai 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 结构图: ArrayList适合于查询较多的场景,因为查询的时间复杂度是o(1);LinkedList适合于修改插入、删除比较多的场景,因为插入、删除的时间复杂度为o(1)。 ArrayList是基于数组实现的List类,它封装了一个动态的增长的、允许再分配的Object[]数组。 主要结构: 添加 阅读全文
posted @ 2018-05-05 13:15 saiQsai 阅读(151) 评论(0) 推荐(0) 编辑