【JVM 源码分析(一):重新认识 Java 虚拟机】教程文章相关的互联网学习教程文章

Java-ReentrantLock源码分析【代码】

文章目录 ReentrantLock 可重入锁分析1.synchronized关键字简析1.1synchronized关键字的使用 2.ReentrantLock分析2.1ReentrantLock使用2.2```Sync```源码分析2.3```NonfairSync```源码分析2.4```FairSync```源码分析2.5其他api以及实现ReentrantLock 可重入锁分析本文源码基于JDK8。因为本人水平有限,错误和不足之处在所难免,欢迎指出错误和不足之处,一起进步。 阅读这篇文章需要对AQS有一定的了解,虽然本篇文章大致介绍了AQS但...

JavaSE源码分析(二):String、StringBuffer和StringBuilder的区别

前言 String、StringBuffer和StringBuilder是Java中关于字符串的三个常用类。它们之间的区别网上遍地都是,这里话不多说直接列出,然后我们再通过源码来更深入理解它们存在这些差异的原因是什么。String、StringBuffer和StringBuilder的区别: 1、可变性问题:String是不可变字符序列,StringBuffer和StringBuilder是可变字符序列 2、安全性问题:String和StringBuffer是线程安全的,StringBuilder是线程不安全的 3、效率问题:通常...

Java集合类框架源码分析 之 HashMap源码解析 【15】【代码】

