当前位置: 首页 > news >正文

建设银行网上银行网站进入不了国外好看的教育类网站模板下载

建设银行网上银行网站进入不了,国外好看的教育类网站模板下载,北京互联网排名,好看怎么上传视频网站吗Caffeine 概念缓存手动加载自动加载手动异步加载自动异步加载 驱逐策略基于容量基于时间基于引用 移除显式移除 概念 Caffeine是一个基于Java8开发的提供了近乎最佳命中率的高性能的缓存库。与ConcurrentMap有点相似。最根本的区别是ConcurrentMap将会持有所有加入到缓存当中的… Caffeine 概念缓存手动加载自动加载手动异步加载自动异步加载 驱逐策略基于容量基于时间基于引用 移除显式移除 概念 Caffeine是一个基于Java8开发的提供了近乎最佳命中率的高性能的缓存库。与ConcurrentMap有点相似。最根本的区别是ConcurrentMap将会持有所有加入到缓存当中的元素直到它们被从缓存当中手动移除。Caffeine的缓存Cache 通常会被配置成自动驱逐缓存中元素以限制其内存占用。在某些场景下LoadingCache和AsyncLoadingCache尤为重要。 Caffeine提供了灵活的构造器去创建一个拥有下列特性的缓存 1自动加载元素到缓存当中异步加载的方式也可供选择 2当达到最大容量的时候可以使用基于就近度和频率的算法进行基于容量的驱逐 3将根据缓存中的元素上一次访问或者被修改的时间进行基于过期时间的驱逐 4当向缓存中一个已经过时的元素进行访问的时候将会进行异步刷新 5key将自动被弱引用所封装 6value将自动被弱引用或者软引用所封装 7驱逐(或移除)缓存中的元素时将会进行通知 8写入传播到一个外部数据源当中 9持续计算缓存的访问统计指标 缓存 Caffeine提供了四种缓存添加策略手动加载自动加载手动异步加载和自动异步加载。 手动加载 CacheString, String cache Caffeine.newBuilder().expireAfterWrite(10, TimeUnit.MINUTES).maximumSize(10000).build();// 查找一个缓存元素 没有查找到的时候返回nullString scache.getIfPresent(xiaohei);// 查找缓存如果缓存不存在则生成缓存元素, 如果无法生成则返回nulls cache.get(xiaohei, k - new String(啥也没有));// 添加或者更新一个缓存元素cache.put(xiaohei1, new String());// 移除一个缓存元素cache.invalidate(xiaohei);Cache 接口提供了显式搜索查找、更新和移除缓存元素的能力。 推荐使用cache.get(key, k - value)操作来在缓存中不存在该key对应的缓存元素的时候进行计算生成并直接写入至缓存内而当该key对应的缓存元素存在的时候将会直接返回存在的缓存值。一次 cache.put(key, value) 操作将会直接写入或者更新缓存里的缓存元素在缓存中已经存在的该key对应缓存值都会直接被覆盖。也可以使用Cache.asMap()所暴露出来的ConcurrentMap的方法对缓存进行操作。 自动加载 LoadingCacheString, String cache Caffeine.newBuilder().maximumSize(10000).expireAfterWrite(10, TimeUnit.MINUTES).build(key - new String(啥也没有)); // 查找缓存如果缓存不存在则生成缓存元素, 如果无法生成则返回nullString s cache.get(xiaohei); // 批量查找缓存如果缓存不存在则生成缓存元素MapString, String map cache.getAll(Arrays.asList(new String[]{xiaohei1, xiaohei2}));一个LoadingCache是一个Cache 附加上CacheLoader能力之后的缓存实现。默认情况下在getAll 方法中将会对每个不存在对应缓存的key调用一次CacheLoader.load来生成缓存元素。 手动异步加载 AsyncCacheString, String cache Caffeine.newBuilder().expireAfterWrite(10, TimeUnit.MINUTES).maximumSize(10000).buildAsync();// 查找一个缓存元素 没有查找到的时候返回nullCompletableFutureString graph cache.getIfPresent(xiaohei);// 查找缓存元素如果不存在则异步生成graph cache.get(xiaohei, k - new String(xiaoheissss));// 添加或者更新一个缓存元素cache.put(xiaobai, graph);// 移除一个缓存元素cache.synchronous().invalidate(xiaohei);一个AsyncCache是Cache的一个变体AsyncCache提供了在Executor上生成缓存元素并返回 CompletableFuture的能力。这给出了在当前流行的响应式编程模型中利用缓存的能力。 synchronous()方法给Cache提供了阻塞直到异步缓存生成完毕的能力。也可以使用 AsyncCache.asMap()所暴露出来的ConcurrentMap的方法对缓存进行操作。默认的线程池实现是 ForkJoinPool.commonPool() 也可以通过覆盖并实现 Caffeine.executor(Executor)方法来自定义线程池选择。 自动异步加载 AsyncLoadingCacheString, String cache Caffeine.newBuilder().maximumSize(10000).expireAfterWrite(10, TimeUnit.MINUTES)// 你可以选择: 去异步的封装一段同步操作来生成缓存元素.buildAsync(key - new String(key));// 你也可以选择: 构建一个异步缓存元素操作并返回一个future // .buildAsync((key, executor) - createExpensiveGraphAsync(key, executor));// 查找缓存元素如果其不存在将会异步进行生成CompletableFutureString graph cache.get(xiaohei); // 批量查找缓存元素如果其不存在将会异步进行生成CompletableFutureMapString, String graphs cache.getAll(Arrays.asList(new String[]{xiaohei1, xiaohei2}));一个 AsyncLoadingCache是一个AsyncCache加上AsyncCacheLoader能力的实现。在需要同步的方式去生成缓存元素的时候CacheLoader是合适的选择。而在异步生成缓存的场景下AsyncCacheLoader则是更合适的选择并且它会返回一个 CompletableFuture。默认情况下在getAll 方法中将会对每个不存在对应缓存的key调用一次 AsyncCacheLoader.asyncLoad 来生成缓存元素。 可以通过实现一个 AsyncCacheLoader.asyncLoadAll并在其中为没有在参数中请求的key也生成对应的缓存元素。如果对应某个key生成的缓存元素与包含这个key的一组集合剩余的key所对应的元素一致那么在asyncLoadAll中也可以同时加载剩下的key对应的元素到缓存当中。 驱逐策略 基于容量 Caffeine提供了三种驱逐策略分别是基于容量基于时间和基于引用三种类型。 // 基于缓存内的元素个数进行驱逐 LoadingCacheString, String graphs Caffeine.newBuilder().maximumSize(10000).build(key - new String(key)); // 基于缓存内元素权重进行驱逐 LoadingCacheString, String graphs Caffeine.newBuilder().maximumWeight(10000).weigher((String s, String s1) - s1.length()).build(key - new String(key));基于缓存内的元素个数进行驱逐策略中使用Caffeine.maximumSize(long)。缓存将会尝试通过基于就近度和频率的算法来驱逐掉不会再被使用到的元素。 缓存中的元素可能有不同的内存占用–需要借助Caffeine.weigher(Weigher)方法来界定每个元素的权重并通过 Caffeine.maximumWeight(long)方法来界定缓存中元素的总权重来实现上述的场景。在基于权重驱逐的策略下一个缓存元素的权重计算是在其创建和更新时此后其权重值都是静态存在的在两个元素之间进行权重的比较的时候并不会根据进行相对权重的比较。 基于时间 // 基于固定的过期时间驱逐策略LoadingCacheString, String graphs1 Caffeine.newBuilder().expireAfterAccess(5, TimeUnit.MINUTES).build(key - new String());LoadingCacheString, String graphs2 Caffeine.newBuilder().expireAfterWrite(10, TimeUnit.MINUTES).build(key - new String());// 基于不同的过期驱逐策略LoadingCacheString, String graphs Caffeine.newBuilder().expireAfter(new ExpiryString, String() {Overridepublic long expireAfterCreate(NonNull String s, NonNull String s2, long l) {return 0;}Overridepublic long expireAfterUpdate(NonNull String s, NonNull String s2, long l, NonNegative long l1) {return 0;}Overridepublic long expireAfterRead(NonNull String s, NonNull String s2, long l, NonNegative long l1) {return 0;}}).build(key - new String());expireAfterAccess(long, TimeUnit): 一个元素在上一次读写操作后一段时间之后在指定的时间后没有被再次访问将会被认定为过期项。在当被缓存的元素时被绑定在一个session上时当session因为不活跃而使元素过期的情况下这是理想的选择。 expireAfterWrite(long, TimeUnit): 一个元素将会在其创建或者最近一次被更新之后的一段时间后被认定为过期项。在对被缓存的元素的时效性存在要求的场景下这是理想的选择。 expireAfter(Expiry): 一个元素将会在指定的时间后被认定为过期项。当被缓存的元素过期时间收到外部资源影响的时候这是理想的选择。 基于引用 // 当key和缓存元素都不再存在其他强引用的时候驱逐LoadingCacheString, String graphs1 Caffeine.newBuilder().weakKeys().weakValues().build(key - new String());// 当进行GC的时候进行驱逐LoadingCacheString, String graphs2 Caffeine.newBuilder().softValues().build(key - new String());Caffeine 允许去让GC去帮助清理缓存当中的元素其中key支持弱引用而value则支持弱引用和软引用。AsyncCache不支持软引用和弱引用。 Caffeine.weakKeys()在保存key的时候将会进行弱引用。这允许在GC的过程中当key没有被任何强引用指向的时候去将缓存元素回收。由于GC只依赖于引用相等性。这导致在这个情况下缓存将会通过引用相等()而不是对象相等 equals()去进行key之间的比较。 Caffeine.weakValues()在保存value的时候将会使用弱引用。这允许在GC的过程中当value没有被任何强引用指向的时候去将缓存元素回收。由于GC只依赖于引用相等性。这导致在这个情况下缓存将会通过引用相等()而不是对象相等 equals()去进行value之间的比较。 Caffeine.softValues()在保存value的时候将会使用软引用。为了相应内存的需要在GC过程中被软引用的对象将会被通过LRU算法回收。由于使用软引用可能会影响整体性能我们还是建议通过使用基于缓存容量的驱逐策略代替软引用的使用。同样的使用 softValues() 将会通过引用相等()而不是对象相等equals()去进行value之间的比较。 移除 驱逐缓存元素因为策略被移除 失效缓存元素被手动移除 移除由于驱逐或者失效而最终导致的结果 显式移除 可以手动去让某个缓存元素失效而不是只能等待其因为策略而被驱逐。 // 失效key cache.invalidate(小黑); // 批量失效key cache.invalidateAll(Arrays.asList(new String[]{xiaohei1, xiaohei2})); // 失效所有的key cache.invalidateAll();
http://www.zqtcl.cn/news/667210/

