快取是在web開發中經常用到的,將程式經常使用到或呼叫到的物件存在記憶體中,或者是耗時較長但又不具有實時性的查詢資料放入記憶體中,在一定程度上可以提高效能和效率。下面我實現了乙個簡單的快取,步驟如下。
public
class
entitycache
public object getdatas
()
public
void
setdatas
(object datas)
public
long
gettimeout
()
public
void
settimeout
(long timeout)
public
long
getlastrefeshtime
()
public
void
setlastrefeshtime
(long lastrefeshtime)
}
public
inte***ce
icachemanager
public
class
cachemanagerimpl
implements
icachemanager
/*** 存入快取
* @param key
* @param cache
*/public
void
putcache
(string key, object datas, long timeout)
/*** 獲取對應快取
* @param key
* @return
*/public entitycache getcachebykey
(string key)
return
null;
}/**
* 獲取對應快取
* @param key
* @return
*/public object getcachedatabykey
(string key)
return
null;
}/**
* 獲取所有快取
* @param key
* @return
*/public mapgetcacheall
()
/*** 判斷是否在快取中
* @param key
* @return
*/public
boolean
iscontains
(string key)
/*** 清除所有快取
*/public
void
clearall
()
/*** 清除對應快取
* @param key
*/public
void
clearbykey
(string key)
}/**
* 快取是否超時失效
* @param key
* @return
*/public
boolean
istimeout
(string key)
entitycache cache = caches.get(key);
long timeout = cache.gettimeout();
long lastrefreshtime = cache.getlastrefeshtime();
if (timeout ==
0 || system.currenttimemillis() - lastrefreshtime >= timeout)
return
false;
}/**
* 獲取所有key
* @return
*/public setgetallkeys
()
}
public
class
cachelistener
public
void
startlisten
() } }
} }.start();
}
}
public
class
testcache
catch (interruptedexception e)
logger.info(
"test:" + cachemanagerimpl.getcachebykey(
"test"));
logger.info(
"mytest:" + cachemanagerimpl.getcachebykey(
"mytest"));
}/**
* 測試執行緒安全
*/@test
public
void
testthredsafe()
else }}
});}
exec.shutdown();
try
catch (interruptedexception e1)
logger.info(cachemanagerimpl.getcachedatabykey(key).tostring());}}
2017-4-17 10:33:51 io.github.brightloong.cache.testcache testcachemanager
資訊:
test:
test
2017-4-17 10:33:51 io.github.brightloong.cache.testcache testcachemanager
資訊: mytest:mytest
2017-4-17 10:34:01 io.github.brightloong.cache.cachelistener
$1 run
資訊:
test快取被清除
2017-4-17 10:34:06 io.github.brightloong.cache.cachelistener
$1 run
資訊: mytest快取被清除
2017-4-17 10:34:11 io.github.brightloong.cache.testcache testcachemanager
資訊:
test:null
2017-4-17 10:34:11 io.github.brightloong.cache.testcache testcachemanager
資訊: mytest:null
2017
-4-17 10
:35:36io
.github
.brightloong
.cache
.testcache
testthredsafe
資訊: 96
if (!cachemanagerimpl.iscontains(key))
Java實現乙個簡單的棧
棧我們可以理解為乙個箱子,先放進去的東西在最下面,所以是乙個先進後出的原則。下面我們看看乙個簡單的demo。package com.tu.test.stack public class node else else node node current current是我們要出棧的節點 current...
乙個簡單的加密(java語言實現)
加密,從大的方向來講分為兩類,即隱文和替換。隱文 就是將密碼隱藏起來,讓人不能輕易發現,比如 中國的字謎便是經典的隱文術,將密文隱藏於一句看上去有點不知所謂的文字中。替換從字面意思便可知道,就是將密文 替換成其他的約定的字元,莫爾斯密碼是典型的替換密碼,將字母用 和 代替。我要講的加密只用了隱文,加...
java學習之 實現乙個簡單的ArrayList
package thread1 實現乙個簡單的arraylist title uminton public class arraylist 有引數構造,建立容器,設定陣列大小 param arraycapacity public arraylist integer arraycapacity arr...