源码分析 LinkedHashMap

HashMap大家都清楚,底层是数组+(链表/红黑树),元素是无序的,而LinkedHashMap则比HashMap多了这一个功能,并且,LinkedHashMap的有序可以按两种顺序排列,一种是按照插入的顺序,一种是按照访问的顺序(初始化LinkedHashMap对象时设置accessOrder参
源码 Java 2020年09月10日 73次浏览

源码分析 HashMap

作为工作中最重要、最常用的容器之一,当然还是要自己动手写一篇HashMap的源码解析来加深对其的印象咯,而且它的设计与实现也有很多值得学习的地方。源码赏析JDK1.8的HashMap底层使用的是动态数组,数组中元素存放的是链表或红黑树。核心源码如下。publicclassHashMap<K,V
源码 Java 2020年09月02日 113次浏览

源码分析 ConcurrentHashMap

HashMap源码中主要了解其核心源码及实现逻辑。ConcurrentHashMap就不再重复那些数据结构相关的内容咯,这里重点看一下它的并发安全实现。源码如下。publicclassConcurrentHashMap<K,V>extendsAbstractMap<K,V>i
源码 Java 2020年08月31日 137次浏览

源码分析 ThreadLocal

先看Thread类的源码,再理解ThreadLocal相对容易一些。ThreadLocal类提供了get/set线程局部变量的实现,ThreadLocal成员变量与正常的成员变量不同,每个线程都可以通过ThreadLocal成员变量get/set自己的专属值。ThreadLocal实例通常是类中的私
源码 Java 2020年08月26日 160次浏览

youtube-dl 视频下载神器

简介是不是很想把平时看的youtube,youku,bilibili视频下载下来,而且还是批量播放列表下载,youtube-dl你值得拥有。安装ToinstallitrightawayforallUNIXusers(Linux,macOS,etc.),type:sudocurl-Lhttps://y
youtube 下载 2020年08月20日 189次浏览

源码解析 Thread

实现多线程从本质上都是由Thread类来完成的,其源码量很多,本次只看一些常见且重要的部分,源码和解析如下。publicclassThreadimplementsRunnable{/**这里只看一些常见的参数*//**线程名*/privatevolatilecharname[];/**优先级*/pr
源码 Java 2020年08月19日 180次浏览

源码解析 String

重点看一下equals()和hashcode()方法,然后看一下String类常用方法的实现。publicfinalclassStringimplementsjava.io.Serializable,Comparable<String>,CharSequence{/**保存String的
源码 Java 2020年08月18日 201次浏览

JVM 第十章 类加载器

类加载器类与类加载器判断类是否“相等”任意一个类,都由加载它的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性,每一个类加载器,都有一个独立的类名称空间。因此,比较两个类是否“相等”,只有在这两个类是由同一个类加载器加载的前提下才有意义,否则,即使这两个类来源于同一个Class文件,被同一个
Java jvm 2020年08月17日 194次浏览

JVM第九章 类加载的过程

类加载的过程类加载过程包括5个阶段:加载、验证、准备、解析和初始化。加载加载的过程“加载”是“类加载”过程的一个阶段,不能混淆这两个名词。在加载阶段,虚拟机需要完成3件事:通过类的全限定名获取该类的二进制字节流。将二进制字节流所代表的静态结构转化为方法区的运行时数据结构。在内存中创建一个代表该类的j
Spring jvm 2020年08月16日 205次浏览

JVM 第八章 类加载的时机

类加载的时机类的生命周期类从被加载到虚拟机内存开始,到卸载出内存为止,它的整个生命周期包括以下7个阶段:加载验证准备解析初始化使用卸载验证、准备、解析3个阶段统称为连接。加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须按照这种顺序按部就班地开始(注意是“开始”,而不是“进行”
Java jvm 2020年08月14日 217次浏览