00:00
好,那昨天的问题我们总结完之后呢,我们来看今天的内容,今天关于买be plus这块呢,我们还剩两部分的内容,第一个呢,就是插件里面的乐观锁。第二个呢,就是条件构造器,我们先来看乐观锁,那现在有这样一个场景啊。这个场景呢是这样的,我给大家简单的描述一下。那在这个描述的过程当中呢,我给大家画个图。把这块先那个作为我的画板啊,然后呢,现在这个场景是这样的,有一件商品。啊,它的成本价是80块钱。啊,比如说一件一个那个鼠标哈,它成本价是80块钱,然后售价呢是100块钱。啊,那老板呢,觉得这个100块钱呢,可能卖的有点便宜了,所以呢,他先通知小李说你去把商品的价格给我改成50元,然后这个小李正在玩游戏,他就没及时的改啊,就耽搁了一会儿,然后呢,这一会过去之后呢,老板又一拍脑袋说,诶,150块钱可能价格有点高,嗯,恐怕市场的这个竞争力有点小,那我让他便宜一点吧。啊那所以呢,他这个时候又通知了小王,是不是这就是老板的不对了,老板其实应该把这个任务交交代给一个人啊,但是呢,老板就这么做了,他把这个通知给小王了,然后呢,告诉小王说你把商品价格降低30元,这也是老板的另一个错误,他没有明确的告诉小王说你把商品的价格给我改成多少,而是告诉小王和小李说,你给我增加50,告诉小王说你给我降低30,所以这并不是一个最后的结果,是不是啊,好,那就埋藏了一些隐患。
01:47
好,这个隐患是什么呢?小王和小李这个时候同时修改了后台的这个数据,也就是说小小李一开始玩游戏,他耽误了一个小时,然后一个小时之后老板又告诉小王,这个时候小李和小王就想,诶,我都来去修改一下吧,好,那这个时候呢,小李。
02:07
这是它的浏览器啊。这是小李的浏览器,好,小李的浏览器里面呢,有个文本框。有个按钮是吧,好,这是小王的浏览器。小王的浏览器里面呢,也有一个文本框,有个按钮哈,然后呢,这个文本框和按钮里面呢,分别就是有一些内容,比如说小李,我先写小李吧。小李啊,然后这个是小王。好,这小王小李的这个浏览器里面这个按钮呢,叫确定。小王,这浏览器里的按钮呢,也叫确定,因为他俩打开的是同一同一个页面,都要对这个商品进行修改,那么现在他俩同时打开了商品的修改页面,后台管理系统的修改页面,好,其他的字段我们不考虑,只考虑价格,这个页面小李看到的价格是多少?
03:03
100对不对,因为这个商品的售价它是多少钱呢?是100元啊好小王看到的售价是多少钱。100对不对,好,然后接下来呢,他俩同时都把这个页面打开了,此时此刻谁都没点确定,但是看到的都是100元啊,这个时候呢。小李呢,先取出了商品的价格,对这个商品呢,就添加了50元,所以呢,小李把这商品的价格改成150元了,好,这个时候呢,小王呢也看到了商品的价格,并且呢给这个商品价格减了30元,小王呢就把这个价格改成70元了。这个可以理解吧,啊好,所以价格呢,有一个变动啊,这是价格的变动,好此时此刻呢,小王和小李是不是都点击了确定按钮啊,问商品的价格最终是多少钱。商品的价格最终是多少钱?那么有的同学可能就说了,谁手快谁的价格就被覆盖掉了,是这个意思吧?如果小李先点击了确定,那么。
04:13
商品的价格临时被修改了一百五之后,紧接着小王点击了确定,商品的价格就会被修改成70,所以呢,老板所要得到的120元的结果,其实呢。就被覆盖掉了。同样,如果是小王先修改了。商品的价格变成70,紧接着小李又修改了,变成了150,那么老板所最终需要的120元的价格也被覆盖掉了,也就是说,无论是谁先修改最终的价格都不对。是这样的一个结论吧,所以这个呢,我们管它叫做并发冲突啊,我们应用程序当中的并发冲突呢,有两类,第一类呢是高并发,就高并发的时候可能会出现数据的不一致现象,访问量太大了啊啊,然后出现问题,第二呢,就是这种它并不高,这个并发就俩人操作,但是呢,也出现了一个并发修改冲突,所以呢,这也是一类的并发啊,那我们所要讲的乐观所操作呢,是为了我们解决这一类的并发的啊,是为解决这一类并发的,所以呢,我们现在来看一下,如果通过乐观所来解决这个问题的话,他的基本思想应该是什么?
05:30
那么这一块的基本思想大家可能会接触过啊,就是添加version字段是不是啊啊,所以呢,在真正的去做这个操作之前呢,我们在我们的数据库当中啊,在添加一张表啊,为了和之前咱们那个user表啊区分开,因为那个user表咱们已经改的比较乱了啊,好不助于咱们去分析问题,所以咱们呢,再添加一张表,再添加一个实体。
我来说两句