Question

Utilisation de corrélation cas:

read input 

if (correlation-id is already generated for this input) 
{ 
   lookup the correlation-id from the cache; 
   return correlation-id; 
} 

else 
{ 
   generate the correlation-id; 
   cache it; 
   return correlation-id; 
} 

Contraintes: - Le nombre d'enregistrements d'entrée peut aller jusqu'à 500K ne veut pas donc utiliser de solides références. - Il ne veut pas générer un sens hash à partir de maintenant (je sais que si nous utiliser hachage à sens unique alors il n'y a pas besoin de cache)

Quelqu'un peut-il me dire comment utiliser ComputingMap pour cela. Je demande ce parce qu'il ya une note dans la javadoc qui dit « il utilise une identité l'égalité des clés faibles / MOU ».

Était-ce utile?

La solution

Avec Google Goyave / classes de collection et des touches programmables ou faibles ou des valeurs clés doit être solide références pour la carte à utiliser equals () et non == pour rechercher les valeurs mises en cache. Si vous avez des clés faibles / MOU alors la recherche est effectuée avec l'identité de sorte que vous aurez toujours un manque de cache. Donc, si vous voulez que le garbage collector aux éléments de GC de votre cache, vous devrez rendre les valeurs doux ou faible.

Je comprends Google ajoutera une fonctionnalité Equivalence à l'avenir pour que vous puissiez dire si vous voulez equals () ou == et ne pas avoir ce choix fait pour vous en choisissant des références fortes, faibles ou mous.

Étant donné que votre objet Tuple implémente equals () et hashCode (), vous faites juste

new MapMaker()
    .softValues()
    .makeComputingMap(new Function<Tuple,String>() {
                                         public String apply(Tuple t) {
                                             // generate the correlation-id
                                         }
                                    });
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top