樂觀鎖介紹

1.樂觀鎖介紹

樂觀鎖( Optimistic Locking ) 相對悲觀鎖而言,樂觀鎖假設認為數據一般情況下不會造成沖突,所以在數據進行提交更新的時候,才會正式對數據的沖突與否進行檢測,如果發現沖突了,則讓返回用戶錯誤的信息,讓用戶決定如何去做。那么我們如何實現樂觀鎖呢,一般來說有以下2種方式

2.使用方法

版本號控制

版本號的實現方式有兩種,一個是數據版本機制,一個是時間戳機制。具體如下。

a.使用數據版本(Version)記錄機制實現,這是樂觀鎖最常用的一種實現方式。何謂數據版本?即為數據增加一個版本標識,一般是通過為數據庫表增加一個數字類型的 “version” 字段來實現。當讀取數據時,將version字段的值一同讀出,數據每更新一次,對此version值加一。當我們提交更新的時候,判斷數據庫表對應記錄的當前版本信息與第一次取出來的version值進行比對,如果數據庫表當前版本號與第一次取出來的version值相等,則予以更新,否則認為是過期數據。

3.代碼實現

數據庫表新增字段version,更新修改操作時,需要比較當前版本值是否相等,相等的話,每次修改值時,將版本號version+1,同一版本的數據只能有一次提交成功,其他提交時會因為version不一致導致修改失敗

