04 2020 档案
摘要:众所周知的几个知识点 volatile保证了可见性和有序性,仅在32位long、double类型保证原子性; synchronized保障了原子、有序、可见性,实际上是内部锁; 显式的可重入锁ReentrantLock或者一些工具类如Semaphore, CountDownLatch保障原子、有序、
阅读全文
摘要:要点 ConcurrentHashMap是HashMap的线程安全版本; 不允许[key,value]为null; 比Hashtable锁粒度更细; 采用CAS和synchronized来保证并发安全。数据结构跟HashMap1.8的结构一样,数组+链表/红黑二叉树; 负载因子0.75; 默认初始化
阅读全文
摘要:在原子类持续累加或累减时,比如AtomicInteger的incrementAndGet时,是不存在ABA问题的,但compareAndSet或者updateAndGet是可能存在ABA问题,像AtomicBoolean或AtomicLong等这样的变量在多线程修改时,也都存在ABA的问题。为了理解
阅读全文
摘要:ArrayBlockingQueue是一个基于数组实现的有界的阻塞队列。 几个要点 ArrayBlockingQueue是一个用数组实现的队列,所以在效率上比链表结构的LinkedBlockingQueue要快一些,但是队列长度固定,不能扩展,入列和出列使用同一把锁。LinkedBlockingQu
阅读全文
摘要:ArrayList是非线程安全的,Vector虽是线程安全的,但由于简单粗暴的锁同步机制,性能较差。而CopyOnWriteArrayList则提供了另一种不同的并发处理策略(当然是针对特定的并发场景)。 很多时候,我们的系统应对的都是读多写少的并发场景。CopyOnWriteArrayList容器
阅读全文
摘要:几个要点 LinkedList的底层数据结构是双向链表;LinkedList继承于AbstractSequentialList的双向链表,实现List接口,因此也可以对其进行队列操作,它也实现了Deque接口,所以LinkedList也可当做双端队列使用;LinkedList是非同步的;和 Arra
阅读全文
摘要:几个要点 ArrayList非线程安全; ArrayList基于动态数组,是一种线性表。随机访问友好,其可以保证在 O(1) 复杂度下完成随机查找操作,插入和删除效率低; ArrayList 实现了RandmoAccess接口,即提供了随机访问功能。RandmoAccess是java中用来被List
阅读全文
摘要:几个要点 HashTable底层的数据结构基于链表(O(n))的数组; HashTable不允许空key和空value; HashMap元素非按照写入时顺序排序,而是按Key的hash取n模来排序(算法优化采用(n - 1) & hash) HashTable线程安全类,但它是直接在方法上使用syn
阅读全文
摘要:几个要点 HashMap底层的数据结构基于链表(O(n))和红黑树(O(logN))的数组; HashMap允许空key和空value; HashMap元素非按照写入时顺序排序,而是按Key的hash取n模来排序(算法优化采用(n - 1) & hash) HashMap非线程安全类,Hashtab
阅读全文
摘要:整理出近几年的随笔笔记分类。 #Java多线程开发系列 Java多线程开发系列-基础 Java多线程开发系列-线程间协作 Java多线程开发系列-线程安全设计 Java多线程开发系列-线程活性故障 Java多线程开发系列-线程管理 CompletableFuture组合异步编程 Swing中的线程并
阅读全文
摘要:Selenium 是目前用的最广泛的Web UI 自动化测试框架,核心功能就是可以在多个浏览器上进行自动化测试。支持多平台:windows、linux、MAC ,支持多浏览器:ie、ff、safari、opera、chrome,多语言C、 java、ruby、python...Selenium ID
阅读全文