日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

面试中的最常被问到的两种锁

發(fā)布時間:2023/12/20 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面试中的最常被问到的两种锁 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 面試中的最常被問到的兩種鎖
    • **鎖的分類**
    • **樂觀鎖**
    • **悲觀鎖**

面試中的最常被問到的兩種鎖

公眾號后臺領(lǐng)取更多 面試必看資料


面試中經(jīng)常被問到的鎖到底是哪兩種鎖呢?接下來我們就得介紹下樂觀鎖和悲觀鎖了。那我們我就來了解一波吧!

鎖的分類

1.公平鎖/非公平鎖

2.可重入鎖

3.獨享鎖/共享鎖

4.互斥鎖/讀寫鎖

5.樂觀鎖/悲觀鎖

6.分段鎖

7.偏向鎖/輕量級鎖/重量級鎖8.自旋鎖

樂觀鎖

所謂的樂觀,實際上是相對于悲觀鎖來說,我們先看一下百度百科中的解釋。

樂觀鎖機(jī)制采取了更加寬松的加鎖機(jī)制。悲觀鎖大多數(shù)情況下依靠數(shù)據(jù)庫的鎖機(jī)制實現(xiàn),以保證操作最大程度的獨占性。但隨之而來的就是數(shù)據(jù)庫 性能的大量開銷, 特別是對長事務(wù)而言,這樣的開銷往往無法承受。相對悲觀鎖而言,樂觀鎖更傾向于開發(fā)運(yùn)用。

上面的內(nèi)容都是樂觀鎖在百度百科中的解釋,我們?nèi)绻胍斫膺@個鎖,是需要我們?nèi)フ乙粋€場景來進(jìn)行解釋的。

我們就從最經(jīng)典的案例“老王取錢”來說,

**圖中有三個存在,分別表示老王,和老王賬戶,還有一個就是版本信息。版本信息默認(rèn)是1,**這時候老王要買點東西,結(jié)果發(fā)現(xiàn)錢不太夠,那就去銀行取點錢去唄,果斷的來了銀行。

然后告訴柜員,取5000塊錢,然后柜員就會從他的賬戶余額里面扣除5000,就是-5000

這時候版本信息是1,但是我們對金額做了修改之后,要把版本信息換成2,因為現(xiàn)在保存的版本信息是1,柜員查看的時候也是1,老王取錢了, 就想著修改成2。

但是,就在這個時候,來事了,老王的媳婦出去買衣服,發(fā)現(xiàn)身上錢不太夠,就打算取點錢,就來了另外一家銀行,這時候老王錢拿到了,但是柜員還沒修改版本信息

就是這樣子的,

這時候告訴柜員要取錢,柜員就回去讀卡了,發(fā)現(xiàn)版本信息是1,

然后就在這時候,老王這頭,柜員打算把這-5000的操作記錄到數(shù)據(jù)庫中,然后把版本信息變成2,這時候校驗數(shù)據(jù)庫中的版本信息還是1,所以, 錄入成功了,就穩(wěn)定的把這個信息改成了2,

這時候就是這樣的

錢也到手了,老王美滋滋的拿錢走了。

然后在老王媳婦這邊的柜員在操作的時候就會出現(xiàn)問題了,之前讀出來的賬戶信息版本是1,但是他要去操作的時候,發(fā)現(xiàn)不對呀,有人修改過呀, 就會出現(xiàn)這種情況。

但是他想去修改的時候人家現(xiàn)在默認(rèn)的是2,這時候他在比對的時候是1和2了,然后就想著在次提交,這時候,操作完成不了,這就太尷尬了

這種情況就是證明不能讓老王媳婦這邊的柜員,拿著一版本的數(shù)據(jù)去吧老王那邊的數(shù)據(jù)覆蓋掉。這種其實就相當(dāng)于是一種樂觀鎖的提現(xiàn)。

上面的圖解就是樂觀鎖,

樂觀鎖,大多是基于數(shù)據(jù)版本( Version )記錄機(jī)制實現(xiàn)。 何謂數(shù)據(jù)版本?即為數(shù)據(jù)增加一個版本標(biāo)識,在基于數(shù)據(jù)庫表的版本解決方案中,一般是通過為數(shù)據(jù)庫表增加一個 “version” 字段來實現(xiàn)。 讀取出數(shù)據(jù)時,將此版本號一同讀出,之后更新時,對此版本號加一。此時,將提交數(shù)據(jù)的版本數(shù)據(jù)與數(shù)據(jù)庫表對應(yīng)記錄的當(dāng)前版本信息進(jìn)行比對, 如果提交的數(shù)據(jù)版本號大于數(shù)據(jù)庫表當(dāng)前版本號,則予以更新,否則認(rèn)為是過期數(shù)據(jù)。

