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

高密市住房和城乡建设局网站张家口桥西区建设局网站

高密市住房和城乡建设局网站,张家口桥西区建设局网站,网站采用哪种开发语言,安徽省住房与城乡建设部网站​ Caffeine 背景 Caffeine是一个高性能的Java缓存库#xff0c;它基于Guava Cache进行了增强#xff0c;提供了更加出色的缓存体验。Caffeine的主要特点包括#xff1a; 高性能#xff1a;Caffeine使用了Java 8最新的StampedLock乐观锁技术#xff0c;极大地提高了缓存… ​ Caffeine 背景 Caffeine是一个高性能的Java缓存库它基于Guava Cache进行了增强提供了更加出色的缓存体验。Caffeine的主要特点包括 高性能Caffeine使用了Java 8最新的StampedLock乐观锁技术极大地提高了缓存的并发吞吐量使其成为一个高性能的Java缓存库。 内存友好Caffeine支持自动驱逐缓存中的元素以限制其内存占用。它还提供了灵活的构造器可以创建具有不同特性的缓存如自动加载元素、基于容量的驱逐、基于过期时间的驱逐等。 可扩展性强Caffeine支持 JSR-107 - JCache_Java临时缓存API (JSR-107)也称为JCache是定义javax.cache API的规范。 该规范是在Java社区流程下开发的其目的是为Java应用程序提供标准化的缓存概念和机制。 API使用简单它被设计为缓存标准是供应商中立的。_和Guava适配器提高了与其他缓存库和框架的集成度。 事件监听和多种过期策略Caffeine提供了事件监听和多种过期策略可以更好地优化和管理数据的缓存。这些功能不仅可以提升系统的性能表现也能够有效地降低对底层资源的压力。 本地缓存Caffeine是一个基于Java 8开发的提供了近乎最佳命中率的高性能缓存库。可以说是目前最优秀的本地缓存。 总之Caffeine是一个功能强大、性能卓越的Java缓存库适用于各种需要缓存的应用场景。 Caffeine 主要特点 Caffeine 是一个高性能的 Java 缓存库它的主要特点包括 速度Caffeine 的性能非常高它的速度通常比 ConcurrentHashMap 快很多。Caffeine 使用了高效的数据结构和并发算法以及一些优化手段如无锁操作、缓存行填充等来提高性能。自动垃圾回收Caffeine 支持基于访问时间和写入时间的自动垃圾回收。当缓存中的数据超过了设定的过期时间Caffeine 会自动将其从缓存中移除。基于大小的回收Caffeine 支持基于缓存大小的回收策略。当缓存中的数据量超过了设定的最大值Caffeine 会自动回收最近最少使用的数据。定时回收Caffeine 支持定时回收策略可以设置缓存中的数据在一定时间后被强制回收。缓存统计Caffeine 提供了丰富的缓存统计信息如命中率、缓存大小等帮助开发者了解缓存的使用情况。灵活的配置Caffeine 提供了丰富的配置选项允许开发者根据需要定制缓存的行为。例如可以设置缓存的最大大小、过期时间、回收策略等。扩展性Caffeine 支持自定义缓存实现开发者可以根据需要扩展 Caffeine 的功能。与 Spring Cache 集成Caffeine 可以很容易地与 Spring Cache 集成使得在 Spring 项目中使用缓存变得更加简单。无阻塞操作Caffeine 的大部分操作都是无阻塞的这意味着它可以在高并发环境下提供更好的性能。轻量级Caffeine 是一个轻量级的库它的依赖非常少不会给项目带来额外的负担。 这些特点使得 Caffeine 成为了一个非常受欢迎的 Java 缓存库尤其是在需要高性能和灵活配置的场景中。如果你正在寻找一个高性能的 Java 缓存库Caffeine 值得一试。 更多关于 Caffeine 和 Spring Cache 的信息可以查阅官方文档 Caffeine: https://github.com/ben-manes/caffeine/wikiSpring Cache: https://docs.spring.io/spring-framework/docs/current/reference/html/integration.html__#cache Caffeine 使用 Spring Cache 是 Spring 框架提供的一个缓存抽象它允许开发者通过注解的方式轻松地使用缓存。Caffeine 是一个高性能的 Java 缓存库它提供了诸如自动垃圾回收、基于大小的回收、定时回收等功能。 要在 Spring 中使用 Caffeine 作为缓存实现需执行以下步骤 添加依赖 在你的项目中添加 Caffeine 和 Spring Cache 的依赖。可以在 pom.xml 文件中添加以下依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-cache/artifactId /dependency dependencygroupIdcom.github.ben-manes.caffeine/groupIdartifactIdcaffeine/artifactId /dependency配置 Caffeine 在你的 Spring Boot 配置类中配置 Caffeine 缓存管理器 创建了一个 CaffeineCacheManager Bean并设置了 Caffeine 的一些基本属性如过期时间和最大缓存大小。 import com.github.benmanes.caffeine.cache.Caffeine; import org.springframework.cache.CacheManager; import org.springframework.cache.caffeine.CaffeineCacheManager; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;import java.util.concurrent.TimeUnit;Configuration public class CaffeineConfig {Beanpublic CacheManager cacheManager() {CaffeineCacheManager cacheManager new CaffeineCacheManager();cacheManager.setCaffeine(Caffeine.newBuilder().expireAfterWrite(60, TimeUnit.SECONDS).maximumSize(100));return cacheManager;} }可以在你的服务类中使用 Spring Cache 的注解来缓存数据。 我们使用了 Cacheable 注解来缓存 getUserById 方法的结果。当方法被调用时Spring 会先检查缓存中是否存在该用户如果存在则直接返回缓存中的数据否则才会调用方法并将结果存入缓存。例如 import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service;Service public class UserService {Cacheable(value users, key #id)public User getUserById(Long id) {// 模拟从数据库中获取用户数据return new User(id, User id);} }多个缓存区域 在 Caffeine 中你可以配置多个缓存区域每个区域都有自己的配置和缓存数据。要配置多个缓存区域你需要为每个区域创建一个 Cache 实例并为它们分别配置。 以下是一个使用 Spring Boot 和 Caffeine 配置多个缓存区域的例子 配置缓存区域 在你的 Spring Boot 配置类中配置多个缓存区域我们创建了一个 SimpleCacheManager Bean并为其配置了两个缓存区域。每个缓存区域都有自己的名称、过期时间和最大缓存大小。 import com.github.benmanes.caffeine.cache.Cache; import com.github.benmanes.caffeine.cache.Caffeine; import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.EnableCaching; import org.springframework.cache.caffeine.CaffeineCache; import org.springframework.cache.support.SimpleCacheManager; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit;Configuration EnableCaching public class CaffeineConfig {Beanpublic CacheManager cacheManager() {SimpleCacheManager cacheManager new SimpleCacheManager();ListCaffeineCache caches new ArrayList();// 配置第一个缓存区域CacheObject, Object cache1 Caffeine.newBuilder().expireAfterWrite(60, TimeUnit.SECONDS).maximumSize(100).build();caches.add(new CaffeineCache(cache1, cache1));// 配置第二个缓存区域CacheObject, Object cache2 Caffeine.newBuilder().expireAfterWrite(30, TimeUnit.SECONDS).maximumSize(50).build();caches.add(new CaffeineCache(cache2, cache2));cacheManager.setCaches(caches);return cacheManager;} }使用缓存区域 在你的服务类中使用 Spring Cache 的注解来缓存数据并指定要使用的缓存区域我们使用了 Cacheable 注解来缓存 getUserByIdFromCache1 和 getUserByIdFromCache2 方法的结果并分别指定了不同的缓存区域。 import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service;Service public class UserService {Cacheable(value cache1, key #id)public User getUserByIdFromCache1(Long id) {// 模拟从数据库中获取用户数据return new User(id, User id);}Cacheable(value cache2, key #id)public User getUserByIdFromCache2(Long id) {// 模拟从数据库中获取用户数据return new User(id, User id);} }Caffeine 常见机制 Notification on Eviction Caffeine 提供了一种机制允许你在缓存项被回收时接收通知这被称为 “Notification on Eviction”。使用 removalListener 方法注册一个回调函数。当缓存项被回收时这个回调函数会被调用。 以下是一个使用 Caffeine 的 “Notification on Eviction” 的例子我们创建了一个 Caffeine 缓存并使用 removalListener 方法注册了一个回调函数。当缓存项被回收时这个回调函数会被调用并打印出被回收的缓存项的键、值和回收原因。 import com.github.benmanes.caffeine.cache.Cache; import com.github.benmanes.caffeine.cache.Caffeine; import com.github.benmanes.caffeine.cache.RemovalCause; import com.github.benmanes.caffeine.cache.RemovalListener;import java.util.concurrent.TimeUnit;public class CaffeineNotificationOnEvictionExample {public static void main(String[] args) throws InterruptedException {RemovalListenerString, String removalListener (key, value, cause) - {System.out.println(Key: key , Value: value , Cause: cause);};CacheString, String cache Caffeine.newBuilder().expireAfterWrite(1, TimeUnit.MINUTES).maximumSize(100).removalListener(removalListener).build();cache.put(key1, value1);cache.put(key2, value2);// 等待一段时间让缓存项过期Thread.sleep(60 * 1000);// 清理缓存cache.cleanUp();} }需要注意“Notification on Eviction” 只在缓存项被主动回收时触发而不是在缓存项被读取或写入时触发。 此外“Notification on Eviction” 并不保证在所有情况下都能接收到通知例如在缓存关闭或应用程序退出时可能无法接收到通知。因此在使用 “Notification on Eviction” 时需要考虑到这些因素。 Cleanup Caffeine 提供了一种机制允许你手动触发缓存的清理操作这被称为 “Cleanup”。使用 cleanUp 方法注册一个回调函数。当需要清理缓存时可以调用 cleanUp 方法来触发回调函数。 以下是一个使用 Caffeine 的 “Cleanup” 的例子我们创建了一个 Caffeine 缓存并使用 removalListener 方法注册了一个回调函数。当缓存项被回收时这个回调函数会被调用并打印出被回收的缓存项的键、值和回收原因。 在这个例子中我们使用 cleanUp 方法手动触发了缓存的清理操作。这会导致所有过期的缓存项被回收并触发回调函数。 import com.github.benmanes.caffeine.cache.Cache; import com.github.benmanes.caffeine.cache.Caffeine; import com.github.benmanes.caffeine.cache.RemovalCause; import com.github.benmanes.caffeine.cache.RemovalListener;import java.util.concurrent.TimeUnit;public class CaffeineCleanupExample {public static void main(String[] args) throws InterruptedException {RemovalListenerString, String removalListener (key, value, cause) - {System.out.println(Key: key , Value: value , Cause: cause);};CacheString, String cache Caffeine.newBuilder().expireAfterWrite(1, TimeUnit.MINUTES).maximumSize(100).removalListener(removalListener).build();cache.put(key1, value1);cache.put(key2, value2);// 等待一段时间让缓存项过期Thread.sleep(60 * 1000);// 手动触发缓存清理cache.cleanUp();} }需要注意“Cleanup” 并不保证在所有情况下都能清理缓存。例如在缓存关闭或应用程序退出时可能无法清理缓存。因此在使用 “Cleanup” 时需要考虑到这些因素。 Enable Statistics Caffeine 提供了一种机制允许你启用缓存的统计信息收集功能这被称为 “Enable Statistics”。在创建 Caffeine 缓存时使用 recordStats 方法启用统计信息收集功能。启用统计信息收集功能后使用 stats 方法获取缓存的统计信息。 以下是一个使用 Caffeine 的 “Enable Statistics” 的例子我们创建了一个 Caffeine 缓存并使用 recordStats 方法启用了统计信息收集功能。在缓存中添加了两个缓存项后我们等待了一段时间让缓存项过期。然后我们使用 stats 方法获取了缓存的统计信息并将其打印出来。 import com.github.benmanes.caffeine.cache.Cache; import com.github.benmanes.caffeine.cache.Caffeine; import com.github.benmanes.caffeine.cache.stats.CacheStats;import java.util.concurrent.TimeUnit;public class CaffeineEnableStatisticsExample {public static void main(String[] args) throws InterruptedException {CacheString, String cache Caffeine.newBuilder().expireAfterWrite(1, TimeUnit.MINUTES).maximumSize(100).recordStats().build();cache.put(key1, value1);cache.put(key2, value2);// 等待一段时间让缓存项过期Thread.sleep(60 * 1000);// 获取缓存的统计信息CacheStats stats cache.stats();System.out.println(Cache Stats: stats);} }需要注意启用统计信息收集功能会增加缓存的开销因此在生产环境中使用时需要谨慎。在开发和测试环境中启用统计信息收集功能可以帮助你更好地了解缓存的使用情况从而优化缓存的配置和使用。 ​
http://www.w-s-a.com/news/278642/

