c语言s=1/2+3/4+5/6…前100项编写?


· 超过10用户采纳过TA的回答

下载百度知道APP,抢鲜体验

使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。

在本文中,我们来看看 Caffeine — 一个高性能的 Java 缓存库。

缓存和 Map 之间的一个根本区别在于缓存可以回收存储的 item。

回收策略为在指定时间删除哪些对象。此策略直接影响缓存的命中率 — 缓存库的一个重要特征。

Caffeine 为我们提供了三种填充策略:手动、同步和异步

Cache接口允许显式的去控制缓存的检索,更新和删除。

CacheWriter是复杂工作流的扩展点,需要外部资源来观察给定Key的变化顺序。这些用法Caffeine是支持的,但不是本地内置。

write-through式缓存中,写操作是一个同步的过程,只有写成功了才会去更新缓存。这避免了同时去更新资源和缓存的条件竞争。

write-back式缓存中,对外部资源的操作是在缓存更新后异步执行的。这样可以提高写入的吞吐量,但是会有数据不一致的风险,比如如果外部资源写入失败,则会在缓存中保留一个无效的数据。write-back 这种方法有助于推迟写操作到指定的时间,还可以帮助我们限制写速率或批量写操作。

通过对write-back进行扩展,我们可以实现以下特性:

  • 延迟操作并到一个特定的时间执行
  • 如果超过阈值大小,则在定期刷新之前执行批处理
  • 如果操作尚未刷新,则从write-behind缓存加载
  • 根据外部资源的特点,进行重审,速率限制和并发等

可以参考一个简单的例子,使用RxJava实现。

CacheWriter可以用来集成多个缓存进而实现多级缓存。

多级缓存的加载和写入可以使用系统外部高速缓存。这允许缓存使用一个小并且快速的缓存去调用一个大的并且速度相对慢一点的缓存。典型的比如off-heap、file-based和remote 缓存。

Victim Cache是一个多级缓存的变体,其中被删除的数据被写入二级缓存。这个delete(K, V, RemovalCause) 方法允许检查为什么该数据被删除,并作出相应的操作。

同步监听器会接收一个key在缓存中的进行了那些操作的通知。监听器可以block缓存操作,也可以将事件排队以异步的方式执行。这种类型的监听器最常用于同步或构建分布式缓存。

原文有些地方翻译的感觉有问题,表意不清或者错误,看了下github上的原文,进行了调整。
上面的测试类我加了自己的执行结果,根据执行结果验证了Caffeine缓存的基本功能

我要回帖

更多关于 c语言程序的每行可以写几条语句 的文章

 

随机推荐