1. 程式人生 > >三分鐘讓你明白悲觀鎖、樂觀鎖

三分鐘讓你明白悲觀鎖、樂觀鎖

什麼是悲觀鎖?什麼又是樂觀鎖?

顧名思義,就是以悲觀或者樂觀的方式去操作資料。

以悲觀鎖為例:

從來有一個人特別的悲觀,天生的悲觀者,幹什麼都是需要小心翼翼的,吃飯必須先驗驗毒,看看有沒有毒害他。類似於這樣的操作資料方式就是悲觀鎖,總是認為別人會操作他的資料,幹什麼之前為了確保安全,就先把檢查一番(先加鎖),待到我使用完了,我再放開這個。

樂觀鎖:

從來有一個人特別的樂觀,天生的樂觀者,幹什麼都是大大咧咧的,吃飯也不管有沒有毒就吃。類似於這樣的操作資料方式就是樂觀鎖,總是認為別人不會操作他的資料,就去操作資料,在提交的時候,根據固定的資訊去檢查一下,一般就是version.這樣的話,如果發現資訊不對(別人謀害他),就不更新了(去醫院治癒好了)。

樂觀鎖和悲觀鎖兩個沒有絕對的好和不好,只是看適用的情況下把。

如果別人不經常謀害(更新資料不頻繁),就適用樂觀鎖,相反,就是悲觀鎖。

相關推薦

分鐘明白悲觀樂觀

什麼是悲觀鎖?什麼又是樂觀鎖?顧名思義,就是以悲觀或者樂觀的方式去操作資料。以悲觀鎖為例:從來有一個人特別的悲觀,天生的悲觀者,幹什麼都是需要小心翼翼的,吃飯必須先驗驗毒,看看有沒有毒害他。類似於這樣的操作資料方式就是悲觀鎖,總是認為別人會操作他的資料,幹什麼之前為了確保安全

【本人禿頂程式設計師】分鐘明白 Activity工作流(java運用)

←←←←←←←←←←←← 我都禿頂了,還不點關注! 一. 什麼是工作流 以請假為例,現在大多數公司的請假流程是這樣的 員工打電話(或網聊)向上級提出請假申請——上級口頭同意——上級將請假記錄下來——月底將請假記錄上交公司——公司將請假錄入電腦 採用工作流技術的公司的請假流程是

分鐘明白Objective-C的語法(和JavaC++的對比)

很多想開發iOS,或者正在開發iOS的程式設計師以前都做過Java或者C++,當第一次看到Objective-C的程式碼時都會頭疼,Objective-C的程式碼在語法上和Java, C++有著很大的區別,有的同學會感覺像是看天書一樣。不過,語言都是相通的,有很多共性。下面列

10分鐘明白MySQL是如何利用索引的

一、前言 在MySQL中進行SQL優化的時候,經常會在一些情況下,對MySQL能否利用索引有一些迷惑。 譬如: MySQL 在遇到範圍查詢條件的時候就停止匹配了,那麼到底是哪些範圍條件? MySQL 在LIKE進行模糊匹配的時候又是如何利用索引的呢? MySQL 到

分鐘瞭解Scala中的包比Java更加靈活!

  包的作用和定義   同java中的包,Scala中的包主要用於大型工程程式碼的組織同時也解決命名衝突的問 題。Scala中的包與java有著諸多的相似之處,但Scala語言中的包更加靈活。   包定義方式一:   //將程式碼組織到cn.scala.xtw

分鐘徹底瞭解TDDATDDBDD&RBE

在目前比較流行的敏捷開發模式(如極限程式設計、Scrum方法等)中,推崇“測試驅動開發(Test Driven Development,TDD)”——測試在先、編碼在後的開發實踐。TDD有別於以往的“先編碼、後測試”的開發過程,而是在程式設計之前,先寫測試指令碼或設計測試用例

1分鐘明白AOP是什麼及它的好處

    大家應該明白一個道理,所有廣為人用的框架/技術等.基本都是兩個目的:1.軟體開發期(寫程式碼,測試,上線)內,讓開發人員用更少的程式碼完成同樣的功能實現.2.軟體上線後的維護升級器,讓讓開發人員用更少的程式碼完成同樣的功能實現.    記住這兩條,然後我們來看看AOP

3分鐘明白JSON是什麼

摘要 本文是從 Understanding JSON: the 3 minute lesson 這篇文章翻譯而來。看了這篇文章,你就知道為什麼說國外的月亮是圓的了,思維方式不是一個數量級的,它完全把你整個腦海裡面的思緒全部都理了出來,有種讀意識流和散

