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

  • Ampisound

    Ampisound

    12 Kasım 2006
  • DeAdPiXel6667

    DeAdPiXel666

    2 Ocak 2010
  • GenTechPC

    GenTechPC

    1 Temmuz 2007