网站建站中关键字搜索怎么弄wordpress怎么删回复
news/
2025/9/24 0:24:27/
文章来源:
网站建站中关键字搜索怎么弄,wordpress怎么删回复,旅游电子商务网站建设情况,建网站需要哪些资质转载自 Java8-本地缓存这里我将会给大家演示用ConcurrentHashMap类和lambda表达式实现一个本地缓存。因为Map有一个新的方法可以在key为Null的时候自动计算一个新的value值。非常完美的实现cache。来看下代码#xff1a;12345678910111213141516publicstatic void main(String…转载自 Java8-本地缓存这里我将会给大家演示用ConcurrentHashMap类和lambda表达式实现一个本地缓存。因为Map有一个新的方法可以在key为Null的时候自动计算一个新的value值。非常完美的实现cache。来看下代码
12345678910111213141516publicstatic void main(String[] args) { for(inti 0; i 10; i) System.out.println( f( i ) fibonacci(i));}staticint fibonacci(inti) { if(i 0) returni; if(i 1) return1; System.out.println(Calculating f( i )); returnfibonacci(i - 2) fibonacci(i - 1);}当然这种方式很傻瓜了。即使对于一个非常小的数例如fibonacci(5)上面的代码打印出很多行而且都是在进行重复计算输出如下只截取一部分
12345678910111213Calculating f(6)Calculating f(4)Calculating f(2)Calculating f(3)Calculating f(2)Calculating f(5)Calculating f(3)Calculating f(2)Calculating f(4)Calculating f(2)Calculating f(3)Calculating f(2)f(6) 8我们想要做的就是创建一个缓存用来计算斐波那契数列。最直接的方法就是在缓存中存放所有的value值。cache的创建如下
1staticMapInteger, Integer cache newConcurrentHashMap();译者注这种写法在Java8中是允许的
声明cache之后通过Map.computeIfAbsent() 方法可以在key所对应的value值不存在的情况下计算一个新的value值。超高速缓存Caching由于这个方法是自动执行的而且我们使用了 ConcurrentHashMap对象这个缓存是线程安全的不需要手动的去写同步方法。另外它不仅仅可以处理斐波那契额数列在其他地方也可以被重复使用。
不过现在我们看看如何在fibonacci()方法中使用缓存。
1234567891011staticint fibonacci(inti) { if(i 0) returni; if(i 1) return1; returncache.computeIfAbsent(i, (key) - fibonacci(i - 2) fibonacci(i - 1));}瞧瞧。不能比这个再简单了吧。想要证明吗好吧每当我们计算一个新值的时候都在控制台输出信息
1234567891011121314staticint fibonacci(inti) { if(i 0) returni; if(i 1) return1; returncache.computeIfAbsent(i, (key) - { System.out.println( Slow calculation of key); returnfibonacci(i - 2) fibonacci(i - 1); });}程序输出如下
123456789101112131415161718f(0) 0f(1) 1Slow calculation of 2f(2) 1Slow calculation of 3f(3) 2Slow calculation of 4f(4) 3Slow calculation of 5f(5) 5Slow calculation of 6f(6) 8Slow calculation of 7f(7) 13Slow calculation of 8f(8) 21Slow calculation of 9f(9) 34在Java7下又如何实现呢
这样代码就会多一些我们可以使用double-checked locking来实现
12345678910111213141516171819202122232425staticint fibonacciJava7(inti) { if(i 0) returni; if(i 1) return1; Integer result cache.get(i); if(result null) { synchronized(cache) { result cache.get(i); if(result null) { System.out.println( Slow calculation of i); result fibonacci(i - 2) fibonacci(i - 1); cache.put(i, result); } } } returnresult;}注你实际的解决方案很可能会用到Guava Caches。
总结Lambdas 表达式是Java8中非常重要的一部分。我们不要忘记添加到库中的所有的新特性。
原文链接
Jooq翻译
ImportNew.com
-
踏雁寻花译文链接
http://www.importnew.com/10227.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/914349.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!