00:00
下面呢,要给同学们讲解的是这个内容,就是线程安全的集合。那么理论上来说呢,理论上来说我们这一个不不变的就是我们不变的集合呢,已然就实现了线上安全,对吧,但是有一个问题。有一个什么问题呢,就是说我们这个可变集合呢,它在默认情况下,线程安全控制的并不是很好,愿意可变,那因基于这个原因呢,我们这一个,呃,SKY的设计者呢,他也支持这种可变集合的一种就是安全,线上安全,比如说像buffer,它提供了synchronized的buffer,那么也就是说。线程安全的这种集合呢,呃,就是会有这个synchronized打头,同学们呢,可以在这个地方去进行选用。这是线程安全的集合,下边呢,我们来看一个并行集合,这个还是非常有用的,这个也是为了达到一个优化效果,前面V呢,前面的V的那种优化呢,是让我们执行往后推。
01:07
这个呃,并行集合的操作呢,它是为了充分利用我们多核CPU的优势,大家都知道啊,传统的代码,传统的一些语言,它并没有真真正充分发挥我们多核的效率,你比如说大家大看,我打开我的任务管理器,里边有个资源监视器,大家看这里,哎,你看这边我有CPU,我一共有几个呢?大家看这是我的第一个和。CPU0。这是第二个,这是第三个,这是第四个,也就是说呃,老师这个电脑上呢,一共有四个和其实我是两个CPU。一个CPU2个核,所以说我是双,呃两个CPU4个核,那么现在我这个配置都是很低很低的了,像你们做大数据呢,一般来讲至少得16个核对吧?啊你们现在,呃,现在可能没有没有去跑这个项目。
02:05
啊,比如说我我在那个神VS上面,其实我就是我我那个CPU至少得16个,有些将来在你们公司里面就更更高了,比如像SPA跑起来特别好CPU,那现在就有一个问题,什什么问题,说这么多多核,你怎么充分利用它。如果说我们有这么多盒,但是你的这个计算并没有充分利用这一盒,那就白搭了,就好像你买了一一台特别牛逼的这个跑车。对吧?这个跑车跑的特快,时速最高能达到1000公里对吧?那问题来了,假如这个东西你第一个你驾驶员不会用,或者说我突然让你把这个跑车放在咱们中国的农村的这个乡村道路,你是跑不起来的啊,因为你跑开来我直接就game over了,对吧?你得跑到那个大道上给你啊,那个跑道上跑得起来,道理是一样的,那么我们怎么充分利用CPU呢?现在很多现代的语言啊,新的语言都加入了对多核CPU的调度,因为像个语言啊,啊,像Java里面的这个高版本呢,也都支持,从语言的层面上就多支持这个CPU了,那么我们看在这个SC里面呢,它是直接支持CP多核CPU的调度,它主要用到算法呢,简单聊两句啊,我说一下算法呢,具体我就不说了,我只是跟他聊两句,它的算法呢,一个是一个就是分制算法。
03:30
分支算法准确讲就是SP,这个叫这个叫这个叫分解啊,叫做分解器,我叫分数器。分数。分解啊。分解分解器这个叫什么呢?这个叫组合器,Combine叫组合器。啊,组合器,说白了,不管是分解器还是组合器,他们主要的工作原理就是将我们的计算工作分解成很多的任务。
04:01
分发给分发给不同的处理器去完成,这样我们就做真正做到了这个真正的并发。啊,以前传统的并发呢,其实看起来是并发,其实并不是真正并发,它只是那个CPU,那个调度时间单位很短,它你看我们以前单核你也可以一边上网一边看电影。看起来好像电影也能用,CPU也能用,其实看网页里看,其实CPU在平在不停的调度而已,那么如果有了这个分支算法呢,他就可以真正达到多个CPU同时计算。好了,这是一个算法,算第二个,第二个算法呢叫work ste,这个是什么呢?这个是用于调度。这个负载均衡的这个又有这个这个调度算法呢,跟这个分支算法是,呃,他们是相辅相成的分支算法,它可以把任务分解到不同的处理器去,但是问题来了,假如有一个处理器已经很累了,你再把任务交给他,实际上是不合理的。
05:03
这个呃,Worker斯丁呢,他的算法主要完成一个负载均衡,就说通俗的,呃讲就说自己的任务完成以后,发现其他人还有活没干完,他就会主动。会被这个调度,会被这个负载均衡调度算法,让让他调度到另外一个调度那个CPU继续干。啊,它达到这么一个负载均衡的效果啊,你们在后面学这个大数据的时候呢,应该如果说我不知道后面有没有讲过算法,如果讲算法的话,应该会讲一些像这种调度啊,或者负载均衡的算法。啊,这样呢,我们有些公司他会自己去开发一些适合他的业务逻辑的调度算法。啊,有些,所以说为什么有些这个我们说大数据有两种职位,一种是应用工程师,就是写别人已经写好的算法,就别人写好的算法你拿来用,还有一种就是自己设计算法,这个呢就比较高级一点,那当然这种这种如果设计算法的人呢,一般来讲,我经常说嘛,就是计算机学的特别好的,他还是学什么呢?学这个数学的这个厉害。
06:06
学这个数学的些哥们儿啊,其实是很很牛的,但前提是要学好,说我也在学数学,我学了一个高中数学还没学懂呢,对吧?学数学的人一般是比较厉害的,但是学数学学好了,他学什么都很快啊,学什么都很快,所以说为什么?呃,我们以前古就是我,我在上小学的时候,我们老师就说了一句话,特别经典嘛,他说学好数理化。照片天下也不怕是吧,其实你物物理也很有意思,化学现在其实用的少啊,化学化学一般谁谁比较厉害呢,就是中国的各种中国里面这个各个餐厅的老板,他是很厉害的,对吧,比如这个这个来来块肉本身已经已经臭了,他这一整堆香喷喷的对吧,已经已经快不能吃了,他也给你搞一搞,那中国好多是化学专家,你知道吗?所你吃了过全都是那个变质的,其实准确的讲,真正最好的是数学,这个锻炼人的义务逻辑能力,还有一个就是语文也很重要,语文学好了,你看看表达就很厉害,说数学和英语,数学和语文很重要。
07:09
呃,同学们呢,有时候适当的看点数学对大家有好处啊,比方说当然你们现在可能没有时间看了,其实数学是一个特别好的东西,呃呃,有时间去学点数学,数学学好了,算法自然就会了,好简单的聊了一下算法,那么现在我们看怎么用啊,其实它这个应用呢,特别的简单,就是在我们呃,SC里面,它这个并行计算特别简单,就简单到什么地步呢?就说只需要写一个。这个啊,Parael就行了啊EL,那么为了让大家感受到这个这个效果呢,同学们,我给大家写一个小的案例,比如说我这里有个1TO5是一个集合,那么for each进行遍历,那遍历干什么呢?我把它传给一个print,注意看啊,这个这个print内容,我这个下划线其实就代表一道里面传递的值,其实你不写也可以啊,好,我给他运行一下,看一下。
08:04
好,我们来看一下这个案例啊,看一下这个案例。好的好,我们来,我们干脆先先截段视频吧。
我来说两句