随笔分类 -  java深入研究

摘要:一、简介 大家都知道,HashMap中定位到桶的位置 是根据Key的hash值与数组的长度取模来计算的。 JDK8中的hash 算法: 取模算法: 二、深入分析 1、取模算法为什么用的是位与运算? 由于位运算直接对内存数据进行操作,不需要转成十进制,因此处理速度非常快。 对2的倍数取模,只要将数与2 阅读全文
posted @ 2019-07-02 17:26 leon66666 阅读(2483) 评论(0) 推荐(0) 编辑
摘要:一、红黑树介绍 红黑树是二叉查找树,红黑树的时间复杂度为: O(lgn) 红黑树的特性:(1)每个节点或者是黑色,或者是红色。(2)根节点是黑色。(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!](4)每个红色结点必须有两个黑色的子结点 (5)从任 阅读全文
posted @ 2018-05-03 00:07 leon66666 阅读(493) 评论(0) 推荐(0) 编辑
摘要:一、HashMap概述 HashMap是常用的Java集合之一,是基于哈希表的Map接口的实现。与HashTable主要区别为不支持同步和允许null作为key和value。由于HashMap不是线程安全的,如果想要线程安全,可以使用ConcurrentHashMap代替。 二、HashMap数据结 阅读全文
posted @ 2018-03-22 10:44 leon66666 阅读(1166) 评论(0) 推荐(0) 编辑
摘要:java不能直接访问操作系统底层,而是通过本地方法来访问。Unsafe类提供了硬件级别的原子操作,主要提供了以下功能: 类中提供的3个本地方法allocateMemory、reallocateMemory、freeMemory分别用于分配内存,扩充内存和释放内存,与C语言中的3个方法对应。 字段的定 阅读全文
posted @ 2018-02-11 15:15 leon66666 阅读(3528) 评论(0) 推荐(1) 编辑
摘要:ThreadLocal翻译成中文比较准确的叫法应该是:线程局部变量。 这个玩意有什么用处,或者说为什么要有这么一个东东?先解释一下,在并发编程的时候,成员变量如果不做任何处理其实是线程不安全的,各个线程都在操作同一个变量,显然是不行的,并且我们也知道volatile这个关键字也是不能保证线程安全的。 阅读全文
posted @ 2017-09-18 17:38 leon66666 阅读(421) 评论(0) 推荐(0) 编辑
摘要:一、首先说一下JDK中的动态代理: JDK中的动态代理是通过反射类Proxy以及InvocationHandler回调接口实现的 但是,JDK中所要进行动态代理的类必须要实现一个接口,也就是说只能对该类所实现接口中定义的方法进行代理,这在实际编程中具有一定的局限性,而且使用反射的效率也并不是很高。 阅读全文
posted @ 2017-08-03 20:50 leon66666 阅读(687) 评论(0) 推荐(0) 编辑
摘要:在JDK的Collection中我们时常会看到类似于这样的话: 例如,ArrayList: 注意,迭代器的快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出任何硬性保证。快速失败迭代器会尽最大努力抛出 ConcurrentModificationException。因此,为提 阅读全文
posted @ 2017-08-03 20:48 leon66666 阅读(462) 评论(0) 推荐(1) 编辑
摘要:LinkedList是一个实现了List接口和Deque接口的双端链表。 有关索引的操作可能从链表头开始遍历到链表尾部,也可能从尾部遍历到链表头部,这取决于看索引更靠近哪一端。 LinkedList不是线程安全的,如果想使LinkedList变成线程安全的,可以使用如下方式: List list=C 阅读全文
posted @ 2017-08-03 20:47 leon66666 阅读(587) 评论(0) 推荐(0) 编辑
摘要:在学习Spring的时候,我们知道Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC,依赖注入就不用多说了,而对于Spring的核心AOP来说,我们不但要知道怎么通过AOP来满足的我们的功能,我们更需要学习的是其底层是怎么样的一个原理,而AOP的原理就是java的动态代理机制,所 阅读全文
posted @ 2017-04-05 16:36 leon66666 阅读(555) 评论(0) 推荐(0) 编辑
摘要:1. HashMap的数据结构 数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组 数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难; 链表 链表存储区间离散,占用内存比较宽松,故空间复杂度 阅读全文
posted @ 2017-03-01 18:00 leon66666 阅读(1392) 评论(0) 推荐(0) 编辑
摘要:一、概述Object类是所有Java类的祖先。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。 参考英文:* Class {@code Object} is the root of the class hierarchy.* Every class has {@code 阅读全文
posted @ 2017-01-16 22:41 leon66666 阅读(730) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示