分鐘明白什麼叫ERP

  一天中午,丈夫在外給家裡打電話:“親愛的老婆,晚上我想帶幾個同事回家吃飯可以嗎?”(訂貨意向)   妻子:“當然可以,來幾個人,幾點來,想吃什麼菜?”   丈夫:“6個人,我們7點左右回來,預備些酒、烤鴨、番茄炒蛋、冷盤、蛋花湯……。你看可嗎?” (商務溝通)   妻子:“沒問題,我會預備好的。” (訂單

Docker世界中的配置管理:5分鐘明白如何在Puppet,Chef, Ansible之間選擇

譯者點評:微服務的運用,小型化團隊(Two-pizza team)理念的倡導使更多的公司採用研製週期(Lead Time)來衡量DevOps團隊的執行效率。在實際專案研發結束後,服務的部署頻率(Deploy Frequency)不僅說明了運維的穩定性,還能折射出

面試官:說說互斥自旋讀寫悲觀樂觀的應用場景

前言 生活中用到的鎖,用途都比較簡單粗暴,上鎖基本是為了防止外人進來、電動車被偷等等。 但生活中也不是沒有 BUG 的,比如加鎖的電動車在「廣西 - 竊·格瓦拉」面前,鎖就是形同虛設,只要他願意,他就可以輕輕鬆鬆地把你電動車給「順走」,不然打工怎麼會是他這輩子不可能的事情呢?牛逼之人,必有牛

MySQL-----(行樂觀悲觀

數據庫操作 重要 讀寫 收購 線程並發 串行化 之前 並發執行 引擎 回顧: ACID:DBMS在寫入或更新資料的過程中,為保證事務正確可靠,具有的四個特性:原子性(不可分割性)、一致性、隔離性(獨立性)、持久性 一個事務:一系列數據庫操作組成的一個完整的邏輯過程 原子性:

Java編程:悲觀樂觀的區別及使用場景

需要 nbsp 獲取數據 寫入 悲觀鎖 場景 發生 的區別 bsp 定義: 悲觀鎖(Pessimistic Lock): 每次獲取數據的時候,都會擔心數據被修改,所以每次獲取數據的時候都會進行加鎖,確保在自己使用的過程中數據不會被別人修改,使用完成後進行數據解鎖。由於數據進

悲觀樂觀行級表級 悲觀樂觀行級表級

轉載自:http://www.cnblogs.com/xhybk/p/9278684.html 悲觀鎖、樂觀鎖、行級鎖、表級鎖   更新丟失:新改的覆蓋先改的,開發中有三種方法解決 1、將事務級別提高到最高級別TRANSACT

悲觀樂觀行級表級

樂觀 主鍵 gpo gravity money fcm 級別 ble The 悲觀鎖、樂觀鎖、行級鎖、表級鎖 更新丟失:新改的覆蓋先改的,開發中有三種方法解決 1、將事務級別提高到最高級別TRANSACTION_SERIALIZABLE 操作雙方都要提升級別;

Java:悲觀樂觀的區別及使用場景

定義: 悲觀鎖(Pessimistic Lock): 每次獲取資料的時候,都會擔心資料被修改,所以每次獲取資料的時候都會進行加鎖,確保在自己使用的過程中資料不會被別人修改,使用完成後進行資料解鎖。由於資料進行加鎖,期間對該資料進行讀寫的其他執行緒都會進行等待。 樂觀鎖(O

python之Django的入門08------事務管理悲觀樂觀

我們接著上一篇文章的基礎上,來繼續瞭解進一步的Django框架 一.事務管理 在實際專案裡,事務管理是一個很重要的內容。 他可以保證一系列類操作要不全部成功要不全部失敗。也可以保證當多個應用程式在併發訪問資料庫時,可以在這些應用程式之間提供一個隔離方法,以防止

MySQL中詳解(行悲觀樂觀等)

原文地址:http://blog.csdn.net/mysteryhaohao/article/details/51669741 鎖,在現實生活中是為我們想要隱藏於外界所使用的一種工具。在計算機中,是協調多個程序或執行緒併發訪問某一資源的一種機制。在資料庫當中,除了傳統

機制--事務樂觀悲觀

檢視mysql隔離級別: select @@tx_isolation; show variables like '%tx_isolation%'; 事務的四種隔離級別 set session transaction isolation level 隔離級別 1.

018.多執行緒-悲觀樂觀重入讀寫自旋CAS無機制

悲觀鎖(Pessimistic Lock) 顧名思義,就是很悲觀。每次去拿資料的時候都認為別人會修改,所以都會上鎖。這樣別人想拿這個資料就會阻塞(block)直到它拿到鎖。傳統的關係型資料庫裡面就用到了很多這種鎖機制。比如:行鎖,表鎖,讀鎖,寫鎖等,都是在做操作之前先上鎖。