Simple mise en cache Java bibliothèque ou motif de conception?
J'ai besoin d'accéder fréquemment le résultat d'un calcul fastidieux. Le résultat change rarement, donc je dois recalculer les données de temps en temps, mais c'est ok pour utiliser le obsolète suite pendant un certain temps. Quelle serait la meilleure façon de le faire et s'il y a une bibliothèque existante méthode ou motif de conception?
Je pense à quelque chose comme
private static List myCachedList = null;
...
//refresh list once in 3600 seconds
if (needsRefresh(myCachedList, 3600)) {
//run the calculation
myCachedList = ...
}
//use either updated or previous value from here on
Une mise en œuvre correcte peut ne pas être négligeable, il peut avoir à traiter avec du fil de sécurité, de conditions de course, etc., donc, je préfère utiliser une méthode éprouvée de mise en œuvre de rouler ma propre ici.
OriginalL'auteur nn4l | 2012-10-31
Vous devez vous connecter pour publier un commentaire.
Félicitations pour réaliser que l'écriture de votre propre peut être plus de mal au départ, il s'affiche!
Je voudrais vérifier le Goyave cache solution. La goyave est une preuve de la bibliothèque et les caches sont facilement disponibles et configurables) par l'intermédiaire d'un fluide à l'usine de l'API.
OriginalL'auteur Brian Agnew
Je voudrais prendre un coup d'oeil à Google goyave-bibliothèques. Une grande partie de ce travail a déjà été fait pour vous.
Il y a une section appelée Chronométré Expulsion, qui pourrait être liée à ce que vous souhaitez. https://github.com/google/guava/wiki/CachesExplained#timed-eviction
OriginalL'auteur tjg184
Je dirais pour vous d'utiliser le Design Pattern Proxy
de cette façon, vous pouvez encapsuler la mise en cache de la logique mise en œuvre dans votre classe proxy
theres un endroit frais exemple ici, qui ressemble à s'adapter à vos besoins
http://en.wikipedia.org/wiki/Proxy_pattern
OriginalL'auteur fredcrs
si vous ne souhaitez pas utiliser la troisième partie de la bibliothèque, vous pouvez créer une carte statique qui détient la clé et la valeur. à l'aide de la clé, vous pouvez récupérer les données rapidement.
et écrire des méthodes pour ajouter des valeurs à mettre en cache, obtenir, supprimer.
espère que cette aide
OriginalL'auteur Ramesha.C