第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

關(guān)于個(gè)人對(duì)樂(lè)觀鎖-加入版本號(hào)的理解:

標(biāo)簽:
Java

乐观锁的定义是在保存数据的时候,觉得别人可能不会更改数据,所以就不会加锁,只是在数据更新和操作的时候才会判断 别人有没有更改数据。

现在就着问题 “两个人同时借阅最后一本书的操作”为例来讨论:

当A浏览器和B浏览器同时借阅最后一本书的时候,势必只有一个浏览器才能够借阅成功

这个时候为了防止冲突,我们可以用乐观锁。

在数据库中 增加“version”的字段,为了辅助判断数据修改的条件

我们对数据的每一次的更新,都会让version值加一,在这里默认的version值为1,

当A浏览器借阅更新时,要判断当前更新数据后的lastVersion值 跟A浏览器第一次从数据库查询得到的version值是否相同,如果相同就能更新,否则就是B浏览器 在A浏览器更新之前 抢先更新了数据,把最后一本书拿到手,则A浏览器的更新数据被视为过期,会被驳回其借阅请求。

可以借助表来理解:

假设我们现在有这样的一张task表 :

https://img1.sycdn.imooc.com//5b7f6bcd0001096303150053.jpg

提交给server 之后可以显示出来,现在我想修改key2 的值为 “China“,数据更新一次,数据库版本也会更新,所以

https://img1.sycdn.imooc.com//5b7f6cd2000161cd05070049.jpg 

可以看出此时lastVersion=Version

就可以连接数据库,对数据进行update更新:

update task

set key2=China,version=2

where id=1 and version=1;//只更改id为1,version为1 的那条数据

注意:不加where语句的话, 是对整张表进行更新数据的,加上的话就是只更新where指定的那一条数据。

所以只有执行

update task 

set key =value,version=version+1

where id=#{id} and version=#{version};这条语句,就可以更新数据成功啦~

點(diǎn)擊查看更多內(nèi)容
3人點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消