摘要:
前言 学习类加载必然离开不了sun.misc.Launcher这个类和Class.forName()这个方法。 分析ClassLoader.getSystemClassLoader()这个流程可以明白下面几个知识点: sun.misc.Launcher的初始化 初次接触线程上下文类加载器(Threa 阅读全文
摘要:
#前言 身体是革命的本钱,不舒服了2周,现在好点了。 学习JDK8的Stream,Spliterator这个分割迭代器是必须要重视的。 Notes:下方蓝色文字是自己的翻译(如果有问题请指正)。黑色文字是源文档。红色文字是自己的备注。 #Spliterator类源码文档 用于遍历和分割一个数据源中的 阅读全文
摘要:
#背景 银石双赛结束,第二轮三连赛的最后一场将转战西班牙,第50届F1西班牙大奖赛将于本周末(正赛2020-08-15)在加泰罗尼亚赛道上演。 作为近年来F1承办季前测试的赛道,所有人都对这里再熟悉不过了,因此西班牙大奖赛绝对会是实力的硬核比拼。 来源于官网:F1西班牙2020赛道官网 #赛道地图 阅读全文
摘要:
#前言 前面介绍类加载器的时候,介绍了一下命名空间这个概念。今天就通过一个例子,来详细了解一下【类加载器的命名空间】。然后通过这个例子,我们可以总结一下双亲委托模型的好处与优点。 #例1(不删除classpath下的class文件) ####首先定义一个MyPerson package com.ja 阅读全文
摘要:
#前言 学习类加载器就一定要自己实现一个类加载器,今天就从一个简单的自定义类加载器说起。 #自定义类加载器 ###例1 一个简单的类加载器,从一个给定的二进制名字读取一个字节码文件的内容,然后生成对应的class对象。 package com.jamie.jvmstudy; import java. 阅读全文
摘要:
#背景 今天晚上(2020-08-02)是今年英国大奖赛的正赛。刚好了解了一下赛道地图。记录一下,明年就不用到处找了。 #简介 银石赛道(Silverstone Circuit)由一个废弃的空军基地改建,位于英国伦敦以北约100公里处,最早是二战时期的军用机场,1948年在此举办英国大奖赛(GP), 阅读全文
摘要:
#前言 学习JVM类加载器,ClassLoader这个类加载器的核心类是必须要重视的。 Notes:下方蓝色文字是自己的翻译(如果有问题请指正)。黑色文字是源文档。红色文字是自己的备注。 #ClassLoader类源码文档 public abstract class ClassLoader exte 阅读全文
摘要:
#什么是Java内存模型 《Java虚拟机规范》中曾试图定义一种“Java内存模型”(Java Memory Model,JMM)来屏蔽各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。 在此之前,主流程序语言(如C和C++等)直接使用物理硬件和操作系统的 阅读全文
摘要:
#前言 Stream的基本操作因为平时工作中用得非常多(也能看到一些同事把Stream操作写得很丑陋),所以基本用法就不写文章记录了。 之所以能把Stream的操作写得很丑陋,完全是因为Stream底层的一些东西不太明白。自己也需要注意。 本文就是介绍Collector的基本原理。以便加深自己的记忆 阅读全文
摘要:
#前言 其实之前大家都了解过volatile,它的第一个作用是保证内存可见,第二个作用是禁止指令重排序。今天系统学习下为什么CPU会指令重排。 存储器的层次结构图 #1.CPU乱序执行指令的根源 CPU读取数据的时候会先从离自己最近且速度最快的L1_cache高速缓存取数据,取不到就找L2_cach 阅读全文