對於任何有興趣的人:我已經實現了我正在尋找的行爲的代碼並在google-code上開源。在這裏得到它! pojo-mvcc在Java中構建「孤立」和「自動更新」緩存(java.util.List)
-
嗨,大家好,
我想寫其中含有大量從長壽的緩存中創建短命高速緩存的框架。這些短暫的緩存需要能夠返回它們的entier內容,這是來自原始長生命的緩存的克隆。
實際上,我正在嘗試構建的是短暫高速緩存的事務隔離級別。用戶應該能夠修改短暫高速緩存的內容,但不應該改變長生命期高速緩存(還有一種情況是應根據緩存類型推送更改)。
我會盡我所能,試圖解釋:
主緩存包含:[A,B,C,d,E,F]與國家創建 臨時緩存[A,B,C, D,E,F]
1)臨時緩存添加項目G:[A,B,C,D,E,F] 2)臨時緩存刪除項目B:[A,C,D,E ,F]
主緩存包含:[A,B,C,d,E,F]
3)主高速緩衝存儲器添加項[X,Y,Z]:[A,B,C ,D,E,F,X,Y,Z]
臨時緩存包含:A,C,d,E,F]
事情變得更難當項值可能發生變化,不應該總是被更新(所以我甚至不能共享底層對象實例,我需要使用克隆)。
我已經實現了使用ArrayList上的標準Collection構造函數創建List的新實例的簡單方法,但是當您獲得大約200,000個項目時,系統只會耗盡內存。我知道200,000的值是迭代過度的,但我試圖強調我的代碼。
我以爲它可能能夠以某種方式「代理」列表,所以臨時緩存使用主緩存,並存儲它的所有變化(實際上是變化的記憶),然而這很快變成當您想要迭代臨時緩存或者檢索特定索引處的項目時是一場噩夢。此外,我希望對列表內容進行一些修改(取決於臨時緩存的類型,不管它是否爲「自動更新」),並且我徹底擺脫了我的深度。
任何指向技術或數據結構的指針或只是一般概念來嘗試和研究將不勝感激。
乾杯,
Aidos
您是否限制可以緩存的類型?最好的是,以某種方式確保,你只能得到不可變的緩存條目,這將使一切變得更容易。 – Dominik 2010-04-10 16:33:10