摘要:
上图是 set 家族整体的结构, set 继承于 Collection 接口,是一个「不允许出现重复元素,并且无序的集合」. HashSet 是「基于 HashMap 实现」的,底层「采用 HashMap 来保存元素」 元素的哈希值是通过元素的 hashcode 方法 来获取的, HashSet 首 阅读全文
摘要:
1.ArrayList 是实现了基于「数组」的,存储空间是连续的。LinkedList 基于「链表」的,存储空间是不连续的。(LinkedList 是双向链表) 2.对于「随机访问」 get 和 set ,ArrayList 觉得优于 LinkedList,因为 LinkedList 要移动指针。 阅读全文
摘要:
java 是一门「开源的跨平台的面向对象的」计算机语言. 跨平台是因为 java 的 class 文件是运行在虚拟机上的,其实跨平台的,而「虚拟机是不同平台有不同版本」,所以说 java 是跨平台的. 面向对象有几个特点: 1.「封装」 两层含义:一层含义是把对象的属性和行为看成一个密不可分的整体, 阅读全文
摘要:
JMM 就是 「Java内存模型」(java memory model)。因为在不同的硬件生产商和不同的操作系统下,内存的访问有一定的差异,所以会造成相同的代码运行在不同的系统上会出现各种问题。所以java内存模型(JMM)「屏蔽掉各种硬件和操作系统的内存访问差异,以实现让java程序在各种平台下都 阅读全文
摘要:
在 Java1.6 之前的版本中,synchronized 属于重量级锁,效率低下,「锁是」 cpu 一个「总量级的资源」,每次获取锁都要和 cpu 申请,非常消耗性能。 在 「jdk1.6 之后」 Java 官方对从 JVM 层面对 synchronized 较大优化,所以现在的 synchron 阅读全文
摘要:
ReentrantLock 意为「可重入锁」,说起 ReentrantLock 就不得不说 AQS ,因为其底层就是「使用 AQS 去实现」的。 ReentrantLock有两种模式,一种是公平锁,一种是非公平锁。 公平模式下等待线程入队列后会严格按照队列顺序去执行 非公平模式下等待线程入队列后有可 阅读全文