00:00
来,同学们,我们继续快快的复习一下我们的事物相关的命令。通过前面的讲解,我们知道了开启一个事物用market。执行excc类似于OK吧,那么通过前面的演示啊,我们都知道,只需要保证它在这个Mar和ECC之间,所有的命令都可以成功加到队列里面嘛,对吧?那么接下来我们出现第二种情况。AAA这个线程去修改的时候,我希望没有人来打扰我,我望没有人来跟我加三。那这种情况下,这个是理想状态可不可能?有可能你确实运气好,没有人动,也有可能你在改的过程当中有人加三了,那么加三就是有人已经在你。修改之前已经干过这个命令了啊,那么这个时候我只好什么直接退出,那么这种情况下请同学们要小心,来,我们先来看数据,先说命令,SV1 SK1,那么这就是一吧,SK2。
01:01
这就是二最经典的两个。那么现在。Watch,我希望K1,我加个哨兵,加个监控,Watch k1我希望A我自己在修改K1的时候,别人不要来动。整一个乐观锁,当然如果别人动了,我整次修改就失败,我不会去覆盖别人,我认输啊,因为你在我之前干了,那么所以说这我们请看,先握持K键,然后有market,我干一件什么事呢?再开机。我要把它变成实际。Sat k2,我要把它变成22,请注意没有OK,是不是全部加入队列,正常情况下我们来干是不是EXE,各位同学是不是OKOK,然后我们再什么。按卧A1顺溜的就这么干好。但是呢,我们再来一次啊,Watch开机。上面这一轮是最顺利的,明白了吧,但是理想丰满,现实怎么样骨感,那么现在。
02:00
Mar又加入一个事物,然后我sat开一些,我准备把它变成三。Sat k2,我准备把它变成多少呢?就变成四吧,随便乱写啊,那么111执行是不是就希望我在监控期间?没有人来动过哈,但是非常抱歉,我这儿还没写呢,这个线程又来了,他干一件事好get kg,大家看一下。多少时间,因为我现在要把它改成三的,这个命令还在队列里面,我没有卡密提交呢,没有执行呢,所以说目前K1还是原来的上一次的值啊,但是现在呢,假设这个终端啊,我们呢,就叫。BB。BB这个呢也连上来了,他发现这个时间不对呀,我要按照我的想法改。Sat k,我把它改成BBBOK吧?那么get k1多少BBBBBB现在是不是已经在AA提交之前修改过了?你可别忘了,我们这儿watch是放了个哨兵监控着我们的K1呢?说明什么?说明我们的AAA?
03:07
在监控期间,已经有人捷足先登了。把我。改成了BBG,这个时候请看我X1C,你们觉得A的结果还能去覆盖这个bbb吗?是执行成功还是失败呢?那么同学们走起什么东东那而这个时候我自己AAA的意愿是想把K1改成三,但是这个时候不好意思啊,Get k1怎么着BBP已经被别人改掉了,我只能去。拿别人修改的值在bbb的基础上再去改,有点类似于我们MYSQL数据库的乐观锁,这种情况下我无法覆盖别人,OK,好,那么复习完这个write的事物以后,各位亲,我们接下来呢?就来写写,用代码来写一下我们这个。事务相关的命令。
04:00
完成我们面试官的。考核,因为他现在呢,他知道你懂啊,他就来看你有没有别的。招法,哎,也是这个面试啊,被搞得现在越来越难,没办法,那么同学们先把基础知识复习了以后,我们修改为我们的8.1版,再次强调,目前我们是从7.0版修改为8.1,为什么?因为7.0版的时候。这个。判断和我们的这个删除非原子操作,那么接下来我们需要把它变成原子的两种方法,官方提示让你用的是什么路R脚本我们之前也看到过,对吧?我个人推荐也是撸R,但是现在为了面应付面试啊,他说不让你用撸R,你会怎么办?那么我们用另外一种思路,尝试着用事物来解决好在这块那么给同学们呢做一下处理。那么我们这儿可以是Y呀?错。那么怎么办呢?我们是这么干,根据前面我们命令的复习。
05:01
我们呢,准备这么写对吧,然后呢,Watch。那么你卧室就跟刚才一样,你要监控哪个T,我们用乐观锁,因为我在判断和删的时候,有可能别人改,有可能别人不改,对吧?好,那么再次强调,实际工作中请还是用撸R脚本,我们这儿只是为了应付面试啊,告诉大家另外一种思路啊,那么我先watch。然后呢,跟刚才一样。我们呢,直接registerl,点2OP value.get我们这个。这个K和刚才一样,一判断,判断是不是等于这个值啊,等于了我们要干什么,是不是现在记忆最好就把它加进我们的事物里面来控制啊,不能直接删,听懂了吧?那么我们先watch我乐观所。我觉得呢,希望我在删的时候别人没动,当然如果说被动了,那么我们再来修改第二次,直到删到属于我自己的那个为止,那么好get。
06:06
那么street第二干嘛呢?赛?Enable transaction support,把这个是否支持这个事物一定要写成错,这一行代码要加,然后string template template点。Marin,这个是不是开启我们的事物,然后完了以后我们在这块各位亲,Delete再把我们的这个线给。删掉这一波,听到这个时候是不是才相当于变成删除了我们的锁呀,然后删锁的过程当中,有可能成功,有可能失败,那么string.ex。Ex ec OK吧,那么第二它返回一个什么啊,它返回一个list,它的意思就是说,如果删锁成功,因为我们之前执行过这个郑东东是不是都在这么一个叫什么Q的队列嘛,所以他给了一个list塔,那么假如说啊。
07:04
这个list第二。如果list不等于钠说明什么?删除成功,那么如果list是等于钠呢?兄弟们,我们干嘛?Continue,抱歉,我乐观,锁被人动过了,我再来一次啊,否则的话,恭喜你,说明什么?顺利成功,那么我们在这款完了以后。这个if结束,这个if结束了以后。跳过来OK判断,那么说明我们的删除是成功是OK的,搁到这以后点什么按watch,然后我们。Break,我们的while for循环,OK。那么这个时候,同学们,Lawyer就是我们的。第二种,用R脚本以外的第二种思路,尝试用事物来控制,这个那么好,大家可以思考一下,那么搁到这儿,那么给同学们呢,简单的最后梳理一下。
08:07
Watch啊,我们的这个的这个对吧,然后判断。我们认为呢,没有人来倒非常乐观的,其实说白了就是乐观所一个重拾机制啊,开启事物啊。Begin。迪丽塔,看看这样的话,删不删的除成功,那么如果说等于,那说明本次失败了,Continue,再过来这一波同学们能跟上,否则的话怎么着?Watch肩靠一切顺利,删锁成功,按watch解锁,然后break退出来,OK,那么这个就是我们的第二种小方法,用write自身的事物修改为8.1版。
我来说两句