說明:
構建乙個本地快取,快取的物件是使用者id以及部分使用者的資訊。
當從快取中獲取某個使用者資料時,如果發現該使用者資料上次更新時間超過30分鐘,則需要更新一次該快取。
1.需考慮多執行緒訪問的情況。
2.請不要使用第三方類庫實現。
3.可以新增適當日誌。
4.可以有適當的偽**。
補充:userinfo結構
public class userinfo
完成下面的**
//: todo 可自行定義需要的變數
/*** 初始化使用者資訊快取
*/public void inituserinfocache()
/*** 根據id從快取中獲取使用者資訊
*/ public userinfo getuserinfofromcachebyid(string id)
/*** 根據id更新快取使用者資訊
*/ public void updateuserinfocache(string id)
//使用者資訊快取
private static mapusercachemap;
//更新時間快取
private static maplastupdatetimemap;
//過期時間30分鐘
private static final long cache_time= 30*60*1000l;
/*** 初始化使用者資訊快取
*/public void inituserinfocache()
//add log
system.out.println("inituserinfocache start");
mapusercachemaptemp = new concurrenthashmap<>();
maplastupdatetimemaptemp= new concurrenthashmap<>();
while(true)
//add log
system.out.println("batch query userinfolist to cache,size is :"+userinfolist.size());
for(userinfo userinfo : userinfolist )
}//add log
system.out.println("inituserinfocache end");
usercachemap = usercachemaptemp;
lastupdatetimemap = lastupdatetimemaptemp;
} }}
/*** 根據id從快取中獲取使用者資訊
*/ public userinfo getuserinfofromcachebyid(string id)
//初始化快取
inituserinfocache();
long lastupdatetime = lastupdatetimemap.get(id);
userinfo userinfo = usercachemap.get(id);
if((system.currenttimemillis-lastupdatetime)>cache_time)
}userinfo = usercachemap.get(id);
}returun userinfo;
}/**
* 根據id更新快取使用者資訊
*/ public void updateuserinfocache(string id)
一道筆試題
看到一道筆試題,跟自己想的有點出入,就跑了下,看了看原因。我稍微改了下 include int main int argc,char argv 輸出結果 c 5 d 245 press any key to continue vc6.0 debug下的彙編 5 unsigned char a 0xa...
一道筆試題
上次去筆試的時候,有一道題,怎麼也沒做出來,當時也是很緊張,有些思路,但卻沒有做出來。有四個人要過乙個獨木橋,因為天比較黑,而且橋只能允許兩個人同時通過,並且他們只有乙個手電筒。四個人單獨同時橋的時間是1,2,5,8分鐘。問最短的時間是多少?當時我的答案 1和8,1回來,1 5,1回來,1 2 8 ...
一道筆試題
題目是這樣的 判斷乙個小於1000的正整數是否為素數。素數的定義就不說了,以下直接分析解法,畢竟是在寫與專業相關的東西,是給本專業的人看得,所以看的人應該有點基礎吧?求素數的問題是乙個數學上的難題,這是常識,但是本題目限制了最大範圍是在1000以內,所以就可以嘗試找出乙個足夠好的解了。首先給出乙個最...