
Java
shida_csdn
Keep Running ...
展开
-
EnumMap 源码分析
一、类图 二、源码分析 a. EnumMap 的 Key 是 Enum 类型的,遍历返回的集合 keySet、values、entrySet 保持了 key 的自然顺序 ( key 在 enum 类中被声明的顺序) b. Iterator 迭代是弱一致的,即不会抛出 ConcurrentModificationExc...原创 2018-07-23 11:08:15 · 239 阅读 · 0 评论 -
ArrayList
一、类图关系 二、要点记录1. 与 Vector 功能几乎一样, 但是 ArrayList 是线程不安全的2. 添加元素前,如果已知要添加元素的数量,调用 ensureCapacity 函数提前准备容量,能降低扩容次数3. 迭代器 fail-fast4. ArrayList 默认容量为 10,可以在构造函数中指定容量,没有增长步长参数,直接扩大为原来的1....原创 2018-08-04 16:12:51 · 192 阅读 · 0 评论 -
AbstractSequentialList 与 LinkedList
一、类图关系 二、要点记录1. AbstractSequentialList 继承自 AbstractList,是 AbstractList 其中一类(RandomAccess)的对立面 也就是说,AbstractSequentialList 不是 RandomAccess 的,是顺序访问的2. LinkedList 不止实现了 List 接口,而且实现...原创 2018-08-04 16:52:10 · 330 阅读 · 0 评论 -
ArrayDeque
一、类图关系 二、要点分析1. ArrayDeque 不允许空元素 null2. 当用作栈时,比 Stack 快,当用作队列时,比 LinkedList 快 一是因为它基于循环数组(只需操作索引),二是没有使用 Synchronized 修饰方法(非线程安全)This class is likely to be faster than Stack ...原创 2018-08-04 18:47:34 · 975 阅读 · 0 评论 -
PriorityQueue
一、类图关系 二、要点1. PriorityQueue 是基于堆的,基于 Comparable/Comparator,不允许 null2. 无界队列,容量自动调整3. 最小堆,队头返回最小值4. 迭代器不保证顺序5. 非线程安全,如需线程安全,使用 PriorityBlockingQueue6. 默认初始容量 117. 使用数组保存树结...原创 2018-08-05 10:58:38 · 245 阅读 · 0 评论 -
TreeSet、HashSet、LinkedHashSet
一、类图 二、要点1. TreeSet 是基于 TreeMap 实现的,内置了 NavigableMap,构造函数直接使用 TreeMap /** * The backing map. */ private transient NavigableMap<E,Object> m; /** * Con...原创 2018-08-05 11:46:27 · 326 阅读 · 0 评论 -
Collections
1. 作为工具类,提供排序功能 public static <T extends Comparable<? super T>> void sort(List<T> list) { list.sort(null); } public static <T> void sort(List<T> l...原创 2018-08-05 13:17:09 · 316 阅读 · 0 评论 -
ConcurrentHashMap
1. 不允许 null 类型的 key 或 value2. 懒初始化,第一次插入数据才会初始化容量数组3. 桶中第一个节点的插入基于 CAS,其他基于 lock(lock 第一个节点),新节点追加到尾部 锁粒度相比 Segment 更细了,每一个槽都可以独立上锁4. Tree 使用 hashcode 比较大小,如果可能使用 Comparable.compareTo ...原创 2018-08-08 15:26:54 · 227 阅读 · 0 评论 -
Java 内存模型(JMM)
一、概述 Java 内存模型(Java Memory Model)描述了一组规则或规范,定义了 JVM 将变量存储到内存和从内存中取出变量这样的底层细节,值得注意的是,这里的变量指的是共享变量(实例字段、静态字段、数组对象元素),不包括线程私有变量(局部变量、方法参数),因为私有变量不会存在竞争关系。二、JMM 图解 在 JMM 中,线程直接...原创 2018-11-29 11:49:29 · 217 阅读 · 0 评论 -
Eclipse 输出汇编代码的配置
1. 下载和安装依赖库http://vorboss.dl.sourceforge.net/project/fcml/fcml-1.1.1/hsdis-1.1.1-win32-amd64.ziphttp://vorboss.dl.sourceforge.net/project/fcml/fcml-1.1.1/hsdis-1.1.1-win32-i386.zip 下载对应版...原创 2018-11-29 15:11:17 · 2109 阅读 · 1 评论 -
内部类引用外部类的局部变量要用final修饰
为什么内部类引用外部类的局部变量时,此变量要用final修饰代码 public void test() { final int i = 3; runOnUiThread(new Runnable() { @Override public void run() { mTvShow.se...转载 2018-12-10 23:21:21 · 282 阅读 · 0 评论 -
Vector 与 Stack
一、类图关系 二、要点笔记1. 隶属于 List 族系,Vector 在数组基础上实现了按需增减容量的特性,内部通过维持一个数组实现2. 迭代器 和 Enumeration 均为 fail-fast3. Vector 是线程安全的(使用 synchronized 修饰符),如果不需要线程安全应该选用 ArrayList 4. Vector 的构造函数中能...原创 2018-08-04 15:41:28 · 1179 阅读 · 0 评论 -
JDK 1.8 集合概览
一、类图 二、分析 a. Collection 接口继承了 Iterable 接口,原生带有迭代能力(包括普通迭代以及可分割并行迭代) b. Collection 下设具体集合接口 Set、List,抽象类 AbstractCollection c. Collection size() 返回值为整型,因此有效处理范围不超过 ...原创 2018-08-04 14:37:08 · 573 阅读 · 0 评论 -
Hashtable 分析
一、类图 二、分析 a. 不允许 null key 或 null value b. iterator is fail-fast c. Hashtable 是同步的,但 jdk 建议使用 ConcurrentHashMap d. Hashtable 没有强制 capacity 为 2 的整数次幂 ...原创 2018-07-27 16:31:46 · 182 阅读 · 0 评论 -
IdentityHashMap 源码分析
一、类图 二、源码分析 a. IdentityHashMap 中判断 key 或 value 是否相等,完全基于引用判断,不使用 equals 判断 b. 适用于通过引用判断是否相等的场景,如序列化、深拷贝等 c. 允许 null 类型的 key 或 value d. 无序,不保证顺序 e....原创 2018-07-23 13:11:51 · 229 阅读 · 0 评论 -
HashMap 源码分析
一、类图 二、源码分析 a. 允许 null Key 或 Value b. 和 Hashtable 相比,不同点主要是 允许 null key value 和 非同步的 c. 不保证顺序 d. capacity 不宜设置过大(load factor 不宜过小),会影响迭代时间复杂度 e. ...原创 2018-07-23 21:26:11 · 364 阅读 · 0 评论 -
TreeMap 源码分析
一、类图 二、源码分析 a. 基于红黑树实现,使用 key 排序,Key 需要实现 Comparable 接口,或者创建时传入 Comparator b. log(n) 时间复杂度 c. 原则上,Comparable / Comparator 处理相等应该与 equals 保持一致,否则就违背了 Map 的接口定义 ...原创 2018-07-24 15:59:45 · 179 阅读 · 0 评论 -
Properties 分析
一、类图 二、分析 a. key value 都是 String 类型的 b. 对持久化支持好,比如有 load/store 、loadFromXML/storeToXML方法等 c. 线程安全的,继承了 Hashtable,方法使用 synchronized 修饰 d. 从文件 load 时,支持转义,如...原创 2018-07-29 17:35:34 · 162 阅读 · 0 评论 -
Map 接口源码分析
一、 JDK 1.8 中 Map 接口类图 二、 关键点解读 a. Map 是 Dictionary 的替代者,前者是接口,后者是抽象类,属于平级关系 Dictionary 中的抽象方法在 Map 接口中基本都有,特殊的只有两个,而且 Map 中已有替代方法 Dictionary 已被标注废弃,不建议...原创 2018-07-22 10:11:32 · 268 阅读 · 1 评论 -
LinkedHashMap 解析
一、类图 二、要点解读 a. 使用双向链表连接了所有 entry,使迭代有序(与插入顺序一致) b. LinkedHashMap 支持 LRU 排序,适合用作 LRU cache(重写 removeEldestEntry) 构造函数,最后一个参数指明是否按访问顺序排序 protected boolea...原创 2018-07-27 11:39:08 · 333 阅读 · 0 评论 -
SortedMap 接口源码分析
一、SortedMap 类结构图 二、源码分析 a. SortedMap 接口继承自 Map 接口,提供了按照 Key 排序的功能,即 keySet、values、entrySet 结果集有序 b. Key 需要实现 Comparable 接口或者能被指定的 Comparator 接收,以便排序 c. Map 接口定义中指出...原创 2018-07-22 17:03:34 · 640 阅读 · 0 评论 -
AbstractMap 抽象类源码分析
一、类图 二、源码分析 a. AbstractMap 是 Map 的一个实现骨架,只留了一个抽象方法 public abstract Set<Entry<K,V>> entrySet(); b. 当实现为 unmodifiable map 时,只需实现 entrySet 方法; ...原创 2018-07-22 18:02:46 · 366 阅读 · 0 评论 -
NavigableMap 接口源码分析
一、类图 二、源码分析 a. NavigableMap 继承了 SortedMap,提供了关于搜索的更多方法//返回第一个key小于参数的EntryMap.Entry<K,V> lowerEntry(K key);//返回第一个key小于参数的keyK lowerKey(K key);//返回第一个key小于等于参数的Entry...原创 2018-07-22 18:28:02 · 316 阅读 · 0 评论 -
WeakHashMap 源码分析
一、类图 二、源码分析 a. WeakHashMap 的 Key 是弱引用的,也就是 Key 放在 map 结构中不阻止对其进行垃圾回收 b. WeakHashMap 的 Value 是强引用,只有对应的 Key 被回收,才会回收 c. Value 不应直接或间接引用 Key,否则会阻止对 Key 的回收,一种处理方法是插入...原创 2018-07-23 00:10:24 · 312 阅读 · 0 评论 -
JNLP 文件无法打开的解决办法
JNLP(Java Network Launching Protocol )是 java 提供的一种可以通过浏览器直接执行 java 应用程序的途径,它使你可以直接通过一个网页上的 URL 连接打开一个 java 应用程序。因此,要运行 jnlp 程序,首先需要安装 jdk/jre 环境(如何配置 java 环境这里不多说)重点来了,安装好了 jdk,命令行分明可以运行 java 命令...原创 2019-01-17 15:37:43 · 42819 阅读 · 5 评论