SORU
27 EYLÜL 2010, PAZARTESİ


Zaman Java tabanlı dolacak tuşları ile/cache göster

Eğer herhangi bir otomatik olarak belirli bir zaman aşımından sonra girdileri temizler Java Göster veya benzer standart bir veri deposu biliyor musunuz? Tercihen açık kaynak kodlu bir kütüphanede maven ile erişilebilir mi?

İşlevselliği kendim uygulamak ve iyi bir referans uygulaması için işaretçiler için bu konuda tavsiye için, ama istemiyorum yani geçmişte birkaç kez yaptı, yolu biliyorum.

WeakReference anahtarlarımı olmayan staj dizeleri olması muhtemeldir ve Çöp toplayıcı bağımlı olmayan yapılandırılabilir bir zaman aşımı istiyorum çünkü WeakHashMap bir seçenek değil gibi çözümler,.

Ehcache da dış yapılandırma dosyaları lazım çünkü güvenmek istemem bir seçenektir. Kod-sadece bir çözüm arıyorum.

CEVAP
27 EYLÜL 2010, PAZARTESİ


Evet. Google Koleksiyonları, ya da adında olduğu gibi Guava şimdi tam da bunu yapmak bir şey MapMaker çağırdı.

ConcurrentMap<Key, Graph> graphs = new MapMaker()
   .concurrencyLevel(4)
   .softKeys()
   .weakValues()
   .maximumSize(10000)
   .expiration(10, TimeUnit.MINUTES)
   .makeComputingMap(
       new Function<Key, Graph>() {
         public Graph apply(Key key) {
           return createExpensiveGraph(key);
         }
       });

Güncelleme:

Guava 10.0 (28, 2011 Eylül ayında yayınlanan) bu Haritacı yöntemleri çoğu CacheBuilder Yeni lehine kaldırıldı:

Cache<Key, Graph> graphs = CacheBuilder.newBuilder()
    .concurrencyLevel(4)
    .weakKeys()
    .maximumSize(10000)
    .expireAfterWrite(10, TimeUnit.MINUTES)
    .build(
        new CacheLoader<Key, Graph>() {
          public Graph load(Key key) throws AnyException {
            return createExpensiveGraph(key);
          }
        });

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BDGcustoms

    BDGcustoms

    24 NİSAN 2011
  • RaquelGamesBR

    RaquelGamesB

    20 HAZİRAN 2009
  • Viktorija A.

    Viktorija A.

    28 Mart 2009