开启正文之前,先说一下源码剖析这一系列,就以“死磕到底”的精神贯彻始终,JDK--》JRE--》JVM(以openJDK代替)
最近想看看JDK8源码,但JDK中JVM(安装在本地C:\Program Files\Java\jdk1.8.0_121\jre\bin\server下jvm.dll)本身并不开源,只能找来openJDK来看(说是和JDK相似度很高)。源码包下载飞机票:http://d
转载
2023-05-24 18:50:13
101阅读
下载jdk1.8.0,安装http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html使用eclipse查看源码。点 “window”-> "Preferences" -> "Java" -> "Installed JRES";在右边框里会列出现在的jre环境,如果没有想要看
原创
2016-03-15 13:48:29
1270阅读
点赞
1、先说一下源码解析的过程:JDK-->JRE-->JVM(以openJDK代替)注意:这里要了解jdk和jre和jvm他们分别是什么?以及他们的关系才可以继续。这里先上一章从网上下载的关系图方便理解2、笔者本地的jdk是oraclejdk,jvm所在位置就是安装的jdk。jdk下jre下bin下server下的jvm.dll。也就是F:\Java\jdk\jdk1.7.0_60\jr
转载
2023-07-20 23:44:05
196阅读
1. 前言 之前断断续续读过一部分 JDK 常用类的源码,这里想把过程中的一些心得和方法记录下来,如果能帮到需要的小伙伴就再好不过了!本文主要分享一下我的阅读工具和阅读顺序。PS: 由于当前主流使用的 JDK 版本仍是 1.8,因此源码阅读主要是 1.8 版本,有些地方可以参考 1.7(面试可能问到)。2. 工具 工欲善其事,必先利其器。需要的工具不多,IDE + Google 翻译足够了。使用
转载
2024-01-24 12:57:05
59阅读
概述 CyclicBarrier 是并发包中的一个工具类,它的典型应用场景为 “屏障
原创
2021-08-05 15:20:09
196阅读
概述 相较于 ArrayList,LinkedList 在平时使用少一些。 LinkedList 内部是一个双向链表,并且实现了 List 接口和 Deque 接口,因此它也具有 List 的操作以及双端队列和栈的性质。双向链表的结构如下: 前文分析了 Queue 和 Deque 接口,正是因为 L
原创
2021-08-05 15:23:38
244阅读
概述 ArrayList 是 List 接口的一个实现类,也是 Java 中最常用的容器实现类之一,可以把它理解为「可变数组」。 我们知道,Java 中的数组初始化时需要指定长度,而且指定后不能改变。ArrayList 内部也是一个数组,它对数组的功能做了增强:主要是在容器内元素增加时可以动态扩容,
原创
2021-08-05 15:23:45
307阅读
GitHub找到JDKGitHub上搜索jdk即可找到Open-Jdk的源码。GitHub: link.Open-Jdk
原创
2023-06-05 16:14:07
97阅读
概述 CountDownLatch 是并发包中的一个工具类,它的典型应用场景为:一个线程等待几个线程执行,待这几个线程结束后,该线程再继续执行。 简单起见,可以把它理解为一个倒数的计数器:初始值为线程数,每个线程结束时执行减 1 操作,当计数器减到 0 时等待的线程再继续执行。 代码分析 Count
原创
2021-08-05 15:23:22
226阅读
Map 接口 Map 是一个接口,它表示一种“键-值(key-value)”映射的对象(Entry),其中键是不重复的(值可以重复),且最多映射到一个值(可以理解为“映射”或者“字典”)。 Map 常用的实现类有 HashMap、TreeMap、ConcurrentHashMap、LinkedHas
原创
2021-08-05 15:23:36
217阅读
概述 Queue 和 Deque 都是接口。其中 Queue 接口定义的是一个队列,它包含队列的基本操作:入队(enqueue)和出队(dequeue)。 Deque 接口继承自 Queue 接口,表示双端队列(Double-ended queue),同时具备「队列」和「栈」的性质。二者的继承关系如
原创
2021-08-05 15:23:43
237阅读
Java 集合框架(Java Collections Framework, JCF)包含很多平时开发中的常用类,例如 List、Set、ArrayList、HashMap、HashSet 等,因此打算先从这里下手。 而 Collection 接口又是集合层次中的根接口,最常用的 List 和 Set
原创
2021-08-05 15:23:49
215阅读
概述 在 JDK 1.5 以前,锁的实现只能用 synchronized 关键字;1.5 开始提供了 ReentrantLock,它是 API 层面的锁。先看下 ReentrantLock 的类签名以及如何使用: 典型用法: 该用法和使用 synchronized 关键字效果是一样的。既然有了 sy
原创
2021-08-05 15:22:03
237阅读
概述 Semaphore 是并发包中的一个工具类,可理解为信号量。通常可以作为限流器使用,即限制访问某个资源的线程个数,比如用于限制连接池的连接数。 打个通俗的比方,可以把 Semaphore 理解为一辆公交车:车上的座位数(初始的“许可” permits 数量)是固定的,行驶期间如果有人上车(获取
原创
2021-08-05 15:23:16
216阅读
概述 前文「JDK源码分析-HashMap(1)」分析了 HashMap 主要方法的实现原理(其他问题以后分析),本文分析下 LinkedHashMap。 先看一下 LinkedHashMap 的类继承结构图: 可以看到 LinkedHashMap 继承了 HashMap。 我们知道 HashMap
原创
2021-08-05 15:23:34
328阅读
概述 上文「JDK源码分析-ArrayList」主要分析了 ArrayList 的实现原理。本文分析 List 接口的另一个实现类:Vector。 Vector 的内部实现与 ArrayList 类似,也可以理解为一个「可变数组」。其继承结构如下(省略部分接口): PS: 由于 Vector 目前使
原创
2021-08-05 15:23:42
162阅读
Eclipse中第一种:步骤: eclipse?windows?设定?java?build path?classpath变量?新建 名称:JRE_SRC file:jdk/src.zip 这样就ok了第二种:1,你把鼠标放在一个jkd的类上按下F3,如果这时迁移到一个class文件拿去的话 2,class文件画面会有一个“关联源代码”按钮,点击这个按
转载
2024-08-12 14:01:38
113阅读
step1:打开选择Window->Preference step2:选择Java->Installed JREs step3:选中你所安装的jre,点击Edit,进入Edit JRE,如下所示 step4:选中rt.jar,点击Source Attachment step5:在对话框中,点击External Folder,选择你所安装的jdk目录...
转载
2016-06-24 08:53:00
88阅读
2评论
ArrayList和LinkedList在性能上各有优缺点: 1.对ArrayList和LinkedList而言,在列表末尾增加一个元素所花的开销都是固定的。对ArrayList而言,主要是在内部数组中增加一项,偶尔可能会导致对数组扩容;而对LinkedList而言,这个开销是统一的,都是新建一个N ...
转载
2021-09-12 16:50:00
66阅读
2评论
一、HashMap的数据结构?为什么要采用这样的数据结构? //默认 HashMap 集合初始容量为16(必须是 2 的倍数) static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 //集合的最大容量,如果通过带参构造指定的最大容 ...
转载
2021-09-12 16:36:00
115阅读
2评论