相关文章:

  • 怎样建设网站是什么样的广州做和改版网站的公司
  • 世界网站制作帮助做职业规划的网站
  • wordpress 查看站点ppt素材大全免费图片
  • 网站做弹幕广告有什么兼职做it的网站
  • 什么公司做网站出名广州做外贸网站公司
  • 源码网站取名企业网站怎么做百度
  • 织梦网站如何打通百度小程序深圳网站设计灵点网络品牌
  • 做网站网关备案展厅设计风格
  • 唐山网站建设费用网站title优化
  • 网站建设公司做销售好不好海南在线新闻中心
  • title 镇江网站建设wordpress 获取用户密码
  • 品牌型网站建设wordpress+js插件开发教程
  • 免费注册微信网站国家企业年审营业执照官网
  • 建设银行网站 无法访问东莞淘宝运营
  • 做家电网站做网站美工需要会什么软件
  • 深圳营销型定制网站开发1000建设银行网站特点分析
  • 安装网站系统重庆知名网站
  • 巴彦淖尔市 网站建设怀化北京网站建设
  • 内部网站管理办法建立网站后台
  • 自学考试网站建设与管理郑州网站建设开拓者
  • 宁夏制作网站公司慈溪建设集团网站
  • 国家企业官方网站查询系统站酷设计网站官网入口文字设计
  • 彩票网站开发制作需要什么wordpress连接微博专业版v4.1
  • 孝感建设银行官网站百度一下你就知道啦
  • 做网站如何做视频广告制作公司简介怎么写
  • 做网站 买空间商务网站内容建设包括
  • 萝岗网站建设为什么点不开网站
  • 惠州网站制作询问薇北京网站建设最便宜的公司
  • 注册网站英语怎么说wordpress 3.8.3
  • 甘肃张掖网站建设网站开发软件是什么专业