00:00
各位同学,我们继续通过前面案例的演示,我们已经明白了在四种方法下面,他们各自的性能表现。那么对我们的龙达是完全吊打奥米克和SNCH的。只要是。并发大数据的情况,下面这样的点赞技术啊,那么大家请看,性能几乎相差十倍那么好。接下来我们要进入深度的学习。那么请问long a达为什么能做到这一切?底层原理是什么?你会用了它为什么快?所以说接下来我们就要对long a达。完成了高性能对比的这样的案例之后,对它底层的原理和源码来进行深度的讲解和分析,那么在面试过程当中,交给面试官回答很好,你能说得出龙埃达比奥特米克long更快,那底层原理是什么呢?你大概说一下,好,我们来,同学们接下来我们走到这一站。挨达相关的原理和源码分析。嗯,还记得开始的时候,兄弟们几。
01:04
十八罗汉那讲到这儿了,以后几乎这16个,那么弟兄们相关的已经全部按类别给大家过了一遍。那么另外另外的两个隐藏角色在哪呢?那么下面在学习解读用埃达尔为什么快的底层原理之下,我们要看看这套数字架构他们相关的底层编码是什么情况。那么来同学们。打开我们的架构图long a,它呢继承句STRIP64这么一个类,而这个类又继承我们的number类,通通实现了序列化接口,所以说前面那16个加上这个和这个,我们呢共计18个类。底子就是它,它是非常重要的一个类,那么所以说在我们的API里面啊,那么同学们就这大圈,它底子几乎都跟他或多或少,尤其是我们这个number,大家请看啊奥Tom longtom integer都跟number有关系,好,那么所以说我们龙a strip64的这么一个词类,因为它底噪大家请看。
02:14
阿达记成了简成64这个类,而这个类又记成了number嘞,他们两个一加刚好是十八罗汉归位,好,那么同学们我们可以简单的看一下原码。OK,好了,那么隆艾达它为什么这么快,跟这个的负类的设计有很大关系,来,我们继续,首先我们来看看啊。我们的官网要求和阿里的说明在这儿龙挨这个类有这么一段话,那么我们先看阿里的,我们刚才已经演示了JAVA8龙埃达肯定是要比奥米克long性能更好在这块。埃达肯定要比奥long性能更好,对吧?数据越大,性能效果的评估越能看得出来。但是如果说性能。
03:00
或者说你的反问并发量比较低呢?那么来看看上面这段话,用对应的解析,那么来。我们走到龙挨达在这儿。刚才红色这段话就是对奥特奥米克和隆埃达他们两者的一个说明。也即如果你是在。线程不多,低一竞争环境下面这两个类用有相似的特征,也就是说假设不是高并发大数据的话,你用龙挨用奥特米克lo性能效果差不多,但是注意高帧用的情况下,这一类也是这个龙挨达性能吞吐量明显更高,所以说我们完全按照官网的要求来进行学习,那么在这儿你看。高的这个吞吐量的话呢,那么它呢是一定会性能效果更好的好,那么可以坚定了我们这个要求,那么接下来我们就来看看这句话了,什么叫减少乐观锁的重试次数呢?那么请问凭什么隆埃达就要比这个奥米克law性能会更好呢?底层原理是什么呢?来吧。
04:00
探究之前,我们先了解一下两个东西,一个是64这个类和cell单元格类。好,来,同学们。在我们的64这个类下面有几个比较重要的成员函数啊,所有东西呢,都来自于源码的抓图,那么来同学们这个类巴拉巴拉一大堆是什么?我们后面聊,但是现在请大家先记着这么几个东西。第一个,这有一个静态内部类叫cell单元格内,OK,听不懂一句话。Excel里面这样的一个一个的格子单元格啊,楼层单元的单元,一个格子的格子单元格,好第二个请大家看,请记住这四个。相关的变量。第一个number CPU,也就是你自己运行程序的主机的CPU核数,第二个sales数组,那么当然也就是sales这个单元格的一个数组这样一个类型啊,一般是二次方会进行什么扩容,来这有个long base。
05:03
好,最后一个有一个什么。自选锁看到没有?那么有一个sales busy,那么言下之意就是这个sales就是它这个。每一个数组的某一个单元格是否忙碌好,那么同学们,我们先混个眼熟啊,就这一圈,那么所以说呢,我们这几个单元函数。老师呢,都给大家做好了笔记,并做好了相应的英文翻译,如果哪一天忘记了,直接打开,OK,那么刚才呢,也给大家呢说了一个大致的意思啊,那么如果你觉得四个记不住,那么下面我们呢要求两个,一个叫sell数组,另外一个叫long base基本类base value。OK,好了,你就先记住这个,那么接下来我们来看一下啊,再还是回到我们的原码。对他而言啊,同学们有很多方法也定义了这大堆啊,那么比方说什么。
06:03
Advice pro,那么CS base cns sales busy,那就是我没说你也会明白这个cns base,那么相当于说他这个方法啊,弟兄们请看。那是不是也是按C类比较并交换一个long类型,这个东西我们前面讲过,当前对象对于这个地址下面它的比较的希望的和最后修改的好等等,那么所以说我们待会来读源码的时候,那么同学们我们呢,就要学会查找,那么再来看看其他的啊,先混个眼熟,还有个CAS sales busy,那么来同学们这是不是有个叫sales busy,我们也简单的来看一下,也是一个什么。比较并交换,那么这个这个就是什么,Sales busy。来,大家请看。OK,都是按类的,那么好,我们先混个眼熟,那么这一圈下来以后给大家做了个总结。Face啊?这些东东么,后面我们在读源码的时候,会把这个表抓好图以后给大家进行对照,那么这个呢,就避免反复的切换,那么现在,那么大家就清楚我们先获得一个什么,简简单单的一个感性的认识,好,那么接下来这个是64这个类,它具备哪些方法,具备哪些变量,我们先简简单单的做一个演熟好,那么C呢。
07:26
它是这个包下面STRIP6C下面的一个内部类,那么在哪呢?那么同学们not就在这儿,就是这个静态内部类,这那么在我们的这个目力所及范围之内,那么大家请看啊,呃,我们找到它。回到我们的。上面,那么大家请看。在这我们会发现有个静态类不类啊,前面这段那么呢,我们暂时不展开,是避免伪共享这样一个,它单独占一起缓存,那么现在classce我们大家请看。
08:00
对应着定义好了这个单元格,它所具备的方法和属性好,那么这个就是我们将要源码解读所需要了解的前提知识,那么现在仅仅把握至少就是这么。两个东西,一个单元格数组元素cell,第二个long base base value,这个基础内OK,好,那么这个就是我们要理解龙埃底层原理和进行源码分析所所所需要了解和熟悉的前置知识。
我来说两句