系列 1:P21:多线程与高并发:1.计算机的历史 - 马士兵官方号 - BV1mu411r78p
别的我就不多做介绍了,呃我们开始今天的课,首先跟大家说呃,这个训练营呢也是我在今年最后一次讲纯现成的训练营了,呃为什么是这样啊,因为这个训练营呢我也讲过好长时间了。
后面的呢也就逐步的把这个训练营的内容呢会做更进一步的更新,这是今年最后一次讲了,呃希望大家伙珍惜,当然我后面还会讲其他的训练营,讲线程呢讲了好长好长时间了,呃讲到因为现场这件事啊确实挺重要。
呃尤其是你在去面试的时候,在进大厂的时候啊,在做各种各样的这种嗯,和别人去交流的时候,就关于这件县城这件事呢问的是特别特别多,那么县城的我们的课程里呢也讲了三季了,后面我想更的就是第四季了。
呃这三季的内容呢其实还是挺深入的,足以涵盖呃大厂的90%以上的这种面试的内容,呃,但是呢有很多人呢对于现场的透彻理解还不是很到位,所以在我第四季里面呢,我是打算从最根儿上啊,从最根儿上给大家讲。
现场的内容有的时候呢其实大家伙对于现场的理解不到位的时候,是因为他不懂硬件,不懂硬件,基本上就不同软件,所以呢我在后面讲的时候会从cpu的电路原理这块开始,呃,今天呢就尝试从这里开始。
这也是一个小小的尝试啊,讲的不好的话呢,大家伙多担待啊,可以开始的话,我们就开始好吧,呃给老师扣个一可,好,那么这次讲呢我会,嗯嗯,呃这次讲呢我会先从计算机的历史啊,简单跟大家伙慢慢聊,还是那句话。
你听我的,听我讲课呢,咱那会儿聊聊天,然后呃慢慢听着就成了我们简单聊一聊计算机历史,聊着玩,公开课呢大家伙呢也不要说太给自己太大压力,说我一堂公开课我就要拿到一个什么样的程度,达到一个什么样的程度。
学到多多多牛逼的知识,知识呢肯定是要学的时间来积累,所以公开课呢我们轻松一点啊,嗯,这个我们聊聊几次你简单的历史啊,那个以前有那种,尤其是现在最近一个阶段,这个好多的好多小伙伴呢。
他的民族感自豪感特别爆棚,还有说他是把把算盘当成计算机的起源,这个可以这么说,为什么呢,因为那个后面我会讲啊,有有比较牛逼的计算机的鼻祖,它的0001的来源啊,就是零一这个来源它是来源于中国。
号称是来源于中国的阴阳八卦,好吧,就是这八卦图,长长长这样的八卦图是吧,哎他是说灵灵感是来源于这儿,但是说计算机来源于算盘,我觉得这事儿其实是有点夸张的,不太靠谱,这东西历史这玩意呢是仁者见仁。
智者见智啊,我就写着玩,你可以不同意,非要追求计算机鼻祖的话,实际上最早开始的时候呢是一个机械计算机的发展历史,就是17世纪的欧洲啊,大量的工业模具需要计算,那这时候怎么就做计算呢,欧洲那时候没有算盘。
所以就催生了很多科学家自己发明的计算器,这个计算器呢它会长这样。
待会儿可以可以可以看一眼,它实际上是纯机械计算机。
好吧,长这模样啊,但是图我是随便找的。
别的抓过来,的实际当中呢可能比这个要简单一些或者更复杂一些。
但是很牛逼的,它这东西是纯机械的,就是摇齿轮就可以了。
这边齿轮摇进去,那边齿轮输出结果嗯,最早的发明人呢它叫做帕斯卡啊,我不知道多数人应该听说过这个人的名字叫帕斯卡。
就是我们平时所说的压强单位啊,怕不怕千帕等等,这些是我们的压强的单位,如果说这个你不知道你学计算机的小伙伴应该知道这门语言。
这门语言叫什么,passport好了。
这门语言就是为了计算这哥们,他是机械计算机的发明者,possible学过这门语言,能给,老师扣个一来很古老的一门语言,有没有有没有同学学过或者听过的sugar嗯,呃一般来说比较新的这些小伙伴啊。
就是比较年轻的小伙伴是没有听说过这个名字的,passgo呢是很早很早的一个计算机科学计算语言啊,我上学那会儿是学过pass pascal语言的。
后来呢这个机械计算机已经发明之后呢。
经过了五历代的这种改进啊,就是改进的特别牛叉啊。
其中有一个的改进者,我觉得值得说,这哥们儿叫什么呢,这哥们儿叫莱布尼茨,这样啊,我把这个图看看是不是能给大家放大一些。
不太好,不太容易,放一会儿再说。
这哥们儿是叫莱布尼茨,这哥们儿就更牛叉了,多数的同学应该都学过微积分,微积分应该都学过呃,著名的牛顿莱布尼茨公式,好莱布尼茨是谁说的,就是他其实很多历史上的东西说起来比较好玩儿,严格来讲。
牛顿来不及此公式很,有可能,但是历史就还是那句话,就历史是胜利者书写的,那个历史上很很有可能只有莱布尼茨一个人发明了这个公式,这个公式发明之后呢,当时牛顿这人呢,他是英国皇家学院的皇家数学院。
应该是他这时候呢权力比较大,话语权比较大,比较牛逼,他就想着把这个发明给抢过来,后来牛顿呢就发表了一篇文章,就说莱布尼茨的这个公式是抄了牛顿以前的手写的一个笔记。
莱布尼斯说我没有抄,牛顿说你又抄了,那个时候牛顿的话语权非常大。
后来莱布尼茨争不过他。
因此呢后面莱文尼茨发表的这篇论文就被牛顿抢走了一半,结果后来这个公式就叫做牛顿莱布尼茨公式,这个咱们聊着玩儿呃,我不知道大家了不了解话语权这件事,那个当今世界话语权最大的是谁,米国嘛。
那个他想把他想把新冠命名称命名成什么名字啊,这个大家知道吧,当然那是英国是抢人家的,抢人家的成果,美国是要干嘛,是要把一个差的东西强加给强加给我们是吧,我们当然是不能同意的。
当然历史上有一个病毒叫西班牙流感啊,不知道大家听说过没有,你看到这个名字的时候,你一定会认为这个是西班牙那边流行起来的,但实际上是这样吗,no是当时的美军,驻扎在西班牙的美军内部开始流行。
但是西班牙的话语权肯定是干不过米国的,所以最后这个流感居然被命名为叫西班牙流感。
当然我们现在还在争是吧。
这个不说了啊,我们说回来来了一次。
这哥们儿呢改进了计算机,机械计算机之外啊。
它还有一个非常非常重要的发明,这个发明就是大名鼎鼎的二进制。
好这里呢终于跟计算机扯上关系了,其实呢从历史来讲。
二进制是首先发明,然后才诞生了现代的计算机。
当然莱布尼茨啊,他是在一本著作里头确确实实说明了他的二进制是来源于中国的。
在中国的这个阴阴阳八卦,而且呢莱布尼斯这个人确实对中国有所了解。
他有一本书叫做论中国人的自然哲学。
这里面,就提到了阴阳八卦,然后呢他当时发明了二进制之后呢,因为他当时的那个生活的年代正好跟康熙的年代是一个年代。
呵呵挺好玩的是吧,讲了点古老的东西,零这个012进制发明之后啊。
到1946年的时候才诞生了现代的这种,我们说现代意义上的计算机呃。
这个就这个意义上的计算机呢是这种电子管计算机。
就是二极管三极,你可以理解为灯泡一类的好吧,如果你不能理解它的物理原理的话。
没关系,你就理解为什么灯泡一类的嗯,那么他的名字叫anniac啊。
现在都认为是诞生于美国的。
比起法尼亚大学,就这玩意儿呢当时呢是一个特别特别笨重的东西。
它大概呢占地是要跟一个别墅那么大。
但是呢他每个小时耗电,150度,但是每秒钟的计算量是多少次呢。
5000次好,这是什么概念,目前我们手机上的芯片的计算速度可以达到你自己数零的吧。
达到这么多次。
就这么大一家伙呃,不过呢由于它是刚刚诞生嘛。
后来经过一系列的改进才诞生了现在的我们的手机的芯片,当时的这玩意儿啊。
它的计算速度甚至比不了我们现在的菜市场上的计算器。
不过计算机飞速发展啊,那会儿的计算机呢叫做电子管,电子管呢就是你可以认为它的这个通一下电,灭一下电,通一下电,灭一下电,而且有事儿没事儿的老坏。
后来呢从发明了这种晶体管之后,就是归一归为为为为原料的这个晶体管发明了之后,我们现在的阶段你才经真正地进入到了突飞猛进的时代。
系列 1:P22:多线程与高并发:2.计算机原理 - 马士兵官方号 - BV1mu411r78p
我我在下面这个里面呢会简单跟大家讲,就是现在这种晶体管计算机的基本的原理呃。
有不少计算机系的同学啊,其实呢你们在学课本上也学过。
待会儿稍等啊,因为我我的这个水确实喝多了,主要是要养好这个嗓子,给大家讲课,那个心灵老师能不能过来一下呃,跟大家伙儿先简单聊一会儿,小天天我我我我我去排空一下膀胱好吗,好允许的同学给大家给老师扣个一。
不允许的同学,你给老师扣7564x6564的开立方,把最后结果告诉我啊,答对了我就不去了,没有一个答对的。
看来必须去啊,今天今天那个学生老师必须得尝尝露面,这个没没有办法啊,比较特殊对啊,快去。
哈喽哈喽哎呀。
哪个摄像头在哪儿,哦,不好意思哈,我先把我撤掉,哎呀马老师这鼠标怎么用,讲到哪儿了,然后大家有什么问题吗,啊今天马老师的资料可以扫一下二维码,这个二维码在哪儿呢,稍等稍等,不要着急啊,大家看一下。
然后这个这个里面有一个成员,里面有一些诶,有一些咨询老师需要马老师的资料的,可以去这个里面找一下,咨询老师,要一下这个资料,诶成员在哪呢,稍等稍等啊,这个还不太清楚,唉呀呀唉呀呀,我是马老师啊。
马老师已经结婚了,小孩都有了呃,大家需要你们加班,有工资吗,这个必须要这个必须有工资的啊,这个课有录播吗啊是这样子的啊,咱们今天晚上是听课听直播课,听完直播课之后呢,去找你们的咨询老师。
就当时你们怎么报名的,怎么来到这个直播间的,肯定是有一个小姐姐带你们来的,对不对,然后你们去找那个咨询老师,所有的笔记资料,还有回放都可以通过他们找到。
多线程的所有的笔记资料都可以找到他们心理老师都能都是你,们大事对对对,还有这个小豆,都是我们的咨询老师,都可以去找他们,马老师嗓子不太舒服啊,大家担待一下,讲的课还是没啥问题哦,所有的小姐姐。
目前除了我之外,其他所有的咨询老师都是单身,有任何的问题呢,你们都可以去找他笔记资料,说好来欢迎一下马老师啊,给你这个仿佛听见了掌声。
唉心刘老师居然没露脸吗。
太过分了啊,这不好意思。
今天有可能会多去几趟厕所啊,非常的抱歉嗯,听我说,就是这就是这个这个这个厕所去玩,最最重要的感觉是什么,爽对吧,那个,人生中的四大爽你们知道吗,多喝枸杞的,枸杞是不能喝的,枸杞得泡水。
然后喝水不能喝枸杞,人生中的四大爽叫做久旱逢甘雨,他乡遇故知,膀胱排空时是开玩笑啊,呃我还是那句话,你今天嗓子比较疼,我说话会速度会慢一些啊,那个希望大家会儿能够体谅好,不说了啊,我们继续讲。
我们讲我们讲到了说这个计算机呢它到底的原理长什么样,要想理解这个原理呢,其实你要学好多东西,深刻的原理,你要学好多东西,药学,如果你还想了解二极管,三极管的原理,那么你就必须得去了解物理学。
但是呢我们今天要讲这玩意儿,我肯定就讲的没完了,我们还是要讲现成的,会快速的加到,拉到县城这里呃,但是呢我会快速的带你简单的过一遍,一个cpu的原理到底长什么样,你就记住这一点。
县城和cpu是永远离不开的,这哥俩就是一对,一般来讲一个cpu对应一个线程,现在cpu有些比较牛叉的叫超线程,一个cpu有可能对应两个线程,四个线程,你就记住任何跟你聊线程的时候。
脑子里就浮现出cpu的概念来就行了,好认真听,嗓子不太好,大家认真听看这里现代计算机的核心是芯片,这个芯片呢到目前为止是由10亿个做个零件构成,你可以这么来理解,我肯定没有办法,但你却说。
是设计一款芯片,你也看不懂,也没有这个意义,但是呢我也不希望一个芯片对你来说是个黑盒。
你是里边儿,你什么都不懂也是不合适的,简单带大家了解一个芯片背后的故事,呃这里呢我写了一个小小的故事啊,你们自己去读一读吧,我就在这就不就不重复了啊,小时候最喜欢的同学叫什么呀,叫小芳嘛,村里有个姑娘。
村里有个姑娘叫小芳,是真的好看又善良,后来呢人们不许我跟小芳联系,那这时候怎么办,这时候呢由于有二进制的存在,我刚才说了,莱布尼茨发明了二进制,我们可以跟小方怎么通通话呢,我在可以设计一个电路。
拉根电线,把灯泡放到小方家,我来控制这个灯泡的亮和灭,然后我们自己约定好一个语言,我就可以跟小芳来通话了,比方说我b上打开,我们就发明了自己的灯泡语言啊,两两下连着量放量和灭绝灭和量等灭灭等于我。
我只要连我只要给他八个信号,我就可以给他说一句话,叫放学等我,ok在这里面呢,我相信大家,伙都能看得懂,如果量我们用一来表示灭,我们用零来表示一,一就等于方是吧啊。
一零等于说也就是说我是可以通过二进制来给小芳来传信号的,而且这个信号的复杂程度呢,你会发现呢它和我们的信号宽度是有关系的,呃如果我们拿中文来举例子的话,这是两位信号对吧啊,用用用用两两下来代表一个字儿。
那最多我们能代表几个字儿啊,二的二次方是四个字儿,那如果说我想表示更多的信息怎么办,简单没关系,我们只要加那个信号的宽度就可以了啊,我们每次发三个信号代表一个字儿,那我这时候就能代表多少。
2~3次方是吧,同学们好,假如你想交流的更加复杂呢,更加复杂怎么办,再加信号宽度,比方说我如果想用一个新号来能够代表所有的汉字,同学们,你们想想我们大概需要多多宽的宽度呢,多宽的宽度非常的简单。
你就要知道我们有多少汉字就行了,整个康熙字典差不多是47000个,1600个汉字已经足够了,所以你自己算一下二的多少次方,你自己算好吧,基本上二的16次方已经足够代表我们所有的汉字呃。
这里头呢其实就是最基本的一个概念就出来了,这个概念是什么东西呢,这个概念叫做编码,编码这玩意儿是特别好玩的一件事情,那个呃在你要说在这种编码里,我用111啊来代表放这个字儿。
我是不是自己还可以发明另外一种编码,在另外一种编码里,我用000来代表放这个字儿,可以不可以可以的,那我就想问你了,如果说我用这种编码对我的信息,最后给它编成了二进制,111110。
但是呢我用这种编码来去解析这些信息,能解析出来吗,能不能不能,比如说编码是个什么东西,编码实际上是一张表,在这张表里面存着这样的二进制,代表的是哪个数字,或者说哪,一个文字在另外一张表里面。
如果你用这张表进行的编码叫in code,用另外一张表来进行解码,这边代表的是别的,它能解开吗,解不开他解,当然它解开之后是什么呀,就是著名的乱码,所以当你的程序里头如果出现了乱码的话。
这根上的结果是在这里,你编码的码表和那个解码的码表,它不是一个我今天讲的东西呢,我从简单到复杂慢慢讲,有一些水平比较高的,你就照顾照顾咱们水平稍差的好吧,那当你理解了这件事之后,就说我们编码的宽度。
实际上跟跟你能表示的信息的这种这种呃复杂程度它是可以成正比的,好吧,我呢有了我们自己的编码的码表之后呢,开始设计我们的下一个电路是吧,就这个电路太简单了啊,那个如果往复杂里考虑的话。
我们就有了越来越复杂的电路,比如说这个电路,大家听我说,我下面呢给大家采用的这些个图都是我的一个学生,在他自己的公众号里啊,我征求了他的同意之后,给大家拿过来的,他做了一些动图,我觉得挺好的。
我拿过来拿过来用了啊,这个是他同意了的,没有关系,那个你看啊,如果你稍微学一点电路的话,你应该知道,如果这个东西啊是我们要求的一个结果,这两个东西呢是我们的两个开关,那只有两个开关连起来。
这个东西才能亮对吧,那如果你只要有一个开关断着这个东西就是断的,这时候呢实际上就有了一个什么概念呢,就是有一个输入和输出的概念了啊,你比如说我这里是连着的,就表示我这里输入的是一个一。
我这里断开的就表示我这里输出的是一个零,输入的是一个零,那么这个呢我们可以看成是它的输出,这时候我们就会有这,样的一张表输入如果是零输出,如果是零,最后输出是什么,输入零输入一输了什么。
这个这个数是什么,好听我说就这个东西呢,你也不用仔细去计算它了,这个东西就是我们的微运算,也就是说我们的电路啊,实际上是可以完成我们编程语言里面的位运算的,可以用这样的符号来表示呃,如果你学过数字电路。
那么你就会知道这个东西一般我们称之为叫什么东西呢,叫门,要么是吧叫门电路就是非常简单的做微运算的电路,一般我们称之为叫门电路好,这里就就它就是数字电路的知识,没有关系,你现在先不用管它。
因为今天主要讲的还是县城,这个我学了看着就脑壳疼啊,今天我们讲的不是数字电路啊,那个呃当然啊除了上面的这种电路之外呢,其实也也有这样的电路,就是原来这两个是串联的,现在改成并联的。
他只要有一个通了灯泡就亮了对吧,那么你也可以做这样的一张表出来,那么o同样的我们换另外一种画法来表示这个电路啊,这是另外的门电路呃,当然还有更复杂一些的门电路,它除了可以做与运算,可以做或运算。
还可以做异或电路,还可以做或非电路呃,那么在这些电路的,基础之上,同学们,我不知道你们发现了没有,其实呢它就可以开始做运算了,做做什么运算呢,做一个二进制的加法运算了,如果用这个电路。
你就完全可以做二进制的加法运算了,一我们设计一个比较复杂的电路,这边输入一边输入零好,我们最后得到的结果让它通了,ok这不就是加法运算吗,对吧,我讲到这儿呢,我中间其实省略了很多东西。
如果你想理解加法运算这件事儿好,这个电路是用来做加法运算的,它是异或电路和雨,就是异或门和与门,异或电路和与与电路的一个综合性的运用,就是简单电路连到一起的时候,就可以做成一个复杂的电路。
就可以做什么呢,就可以做一个二进制的简单的加法器,二进制简单加法器这件事儿它需要有两个输出,为什么有两个呢,你理解这样一件事,你看啊,我们说1+12进制的最后的结果,这里是零,这里是一。
你就会发现呢它有一个加和的输出,还有一个什么呀,还有一个近卫的输出,所以它有两个输出好了,这个东西就是一个加法器的存在,呃听我说,我在这儿呢给大家推荐一本书。
如果大家伙儿想简单理解计算机的电路是一步一步怎么走,成现在的这样的一个结果的,推荐大家这本书稍等给大家拿一下,计算机的说呢层出不穷,有一些经典的书啊,叫做经久不衰,这本书我推荐就叫做编码。
当然还是挺复杂的,如果你看完那本书之后,其实还是挺复杂的,当然那本书看完你还可以用手工自己做个计算机都都可以的,简单的计算机从呃这个,加法来说,加法器来说就是上面的看到这个东西叫一个半加器。
为什么叫半加器呢,是因为啊你你你两个的输入来说,你你的这个加和输出,有可能和这里的原来的另外一个一个一个加和的输入,还要做加法啊才可以,所以它叫半加七,就是半加七。
到最后呢几个电路的组合成才会组合成一个全加器,这是一位的全加器啊,注意这只能算是一位,好多个全加器的串联就会变成多少位的加法运算。
比方说全加器还全部用这种电路来串联起来,就会做成加法器,只要有了加法器,我们就有了cpu最核心的部分,cpu用来干什么的,还记得吗,用来做计算的,cpu最核心的部分用来做计算的,只要有加法器的存在。
cpu就可以做计算了,好cpu有好几部分构成最核心的部分,我们叫它a l u,全称呢叫arithmetic数学logic逻辑unit,叫数学算术逻辑单元,a arithmetic logic unit。
听我说有同学可能会说了,老师那除了加法运算之外,我们还有别的运算呀,我们要减法运算呀,减法运算可以变成加法运算,加负的就行了,我们有乘法运算呀,乘法运算可以变成多次相加,我们有除法运算呀。
除法运算我们可以变成多次相减,对不对,所以只要有加法去存在,记住一个cpu就已经出来了,我讲到现在能跟上的,给老师扣个一,这不是剧组讲的吗,对说的很对啊。
我就是简单扫扫盲,因为有很多人呢它是没有这个基础的概念。
所以他理解不了多线程的一些东西啊,那么有了这个加法器的存在之后呢,同学们,你们想想看这个加法器这玩意儿呢,你有一个输入八位的好,另外一个八位的输入两个一加,那最后一个输出是谁呢,输出在哪里。
输出我们可以放在这里,但是我每次只能计算一遍,你发现没有,如果你用电路来做计算的话,我把这个开关给它合上,把这个开关关给它打开,把这个开关合上好,最后我只能算一遍,我算一遍之后,我如果再加一个数呢。
不好意思,我又得重新输入一遍,太麻烦了,这个时候呢有另外一个电路就诞生了。
这个电路叫什么,呢这个电路叫时钟电路,时钟电路特别好玩的一件事情呢,它是不停的开关呃,如果大家伙学过电磁什么左手的左旋定律,右旋定律啊,不知道你那个高考初中初中还是高中来着学的,就是线圈一通电。
它就有磁性了,他就把这个开关给拉下来了,线圈一断电没有磁性,这个开关就上去了,所以你会发现就做成一个特别好玩的电路,叫时钟电路,使用电路什么意思,就是他不停的开关开关开关开关开关好这个东西呢。
它就会产生一个不停顿的,就不能叫不停顿的,就是通电断电,通电断电,如,果我们能设计一个电路是通电,它计算一次再通一次电,它又往下一步计算一次,再通一电一次电,它又往下一步计算机一次。
这个时候我们就产生自动化的电路了,你发现没有自动化电路就诞生了,你想象一下,因为里面他说的确实比较复杂好,也就是说这个玩意儿是驱动着我们整个cpu来做一步一步运算的核心,ok那么如果他的速度够快。
我们的cpu的速度计算速度是不是就够快,是不是这样的,所以我们所说的主频计算主频啊,我们这cpu的主频是多少,和这个玩意儿息息相关,虽然它不是说嗯完全跟这个相等的,但是跟这个玩意儿是相关的,听懂了吧。
你看啊,赵成挺说了一句话,我觉得挺挺那个什么的,挺挺挺有代表性的,跟大家交代一下,赵成景说能研究出这个的人的脑子是怎么长长的,你好好听,赵正廷,没有任何一个人一步到位能够得到现有的计算机cpu。
中间呢很可能一个人发明了二进制,另外一个人呢发明了二进制的一个电路,其他的人呢又把这个电路做了综合,然后呢做成一个完整模块之后,其他人又把这个模块做了一些综合,它是一步一步迭代出来的。
你不要想着说我们一步到位的好吧,咱们咱们现在学东西为什么累呢,是因为呢我们的课本里面会尝试着一步到位的告诉你,现在经过了成千上万人迭代之后的智慧,你好好想想,你能不累吗,有了这些个电路之后呢,还不够。
为什么为什么还不够呢,是因为你们想想看,如果我们做三个数的加法,01+1+12,我们一般是呃不不能用一二啊,1+10那个这两位做完之后啊,这两个格的中间结果一定得存储起来,听懂了吧,你不能存储的话。
你怎么样跟下一位来做计算呢。
所以我们还缺一个电路,这个电路是什么,这个电路就是著名的存储电路,好了,想去研究就研究它,这个电路就是著名的用来做存储的电路,这个电路的特点就是你在前面的输入,最后的输出会保存在这里。
不管你输出的是零还是一,就是你下一次再通电的时候,它这个边的输出它不会变,它会存储下来,ok这个呢有了这个玩意儿,我们就可以做什么的呢,用来做存储了,当然大家应该知道我们做存储的呃,最核心的点是什么。
最核心的这个这个这个这个模块是什么内存吗,有时候我们中间至至少我们可以把中间结构给存储下来了,有了这几个电路之后,经过复杂的芯片设计,我就直接告诉你,最后我们的cpu就诞生了。
这个一般我们称之为叫锁存器,它每次就这个电路这个复杂电路只能锁一位,我们把锁存器串联起来。
我们就能锁八位,我们把好多储存器串联起来。
我们就得到一条内存,同学们,这个时候你就开始可以开始琢磨了。
琢磨什么呢,一个一台,真正的计算机到底长什么样了,就是我们把我们的计算机里面,这是我们的锁存器,也就是我们的内存,在我们的内存里面,每一个内存都有它的地址,同学们,你们想想,作为内存来讲。
你总得记录着它,说我往哪个地方存了一位什么东西,对不对,我们所谓的编程就出现了,我们的程序会写成什么样子的呢,在某一些地址写一些数据进去,在另外的地址里面写一些指令进去好,这个指令有可能是加法。
有可能是减法,有可能乘法,有可能是除法,然后我们cpu怎么做计算的,cpu是我如果想往这个地址写的时候,我就把这个地址指定指定,这是地址指定指指定地址的电路,然后这里头呢是个数据。
我一按写操作就写过来了,当然我cpu还可以干嘛,指定一个地址来这里是读操作,我就把它读到cpu里了,比如说我们的现在等等,这个这个,就可以变成这样的一个结构,cpu和所存的东西构成了,这里是做计算。
这里是做存储诶,构成了一个很好的一个组合,我们的程序好啊,我们说简单做两个加法,一个数存在这一个数存在这,然后把这个加的指令放在这里,然后我们做计算的时候怎么做呢,cp从这里首先读出来哦。
这是一条加法指令,然后根据我们的格式要要求加法指令,前面两个数是用来做加法的,两个数好,我把第一个读过来,第二个读过来,通过电路做一次加法运算,再通过这样的一个方式写到后面这个地址里面去搞,定。
我不知道讲到这儿啊,大家对于嗯我们呃cpu的一个简单的计算。
一个简单的模型,是不是脑子里头有一个小小的印象了。
能有印象,能给老师扣个一当,盯着那个手指啊。
我把它凑过去啊,有点懵,有点懵,没关系啊,听我说那个我呢后面会再给大家做一个简单的总结,k好好听我说,后面我会在我们自己的课程里面呢,呃把这部分内容给大家加上,给大家把这些基础的东西都给大家扫完。
扫了盲,让你把基础打得牢牢的,基础不牢地动山摇,我们回想一下我们前面讲的几种电路,有一种时钟电路在这里不停的来回的输输入断开,输入断开驱动着我们不停地往前走,它驱动一次,我们做一次计算驱动。
第二次我们就拿第二个第二个指令驱动,第三次我们就拿第三个指令,这样的话呢我们的程序就可以做成自动化的了,由于呢我们的程序可以存储在我们的内存里面。
系列 1:P23:多线程与高并发:3.什么是进程?什么是线程? - 马士兵官方号 - BV1mu411r78p
这是一个小小的计算机的组成,我我我呢把这个过程做一个小小的简单的总结,你认真听老师讲的太感兴趣了是吧,怎么提高cpu的利用率,这个是压榨cpu的话,县城这部分的知识是你必须得要掌握的。
嗓子已经难受五天了,大家忍一忍,看这里,我们所谓的程序最终所写的任何东西,最终一定是由01010101编译完的,这种这样来构成好这个程序,平时他静静地躺在我们的硬盘上,就在我们的硬盘上呆着。
比如说它叫做qq。e x e,当我们想让这个程序运行的时候,咔嚓一双击它就会跑到哪儿去呢,跑到我们内存里,刚才我讲过说内存里的程序啊,好只要一个程序跑到内存里,这个概念就叫做进程。
好当一个进程放到内存之后呢,实际上这进程里面是什么东西呢,在内存里面是什么样子的构成呢,无非就是有两种东西构成,第一种东西呢叫做指令,指令是什么,就说我要做加法运算还是减法运算,乘法运算,除法运算。
ok第二种东西呢叫做数据好,你就记住这一点,就成程序由什么构成呢,指令加数据搞定了,就这么简单,那有同学说老师那cpu怎么做计算的,cpu是这么来做计算的,cpu找到我们的内函数所在的位置,诶。
然后呢去看第一条指令,他发现第一条指令是相加的,指令很好,他把这,个指令读过来放到cpu里啊,发现一看,ok这条指令叫什么呀,叫加法good,然后他就去加法,后面应该按照格式的要求,应该有两个数。
第一个数把它读过来,第二个数把它读过来,做一次运算,写回去搞定,然后有下一条指令,这个是大体的过程。
不知道我说清楚没有,这个图有点小,我把图稍微放大一点给大家看,稍等啊,打开ppt。
推荐的一些书,这个再说啊,好看这里啊,我们再重复一遍刚才的这个过程,这个过程挺重要的,你好好听,认真听,我跟你说,很多的面试题,包括腾讯的,百度的,华为的,问的都是这部分内容,这是我们的qq。
e x e,然后呢我们双击它,它就跑到了我们内存里面,换个颜色,在我内存里面放进去的时候,无非是指令add加数据两个数构成,然后这个东西呢就被我们称之为一个叫进程,好一会儿我再给你讲现成的概念好吧。
那么这个进程啊需要执行的时候,刚才我说过了,cpu首先去读指令,把指令读过来,同学们,你们想过没有,把指令读过来的时候,我cpu总要存储一下这条指令的指令也是由0101构成的呀对吧。
只不过cpu把这种0101看成是一条指令而已,指令在cpu内部总有也是需要有一个存储,的地方,那它在哪儿呢,好在cpu内部用来做临时存储的东西,我们把它称之为叫寄存器,寄存中间数据或者指令的地方。
对不对好了,那个寄存器呢,其中有一个著名的寄存器,就是它叫pc,全称叫program counter,叫程序计数器,记住这一点,这个玩意儿存储指令的,指令放这儿。
我得知道我当前执行的是哪种指令运算单元呀,只负责运算,你给我我就加给我,我就加我,其他的什么都不管,我执行的是哪种指令呢,放这儿,但是相加这种指令,它是需要有别的数据的,它又需要有两个数据。
这两个数据在哪儿呢,这两个数据在这里,所以当我们发现这是一条i的指令的时候,他会把后面的两个数据一块读过来,还是那句话,我读过来的时候是需要也是需要存起来的,临时存储放哪儿呢,放在数据即存器里面。
数据寄存的就是数量比较多,这个呢我就不一不,再展开了,这属于汇编的内容了,总而言之是放到两个不同的计算器里,然后au从这一读哦,这是加法运算,直接计算这两个数的和写好了之后放到这个寄存器。
然后再把这个寄存器的内容,如果需要的话,写回到内存里的某个位置,比如说c等于a加b那么c的位置在这,a的位置在这儿,b的位置在这儿,a和b读过来,放到这个计算器,这个计算器写到的结果存到这个计算器。
再写回到c的位置上去,大概就是这样子的一个过程,program counter太抽象了,我我我讲的还很抽象吗,想象一下是吧,打,开你想象的空间o,对由于不同的人呢,他是有不同的基础啊,好我们继续。
同学们讲到这儿你就会发现cpu超级简单,他只干一件事,拿指令,拿数据做计算,写回去没有别的,所以cpu的内容就这么简单啊,就是这么的简单,没有更更复杂的内容,呃我讲到这儿之后呢。
我们下面来看看腾讯特别爱考的一道题,叫做什么叫做进程,什么叫做现场,终于我们开始接触现场,讲到这儿了,我还是想讲讲,讲一点小小的简单的这个这个这个计算机的历史啊,看这里都是近程联手,是这样的啊,因为啊。
最早的那个计算机呢它非常的简陋,电路也简陋,那个,该路呢也非常的简陋,他是一次啊,这只能计算一个程序,最早的它是都是用来做科学计算的啊,器械什么计算呀,什么导弹那个轨迹的计算呀。
就做这个我们写程序的时候呢,也就只能内存里面不能给的能落上去,这个不知道大家能不能听懂,就是最最开始的时候,我的计算机只能计算一个程序,把内存里头就就就都能运行这一个强行表。
像这种操作系统呢其实也有很多,其实最早开始连操作系统概念都没有,好吧,我就直接这么跟你说,就是他只能执行一个程序,cpu把这个程序呢你不,中间不能停,计算完就完了好了,这样的程序呢叫做一个进程。
到后来随着就普及,人们的需求也在不断地变得复杂,后来发现呢,如果说我们的计算只能计算各进程的话,好多需求我们满足不了,我给你举个最简单的例子啊,比方说我想一边做计算,一边做演,一边做展示,展示的话呢。
你这个程序还是要需要写到显示器的显存里面啊,显卡里面把数据写在显卡里面呃,那计计算的话呢,你计算你的你你的这个运算单元是需要运行起来的,这时候呢是需要两个并行的,你明白吗,就说一边做,这里做做做展示哎。
一边呢来做一个计算,或者说我说得更加的那个那个直白一点,你就更容易理解一点,我需要开两个qq是吧,我不能只有一个,ok那这时候怎么办呢,这个时候是可以的,当然这里面有一个比较复杂的过程,是内存映射。
我先略过它,你相信我,你跟老师走一遍这个计算机的基础知识,你会发现你所看到的任何的语言,任何语言你在看上去的时候都是对你来说都是透明的,就都特别简单了,那个我们说计算机的需求越来越复杂的时候。
我需要跑两个程序的时候怎么办呢,好了就诞生了这样的一个一个一个东西,就是很简单,我内存越来越变越大,我我内存是八兆,我一个程序只只占一刀,没关系啊,我可以装两个程序进去,我把两个程序也装进去。
qq两个q q,现在的计算机肯定都可以啊,就是你的你的机器肯定也可以跑两个,qq肯定没有,那就被被我们称之为叫两个进程,这时候就有了一个什么概念呢,就有了一个并发的概念,什么叫并发概念呢,就这两个进程。
但你看起来那是同时在运行的,我不是说我这个qq跑的时候,我另外一个qq没反应,他不是这样的,那么在cp的角度,同学们,你们想想看一颗cpu啊,我们说一颗cpu最早开始就只有一颗cpu嘛。
一颗cpu在同一个时间点,同一时间点一颗cpu在同一个时间是不是只能运行其中的一个qq啊,我再说一遍,一颗cpu在同一个时间点是不是只能用运行一个qq一个瞬间,对不对啊。
他是怎么能让我们看到两个cpu在这里,不是两个qq在这里都都在运行的,是什么情况呢,你拿大腿想想也应该知道是吧,他一定是说运行一会儿这个qq再运一会儿,那个qq只不过他速度特别快,你感受不到而已。
让这个运行一会儿,那个运行一会儿,是不是这样子,好,这个东西呢一般我们称之为叫切换,那个咱们小咱们小姐姐给我来点水啊,帮我帮我倒点水,谢谢,帮我接点水过来啊,或者来来来一个那个那个那个那个矿泉水。
嗓子不行了,嗯好它一定有一个切换的概念,这是cpu速度特别快的时候好了,这个最开始的时候呢实际上没有线程概念,只有进程概念,这东西呢一般我们就称之为叫进程切换,切换过程比较复杂,我在这不展开,唉。
这就有了切换的概念了,我稍微展开一点点啊,算了先不先不展开了,展开就比较复杂了,哈哈先不展开,这个我们有了这个进程,有了切换的概念之后呢,随着我们进程越来越复杂,就原来的进程就是做一个简单的计算。
后来的进程啊又有显示,又有计算,又有从网络上的输入输出,从文件读写挖太多了,突然间人们发现在一个比较复杂的进程内部,进城内部也有并行工作的需求,好q,我可以一边在这里打字输入。
另外一边不耽误我从网络上接收数据,还不耽误我做计算,我该下一步给谁说话了等等,你会发现呢,我们内部的工作任务也是同时并发在运行的,这个时候,如果你的进程的计算的过程只有一条线下来执行完这个执行。
下一个执行完这个执行下一个下一个下一个中单是不能没有分叉的话,你是不可能有两条线同时运行的好了,人们到这时候呢,终于发发明了什么呢,在一个进程内部,一个主的工作流程开始之后的main方法开始之后啊。
也许也也可以,产生分叉的,我也可以在这里产生一个新的分叉,让他去接收数据,在这里产生一个新的分叉,让他来去管理显示输入和输出,好这个东西呢就被我们称之为现场,所以你发现没有有一个,稍等我喝口水啊。
大家稍等片刻,我借一点年轻所,嗯所以啊你发现没有,这里呢就有了县城的概念了,所以县城是什么东西呢,县城啊其实是一个程序,注意是一个程序内部的不同的分支,注意这个分支不是说if else啊。
你一走这个它就不可能走另外一个分支,线程是什么,线程是同时的都可以走的,两个分支同时在运行,呃我讲到这儿了,我相信一大堆人就开始提各种各样的疑问,有疑问是谁的都还好。
说明你现在开始真真正正的关于你自己思考学习,我讲课我是喜欢启发大家伙儿进行一个自己的思考,同学们你们看看啊,到讲到现在为止,你看各种问题就都来了,你看看赵成挺说那个平时做的磁盘为啥说是内存对吧。
还有原来如此说,外界的网络输入呃,远都要经过内存,我解答一下这两个问题,听我说,你们问的这些问题呢会驱动着你们做进一步的学习,只有在这个时候,你们自己的知识才是慢慢的输入到自己的脑子里了。
呃保持你的也不要对自己压力太大,很多书讲的太枯燥,你要听我讲,他就没有那么难,你看啊,平时的磁盘磁盘是什么,磁盘是断了电,你的程序在上面都可以有内存,内存是什么,内存是断电就没了,听懂了吧。
这是最简单的,就是你你的平时的qq。e x e啊,是存在硬盘上,开机之后才会放到内存里去,ok那个你看啊,还有这个说外界的网络输入语言都要经过内存了,是的,为什么要经过呢。
输入源是就是外界的这种网络输入是是先交给谁的呀,你你们你你们有一个东西叫网卡,对不对,网卡这网卡上是不是有根线输入,是不通过这根线来的,不管它是有限的还是无线的,所以它首先这数据是到哪儿了。
是不是到网卡呀,网卡这个数据如果想被cpu用到的话,有两种方式啊,但是那个比较复杂,有的是可以直接访问到,但是大多数呢是要经过操作系统满了之后,把它复制到内存里面,这个布局啊,不知道是我大致说清楚没有。
保持你们的好奇心,记住计算机再复杂,包括我在内,没有一个人是天生娘胎里出来就懂,这玩意儿都是从零开始的,只不过我们学的时候比较枯燥,真的比较枯燥,我现在想起来那些个不燥,不想去去学,好好听我讲。
我们我们说很多讲法呢它是不对的,它是先讲原理再讲应用,实际上是反的,应该先讲应用再讲原理好了,当你理解了这件事之后呢,看这里啊,当你理解了这件事儿之后呢,理解了这个这个嗯现成的概念之后呢。
我们下面再来谈这个切换的概念,好好听,我刚才讲了,其实腾讯最最爱考的两个东西已经出来了,一个叫进城,一个叫县城,好呃,那么我们来思考一下什么叫进程,什么叫现场,我们进行一个思考,什么叫程序呢,qq。
e x e编译好的,可以运行的这个叫一个程序,那什么叫进程啊,一个程序放到内存里,就叫一个进程,放一个,这也是一个qq,在还可以再放一个qq,所以一个程序可以对应多个进程,而且这个进程放到内存之后。
你会发现呢它的空间已经设好了,他的数据已经处理好了,也许他要打开某些文件已经帮你打开好了好,所以进程这个玩意儿呢放到内存,好多资源就给它做分配了,但是它开始运行了吗,没有什么时候开始运行cpu。
找到它的主线程,就是我们main函数开始的地方,这个叫逐渐成,所以一个进程最开始就只有一个县城,它叫主线程,只有找到他cpu进去,拿到它的代码开始运行,这个时候才真正的动起来了。
所以有个说法叫进程是一个静态概念,县城才是一个动态概念,o进程是分配资源的基本单位,线程是cpu调度的基本单位,ok所以cpu呢是只能执行一个线程,讲到最后我相信大家应该理解了。
就是我们所谓的一个cpu在同一个时间点上只能执行一个线程,好这个概念能听懂的,给老师扣一,它是一个非常核心的概念,任何语言啊,java的内存,什么高原的内存本质都是一样的,进程不是动态概念。
线程才是动态概念啊,好了,我讲到这里之后呢,做一个小小的简单的动画的演示,这个动画窗格要缩小一点。
系列 1:P24:多线程与高并发:4.线程切换 - 马士兵官方号 - BV1mu411r78p
嗯下面我们来聊聊,什么叫线程切换这个概念,线程切换呢是什么概念,我刚才说了一颗cpu啊,他同一个时间点只能执行一个线程,实际上严格来讲,一颗cpu在同一个时间点上,只能执行一条指令。
这个指令属于某个线程,这个意思你们想一下呃,作为我们多线程的程序,可以多线程并发运行的时候能运行,假如说我们现在正在执行的是县城一,它的名字叫t1 ,要执行提一线,我们cpu是从t一里面读数据。
读指令开始运行,那假如说我们cp,我们t一执行到某条指令指令的指令二了,然后下,面呢t一的时间片到了,就说我我我我我我做a cpu呢,我每个星星都都要运行一次的对吧,都要运行一段时间,好到你这时间了。
你还没有执行完,到这儿了,下面我要执行t2 ,我怎么办,同学们,你们想想看怎么办呀,有的同学说简单啊,老师我就把t2 指令读过来,数据读过来,我就做t2 呗,但是你想过没有,如果第二执行时间片结束了。
又想执行t一了,t一执行到哪了呢,你还能想得起来吗,cpu没那么智能,他只是说你给我指令,我就执行,给我指令,我就执行我上次执行到哪了,我是不是得,记录下来啊,所以中间的切换过成什么样子的呢。
有一个过程叫做把纸啊,t一的现场,t一所需要保存的东西执行到哪条指令了,指令二执行到哪些是正在执行的时候,包括了哪些数据寄存器的内容,全部保存好,叫保存现场到你了,你是第五部,俩数据拿走。
你先自己抱着去好下面这个t2 ,再把t2 给放进来,那什么时候我们再想听的时候怎么办,恢复现场,把里面的数据再恢复回来,当然前提是把t2 又保存好,再把提议恢复回来,再继续执行t一好了。
我说到这儿能听明白这个过程,给老师扣一,这个东西呢被称为线程切换,有一个经典的小小的面试题问大家一下,我们说如果我们做一个复杂的计算程,需要,一个小时它可以线性被拆分开。
我们两个线程呢就有可能只需要半个小时,两个人干嘛,那是不是现成的数量越多,我们的执行效率就越高呢,很经典的面试题吧,是不是现成的数量越多,我们的执行效率就越高,当然不是,为什么,因为中间有切换的过程。
这个切换是需要时间的,是需要消耗资源的,当我们的建成数量越来越多的时候,我们很可能把大量的时间都放在消耗线程,切换上了,因为只要活着的现场,必须得保证每个县城都有时间执行,不然程序不死了吗。
1万个县城这1万秒里,头大量的时间都花在切换上了,你有没有时间去做计算了,所以它的效率不一定不一定是最高的啊,呃当然还有一个经典的东西说,如果,我们做一个任务的时候,有多怎么怎么来确定。
我给这个任务启动多少个线程呢,能听懂我说的意思吗,我再说一遍,比如说我们现在有一个程序对外服务,他后来后台有一个线程池好,这个时候我要有起多少个线程,对外的服务的效率才是最高的呢,其实这个问题吧。
cpu加一或乘二错还有吗,而n加一错还有吗,cpu密集密集,对c哥撑死你们,这这这是拍脑袋,想当然啊,这个问题我留一下啊,这个今天有时间再讲好吧,好,这里头得看你所谓,你首先得定义什么叫效率最高啊。
我简单简单说一下什么叫效率最高,效率最高什么意思,什么叫效率最高啊,效率的意思就是我压榨cpu,把cpu全都利用上,不让它闲着,这个我的执行效率一定是最高的,能听懂吗,我cpu让他闲着了。
就说明我浪费了我的计算效率,对不对,所以呢我cpu不让他闲着,这个效率才是最高的,那怎么样才让cpu不让他闲着呢,这时候你要看你一个工作任务,或者说一个线程,他的整个工作时间里头。
有多少条指令是要给cpu做运算的,有多少条指令不,用cpu做运算,我只需要去输入和输出的,听懂了吧,得需要做这个比例,我假如说啊我一个现成的任务,我有50%的时间是需要给cpu做计算。
我剩下50%的指令,只不需要cpu做计算,我只需要等网络上的输入输出,我想到这能不能理解,就是一个人在干活,一半时间在锄地,这个时候就是需要他动动动手的,另外一半时间在干嘛呢。
等着别人把那个土啊什么的给他运过来,听懂了吗,能理解这个问题了,给老师扣个一来,我刚才讲了,讲完了这个嗯,明白对不对,那同学们你们想一下,你们把cp理解成那个图,我有51%的时间用一个除。
好我说我想让一个处充分利用,利用到百分百多少个线程,两个,对不对,那如果我这个任务单元里头,有25%的时间是要用到这个图的,多少个县城,我让一个cpu让他跑满多少个县城四个。
那如果说我再我再出一个稍微更难一点的,我们现在有四个cpu,1234,好我让这四个cpu全部都跑满,但是我的任务呢只有25%的时间,用cpu来多少个线程,16个对,good没错,所以当你们老大。
或者说面试官在问你这个问题的时候,按照我的思路来说,听懂了吧,腾讯特别爱问,我就直接告诉你啊,基本上面腾讯的都被问到过,好嗯,我讲到现在为止呢,其实如果你要还往外拓展,我今天不想拓展,再往外拓展。
我怕有一些基础的同学会暂时性的受不了,记住学东西是有分层次的,可以先学浅层次,掌握浅层次之后再继续掌握深层次啊,一步一步来,我们的大多数的课本,和你平时所学的学习习惯是不管深浅,挨着牌的血。
这是效率特别低的,按我的来,你事半功倍,听我说,我们可以开展一些小小的基本的概念,比如说站在cpu的角度,我要给每一个线程需,要分配时间的,那我想问你一句,这个时间分配我按什么算法来呢。
能不能理解这个是操作作系统的核心,叫,线程调度器的调度算法,同学们,你们想想,你们如果是你的话,你会怎么做,动到把脑筋给我动起来,我现在问你的是,如果你是那颗cpu,现在有五个县城,12345。
你会怎么给他们分配时间呢,让你设计一个算法,咱们就讨论着玩儿好不好,有基础没基础的我们都可以,我用最简单的概念,就基本上把现代现代的操作系统,就给你讲清楚了啊,好你看啊,你看有好多好多人的想法,你看啊。
这个是嗯先来先做,就是排队,对不对,不合理,为什么不合理,可以做啊,就说大家你想到的任何算法,你说我先执行完第一个再置换另外一个,可以的,没有问题,任何算法都可以,但是我们现在的现在的操作系统。
这个算法是经历了多次迭代,好多好多年的迭代,所以你如果一次性的能想到,现在cpu所所所所能采用的算法,那你太牛逼了,你不用听我讲课,你给我讲课就行了,其实呢最开始的时候,不就是说我先执行完一个。
再执行完另外一个吗,但这个不合理,为什么呀,因为有的是加急的那种,你能不能听懂,有的是那个任务比较急,也就是它应该有一个权重在里面,他有的任务比较急,什么任务比较急,就跟那个医院似的,您平时是一个病人。
看完一个病人,但是有的急诊快死了,你再不处理我的电路有短路了,大哥你是不是应该处理优先处理那个呀,是不是那边发出来一个关机的程序,关机指令,结果呢,您前面做了计算关机,不好意思,关不了。
你等着等把计算做完了再关机,这玩意受得了吗,这边要取消导弹了,导弹要爆炸了,取消掉啊,不要再爆炸啊,先炸完再取消,那不可能,所以这个事儿不合理,所以这时候你就会发现哦,应该是有一个权重,权重高的。
应该往前放,对不对,good嗯,这是对的,还有另外一种呢,最容易想到的轮着来嘛,给你十个毫秒,给他十个毫秒,给他十个毫秒,给他十个毫秒,合理吗,也不太合理,为什么呢,给他十个毫秒没问题。
他正在要求你做计算,你赶紧做计算,但是你给下一个指令10ms的时候,你突然间发现这个指令在干嘛呢,在等着网络的输入,你这10ms就啥也不干,就搁这等着就行了,那你不是浪费吗,所以这个呢也不太合理。
平均分配啊,有些特殊情况,有些特殊的芯片,特殊的操作系统也是这么设计的,也可以,没问题啊,那么也不合理,那么到底什么样子的应应应应应,应该是应该怎么做呢,现代的操作系统呢。
这种的算法叫c completely,这说明脑袋脑袋都记忆力都不行了,不是l r u啊,那么这个算法呢叫cfs,考试系统特别特别爱考的叫completely,完全公平策略。
completely fair strategy,完全公平,这是linux最新版内核使用的算法,这个算法长什么样呢,第一优先级高的多分配时间片儿,但是呢有的那种那有的那种指令啊。
呃如果你你了解过那个wait方法,应该了解过v的方法是干嘛的,是说这个县城暂停,等着别人唤醒,是不是啊,同学们,你们想一下,如果有一个线程啊,它喂它了半天,然后把它唤醒了,他马上着急就想执行。
那这时候怎么办呢,现在的呢这个算法呢叫做结合了权重,权重越高的分配的时间片越长,有限执行,的可能性越越大,这是第一个,第二一个呢等待时间越长的,听懂了吗,我再说一遍,等待时间越长的越优先执行。
这个是有道理的,那个我人呢等待了时间,他你你给他个时间片,发现他等着呢,好放过他,给他一段时间,想让他执行了调度他哎,他还在wei状态,等待的越长,他醒过来的时候越优先给他执行,现在的现在的这个算法。
大概是这个这个样子啊,这个大体的过程,不知道大家听听听懂了没有,它不是完全按照权重,也不是完全按照时间,它是权重和时间的一个综合的权衡,ok,好了嗯,这个我在这就不展开。
因为这个是我后面讲那个什么内容的时候,才讲到的啊,你感兴趣的,你跟着老师的这个操作系统的课,你跟着走就成啊,它叫做cfs啊,当然还有实时进程和普通进程一说嗯,实施进程那就f先先到先先到先走啊。
或者是轮询啊,一般的普通的进程cfs,所以它内部的进程调度还比较复杂好吧,先不说这个呃,我们说呢还有一个特别好玩的概念,我不知道大家听说过没有,就是这个我是展开的技术不,技术不太好的同学呢,你听完这段。
你暂时先忘记它就行了啊,一步一步来,这个给基础稍微好一点的同学讲,这东西呢叫先成,也叫携程,来这个概念,面试中有被问到过的,给老师扣一,有被问到过的,有没有,go语言,对没错,是的。
应该会有人被被问到过啊,是的是的是,那么这个概念是什么概念呢,我简单解释给你听,这个概念呢我在讲go语言课程里面,就是我们课程里呢,mc课呢是包括了一个go语言的课程,再看一下。
这是dba的内容。
游戏的内容,啊稍等。
嗯包括了一个嗯go on课的一个简单的内容。
呃在这门课里面呢,我在这个购员面向对象里面,给大家介绍了go浪的最核心的两个概念,垃圾回收和那个呃。
和那个那个携程这个概念,这个携程这个概念呢是这样子的,你认真听我再说一遍,基础差的这部分呢你先略过好吧,我们说原来呢一台计算机是一个硬件,这是一个硬件,现在后来呢有了java之后。
我们诞生了一个虚拟机的概念,虚拟机概念什么概念,虚拟机概念,就是说我们在这个硬件的基础之上,虚拟了很多台不同计算机,你可以把它看成模拟出来的,很多不同的计算机,它有自己的cpu,有自己的cpu。
有自己的内存占,有自己的内存占,你可以看成是多台机器,但是呢它同时跑在好多台不同的物理机上,这是jvm的虚拟机,这是go on的虚拟机,好了,同学们,你们想想,如果你把它看成一台完整计算机的话。
他是不是可以有自己的线程啊,可以不可以,听懂了吗,docker算虚拟机吗,算我再说一遍,我们的物理机,我们的windows机器管着自己的操作系统,管着自己的现场,这是我们物理机的那个那个那个现场。
那么在每一台虚拟机里面,是不是也可以有自己的线程啊,ok这个一般我们称之为叫用户线程,或者叫线程或者叫携程,就说我们自己的程序,在自己的这个机器内部来模拟多线程的,那个线程,叫做西城或者携程。
这里面的所调度也好,同步也好,都是由谁来完成呢,由我们虚拟机自己来完成,但是你要记住,这个虚拟机最终的实现要靠谁来实,现要靠我们的物理机上的那个线程来实现,是它最终呢一定有一个映射过程。
这个映射指的是什么呢,就是在我虚拟机内部的线程,和我们物理机内部的线程,它是怎么样转化过来,由他来完成的呢,县城里的县城是的,这个一般我们称之为那叫做映射的概念,听我说我简单做一点拓展jvm的内容。
这里是一比一,比如说jvm里面如果有一个线程,物理机上就一定有一个线程,但是go浪不一样,go on里面如果有一个县城,有1万个县城,这里面很可能只有两个县城,go浪里面有80个携程。
这里面很可能只有一个线程,在它内部用软件模拟了它们的同步,它们的调度好,这是很粗的一个概念,想细究的话呢,没有俩小时是不行的,先放过它大体理解,所以这里面有一比一的概念,也有m b n的概念。
一般的情况下,m远远大于n,好这个过程简单听不代能大致能听懂吗,携程呢有好多叫法,有的叫kroutine,比方说go语言里面有的叫fiber,在jvm里面,专门可以有一种东西来做jvm的,携程。
给咱们的另外的类库好吧,java有第三方支持先写成的库吗,当然有,我在我的vip里也专门讲了,这部分,有咱们阿里的老师讲了,在阿里内部他们是怎么运用,加了就是jvm的这个这个这个线线程库,来提高效率的。
在这里先不展开,但是我我相信我讲到现在,别人再问你这些个概念的时候,你就没那巩固了,什么叫程序,什么叫进程,什么叫县城,什么叫现场好,这四个概念能说清楚的,给老师扣一,注意先生有他自己的问题啊。
并不是说用线程一定就好,不是的,不一定的,好吧好了,我有讲到现在呢,我把大体的硬件上的这些个脉络,给大家讲清楚了,呃当然那个如果你还想进一步了解,其实还可以了解,去去了解什么呢,去了解现在的鸿蒙系统。
鸿蒙里面又是很好玩的概念,它叫做微内核,哈哈这就不展开了,一般的我们现在的那个机器呢叫做红内核,但是呢鸿蒙呢叫做微内核啊,呃我在这儿不展开,下面呢我们开始聊什么呢,聊线程切换之后呢,更深入的一个概念。
你看这里,看这里,我们拿海胆这张图来说,嗓子真的沙哑是吧,嗯是有一点点会喝口水,那个,不过没关系啊,嗓子沙哑,那只是声音会变,但是知识结构不会变,我只不过讲的稍微慢一点而已啊,大家体谅。
那个心灵老师再来跟小小伙伴们聊一聊,我我需要排空一下膀胱,上课的ppt会分享吗。
系列 1:P25:多线程与高并发:5.CPU的并发控制 - 马士兵官方号 - BV1mu411r78p
呃下面我们讲什么概念呢,我们来聊cpu的速度和内存的速度,他们之间不匹配所产生的一系列好玩的东西,好吧,大家稍等啊,你先聊一聊一小会儿啊,小伙伴们聊一小会儿,咦哈喽哈喽呃,讲到哪儿了,是来我接着讲啊。
然后大家有没有想要这个笔记的,这个笔记是今天上完课,然后明天上完课,上课的ppt会分享吗,啊p p t可以有的,今天听完直播,明天听完直播,两天听完直播,一定要明天听完直播课,马老师的笔记资料。
还有整个视频大家都可以拿到,拿到呢是去找一下自己的那个咨询老师,不捡笔记资料,还有那个马老师之前讲过的呃,多线程的j vm的,大家都可以拿到,这些都是还有什么想要的都可以找他们,今天到几点。
今天差不多得到十点半吧,这个看马老师先请呃,除了马老老师讲完的这个课程,然后大家有任何的呃职业上的问题,或者是工作中的一些困惑,提升方面的呃,掌心方面的任何问题呢,呃马老师讲完课之后呢都可以问。
就相当于约今天直播间让马老师给你做一个私人的职业规划,球球跟我走吧,可以啊,球球完全可以带回家啊,呃球球是单身,直播间里所有的都是单身,求救可以带回去,阿静也可以啊,多线程下载文件啊,下载文件也可以啊。
带回去,我不可以带吗,可以都可以,所有的人都可以,马老师马老师这个比较难带啊,啊来马老师来了,诶你为什么每次都把这个框给拽出去呢,这颜值这么高,那就为什么没有信心呢,ok那我们继续,那个。
这个这个有时候没办法啊,这个不喝水吧,嗓子疼,喝了水吧就不停去厕所,就是这个这个凡事都有两面性,有一利必有一弊,呃,福兮祸所倚是吧,祸兮福所依啊,呃这个是事物的最根本的一些个规律,就是。
一件事情不太好的时候,其实往往会孕孕育着很好的机会,待会如果想深刻认识这个规律的话啊,深刻认识这个喝水尿尿这个规律,我建议大家呢去读一本书,建议大家读一本书,第一卷,哈哈哈,矛盾论,劳动著名的两轮。
一个叫矛盾论,一个叫实践论,有空的时候可以简单了解了解啊,这个呢是辩证主义哲学的嗯,好不展开了,以子之矛,陷子之盾何如呃,你说的很对啊,挺挺好玩的,当年秦国在造自己的矛和自己的盾的时候,他们是分成两拨。
那么造谣的人给他们下的命令是,如果你的矛刺不穿盾砍头,给造盾的人给他们的,命令是如果你的盾被矛刺穿了,砍头,所以最后呢最后发现秦秦国人最后造出来的毛也特别牛,可以刺穿其他国家的盾,盾也特别牛。
任何其他国家的矛都刺不穿,这就是管理,那你你你们你们上班的时候有没有这样的管理呃,字节跳动采用的是赛马机制,同一个类型的项目好多不同的项目组在跑,谁跑出来算谁的,腾讯也采用的是类似的机制。
最后士兵造反了,哈哈哈好吧,好了不开玩笑了啊,来我们继续嗯,在这里面呢有一个非常非常特殊的东西,这东西叫什么呢,叫做缓存,这是cpu,cpu的速度非常快,如果这里是刘翔,那么这里就是乌龟,龟字怎么写好。
这里就是乌龟,cpu的速度呢大概是内存速度的100倍,其实我讲到这里,敏感的同学应该会有疑问的啊,我再说一遍,我说的这个问题啊,就是说cpu的速度是内存速度的100倍,我讲到这里应该会有人有问题。
cpu呢确实是可以用速度来说的,它有主频,内存,内存哪有速度啊,内存是用来做存储的,它跟速度有关,完全关系吗,听我说这里的速度呢,严格意义上来讲叫做从运算单元去自己cpu内部存储器里面取一个数据。
如果需要的时间是一的话,那么从运算单元访问到我们内存取一个数据,它的速度是100,时间是100啊,不知道说清楚没有,所以速度是这个概念啊,那个那这个时候就会产生一个问题,同学们你们想一下。
如果下面呢我有两条指令,这第一条指令呢是去内存里面取个数据,第二条指令是什么呢,对自己的某个寄存器做一个加加操作,两条指令,那么这个时候呢你就会发现我要取这个数据的时候,我执行第二条数据。
第一执行第二条指令的时候,得把第一条指令执行完了,浪费花花,花一个花,浪费100个100个等待的时间才能执行下一条指令,哎呀这个速度实在是太慢了,我们能不能够提升这个存取数据的速度呢。
存取数据的速度能不能说明从上海呃,从北京往上海访问一个数据,比方说八个小时,能不能让他把这个数据离离我离我近一点,中间加一个中间层,放到中间,这个中间是哪呢,北京到上海的中间啊。
别到上海的中间应该是哪儿啊,诶北京到上海中间儿是哪儿啊,这个不查地图了,我们假设是嗯德州好,我们假设是德州,我们把这个数据往德州放一份,同学们,你们想想,我从cpu里去,我从北京取这个数据。
是不是就速度就快了,这里是八小时的话,这里四个小时就够了,但是所有小说我还嫌慢,我怎么办,告诉我还嫌慢怎么办,再往把这个数据往天津放一放,听懂了吗,唉就是我中间呢多放一些离我近的好,这种东西呢叫做缓存。
这缓存,那现在我已经来了呃,我中间建多少级缓存合适呢,多少分合适,这东西不好说,如果我中间间隔是就是说中间层数少的话,这个效率就会变高,但是呢我去取的时候效率就会变低,但是如果我中间层数比较多啊。
我有十层,那我取数据的速度会变快,但是与此同时带来的是什么呀,从这里头复制一份数据的时候,要复制十份,所以这个效率就会变低,所以凡事有一利必有一弊,对不对,福兮祸所倚,祸兮福所倚,听懂了吗。
所以为啥不直接放在天津,那你不中间就离这边近点,离这边就远嘛,这边复制就慢,这边这边复制就快了,就是凡事有毅力,一定必有一弊,所以请大家去读什么矛盾论,我建议大家读书,我我一般把我的mca课叫做成才课。
注意我不叫它架构时刻,我不叫他说成员,你高级成员这个不是我培养的目标,我把它叫做成才课,能听懂吗,成才这件事儿不是你搞定技术就能成才,你的思维方式,思维逻辑都要产生变化,你的格局都要起来好吧。
然后呢你才能称称之为这个时代的人才,21世纪什么最贵,想拿高薪,麻烦你让自己成为人才老师,我首先学生年薪过百万的已经比比皆是了,丁点儿不吹牛逼,教他的时候不是说只简简单单的教技术啊,但是先交技术啊。
先交技术,技术好了之后再慢慢来看这里嗯,所以你会看到层数多有层数多的利弊,层数少要层数少的利弊,那么到底我们用多少呢,在进行了多方向的权衡以及数据的统计之后,听我说,现在的cpu。
我们讲锁的时候用的是那个厕所的例子,在这就不展开啊,现在的cpu,看这里是由几层缓存构成的吗,中间有三层,我再说一遍,为什么三层为什么不多不少,不是四层,不是五层,可以四层吗,可以可以五层吗。
可以可以一层吗,可以可以没有吧可以,但是还是那句话,在权衡利弊的情况下,三层比较合适,所以现在用的是三层,那么这三层缓存呢很简单,被称之为l one l two和l free,嗯后面是一个大约的速度。
在这就不展开了,好三层缓存分别位于什么位置,物理上,我在这儿做一个简单的小小小的图讲给大家听,这边呢是一整颗cpu,就是你从平时如果去电子市场买一颗cpu,买到的那个完整的那一颗是一颗cpu。
但是呢现在的cpu它内部可以有好多个核构成和什么概念,相当于每一个核可以运行一个线程,所以你可以把它认为是好几颗cpu,原来的四颗cpu现在只不过是封装到了两颗里面。
ok在每一个盒里面有自己的l one l two多个核,也就是说在一颗cpu里面共享自己的l three多颗cpu去共享整个内存,好这个结构很简单的一个结构,嗯讲的我们今天要讲的也不是说硬件的内容。
我们还是要讲软件,我们就以这个图为例子啊,这个图能跟上的,给老师扣个一,对他有些硬件呢也在不断产生变化,demon说,现在a amd的zen 3把l3 合并了,可以的,没有问题,就是说你记住记住这一点。
计算机的发展的日新月异,芯片ai的芯片的结构就和现在的又不一样,显显存的这个这个这个显显卡的这个计算啊,它呃就是显示芯片的计算又和这个又不一样,我讲我讲的呢是一种普通话的普普遍性的。
很多时候呢你了解一个普遍性之后,其他的叫万变不离其宗,先把最根本的东西了解了,这个一般我们称之为叫第一性原理,做任何事情请你去,首先人追求第一性原理,感兴趣自己去搜索,在这儿再推荐大家一本书。
这本书呢叫价值,听说过你给老师扣个一,这不是价值,国内最大的投资机构的老板叫张磊,他投资了投资了京东,投资了腾讯,基本上全国国内比较牛逼的互联网,它投资了一半以上,五五千亿人民币的一个基金吧。
应该是还是5000亿美元,我忘了,非常非常的牛逼,他写一本书叫价值在里面搜索推崇的最核心的一个点叫第一性原理,我还是那句话,希望大家给大家伙儿啊,短短的一堂给大家伙打开更多的视野,好吧对,高龄集团没错。
而且,这哥们儿是哪儿的呀,驻马店同学们,你们平时听到驻马店的时候是什么样一个想法,10亿人民9亿骗教练就在驻马店是吧,哈哈哈哈哈,这是很早很早以前的了,好听我说今天如果大家伙儿对老师学生学课程比较认可。
后面如果想报名河南的同学,优惠500,对河南灾区的一个小小的慰慰问吧,好吧,中原一带的人民呢其实历来遭受的苦难比较多,所谓的说这里的人不好,那里的人不好,其实就是一个字闹的穷,待会慢慢变得富有之后。
仓廪实而知礼节,其实慢慢的人的素质也都会变高,好看这里,同学们,你们想一下,当我们有了三层缓存的概念之后,我们琢磨一件事儿,呃我刚才说了,说当我们的au需要内存里的某一个数据。
比如说这个数据x然后呢我们需要把它放到寄存器里,因为中间有缓存,那么这个寄存器会去怎么怎么去读这个x呀,他会首先去找找我们的一级缓存,如果没有的话,找我们二级缓存,如果还没有的话,往三级缓存找。
如果还没有,在内存里面把这个x拿出来,放到哪里去呢,换个颜色,放到这里放这里放这里复制一份,那么当我们下次再来想用这个x的时候,ok就可以直接从这里找到了,能听懂这个过程吧,很简单,但是你想过没有。
当我们又需要y的时候,我是不是又得再找一遍,再找一遍,再找一遍,再把这个y给放进来啊,同学们,你们发现没有,这个反而比我直接从这里读的效率变低了,因为每一次我都要重新放一遍,太累了,多了一些复制的过程。
对不对呀,为啥每次都要复制,因为你复制好了之后,下次再找就不用找那么远了,天津也有,就不要去上海找了,对不对,那我怎么样才能提高这个效率呢,很简单,老师你能不能够把x和y一次性的读进来嘛,对不对。
说对了没错啊,说的很对啊,就是说虽然说我们当前的指令可能只需要一个x,但是我可以把x所在的一整块数据一次性的放到这里,放到这里,放到这里,如果你不能理解,你就想象一下。
我们有一个程序对一个数组做一个循环,我们去我们到第一个数据的时候,我们一下把整个数组的数据全放进来了,那我们做循环的时候,小伙伴们,你们想想我们是不是每次只要访问这儿这儿就可以了。
那这个速度是不是就快多了好了,这个我们称之为叫程序的局部性原理啊,还有时间上的局部性原理,这个先不,管它你大致能理解这个意思就行了,懂了吧嗯好,那现在问题来了,我这个这一块到底是多大呢,矛盾论。
特别大有好处没有,当然有好处啊,我我命中命中的数据,所谓命中就是第一级缓存,就找我就找到这数据了,命中的数据数据的成命中的可能性就高多了,对不对,我就直接从这儿找着了,我效率肯定高。
但是与此同时带来的是我每次复制效率是不是就变低了,好如果特别小呢,我每次复制速度非常快,但是我命中率是不是就低了,所以,综合下来的又是一个权衡利弊的结果,目前的这个大小是多大呢。
这一块数据记住了64个字节,在此时此刻,在2021年的7月29号,工业界对于这块数据所采用的是64个字节,记住了,好吧好,这一块数据有一个特殊的称呼,这块数据呢就叫做缓存行,叫catch来。
那开出来记住它的大小多少,64个字节好,那现在问题就来了,有一个特别好玩的问题就出现了,我们假如说现在有两个县城,第一个县城呢在左边这里运行,第二个线程在这边这颗cpu里运小。
然后第一个线程我们用到的数据是x,第二个线程我们用到的数据是,ok听我说,当我们左边用x的时候,它会xy,我们假设啊位于同一个缓存行,也就是同一块里面,刚才我说过。
我们用x的时候会把整块数据放到我们的缓存里面,好从内存里读过来,放到l3 ,l3 ,放到l2 ,l2 放到l1 ,然后呢我们就可以用计算单元来做计算了,我们另外一颗cpu用的是谁呢,用的是y好。
他也会把同样一行读过来,读过来再开始做预算,这时候就会产生一个问题,这个问题是就是同一行数据,这行数据会在这颗cpu里面有一份,会在这颗cpu里面有一份,我讲到这儿能不能跟得上,能听明白的给老师扣一。
对就这里有一份,这里有一份,那么现在的问题是,当我改了这一整行数据的时候,我把x改了,我需不需要通知另外一颗cpu呢,要不要当我改了这边这行数据y的时候,我要不要通知他呢,听我说这个是需要的。
因为你不能说我这边改了数据,另外一边不知道,我还拿旧的数据去做计算,这肯定是不合适的好了,那怎么样才能通知呢,这个东西呢我们称之为缓存一致性协议,这个协议比较复杂,它是硬件级别的协议呃。
从现在英特尔cpu的协议所采用的协议呢叫做m e,其他的cpu所采用的协议呢有不同的名称,有的叫msi,有的叫什么呢,see synapse,有的叫什么呢,有的叫firefly,他叫什么,我没所谓。
反正就是不同的cpu采用的协议是不一样的,总而言之,在它的内部有一种机制来负责什么,负责两个位于不同cpu的缓存行之间的数据一致性,这个内容其实嗯比较复杂,我在这不想展开,什么时候才会触发这种机制呢。
有同学说volatile错了,有同学说总线嗅探又不对,你们都学歪了,其实是拿英特尔cpu来讲呢,只要你l2 这边写过了,它就会自动触发两边的一致性,其他的cpu呢机制可能会不太一样。
这个你要查不同的cpu的手册去好吧,关于这块内容,他对于底层的知识了解得非常的透彻,昨天晚上应该是他上的课吧,不知道大家有没有听过讲的是compleable future的源码哦,那个,啊听了是吧啊。
有同学听过了,说讲的挺好的,对是的,在这个基础之上,你会知道有这么一种机制存在就行了,那么就直接给干懵了是吧,哈哈,听黄老师课需要先打一点基础再听好吧,因为黄老师讲课会讲到比我更深的深度上,ok啊。
昨天听周老师是吧,嗯还有前天啊,忘了没关系啊,后面咱们老师都会讲课,好好听,我说,对黄老师讲的是黄老师呢,他是20,今年25岁,最早是在阿里,后来是在美团,他在20不到25岁的时候呃,年薪已经过百万。
那是属于大神级别的,所以,所以这个这个这个你听他课肯定是得好好的打一点,打一点基础啊,一会儿你们需要的话,我可以给你们看看黄老师的简历啊,嗯看这里啊,我我我还是那句话,就是说你你跟着学。
跟点牛逼的人学好吧,就是为什么把黄老师拉过来讲课,因为我觉得牛逼,还是那句话啊,就是他带你,你不要看年龄,他有些地方比我都牛,比我都牛啊,我服我也想跟着学,好了不说了,我还要看技术嗯。
缓存行这件事呢今天讲了很多基本的概念,待会儿听着也挺好玩的,也比较简单,那缓存行这件事能不能够说我们写一个程序能证明它的存在呢,其实是可以的哇,今天嗓子实在太难受了,也就是说九点半左右。
但是今天已经讲到十点了,我把这部分讲完,剩下的我明天再接着给大家讲好吗。
看这里啊嗯我呢。
啊这是一个那个阿里的阿里的问题,我在这儿呢把这个缓存行这件事讲给大家听啊,看这里,讲完这个程序,我们今天干火结束,然后呢我会打一点广告,但这个广告呢也就11点结束了,今天我们就讲到11点好不好。
大家看这里啊,cc说买了mc a课可不可以两个人同时观看,你只要同一个账号也没人管你,你就是不可能有两个账号啊,马老师的app上线了吧,你你你那个你什么手机啊,vivo oppo华为的。
苹果的都已经上线了,你要其他牌子的手机的话呢,从腾讯应用宝下载,好看这里啊,同学们呃,我们看一个小程序,这个小程序呢我就我们就先读,然后一会儿再探究它的原理,在这个小程序里面呢,我有一个计数器。
这个计数器呢是10亿啊,它是一个循环的计数就11次循环好,我有一个类,这个类叫t在它里面只有一个成员变量叫x什么类型的呢,是long类型呃,先问大家第一个问题,一个long类型的大小是多少。
大小多少占多少个字节,八个对吧,唉一个long类型的是八个字节,那么,一个t对象里面有一个x,然后呢我有一个数组是t类型的数组,这里面有两个t对象,而为零是一个t对象,2v一是一个t对象。
你可以想象一下啊,在内存里面的这是一个t对象,里边有个x,这是我们的a0 x0 ,这是一个t对象,呃,又里面有个x啊,这是x1 ,就是这么一个东西,好,我现在干一件事儿,干什么事儿呢,我起了两个县城。
这是第一个,在这第一个线程里面,我不停的修改2v0 的x看到了吧,2v0 点x等于i,然后我在另外一个县城里面不停的修改,而a一的x,好最后呢我做了一个计算。
就是说整个程序结束之后会花多长时间来完成这么多次的循环,跑一下看看啊,呃来这个这个小程序能跟上的老师可以,简单啊,来我们跑一下走,你,ok请大家接着数据的数据是大概800个毫秒,再跑一下。
看看800ms左右吧,嗯嗯然后呢还是同一个程序,还是同一个程序,你仔细看,在t里面呢,我增加一些没有用的数据,我在x前面增加七个long类型的数据,在x的后面增加七个alone类型的数据。
我其他程序啥都没有变,没有任何变化,我再跑一遍走,你,这个是240,再跑一下240,再跑一下,240,再跑一下243,哈哈再看一遍,我把这两行注释掉,再跑,788好不好玩,好,给大家十秒钟想想为什么。
为什么呢,其实你想想我刚才讲的缓存行的概念,你应该就能理解了,你想想作为只有一个x存在的情况下,同学们,你们好好想,我这个第一个是x0 吗,由于它两个位于同一个数组,第二个是x一好。
这两份数据的位于同一行的概率,那是相当的高,然后呢我们两个县城,第一个县城跑到这颗cpu里好,这行数据在这,第二线程跑在这个cpu里,这行数据在这儿,但是呢第一个线程只改x0 的部分。
第二线程只改x一的部分,刚才我说过,由于有缓存一致性协议的存在,我们对这里的任何修改它,要通过某种机制来统治到另外一方,我对这里的任何修改也要通知某种机制化交给另外一方,那我想问你这种机制要不要耗时间。
要不要一定要好了,换另外一种情形,我前面有七个long类型,后面有七个long类型,那么这个时候会发生一种什么情况呢,这个我看我有没有画图啊,有画图,我手工给你画一下,我在这里画了一个小图。
因为以前老有同学想不明白这件事,其实这件事挺简单的啊,同学们,你们仔细琢磨,我们说在一个long类型的x它是八个字节的情况下,在他前面放了七个,后面放了七个。
也就是说这个x无论和其他数据怎么样进行排列组合,它都不可能和另外一个x或者另外任何其他数据位于同一行,能不能听懂,为什么恰好是七个呀,因为我们一行数据是多少,64个字节不就一共是八个long类型吗。
假设我们的x前面七个加x8 个,后面七个加x8 个,对不对,既然这个x是为在这行里,另外这个x是在另外一行里,那我一颗cpu改这个我还用通知别人吗,我们效率是不是就变,是不是就变高了。
good一定变高了,来这块能听懂的,给老师扣一,那有同学说老师这跟语言有关系吗,跟语言你说有关系吗,半毛钱关系没有,你是c语言,你是c加加语言,你是java,你是go。
随便你就是我建议大家就是我们mc课里大量充斥着这一类的内容,它跟语言没有关系,它叫做架构师课,知道吧,我觉得这样的内容才是值得你好好掌握的,至于语言的语法我不知道了,查查类库不会用了,查查没有关系的。
很容易搞定好,那现在我们我们继续说,我讲到这儿呢,有同学可能会问说老师真的有人这么写程序,是的,有一个特别牛逼的框架,听说过的同学能跟老师,不是能跟面试官聊起聊,聊起来的时候呢,你能很有很大的加分项。
这个框架呢它的名字叫disrupt,disruptor,翻译过来叫闪电,嗯形容它的速度非常快,闪电是原来得过杜克奖的一个开源框架,这个框架呢那个他追求的唯一的东西叫做效率,它是一个什么东西呢。
单机最快的mq消息队列,消息队列呢多数同学应该听说过,一个容器里面装着各种各样的消息,有生产者不断的往里扔,有消费者不断的往外拿好了,这就是一个消息队列,一般的消息队列啊,要么用数组。
要么用链表链表好呃,像这种东西呢,一般数组的话两个指针头指针指尾指针链表也一样,头指针尾指针好,为了追求效率,disruptor用的东西叫环形队列环,环形队列,环形队列有一个好处。
只需要一个指针就可以了,不断地挪,挪到脑袋上之后,又继续往下挪,不断地转圈转圈转圈儿,当然它是一个首尾相连的数组环形队列,我讲到这儿呢,有同学可能会有点懵,说老师我一个环要是全装满了的时候。
我在往里头扔数据怎么办,cs方式等待消费,没听懂就算了好吧,就这里面是另外多线程的另外的概念,如果说呃今天来不及,我明天给大家讲这个概念,它是提高效率的,另外一种方式叫cs方式,等待消费。
消费完了再往里装,无了是吧,有好多同学说老师您讲完课之后,我突然间发现好东西串起来了,那就对了,因为我讲的是什么第一性原理是吧,我讲的是什么矛盾论,刚才浪费了空间,节省了时间,浪费了时间,节省了空间。
有利有一利必有一弊,有一弊也存在一例,听我说,我们说这个环形队列它的全称叫什么呢,叫做作ring buffer,ring环形buffer缓冲区,环形缓冲区,这是它的一个类,我们点进去看一看它的源码。
点进去,当你看这个rain buffer的时候,你会发现它有一个cursor value,就是指针,指针指的位置,你会发现有特别好玩儿的七个数据扔在这儿,龙龙龙龙龙奇怪奇不奇怪,我说我不跟你讲。
你一定不明白这七个数据干嘛的,你信吗,到现在我觉得大多数同学应该都明白干嘛使的,填充用的,有同学说老师那不对呀,你在这里面只填了七个,后面有七个,假设它是后面那七个,他前面应该还有七个呀,对不对。
别着急,rain buffer,它的父类叫做rain buffer fields,点进去,rebuffer fields的fly叫rebuffer padding,点进去,在他的父类里还有几个。
看懂了吗,来能get到这点,同学老师可以,是的,为了追求效率,程序员极客们无所不用其极,确实有的人会这么写,会追求这样的效力啊,要笑死,为什么要笑死啊,你跟面试官把这个事儿聊出来,50万年薪就等待你了。
知道吧,孙子和爷爷有七个,哈哈,第一次看到这样的写法,对,很好玩的,我后面给你讲的型号,你会你会看到会更加的奇怪,就以前有同学有同学说,老师听完你讲课,我都不知道该怎么写程序了,没事儿。
知识这东西是先学后再学薄,也有好多时候就跟人生的道理是一样的,有好多人说啊,我看开了,有些人是觉得自己看开了,他没有经历过什么事,看了几本书觉得自己看开了,有些人是什么样的呢。
经历了很多事情的最终的顿悟,这是两种不同的境界,慢慢来好吧,先把人声做厚了,然后很多事情呢你就看得通透了,先把书读厚了,先把知识学好了,然后你就看得通透了好吧,由繁入简,由简入繁,再由繁入简啊。
这个闪电英文名全名叫啥,disruptor,就是闪电的英文名嘛,你搜一下。
好了,我这个嗓子确实今天非常的不太好,因为因为我今天其实还可以给大家讲一些更多的内容,但是呢我今天速度稍慢。
请大家见谅,我明天继续好不好呃。
系列 1:P26:多线程与高并发:6.课程答疑 - 马士兵官方号 - BV1mu411r78p
11点钟我们结束,我留一点时间,也是我们月末了呃,做一点小小的广告,大概15分钟不会超过这个时间,我首先介绍简单介绍我们课,我想介绍这个课呢,是想通过这样的方式来介绍。
通过我们整个机构的历史的方式呃,我们我们自己的机构呢,大概是在2019年登录腾讯课堂,当时呢我们做了现有知识模块里面的,这部分内容呢你们可以去自己去读,多线程的部分呃,内存的部分,漂游的部分。
操作系统的部分,网络原理的部分呃,底层的一些东西,还有呢架构相关的一些东西,各种消息的中间件,还有能源码相关的为服务相关的优化,相关的侧开相关的5g相关的数学,相关的软性的知识。
这部分呢我把它简简称为知识点课程,就是每一部分可能它是一个完整的知识点,你可以认为什么是什么,卡夫卡克哎,各种的rabbit q,它是一个完整的知识点,这个大家能理解吧,这是19年我们上的课,这个课呢。
当时我们的目标呢是,让咱们大多数的程序员,要拿到30~50万,绝大多数通过这个课是可以是可以到的,呃但是呢就是说把握性不太高,为什么不太高呢,因为有很多人说说老师,我们知识点确实学了,但是呢我没有项目。
大家找个工作应该会了解,没有项目的情况下,你的简历很苍白,只写知识点的话,写不出技术水平来,所以呢在20年的时候,20年的前半年,我们整个课程体系做了项目的更新,项目呢我就不一谈了,网游的最近也可有。
有有一个小伙伴靠这个就进了腾讯啊,然后呢嗯何佳芸的入门级的项目微妙的嗯,网约车的啊,一级一流量的嗯,推荐系统的啊,流式计算的啊,以及中台中台这个我们打算换掉了,因为中台这个概念在阿里都快被逼引起了。
然后呢呃我们举一个小例子啊,就是拿网约车来讲,网约车呢目前是已经讲到了第四版,第四版应该讲完了,现在正在讲的是第五版的内容,嗯,这每一版主要是什么呢,用的不同的技术层面,呃。
第二版的时候我们当时用的是spring cloud奈飞呃,就是奈菲那套ring cloud微服务相关的东西,第三版的时候呢我们讲的是spring cloud,阿里巴巴国内用的比较多的啊。
就是阿里巴巴相关的,sorry,第三第三版的时候是按耐飞的,更进一步的详细的解释,以及里面的什么多些这个分布式事物啊,嗯这个这个这个各种的网关怎么怎么做,怎么做呀,各种发布怎么做啊,滚动啊。
这是第二版的一个增强版,然后呢呃第四版的时候是spring cloud,阿里巴巴也是国内最现在最流行的呃,目前我们讲的是第五版,第五版是什么呢,就是第二代微服务,它全称呢是叫做service mesh。
叫服务网格,它的落地呢落地的名字叫is steel,这个你听说过也好,没听过也好,不用担心,因为这里呢是老师带着你往前走的,呃,就是我们帮你找最流行的东西,你不用管,这两个的结合就是知识点结合上项目。
这两块知识的结合,大概基本上非常有把握的,可以让你到30~50万,好了,那么在这个基础之上呢,有些小伙伴就又不高兴了,说那个老师,我本来我现在就拿30万了,诶,今天有来的,有没有拿30万以上年薪的。
给老师扣个一,有没有报名,美版都能看吗,是的嗯,应该有啊,因为现在30万以上年薪了,就是不不太难达到了啊,不用客气,也没有人认识你啊,在30万年薪以上,我们又做了一门更深入的课呃,这个课呢叫做架构师。
全称呢叫m c a级架构师,这个课的目标是什么呢,这课的目标是构建互联网,三高相关的架构知识呃,这个呢叫做high availability,高考应用,high scalability,一块叫高并发。
一块叫低延迟,两块相辅相成,这全称叫高兴的,我们怎么样才能达到这种互联网级别的,三高架构呢,我们的双11也好,018也好,流量呢非常的大呃,12306,好那这时候我怎么怎么能撑得住呢。
好就这个架构该怎么做出来,在整个围绕这个架构的体系,我们大概做了1234567,大概14篇左右的理论课,在这嗓子关系。
我真我我我我我真就不想给你打开了,好吧,你如果感兴趣的话呢,ok,那么在这个基础之上,市面上n多的机构讲这个东西啊,不管他能不能讲,能不能落地,反正人家也讲呃,在这14篇理论的这个这个内容上呢。
很多人呢觉得自己就掌握架构了,其实不是,为什么,不是呢,因为我呢是从线下教小白开始呃,来给大家讲课的,我最希望的架构师是叫做能落地的架构师,是就是你只会画图,落不了地这事儿肯定是不合适的。
能落地的架构师,那什么样才能叫能落地的架构师,就是我们做了这样一个项目,这个项目呢叫东宝商城啊,啊这个东现在我们改名了,不叫这个咚咚咚咚锵咚了啊,现在叫,那个黄老师带队来完成,东宝商城的全方位的落地。
那么这个落地呢,就是你要从搭建分布式的d生中心,搭建分布式的配置中心,索集群事务集群啊,就各种集群搭好之后,注册中心监控mq的集群,es taning,mysql存储集群,在各种的集群的基础之上。
再来进行实际当中的代码落地呃,在目前我们这个项目已经部署到了公网,是大家是可以访问的,我找一下访问文档,我找一下访问文档啊,呃目前还没有给他配域名,目前是一个ip地址,不过没有关系。
大家挑这个ip是可以访问的,并且它是可以做到弹性的扩缩容,比如说我们现在的并发量的支撑呢,100个没关系,你如果想来1万个程序,什么都不用动,只需要在云端做扩展就可以了,呃到目前为止。
我们大概部署了五台物理机,大概应该是有七八十个逻辑节点,这个我我我这么讲,大家能听懂吗,因为有些基础确实比较弱的人啊,不知道大家能不能听得懂,嗯现在应该有数据的只有手机,应该是应该只有手机。
应该是有数据的,只有手机啊,我加入购物车。
登录一下。
叫什么,我说我跟我说,这是不是已经有了,好不掩饰了,因为这个,已经假如不购车了,我们去结算,买了两台是吧,呃做在线的支付还是快递在线支付啊,尽量提交,我选支付宝啊,支付宝来支付呃。
那个支付宝呢主要是有沙箱的存在,所以他那个服务呢一直不是很很到位,嗯,你要愿意扫个码的话,你就可以做支付了,那就算了,我就我就不做这个支付过程嗯,就是怎么说呢,我们这里的这个东西呢。
不是为了给大家展现前端,而是为了给大家展现后端呃,大家伙呢也可以在夺宝商城的嗯。
在首页的地方呃,可以直接选我们的白皮书,你可以就可以直接下载了啊,小伙伴们呃,我们后面呢还是想把整个的项目呢,大概今今年想给他做得,非常非常非常的完善,把各种层面的东西都给大家考虑到,都坐在这里。
怎么说呢,以前呢好多同学呢说,老师我我是真的很想跟完这个项目,因为更完这个项目的效果大概是,百万年薪左右这样一个水平,为为什么这么说啊,嗯看一个小小小的案例,这是我原来一个学生。
他当时呢是嗯花了90万,花了90万,那个进腾讯拿了90万年薪,那么腾讯呢问他的问题是这个问题,是这个问题,你感兴趣你可以做一做设计,就这个设计做完,那你离腾讯的90万年薪就近了一步,你明白吗。
呃那么这个东西呢,实际上它集成了集中了互联网的三高,30秒抢1亿用户数3000万,我们说并发百万吧,可以说百万到千万之间,高并发连续抢只能抢成功一次,资源评估,这个跟秒杀非常的类似。
对不对,这是他做的一个设计,这个呢我们形成了专门的一个课程,叫架构设计,那么我们这个项目呢是叫做集架构,设计和架构落地之大成者,以前呢我们在没有更完,我们自己的知识点之前,我们这个项目呢。
也是很少有同学能赶得上直播,在这里跟大家说一下,8月1号第二个版本直播课,这个项目的落地过程,8月1号落地开始呃,你放心,你跟完这个项目一定叫做物有所值,他会是以一个项目为中心。
redis那个知识点这方面,调一那个知识点相关的算法,那个知识点ai推荐那个知识点,分布式微服务,那个知识点秒杀,这些是我们原来讲过的课程内容能听懂吗,这个是我们核心中的核心,好了。
我觉得我整体的课程的内容,我就大概介绍完了,可以这么说,就是按照薪水来讲,305000 100150,我同学说了嗯,老师这个课程的价格是多少啊,今天的活动点,应该是12000多块钱。
那么有同学说老师说第一我没有这么多钱,没有关系,分期24期,一个月500块钱左右,老师那个我我还是没有那么多钱分期,另外一种分析方式,前四个月一分钱不用掏,老师我还是没有那么多钱买迷你版。
我把薪水先涨到30万再说,再往后再补后面部分,但是如果买迷你版再补,就会比这个价格更高一些,我个人是推荐一次到位,腾讯课堂上大多数跟我们讲类似课的,大多数只有这这两部分,甚至这两部分都不到。
很少有人有这部分的听懂了吗,我建议你一次到位就行了,有同学说,老师我学到一定程度是一个什么样的水平,我觉得废话呢,我也不太想跟,在这个网址上大概有接近1000个学生的,我们学完这课部分。
学完课程之后的内容,你可以一个一个一个挨着牌的看都可以,有最近的,有以前的,找出一个我们任何一个造假的来,1万块钱一赔一好吧,我直接赔,直接赔给你,这个呢可能是最近比较多的,我们可以看几个典型。
怎么说这个两个offer,这是应该是最呃。
是在年年年底那会儿,因为他当时要求说老师你要公布我的信息,麻烦你过半年我说可以,他在阿里拿的是60万年薪,阿里拿在京东拿的是70万,最后呢是选了京东,他说感谢马老师,在马老师这学了很多东西。
你们今天晚上来,我虽然讲的慢,你们应该也会也会有所收获,所以我们课程的量比较大,主要是因为呢我们确实讲的比较细,我们想讲的比较深入的内容,比较细致的内容,即便讲到这儿,我个人其实还不太满意。
所以在我们的很多的内容,目前也在动态增加,什么叫动态增加,就是说当我们感觉到感觉到,学员应该还要掌握这个知识的时候,把这个课程给加入,当然我加入新的内容的同学说,老师那还要还要不要单独收费。
需要老师怎么样单独收费呢,每年一块钱,学费是这个数,这个学费顶1年,那第2年再升了,升升了内容怎么办,给我们一块钱,你再学1年,第3年呢再给我们一块儿,写在合同里是没有问题的,呃这个大家能能听懂吗。
没问题吧,课程是没有有效期,它不是说没有有效期,有效期是1年,但是我们你后面还想继续学,我们那个更新的内容怎么办,因为我们内容经常更新的,每个月都会更新,说一下那什么吧,说一下最近的我们的更新吧。
打算呢还没有讲到更新,感觉今天是有点点累啊,我没关系啊,我们慢慢聊啊,大家只要不嫌我慢就行,今天的节奏怎么样,今天今今天那个推荐有更新啊,最近呢大概有这么几个更新。
第一个呢叫做金九银十的面试突击,每年有两个跳槽的高峰期,也是非常优秀的,涨薪的时间,一个叫做34月份,一个叫做90月份,想进一线大厂算法你是避不开的,互联网三高项目的直播课,这以前呢从来没有说。
专门把这个课程拿过来做直播,8月1号开始,嗯还有一个比较牛逼的课,是我们最近更新的,要更新的bat bat w w是什么微博,因为我们这个老师他是在微博,孙老师原来在京东,现在在微博。
他会给我们分享这样一门课,叫做大厂项目的bug处理经验课,这个是很牛逼的一门课,是绝对值得听的,以前我们买我们课程的学员,要不要再单独交费,要不要要不要有怎么调一块钱,听懂了吗,这四个课全部对对。
今天报名的小伙伴不用单独干别的,第一原来mca课不涨价的情况,万一后我们会稍微涨涨点小价格,没办法,我们把整个内容从腾讯课堂,全部搬到我们自己平台,但是带来我们成本会巨量增加,一个流量费。
一个空间费云云云,空间的好,今天晚上在老师这儿依然是这样的,这四个不单独升一分钱,还有以后的升级依然是一块钱,好了能get到这一点,同学老师可以,所以有没有有效期有1年,但是呢后面的像类似于这样的升级。
还会多的是记住了吧,因为我们升级的内容,从是从原来的那个很小版本,一直升到了现在,2019年报名的学生,到现在为止,依然可以听我们现在的更新的内容,没有单独收过一分钱啊,最近的倒计时的两天指的是什么呢。
是有一个内容要没有了,就是这个腾讯课堂,8月的7月份的活动平台,满减是700块钱,到8月份你想要都没有呃,我这么说啊,就是今天你麦克,很可能比前面的学员还便宜,比后面的学员也便宜,为什么。
因为这个优惠不是我们给的,是腾讯给的,过这个月你想找我要,他一定没有我们三榜第一的奖学金,每个榜第一奖100,三,榜第一三百,这里头有一个有一个1000块的优惠啊,至于其他的我就在这儿就不接受好吧。
化妆美容呢我大概都介绍完了吧,嗯案例呢可以看,我每次我老师啊,我直接跟你说,我每天最喜欢看到的就是这些,知道吗,关注我们,那明天再见,这个呢是从呃进,这是阿里菜鸟到阿里菜鸟,它大概涨了50%。
这是当时找我咨询那个jvm课程的时候,就调优的课,跟菜鸟谈那个入职的工资啊,34x15的一个薪水,你自己算50万年薪左右嗯,这是国美offer涨薪涨了三倍,这是我们班主任老师在跟他沟通啊。
入职了还可以三倍哈哈,他原来是8k现在是23x14,这哪值三倍,这个是老师指导之后,校招,入职阿里金子翻了倍了,就是说有的时候呢你看上去好像呃,这1万多1万块钱,但是呢其实你收回这1万多块钱呢。
叫做分分钟,还有一个我还是那句话呃,一个人来讲,他一定要不断地拓展自己的认知,我们能带给你的是20多位老师,你拿大腿想一想,你也也会比同龄人走得快得多,这个是虾皮85万年薪的,这个是两个月呢。
大概涨了百分之多少,你自己算吧,我也不知道啊,这是火币网offer翻了倍的,这是14x14的,涨了5k的啊,这个是四个月涨了30%的。
这个网址是对外公开的,呃你们自己去找好不好,嗯,呃有很多相关的大专生,这是自考大专的对日项目转过来的,这个是自考大专业性水平翻了倍的,这个是网络大专,14k涨到25的,这个是大专非科班薪水翻了倍的。
呃这个是沈阳的大专,66。5~14啊,在沈阳那边还可以啦,a哪去了,啊这是不在,呃在面试申通的时候,接没接到阿里的电话啊,不然就进阿里了,也比较倒霉,属于这是大专学历呢,收到了很多大厂的offer。
从没工资到就业的啊,呃不展开了,好了我我觉得我要说的就说到这儿呃,大家伙呢现在还有15分钟啊,对今天晚上的内容基础课嗯,对我们课程的,对我们那个那个那个那个活动的内容,你都可以跟老师聊一聊,好不好。
那就聊着玩儿,我是知无不言,言无不尽,不做夸大,也不会谦虚,想找比我们更牛逼的课,你应该是找不到的,还有女学员的对嗯,女学挺多的啊,这是非科班的女学员,5年的,找几个女学员的吧,就是你可以自己搜一搜。
我没法打开来看一看,因为很多人呢你的情况很可能是一样的。
这是女生两个月17~24了。
这是女生跳槽,就是涨了10k的。
就一个月10k啊,就一个月就涨1万了,不是说那个好多个月啊,这是25岁女生年薪30万offer的,这个不清晰的呢是原来接的啊,就去年或者前年的时候清晰一些。
都是啊,今年或者去年下半年啊,这是刚才那个结果了啊,四个月薪水就直接翻到48万了,这一点不夸张啊,我还是那句话,你通知老师,这里要找到一个假信息的一个p的老师,直接赔你,把学费赔给你啊,就是还你学费。
再赔你学费就懂了吗,我觉得他说的挺好玩的,好多知识融会贯通,这是对的啊,这个也挺挺典型的,因为这个这个这个姑娘呢是呃原来在外企,后来想再跳一他薪水,它主太凶了,你知道吗,他平时不努力嗯。
老爸老老公孩子热炕头呃,这个又重新回到行业,拿了外企的offer,还涨了薪水,而且最最关键还涨信他原来是33k,现在涨到45k。
呃呃二本的女生,小公司跳到滴滴的,年年年薪涨了13万,这是你1万的投入,这个是45岁的女生,在多伦多涨了50%,这是一个女同学,滴滴和小米2个近60万年薪的offer啊,嗯我不一一找了,好不好。
不要等着我们涨完,涨完价格,然后呢,煮完了,然后才想起来这件事,那你就亏大了,而且腾讯的这种奖学金啊,也不是说月月有的,1年可能只有一次,金九银十开始了吗,金九银19 10月份才开始啊。
但是我们现在对金九银十的突击班,已经开始准备了,明白了,这图标也是很好玩的啊,我们每一个课开的时候,并不是说我们拍脑门儿开都是有它的道理,是多年经验的总结,就是突击,为什么要突击啊,为什么要突击。
同学们是因为有些同学着急找工作,他来不及呢,把知识掌握的比较嗯扎实,那这时候怎么办呢,短期有没有办法安利,就是学员们的各种需求,促成了我们所有的这个课程,呃这是重点,只是个突击涨薪40%。
这哥们儿是报名报了七天。
学了四节面试突击课,直接收获了亨特加offer。
不是盖的啊,很很牛逼的突击课本科生嗯,这里有个链接练错了啊,哎咱们小姐姐把这个链接跟我,把那个告一下,报告报告一下啊,这个标题跟那个图片没有对上啊,他本来是本科生啊,突击了一周,涨了10k的。
就是没有对上,嗯这个是专科生。
31岁,然后两个月的面试,突击多个offer就搞定了。
什么叫突击,你想短期就想涨薪吗,突击班是不是挺好。
mc课是一个很神奇的课,就是我们在搭建自己平台的时候,我们不是搭建了自己的平台吗,我们的主打歌叫m c a,就mc课是一个很神奇的课,呃我这么跟大家说啊。
在我们整个体系课堂里面,嗯这是实战课,这是体系课,呃,可以这么说啊,就是在我们整个体系课堂里面,很多的课程都是从mc可以衍生出来的,比方说网络安全啊,这个是通过我们那个原mc可衍生出来的呃,目前嗯。
我很很可能要在后面把它给单独出来啊,对你现在购买的话,运维了呃,go on就是我们mc课,数据结构与算法的呃,前端的ai的智能物联网,嵌入式物联网测试的,然后云原生的游戏开发的啊,呃e的啊。
那个呃dba的就是说我们很多很多的课呢,其实是从mc克眼上开来,就是mc课是个,什么东西,我把它定义为程序员的人才成长课,我再说一遍,这个东西叫人才成长,就是我个人建议你扎扎实实。
以每年一块钱跟着老师把mc慢慢学完。
你会真正的体会到,别人那百万年薪是怎么达到的,从最开始的提问的智慧怎么问问题开始,教你一步一步一步一步跟着老师慢慢走,有一部分知识点的课是录播课呃,我们的项目的课是直播课o,播出很科学的一个的讲课方式。
就是讲课的效果,就是现在你看到,你去别的地儿可能就不坑,有的人可能挨过口,老师这里来,老师这里的还没有任何说,认为老师这里有坑的,听懂了吗,老师你的课太多了,能不能给我一条清晰的线路,说对了。
课不多就不能做到因材施教了,所以在这里像那种短期的内容,老师可以帮你定制路线,你可以从哪一节,哪一节,哪一节并行学,然后再汇总到哪一节,然后用几个月时间,完成一个什么样的目标啊,一个大体的演示嗯。
这就是我们现在的课,只有这样才能达到现在的这个效果,直播课会给代码吗,呃代码是公开的,当然可以给,我们是准备把它做成开源课的。
你重点体会的,其实啊今天我们顺着我们,我我今天的内容讲可以吗,今天我给大家呢也留了一些东西,比方说c a s是一个什么样的东西,我今天呢就给你讲到了,先这个这个叫,呃对这个缓存行的一致性嘛。
实际上呢保证它的可见性,这件事还是比较复杂,呃明天呢我跟你讲可见性和有序性可以吗,在后面讲多线程的赢呢,我就不再讲这个底层的内容了,其实底层内容挺好玩的,但是后面我想讲一些什么东西呢。
讲一些大厂的面试题呃,最近大厂的面试题呢又开始作妖呃,各种各样的面试题都出现了,如果你们想去领一些大厂的一些,面试题的资料,也可以去找一下我们小姐姐领,呃,我们到目前为止应该是讲解了。
大概是300左右的题,已经讲完的,预备讲的是接近1000到呃,会做那个题库,说哪道题不会了,在我们库里搜一搜,好了就到这吧,好不好,你们去骚扰骚扰小姐姐,骚扰骚扰小姐姐,给你放音乐,放点小小的音乐啊。
放身上下,我的膝盖,这么跟你说,如果你还比较年轻,做老师关门弟子,就是如果你要比你还比较年轻,想做老师关门弟子的话,其实你水平还没到东北人嘛,呃河北人,那个我最近有想收一些关门弟子的计划。
就是这些关门弟子呢,我想第一个呢要把它送进大厂,第二个呢打开它的人声空间,就这个东西还是挺难的,嗯,打开你人生空间的需要,打开你的格局和思想呃,呃,我直接这么跟你说,我大概1年我大概要读100本书。
就是我在教学管理给大家讲课,在这个之余,我大概会读完100本书,如果你们年轻的时候啊,你到老师这个年龄,你会发现你的人生很广阔,什么35岁,什么中年危机不存在的,第二个呢我我我我自己报课程。
我直接这份工就这么跟你说,基本上几10万是有的,就是你到最后你会发现,你这辈子做的最值钱的投资是叫做投资,你自己好吧,你会发现呢你去做别的投资可能会亏嗯,可能会亏得一塌糊涂,但是你花在你自己身上的钱。
十倍百倍的赚回来,负责任地向你讲,咳咳咳咳,半小桥菩提下策马,纵向后,灰黑的烟,三叶的秋吹落了3月天,风满楼游荡在心间,走啊喝点水,下下聊着玩啊,我慢慢说啊,对,嗯当然我看书也特别快,这个是练出来的。
这个最开始看书也慢,后来我慢慢发现了书的一些规律,对有时间我慢慢讲给你们听,就特好玩,其实有很大多数的书呢,是不不值得你去仔仔细细的阅读的,诶你们想听老师给你们推荐几本书嘛,想听的你给老师扣个一好不好。
有想听的,我看有多少人啊,还在,训练营的人少了一些,公开课的人还是还是有一些啊,想推想听推荐人文的,还是想听推荐技术的呀,人文是吧嗯技术好吧,这边人文这边技术呃,推荐技术的话呢其实比较简单。
我我我我我给你看,我们上vip的时候给大家推荐的几本,嗯这是原来曾经给大家推荐的几本,几本书啊,嗯有一个编码是吧,深入理解计算机系统啊,如果有语言的话,推荐这两门c和java版。
当然嗯如果你跟老师学的话,那你就不用去再看这个书,是因为呢呃在科普o c e,java数据结构与算法,算法和算法导论,这个算法导论有点太难了,还有这个计算机程序设计的艺术,我不建议看呃。
像数据结构和算法这边你什么都不要想,就跟我们的算法直播课啊,就跟我们算法课呃,算法课老师叫左成云,这个有同学听说过的吗,如果不知道的话呢,百度搜一下,中国讲算法最好的老师,没有之一。
不说话是是去百度了吗,destiny destiny,destiny,嗯嗯嗯,嗯嗯嗯嗯嗯,嗯还有活人在听老师讲课吗,没有的话,我就我就下了啊,有是吗,多大必须都有嗯,看看黄老师简历。
还有一些这个内核系统,还有tcp ip,这些都是非常经典的书,但是你像什么什么java,什么快学30天,那什么这个速成那个速成你别看了,也没什么意思啊,马老师是不是在用传说中的机械键盘啊,师弟老师。
什么轴的,我忘了,1000 1200多,用起来很爽的你值得拥有,舍得买吗,如果你自己买嗯,买个1500左右的键盘,你们舍得买吗,是的,那岂不是要做到三回事嗯,不舍得就穷吗,我有十把键盘嗯。
小小你是那个小小小富婆是吧,其实啊,这个也很简单,多多挣钱,一句话呃,如果你理解不了,更深入的说什么宽广的结局啦,宽广的格局了,什么更高的层次了,你理解不了,这个没有关系,多挣钱总能理解吧。
就是别的不敢说让你多挣点钱,老师是最有把握的,知道吧,就课程别的不敢承诺,说承诺说你跟老师学完之后,涨薪这件事基本是百分百向你承诺,就多挣点钱,总是没问题啊,看看黄老师简历,可以啊,带你看一下。
找几个典型的简历给你,你们想想看哪个黄老师是24岁,年薪60万的时候,搭档是仅阿里是60万金的,金美团是85万,小股票一共是百万多,29岁年薪120万的,32岁的60万的大专,44岁大专的百万的。
想看哪个,呃算法工程师适合报名m c a嘛,算法工程师,你是ai算法吗,ai算法报我们ai课,ai课也是全网最全的和最深的,推荐系统哎呀,推荐系统谈不上算法工程师啊,你不要不要把自己叫算法工程师。
推荐系统的叫做,但是你得看你推荐确实是研究,推荐算法的吗,保ai如果你研究ai,如果你研究工程的到mc就是推荐系统,算法工程,听懂了吗,推荐系统工程mc,专门研究推荐系统算法的保ai课好吧。
20 24岁那个是吧,ok,多数不具备这个水平了,你30可能应该也没有。
黄老师24岁的水平,纯技术,一点没改啊,黄老师的原封不动的拿,拿阿里60万年薪的时候呢,后面的一些咱就不看了,好吧,呃课程里全有放心,就是我给你展示了任何的简历,他敢写的东西放心,咱们课程里全有。
只不过你是要用多长时间,以什么样的代价把它拿到手啊,这个也看看29年薪120万的,想看的扣一有十个扣一我就看,少于十个就不看了,三个四个五个六个差不多了。
仔细看这个简历啊,最值钱的是在这儿具有分布式高并发,高可用大数据量的系统架构,设计及研发经验,拿到年薪120万,这里占了80万,这里占了40万,看一眼课程里头关于源码的部分,四人源码。
呃林老师大概讲spring源码的话呢,两个半小时,两个小时分钟,一共讲了呃34节课,然后每节课的话呢,差不多两个到三个小时之间,差不多80个小时左右,好好想清楚这是一个什么体量。
就是说为什么读了我们的源码,可以达到p7 水平,是因为源码讲完呃,基本上你就可以做到可以定制spring了,注意是定制开发啊,不是拿它来用,不是用它,而是开发的,没法好论文转账开发呃,我建议你读博。
不然的话呢你在企业竞争力不强,听懂了吗,嗯如果不读博的话呢,转java开发是可以的,呃建议你跟我们ai的老师学,这是一个方向,艾老师主讲老师姓卢,卢经,原来腾讯ai主管北大的博士后。
爱奇艺的team leader,我给你找的老师没有一个是菜的,好同学,那个不敢跟郝老师学,其实郝老师的一两句话,会顶蔡老师的一堆话,承认就好,跟点牛逼的人啊,跟对人的话,选择比努力更重要,哈哈哈。
ai可能有哪些啊,另外课,我们看一眼啊,稍等,为什么我每次都是把这个iot的给忘了,嗯稍等片哥了,大概来看看了,那我找不到最新的了啊,看一下老版本吧,这个呢是a i和i o t的一个结合。
就是a i全称叫a i o t,呃ai的部分,然后呢呃语言的部分,然后i o t的部分呃项目的实战啊,大概大概有一个40多个项目左右吧,呃我简单跟你说吧,大概涵盖了这些内容啊,就是,第三呢是那个llp。
nlp呢,就是基本上涵盖了推荐广告,搜索推广搜三部分,那么量化量化交易量化呃,cv部分,加起来也就是a i o t的部分要多,要一下那个嗯,要一下那个白皮书就可以了啊,好了好了,真的不跟大家聊了。
嗓子有点受不了了,see you tomorrow,see you tomorrow。