00:00
好了,那么接下来呢,今天呢,咱们开始讲这个三八的这个新特性,对吧,我们说实际上这个三八呢,它早在2014年呢,三月份就已经有了,就已经发布了,那我们说为什么在现在讲呢,那么现在这个账号八呢,它随着比如说新最新版本的eclipse,对吧,它是不是只支持JAVA8呀,然后以及呢,很多安卓底层的这个框架都已经在使用这个JAVA8拉姆达表达式,对吧,JAVA8的一些特性,所以说呢,这个扎二八现在呢,在逐渐的被这个开发者们发现它的一些优点,它的一些好处,所以说现在应用呢,非常的广泛,但是并不意味着现在我们就业的时候,或者说以后你们工作的时候呢,就一定会用它,因为还是那句话,咱们这个做程序员的呢,说不是追求技术的新,而是技追求技术的这个最稳定,追求的这个稳定,所以说。到后以后你们工作当中可能用的还是七,但是呢,这个八呢,肯定是未来的一个趋势,有一些小公司可能像新项目对吧?并并且这个经理呢,项目经理比较前卫的话,可能会用它,所以说呢,现在呢,我们先对他做一个基本的了解和应用,大家出去呢,也有的说,或者说等以后需要用到的时候呢,你们也能第一时间就把它上手就能用,所以说现在讲到的这个时机呢,还是刚刚好的啊,那么咱们就开始,那么张老那个张二班呢,一共有我们就讲这么多对吧,当然在这里边呢,它有两个核心,以前也听说了那两大核心,一个就是改动最大就是这个lamonda表达式,是Java拉出的一种新的语法,那么另外一个呢,就是这个streamam API,那么有了这个AMAPI呢?我们操作Java中的这些数据,那就能如同操作circleq语句那么简单,对吧?
01:54
我们说操作这个搜索语句,操作数据,比如说我们查询,查一个这个,呃,年龄大于35的员工的信息,那我们怎么查呀,对吧,这是和什么employ意,然后用例什么大,等于35是不是就完事了,对吧?当我们学了这个string API和拉姆达表达式以后,我们在Java中操作这个类似于这样的需求的话,比SQ语句,甚至于比SQ语句还要简单,咱们到学到那块就知道了啊,那我们说张乐八现在为什么越来越被人们这个发现它的好呢?对吧,因为张老八呢,它有这么多的特性,有这么多的好处,第一个呢,我们说它的这个速度更快,那我们做灶八,它这个速度更快呢,它实际上体现在很多的方面,比如说它对于这个底层的数据结构做了一定的更新和改动,对于这个垃圾回收机制,也就是内存结构。
02:53
也做了一定的改变,以及他提这个之前我们也简单介绍过,他对于这个并行并行并行流,或者说并行的操作很容易的进行就能进行使用,对于并行的做了一个扩展和支持,那么我们就一点点说说它速度更快,对于底层的数据结构怎么做改动就让它速度更快了呢?我来分析分析,那么之前大家也说了,对吧,大家也听说了,说对底层数据结构最核心的一个,那就是哈希map,哈希map,那么哈希map他给做了一个怎么样的改动呢?那么咱们在讲哈希map的时候呢,咱们先回顾回顾,说原来哈希map是什么样的,它为什么采用哈希表,我们说如果呀哈希map不用哈希表的话,那么比如说我们说它这里边存储元素是不是都无序的呀,那要让我们往里添加一个元素,不能重复的话,那我们说比较两个元素的大,这个一不一样,是不是得用e cos去比对吧,如果不用。
03:53
哈希表不用哈希算法,那是不是就得用e cos啊,那我说那你要把这个元素添加到这个集合当中去,你得跟他e cos一次了,对吧,那你跟他e cos,那你跟他要不要一口一次啊,跟他要,那跟他要不要呢?所以说一个一个,每个是不是都得一口吃一次,那假如说我这个集合中要有1万个元素,那我要添加一个新元素,我得一口是多少次,那是不得1万次啊,对吧,那相应的我要是再加一个新的元素,我跟之前那个是不是还得在比呀,跟然后跟这里边的亚位数都得依水算,说如果说哈希map不用这个哈希算法的话,它的效率那是不是得极低呀,因此。
04:34
人家这个账号工程师他是怎么做的呢?哈,实际上是不是采用的就是这种哈希表啊,对吧?或者叫做哈希算法对吧?我们说我们称它为哈希表,实际上它在底层是不是就是个数组啊,对吧,就是一个数组,这个数组中存的都是什么东西,存的都是N对吧?是不是存的是一个个的N垂啊对吧,存的是一个个N垂,那么这样的话,用了这种哈希表有什么好处呢?我们说既然是数组,数组是不是都得有索引值啊,就是01234对吧?那么我们说map这个哈希表默认的大小是多少呢?是不是默认是16啊对吧?那么咱们暂暂时先画五个对吧,说如果它采用没有哈希表的话,说当我要往里添加一个对象的话,那么说首先会调用我这个对象的哈希扣的方法呀,调用我这个对象的哈希扣的方法,然后呢,根据哈。
05:34
哈希算法对这个哈西扣的方法是不是进行一个运算呢?运算之后说白了是不是就生成一个叫做数组的索引值,是这意思吧,对吧,那我们就称之为叫这个哈希表吗?说根据哈希克的方法生成那个哈希玛值呢,经过荷哈希算法运算,运算是不是说白了就运算成数组的索引值啊对吧?然后呢,当算上数组的索引值以后,那么它就根据这个索引值是不是找到它对应的这个位置啊,首先看这里有没有对象在吧,如果没有对象在怎么样,那说如果没有对象在的话,就直接存储啊对吧,直接存储,那么相应的呢,那我们说经过运算呢,说再添加对象呢,它说也会这个有调用它对应的哈扣的呀,经过运算,它有可能是不是生成的是三呢,对吧,有可能生成的是三,然后呢,那它就会直接到对三对应的这个固定的位置,是不是来找有没有对应位啊,如果没有怎么样啊。
06:34
是不直接进去啊对吧,那么就直接进来,那么相应的也会有一种情况是什么呢?就是说当我们对吧生创建一个对象,调用哈希扣的方法,对吧,然后有可能生成的这个哈希玛值运算O发现它是不是也可有可能还是一样,那么还是一到这个对象过到这个位置来找,看有没有对象在的话,一看有没有对象,如果有对象再怎么样,得再通过ES比较两个对象的内容吧,对吧,如果内容再呃内容一样怎么样?哎,对,如果内容一样,那么它的K啊不value流,它的Y流就把它的Y流给覆盖掉了,那时候最终保留还是一个呀,对吧,那还有一种情况就是哎,他不到这里发现这个有量在,然后一一颗是一比,发现两个对。
07:34
像是内容对E考试完全是不一样啊,那如果不一样怎么办?那是不就形成链表啊,那么它实际上形成链表,在接K1.7的时候,那是不是后加的,放前边是不是加到表头啊对吧?1.7的时候后加的,那实际上是放前边,然后在这里形成一个链表,对那么这种链表这种情况我们称它为什么呢?
08:04
称它为碰撞对吧,对吧,我们说发生的这种情况,我们就称它为碰撞,那么我们说种情况是不是我们应该尽可能去避免的,是不是说为什么要尽可能避免呢?因为如果这里的元素过多的话,那可能最终造成一个什么结果呀,那时候就效率低呀,说如果我再加一个对象的话,对吧,然后到这个位置找有没有对象,在一发现有跟它要不要ES,跟它要不要它,它它就都得ES一次,那这时就回到刚才我们最初的那种状态了呀,所以这个核是表是不是就没意义了,对不对,对吧?所以说这种碰撞的情况呢,我们是要尽可能的去避免的,对吧?那么我们说我们要避免它,我们能做的是是怎么做。
09:00
嗯,哎,我们说我们的那个哈西扣的方法和ES方法写的重写的时候是不是写的尽量的严谨一点,对算法写的尽尽可能的严谨一些,对吧,并且让二课的方法和ES方法是保持一致啊,对吧,说什么叫保持一致?就是哈说对象的内容一样,生成的哈西扣的值要一样对吧?对象的内容一样,E方法要返回数是这意思吧,对吧,你重写的时候要写的严谨一点对吧?但是呢,我们说即便我们哈西扣的方法和equals方法写的再严谨,那么这种碰撞的情况我们是也也是避免不了的吧,只能说让他这个概率减少,但是也是避免不了的,为什么避免不了呢?我们刚才说了,说当你这个创业一个对象,把这个对象要添加到哈希map中去的时候,它是不是产生一个调用哈希克的方法,产生一个哈希玛值,然后呢,人家是个哈希map采用的是叫做哈希算法,把这个哈希玛值,我们说哈希玛值是不是一长串啊,把这个哈希玛值经过运算,是不是运算成数组的索引值啊,那么我。
10:20
就说那你不管产生什么哈希玛值,产生多少个,但是数组的所引值实际上是不是就这么几个,一共就五个吧,那它要经过运算,运算的这个哈希玛值是不是一定在这个五个的范围内呀?那是不是有可能我创建十个对象对吧?那其中有一部分它的哈希扣的值运算以后对应的数组的算值是不是就一样,有没有可能,是不有可能啊?所以说碰撞这种情况呢,我们是避免不了的吧,即便是我们哈扣的方法写的再好,E扣方法写的再好,那么碰撞也是避免不了的。
11:00
对吧,对吧,那么既然避免不了,我们能让它太长吗?那是不是也不行啊,那也不能让它那里头元素过多,对吧?那于是人家哈西map又怎么做的呢?哈西map是不是给提供了一个叫做叫做加载因子啊,对吧,说加载因子啊,加载因子我们说它加载因子默认是多少,是0.75啊,这个零点七五指的是什么呢?指的就是说当这个元素到达现有这个哈希表的75%的时候,是不是就进行扩容对吧?那就得进行扩容,我说能到100%再扩容吗?那绝对不能,为啥呢?因为就有可能我这个经过行列算法运算,有可能对象就存到一,就存到3024,就是没对象进去,是不是有可能,对吧?所以说它不能到达100%再扩容,所以说是0.75,我说那能太小吗?那是不是也不行啊,对吧,哎,太小了也不行,对吧,你浪费空间。
12:01
对好了,所以说呢,它还是我们呃个折中的,那就是零点百分之七十五对吧,就是原来容量的75%的时候呢,就扩容,一旦扩容的话,他是不是注意他是不是就给把这链表里边的每一个元素是不是就是重排序,或者说就是重新进行运算,然后运算成新的扩容以后的那些新的位置啊,是重新运算位置啊,对吧,那注意的是每个是不是都得重新算一下啊对吧,经过哈希算法一运算,然后找到新的位置再加进去。是这么回事吧,那这样的话,在某种程度上,它这个碰撞的概率是不是就变低了呀,对吧,碰撞里面的内容呢,就可能就少了,那这是原来解决这种问题的方式。都能听懂吧,对吧,那么但是呢,我们说我们都刚才也说了,那即便是你有这种扩容的机制,那你扩容了以后,这种碰撞你还是避免不了吧,那一旦避免不了,那就意味着什么呢?就意味着效率低什么的,咱么为什么这种效率低呢?比如说现在呢,我要查询对吧,我要查询一个对象对吧,那一旦要找到,找到这个位置了,我是不是得查他是不是我们想要的,要不要查它,查它再查它,是不是再来查它呀,极端的情况你是不是把这里边的元素一个一个的都找一遍,然后有可能最极端的是不是就找到最后一个呀,再把它取出来,说这是我们要,那是不是效率又低了呀,对吧,对吧,那么于是呢,在JDK1.8以后,就对它呢,进行了一个改变,对吧,就不是原来的这个叫做这个数组加。
13:51
链表了,现在又多了一个什么呢?在这个1.8以后,从在数组加链表的基础之上又多了一个,首先是数组,然后是链表,然后还多了一个叫做。
14:05
红黑素红黑素,红黑素是不是二杀树的一种啊,对吧,是二杀树的一种,那么于是呢,说这里就就多了一个宏分数,说这个什么时候能变宏分数呢?它不是数,实时刻刻变,说如果说当你碰撞的这个元素的个数大于80大于八,就是你碰撞发生的个数大于八,也就是说当到达九的时候吧,或者说呃,与此同时,并且在总容量总元素大于64。听懂啥意思吧,就是总大小,对吧,你整个哈希map克中总大小是不大于64啊,对吧,每一个链表的长度大于六,并且总容量是大于64啊,那么在这种情况下呢,它会把这个这里呢进行一个转变,转成。黄分数对吧。
15:01
我看我这么画行不行啊。太小了吧。完了。二这是几个啦?12345678,嗯不行,还少一个这个对吧。好吧,说如果说呢,当某一个链表长度大于八,并且总容量是不大于64的时候呢,对吧,那这个时候呢,它把链表就转成了这种红黑数,听懂没,那么转成这种红黑数好在哪啊。好在哪?除了添加以外,其他的效率都比链表快,听见吧,除了添加以外,其他的都效率都高,为啥呢?我们说添加的话,那要是链表,那是不是就直接加这就完事了呀?对吧?注意在添加八的时候是加到末尾了,听懂吗?对吧?加到链表的末尾对吧?说除了添加添加链表呢,就直接加到后边就可以了,但是要是宏位数添加的话,那是不是得比呀?对吧?根据它的哈西扣的说比那个生成的哈扣的值看跟它比了对吧?比它大比它小,比它大比放这边对吧?比它大比它小,比它大放这边比它大比它小比它大是不放这边啊对吧?那是不是添加的时候稍微的慢一点啊对吧?但是除了添加以外,其他的效率是不是都高了呀?比如说我们要查询对吧,要查询呢,到这里我是不是只需要先找他呀,比它大,比它小,比他大找他对吧,比它大比它小,比他大就找他呀,找它的式取出。
16:43
出来看少比了多少次?对吧,是不是少比了很多呀,那你说效率高没高,你删除少多标查比一比,删除的时候是不是也有比呀,咱得看这个是不是我们要删的,不是这个是不是不是这个是不是是删掉啊,对吧?那么这些是不是就不用多比了,对不对,对吧?所以说它从电表转换成红霉素以后,除了添加操作以外,其他的效率都高了。
17:18
听懂吗?其他的效率都高了,不仅如此,而且还有什么呢?还有就是说扩容以后,扩容以后他们是不是得进行这个换位置啊,重满序啊,它就不会再去重新运算它的什么这个哈西数的值了,不用通过哈希算法就重新运算它的位置了,它只需要找它对应元素的二倍就完事了,对吧,就是52倍,就是它对应元素就是在原来容原来哈希表的总长度加上它当前所在的位置。那也就是说,比如说原来是这个五五加三,那是不是就是八呀,那就放到第八个位置就完事了。
18:01
对吧,对吧,对吧,某某一部分对吧,取出来直接放到那个对应的位置即可,那么这就是JAVA8中对于哈希map的一个改变。这听懂吧,那是不是不知不觉的话,效率肯定是提高了呀,对吧,效率就提升了,也就是说你只要把你的JDK对吧,1.7换成1.8以后,对吧,你什么都不用动,你的效率是不是就提升了。对不对,对吧,那我说哈希map变了,哈希set变不变啊,那是不是也变了呀,对吧,而且我们说这种哈希表的方式呢,它应用的也是相对来说比非常的广泛,对吧,我们说当你不知道对吧以后,你们坐在上面说说,当不知道选择哪种数据结构好的时候,那就选哈希表。对吧,对吧,对吧,就说你你不知道到底是选那个什么数组好,还是选电表好,对吧,不知道用什么好的时候,那就用哈希表。
19:03
是不是对吧,那就是哈希map,哈希map变了,那么。哈西set也变了是对吧,对吧,那么哈西set变了的话,我们说还有一个跟map相关的,之前咱们也提到了,这个还记得不了,看看他map,那么这个变变呢,它是不是也变了呀,它也进行升级了,对吧?首先它变成什么了呢?对吧,我们说在这低个1.7的时候,它是不是有个隔离级别,隔离级别默认是多少。好像没没没有听过这个东西是吧。这么快忘了,你可真逗死我了,你并发级别对叫并发级别对吧,不叫隔离级别,并发级别默认是几来着,是16啊对吧,咱们刚才讲是不是就这叫做这个content对吧,就content level啊Le对吧,Content level说默认是16啊,所以在这个地点七的时候呢,它采用的叫做所分段机制嘛,对吧,这时候每个段一共段默认这个段是16个段啊,然后呢,每个段里边对应着一个是不是在一个表啊,这个表是不是也是16啊对吧?那么首先呢,在这个1.8以后,它这个段是不是几乎就没有用了呀?改成了什么了?是不是改成CES算法了,对吧,改成了大量的用了,这个叫做CS算法,我们可以从CES算法是不是叫做无锁算法。
20:46
来呀,对吧,就如同我们可以看看源码对吧,叫做concurrent哈希map对吧?过来点进来,比如说我们当我们put添加的时候,它是不是人家的注释说是无所添加呀,Put哪去了put。
21:06
Put value看这这里人家竖式吧,对吧,是采用了是CS调用底层的compare and swap of that呀,加进去的,当然再往下是不是看不到了呀,对吧,采用的是无锁算法,所以说这个段呢,几乎就取消了,就为啥取消,所以这个段它的这个长度呢,不太好评定,对吧,你说的这个隔离级别太大,太大的话,那是不就是有很多的空间就浪费了,对吧,对吧,你这隔离级别太大,那是不有可能有某些段里边就没有元素啊,空间浪费说如果太小呢。太小A就造成每一个段都可能它的元素是不是就过多呀,对吧,那它效率是不是也低呀,对吧,所以说它都之后呢,都给产生这种的叫做是不是叫哈希算法呀,对吧,采用了叫哈希算法,然后呢,采用了哈希算法以后,那是不是这里边是不是还是哈希表啊,那首先这个哈希表变不变是不哈希表变成这叫做链表,然后以及和是不红分数啊对吧,是不是也变成红黑数了呀,对吧,那链表和红黑数。
22:19
是不是这意思对吧,是不是这意思啊,对吧,链表加上红黑数对吧,就简单画一画吧,那那这样的话呢,是不是效率也会提升啊,对吧?并且它采用了CAS算法,CAS算法之前我们也说了,它要比我们的这个锁效率是不是要高,对吧,说CS它是底层操作系统支持的算法,效率是要高的,听懂吗?对吧?所以说content还map效率也提高了。这能稳定吗?对吧?那这些呢,面试的时候都可以说的啊好了,那么这是哈希map,我们说呢,那我说速度更快,第一个对于底层数据结构是不是就进行了一个改变呢?对吧,那这是第一,第二呢,它对底层的内存结构也变得不一样了,听懂了对吧?对底层内存结构,我们说原来画这个内存图的时候,这是不是叫做占,这叫做堆,还有一块区叫做是不是方法区啊,我们说方法区它实际上是属于哪堆的哪部分,哎,说它属于堆中永久区一部分呢,对吧?所以这叫永久区对吧,说它属于堆的永久区的一部分,对吧,这是永久区的英文名啊对吧,对吧,它属于堆的永久区的一部分,方法区域属于堆州永久区的一部分吧,对吧?
23:52
对吧,那这是它对吧,然后这部分我们是称之为垃圾回收区啊,对吧,那么相应的我们说啊,我们之前说诶那这既然它这个是方法区属于多内存的永久区的一部分,为什么每次我们画图,你们以前画图是不是把它画在这啊是吗?你们以前把你们以前老师带着你画图,是不是把这个永这个方法区画这啊是不是也是啊对吧,我们说那既然这个方法区它属于永久区的一部分,为什么每次画图我都把这个图画到堆到外边来呢?什么人呢,实际上是非堆。
24:52
对吧,但是但是我们,但是我们知道是不是它是永久区,算反正算是永久区的一部分呢,是堆中永久区的一部分,对吧,我说这个永久区实际上都存什么呀。
25:11
是不是就存一些类信息啊,对吧,存一些加载类的一些信息,对吧,或者说我们说这个叫做叫做人家核心类库是不是都没加载到这样对吧,我们说主要呢,就是加载类信息,我们说当我们加载个类类是不是全存在,是不全程方法区啊对吧,那我说我先问一句说什么呢?说这个永久区,它会不会永久区玩内容会不会被垃圾回收机制所回收呢?呃,这个对说的对,几乎不会对吧,但是我说它不,虽然它叫永久区,但是不是不是说他不会被垃圾回收机制所回收吧,它是会被垃圾回收机制所回收的,只不过回收的条件是比较苛刻呀,对吧,回收的条件比较苛刻,那么我们说它既然原来呢,一直都属于永久区的一部分,凭什么我们就每次把它划到对外边来呢?
26:11
对吧,实际上我们说还有一个,除了你们知道那个,还有一个说法是什么呢?就是说实际上gbm厂商是不是有很多种啊对吧,Gbm厂商实际上是有很多种的,比如说都有哪些呢?首先我们现在用的那是不是就是散公司的对吧?当然现在人家是不是属于Oracle啊,对吧,Oracle sun公司推供的叫做hot sport pet是不hotport啊对吧,那这个呢,是我们现在常用的,对吧,说除了这个这个holdpo以外,是不是人家比如说这个叫做orle Oracle自己本身原来是不是也有自己的gbm啊,叫做j rocket对吧,Rot是不g rocket,这是家Oracle自己的GPM啊对吧,相应的这个IBM是不是也有他们的GM啊,就是叫做g nine g9gm对吧,相应的GM是不是也有国产的?
27:11
我操,你们觉得谁能做出这是写出自己的来,是不对呀,叫做涛报GB对吧,对吧,我们说这就是我们国产的GPM对吧,那么实际上呢,早在这个GDK1.7以前的时候,除了house以外,对吧,其他的这个gbm厂商早就没有这个永久区了,听懂白对吧,早都已经没有永久区了,对吧,也经这个永久区呢,已经没有了,然后呢,他已经把这个这个永把这个方法区从永久区是不是剥离出来呀,那也可能就是说。Ho,它也逐渐的在把这个方法区就从永久区给它剥离出来啊,对吧,也逐渐的在给它给它剥离出来,所以说呢,它我们平时画就不把它画到堆里啊对吧?那么于是呢,在JDK1.8以后,那这个永久区的就彻底的被干掉了,听懂吧,那以后就没有这个永久区了,在这个篇角包的时候呢,就没有这个永久区了,没有这个永久区了之后,那么取而代之的叫什么了呢?哎,这个呢,就叫做叫Meta space s spacece是Meta space我们称之为叫做圆空间,对吧,叫做圆空间make space是不是叫圆空间呢?这个圆空间相较于原来的这个方法区,它有什么不同呢?最大的不同之处就在于什么呢?它使用的叫做物理内存。
28:59
是吧,他用的是物理内存,直接用的是物理内存,什么叫做物理内存,也就是说你系统是不是就这东西就就用的这个呀,对吧,它直接就是用的物理内存,而不是你自己去分配内存的是不是对吧?那你就说你物理内存多大是吧是吧,我这个圆空间就能应用多大。
29:24
这能听懂吧,对吧,那这就是圆空间的好处,那么既然它首先它采用的是物理内存,那么也就意味着,那这个垃圾回收机制是不是也意味着随直就优化了呀,就如咱之前我们说说,虽然说永久区或者说方法区的内容,它回收的条件比较苛刻,但是它是不是也会被回收啊,怎么被回收,比如说比如说其中一条就是当你这个方法区快要满的时候。那么垃圾回收机制就会对这个里边进行回收。是吧,而现在我说这个圆空间是不是就是说,如果说当你这个大快要满的时候,对吧,车要满的时候,或者说容量过大的时候,超标了的时候,那么说垃圾回收机制再开始运行才能开始回收啊,对不对,是这意思吧,那也就意味着什么呢?现在他用的是物理内存,物理内存那么当那垃圾回收机制运行的概率是不是也就变低了,对吧,对吧,那这就是叫做圆空间,或者说在底层的这个内存结构上的一个改变。
30:31
更新。知道吧,对吧,那相应随之呢,就是垃圾回收机制啊等等,这个它也会效率有所提升。那么有同学想说,哎,那么既然这个堆它现在用了这么这个这个类的加载信息全都存圆空间了,那么我说有一个叫做OM,也就是什么呀,Art of什么memory这个N那个那个异常还会不会发生了呢?不,那个错误还会不会发生,也会,但是发生概率呢,是不是就极低了,对吧,那是不发生的概率就极了呀,对吧?因为现在他是不是用的是物理内存呢?你要想物理内存超通报,那是不是还是挺难的呀,除非除非有什么情况呢,说你做的那个应用程序呢,它就是专门用于是不是加载点自源码文件的呀,就是用于加载类文件的是吧?把一一千万个一个亿的对吧,那个点都加载到内存中来,那有可能,对吧,对吧,但是概率是不是就比较低了呀,对吧,那么相应的,既然这个既。
31:42
诶,我们说这个永久区这边的内存空间都变了第吧,那么相应的你们之前那个gbm调U的话,它这个参数是不是也变了呀,其中有个叫做什么prime game size,是不是有这么个参数,有吗?那这个是不是也没有了呀,对吧,它已经无效了,听懂吧,对吧?那么相应的这个呢,参数是无效,相应对应的还有一个叫做max prime game size,这时候是也没有了呀,对吧?那这两个参数呢,在这个1.8中也无效了,取而代之的那就是什么了呢?变成了叫做make space s s和叫做max Meta space size,诶你们挺知道你们space是吧,是S,是不是取而代之是这这个东西啊对吧对吧,取而代之的是这个space ACE上面这个取而个A。
32:42
PA呀,是这个呀,对吧,取而代之的就是这几个。对吧,对吧,就是说默认呢,是你物理内存增大,原空间就用多大,当然你也可以去配置,是这意思吧,对吧?好了,那这就是对底层数,这个叫做内存结构的一个更新。
33:05
了解对吧,搞定搞定了以后呢,那这速度更快是不体现了很多了呀,除了这个以外,对吧,之前的并行流,并行流咱们是不是之前也演示了一下稍微的对吧对吧,就是咱们搞那个fo合状框架的时候,我们是不是给大家演示了一个这1.8呀,算一到一百五百个亿的时候,对吧,对吧,我们说在账号八中我们写了呢,那才几行代码啊,是不是就搞定了对吧,它的效率也提升了,对吧,那么这就是第一个速度更快,除了这个以外呢,他说代码更少了呀,因为它增加了一个新的语法,叫做拉姆达表达式,对吧对吧,我们说有了这个拉姆达表达式,我就让我们就可以让我们这个代码更少,更简洁,提高可读性,然后呢,第三个呢,说提供了一个叫做强大S streamam API啊,注意我在这里是不是加了个强大的呀,这个streamam API,有了它以后,那么就意味着刚才也说了,就意味着你。
34:05
比在Java中操作数据是不是就能像circlel语句那么简单了,比circlel语句还简单呢,对吧,相应的并行变为并行,它对那个fo join是不是叫分支合并框架呀,进行了一个提升,为啥提升之前给大家讲那个讲的时候我们自己写算法麻烦不麻烦,我还得自己算,劈成两半,然后再劈两半,劈到不能再匹为止,是这么写的呀,那个时候我们写的还是一个很简单的需求,咱们是不是就写了那么半天,还得算半天,随时应用当中哪有这么简单的需求的呀,对不对,对吧?所以说原来的分杠框架,它为什么应用的人不是特别的多,就因为它写起来难,很容易出错,能懂吧?那么在这个1.8以后,他对于这个剖障呢,进行了一个大幅度的一个提升,咱很方便的就能从这个串行切换到并行,对吧,很方便,你只需要调用一个方法即可。
35:04
那么还有最后一点就是呢,扎VA8呢,它最大化的减少了空指针异常的发生,我就问在座的各位有没有没遇到过空指针异常的,那时候肯定没有啊,说只要是程序员他没遇有没遇到过控制针异常的,听懂没对吧,只要是成员说你要是没有遇到控制异常,那它就不是成序对吧?对,就没敲过代码对吧?那我们说原来我们解决一个控异常,有的时候麻烦又麻烦,你说嘎嘎,Debug呀,对吧,DEBUG1步说哎,这钩到底是哪来的,哪发生的控制针异常,你说一定去调对吧?所以说呢,这个控制值异常呢,是对于我们成权来讲还是非常的头疼的,那么于是呢,在张二八中,他最大化的去减少了控制异常,说白了它怎么解决的呢?它提供了一个叫做说白了就是一个容器类,叫做optional容器类,对到没对吧,就是把我们的要这个有可能为空的对象呢。
36:05
那封装到这个容器内里,然后给你提供一些解决的方法是吗?对吧,就可以最大化的解决控制力程,那么其实这为更改动最为大的,那是不是就两样,一个叫拉姆达表达式,一个是STEMAPI对吧?好了,那么上面呢,这就是张VA8的一个简介对吧?那么呢,我F。
我来说两句