自己寫的一個cache小組件

          Cache作為提高性能的有效手段可以說是無處不在的。CPU有一級緩存,二級緩存;數(shù)據(jù)庫有自己的數(shù)據(jù)緩存;內(nèi)存實質(zhì)上就是硬盤的緩存。。。。。。而程序中的緩存也能夠有效的減少與存儲設(shè)備的交互,增加應(yīng)用的并發(fā)能力。

          我通過在實際項目中自行設(shè)計和使用cache,逐漸提高了系統(tǒng)的并發(fā)能力,但同時也感覺到了很多的不足:

          1.       因為是在原有系統(tǒng)基礎(chǔ)上優(yōu)化,cache的處理沒有統(tǒng)一的規(guī)劃,而是頭痛醫(yī)頭,腳痛醫(yī)腳。cache分散在系統(tǒng)各個模塊,很難想起哪些模塊使用了cache

          2.       cache的實現(xiàn)各種各樣,有的是單例、有的是static對象,而cache對象與數(shù)據(jù)庫的交互也是直接硬編碼在原有系統(tǒng)中,難于維護(hù)

          3.       cache的參數(shù)如刷新間隔。。。。。。未使用配置文件,而是直接定義在cache的類文件中,對配置的更改就需要更新整個類,進(jìn)而影響系統(tǒng)的運行

          4.       缺少對cache的監(jiān)控機(jī)制和log機(jī)制,出現(xiàn)問題很難去跟蹤和解決。

          經(jīng)過一段時間具體項目的洗禮,對java也有了進(jìn)一步的認(rèn)識,我也可以有能力來解決一直困擾心中的cache的這些問題了。想法很簡單,就是能夠通過單一的配置文件,對系統(tǒng)中的所有cache進(jìn)行統(tǒng)一的管理,各個cache所在的模塊,和cache的配置參數(shù),都能夠一目了然。而對配置文件的重載功能也是我要考慮的問題,希望對某些cache的配置的更改能夠?qū)ζ渌?/SPAN>cache無影響,同時這些更改也能在不影響應(yīng)用運行狀態(tài)的情況下進(jìn)行。當(dāng)然既然是統(tǒng)一管理,就需要做到接口的統(tǒng)一。我定義了CacheCachePersistence兩個接口,然后不同的cache可以提供不同的實現(xiàn),實現(xiàn)類需要在配置文件中指定,同時系統(tǒng)提供默認(rèn)的實現(xiàn),以滿足簡單的應(yīng)用。想了就要開始做,我也沒想一開始就做出象OSCacheJbossCache那樣通用的cache來,也許經(jīng)過不斷的交流,不斷的完善最終可以做到。經(jīng)過簡單的設(shè)計,我就開始寫代碼了,就我一個人,也算是XP編程了,呵呵!cache的配置參數(shù),我根據(jù)項目經(jīng)驗想到了幾個,可能還可以有,但目前我不知道,需要在更多的項目應(yīng)用中去發(fā)現(xiàn),具體可以看我的包中的cache.xml文件,有對配置項的具體說明。

          從開始開發(fā)到最后寫完測試類,也就不到一個星期的時間(上班的空余時間和加班寫),當(dāng)中也進(jìn)行了幾次重構(gòu)。總的來說,還算滿意,這也算俺的第一個開源項目啊,呵呵!

          具體如何使用,很簡單,你有興趣可以實現(xiàn)Cache接口,我內(nèi)置了基于HashMapCache,應(yīng)該能滿足大部分應(yīng)用的需要。CachePersistence就是你的對象與存儲設(shè)備交互的實現(xiàn)了,你一般需要實現(xiàn)這一接口,然后配置在配置文件中。然后通過CacheFactory得到Cache,通過Cache接口使用對象。對Cache的操作你可以當(dāng)成一個Map來使用,由容器來自動處理何時與存儲設(shè)備的交互,你只要配置好就ok了。另外可以參考src中的test包,里面是我對Cache的功能測試代碼,也能作為使用cache的實例的。

          說了這么多,大家如果有興趣,可下載我的全部文件,里面包括jarsrclibjavadoc還有配置文件,點擊這里http://www.aygfsteel.com/Files/pesome/pcache.zip。更歡迎大家在實際的項目中使用我的cache,如果有任何問題都可以跟我聯(lián)系,mailto:pesome@163.com。謝謝!

          posted on 2005-09-06 15:38 pesome 閱讀(2230) 評論(6)  編輯  收藏 所屬分類: 開源軟件

          評論

          # re: 自己寫的一個cache小組件 2005-09-06 17:48 margiex

          Resource not found  回復(fù)  更多評論   

          # re: 自己寫的一個cache小組件 2005-09-07 09:19 pesome

          鏈接開始有點錯誤,我已經(jīng)更改!謝謝!  回復(fù)  更多評論   

          # re: 自己寫的一個cache小組件 2005-09-08 11:13 Xuefeng

          好像你的算法是整個Cache Pool都全部刷新,最好根據(jù)LRU算法

          另外Week引用好像可以適用于Cache  回復(fù)  更多評論   

          # re: 自己寫的一個cache小組件 2005-09-08 12:27 pesome

          呵呵,如果配置文件更改,我會刷新相應(yīng)的cache。你所說的LRU算法應(yīng)該是cache有大小限制,在已滿狀態(tài)下增加新的對象的替換算法,這個我還沒實現(xiàn),呵呵!目前沒有大小限制。“Week引用好像可以適用于Cache ”,有點不明白,能說的更詳細(xì)些嗎?謝謝  回復(fù)  更多評論   

          # re: 自己寫的一個cache小組件 2005-09-12 15:26 Xuefeng

          cache的實現(xiàn)是很復(fù)雜的,如果不考慮大小限制肯定會內(nèi)存溢出,定期刷新的cache還好一點,要實現(xiàn)讀寫同步的通用cache基本上特別困難,現(xiàn)在比較好的cache框架就是oscache  回復(fù)  更多評論   

          # re: 自己寫的一個cache小組件 2009-12-28 16:29 ll

          頂  回復(fù)  更多評論   

          <2009年12月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導(dǎo)航

          統(tǒng)計

          公告

          主要記錄作者在學(xué)習(xí)java中的每一步足跡。除非特別說明,所有文章均為本blog作者原創(chuàng),如需轉(zhuǎn)載請注明出處和原作者,如用于商業(yè)目的,需跟作者本人聯(lián)系。
          歡迎大家訪問:

          常用鏈接

          留言簿(16)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          收藏夾

          java技術(shù)

          人間百態(tài)

          朋友們的blog

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 华蓥市| 高雄市| 周宁县| 疏附县| 临漳县| 建水县| 曲沃县| 伊春市| 越西县| 康平县| 罗山县| 长寿区| 曲沃县| 汉川市| 那曲县| 蒙自县| 玉林市| 宝鸡市| 凭祥市| 衡山县| 会昌县| 镇江市| 调兵山市| 北川| 汉阴县| 连城县| 临潭县| 三台县| 通河县| 通道| 邵阳市| 太原市| 夏邑县| 芮城县| 胶南市| 炉霍县| 固安县| 龙游县| 左贡县| 巍山| 崇仁县|