00:00
这小节,哎,我们单独抽出一小节来说一下do中的算法,好,那主要有两个地方,第一个是我们要验证算法,它到底有没有起作用,哎,第二个地方就是我们来验证一下这个K的作用,好首先来看第一个我们验证拼算法,那这里已经写好了一个例子,哎,输出当前的一个时间。右键运行。这个例子比较简单,哎,就是有一个计时器,每秒啊都会显示当前的一个时间,哎,更新一下当前的一个时间,哎,代码也比较简单,哎,接下来回想一下我们一开始在学习react的时候,哎,这个图。哎,我们说这个。数据啊。它呢,会先被渲染成这个虚拟盗墓那。转成对应的虚拟盗之后呢,才去再转成真实的盗放到一文中对吧?好,当我们增加了这个数据之后,诶,它会对比现有的这个虚拟盗墓啊,如果诶,比如说这两个虚拟盗墓相同,它就不做调整去增加这个,诶或者调整或者更新这个不同的这个虚拟盗墓之后,只更新这个新增的,哎或者有更新的这个虚拟盗墓,那已经,哎就说没有任何改变的,它不会去变,哎对吧,我们之前。
01:15
诶,说过这个好。嗯,那按照这个说的,那我们的这个例子,你看我们这里有几个节点,一个两个三个节点,对吧,那如果按照这个。图上,哎,我们这里之前学的说的话。现在只有谁在一直更新,是不是这个时间,也就是说这个节点里面的内容在一直更新对不对,那说明他们应该不变才对,我们来如何验证呢?好,看浏览器中这里,然后再刷新一下啊,时间这里在不断的去。对吧,不断的去走啊,想要验证啊。这两个标签有没有,哎,重新渲染很好验证啊。我只需要在这里去输入一个内容可以看到诶。
02:02
这个在不断的更新,但是我的框并没有重新渲染。对吧,那说明。这个input,哎,它还和以前的一样,你看我们这里状态是不是更新了,那状态更新了它会触发什么,会触发这个软点重新渲染对不对,那重新渲染的时候,这些都会重新执行,对吧?那我这里input我写的这个内容,但是我发现这个内容还在,就是每次更新的时候它还在,那说明什么,它进行了一个对比,哎,你这个H1,还有这个input和之前用的啊,之前已经渲染过了,都一样,所以不做调整,那只有C在变,只有它在变。是不是好,那接下来我再做一个尝试,哎,我在这个里面我再写一个input啊。回过头来,来刷新啊,让我在这里面写一一,我在这里面写222,我看一下我写到这个节点里面的内容会不会改变,可以吧,来写这个二二。你可以看一下时间在一直的走,也就是我们中间的这个内容在不断的改变,哎,组件在不断的更新,但是啊,这个我们之前也说过了,但是我们写在这个节点里面的,它也不更新。
03:10
说明什么,诶说明哎,实际上真正发生改变的只有什么,只有啊这个SPA标签里面的他是不是。它没有发生改变对吧,我们第二个也没有发生改变,对吧,那这就说明这个哎底算法它。最小的节点是什么?是标签?他会呃,一个标签一个标签的去验证,也就是说我们这个情况下,它是不是里面还嵌套了一个标签,它不是说诶你这里发生了更新,我这个整个重新给你渲染,而是它会再往里面再走一层,接着和你这个进行对比,哎,你原来的是他,你现在还是它没有改变,所以。诶对,它也不做更改,那只更改了它的内容对吧?啊内容的话,那当然是这整个内容都更改了,那他这个算法还没有那么智能,诶我这个字不变,然后只变异这一字,它还做不到这里啊,它的最小颗粒度,也就是说它只能验证的标签,如果你标签里面嵌到哪有标签,它会一直去检查,检查所有的标单,就是对比所有的标签,哎。
04:09
只要是一样的,那他就不做更改,那只要你发生改变的,哎,他就去做一个更新,哎,这就是底费算法啊。好,注意啊,一定要记住它的最小颗粒度是标签。清楚了吧,而且它不是说诶,碰到这个SPA发现它的内容改变了,就整个换掉了,它的最小颗粒度是标签,而且它会呃,不断的哎递归,是一直一层一层的往底下,直到对比完所有的整个哎,组件中的所有的节点,清楚吧,所有的节点它才会去更新那些发生改变的,哎,或者是增加的。哎,这个。例子,哎,就验证了我们这个算法,它确实是生效的,哎,时间一直在走,这两个隐呢,没有任何变化,对不对,好。啊,这是第一个问题,我们就说完了啊,验证题平算法,哎,接下来看第二个问题,K的一个作用。
05:01
来看一下啊,这里给大家准备了一个面试题啊,比如。问react view中它的这个K有什么作用?哎,就说K的一个内部原理,好,或者再问你,哎,为什么便历列表的时候K最好不要用index,这个之前我们在做便利的时候一直也强调过这个问题,对吧?好,那接下来看的比较多,哎,我们来读一读啊。哎,首先这个第一个看第一个问题啊,虚拟弹中K的一个作用,简单的说呢,它就是作为虚拟盗的一个标识,哎,在更新显示时,K起着一个重要的一个作用,对吧,这简单的说。啊,当然那个我们面试的时候,哎,那个不可能就这么去说,对吧,那你这么说,那面试官他会抓着你的字眼,哎,极其重要的作用,那有什么作用,你不知道完了是吧?所以我们还得看这个详细的说啊,就是说当状态中的数据发生变化时,React会根据新数据生成新的这个虚拟盗模啊。注意啊,并不是说我们,诶,比如说增加了一条,它就只生成了那一条,它是会根据这个新数据去重新生成,哎,就很快的速度去重新生成所有的一个新的一个虚拟do,对吧,然后他会把这个新的这个虚拟do呢,就是说与旧的进行对比。
06:12
好,那我们先看到这儿,接着看看我们的这个图,哎,就是这里,诶比如说我们原先是两条数据对吧,它生成了这个虚拟盗母,诶之后把虚拟盗母转成真实盗母放到页面,哎,当我们增加了一条,它还是会把这些数据,哎瞬间都给生成,哎就是说。对应的虚拟盗墓,那之后呢,它会和以前旧的虚拟盗墓进行做对比,对吧?好,那对比之后。接着就是我们后面要说的啊,如果发现哎他们一样就直接复用,哎,不一样的我们直接新增,哎接着往下读,哎,如果旧的虚拟倒母中,诶找到了与新虚拟道母相同的K,看到了吧,其实这个K就是做标识用的,那找到了相同的K,好,但是这时候有两种情况啊,如果虚拟盗墓中的内容没有改变,那就直接哎用真实的盗墓。
07:02
来看这个图,也就是说哎,我不仅找到了这个编号相同的这两个对吧,而且你们的内容,诶都是吃饭内容也没有发生改变,那我就直接用这个真实的盗墓就直接复用了,我就不再去创建真实的一个盗墓了,哎直接复用,那同样睡觉也直接复用,那这两个直接复用了,是不是我只要去渲染新增的这一条就可以了。好,接着往下看来。哎,如果虚拟盗墓中的内容发生改变,注意个前提啊,就是它们的K相同,但是内容发生改变了啊,那会生成新的真实的一个盗墓,哎,随后把这个页面中的之前的那个旧的给替换掉,哎,这就是一个更新啊,啊这个如果。就是说旧的虚拟弹中没有找到新虚拟弹相同的K,那都没有了,你旧的都没有那就简单了,我直接给你创建新的就完事了呗,然后旋转到页面。是不是啊,那接下来这个我们就不看了,我们来写一个例子来去演示一下啊,就是说给大家直观的去展示一下这个问题啊,把这个折叠一下啊。
08:03
啊,我们来写一个什么呢?写一个人员的一个列表啊,Person。继承。React。Component。呃,我们写一个人的一个列表啊,那先写一个re啊。Return哎,这些基本的结构大家要很快的能写出来啊。准备个div。这里面啊,写个H3啊人员列表。来这里我定义一个状态啊,我让这个人员的数据用状态来维护。
09:04
Persons。里面啊,我给两个数据啊。ID是一的啊内。Come。写中文吧。小李。18。来,再复制一条。把这个缩紧调一下啊。这个小王。ID是二。啊,年龄19。接下来我把这个数据啊去显示到这里面。来这里写一个便利哎。不,那谁。This点。State啊,我要把这个人给便利出来。
10:14
接收一个IPO。哦,还接受一个index。这里我们先用这个索引做这个K啊。Return div,哎,在这里面。我们来写什么写这个。哎,把这个信息给输出出来,输出这个名字和年龄啊。person.name注意啊,这里我们迭代的这个person呢,它是这样的一个一个的哎对象,所以这里我们用点来取出name,然后加几个横线去连上它的这个年龄。Percent eighty。好,接下来先看一看效果啊。把注释也写好啊。一创建组件。
11:02
第二步诶,渲染挂载组件啊。挂载组件到容器。Rap down render。挂在那个person。挂载到test,哎,先看一下啊。来右键运行我们这个例子。啊,有两个人。接下来。我们来定一个方法啊,添加一个人。这里给个。按钮。直接写八啊。点击添加一个人。给一个安的一个事件,注意这个C大写,诶让他去。
12:03
就是给他一个回调函数,在bdd。那这里我们来写一个方法啊,写一个回答函数来做这个添加一个人的一个操作啊。添加一个人。Ad,哎,注意用这个赋值语句啊。赋值语句加这个箭头函数。这样可以解决瑞子向的一个问题。在这里先获取原数据。啊。原数据。Person。直接结构啊,从this.state里面结构获取到原数据之后。我们要给这个原数据去增加一个数据,对吧,好。来新数据。来随便定一个新数据,P等于。
13:01
直接复制一下啊。小李、小王、小张。那ID的话呢,啊,就。不能写死了,那写谁呢?写?这个person。点认识。哎,加一。你这么去想?最后去更新一下组件的这个状态。更新数据。没。Site。哎,更新谁更新这个。它是一个数组,然后我们把新增的这一条给放到前面。哎,接着展开运算符,把这个旧的都给它放到后面。
14:00
好,接下来来测试一下。刷新哎,添加一个人可以看到已经有了,对吧?啊,而且这里会告诉我们,我们要使用一个唯一的K,那我们这里把这个K给加上。K。这里我们使用index。看一下没有问题啊,点击添加个人正常了,好,那接下来。我们就来分析一下。点击添加一个人。然后它的这个数据的一个变化,就是它的这个倒的一个变化情况啊。首先啊,我们在什么呢?在这来分析啊。在这里面来分析啊。我们搞一个慢动作回放来模拟一下啊,用我们的这个文字来模拟一下这个道它渲染的一个过程啊。好。
15:02
那这里我们把这个标识写好啊使用。Index啊,就是说索引。啊,作为K这种情况,那首先来看一个什么呢,看一个。我们的初始数据。初始数据是谁,是不是这些?这两条我放这啊。好,接着呢。按照我们这个图来理解啊,那初始数据是不是要给转成这个虚拟盗墓。接着来写啊,初始数据。虚拟盗墓,哎,注意这是虚拟盗墓啊。转成什么样的虚拟弹?这里是不是我们在写的这个虚拟盗,是不是转成它。啊。把它写一下啊。这里写一下。
16:00
哎,当然,那这个K就不是0X了,K我们要换成,那第一个就是零对吧,第二个就是一了,好,那这里呃,名字我们也都换一下。小李。小王,然后年龄一个十八一个19。哎,这是初始数据啊,初始数据它给转成,呃,这个虚拟的do大概就这样的对吧,然后它就往这个页面里面去放,转为真实的DOM,是不是这个我们就不写了,接着来看一看,我们点击了这个。添加一个人之后,那就是会增加一条数据,对不对,我们把这个更新后的数据。写上更新后的数据是不是在它的基础上。哎,在他的注意啊,在他的前面去加了一个人,看一下我们这里是把它放到了这个数据的前面啊,那在他前面增加了一个人。
17:03
注意啊,增加的这个ID是不是因为我们加了一,他的这个ID是不是三啊,那名字我们增加的是谁?小张年龄啊也是19啊。就放这年龄也是19啊,那这是我们更新后的一个数据,那既然你更新后。的一个数据对吧,也就说明你的数据发生更新了,你的状态发生了改变,组件是不是要重新渲染,重新渲染它是不是会重新去,嗯,生成这个新的一个虚拟到对吧。好,我们把这个复制一下啊。来,放这儿。切一下啊。这个啊,太切一下。哎,对不起,就先对不齐吧。好,那初始。这个应该改成更新。更新后。啊。更新后这个数据的虚拟盗墓,这是原来的这两个对不对啊,那我更新后我是不是增加了一条,诶,而且是在上面增加了一条。
18:10
对吧,在上面增加了一条注意啊,因为我们数据的增加,所以索引是不是发生了变化,是不是这里是零,这里就变成了。一这里变成了二。看到了吗?好。好,接着就到了我们的关键时刻,它是不是要开始和旧的虚拟道进行对比了?来,接下来我们在这边对比,首先来对比第一条零有没有找到了没有,你看。哎,找到了,哎就说我新的这个虚拟盗,我和旧的对比发现有零没有,你看用K做作唯一,所以就是作为标识去对比吗?有好。有接着干什么,接着去发现这个内容不一样,对吧,他是不是要把它给转成一个。真实的一个盗墓,重新进行一下渲染,对不对,这是符合哪个条件,符合我们这个条件。来这里是不是找到了相同的K,但是内容变了对吧?是不是会形成生成一个新的勋章吗?
19:06
对不对,好,同样的来接着看第二个K等于一是不是也找到了,但是内容一样吗?是不是也不一样,不一样,是不是又生成了一个新的虚拟道。对不对,好第三个。二有没有没有,没有的话是不是直接符合这个,哎,未找到相同的K,是不是直接就生成新的当。是这样的吗?啊,那我们来写一下啊。嗯。转成。真实盗墓,哎,因为因为你只有转成真实盗墓,你才能去。呃,在这个页面中去呈现对吧,所以它会转成支持的,它也会转。哎,他也会转,因为你K虽然找到了,但是你内容不一样。清楚了吧?大家可以发现它存在一个什么问题,一个效率问题,对不对。你看一下,我明明我只是去增加了一条,但是你整个又全部都转成了这个真实的盗墓,你只有这三条,你感觉不明显,如果你是2000条,2万条呢。
20:10
对不对,明明我只需要增加一条,哎,2000条变成2001条。但是你却把所有的都给。全部转成了,重新转了一遍,那完全没有复用之前渲染的是不是会造成很大的一个效率的一个问题。呃,作为对比呢,我们再来复制一下代码,然后用ID作为这个K,我们来看一下啊。直接。嗯,这里再加一个。再加一个H4啊H5。使用index。所以。做K啊。那这里加一个HR。
21:00
风格啊,分隔一下。同样啊,复制。到这啊复制到这,这里是使用什么使用。唯一。唯一字段嘛,哎,这里我们因为用了ID嘛,当然也可能是其他的字段,比如身份证啊,学号手机号都有可能是吧,做K。这里只是拿ID举例啊。哎,这里就不是index,而是谁person里面的ID对吧。我们来看一下效果。刷新。点击增加一个人,是不是都增加了。啊。哎,当然这个因为我们使用的都是组件状态里面数据,所以都增加了,但是我们来分析一下它的这个过程啊。把这个往后往回再切一下啊来接着我们再复制一个。这里给上一个分隔线。
22:05
太不行啊,这个往回再切一下。这个是什么使用。ID啊,使用唯一唯一索引啊。还是直接改成使用ID吧,别给大家给搞懵了啊,那这里我也是改一下啊,直接是。嗯,也也这么写吧,两边都统一吧,哎,使用唯一字段。好,接着我们来继续分析啊,那如果是用ID的话,那这个K就是ID了,是不是,你看K是这个ID了,对吧?好。那我们这里新加了,更新了数据之后。这些。首先。他的这个。啊,我们之前这个。新增的这个忘了改了啊,应该是他应该是小张啊,那这里也应该是小张啊,接着来看啊。因为我们使用这个ID作为K对不对,所以即使是我们心中的这条数据,它的索引不会乱是吧,那他会直接用这个ID是三。
23:09
清楚了吧,好。接着我们来开始它的更新后的虚拟盗墓生成之后,哎,它会和这个诶原先的旧的虚拟盗墓做对比,首先来对比这个三去对比有没有没有没有吧,直接转成真实的道目对吧?好,那接着来对比这个K,等于一找到没有,找到了内容一样吗?诶一样,诶那我就可以直接去用了。对吧,那直接就复用对吧。是不是就不用再转了吗?好。接着它往下对比,K等于二的二,你有没有一,那内容一样吗?一样好,那也不用再转了,是直接复用是不是,是不是直接复用旧的倒。哎,说是直接复用就到,其实就是不做任何更改啊。
24:01
那我就这么去写吧,哎,不做更改,这样你做对比来讲的话,你看我们使用ID作为唯一的K,会发现他只会去,哎,去把你做了更改的这些内容去转成真实的盗墓。而且能复用的直接就给你复用了。那你如果使用索引呢?所以的话,他就会把你这个所有的都给你转成真实的了啊,当然并不是说用了所有的就都把你的真实的给转了,那只有在什么情况下会转呢?是在你的锁眼被打乱了。对吧,因为你是往。第一个地方去插入了一个数据,往头上去插了一个数据,所以所以从零开始排了。重新计算了,那如果你往最后去查,那肯定是没有问题的。是什么?所以之前我们也一直也在说使用啊引战索引作为K的话,它可能会产生问题,但并不是绝对的。对不对。当然你可能也发现了,哎,那有什么问题呀,那来这里你看一样不一样,效果不都一样吗?那有什么问题,无非哎这里你渲染了,那就是说转转了多次,那这里。
25:09
呃,就只转那些不一样的对吧,那就一些效率的问题呗。那效率的问题关我什么事?我把功能写出来就完了。是不是?啊。那我再给你改一改这个例子,你就会发现,哎,不是那么回事了,那怎么改呢?我们在这个例子后面,我们再加一个input啊。直接在这吧。嗯,加一个input啊,加一个input啊,T我就不写了,它就默认就是text。同样的,下面这个使用ID的也加,那使用索引呢,这里加了一个input,这里也加了一个input,接下来我们来看一看这个例子啊。刷新啊。有了个input是不是,那我复制这个内容,哎,小李的信息在这儿,诶,小王的信息在这,那下面也是啊,小李的在这儿,小王的在这,接下来我。
26:06
点击添加一个人。你们会发现什么?这里我新加的小张,但是小李的信息怎么在这呢?哎,这里是小李的,那小王的信息在这,那我原来小王信息怎么没了?我输的这个没了。啊来。看这个唯一,哎,我们使用这个ID做这个K的就没有问题啊,小张是新加的对吧,没有没有,刚才我们没有输入他的信息,就是没有,那之前小李的我们输入过了,有小王的输入过了,是有是不是。对不对。是不是发现这个问题了啊,当有输入框的时候就会出现这个问题。哎,为什么呢,这个,哎,我们再来去分析一下啊。复制一下啊,因为。作为对比的话,我们只是加了一个什么,是不是只是在这去加了一个input对不对。所以在这加了一个引input是吧,好,上面呢,我们也来加一下,我们先分析这个使用索引呢,它为什么会出现这个问题啊。
27:03
接着啊,首先还是一样。这个是啊,原先的虚拟盗,这个是我们增加了数据之后的,哎,虚拟盗。它来对比零零,哎,找到了,找到了内容一样吗?不一样,不一样,它是不是要转成真实的道对不对,它不是把这整个div里面东西都给转了呀,之前我们说过了,它会一层一层的往下对比,然后它对比到了谁input。啊,他说诶这个input你也是这个input,咱俩input一样啊,对吧,都是原来的那个是不是,那就不做更改了,直接复用是吧,这个他可以复用了。清楚了吧,那他复用之后你想一想。啊,那这个,因为这个是。呃,我们之前你看先看之前之前这个我们这个input它是谁写的,是小李的信息,也就是input它里面是带着小李的信息的,对吧,那你直接复用的话,那小李的信息是不是就是在这呢?对应的是小张是我们新增的数据对不对。
28:01
哎,因为K相同嘛,它先按照K去找啊。清楚了吧?这个input并没有重新去转成真实盗墓。这个影呢?我们已经输入了内容,当然我们输的不是这个引input的内容,这是虚拟盗墓,虚拟盗墓操作不了的,只有就是说它是转成了这个真实盗,我们是在这个真实的盗墓,这个引input上面说的内容。但是他通过这个虚拟盗墓的对比,他发现这个是可以复用的,所以那个真实盗这个input没有给我们做更改。啊,我再给你加加一个啊。Input直接复用了,没做更改。没做更改清楚了吧,就是因为他没有做更改,我们原先在这个引input上,我们写的是谁写的小李的信息,因为这个引input的没有做更改,所以小李的信息就跟着小张去走了,你看看是不是这个效果。是不是小李心里跟着小张就走了?啊,因为他们的K相同啊,你看看。懂了吧?
29:02
啊来。接着往下对比。好,对比到第二个是不是,那K等于一找到没有,找到了,好原来的这个input k等于一的input写的谁的信息,写的小王的这个信息是不是,那这里他发现诶内容不一样,你是小李,我是小王,他把内容不一样的话,他就会转成真实道对不对,但是他要对比input input一样,是不是没得更改。所以这个影input带着谁的信息,是不是带着小王的信息,就小李后面跟的小王。是吧,Input没有更改嘛,那接着往下对比,K等于二,你K等于二找不着了,找不着整个创建一个新的,是不是转成这个真实的一个道吗?那这个input也是新创建的对不对,Input是。新转的啊。新转的到。对吧,所以就是。这个是空的,你看是不是它是新转的嘛,最后是新转的嘛。那经过这么分析,是不是跟我们的例子一样?对吧,那你。来看。
30:02
这种如果我们使用ID做的做这种,呃,唯一的这个K的话,都不会出现这种问题,为什么?来我们来对比,我们先看旧的这个啊,初始化数据的虚拟盗墓哎。K等于一,也就是我们用的ID嘛,内容是小李,我们输入的信息也是小李啊。接着我们来看看更新后的K啊,这个新增的这个啊,我们先看一下也行啊,K等于三的找着没有没有找着没有找着增加了一条这个虚拟到对吧,整个连这个小张的信息,还有这个input都是新增的,是不是因为新这个input你也没找着啊,原来有吗?没有啊。啊是转制到了,好接着看第二条。第二条好,K等于一的,去旧的里面去找,找到没有,找到了内容一样不一样。啊,Input的一样吗?一样没做更改啊,哎,所以说你这个原来的这个是直接就没有做更改啊,不管是内容还是隐input的都不做更改,所以这个信息还是我们输入的这个小李信息还是在的呀。啊,通过这个例子大家发现你你感觉是不是。
31:00
啊,是不是要有必要使用这种微字的,不去使用这个索引。好。那接下来看一下我们上面做的这个总结啊,就说使用这个index作为K可能引发的问题,所以这个可能我没有说绝对啊。对吧。因为这里什么,你看这里,我们是把这个。这个新增的人放到了前面,因为我们放到前面会打乱他的索引,所以会出现这种问题,你如果放到后面就不会出现这个问题。清楚吧,你如果把这个P你放到这来刷新。嗯,我就我就写一场啊。哎,这个。啊,我就复制一场啊。付这个小李的,来这里也是付这个小李的。那我不是我这里复制小王的吧,来啊,那我新增一个人是不是都不变,你看小李还是小李的,小王还是小王的,对吧。啊,所以说你使用这个index,你并不是说哎绝对会出现问题,他只是说可能会出现问题。清楚吧,那我们看看有哪些可能情况下会出现问题,哎第一个情况就是说你对数据进行了什么样的操作呢?哎逆序的添加,哎逆序的删除等等,你破坏了它的这个顺序。
32:07
清楚了吧,这也是我们用索引作为可以最可能发生的问题,就是你的这个索引被破坏了。啊,这样的话就会产生一个没有必要的真实盗的更新,只是说呃,性能耗费点没有什么大问题啊,就见面看不到什么效果,就效率低一点而已,对吧?啊用也也行啊用呗,你要不考虑性能的话。是不是,哎,当然最好还是不要去啊,那还有。如果你的结构中,你恰恰恰还包含了输入类的道,那就会出现问题了,那你更新那你输入类的,你的那些隐input啊什么等等,其他的输入类的它内容没有变呀,你界面就有问题了,你索引变的,那其他内容变是不是就乱了。对不对。还有一点就是第三点啊,如果你这个你确定你的数据啊,不存在什么逆向的添加啊等破坏这种啊顺序的,而且呃,也不存在什么输入,仅仅就是作为一个列表展示,你使用它是没问题的,可以使用啊。
33:01
对不对,一些简单的情况你是可以使用好,那真正的在开发中,我们如何选择这个K呢?最好是使用哎唯一的一个字段,比如说这个ID啊,手机号,身份证学号等等等等。如果你只是做简单的这个展示,使用它也可以啊,你不用担心这个唯一的字段,对吧,你去请求一个API。对方给你一个,哎,这个API给你返回的一个数据的列表啊,一般都会有唯一字段的,不是说一般啊是有唯一字段的,你这么来想,如果你返回的一个学生的列表没有唯一字段啊,既没有ID,也没有手机号,学什么什么都没有唯一字段,只有姓名和年龄,那姓名有重名的,对吧,那现在你要删除一个人。你你你怎么知道删除哪个。对不对,你把那三个小类你删除,小李那三个是不是都删除了,谁知道删除哪个,哎,所以一般API给你的这种列表都会给你唯一字段的啊,大部分比较常见的就是ID啊。这是我们在开发中如何去选择这个K啊,那通过这么一个例子,以及我们呃,这一步一步的去分析,大家也明白了这个啊底分算法。
34:06
它的一个过程,哎,就是说去拟盗墓。哎,新的虚拟盗墓和旧的虚拟盗墓作为对比的一个过程,以及诶是否要转真实盗墓和不转他们的一个情况,对吧?哎,这就是强大的低分算法。可以很大的去提高我们去渲染数据的一个效率,能复用的就直接就复用了,哎,只去操作那些啊,就是说有变化的节点。然后这里大家也是把这个K的作用稍微总结了一下,以及啊,为什么不要使用索引啊,不是说不能用啊,就是说最好不要用。啊,大家尽可能的去使用这种唯一标识啊。好,关于这个道中的这个狄平算法,就呃给大家说到这里啊,单独拎出来小节给大家稍微总结一下,大家了解一下就可以啊。
我来说两句