tp5以上直接複製貼上即可, 需要修改命名空間
快速使用 (new redislock ())->lock($key, $expire = 5, $num = 0) 返回true代表加鎖成功
,可以執行後面**,否則失敗; 支援重試$num次, 加鎖成功後$expire秒後鎖自動釋放, 防止死鎖 ;
(new redislock ())->unlock($key) 解鎖;
<?php
namespace 你的命名空間;
use think\cache;
class redislock
/*** 獲取鎖
* @param string $key 鎖標識
* @param int $expire 鎖過期時間
* @param int $num 重試次數
* @return boolean
*/public function lock($key, $expire = 5, $num = 0)次
for($i = 0; $i < $num; $i++)
sleep(1);}}
// 不能獲取鎖
if(!$is_lock)
}return $is_lock? true : false;
}/**
* 釋放鎖
* @param string $key 鎖標識
* @return boolean
*/public function unlock($key)
}
jquery原始碼 noConflict實現
實現方式很簡單 在初始化的時候,記錄當前全域性中jquery和 兩個變數的的值,用 jquery和 分別存放,呼叫noconflict方法時,使用 jquery和 分別恢復對應的值,並且返回jquery物件。初始化jquery物件時,呼叫邏輯如下 1.記錄全域性中的jquery和 變數 此時這兩個變...
ReetrantLock鎖原始碼解析
非 公平鎖加鎖主要方法解析 protected final boolean tryacquire int acquires else if current getexclusiveownerthread 判斷是否是可重入的 加鎖失敗 return false private node addwait...
LinkedHashMap原始碼分析及實現LRU演算法
ps 要先了解hashmap的實現原理hashmap原始碼分析 可以看到linkedhashmap繼承了hashmap,其實際是在hashmap基礎上,把資料節點連成乙個雙向鍊錶,遍歷的時候按鍊錶順序遍歷。小總結預設的linkedhashmap 的遍歷會按照插入的順序遍歷出來,hashmap則不保證...