那什么又是悲觀鎖呢?我們接下來在說說什么是悲觀鎖。

悲觀鎖

慣例,先來看看百度百科中的解釋

悲觀鎖,正如其名,具有強(qiáng)烈的獨占和排他特性。

它指的是對數(shù)據(jù)被外界(包括本系統(tǒng)當(dāng)前的其他事務(wù),以及來自外部系統(tǒng)的事務(wù)處理)修改持保守態(tài)度, 因此,在整個數(shù)據(jù)處理過程中,將數(shù)據(jù)處于鎖定狀態(tài)。悲觀鎖的實現(xiàn),往往依靠數(shù)據(jù)庫提供的鎖機(jī)制(也只有數(shù)據(jù)庫層提供的鎖機(jī)制才能真正保證數(shù)據(jù)訪問的排他性, 否則,即使在本系統(tǒng)中實現(xiàn)了加鎖機(jī)制,也無法保證外部系統(tǒng)不會修改數(shù)據(jù))。

因為悲觀鎖總是假設(shè)最壞的情況,每次去拿數(shù)據(jù)的時候都認(rèn)為別人會修改,所以每次在拿數(shù)據(jù)的時候都會上鎖,這樣別人想拿這個數(shù)據(jù)就會阻塞直到它拿到鎖。

案例來襲:“工資的那點事”

這天老王開工資了,工資已經(jīng)到賬了,這時候老王沒開短信提醒,得去看看錢到還是沒到?

然后就告訴柜員,幫我查查卡里有多少錢?

正在柜員查錢的時候,老王媳婦又來取錢了,上次買的衣服不好看,再買點,錢不夠就來銀行了。

這時候老王正在查錢,而悲觀鎖的意思就是我在讀的時候,我是鎖著的你是看不到的,可以這么理解。

這時候老王媳婦就處于等待的狀態(tài),這個樣子就是相當(dāng)于悲觀鎖。

因為悲觀鎖就是當(dāng)我們?nèi)カ@取數(shù)據(jù)的時候,不論我們有沒有打算去修改,悲觀鎖都會認(rèn)為我們一定會去修改這個數(shù)據(jù),所以 他會把這個數(shù)據(jù)直接鎖死,其他的人想操作操作,那你就阻塞,直到輪到你獲取鎖為止。

悲觀鎖和樂觀鎖的區(qū)別也就在這里。

樂觀鎖 總是認(rèn)為不會產(chǎn)生并發(fā)問題,每次去取數(shù)據(jù)的時候總認(rèn)為不會有其他線程對數(shù)據(jù)進(jìn)行修改,因此不會上鎖,但是在更新時會判斷其他線程在這之前有沒有對數(shù)據(jù)進(jìn)行修改,一般會使用版本號機(jī)制或CAS操作實現(xiàn)。

悲觀鎖總是假設(shè)最壞的情況,每次取數(shù)據(jù)時都認(rèn)為其他線程會修改,所以都會加鎖(讀鎖、寫鎖、行鎖等),當(dāng)其他線程想要訪問數(shù)據(jù)時,都需要阻塞掛起

關(guān)于樂觀鎖和悲觀鎖,你了解了么?


操作實現(xiàn)。**

悲觀鎖總是假設(shè)最壞的情況,每次取數(shù)據(jù)時都認(rèn)為其他線程會修改,所以都會加鎖(讀鎖、寫鎖、行鎖等),當(dāng)其他線程想要訪問數(shù)據(jù)時,都需要阻塞掛起

關(guān)于樂觀鎖和悲觀鎖,你了解了么?


真誠地邀請您加入我們的大家庭,在這里不僅有技術(shù)知識分享,還有博主們之間的互幫互助.還不定期發(fā)紅包,每月更有抽獎環(huán)節(jié),游戲機(jī)和實體書相贈(包郵),讓我們抱團(tuán)取暖,抱團(tuán)內(nèi)卷.打造美好C站.期待您的加入.

總結(jié)

以上是生活随笔為你收集整理的面试中的最常被问到的两种锁的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。