<update id="updateGoodsUseCAS" parameterType="Goods"> ?<![CDATA[?update t_goods?set status=#{status},name=#{name},version=version+1?where id=#{id} and version=#{version}?]]> ?
</update> ?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/270405.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/270405.shtml
英文地址,請注明出處:http://en.pswp.cn/news/270405.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

從0開始學習 GitHub 系列之「03.Git 速成」

前面的 GitHub 系列文章介紹過&#xff0c;GitHub 是基于 Git 的&#xff0c;所以也就意味著 Git 是基礎&#xff0c;如果你不會 Git &#xff0c;那么接下來你完全繼續不下去&#xff0c;所以今天的教程就來說說 Git &#xff0c;當然關于 Git 的知識單憑一篇文章肯定說不完的…

linux看缺省的編譯器,修改Linux系統默認編輯器

pip和requests模塊的安裝1.配置python的環境變量 在path中加入pyhton的環境變量,如我的是E:\Python27 2. 如果沒有pip,一個幫助軟件管理的東東(現在的版本一般有,若有跳到3) 去https:// ...sp&lowbar;who&lowbar;lockUSE MyDataBase GO /****** Object: StoredProcedur…

Spring系列(一):Spring相關知識介紹筆記

目錄 1、Srping概念 2、Spring原理 2.1 控制反轉(Inversion of control)&#xff08;IOC&#xff09; 2.2 面向切面編程(Aspect-Oriented Programming)&#xff08;AOP&#xff09; 3、Spring框架結構 4、Srping生命周期 4、Srping有什么優勢&#xff1f; 4.1、非侵入式設計 4.…

SDUT 3400 數據結構實驗之排序三:bucket sort

數據結構實驗之排序三&#xff1a;bucket sort Time Limit: 150MS Memory Limit: 65536KBSubmit StatisticProblem Description 根據人口普查結果&#xff0c;知道目前淄博市大約500萬人口&#xff0c;你的任務是幫助人口普查辦公室按年齡遞增的順序輸出每個年齡有多少人&#…

nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException(Spring循環依賴問題)

1:問題 最近啟動項目時候&#xff0c;遇到如下報錯 nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name stockReceiptManager: Bean with name stockReceiptManager has been injected the bean. Thi…

linux分區設置大小,Linux調整磁盤分區大小

Resize the disk (Linux調整磁盤分區大小)Resize the partition. Run parted: $ partedShow the partition list: (parted) printThere should be two partitions; 1 should be a boot partition, about 64MB; the second should be the main partition, about 3.6GSome Disk C…

電腦技巧:盤點常用的Win組合快捷鍵

今天給大家繼續分享電腦使用技巧&#xff0c;給大家介紹一下有哪些常用Win組合快捷鍵&#xff0c;希望可以對大家的日常辦公提高幫助&#xff01; 1、WinE&#xff1a;打開我的電腦 超級實用的一個組合鍵&#xff0c;不論你當前在操作什么&#xff0c;只要按下這個組合鍵&#…

簡單正則替換

var reganew RegExp(" ","g"); //創建正則RegExp對象 ntrstrntrstr.replace(rega,""); var regbnew RegExp(" ","g"); //創建正則RegExp對象 ntrstrntrstr.replace(regb,""); var regcnew Reg…

電腦技巧:電腦安裝操作系統、重裝系統常見的問題解決方法

目錄 1、提示權限不足 2、添加PE開機引導菜單失敗 3、磁盤格式錯誤 4、除系統盤外&#xff0c;未找到任何其他非系統磁盤分區 5、計算機意外地重新啟動或遇到錯誤 6、windows無法完成安裝 7、U盤安裝系統時出現如下圖錯誤 8、下載速度慢、卡住 重裝系統現在也不是什么難事&…

linux開發板上程序如何調試,linux開發板調試典型方法

tftpdsudo apt-get install tftpd openbsd-inetd將/etc/inetd.conf中的最后一個路徑設置成你希望讓客戶端存取文件的目錄例如下面的“/tftpboot”(記得開放該目錄的讀寫權限)&#xff1a;“tftp dgram udp wait nobody /usr/sbin/t…

電腦技巧:Win10電腦卡頓解決小技巧,非常實用

目錄 1、及時關閉不常用的后臺進程 2、建議打開GPU硬件加速功能 3、及時更新升級硬件驅動 4、適當降低Windows動畫特效 5、開啟Windows自帶的游戲模式 電腦用的時間越久就會越卡頓了&#xff0c;今天小編給大家分享五個小技巧&#xff0c;來解決電腦卡頓的問題&#xff0c;有需…

線程其實就是一個個指令組成的,當這個線程內的指令全部執行完了,那么這個線程也就執行結束了

線程其實就是一個個指令組成的&#xff0c;當這個線程內的指令全部執行完了&#xff0c;那么這個線程也就執行結束了

page,client,offset區別

offset:相對于當前“盒子”的距離 &#xff0c;與滾動條無關 client:相對于可視區域的距離&#xff0c;與滾動條無關 page:相對于整個頁面的距離&#xff0c;與滾動條有關 示例代碼&#xff1a; 1 <!DOCTYPE html>2 <html lang"en">3 <head>4 …

linux netbeans 中文亂碼,淺談Linux Netbeans字體反鋸齒處理

用的Linux發行版是Ubuntu8.04&#xff0c;如果使用源里面的JDK一切都很簡單(現在源里的版本是1.6u6)&#xff0c;JDK6開始支持反鋸齒。裝完Netbeans你就會驚喜的發現&#xff0c;仿原生GUI的界面(GTK&#xff0b;)上的文字是反鋸齒的&#xff0c;但是編輯器里面的文字是鋸齒的&…

Win10軟件:推薦兩款Windows操作系統下的遠程軟件,值得收藏!

遠程控制軟件是程序員日常必備的工具&#xff0c;現場市面上有微軟自帶的遠程連接工具、向日葵、teamviewer等遠程控制軟件。他們都有一個共同的缺點&#xff0c;無法針對遠程連接設置分組、別名。大多數情況下&#xff0c;我們可能需要連接十幾個甚至幾十個Windows遠程服務器。…

開發機多用戶 xdebug 遠程調試 PhpStorm

在公司都用的遠程開發機開發&#xff0c;每次有錯誤調試就得dd(xxx)然后保存真是&#xff0c;讓我在本地開發用慣xdebug的情何以堪&#xff0c;所以有了下文。 1.安裝配置xdebug 直接使用pecl安裝即可# pecl install xdebug 然后寫xdebug配置&#xff0c;下面是我的設置(具體擴…

linux查看 idt日志,實現RCP的日志管理

做插件開發的都知道當應用跑不起來了就去看看workspace里的.log文件&#xff0c;錯誤信息很詳細,那樣解決問題就方便多了&#xff0c;這個功能很好&#xff0c;所以學習了下&#xff0c;和大家分享下&#xff0c;實現的原理也就一行代碼Java代碼 Platform.getLog(Platform.getB…

電腦技巧:電腦內存不足解決小技巧

熟悉電腦硬件的朋友們都知道&#xff0c;內存相對于電腦來說是一個相當重要的部件&#xff0c;內存屬于CPU的“工作室”&#xff0c;因為電腦所有運行的程序都是在內存中運行&#xff0c;它決定了多少、多大的程序能即時運行&#xff0c;如若執行的應用程序過大或者過多就會導致…

前端:分享一些實用的JS代碼片段

今天給大家分享一些實用的JS代碼片段&#xff0c;有需要的朋友歡迎收藏&#xff01;1、獲取瀏覽器的版本function getBrowser() {var UserAgent navigator.userAgent.toLowerCase();var browserInfo {};var browserArray {IE: window.ActiveXObject || "ActiveXObject&…