Java實現乙個簡單的快取

2021-08-21 04:15:29 字數 3822 閱讀 4332

快取是在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...