相关文章:

  • 做网站用到的技术湖南建设银行网站
  • 成都大型网站设计公司电脑上重新下载一个wordpress
  • 番禺网站建设知乎自己做网站卖矿山设备
  • 手表网站起名登录页面html模板
  • 泰国如何做网站推广大英网站建设工作
  • 山东省职业能力建设处网站dz论坛怎么做视频网站吗
  • 郑州专业做网站的公司今天郑州最新通告
  • wap网站引导页特效wordpress 文章 数据库
  • 做建筑效果图最好的网站做网站是如果盈利的
  • 企业网站seo托管怎么做seo公司培训
  • 自己做网站不想买空间 自己电脑可以做服务器吗?下载建设网站软件
  • 有服务器自己怎么做网站百度广告电话号码是多少
  • 一个网站 两个数据库沈阳市住房和城乡建设厅网站
  • 重庆建站网站流程及费用制作网页界面工具
  • 设计师家园官网wordpress 4.9 优化
  • 主机屋空间安装织梦后台程序后怎么弄成淘宝客网站襄阳网站制作
  • 怎么建设分销模式手机网站宜昌做网站的公司
  • 网上商城网站设计网页设计作业欣赏
  • 育才网站建设网站访问慢原因
  • 网站建设方案 备案品牌网站推广软件
  • 桓台县建设局网站前端开发入门培训
  • 前端怎么在猪八戒网站接单做烟台网站开发技术
  • 济南烨铭网站建设做英文网站2014
  • 哪个餐饮店微网站做的有特色3d动画制作收费标准
  • h5旅游网站开发wordpress的站点地址如何配置
  • 网站正在维护中 模板招远网站建设
  • 福田欧曼银河报价seo文章是什么
  • 古云网站建设模具培训网站建设
  • 帮助企业做网站的销售卫浴洁具公司网站模板
  • 解释seo网站推广网站域名和空间费用