07 2020 档案
摘要:#什么是Java内存模型 《Java虚拟机规范》中曾试图定义一种“Java内存模型”(Java Memory Model,JMM)来屏蔽各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。 在此之前,主流程序语言(如C和C++等)直接使用物理硬件和操作系统的
阅读全文
摘要:#前言 Stream的基本操作因为平时工作中用得非常多(也能看到一些同事把Stream操作写得很丑陋),所以基本用法就不写文章记录了。 之所以能把Stream的操作写得很丑陋,完全是因为Stream底层的一些东西不太明白。自己也需要注意。 本文就是介绍Collector的基本原理。以便加深自己的记忆
阅读全文
摘要:#前言 其实之前大家都了解过volatile,它的第一个作用是保证内存可见,第二个作用是禁止指令重排序。今天系统学习下为什么CPU会指令重排。 存储器的层次结构图 #1.CPU乱序执行指令的根源 CPU读取数据的时候会先从离自己最近且速度最快的L1_cache高速缓存取数据,取不到就找L2_cach
阅读全文
摘要:#前言 今天学习了Java内存模型第一课的视频,讲了硬件层面的知识,还是和大学时一样,醍醐灌顶。老师讲得太好了。 Java内存模型,感觉以前学得比较抽象。很繁杂,抽象。 这次试着系统一点跟着2个老师学习一下。 学习Java内存模型目的: 1.高并发情况下,java内存模型是怎么提供支持的? 2.一个
阅读全文
摘要:#前言 Java虚拟机设计团队有意把类加载阶段中的“通过一个类的全限定名来获取描述该类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需的类。 所以在整个类加载阶段,类加载器的作用就只是在第一步“加载”阶段。 今天就简单记录下类加载器的基本知识。(本文的讨论都
阅读全文
摘要:#前言 JAVA代码经过编译从源码变为字节码,字节码可以被JVM解读,使得JVM屏蔽了语言级别的限制。才有了现在的kotlin、Scala、Clojure、Groovy等语言。 字节码文件中描述了类的各种信息,都需要加载到虚拟机之后才能运行和使用。 简单学习了类加载进制后,写一篇文章记录一下以便加深
阅读全文
摘要:第一次学习看字节码文件,这个对工作没什么用,但是会提升内功。 首先介绍两个IDEA插件以及使用: BinEd:以16进制格式查看class文件 使用方法:右键class文件,点击Open as binary JClassLib:以一种更为方便的方式查看字节码,相当于javap -v HelloWor
阅读全文

浙公网安备 33010602011771号