上一節我描述了粗粒度鎖,並且描述了它的缺點。這一節我將使用細粒度鎖來處理上一節中粗粒度鎖所帶來的問題。
我們可以為集合中的每個資源提供乙個鎖,這樣可以避免每次的操作都會鎖住所有的資源,其次我們為每乙個鎖設定乙個超時時間,避免死鎖情況的出現。
下面看一下**
/**
* 鎖定資料
*@param key
*@param field
*@return
*/public boolean lock(string key,string field,timeunit timeunit,long time,int num)
long ttltime = redistemplate.getexpire(lockutils.ttllockkey(key,field),timeunit);
if(-1 == ttltime)
}while(flag++ < num);
return
false;
}
/**
* 釋放鎖
*@param key
*@param field
*@return
*/public
void
unlock(string key,string field)
這裡我們只是討論了對於其中一種資源的鎖,如果我們一次要操作多個資源呢?如果依次去獲取,那麼會導致死鎖的發生。有興趣的小夥伴可以思考一下如何同時處理集合中的多個資源。當然最簡單的辦法是採用粗粒度鎖,每次都鎖住整個集合 細粒度審計
細粒度審計 fga 通過 oracle9i 引入 可以理解為 基於策略的審計 與標準的審計功能相反,fga 可用於指定生成審計記錄必需的條件 fga 策略通過使用 dbms fga 程式包以程式設計方式繫結到物件 表 檢視 類似於用於通過 vpd dbms rls 進行訪問控制的程式包,它允許您建立...
細粒度許可權管理
表1 許可權對映表 表名 tbl res map 許可權對映 類別 表 欄位名 字段別名 資料型別 主鍵 允許空 顯示 預設值 說明 pid 許可權編碼 varchar 50 y n n service view 資源 varchar 50 y n n explain 說明 varchar 50 y...
oracle細粒度審計
建立審計表空間 tablespace created.connect as sysdba sql alter table aud move tablespace audittbs table altered.sql alter table audit move tablespace audittbs...