07 2019 档案

摘要:首先,一个线程不应该由其他线程来强制中断或停止,而是应该由线程自己自行停止。 所以,Thread.stop, Thread.suspend, Thread.resume 都已经被废弃了。而 Thread.interrupt 的作用其实也不是中断线程,而是「通知线程应该中断了」,具体到底中断还是继续运 阅读全文
posted @ 2019-07-31 20:32 无天666 阅读(495) 评论(0) 推荐(0)
摘要:AtomicLong是作用是对长整形进行原子操作,显而易见,在java1.8中新加入了一个新的原子类LongAdder,该类也可以保证Long类型操作的原子性,相对于AtomicLong,LongAdder有着更高的性能和更好的表现,可以完全替代AtomicLong的来进行原子操作。 AtomicL 阅读全文
posted @ 2019-07-26 14:40 无天666 阅读(1372) 评论(0) 推荐(0)
摘要:接下来看看volatile是如何解决上面两个问题的: 被volatile修饰的变量在编译成字节码文件时会多个lock指令,该指令在执行过程中会生成相应的内存屏障,以此来解决可见性跟重排序的问题。 内存屏障的作用: 1.在有内存屏障的地方,会禁止指令重排序,即屏障下面的代码不能跟屏障上面的代码交换执行 阅读全文
posted @ 2019-07-24 20:07 无天666 阅读(18388) 评论(3) 推荐(4)
摘要:LinkedHashMap底层存储结构与HashMap一样,不同的是LinkedHashMap增加了一个双向链表的头节点,插入的数据除了插入HashMap,还会插入链表中,因而可以保存插入节点的顺序 LinkedHashMap的节点在HashMap节点的基础上增加了前后节点的引用 LinkedHas 阅读全文
posted @ 2019-07-23 16:33 无天666 阅读(291) 评论(0) 推荐(0)
摘要:1. 为什么无法创建更大的数组? Attempts to allocate larger arrays may result in OutOfMemoryError 如果数组长度过大,可能出现的两种错误 OutOfMemoryError: Java heap space 堆区内存不足(这个可以通过设 阅读全文
posted @ 2019-07-22 19:08 无天666 阅读(266) 评论(0) 推荐(0)
摘要:public class test { @SuppressWarnings({ "rawtypes", "unchecked" }) public static void main(String[] args) { HashMap1 hh = new HashMap1(3); //链表添加 hh.put(0, "0... 阅读全文
posted @ 2019-07-21 13:03 无天666 阅读(296) 评论(0) 推荐(0)
摘要:jdk1.8之前是数组+链表的形式,后面会介绍jdk1.8对hashMap的改动:数组+链表+红黑树 红黑树是O(logn),链表是O(n),大于等于7就转成红黑树,小于7时候O(longn)要大。 我们知道java.util.HashMap不是线程安全的,因此如果在使用迭代器的过程中有其他线程修改 阅读全文
posted @ 2019-07-21 12:49 无天666 阅读(270) 评论(0) 推荐(0)
摘要:package map; import org.junit.Test; import com.mysql.cj.api.x.Collection; import map.TreeMap1.AscendingSubMap.AscendingEntrySetView; import map.TreeMap1.NavigableSubMap.SubMapEntryIterator; impor... 阅读全文
posted @ 2019-07-17 22:51 无天666 阅读(313) 评论(0) 推荐(0)
摘要:二叉树他们都需要满足一个基本性质--即树中的任何节点的值大于它的左子节点,且小于它的右子节点。按照这个基本性质使得树的检索效率大大提高。我们知道在生成二叉树的过程是非常容易失衡的,最坏的情况就是一边倒(只有右/左子树),这样势必会导致二叉树的检索效率大大降低(O(n)),所以为了维持二叉树的平衡,大 阅读全文
posted @ 2019-07-17 22:46 无天666 阅读(296) 评论(0) 推荐(0)
摘要:解决方法 第一步 第二步 在工具栏选择 , Run Configurations 设置在运行前不检查错误 阅读全文
posted @ 2019-07-13 10:43 无天666 阅读(2353) 评论(0) 推荐(0)
摘要:2-3树:插入变成2个节点正常插,变成3个节点就要提升中间节点和分裂子节点,满足:要么没有子节点,要么2个子节点,要么3个子节点。 2-3-4树:插入变成2个不动,插入变成3个不动,插入变成4个提升原来中间节点和分裂子节点,满足:要么没有子节点,要么2个子节点,要么3个子节点,要么4个子节点。 2节 阅读全文
posted @ 2019-07-12 11:57 无天666 阅读(579) 评论(0) 推荐(0)
摘要:左倾红黑树的另一种定义是满足下列条件的二叉查找树: 2-3树规定,2节点为黑色,3节点小红大黑,并且父节点链接的是大黑节点。小红在大黑的坐下,中间值节点在小红的右边。 2-3树规定了红黑树最终的样子和颜色,但是中间的旋转和变色过程 是通过2-3树的变换过程推到出来的,规则如下: 红黑树就是用红链接表 阅读全文
posted @ 2019-07-06 14:48 无天666 阅读(538) 评论(0) 推荐(0)
摘要:public class ConvertSortedArrayToBinarySearchTree { public static TreeNode sortedArrayToBST(int[] nums) { if (nums == null || nums.length == 0) { return null; } ... 阅读全文
posted @ 2019-07-02 16:30 无天666 阅读(391) 评论(0) 推荐(0)
摘要:public class InorderSuccessorInBST {//平衡二叉树查找后继结点 public TreeNode inorderSuccessor(TreeNode root, TreeNode p) { if (p == null) { return null; } if (getLastEnt... 阅读全文
posted @ 2019-07-02 10:13 无天666 阅读(468) 评论(0) 推荐(0)
摘要:public class AVLMap implements Iterable> { private int size; private AVLEntry root; private Comparator comp; private LinkedList> stack = new LinkedList>(); private int compare(K ... 阅读全文
posted @ 2019-07-01 17:13 无天666 阅读(371) 评论(0) 推荐(0)