
源码解读
RAYFUXK
这个作者很懒,什么都没留下…
展开
-
根据Java的容器说说“快速报错” (fail-fast)
Java容器有一种保护机制,能够防止多个线程修改同一个容器的内容。这个机制主要是应用到迭代器上,如果你使用迭代器进行遍历,那么此时有另一个线程修改了这个数据结构,比如此时,别的线程,增加,删除了某个元素,这个是Java的非同步容器是不允许的同时两个的操作。何为快速报错?其实就是根据这个容器的如何你使用的不这正确,那么就会抛出错误,程序就不会运行下去了。如果此时不泡错,那么程序就会用错误的数据...原创 2019-12-27 07:31:39 · 227 阅读 · 0 评论 -
为什么覆写了`hashCode()`之后,就一定要覆写 `equals()`
我们为什么需要覆写hashCode()这里我们可以先假设,如果我们不覆写 hashCode, 会发生什么情况,因为如果不覆写hashCode(),那么默认使用的就是Object#hashCode(),那么每个对象都会得到一个唯一的哈希值,这个看起来正确,但是本身没啥意义,我们举个例子,如果String类不覆写hashCode()来按照字符串的值来产生一个哈希值(散列值),那么就算是相同的字符串锁...原创 2019-12-26 05:49:27 · 291 阅读 · 0 评论 -
LeetCode 33. 搜索旋转排序数组(Java版)
题目33. 搜索旋转排序数组题解题目的重点的就是有点被旋转了,而且时间复杂度O(logN)O(logN)O(logN),所以这里需要运用的就是而二分思想的。我们要知道数组的最小值所在的地方,一般来说在左半边还是右半边。举个例子1 最小值在左半边low = 0, high = len - 1,所以 high 是 8mid = low + ((high - low) >>...原创 2019-11-28 23:15:30 · 260 阅读 · 0 评论 -
Java 11 的String是如何优化存储的?
优化的依据是什么?Java 中的 char 是两个byte大小,因为我们大多数的时候操作数据都是都是用拉丁语系的字符的,而拉丁语系的字符只要用byte就足够存储了,根本就不需要char。所以如果我们发现发现了一个字符串里只有拉丁语系的字符,那么我们全都用byte,这样就比原来的用char来存储节省一半的存储空间了。具体实现思想是什么?判断一个字符串里是否都是拉丁语系的字符,如果全都是,那么O...原创 2019-11-21 23:37:15 · 411 阅读 · 0 评论 -
读Java 11 源码(3)HashMap
1 为什么是数组+链表数组是怎么来的?先来看个成员变量。/*** The table, initialized on first use, and resized as* necessary. When allocated, length is always a power of two.* (We also tolerate length zero in some operation...原创 2019-09-23 22:17:00 · 431 阅读 · 0 评论 -
读 Java 11 源码(1)ArrayList
查找这个最简单,基本逻辑上就是遍历,然后匹配,但是在匹配上,有讲究。/** * Returns the index of the first occurrence of the specified element * in this list, or -1 if this list does not contain the element. * More formally, return...原创 2019-09-20 09:41:35 · 198 阅读 · 0 评论 -
读Java11 源码(2)LinkedList
增加节点public void add(int index, E element) { checkPositionIndex(index); if (index == size) linkLast(element); else linkBefore(element, node(index));}private void checkPos...原创 2019-09-22 17:45:32 · 159 阅读 · 0 评论 -
读Java 11 源码(4)Hashtable
数据存在那?一个用Entry为元素的数组。private transient Entry<?,?>[] table;table,这个是由Entry这个内部类组成的数组,我们来看看这个类的代码。private static class Entry<K,V> implements Map.Entry<K,V> { final int hash; ...原创 2019-10-04 14:02:51 · 176 阅读 · 0 评论