35岁程序员:解释执行java字节码文件的是哪个命令

2021/6/4 12:20:54

本文主要是介绍35岁程序员:解释执行java字节码文件的是哪个命令,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

引言

技术好就一定能写出优质的代码吗?不能,对于做开发的人来说,学到的技术知识是理论性的,只有把知识代入到真实的实战案例中才能快速将理论转变为技能。

一直在网上看到过很多关于类似的资料,要么就是版本比较老,要么就是讲的太干,没有阅读下去的兴趣,以至于在这方面的学习止步不前。

今天,我跟大家要分享的这份阿里《互联网实战案例》共有22大实战案例,每一章节都有对应的完整代码,同时在学习的过程中需要了解并运行代码,再也不用担心学不会了。

二、解析

1. 硬件层的并发优化基础知识

存储器的层次结构图如下:

各级缓存耗时对比:

采用分层缓存的层次结构会带来数据不一致问题,如下图:

那么如何保证数据的一致性,现代CPU处理办法有两种:

(1) 锁系统总线;

(2) 利用缓存一致性协议MESI(Intel处理器用的比较多,还有很多其他的缓存一致性协议),大致结构如下图:

2. CPU的乱序执行

CPU中有个乱序执行的概念,概念图如下:

CPU在执行指令的时候,往往不是顺序执行,但是会遵守as-if-serial原则,也就是最终一致性原则。CPU为了提高指令执行效率,会在一条指令执行过程中(比如去内存读数据),去同时执行另一条指令,前提是这两条指令没有依赖关系。虽然指令执行顺序发生改变,但是不会影响单线程执行结果。多线程情况下为了不让CUP进行指令重排序,则需要用到Volatile关键字,因为Volatile的重要作用之一就是防止指令重排序。

CPU还会存在合并写的现象。当第一条指令往上级缓存写入数据时,由于上级缓存访问速度比较慢,可能第二条指令又对上一条指令的结果进行了修改,那么CPU将这两条指令合并的最终结果一次性的写入到缓存中,这就成为合并写。

3. 如何保证不乱序执行

(1) 内存屏障:java采用的是内存屏障,内存屏障其实就是一个CPU指令,在硬件层面上来说可以扥为两种:Load Barrier 和 Store Barrier即读屏障和写屏障。主要有两个作用:

a. 阻止屏障两侧的指令重排序;

b. 强制把写缓冲区/高速缓存中的脏数据等写回主内存,让缓存中相应的数据失效。

最后

光给面试题不给答案不是我的风格。这里面的面试题也只是凤毛麟角,还有答案的话会极大的增加文章的篇幅,减少文章的可读性,因此仅以截图展示,需要的小伙伴可以点击这里即可免费获取!

Java面试宝典2021版

最常见Java面试题解析(2021最新版)

2021企业Java面试题精选

67533)]

2021企业Java面试题精选

[外链图片转存中…(img-Xk8nZ1tO-1622778667534)]



这篇关于35岁程序员:解释执行java字节码文件的是哪个命令的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程