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

  • Feel The Electricity!

    Feel The Ele

    20 ŞUBAT 2010
  • Flash CS6 Video Tutorials for Beginners (Actionscript 3 Gaming)

    Flash CS6 Vi

    14 EYLÜL 2012
  • Truc Minh

    Truc Minh

    23 Ocak 2011