00:00
这里面哎,创建对应的临时节点啊,带序号。那这个就创建呗,啊JK客户端点create创建,那我们创建是放在lock lock斯下面对吧,然后我是不是得拼接上。对应的直接点,那这个直接点的一个序号,你看一下我们是怎么写的啊,我说都加上了一个前缀啊,S seq杠对吧,S seq杠啊。那这里面呢,就是EQ杠。EQ。这样去拼接。然后后面的话呢,那我传输什么内容呢?哎,这里面对应的内容啊,我就不给了,直接空OK吧,然后id4.ok。然后后面那这个节点类型,创建什么样节点类型。那这里面就必须得是。哎,带序号的临时节点对吧,哎,Current。这个great啊。而且帽子点,那就是带序号的临时节点。
01:01
这样是OK的哈。点八返回。那这里面就是current CEO啊,嗯。Current mode。这不就是我们创建的对应的这个节点。哎,就是创建仓。是这样吗?那接下来你创建完这个节点,你就要判断一下当前这个节点,它是不是这个根目录下序号最小的。知道吧,啊啊,那我们来看一下呗,把它。看一下。好吧,嗯,起来。然后下面我要判断一下它是不是最小的。那怎么判呢?那就JK。第二。Get,就是。我获取一下你这个对应的根目录下,比如说。我看一下这里面它到底有几个。如果它只有一个的话。
02:00
你说你这个下面就一个节点,那就看他自己呗。那我就不需要别的废话了,对不对,哎,那直接你就能够获取到锁就行了啊好。那这里面说。如果。Children。只有一个值。那说明。啊,那就直接获取锁就行了,那就啊直接。获取数对吧,如果不是呢,如果有多个节点。多个节点,那是不是就要判断啊,需要判断了。谁最强?OK吧,行,那下面来看啊,如果衣服。就是。点S。它塞大小如果等于一。那就说明。诶,我就现在可以直接获取锁,直接返回就可以了。Else的话,那这里面就不行了,我就得进行后续相关操作,那就说明这个children下面它有多个节点。
03:06
那你多个节点有可能有他,有他有他。对吧,那我是不是得取出来比较一下,哎,比较一下。那怎么取出对应的值呢?记住先对它进行一个排序。你说你这里的。获取到这个数据,我是不是得按照这个顺序啊,一个先排好序之后,我才好比它监听这个节点号,给它小的这样对吧,嗯,先排好序啊,给它排下去那点S。怎么排呢,将这个就是放起来。那这个通过这个集合一处理之后,那这里面这个集合当中数据就都变成有序的。看游戏竞争OK?那接下来。我要干什么事呢?我要获取对应的节点名称,哎,我获取到你这个current mode里面对应的到底我是哪一个节点。
04:02
然后我通过你这个哎节点,我能够获取到我在这个集合当中,我是排多少号,你说传进去对应的数据值,获取到在这个集合当中的第几位,获取到这个第几位有什么作用呢?比如说我当前是这个号。我获取到我在这个当中啊,属于这个三号位置。那我就要干一件事情,我是要监控集合当中二啊,这个位置里面的数据是否有还是没有,如果没有的话,我是不是就可以获取到对应的锁了?能懂意思吗?我在这里面先排序,排完序之后,我我先想获取到我在集合当中多少号,那获取到多少号,我是可以通过这里面对应的值。来进行获取。好,那我们来处理一下啊。那这块呢,就是获取节点名称。怎么获取呢?开始呢,帽子。点三使劲,我用它来解。怎么解?丝,不用他去接。
05:02
因为你前面这个节点,我都是烙丝拼上它的。对吧,那我通过它一截,我后面的内容是不是就是我对应的值了啊,那这块它是一个int类型怎么办呢?点。哎,相当于是我把前面这个截掉,我只取后半截。那就是对应的节点名称。啊,是这样获取的,OK,第二。那这个呢,就是this。No。当前这个节点,比如说SEQ-0000。能懂我的意思吧,哎,它获取的是这个值啊,它获取的是。EQ杠。哎,类似这样的值。好,那获取到它之后有什么用?通过。哎,我通过它获取。在集合当中的位置。
06:02
在哪个集合呢?在这个秋水在这里面。的位置,哎,找到找他那怎么找呢?那就是这个children。点index啊。传进去对应的这个信息。那这样我就能够获取到,哎,我当前这个节点在整个集合当中处于什么样的位置。那获取到它之后有什么用呢?那要判断。继续判断。如果这个index。它等于等于负一。什么意思?哎,不是一个正常的啊,这个两零一二往后排,那就说明这个数据有问题啊,最后题直接抛一个说。数据异常就可以了,哎,正常不会是一啊负一对吧,那还有那下面继续判断那else。那else if,如果说这个index。
07:04
它等于等于零,哎,如果是零,那零说明什么问题,说明整个这个channel啊,这个求集合当中是不是只有一个数据了,那只有一个数据,那它就获取到。对应的锁了呗,那直接return就结束了啊。获取到中。这表示。就一个节点。过去。过去说了。对吧,那就结束了,那下面如果说它不是最后一个节点,那这样是不是就麻烦一些了,那这块呢,就需要进行监听了。那时候需要监听它前一个节点啊。边听他。前一个。节点变化。这就可以了,哎这样去做,那他监听前一个节点,那怎么监听呢。哎,这样去做。嗯,JK。
08:00
点。Get,对。我获取你前一个节点的数据变化,那我获取前一个节点的路径怎么获取呢?那这个路径啊,那就是这样去获取。嗯,我先定一个变量吧,定一个变量就是前一个节点的路径。Private。使劲。那么这个名称呢,我们叫贝。可以吧,哎,就监听它的前一个节点。那这个值等于什么呢?它等于。首先这里面有log。对吧,哎,老丝,然后。加上。那这个。起来。点,那就是children.get我通过你当前这个index,我减一,那是不是就是前一个节点呢?对吧,哎,那就是前一个节点。行,那你这个前一个节点,那我就放在这儿呗。
09:02
通过这个集合里面获取的啊,好放在这啊,那我监控的是你前一个节点的路径,然后。那这里面下一个是是否做监听,那这个就肯定要做监听了,对吧,那我就来一个处,或者你用一个包在这里面处理都行,如果我这边给个处的话,那这个监听代码放在哪里啊,是放在对应的。这块啊,对吧,在主图边创建的时候,这个单已经写过多个了啊好,那下一个。加P下一个呢是状态,那状态这个其实你不给就可以了啊,不关心。这样行吗?哎,获取它。这样呢,就是它会监控他当前节点。前一个路径的变化。是不是当前这个节点吗?对吧,我监控比他小的一个,那就是index减。Inex减一不就行了吗?OK啊行,那这是这块,那这块那前边这个代码什么时候执行完。
10:03
对不对啊,你是不得等待呀,等待他执行完之后,那我这就获取到手了。对吧,这个是监听吗?那如果这个监听没结束,是不是一直得卡在这啊,哎,那我们还可以用这种方式。用什么方式呢,用它。Private。嗯,然后还是这个抗脏,那这个呢叫fat啊。又一个。然后还是一等待前一步骤执行完毕之后,我再执行下面的操作。所以说这块等待。监听OK吧,那就是它点和wait,那继续等哎,如果他接收到之后,比如说这个监听结束,是不是就立即return。哎,这就是这个人吗?好。那下面呢,我们来回答啊,如果你得到了这个监听,就说明它监听到前一个节点。
11:02
已经下线了,那是不是就轮到他了,那这块我要做什么事情呢。就在哎这块是什么事情,其实正常就可以获取到锁了啊,那这里面我们来做一下啊,对应的这个相关操作啊。首先。这里面做两件事,哪两件事呢?你刚才处理过一个他。他表示,如果连接上。CK。这里面是不是有个。这个为啊等待,那你这个对象是不是得释放掉啊,啊对啊,如果连接上之后。那可以释放。啊,可以释放,那还有一个他你也需要对它进行释放,他也需要释放。那什么时候释放呢?这里面就有一个判断条件了,那第一个。第一个呢是哎,我们得判断这样的话呢,说if。
12:02
你这里面有一个what event。如果你今听到一问的点。盖的什么?Get对应的这个状态。如果说它等于ET,因为呢,点。Keep state同步啊连接,如果说你是连接。啊,你这个监听的状态是连接,那怎么办呢?那我就将这个contest点。耗上,哎,将它释放掉。那下一个如果说。我这个watch even,第2GET类型。我这个类型是什么呢。是这个类型。日本的。啊,是一般的type第二。Note如果是节点的一个删除。而且。而且是什么呢?
13:02
watch.get pass。加equals。等于。这个路径还记得吗?嗯,这个路径就是它的前一个节点就是。哎,如果说你是三重节点,而且还是你当前的前一个节点路径什么意思,比如说它节点上的路径速度发生了变化,但是呢,是它的比它小一号的那个序号发生变化,那这个时候我就可以将。将下面的这个wait。点,然后释放掉,那就是。按这样就什么就OK了。OK吧,那我们稍微捋一下这个代码程序啊,呃,捋一下首先呢,我们是客户端跟这个服务器是不是要建立连接啊,哎,那所谓的建立连接就是创建一个这。那JK有没有正常连接的,那我们这里面延迟一下。
14:00
那下面呢,就是这块,那判断一下你这个log这个根节点是否存在。那如果不存在的话,创建。好,那这个写完写完之后,那下面就是这个加锁,所谓的加锁就是在这里面创建节点,然后判断这个节点是否是序号最小的。那这里面我们就创建了一个节点,对吧,创建完节点之后,那我就得判断一下它是不是最小的呢?那我就监控一下这个劳斯,看看它到底有几个节点。如果说它只有一个节点,那好嘞,那就是它直接获取到数。那如果不是的话呢,那就有多个节点,那我对它进行排序。拍戏之后我看一下啊,当前这个节点里面到底是谁。是吧,啊,看着我自己在这个整个集合当中存在什么位置上,哎,通过这种方式获取到啊,获取到如果说index是负一,那就说明数异常了啊,正常情况下呢,应该是零或者是大于零的数。对吧,哎,如果是零,那整个集群当中啊,整个这个log下面就一个节点,那我就获取到。
15:01
那下面如果不是的话,不是的话,那我就先听比我节点小的那一个呗。比我这个序号小的那个。看一下他,对他做一个监听。这样就始终等待着啊,什么时候释放呢?那释放的时候,那就是在这个监听器当中。这个位置。这个时候我是往左。是吧,哎,释放掉,那就是这里面哦,这个类型呢,是有节点的删除,你说这个目录下有节点删除,同时呢,这个节点呢,还是正好。是他前一个。对吧,那这就OK了。啊,那这是这个枷锁,那怎么叫解这个解锁呢。就在这块解锁,解锁就是删除节点的。那非常简单,那就是JK。点对删除,那删除谁呢。删除的就是你当前这个节点呢,那当前节点看一下上面是不是它current吧。CTRL2的加F。
16:00
把它变成选举的。我直接就删他。加对吧,那有一个版本号,那版本号随便给一个啊,负一或者一都行啊都行。捕获一下,像这样呢,就是删除对应的节点。
我来说两句