JDK源码
wolfshadow.cn
Code,Cod,Co,C,;
展开
-
关键字transient是干啥的
百度百科的解释: Java语言的关键字,变量修饰符,如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。换句话来说就是,用transient关键字标记的成员变量不参与序列化过程。作用: Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization机制...原创 2018-10-31 13:16:36 · 146027 阅读 · 16 评论 -
JDK源码分析--HashMap的扩容
面试时老生常谈的问题:请问HashMap在什么时候扩容?稍稍看过源码的立马回答:默认装载因子0.75,当size达到总容量的0.75时会扩容。而事实如此吗?经实验证明,不一定,还需要看JDK的版本。HashMap中有一个重要的属性叫threshold,扩容临界值,即下一个要调整大小的值(总容量*装载因子)。一、以JDK1.7为例 查看源码,在put操作时扩容的条件...原创 2019-01-17 17:37:27 · 14919 阅读 · 0 评论 -
JDK源码分析--HashMap深入理解
一、实现原理以JDK1.7源码为例进行分析(一)Hashing的概念 将字符串转换成固定长度(一般是更短的长度)的数值或索引值的方法,也称为散列法或哈希法。常用于数据库中建索引,或是用于各种加解密算法中。 完成转换功能的函数一般称为哈希函数,哈希函数设计的好坏将直接影响到哈希表的优劣。(二)哈希表 可高效进行增加、删除、查找等操作的...原创 2019-01-18 10:27:01 · 14643 阅读 · 0 评论 -
JDK源码分析--String的一些解析
注:以下解析基于JDK1.8.0_74。 一、实现的3个接口1、java.io.SerializableSerializable接口是启用其序列化功能的接口。 实现java.io.Serializable 接口的类是可序列化的。序列化:把对象转换为字节序列的过程称为对象的序列化。反序列化:把字节序列恢复为对象的过程称为对象的反序列化。序列化的作用总结:(1)数据...原创 2019-02-22 17:23:53 · 12103 阅读 · 0 评论 -
JDK源码分析--ArrayList深入理解
一、实现原理以JDK1.8.0_74源码为基础进行分析。1、基于数组的实现,是一个容量能自动增长的动态数组。2、ArrayList实现了Serializable接口,因此它支持序列化,能够通过序列化传输,实现了RandomAccess接口,支持快速随机访问,实际上就是通过下标序号进行快速访问,实现了Cloneable接口,能被克隆。3、随着向ArrayList中不断添加元素,其容量...原创 2019-02-20 16:56:38 · 12305 阅读 · 0 评论 -
JDK源码分析--ArrayList怎么扩容
为何将ArrayList的扩容单独写成一篇博客? 之前对ArrayList进行过源码分析,对于扩容也有介绍,但考虑到文章写得有点多,可能一些朋友根本没兴趣全部看完;基于此原因,将其扩容规则单独列出。源码:private void grow(int minCapacity) { // overflow-conscious code int oldCapac...原创 2019-02-20 17:06:23 · 12363 阅读 · 0 评论 -
JDK源码分析--Properties源码分析
注: 以下分析基于JDK1.8.0_74。一、概述 1、Properties类表示一组持久属性。属性列表中的每个键及其对应值都是一个字符串。 2、可以将属性内容写出到stream中或者从stream中读取属性内容。 3、Properties类继承自Hashtable,是线程安全的类,即多个线程可以共享一个Properti...原创 2019-03-26 18:24:09 · 16465 阅读 · 1 评论