最新 最热

一文搞定HashMap的实现原理和面试

HashMap在日常开发中基本是天天见的,而且都知道什么时候需要用HashMap,根据Key存取Value,但是存和取的时候那些操作却是很少去研究。同时在面试中也是面试官们必问的。 以下是基于JDK1.8...

2021-04-13
1

Java基础篇:什么是hashCode 以及 hashCode()与equals()的联系

hashCode就是对象的散列码,是根据对象的某些信息推导出的一个整数值,默认情况下表示是对象的存储地址。通过散列码,可以提高检索的效率,主要用于在散列存储结构中快速确定对象的存储地址,如Hashtable、hashMap中。...

2021-04-13
1

大数据面试题整理(二) ---- JVM、Java基础、多线程

通过软件模拟出来的具有完整的硬件系统功能、运行在完全隔离的环境中的完整的计算机系统。虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器...

2021-04-13
1

【JavaP6大纲】Java基础篇:为什么jdk8以后HashMap会使用红黑树优化?

在Jdk1.8版本后,Java对HashMap做了改进,在链表长度超过8且数组长度大于64时,将后面的数据存在红黑树中,以加快检索速度。

2021-04-12
1

【JavaP6大纲】Java基础篇:HashMap为什么会发生并发修改异常?并发修改异常解决方案?

HashMap实际使用过程中会出现一些线程安全问题,在JDK1.7中,当并发执行扩容操作时会造成环形链和数据丢失的情况,开多个线程不断进行put操作,rehash的时候,旧链表迁移新链表的时候,如果在新表的数组索引位置相同,则链表元素会...

2021-04-12
1

【JavaP6大纲】Java基础篇:HashMap加载因子为什么是0.75?

如果加载因子比较大,扩容发生的频率比较低,浪费的空间比较小,发生hash冲突的几率比较大。比如,加载因子是1的时候,hashmap长度为128,实际存储元素的数量在64至128之间时间段比较多,这个时间段发生hash冲突比较多,造成数组中其...

2021-04-12
1

【JavaP6大纲】Java基础篇:HashMap扩容机制

将(k1,v1)直接放入Node类型的数组中,这个数组初始化容量是16,默认的加载因子是0.75,也就是当元素加到12的时候,底层会进行扩容,扩容为原来的2倍。

2021-04-12
1

【JavaP6大纲】Java基础篇:HashMap底层原理

HashMap是Map的一个实现类,它是以键值对存储数据的,Key-Value都是Map.Entry中的属性。当我们向HashMap中存放一个元素(k1,v1),先根据k1的hashCode方法来决定在数组中存放的位置。如果这个位置没有其它元素,将(k1,v1)直接...

2021-04-12
1

Java类收集

想必大家对SimpleDateFormat并不陌生。SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调试的问题,因为 DateFormat 和 SimpleDateFormat...

2021-04-12
1

MyCat - 源代码篇(5)

根据字面意思,一个可以关闭的连接需要实现关闭方法-_-,并且需要原因判断是否是正常关闭。MySQL的通信都需要指定字符集。MyCat服务器建立ServerSocket时输入的端口为服务器在其上面监听客户的连接,当有客户连接时,在随...

2021-04-12
1