自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 资源 (2)
  • 收藏
  • 关注

原创 HashMap添加元素的过程(重点详解)

以jdk7为例说明:  HashMap map = new HashMap();在实例化以后,底层创建了一个长度为16的一位数组Entry[] table。  ···可能已经执行过多次put操作了···map.put(key1,value1)首先会调用key1所在类的hashCode()方法计算key1的哈希值,然后通过某种算法计算出key1在Entry数组中的存放位置。  如果此位置上没有存放数据,则(key1-value1)添加成功。  如果此位置上有数据,则比较key1和已经存放的数据(

2021-08-02 15:50:50 3024

原创 如何看待面向对象的封装性和反射机制(重点详解)

反射机制与面向对象中的封装性是不是矛盾的?如何看待这两个技术?这两者并不矛盾。封装性相当于是建议其他类去调用当前类的公共方法,而私有方法不建议去调用,因为公共的方法可能比私有的方法更好,公共方法里面可能添加了一些逻辑。如果非要调用私有的方法,也可以调用,那我们就通过反射的方式去调用。封装性:其主要体现是将属性和方法设置为私有的使其在其他类中调用时无法访问该类中内部的私有属性和私有方法,隐藏了内部的细节,保证了代码的安全性。如果我们要想使用其私有属性和私有方法则应该使用该类内部的public方法进行调用。

2021-08-20 17:49:50 561

原创 JVM类加载器的分类(重点详解)

JVM支持两种类型的类加载器:一种是引导类加载器,另外一种是自定义类加载器。自定义类加载器:一般指的是程序中由开发人员自定义的一类类加载器,但是Java虚拟机规范中却没有这种定义,而是将所有派生于抽象类ClassLoader的类加载器都划分为自定义类加载器。在Java中,无论如何我们将类加载器分为三种:引导类加载器(又叫启动类加载器)、扩展类加载器、系统类加载器(又叫应用程序类加载器)。引导类加载器:这个类加载器是用C/C++语言实现的,嵌套在JVM的内部。它是用来加载Java的核心库(JAVA_HO

2021-08-12 19:27:40 362

原创 Java中类的加载过程(重点详解)

加载:将字节码从不同的数据源(可能是 class 文件,也可能是 jar 包,甚至网络)转化为二进制字节流加载到内存中;将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构;并在堆中生成一个代表该类的 java.lang.Class 对象,作为对方法区这个类的各种数据的访问入口。验证:验证的目的是为了确保加载进来的class文件符合JVM的规范,一般是进行文件格式的验证、元数据的验证、字节码验证和符号引用验证。文件格式的验证:验证字节流是否符合Class文件格式的规范,并且能被当前版本的虚拟机.

2021-08-02 09:37:30 199

原创 HashSet添加元素的过程(重点详解)

我们向HashSet中添加元素a,首先调用元素a所在类的hashCode()方法,计算元素a的哈希值,此哈希值通过某种算法计 算出在HashSet底层数组中的存放位置(即为:索引位置),判断数组此位置上是否有元素:​ 情况一:如果此数组位置上没有元素,则元素a添加成功;​ 如果此位置上有其他元素b(或以链表形式存在的多个元素),则比较元素a与其他元素的hash值:​ 情况二:如果hash值不相同,则元素a添加成功;​ 如果hash值相同,进而需要调用元素a所在类的equals()方法

2021-07-28 11:48:58 1441

原创 动态链接(又被称为指向运行时常量池的方法引用)——重点详解

·每一个栈帧内部都包含一个指向运行时常量池中该栈帧所属方法的引用。包含这个引用的目的就是为了支持当前方法的代码能够实现动态链接(Dynamic Linking)。比如:invokedynamic指令·在Java源文件被编译到字节码文件中时,所有的变量和方法引用都作为符号引用(Symbolic Reference)保存在class文件的常量池中。例如:描述一个方法调用了其他方法时,就是通过常量池中指向方法的符号引用来表示的,所以说动态链接的作用就是为了将这些符号引用转换为调用方法的直接引用。在此我们创建

2021-03-19 18:09:17 802

JDK1.8ConcurrentHashMap.md

对JDK8中ConcurrentHashMap的容器初始化、添加元素安全、扩容安全以及多线程情况下扩容效率的提高、集合长度的累计方式以及获取集合长度等这些方法的源码进行了详细的解释说明

2021-09-11

JDK1.7ConcurrentHashMap.md

对JDK1.7中ConcurrentHashMap容器初始化、添加安全、扩容安全、获取集合长度这些方法进行了详细的分析

2021-09-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除