/* * see: http://code.google.com/p/guava-libraries/ * grails caching idea: http://refactr.com/blog/2012/05/grails-in-memory-cache-using-googles-guava-library/ */ @Grapes([ @Grab("com.google.guava:guava:14.0.1") ]) import java.util.concurrent.TimeUnit import com.google.common.primitives.Ints import com.google.common.collect.Iterables import com.google.common.collect.ImmutableList import com.google.common.collect.ImmutableMap import com.google.common.hash.Hashing import com.google.common.cache.Cache import com.google.common.cache.CacheBuilder import com.google.common.cache.CacheLoader List list = [1,2,3,3] assert Iterables.frequency(list, 2) == 1 assert Iterables.frequency(list, 3) == 2 String temp = "test" md5 = Hashing.md5() String hash = md5.newHasher().putBytes(temp as byte[]).hash() assert hash != temp assert hash == "098f6bcd4621d373cade4e832627b4f6" ImmutableList of = ImmutableList.of("a", "b", "c", "d"); // Same one for map ImmutableMap map = ImmutableMap.of("key1", "value1", "key2", "value2"); //list of ints List theList = Ints.asList(1, 2, 3, 4, 522, 5, 6); //see: https://code.google.com/p/guava-libraries/wiki/CachesExplained Cache cache = CacheBuilder.newBuilder() .weakKeys() .maximumSize(10000) .expireAfterWrite(10, TimeUnit.MINUTES) .build( new CacheLoader() { @Override public String load(Integer key) throws Exception { return retreveStringForKey(key); } @Override public Object load(Object o) { return o; } //??? }); cache.metaClass.propertyMissing { k -> delegate.get(k) } cache.metaClass.propertyMissing { k, v -> delegate.put(k, v) } cache["a"] = 9 assert cache.size() == 1 assert cache["a"] == 9
Thursday, February 9, 2012
Google Guava
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment