00:00
喂喂,好,相信大家能听到声音并且见到画面的朋友,再给田老师说一下吧,喂。啊,我们开始啊,啊,大家从我们今天这个标题呢,应该知道今天我们讲什么啊,大家从这个标题看的时候,应该知道我们今天跟大家在讲什么东西啊,我们今天呢,跟大家讲一个大家可能很多朋友听过,但是又不是那么的常用的一个东西,叫做红黑薯,说不常用的是因为你没用过,大家可能在开发的时候,写代码的时候,可能用的时候自己去写一个红黑数,这个可能没有,但是我可以跟大家讲这个东西大家应该都用过,都用过,那在哪里有用过呢?我等一下跟大家讲,我把这个好。拿过来红黑树,红黑树是个什么东西呢?
01:06
红黑树啊,红黑树是什么?红黑树它是一个二叉树,它的每一个节点由黑色和红色色组成。然后红黑树是什么?我们今天分为这么几个问题啊,这么几个问题来跟大家讲红黑数是什么。这个相信每一个朋友都知道,红黑素它的节点是红色的或者黑色的。好是什么好?红黑素的性质有这么五条啊,有这么五条,第一条,第一条说的是红黑素,它的叶子,它的节点,它的节点要么是红色,要么是黑色,颜色由红色和黑色组成。啊,红色和黑色,还有第二个根节点,根节点都是红色,根节点都是黑色的。
02:14
根节点都是黑色的,第三条,第三条跟大家聊的就是两个红色的节点不相邻,好吧。这是两个红色的节点。不相离。这个不相邻什么意思呢?不相邻就是。红节点,它的两个子节点肯定都是黑色的,好吧,两个子节点就是说上下子节点,父节点和子节点之间不可能出现两个都是红色的这种情况,第四个跟大家聊的啊,第四个从它根节点,从任意节点到它的根节点有着相同的黑色高度。
03:04
到叶子节点。有着相同的高度。好,这是说明这个,诶怎么少了一条,还有一条吧。而且我要看一下。好,还有一条,忘了还有一条,还有一条就是黑节点,还有一点就是所有的叶子节点都是黑色的。啊,都是黑色的,这是这五条性质,这五条性质大家现在来思考一下,大家现在思考一下关于红黑树它的性质定义了什么东西,这个怎么去理解这个东西,很多朋友跟我聊,就是听老师这个红黑数这个东西啊,我怎么知道它是正确的,我如何去想象一下它的正确的啊,就是请大家注意一下这个过程中间,首先各位朋友你去思考这红位数,先不从它的定义走,先不根据它的定义来。
04:03
了解好。我来画个笔,打开一下。好,先不根据它的这五条性质,我们现在来思考一下,现在来思考一下,就是现在比如说是这样的一个节点,画成这么一条线。这个基点,这个基点好。到它的根节点,比如说好在这个里面我们能够同时排布从A。逗逼。好,A是黑色的,B也是黑色的,那我们从A到B中间,比如说有五个黑色的。有五个黑色的,那想请问一下,A是黑色的,B是黑的,中间是三个黑色的,那想请问一下中间有多少种组合能够去完成刚刚那个事情。
05:00
好,其实大家可以想的时候,跟大家来说这个事情的意思就是。请大家注意,在理解红黑树的时候,暂时先不要把它理解成一棵树,如果你为了去理解它红色和黑色的话,请大家注意,你可以参照,你可以参照黑色的根节点和叶子节点是黑色的,中间有着相同的黑沟,然后再这么去理解,你还发现很容易理解,并且还有一个条件,就是相邻的叶子节点不重复,好,这是跟大家讲的,好,那现在再跟大家解释一下。这就是红黑数的定义,那关于这个定义给大家再来排查一下,大家可以看到这个图上面哪一些是红黑数,哪一些不是红黑树,大家看到这里有四个图,大家这有四个图啊,红黑树的五条性质已经跟大家讲,这里总共一起有四颗,每一个节点都是黑色的或者红色的,大家可以看一下这里面哪些节点是红黑树,哪一个是红黑树,哪一些不是红黑树,如果大家认为是红黑树的朋友,这四棵树里面认为是红黑树的朋友可以敲个一好吧,认为是红黑树的朋友可以敲。
06:11
呃,认为是宏位数的,你就看见几式的你就敲一,如果是一式的你就敲一,如果是二式的你就敲二,如果三式的你敲三四式的你就把它敲个四,好吧,这是关于红位数的定的好,有同学说二和三式的。还有没有?还有没有这四棵树里面,这四棵树里面哪些是的。还有没有其他,还有没有其他哪些是的,这四课里面哪些是的。好,有朋友说二三式的,有朋友说没有吧,大家这里面有一句话,大家可能没有看到所有的叶子节点是隐藏的,并且是黑色的,也就是说这个条件里面中间那五条条件里面那那一条说明叶子节点是黑色的,这条肯定是成立的,好吧,那大家可以看到这里面四棵树哪棵是。
07:02
好,有没有,有没有说没有吧,到底有没有。我们来看一下,一是不是的。一黑色的叶子节点,根节点是黑色的,然后。大家可以看到这一棵树。这棵树它子节点是红色的,然后大家看到。我们来计算一下这个树的黑高,这个黑色的高度就是从任意节点到它的叶子节点上面它的黑色高度,大家可以看到最右边的这一条。123这是三颗各黑色的节点,它的黑沟加上叶子节点加一就是黑,三加一就是四,大家再看一下这一条。再看一下这一条。这条一二好,这边是二加一三,也就是说这一棵树里面它的黑沟是不满足的,所以这棵树它不是红黑树,不要认为只是挂了红色节点和黑色节点就是红黑树,好吧,那我们再看一下第二棵树,第二棵树大家可以看到。
08:15
第二棵树,大家可以看到。好。这里一个这里一个合到一起,这边是三个加上二加一三个,这边也是,所以第二号它是的,第三个我们看一下第三个大家点心的这边只有一个到它的叶子节点上面,这里是一加一,这边是两个,这边的话是二加一三个,所以它黑高是不满足的,大家关于这个我们压根就不用说这个它的叶子节点,它的根节点就是红色的,这个不用说,好吧,那我们接着再来跟大家聊一下,所以在这四个答案里面,只有第二个它是红黑数。
09:00
这第二个是红黑素,好,大家关于红黑素有一个基本的定义,基本的定义就是红黑素,它是一个满足有黑沟的节点,黑沟的二叉树,黑色节点同样多的。愿意路径上面黑色节点同样多的一棵树,一棵二叉树,那接下来再跟大家聊聊二红黑树用在哪里?红黑树用在哪里?这是很多朋友说的,这红色是我自己也能实现,我在网上找这些代码把它拧巴,拧巴我自也能把它刨去,我抄一遍,我自己是不是就理解了,各位朋友们,就是很多朋友跟我说啊,假说我把红函数对着网上,那么我抄一遍。好,我是不是就理解了。好,这是很多朋友跟我说,我说我自己也实现过我差的几种情况,删除的几种情况我都有做过,好吧。
10:01
好,那这个过程中间是不是就理解了,这个看每个人情况,接下来我们跟大家讲讲,在理解红黑数的时候,除了你自己能够去在网上抄着手写一遍以外。好。还有一定要理解它是怎么用的。是如何应用的,它如何用在我们的项目中间的。这一个就要跟大家解释一下黄学数如何应用在项目中间。其实很多朋友说。鹰在哪呢?好,首先跟大家说一点。二红黑树。是一个二叉树。啊,同样它也是一个。带有平衡性质的二叉树。
11:08
带有平衡性质的22数,那什么意思,就是说。这里面归结到一点上面,归结到一点上面,请大家注意,归结到一点上面,那红黑树它还是一个二叉树,那二叉树对应它用在哪里?好,这里面有几个情况,第一个跟大家聊的,第一个跟大家聊的。它的查找性能。查找啊,它查找是一个log n。什么意思呢?就是请大家注意他的查找的速度,一个拉杆,那我们接下来再跟大家讲一下查找的速度,这是一个客观条件,那我们接下来跟大家来对比一下一个非常知名的东西。一个非常知名的东西叫做一。
12:05
叫做一泡,这个东西我相信大家来听天耳的课啊,肯定都听过,肯定都听过,那我们接着来跟大家来分析一下一泡儿这个东西,一块这个东西它底层的数据结构,我之前在公开课上面讲过很多次,一的数据结构有两个数据结构组成,一个是说的红黑数。一个是红黑数,另外一个就是就绪对联。一个对联。操。它有两个组成,那我跟大家讲不是讲他适当的,我跟大家来解释一下,我想问一下大家。一为什么会选择红黑树?为什么会选择红黑树?难道一派的作者他不知道有其他的做查找的数据结构吗?
13:06
难道他不知道吗?肯定知道他为什么会选择红配入。难道用其他的不行吗?大家我们接着来跟大家讲一讲做查找的这个过程,中间其实从一定的意义上你可以理解为它做索引,用把它做索引,用索引什么快速去查找,那我们来跟大家解释一下,我们用来做索引的有几种工具,我们用索引,我们来选择一个索引。这个并不是说大家去跟大家去讲这个代码怎么写,而是跟大家讲这个如果我们选择一个用索引做索引的话。我们有几个数据,有哪些数据结构可以选?可以选择。好,这索引有哪些数据结构可以索引可以找啊。
14:01
有哪些?好,有的人说哈希AL家属好。第一个这个朋友,黄俊达的朋友说的很对啊,第一个说的是哈希。第一个说的是哈希,它的查找性能,如果做的比较好,可以做到那一非常快,查找速度特别快。第二个跟大家讲的这所以还有哪些,还有就是二叉树平衡二叉数al数,这个从一定的意义上面讲,它没有红黑竖好,这个是一类的情况。好,因为AB平衡二叉数,它是一个。是一个严格的平衡,因为它的查找、它的调整的次数会比红黑数要多。好,这是第二个数据结构,可以选第三个,还有哪些?还有哪些,有没有说到B数B加数。
15:04
还有哪些?啊,有朋友说的这个。还有哪些?我们挑选几个常用的,挑选几个常用的。还有一个大家可能知道,就是在一个跳表。没错,还有一个跳表。啊,大概是这么四类,大概是这么四类数据结构,我们可以用来做所引用,那大家可以想一下,一块儿的作者,难道他不知道这四个数据结构吗?难道他为什么不选择哈希?哈希查找速度这么快,难道他不知道B加数吗?难道他不知道跳表?这个跳表写错了?难道不知道跳远,肯定知道。那为什么他不选择?
16:03
好,有朋友可能会说,有会有朋友可能会说,就是因为他自己比较喜欢红黑树。好,其实我来跟大家解释一下,那我们来跟大家解释一下,这里四个分别每一个用在哪里,哈希用在哪里。第一个哈希用在哪里?哈希大家可以想象一下,首先第一个哈希它是有着固定的。是这样一种数据结构,前面它命中,我们可以通过每一个K映射到它的索引,就是通过这个数据结构里面它存储的位置和它的索引之间构建一个关系,这个关系叫做。哈希函数,那这个函数里面存的值和这个对应的这个位置中间的关系,然后后面还有如果每一个命中的话,我们可以采用这种下拉,后面拉一个链表,大家你就会发现会出现一个现象,会出现一个现象,其实如果这是一种做法,还有就是哈希。
17:10
一个固定长度,大家你会发现哈希有一个特点,它不太利于不太利于扩展,就是说在一开始如果他只有一个节点的情况下,或者说我们最开始只有少量的几个节点的情况下面,你会发现哈希它不利于做哪些,就是。从一个到这种数量,几十万乃至上百万的这种数量,你会发现它的存储的扩展,它不强,它不行。能理解,就是如果他只有一个节点,你要发现。你会发现哈希,我们同样也需要构建这么大的数据结构放在地方,需要这么多的存储放在这地方。是不是?好,这是哈希。哈希不利于。扩展。
18:06
数据数量幅度。扩展好这个,那接着来跟大家讲一讲。B数B加数B加数是什么样的?大家可以看到B加数,我们是采用这么一个方式,是一个多差数。好,B数呢,是多差数加上一个平衡,就是在同样的高度,这样。它就构成了B数,B加数呢,就是在B数的基础上面问每一个节点,所有的值都存在叶子节点上面,所以这样就构成了B加数。B加数,重要的是索引值放在叶子里面。这样。这样好,我们能够查到具体的位置在哪个地方,那那个BB加数它能不能够去做一块里面。
19:05
存储所有的。好。各位。请大家注意B加数,有朋友提到B加数的这个哈的分析,这个不是,那接着来跟大家讲一下B加数,B加数在什么?只有当当。它的级别就是什么?就是每一个叶子节点,它的查找性能就是当它的数量不到一定的数量的时候。就是当它里面存储的数量不不达到一定的数量的时候,你会点B加数,它是发挥不了自己的效果的,什么意思,就是说。我们存储几十万,乃至比如说存储几个职业,就是1024。乘1024,再乘一个1024,如果我们每一个这一阶啊,采用1024阶,你会发现我们存储1G的数据的话,1G的数据的话,我们只需要三层就可以了,那这样的话,大家你会发现我们查找的性能就会比较快。
20:14
它的性能就会比较快,因为它便秘的次数会比较少,这样大家你会发现,如果选择B加数的话,它的每一个叶子节点,只有当数量很多的时候,它才会发出,发出这个它的优势出来,不然的话它没有它的优势,那B加树典型一个用法,典型一个用法,典型个用法它是放在当在我们用数据库的索引,就是当数据库的数量比较多的时候,我们可以用B加数来做索引,那就叫这是跟大家讲到的B加数,有没有说到杀鸡用牛牛刀没错,然后下面这一个是一个跳表。跳表这个东西呢,它是一个概率学的问题,就是跳表这个东西首先跟大家讲一下,它严格意义上面来讲,它是一个数据结构,但是请大家注意,它严格意义上面来讲它。
21:06
不能说是一个非常通用的数据结构,它只能是什么?就是这么一个数据结构。下面比如说我们100个数据。好,中间N多,每一个把它练起来,每一个把它练起来,那中间我们在这100个数据里面,我们再加上一些索引,比如说放四个或者放十个,每十个一个,每十个一个,然后再放面,再放一层,再放一层,上面到下面,上面到下面加上一个链表,这样呢方便查找。这种模式,这就是跳表,那跳表来做的时候呢,其实跟大家讲,它从一定意义上都数量很少的时候,当数量很少的时候,他跟便利链表是一样的,它跟便利链表是一样的。好,这是跟大家讲到这四种数据结构,那核心来说,红黑树培用在哪儿?
22:00
红黑树它有那几点的好处,比它之前的它的好处在哪?第一个红黑数它的数量扩展比较好,首先一个根节点也可以做,N多的根基点它也是可以做的。啊,不是一个根一个节点,它把它当做根节点,N多个节点它也是可以做的。啊,就是它的数量扩展幅度比较好,第二个紧接着来跟大家解释一下,它放在内存中间也是比较合适的啊,这就是跟大家讲到一炮为什么会选择红黑树,就这样,首先。啊。这是跟大家讲的这个。这跟大家讲,如果大家能理解这四种数据结构的朋友,可以看老师刷个一吧,这是刚刚跟大家讲的第一种情况,第一种情况红黑树做索引。做索引,这是第一种情况。
23:02
那除此之外,红黑书还有哪些用途呢?就是做索引,索引从一定意义上面讲,大家索引怎么用,索引我们怎么用b value。去挖了建筑堆的方式。K是我们用来去红黑树,它的关键字,它的索引,然后value是我们真正想获取到的。那除了之外还有什么可以用?啊,那除了做索引之外,宏位数还有什么用处?大家有会说做存储。好,还有一个用途啊,还有一个用途请大家注意,就是红黑树它是一个顺序的,它是一个便利的时候,它是顺序的。好,排序没错。嗯,中许。
24:02
便利的时候。是顺序的。那这个东西是顺序的又有什么作用呢?客户们是顺序的,它有什么好处呢?这个请大家注意,不是它的核心的点,那比如说大家可能说那个BB加数,我们在查找的时候。它也是一个顺序的,然后跳表,我们去辩论的时候,你会发现它也是一个顺序的,这个。还有一个点请大家注意,当做顺序来用,这一点在很多的时候我们用的比较多。好很多的,说什么意思啊,大家可以看到跟大家解释一下。比如说我们一个节点。一个节点一个节点,比如说我们在线程调度的时候,或者进程调度的时候。一个节点,一个节点,一个节点。一个节点,好吧,这样构建起来,从左到右,从左到右中序遍历,它是一个顺序的,请大家注意,请大家注意这个过程中间我们要找到,比如说现在。
25:12
在某一时刻,现在,比如说这里面小于五的。小于五的,我们拿出来开始执行。就是这一块,小于五的这一块,我们拿出来执行,就这一段,比如说这里是123。八十十二十五,好,这一部分拿出来。好执行,那也就是中续便利这个过程宏伟说还有一部分情况可以借助它的顺序,从小到大我们依次可以开始执行,这也是一种它的使用方式,包括我们在链表,包括我们在定时器的时候也是采用这种啊,在定时器的时候都是这种。能理解,这是跟大家讲的红黑树的两个用途,第一个做索引,第二个用来做排序用这两种如果大家能听明白的朋友,可以听老师说一个吧。接下来关于红黑素的基本概念。
26:11
就跟大家讲,这里有朋友可能会提到一个问题,就是田老师这个红黑数我怎么去证明它是合法的,在讲之前跟大家讲一讲红黑素的证明。好,好吧,红黑素的证明。红黑书的真名,各位空白。怎么证明?看看怎么证明,大家大胆的发挥一下自己的智慧啊,怎么去证明?怎么去证明?好。真的。有没有经常来聊聊,有没有说偶尔来听听课,好吧,有没有说平时多看看书就好了,然后好,这里面可以跟大家讲一下,各位部门其实看书肯定是没错的,看书肯定没错的啊。
27:05
然后对你而言,各位朋友来听听课,你要发现对你看书他会有很大的帮助,那看书的话,各位朋友们,你要发现看书的话能看多少,能吸收多少,这个很难说,每个人情况会不一样,反正。好吧,那咱们这边有没有手头手指头数一数啊这个图论吗?不是,接下来我跟大家讲一下红黑数最好的证明方法。大家是采用一种叫做。归纳法。证明什么?什么叫归纳法证明呢?首先红黑树啊红黑树。是什么?你在插入一个节点之前,它是满足,它是满足红黑数的性质的,你在删除一条之前,它也是满足红黑树的性质的。跟大家举个例子,跟大家举个例子,比如说这里有一棵红黑树。
28:00
好,这里有一棵红杉树。各方,以他为例,我把这个图先发给大家,大家先打开看一下。好。先打开看一下,大家可以看到这个过程中间啊,这个过程中间。那我们怎么做呢?大家看到,比如我们现在先添加一个节点,就是在红黑数插入节点之前,它是满足红黑数的性质的,这是一个红黑树,它满足红黑树,那我们插入一个节点,各部门你想一下,我们插入一个节点到红黑树里面,它是插在哪里去了?差在哪里?各位,比如说我们现在插入一个50个节点。插入一个50的节点,那这个50的节点它是插到哪个地方?差到哪个地方了,插到最底下面了。是不是最底下就是比叶子节点,也可以说它就是等同于它的叶子节点上面。
29:05
插到最下面,最下面叶子节点上面这个能理解。好,如果这个能理解,再问大家一个问题,那我们插入一个节点,这个节点我们给的着色是红色的好还是黑色的好?我们给的着色是黑色的好还是红色的好?好。有没有理解,就比如说我们现在插入一个50这个节点。插入进去。啊,这个地方是50,那这个节点我们插入去给它着色,还是红色的好,还是黑色的好。红色。的什么?为什么红色的?好,因为红色它不改变,黑沟插入的是红色。
30:02
那请大家注意。不破坏结构没错,红色,那想请问一下,那这个红色在什么时候它会破坏红黑素的结构?如果插入这个节点进去之后,我们当前节点50这个节点它是红色的,那想请问一下在什么时候它会破坏红黑素的结构?在什么时候?调整的时候吧,没错,红黑数的负节点就是在插入这个节点,它的负节点是红色的时候。啊,在它负节点是红色的时候,它是违反了红黑数的性质的,违反了红黑数两个相邻的节点不能为红色的,这一条能理解。啊,如果大家能理解这一条的朋友,可以给向老师说一下,大家接下来再来跟大家分析一下。
31:00
再来跟大家分析一下。既然插入这个节点。只有是当它的负节点是红色的和当前节点。好,只要它附件点是红色轴,我们需要进行调整,如果附件点是黑色的,我们是不需要进行调整,能不理解我意思。那也就是说大家可以去判断一下,我们在插入的时候,它有几种情况。在插入的时候,它有几种情况,因为在在此之前它肯定是满足红黑素的性质的。能听明白吗?好,大家你想一下,你想一下我们插入的这个节点,比如说我们插插一个297。好,插到这个地方,它的负节点是黑色的,我们压根就不会调整好,比如说我们现在插入一个80。大家会发现插这个80方这里,那它的负极点和它的输负极点都是红色的,这是第一种情况,这是第一种情况。
32:06
也就是说它的舒腹节点和它的负节点,负节点是红色的,它的舒腹节点在调整的时候跟他的束腹节点就有关系。这个可能大家可能有点绕,请大家注意一点,你只要判断这里有几个条件,第一个当前节点是红色的。这是第一个。第二个在调整的时候,它的负节点。也是红色的。好。第三个,大家你去判断它的舒腹节点,有这么两种情况,一个是黑色的,一个是红色的。舒服,吉林是红色的。
33:02
这个应该能理解吧,那也就是根据它的输入节点红色和黑色,那大家再来判断一下这里面的情况。大家可以看到,如果它的舒服节点是黑色的。是哪一个情况。好差在这个地方差一个345。345。它的舒服节点是黑色的,那怎么调整?当前还有这个,它束腹节点是黑色的,还有一个是它的右节点,总共一起各部门就这么三种情况,就这三种情况。第一个。给大家分析一下,所以插入的时候就这么三种情况,第一种。收腹节点。是红色的。
34:03
这是第一种情况,第二种情况中腹节点是黑色的。是的。也就是说,当前节点是负节点的左左子数。啊,用一个非常通俗的点,然后第二第三种情况是他的幼孩子。好这三种情况,然后当然还有一个前提,就是它的输副节点,就是它的副节点,是它主副节点的一个方向,这个OK,好,所以在插入的时候就是这三种情况。那就。好,如果大家能理解的朋友,可以向老师刷一下吧。
35:03
Not yet。大家请大家注意,如果要去证明红黑素的合不合法,请大家时刻扣住一点,就是归纳法。就是在红黑树插入或者删除一个节点之前。它是满足红黑素的性质的,它是满足红黑素的性质的,那这个前提上面,它就确定了很多的东西。好,我们接着再来聊聊,核心还是跟大家聊到红黑数如何用,因为让大家去写一个红黑数的情况,或者让大家自己去写一个红黑数,这种情况是很少很少很少很少,除非在面试的时候让你去手撕一个红黑数,而且这种概率也是很低的。但是关于红黑素的用途,这里还是非常有必要去跟大家讲一讲。这接下来我们就分了三个方面。好,分成三个方面。第一个。
36:01
第一个内存管理为例。啊,内存管理它怎么用的红黑素。好内存管理如何使用红位数?这个大家可以思考一下,比如说我们在这里画一张图,画一个图啊。画一个图,这个图就假设它是一块内存,假设它就是一块内存。当我们打开这块内存的时候。好,一开始它是个整块。比如说我们在随着我们在使用。买那个一块儿出来。再紧接着再卖那个一个出来。好,再紧接着再卖那个一个出来,好慢慢的在不断的使用,不断的使用。
37:00
分配成若干个块出来,这个人能理解我意思吗?每一次买那个一次。分配一个框。分配一个框。好卖一次分配一个框,那怎么把它组织起来呢?好,这里每一个节点。每一块。我们如何去表述一块内存,如何去表述一块内存,就是通过。什么方法去表示呢?内存通过这么几个维度,第一个就是起,可以这么两种方式去表示一块内存,第一个就是通过的起始位置。开始。位置与结束位置。这是一个,这是一个表达方式。
38:02
第二个呢?我们可以通过。开始位置加上长度。好,开始位置加上长度我们也是可以表示的,那大家可以想象一下,那这个里面每一个节点,每一个节点。它跟红黑素的关系在哪?差,这里每一个节点就相当于红黑数上面的一个节点。每分配一款挂在红黑树上面,每分配一款挂在红黑树上面,每分配一款挂在红黑树上面。好,那这个K又是什么东西,那这个红数里面这个K又什么东西。这个K就是这个开始位置。就是开始为止,但是你就会发现出现一个情况,出现一个情况,每一次我们在使用的时候,我每一次在分配的时候,我们可以快速的查找到哪些地方是空的,并且能够找到哪个地方从哪里开始,只要找到最大的这个节点以及它的长度,我们就知道从哪里开始分配是不是。
39:21
是不是?好,没错。好。那接下来我们跟大家来读一读这个代码,读一读这个代码,看到底代码里面是怎么去啊,释放了怎么管理这个,这个还跟他没关系,好吧,稍等一下。关于他释放,这是一个非常庞大的过程。好。在这里。好,大家可以看到这两,这里有一个叫to strike。
40:00
好,从这里面找,大家可以看得到,我们的内存怎么管理呢?这里有一个。稍等一下,这个有点卡,这里有个mmri,它是用来表示什么,它是用来表示我们的内存快。大家可以看到这里。可以看到这样,这个内存快MM,这个数据结构很重要。很重要是内存管理的数据结构,首先记清楚所有带管理的结构,所有带管理的结构。他是为了去标识一些信息的,他是去形容一些信息的,然后真正的策略不是在里面实现的,只是说标注它是一个轮毂。好。大家可以看到关于这些这个MRI,顺带也跟大家讲一下,我们可以找一下像。
41:02
内存管理。好,这里画个图吧。大家可以看到这包括里面的代码段,代码段的结束位置。然后包括像。数据段,数据段的结束位置。一个虚拟内存。一个进程的虚拟内存。它是怎么构建的呢?从。好,我们的代码段,数据段,我们的堆。往上我们的站。好,以及。我的m map这一段。这一段好,这里每一段,每一个具体的位置,它标识着我们代码段从哪,数据段在哪个地方,这个。Tract里面,然后包括我们的堆从哪个地方,这个BRK,有朋说BRK为什么是堆,BRK就是分配的意思,就是对应的说我们调用就是BRK,就是BRK这个函数,它分配内存就是我们调用ma的时候,就是调用它,然后还有一个站开始的位置,还有一个站开始的位置。
42:10
大家可以看到这里面有一块,这里面有一个大家可以看到没有,叫all be root。R be是什么意思?好,就是宏位数的意思,就是这个根节点,这个根节点里面MM2B就是这个根节点。就从它开始的,我们再点进来,我们再点进来可以看到这个有一个叫做VM。虚拟快虚拟域的结构体,我们点进去。大家可以看到,这个里面就对应了一个叫做or be Mo。就是每一个红黑数的节点,这也就是相当于我们分配了一块虚拟内存区域,这对应的我们在使用的时候就是这么一个数据结构。
43:06
就是这么一种模型。就是每分配一款。每分配一块就是它,每分配一块就是它,请注意这个具体的内存。不是通过它,这只是一个节点,这只是一个节点,具体存储数据不是存储这个在这个VM。这个结构体里面具体的数据是存储在内存里面,而对应的这个它是去标识。这个结构体,它的内存是从哪个地方开始,哪个地方结束的,这是去标识这一块内存的。好,没问题。好,这个能题就是关于这个地方大家能不能看懂。
44:00
好,这里面除此之外,我们同样也可以用链表,用双向链表把它组织起来。大家关于去读,关于去读内核的数据结构的时候,各部分你不用每一项都去读,因为没有意义。因为没有意义,什么意思呢?大家可能有些朋友一拿出一个数学田老师,你能不能帮我把这个数据结构给注释一下,就是写点注释,那我们我跟大家讲一下,其实在读的时候,特别是读这种数据结构的时候。千万不要对他的每一项都去追根到底,因为这个性价比不高,什么叫性价比呢?就是你花的时间和你获得的信息他不对等。你要发现中间很多的像随着它的版本迭代,中间的相都在不断的改变,但是它核心的数据结构它是没有变的,所以跟大家讲,你在理解这些东西的时候,核心的你把它的数据结构把它捋清楚,把它捋清楚,不用去把它每一项,每一个项把它捋清楚,这个是没有意义的,因为这个信浪费了时间,而且你要发现有些东西追你不知道它为什么是这样的,不单是你不知道,也包括有些数,有些结构点,从上一个版本它是这么描述的,下一个版本它好像不是这样的。
45:19
你从2.6的那个版本。到4.4的那个版本,你拿过去看的时候,中间差异很大。好吧,这是跟大家讲到的这个数据结构。再紧接着再来跟大家聊一个,就是关于内存块,它是这么组织的,这里有朋友就提到一个问题,就是这个东西它到底怎么释放各部门,这个东西它到底怎么释放各部门?好释放,如何回收?
46:05
释放完如何回收?这里出现一个情况。大家看到。这个结构体。好是这样的,这个为了不让大家误解啊,不让大家误解他是这样的。这里一个数据结构,红黑数。好。好,这个节点里面,比如说这个节点里面,它的起始位置,开始位置。指向它结束位置指向它的最后,这个开始和结束怎么指示就是一个数字,比如从零,S000这个值开始,然后第二个指向的是它。第三个结束为止。好,这么指出来的。知道哪一块,这样大家可以想象一下,可以想象一下。比如说我们要去查找一款。
47:01
查找一款。哪个地方,比如说中间的这个节点这一块,我们释放了。那对这个节点就没有了,这个节点在里面就没那中间的这个空隙,我们怎么知道。这个空隙,我们怎么能够快速的知道这里面哪个地方它有个空隙的节点。有没有听明白我的意思?啊,也要考虑内存碎片,没错,肯定都有,就是关于在这种分配的时候,都需要去考虑内存碎片,根据起始位置,没错,也是根据起始位置。这里面请大家注意,请大家注意。这个虚拟快在这里面的时候。请大家注意。把它释放完了之后,这个节点请注意,我们刚开始不看到,还有一个双向链表,就在这里,释放完之后这个节点,这个节点从这红黑树里面出来。
48:08
不,在红函数内部,这里有个空节点,他就把它等同于把它放到了一个链表里面。我每次再去分配的时候,先判断这个链表里面有没有空的,有空的我们在这个链表里面拿出一个节点出来。请注意这个链表的位置,加入的时候,每一次拿出一个来,然后再把它插入进去,再把它不断的碎,碎片化,不断的拿出来,不断的碎片化。好,能理解,这就是跟大家讲它回收,回收放到哪里,放到一个双线里面,然后再次在使用的时候还是从里面去分,然后再次不断的插入到红黑数的节点节点里面。好,那里有。好,这是关于,这是跟大家讲到的,关于内存分配,红黑数如何用的。
49:00
那还有一个点,那关于进程调度的时候能不能用呢。进程调度的时候能不能用?那我在这里想问一下,想问一下刚刚内存管理的这个阶段里面使用红黑素,我想问大家一个问题啊,就是。这里面是用红黑数做的索引,还是用红黑数按照它的顺序来的?各朋们。它是按照它的顺序来的,还是把这个红霉素当做索引来做的?还是把它这个内存快当做索引来用。这是利用红黑数每一个。所以。好,那所从哪个地方体现出来的,刚刚会所以从哪个地方体现出来的。啊,所以从哪个地方体现出来的。
50:02
啊。大家你可以看一下吧,在这个地方我们一个个的节点。所以从哪里体现出来的嘛。比如最后这一个指向它啊,所以你从哪里体现出来的吗。我们有查找的方向吗?我们有快速查找的时候吗?地址唯一,那地址唯一这里面是地址唯一肯定是的,他什么时候用到索引的功能吗。好,请注意,这里有一个非常重要的点没有跟大家讲,就是释放。好,那我们在释放的时候,根据这个释放的这个初始化的这个起始地址,我们怎么找到快速的这个快呢。
51:00
好,没错,在这个过程中,它是一个索引的过程,它是一个能够快速找到红位数中间的节点,这是一个索引的过程。好,能理解。啊,如果这个点能理解的朋友可以听老师说一下吧,刚刚有朋友说的这地址为一这种都不对啊好吧。接下来再跟大家讲一下。关于进程。管理层。啊,关于进程调度的时候。我们怎么做,金城调度的时候,红恩数能不能用?啊。这里面大家很多的朋友啊,就是关于这个数据结构红黑数,我认为为为什么要了解它,这里有一份啊,腾讯的职业。大家可以看到。大家呢,这里有问腾讯后台通道T职级等级T职业T级职业等级什么意思?就是比如说T以前的T3.1,或者现在的T9,对应的这个T就是T。
52:08
梯级。就是所说的技术的等级。大家可以看到这里面的数据结构里面。数据结构里面,这里面明显的标识了它的要求,里面会有二叉树,红黑树,跳表,散列表,红黑树是中间一个非常重要的点。这个红黑数,大家会发现这个职业等级通道的标准里面是包含有的。其实大家各位部友在面试的时候被问到红黑树,大家也不要惊讶,说我工作中压根就没用过他,为什么问这个,各方面你不要这么无知好吧?好。接下来各位朋友,我们接下来再跟大家讲一下,关于进程调度的时候红黑数怎么用,大家可以看到。
53:02
啊,进程调度其实要发息也可以吧,先不在这里去听家,我们具体来看一看。怎么去实现的,我们不在这里去跟大家来讲啊,不在这里跟大家去讲这些意淫的结果就是我认为可以啊,我们不去这么讲,我们认为实事求是的看一下。那个里面代码到底怎么做,我认为这样才有数,才有那个。表达自己意见的权利。大家可以看到。好。大家可以看到。现在注意啊,这个关于这个拉链式的哈希啊,拉链式的哈希对于你去找的时候,其实这个东西如果在一直命中的情况下面,一直在命中里面,它就是一个链表。大家看到这里面有一个调度体。
54:02
对,有一个调度体。Schedule。我们点进去看一下。这里面呢,要跟大家解释一下,内核里面提供出来,总共一起有。五种。有五种,有四种。有四种啊,调度方式。第一种是叫做cfs,就是完全公平的调度,这个什么叫做完全公平呢?我等一下跟大家讲,第二种呢,叫做RT,也就是所说的实时。第三种跟大家讲的是。就是I'。好。第四种说的是DL,叫做deadline。这四种。每一种的应用程序就是我们自己写的进程啊。自己写的进程。来对应的来说就是我们自己,比如说我们fo出来一个进程,或者我们创建PC创建一个线程出来,这里面有两种是可以调度的,一个就是默认缺省的cfs,以及这个RT这两种。
55:14
是我们在应用程序上面可以用得到的,那有朋友说RT用在哪里?RT的时候就是当我们去设置一些亲和性的时候。被调用这两种,好,接下来再跟大家讲一讲这个核心的,这个最缺省的这个叫cfs,完全公平,我们直接点击进去,大家可以看一下,这个是调度题,这里在讲这个东西,有必要也跟大家解释一下。就是请大家注意一下这个进程的描述。这里有三个概念要跟大家讲,第一个是进程的描述。第一个进程的描述,它是什么?第二个就是关于调度题。
56:06
他的方式,第三个要跟大家解释的就是。调度的策略函数的实现。调度策略函数。请大家注意一下。精诚的描述调度体和调度的策略,往往有很多的朋友一开始看源码的时候就很容易啊。把这个调度体,把这个进程的描述跟调度,就是因为从主观上面就是进程调度,进程调度很容易,很容易把进程和调度放在一起,其实不是的,进程调度它是两个东西,首先进程是进程,调度是调度,能理解这是两个词,大家可能有些朋友说我把调度的东西当做了一个动词,就是进程调度,其实强调的是后面的调度。那你这么去理解,我就跟你好像我说不过你好吧,如果你这么说,我就说不过你,那这样大家看到这里三个东西,请在说进程的描述什么。
57:10
调度体是什么?然后调度的策略函数是什么?请大家记住啊,如果能理解这三个的朋友可以给看老师刷个一和网。可以听老师说一下,第一个进程的描述是说的to strike。第二个调度体。说的就是。这个调度实体schedule这个。就是schedule。这里面包含哪些东西呢?大家肯定会问,这个调度题里面到底是哪些东西呢?但是你就想一下。这些进程。A进程B进程比如说我们有20个进程。啊,那这20个进程它是如何组织到一起的,这个组织方式是什么样的呢?好,这个调度体是说的这个组织方式。
58:03
那这个schedule class是说的关于这种方式上面我们是如何来执行的呢?好,哪样理解,大家看到这个调度题往下面走,大家可以看到。映入眼帘的从最开始,第一个就是load weight就是这个。负载均衡的意思,CPU负载均衡的意思,Not balance。第二个映入眼帘的大家可以看到就是一个or be not就是红黑素的节点。也就是说,这个调度体。调度实体。你会发现它是一个红黑树组织起来的。它是一个红黑树组织下。好,这里呢,请大家注意一下,我要跟大家画一个图,大家可能会能理解一点,就是跟大家画一下。粗略的画一下第一个。
59:01
就是调度体,调度实体。就是schedule。现在这个代码是哪里代码啊,首先忘记跟大家讲了,这是一个内核的代码,大家看看,这是一个内核的代码。我相信大家可能大家都能够意会的到啊,可能大家没有跟大家讲,就是K老师前期没有做好工作,没有跟大家讲清楚这个东西啊,我们现在看代码是Li的4.4.4.4.240的版本,这里面我们现在看的代码的行数呢,在schedule.h里面对应的这个1262这个函数,这个叫调度实体,这呢要跟大家解释一下。好,这个schedule。啊,这个调度实体。是什么意思?首先记清楚这里调度实体和schedule class。
60:10
Class,它不是一个东西。首先,调度实体就是用来我们把进程组织到一起的一种方式。好,刚刚已经跟大家讲了,这个调度实体里面,它其实是一个红黑素的节点,它是一个红黑素的节点,也就是说每一个进程里面都有一个调度实体,每一个进程里面都有个调度实体,那这些调度实体十个进程,这十个调度实体什么关系呢?就是采用红黑树把它组织起来的。把它组织起来的,大家可以看到这个。能理解是教学方式,那调度体的class就是这个调度。这是一个什么关系?Just get to class。它就是我们调度的策略,它的具体实现,那这个具体实现来跟大家解释一下,我们打开这个代码,再往下面走一走,不然大家没办法去理解到关于这个进程调度它是怎么做的,不然大家只能听到这个名词,这个名词大家看到这个schedule class,你点进去之后发现点不过去,点不过去没关系,大家可以看到下面。
61:19
这里有一个叫做schedule class,就是它,我们点进来看之后,大家可以看到这几个结构体里面对应的,大家会发现它是一系列的。它是一系列的实现的接口。比如说对没有任务入队,任务出队让出。然后让出到哪一个任务能理解吧。好,大家可以看到,紧接着大家可以看到这个。Schedule class指向一个next,这个next什么意思?请注意,这个schedule我们也不止一个,也不止一个,我们有多个调度的方式,这个schedule class所形容的它是一个调度的方式。
62:11
好,这个也给大家画个图。阵营。这个。好四个,为什么画四个呢?因为我们要提供出来的四个,第一个是采用一个nice的指针指向下一个。第一个。我们叫做cfs调度。第二个叫做RT。第三个叫做deadline。第四个说的是idol。这四个也就是说大家呢,关于这个调度实体,从默认的情况下,我们采用schedule class,就是cfs调度来调度,从中间拿出一个调度实体出来,然后做什么,然后比如他的入队出队,请大家这里要跟大家解释一下。
63:08
这个class这个调度实体,它是用来描述所有的进程。组织到一起。好,通过红黑数把所有的进程组织到一起。如果这里面的进程缺省的是采用的cfs调度的话,那对应的中间拿出一个进程出来,看他是如何调度的,先把他入队进行调度。那里有?在这里跟大家解释清楚的就是这个调度实体和schedule class之间的关系,请大家注意,这里问大家一个问题,就是这个调度实体里面,这个调度实体里面他用红黑树组织起来,它的意义是什么?
64:18
调度实体里面它的K是什么?大家可能知道,刚刚跟大家讲红黑素在使用的时候,红黑素在使用的时候,它是以K,我们主要是以做查找为主。好,各位们,大家可以看到质量,它到底是采用什么东西当做key?就是在进程调度的时候。好,有同学说到执行时间。是不是执行时间。大家可以看到,大家可以看到。
65:02
这里面核心的这里有一个点大家看到叫做v wrong time。好。这个当做key,大家可能会在想,这个run time,它的key是从哪里来的?这里请大家注意,这里请大家注意。We run time,它是一个动态计算的结果,动态计算的结果根据你的优,根据你的执行时间和虚拟时间所动态所生成这个结果,这个公式大家可以去参考一下,搜一下cfs那个公式的计算,这个公式我就不在这里讲了,就是请大家注意,既然它是一个动态的结果。动态的结果,我想问一下大家,那key value,那我们怎么去把它去查找到哪一个进程,我们如何去查找到哪个进程运行。
66:13
好,我们如何去查找到哪个进程该运行,有没有理解我的意思?刚刚大家可以可能能够理解关于我们的内存管理的时候。内存管理的时候,我们还非常容易的能够理解到。就是我们可以通过在释放的时候,肉的时候那个PTR的指针,我们是可以通过这个指针查找到哪一块,然后对它进行去释放的,大家你就会发现这里有一个情况,他是在释放的时候,我们可以通过PDR这个值当做key,我们可以去当做一个茶种,也就是当成一个索,那现在。如果它是一个动态的结果,那想请问一下,那这个如何去查找到哪个进程该运行。
67:03
有没有理解我的意思?好。现在看一下还有多少朋友在,看一下还有多少朋友在客户们。如果还在的朋友可以给田老师说一下吧,那有多少朋友在,那是不是讲这个东西有点难啊,各部们。其实每一次讲课之前,我跟大家反复的讲过,就是我也担心讲的东西太难,太深入,太干,知识到很多朋友劝退型的学习,你知道吧,什么叫做劝退型的学习,就是发现这个东西不是我的世界该有的东西啊。不是我该不是我世界该有的东西,这个东西所以我选择放弃,所以个所以跟我们来连着要听课的朋友,有一部分的人是VK老师劝退的。本来对应。啊,对这个技术追求很深入,但是发现妈妈来说啊,天天,难道我做的开发有这么难吗?我跟他讲绝对没有,绝对没有,就是你在任何一家公司所做的开发,写的那些代码的难度,绝对没有K老师讲的这个难度深,什么意思呢?因为大家你想一下,去一家公司做的开发,大部分的情况下面是以业务开发为主,以实现功能为主。
68:24
但是你要发现。我们在讲的课其实是远远高于你在开发中的需求的,也远远高于你在面试中所需要的技能的,能理解吧,为什么?其实还是这句话跟大家讲,就是为什么临时学院这边大厂的offer概率这么高啊?啊。为什么大厂的概率这么高?也就是讲到。也就跟大家讲到的就是对应的原理底层,就是站在你公司技术的更底层的东西,就是业务底层,最底层实现这东西偏原理性的跟大家讲解清楚。
69:13
啊。深度和原理没错,讲的深度和原理,有些朋友说我就想学点招数,我就想学点招数,我就想告诉这个东西怎么写也有好,就是这些东西肯定都是以实现到具体的原理,具体实现以及多种情况如何来分析,来跟大家讲解清楚。好。好这里啊,那顺便我们贝贝老师顺便给大家打个广告好吧,顺便大家看到现在端午节到了,现在临时院这边是对应的这里有一个。学习团购的活动,端午节两人成团好吧,两人成团两个人,比如说你有两个朋友一起购买,对了,对应的减600。减600好吧。
70:00
课程在哪呢?在腾讯课堂里面,直接在腾讯课堂里面购买。好,这是在腾讯课堂里面,这里OK。啊,要不是我想学reduce的微服务架构,Reduce只是微服务中间一个非常小的环节啊,只是微服务中间的一个,就是微服务一个关于存储的一个环节,它不是一个业务的环节,好吧,它是一个技术点,怎么理解呢?这里既然有朋友提到,我认为从这问这句话的朋友就能够看出来这个技术。就是对这个东西理解不深,什么意思?首先为服务的划分的时候,它不会去放划分到比如说reduce,把它单子当做一个服务,Reduce只是当间的一个中间键的节点,那这种它会按照业务来划分,业务来划分,比如说我们用户管理把它做在一起,比如说我们授权登录做在一起,比如说我们的消息服务器做在一起,比如说我们的web服务器,这些做在一起,请注意这些业务上面它这么划分,然后纵向的呢,才是我们的数据库reduce,也就是说横向和纵向的划分的情况,下面这个划分的理由上面请注意。
71:17
服务的划分是按照业务的划分,技术点是公用的,所以radiOS只是一个服务中间的一个技术点,而N多个服务都会连接到reads里面。好吧,这是跟大家讲。好。没错,就是一个缓存,是一个非关系型数据库,No circle。No,四口是说的不仅仅是四口,好吧,大家我们接着再来跟大家讲,接着再来跟大家讲,就是关于这个schedule class,这样如果大家想要这一份T职级。等级啊,大家可以对应的可以看到,比如每一个等级里边所用的技术点,这个所用到的技术点有哪一些,各位朋们大家可以加下我们的贝贝老师,哎,我们贝贝老师怎么到后面去了。
72:11
我们贝贝老师怎么到后面去了,好,我们贝贝老师出来。好,贝贝老师,贝贝老师出来。好,我们贝贝老师出来了,大家在这里就可以加一下我们贝贝老师啊。在这个大家看到,如果想要这份文档,这份文档里面呢,包含了。你至少一个学习方向,很多朋友说K老师我要现在跳槽了,我发现我要准备哪些东西,有些朋友说干脆我不准备直接裸面,这位朋友,这是一个你最起码对你下一份面试,下一份公司至少有个最起码的尊重吧,至少来说你要好吧,至少来说。你你得准备一下,不然的话你裸面首先来说第一个你对你自己的面试官也不是个尊重啊,你面试官他他自己时间也很忙,所以大家怎么去准备呢?大家可以看到从这里一起有这么九个维度值得大家去准备,第一个语言基础。
73:19
好。第一个语言基础。第二个。第二个说的是数据结构,数据结构里面呢,大家这些东西,其实当你做了很多年的开发,做个几年的开发,做个五年左右的开发,你哪个技术名词还没听过呢,我认为很难。这里面基本上这些技术名词和技术点你都听过,如果想要一个你没有听过的呢?都很难。第三个就是数据库,数据库这里面包含两个部分,一个是my circle,还有一个就是reduce。
74:00
好,第四个说的是网络原理,网络原理里面就是说的TCP的这些协议,TCPUDPCP这几个协议啊,这几个协议,TCPUDPHTTP这几个协议,当然这里面HTTP还带有一个HTPS,请大家注意,为什么很多时候对于网络,对于TCP这东西这么常用,每一次都跟大家聊,往往很多朋友为什么。对T有一种理解不?其实跟大家讲了,反复的来讲,还是那些东西,就是说自己看书也OK,自己在网上去找资料也好,比如说你去看技术博客也可以,核心的东西你要对TCP这个东西。至少面试的时候你不吃亏。不说到你自己对每一个细节都懂。不说你每一个细节都做过,这个很难,至少来说你对TCP的这些中间的这些原理,你能够说到说到吗?好,然后就是关于操作系统,操作系统呢。有这么几个方面。
75:00
这么几个,我们今天跟大家讲的是操作系统里面。关于进程里面衍生出来的这两个关于里面。两个,一个是说的调动。Schedule。调度尸体。第二个跟大家讲的就是MM这两个,本来想跟大家讲三个的,但是我发现三个时间有点不够。三个时间有点不够,其实大家你可以想一下红黑素,大家你可以闭上眼睛,你思考一下,你现在所接触的这些资料里面,这些东西里面哪一些用到了。红黑说,我们今天跟大家讲的是关于操作系统里面两个,一个是调度实体,还有一个叫做M,大家现在可以闭上眼睛啊,大家可以仔己仔细回忆一下,这也是我给大家推荐的一个学习方法,就是当你看完一个点的时候,理解完一个东西的时候,你自己闭上眼睛回忆一下,想象一下你看你get到了哪些点,比如说1PART,就是有哪些数据结构在你现在所接触的。
76:14
所接触的这些。技术点里面。哪些?用到了红黑素。好,有很多朋友只能说到哈希map啊,这是很多朋友典型的知道红黑树哈希map还有没有其他的呢?还有其他的他如何用的呢?好,我接下来跟大家解释一下,我们跟大家讲了两个,一个schedule。调动实体里面。这个有用。第二个。跟大家讲的就是这个mtract里面有用,还有哪些呢?一里面有没有用,好吧,大家engines里面有没有用,Engines源码里面大家可以有个东西叫做ne,就是对应的,就是关于那个内存分配的这个机制,它也是做了内存组织的。
77:11
还有哪一些,还有包括像定时器可不可以。好,还有一个非常简单的,就是我们做一款应用,这个FD。做网络连接的时候。一个客户端连接一个服务器,一个客户端连接服务器,生成这个FD,这个FD。雨。我们对应的这个客户端的应用信息。以及这个应用信息。就是clean。音符。这个信息。对应到这个FD上面怎么对应。这个查找这个映射关系,我们可不可以用红位数。好好,大家如果有要录播的朋友也加一下我们贝贝老师啊,录播好吧,录播也加一下我们贝贝老师,如果来的比较晚的朋友,来的比较晚的朋友也可以加一下我们贝贝老师啊,就是关于这个录播。
78:12
大家可以看到接下来网络编程,网络编程这个东西呢,Tcpudp这个东西跟大家讲的太多了,但是请大家注意啊,这里面有几个东西,第一个比如说像这种。大量的time weight怎么解,然后close weight所产生的原因啊,所产生的原因,然后还有就是像网络框架,比如说像这种框架,然后UV携程框架这些,然后C10KC10M,然后CE1000K的解决方法。它的解决方法啊,大家可以看到还有分布式的家务,大家看到像RPC这个分布式的东西,大家可能很多同学一听就很多,有很多朋友在简历里面写我熟悉分布式的基本流程,请大家注意一下,这个分布式里面核心的一个点,很重要的一个东西就是RPC,很重要的一个技术就是RPC。
79:10
这个opc是什么?它是个远程调用,就是对应的说我们提供出来opc的服务端。提供出来接口,然后我们来stop里面,然后我们再去请求一次RPC返回,对应的结果就是对应,比如说我们做一个RPC什么,就是做一个A加B。好服务端返回一个C,那这个情况,那这样我们发两个发,把这个值发过去,然后返回结果,但是你发现这是RPC是非常重要的一个点。好,这是关于最近量,还有就是一部分云原生的技术。当然了,像do CU巴,然后这一部分,然后还有一些软技能,软技能这个东西我跟大家也讲过啊,软技能这个东西我也跟大家讲过,软技能说实话它是一个很难。构建的一个能力,他是很难塑造的一个能力,所以说我做讲师做了这么久,然后我就是在临时学院学习的学员,然后。
80:07
不说接触到的学员,不说10万,但是我跟大家讲到的就是接触的这种大几千啊。这种四五千个学员,这个肯定是有的,但是你要发现这个软件呢,它是很难去塑造的。什么意思?比如说你对问题的分析能力,这个东西我到至今为止我都很难去跟大家去把它当做一个课程来跟大家讲,我只能跟大家去讲什么,就是说就是这种东西包括你的问题分析能力,包括你的设计能力,包括像。这些沟通能力和合作能力,这个东西很难通过一堂课来跟大家讲。所以后面。不过林学院这边在认证T9的等级的时候,T9大家看到在技术高级的时候,在T9的时候是需要具备这个能力的。具备这个能力的。
81:03
那跟腾讯的。官方的那些跟腾讯课堂的那些。认证等级的。那些老师在沟通的时候,他说田老师你们这个这个工程素养是如何去塑造起来的,说到这个点,我跟他聊的就是首先第一个这种东西,软技能的东西,对于技术开发的过程中间他。去决定。技术能够决定一个工程师他能走入门,但是他能走多远以及能够走多高,它是取决于他的软技能的。就是你的沟通能力,你的你的需项目需求分析的能力等等等等。这个,那这个东西怎么去培养起来,其实我能够跟大家讲的就是更多的是跟老师去沟通,比如具体的问题具体分析,有些人可能像这种软件呢,压根就不用,他本身就自带,有些人你发现他沟通能力就比较强。
82:00
有些能力,沟通能力就比较强,所以在这里跟大家解释一下,就是关于这种项目需求能力和就是需求分析,项目设计,请大家注意,大家在这个过程如何去构建这样的能力呢?多写点文档。多写点技术博客。这是我跟大家讲,这个方法是一个非常不错的,多写点文档,多写点技术博客,你自然而然你就会能够找到你说话的方式,以及你的思路会很清晰。这也是跟大家讲的好吧。这也是跟大家讲的,如果,如果你自己本身对于技术。不知道如何去学的话,也可以采用这样一个方法,就是你把临时学习课来听一堂,每听一堂做一点总结,每听一堂课做一点总结,然后自然而然你会发现你的技术,经过几个月的学校这么一个学期,我每听一堂课。
83:00
听一堂课,做一些总结。每听一堂课做一些总结。做完总结之后。把课上的代码。把代码过一遍。然后再紧接着再写一篇技术博客,把总结整理成技术博客。你对你来说不要多长时间,你技术补课整理个两到三行,整理个两到就是一个月,一个星期整理三篇,一个月12篇,你整理30篇到40篇。也就是三到四个月的时间。你就会发现你技术感觉都会不一样,你思考的深度也会不一样,这也是很多朋友说K老师这个技术深度如何去提供,我多看点书,可不可以各部门看书,它是没有毛病的,看书是OK的,但是请注意他能不能解决你技术深度的问题呢?我认为这个可能有点难,请大家注意,一定是多做点总结,多做点笔记,然后后面把它整理成技术博客,整理三到四个月的时间,三到40篇,你就会发现你会不一样,好吧,好,这就是跟大家讲到的这些技术点。
84:24
但是比如说我们今天跟大家讲了,比如红黑数,红黑数。从刚开始证明插入的时候,它的情况是怎么样的,采用归纳法去证明,以及红位数的用途,大家可以看到。一里面这里面几种数据结构,这里一个点,这里还有像跟大家讲的,比如说红黑数做索引,以及在内存管理和进程调度的时候该怎么做,好吧,这就是跟大家讲的。如果各位朋友。如果各位朋友们发现自己在工作中。技术提升不太快的话。啊。好。我们是自己学有技术。党员报名了自己。
85:03
全介绍报名的,我们的课程是这样的,就是每周都是直播啊,每周三次的直播,大家看到这都是直播的。每周三次的直播,但请大家注意啊,直播的话就是你有问题可以当场问,有问题当场问老师,然后每一堂课课前提前把资料发送给大家,课后有实践题,然后对应来说就是你在这个过程中不懂得跟老师沟通,一定要跟老师沟通,因为很多的技术点,课程是一个统一化的东西,但是一定在课后的时候多跟老师一些问题,包括你工作中的问题,包括你技术。课程里面的问题,包括你简历的问题,包括面试的问题都OK,或者你跟你同事之间讨论的问题也OK,都跟老师沟通,自然而然你自己提升的也会很快,如果自己学的话,那你会在看书的话。是不够的,好吧,这跟大家讲的,大家如果各方面想。
86:05
咨询的话,就在腾讯课堂上面加一个备注上,在腾讯课堂上面购买,腾讯课堂上面。为大家提供支付保障,然后课后有回放就业权益,大家当大家用手机打开的时候,你用手机打开的时候。用手机腾讯课堂的APP打开的时候,你会发现腾讯临时学院的课程,临时教育的课程是对应的,就是大厂的标准,腾讯新选这一个。推荐就业有内推。首先首先跟大家解释一下,这个内推呢,内推啊是这样的。内推它也是需要去走简历的流程的。首先记清楚你在。找工作的时候,跳槽的时候,第一个把简历书写好。把简历书写好,推荐就业,这个请大家注意啊,这个过程中间有内推的机会,但是大家注意它也是走的正常的流程,也是需要你把简历写好,也是需要面试的。那就。
87:11
这里面。再跟大家解释一下,就是在报名之前大家可以看一下自己情况。第一个。第一个。就是第一个就是自己有没有基础,就是说你有最好是有C和CR的项目基础,就是你写代码没有什么语法错误,你写代码半角全角这种没写好的话,那半角全角都分不清楚的话,那各方面,其实我认为这种沟通是有困难的,首先第一个有C和C啊项目基础。第二个。第二个就是在工作中,或者说。在工作中。发现自己技术提升很慢。发现想。想提升,发现看书速度很慢,这种是可以的啊。第三个。
88:04
自己提升嘛,第三个跟大家讲的就是如果想进一个大厂。想进一个大厂?来林学院机会是很大的,因为为什么这里面一定要对有些朋友有一些基础的要求呢?之前我们有一个学院。之前报名的时候啊,他没有跟我们说,之前报名的时候啊,之前报名的时候出现一个现象,就是听老师我是有基础的,我会C,我C都学完了,但是我我理解的C有C基础,和你理解的和他刚刚那个学员理解C有基础它是不一样的,那个学员理解的有C技术,他是会写代码,然后代码写的种,就是会点那种变量那种。压根就没有写,一看大码机压根就没那种感觉,后面我跟他推荐从Linux区Linux装了个虚拟机,装了个虚拟机嘛,大家就会发现,装了个虚拟机出现一个情况,大家可以看到,这是我虚拟机出现一个情况,大家就会发现啊,他当时装完虚拟机之后。
89:08
发现。鼠标不见了,鼠标不见了,当时那个虚拟机它移不出来,就每次不知道怎么办了,大家这个鼠标按键没有了,但这个鼠标按键移不出来,大家就发现它只能通过重启,重启之后发现又点进去,就是这样的好吧,那对应请大家注意,请大家注意。像这种基础上的问题,基础问题,你虚拟机Linux这些基础在前期的时候,在不会的时候,可以找老师远程搭建好,远程搭建好,但是请注意最好是有一些基础,这些的话学起来你就会如虎添翼,会比较快,大家可以看一下林志轩这边的大厂的offer。这是一个前两天拿到这个英伟达的offer。啊。因为因为拿了offer,然后他是一个工作11年,然后工作11年的朋友。
90:00
下面大家可以看到下面这一个是一个逼狗研究生四年,然后涨薪这么多。然后大家看到这是一个本科,工作三年,薪资这么多。这个这是一个腾讯的音乐的offer,腾讯音乐的offer。大家有朋友说这个ERP的话问题技术问题随便问,这个技术问题随便问,但是请大家注意,你在前期你也百度查一下,大家不要说这个田老师这个衣服为什么不行,这个S就是有些问题你自己一定要过滤一遍,这里面为什么临时学院一直针对的不是这种纯零基础,一直针对这些有一定的基础是做提升,就是因为。就是因为啊。我自己本人也是很难get到这些零基础的这些点的,所以各部门在学习的时候,学习的时候。可以远程跟你解,可以远程帮你看,但是请大家注意,请大家注意。问题在答的时候,问题在你自己百度先查一下,百度先查一下,如果你能搞定的,但比如说大家可以看到。
91:10
好,我有基础,只是不牢靠,这个可以,这个可以,好吧,大家这样。好吧,再跟大家讲到的,看大家还有什么问题没有在在临时学院学习呢?请大家注意,请大家注意,因为我们是个线上的,大家一定有问题多跟老师沟通,你首先不要担心自己的问题很幼稚,不要担心自己的问题很基础,老师会不会嘲笑我,我跟大家讲不会的好吧,不会的就是你不管哪一个老师,如果他有什么就是你的问题没有及时回复我们班主任柚子老师,后面会每一。反馈到柚子老师那里,然后对应的来说,反馈到班主任老师那里,如果对应来说,如果查认属实,对老师进行开除,好吧。好。
92:00
可以介绍一下bit m,这个bit m跟大家也讲一下吧。BM是一个未运算,不是BM是一个这样的。B是当我们的数量很多的时候,去查到这个中间有没有,比如说我们有10万封,好我们有10万个。嗯,小朋友好吧,10万个用户,这10万个用户哪些在线和不在线,哪些在线和不在线,请注意这个在线和不在线,我们就可以通过一个bit来表示,请注意这个bit呢,我们就可以。采用这样一个字节,八个bit,然后它可以表示八个人,它可以大量的去节省我们的空间,那这个bit它主要是用来去形容这个过程,还有还有一个就是跟大家讲到。就比如说我们在。对一个数据进行排序。从零到10万。
93:01
从零到10万进行排序。我们知道这10万个数字里面它不重复,我们只要知道这10万个数,数字不重复,对这10万个不重复的数字我们进行排序,怎么排序比较好呢?啊,大家可以看到有10万个数字,我们对这10万个数字。进行排序,它首先一个前提,它不重复,那怎么排序比呢?我们也可以成为bit map,也就是我们对这10万个数字进行一个便利,便利的时候它在哪一位,哪一位如果有我们这里进行交易,没有进行减易,然后最后。我们只要知道第一个不重复第二个最大值,这个过程中间我们对它进行哪一位把它标识清楚就可以了。这就是比。位图好吧。啊,有朋友说到这个下半年跳槽,现在学还来的,下半年就跟大家讲一下,这边最快的跳槽啊,就是我们有些学员,他有些学员他的目的性很强,就是说已经裸辞了,首先我们的课程体系是八个月的时间,有些学员呢,就是听老师这个八个月的时间是不是有点长,我现在已经裸辞了,我马上就想找个工作。
94:13
这种情况是让我最头疼的。最头疼的。我们最快的最快的学员有一个月加入进来,一个月开始找到工作的,就是找到深幸福的啊,请大家注意,裸辞不推荐,但是如果真的裸辞了,接下来。给大家讲一讲这个裸辞这个东西时间有点久了,就是关于裸辞之后你快速找工作,是有快速找工作的方法的,这里面会有一本葵花宝典。我给到我们贝贝老师那里,你可以加上我们贝贝老师,拿取这本葵花宝典,好吧?好,我们今天就跟大家讲到这里。如果大家想咨询林时券VIP的朋友呢,就可以加下我们的贝贝老师,那我今天就跟大家讲到这里好不好?看大家还有什么问题啊?看大家还有什么目的。
95:00
有没有说研二?还来得及吗,进大厂?研二研二下学期马上秋招,研二马上秋招,请大家注意,马上秋招的话,请大家注意,这个时间是能够来得及,到现在来说应该还有两个月到三个月的时间,还有三个月的时间,准确来说是三个月的时间,这个是可以的,好吧。好,后面比如说在求来的时候,简历怎么写,面试怎么面。提前批就是提前批,这个过程中呢,也是在七月下旬的时候,八月中旬的时候就会开始提前批,这时候呢,前期可以投一投,先试试水,但是重点压宝压在秋招,特别是重点压宝压在秋招前面提前批的时候可以试试水。首先来说提前批跟秋招,它不影响好吧。好看大家还有什么问题啊,不然的话,我今天就跟大家讲到这儿,今天跟大家讲的这一堂关于红黑树,红黑树呢,它是在面试中间一个非常常用的点,也是在。
96:08
基础组件的部分,就是造轮子的部分,经常会用到的一个东西,好吧。好,那我们今天就跟大家讲到这儿,如果大家各位朋友就直接可以在腾讯课堂上面购买,那我今天就跟大家讲到这里,最后还在的朋友可以听老师刷野网还有没有在的。最后在的朋友可以给K老师刷钱,我们在鲜花中结束本课,给大家来个亲情好吧。好,我们下课。
我来说两句