国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

用.NET創建定時緩存

2024-07-10 13:07:35
字體:
來源:轉載
供稿:網友

zdnet china|2002-4-24
在先前的文章里,我詳細討論了.net緩存的簡單用法。不過那點用途還只能是這一話題的“開胃酒”。現在,我們更進一步,在那篇文章所開發的緩存基礎上添加條目在緩存中的過期功能。

清單a的內容就是上次我們開發的有關代碼。

新緩存及其改進
為了創建定時緩存,我們首先得確定某個對象是否已經到期了。出于這篇文章討論范圍,我假設用戶能夠確定準確的對象超期日期。這樣,在將來還可以再改進為允許在緩存中存放的對象自己確定它們的過期日期。

我們首先修改insertcachedobject方法以支持緩存中對象的過期功能。當對象插入緩存時,該方法會給用戶提供一個對象過期日期。這個日期參數被稱為dtexpiration。insertcachedobject方法則存儲經由該參數傳遞的過期日期。完成這一目標有若干方法。例如,我們可以創建一個封裝對象,其中包含了日期和對象屬性。如果這樣做的話,insertcachedobject方法就會創建封裝對象的實例并提供給它兩個屬性。我們選擇相比更簡單些的第二個方案:創建和聲明第2個哈希散列表,并且指定它同第一個哈希散列表并行運行。這第二個哈希散列表叫做htexpiration。

對 insertcachedobject 方法的修改請見清單b。

現在,我們需要想辦法發現過期的條目。在通過getcachedobject方法發出請求時,簡單而且也是最偷懶的辦法是檢查每個緩沖對象。因為直到發出處理請求才調出過期對象,所以這是一種較差的算法。而且很有可能在時間上具有一定的不確定性。雖然這些到期對象駐留在緩存里,可是它們消費著珍貴的內存資源,這對應用程序的性能具有極其不利的影響。

不用這種偷懶的辦法,我們創建一個后臺線程反復檢查htexpiration哈希表。

于是我們創建一個名叫thereaperthread的類,這個類有一個方法負責建立無限循環。該類還被聲明為內部類,因為它只用在customcache對象的上下文環境內。該類的全部代碼請見清單c。

你得對清單c中的shared constructor注意了,它負責創建新的線程并啟動該線程。我們接下來創建測試程序保證緩存運行正常。測試程序見清單d,該程序是一個控制臺程序,當然也可以用.net framework 把以上程序當作項目來創建。


小結
定時緩存就這樣完全實現了。雖然在功能上還比較簡單,而且不能通知緩存的用戶條目在什么時候到期,也不允許對象確定它們自己的過期算法。不過在這種簡單緩存的基礎上,將來我們還可以討論開發新的功能,比如分派、內存管理等等。

 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 福鼎市| 子洲县| 云和县| 新巴尔虎右旗| 阜康市| 龙泉市| 鄱阳县| 宿迁市| 潮州市| 斗六市| 兴宁市| 隆化县| 元朗区| 农安县| 拉孜县| 车险| 仪征市| 东兰县| 呼玛县| 金阳县| 镇远县| 屯留县| 长兴县| 盐津县| 旬邑县| 珠海市| 枝江市| 安龙县| 车致| 板桥市| 陇南市| 广汉市| 定陶县| 富阳市| 徐州市| 进贤县| 兴宁市| 讷河市| 宁蒗| 罗源县| 乌兰察布市|