1、 死鎖四個條件:
mutual exclusion 互斥條件(資源不能共享,只能由乙個程序享用);
hold and wait 持有並等待(程序已經擁有者某個資源,在等待另外乙個資源);
no preemptive 非搶占式資源(已經分配的資源不能從相應的程序中搶奪出來);
circuit wait 系統中的若干程序組成環路(環路中每個程序都在等待相鄰程序正占用的資源)。
2、鎖的分類:
兩種型別的鎖: locks
共享的(s) 鎖允許乙個事務去讀一行tuple。
獨佔的鎖(x) 允許乙個事務更新或刪除一行。
表鎖定,頁鎖定,行鎖定?
看看mysql 使用的是什麼儲存引擎,以區分對鎖定的支援:show table status from database_name 。ok ,是innodb ,它實現標準行級鎖定。
鎖的有效期決定於transaction 或者for update 這類語句在何時結束或者roll back 。
如果有select * from table for update 此類語句,那麼就是表鎖定。
如果有select * from table where id between 1 and 10000 for update 此類語句,那麼就是頁級鎖定。
如果有select * from table where id= 1 for update 此類語句,那麼就是行級鎖定。
3、事務transaction
四個基本條件acid
原子性atomicity, 原子性屬性用於標識事務是否完全地完成,乙個事務的任何更新要在系統上完全完成,如果由於某種原因出錯,事務不能完成它的全部任務,系統將返回到事務開始前的狀態。
一致性consistency, 當許多使用者同時使用和修改同樣的資料時,事務必須保持其資料的完整性和一致性。
隔離性isolation, 隔離性問題引發了事務的可序列化問題。隔離性不僅僅保證多個事務不能同時修改相同資料,而且能夠保證事務操作產生的變化直到變化被提交或終止時才能對另乙個事務可見,併發的事務彼此之間毫無影響。(database書上寫道:在乙個有多個事務併發執行的資料庫系統中,如果對共享資料的更新不加以控制,事務就可能看到由別的事務的更新引起的中間狀態的不一致,這種情況會導致對資料庫中儲存的資料的錯誤更新。所以資料庫系統必須提供隔離機制以保證事務不受其他併發執行的事務影響,這個特性叫隔離性。)
永續性durability, 永續性意味著一旦事務執行成功,在系統中產生的所有變化將是永久的。許開發者認為不管系統以後發生了什麼變化,完成的事務是系統永久的部分。(database書上寫到:一旦事務成功執行,其影響必須儲存在資料庫中。乙個系統故障不應該導致資料庫忽略完成的事務,這個特性叫做永續性)
dbms主要包括四部分:
recovery_management 負責 automicity;
concurrency_control 負責 isolation;
recovery_management 負責 durablity.
零散知識收集
success在介面com.opensymphony.xwork2.action中定義,另外同時定義的還有error,input,login,none。值得一提的是struts 2.0中的result不僅僅是struts 1.x中forward的別名,它可以實現除forward外的很激動人心的功能,...
C 零散知識
全域性變數的初始化時機 c 是在編譯期初始化,c 是在程式執行時,main 函式之前初始化.不使用中間變數實現 strlen int mystrlen const char str c 語言函式引數入棧順序為從右至左。具體原因為 c 方式引數入棧順序 從右至左 的好處就是可以動態變化引數個數。通過棧...
Python 零散知識
1.set 集合 2.格式化字串時 可以使用 元組 eg info zhangsan 18 print s 年齡是 d info 3.zip的 使用方法 a 1,2,3 b 4,5,6 c 4,5,6,7,8 zipped zip a,b 打包為元組的列表 1,4 2,5 3,6 zip a,c 元...