类简介:/*** 允许key/value为null,HashMap和Hashtable大致相同(除了不同步及允许null),这个类不保证顺序,其实是它不能保证顺序会随时间保持不变。* * Hash table based implementation of the <tt>Map</tt> interface. This* implementation provides all of the optional map operations, and permits* <tt>null</tt> values and the <tt>null</tt> key. (The <tt>HashMap</tt>* class is roughly equivalent to <tt>Hash...

【Java容器源码】LinkedHashMap 基于链表的迭代器源码分析【代码】【图】

前篇:【Java容器源码】LinkedHashMap 实现 LRU 策略源码分析在上一篇文章,我们说了,LinkedHashMap 继承自 HashMap,而 HashMap 提供了基于逐桶遍历策略的 KeyIterator、ValueIterator、EntryIterator,来分别对 key、value、entry 进行迭代(可以参考这篇文章)。 而 LinkedHashMap 除了哈希表之外,还有一条贯穿了所有结点双向链表,所以,它重写了获取迭代器的三个方法,返回基于链表遍历策略的迭代器。迭代 key:LinkedHashM...

Java集合(4):HashMap的put源码分析及扩容机制详解【代码】【图】

根据上一篇文章 Java集合(3):小白也能看懂的HashMap图解、底层原理与Hash算法 ,明白了HashMap的底层原理,以及当一个元素添加进来时,HashMap什么时候会扩容,什么时候链表会变为红黑树。接下来将从源码分析PUT方法的流程。 put源码解析与流程分析 代码的解释在注释里://首先调用了putVal方法public V put(K key, V value) {return putVal(hash(key), key, value, false, true);}//这里有五个参数://1.hash值为传过来的key的...

Java java.lang.Character源码分析【代码】

Unicode相关知识Unicode,又称万国码、国际码、统一码、单一码。整理、编码了世界上大部分的文字系统。使得电脑可以用更为简单的方式来呈现和处理文字比如说常用的表情符号,Emoji :happy: , 已经被Unicode 标准化了。每个表情、字符都都分别对应了一组数字,称作代码值(code point,码点)。 以”U+” 开头 ,后面跟着一串十六进制的数字。Java 对Unicode的支持 ? Java使用了UTF-16 , Character 中使用两个字节表示一个char. 随...

Okio源码分析它补充了 java.io 和 java.nio 的不足,使访问、存储和处理数据更加容易【代码】【图】

Okio源码分析它补充了 java.io 和 java.nio 的不足,使访问、存储和处理数据更加容易 ?okio 的文档说明:https://square.github.io/okio/?。本文代码介绍基于版本 1.17.4。概述 Okio 作为 Okhttp 底层 io 库,它补充了 java.io 和 java.nio 的不足,使访问、存储和处理数据更加容易。Okio 的特点如下:okio 是一个由 square 公司开发的开源库,它弥补了 Java.io 和 java.nio 的不足,能够更方便快速的读取、存储和处理数据。okio 有...

java多线程 LockSupport源码分析【代码】【图】

目录 简介 构造函数,方法setBlocker,unpark,park,parkNanos,parkUtil 方法getBlocker,park,parkNanos,parkUtil,nextSecondarySeed 字段UNSAFE,parkBlockerOffset,SEED,PROBE,SECONDARY简介 package java.util.concurrent.locks; import sun.misc.Unsafe;/*** 用于创建锁和其他同步类的基本线程阻塞原语。** <p>这个类与每个使用它的线程关联一个许可(某种意义上类似Semaphore)。* 如果许可证可用,对park的调用将立即返回,并在此过...

java多线程 AbstractOwnableSynchronizer源码分析【代码】

package java.util.concurrent.locks;/*** 线程独占的同步器。* 这个类为创建锁和相关的同步器提供了基础,这些同步器可能需要一个所有权的概念。* AbstractOwnableSynchronizer类本身并不管理或使用这些信息。* 但是,子类和工具可以使用适当维护的值来帮助控制和监视访问并提供诊断。** @since 1.6* @author Doug Lea*/ public abstract class AbstractOwnableSynchronizerimplements java.io.Serializable {/** Use serial ID e...

JVM 源码分析(一):重新认识 Java 虚拟机

什么是虚拟机什么是 java 虚拟机java 虚拟机有哪些java 虚拟机与 jre 和 jdk 的关系 什么是虚拟机 提到虚拟机,很多人首先想到的是 VirtualBox、VMware Workstation 等虚拟机软件,没错,它们是一类虚拟机——完整指令集架构虚拟机。这类虚拟机提供了完整的硬件指令集架构的模拟,操作系统和应用程序在这个虚拟机上可以像真实计算机那样运行,因此,它们有时也被称为模拟器。 还有一类虚拟机——虚拟指令集架构虚拟机,它们经常被...

互联网架构-Java8集合框架源码分析-044:手写Java红黑树(未变色旋转)【代码】【图】

044:手写Java红黑树(未变色旋转) 1 二叉搜索树存在那些问题2 红黑树的数据结构基本介绍3 红黑树基本的特征介绍4 红黑树变换颜色的规则要求5 红黑树左右旋转基本的规则6 手写红黑树环境代码实现(未变色旋转)1 二叉搜索树存在那些问题 课程内容: 1.为什么二叉树不用?用红黑树树结构? 2.为什么都觉得红黑树非常难?到底难在那里? 3.实现红黑树基本特征到底有那些? 4.细谈红黑树如果规则被破坏?如何实现修复 二叉搜索树存在...

java底层原理---ArrayList源码分析【代码】【图】

java底层原理—ArrayList源码分析 引言 学习底层是为了更好的选择合适数据结构进行开发,这篇是为了讲解ArrayList底层原理的,同时也是总结一下自己的学习成果。 太多的文字让人看得眼花缭乱,废话不多说,上图解。 这是ArrayList的属性:一、创建ArrayList对象,初始化过程ArrayList<String> list = new ArrayList<>();public ArrayList() {//this.当前数组=默认数组this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; }给当...

Java IO源码分析(四)——PrintStream【代码】

简介 PrintStream继承于FilterOutputStream,而FilterOutputStream用于封装其他的输出流。 PrintStream用于给其他的输出流封装了一层打印的功能,它内部重载了很多数据类型,这样可以方便打印不同类型的数据。 实际的输出工作,还是调用了被封装的输出流的打印函数。 源码分析public class PrintStream extends FilterOutputStreamimplements Appendable, Closeable {// 自动fulsh标志位,如果为真,那么每次执行print、println、w...

java集合源码分析(四):LinkedList【代码】【图】

概述 LinkedList 与 ArrayList 出自一个作者,同时也一样是 List 接口下的实现类,但是与 ArrayList 不同的是, LinkedList 继承了 AbstractSequentialList 抽象类,在实现 List 接口的同时还实现了 Deque 接口,是一个基于双端链表而非数组实现的集合类。也正因如此,它也具有队列的特性。 这是关于 java 集合类源码的第四篇文章。如果之前还没了解过相关内容,可以先看看之前的文章:java集合源码分析(一):Collection 与 Abst...

Java集合加源码分析【代码】

目录 引入一、Java集合框架二、Collection接口方法三、Iterator迭代器接口四、Collection子接口一:ListList接口的常用方法List的遍历(三种方式)ArrayList源码分析: 五、Collection子接口二:Set1、Set的理解1.1、无序性1.2、不可重复性1.3、向set中添加元素的过程 2、treeSet 六、Map接口1、Map接口的框架结构2、key-value的理解3、HashMap的底层实现原理4、Map接口中常用方法5、Map的遍历 七、Collection工具类引入 集合、数组...