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

  • Dopelives

    Dopelives

    30 Temmuz 2009
  • gsipek

    gsipek

    20 Temmuz 2007
  • spectragirlz16's channel

    spectragirlz

    22 Ocak 2012