上一篇中整理了一些面試中常被問到的技術問題,其中我覺得兩個比較重要的就屬死結(deadlock)與DB Transaction了。
首先是死結。
來看一下維基百科上的定義-
當兩個以上的運算單元,雙方都在等待對方停止執行,以取得系統資源,但是沒有一方提前退出時,就稱為死結。在多工作業系統中,作業系統為了協調不同行程,能否取得系統資源時,為了讓系統運作,必須要解決這個問題。
而達成死結,需有以下四個條件:
死結只有在四個條件同時滿足時發生,預防死結必須至少破壞其中一項。
以下是我畫的一張圖,相信可以幫助你更了解死結。
而第二個觀念為DB transaction:
Transaction顧名思義,他把資料庫的每一筆query或動作當成是一筆筆交易一樣,若前一個交易還沒完成,下一筆交易就不能執行,而當前一筆交易出錯,下一筆交易同樣不會執行,且出錯同時,會rollback回最初的狀態。
Hi, I am Grant.
個人部落格 - https://grantliblog.wordpress.com/
個人網站 - https://grantli-website.netlify.app/#/mainpage
我的寫作專題 - https://vocus.cc/user/5af2e9b5fd89780001822db4#