好看的做地图分析图的网站网站服务器慢

diannao/2026/1/25 0:28:26/文章来源:
好看的做地图分析图的网站,网站服务器慢,网站建设价格标准,搜索引擎推广的效果ejb构建在本文中#xff0c;我将介绍如何使用单例EJB和Ehcache在Java EE中构建简单的参考数据缓存。 高速缓存将在给定的时间段后重置自身#xff0c;并且可以通过调用REST端点或MBean方法“手动”清除。 这篇文章实际上是建立在以前的文章中如何建立和清除与单EJB和MBean的一… ejb构建 在本文中我将介绍如何使用单例EJB和Ehcache在Java EE中构建简单的参考数据缓存。 高速缓存将在给定的时间段后重置自身并且可以通过调用REST端点或MBean方法“手动”清除。 这篇文章实际上是建立在以前的文章中如何建立和清除与单EJB和MBean的一个参考的数据高速缓存 ; 唯一的区别是我将使用Ehcache缓存而不是将数据存储在ConcurrentHashMapString, Object 并且该缓存能够通过Ehcache方式进行更新。 1.快取 原来这是一个只读缓存可以从外部刷新它。 我希望将缓存作为服务的一种包装为应用程序提供实际的参考数据–带代码的AOP样式 接口 参考数据的简单界面 Local public interface ReferenceDataCache {/*** Returns all reference data required in the application */ReferenceData getReferenceData();/*** evict/flush all data from cache */void evictAll(); } 缓存功能定义了两种简单的方法 getReferenceData() –缓存所有不同来源在后台收集的参考数据 evictAll() –调用方法以完全清除缓存 实作 使用Ehcache的简单参考数据缓存实现 ConcurrencyManagement(ConcurrencyManagementType.CONTAINER) Singleton public class ReferenceDataCacheBean implements ReferenceDataCache {private static final String ALL_REFERENCE_DATA_KEY ALL_REFERENCE_DATA;private static final int CACHE_MINUTES_TO_LIVE 100;private CacheManager cacheManager;private Cache refDataEHCache null; EJBReferenceDataLogic referenceDataService; PostConstructpublic void initialize(){ cacheManager CacheManager.getInstance();CacheConfiguration cacheConfiguration new CacheConfiguration(referenceDataCache, 1000);cacheConfiguration.setTimeToLiveSeconds(CACHE_MINUTES_TO_LIVE * 60);refDataEHCache new Cache(cacheConfiguration );cacheManager.addCache(refDataEHCache);}OverrideLock(LockType.READ)public ReferenceData getReferenceData() {Element element refDataEHCache.get(ALL_REFERENCE_DATA_KEY);if(element ! null){ return (ReferenceData) element.getObjectValue();} else {ReferenceData referenceData referenceDataLogic.getReferenceData();refDataEHCache.putIfAbsent(new Element(ALL_REFERENCE_DATA_KEY, referenceData));return referenceData;} }Overridepublic void evictAll() {cacheManager.clearAll();} ........... } 注意 Singleton –可能是此类中最重要的代码行。 此注释指定在应用程序中将仅存在一个这种类型的bean的单例。 该bean可以由多个线程同时调用。 现在让我们将代码分解为不同的部分 缓存初始化 PostConstruct注释用于在依赖项注入完成后需要执行的方法上以执行任何初始化–在我们的情况下是创建和初始化eh缓存。 缓存初始化 PostConstructpublic void initialize(){ cacheManager CacheManager.create();CacheConfiguration cacheConfiguration new CacheConfiguration(referenceDataCache, 1000);cacheConfiguration.setTimeToLiveSeconds(CACHE_MINUTES_TO_LIVE * 60);refDataEHCache new Cache(cacheConfiguration );cacheManager.addCache(refDataEHCache);} 注意此注释只能注释一种方法。 Ehcache的所有用法都始于创建CacheManager 它是Ehcache的容器可维护其生命周期的各个方面。 我使用CacheManager.create()方法这是一种使用默认配置创建单例CacheManager的工厂方法如果存在则将其返回 cacheManager CacheManager.create(); 我通过提供缓存名称“ referenceDataCache”和内存中最大元素数 maxEntriesLocalHeap 来构建CacheConfiguration对象然后将它们逐出0 无限制最后我进行设置自元素创建之日起元素的默认生存时间 CacheConfiguration cacheConfiguration new CacheConfiguration(referenceDataCache, 1000); cacheConfiguration.setTimeToLiveSeconds(CACHE_MINUTES_TO_LIVE * 60); 现在借助于CacheConfiguration对象我以编程方式创建了我的参考数据缓存并将其添加到CacheManager中。 请注意只有将缓存添加到CacheManager后它们才可用 refDataEHCache new Cache(cacheConfiguration ); cacheManager.addCache(refDataEHCache); 注意您也可以以声明的方式创建缓存创建CacheManager时它将创建在配置中找到的缓存。 您可以通过指定配置文件的路径类路径中的配置InputStream中的配置或类路径中的默认ehcache.xml文件来创建CacheManager。 查看Ehcache代码示例以获取更多信息。 从缓存中获取数据 Override Lock(LockType.READ) public ReferenceData getReferenceData() {Element element refDataEHCache.get(ALL_REFERENCE_DATA_KEY);if(element ! null){ return (ReferenceData) element.getObjectValue();} else {ReferenceData referenceData referenceDataLogic.getReferenceData();refDataEHCache.put(new Element(ALL_REFERENCE_DATA_KEY, referenceData));return referenceData;} } 首先我尝试根据元素的键从缓存中获取该元素如果元素存在于缓存中 null 则将从服务类接收该元素并将其放置在缓存中以供将来请求。 注意 Lock(LockType.READ)指定具有容器管理的并发性的单例bean的并发锁定类型。 设置为LockType.READ 它将强制执行该方法以允许对其进行完全并发访问假定未持有任何写锁。 这正是我想要的因为我只需要执行读取操作。 另一个更保守的选项Lock(LockType.WRITE)顺便说一下是DEFAULT它强制对bean实例的独占访问。 这应该在高度并发的环境中使方法变慢。 清除缓存 清除缓存 Override public void evictAll() { cacheManager.clearAll(); } CacheManager的clearAll()方法清除CacheManager中所有缓存的内容但不删除任何缓存。 我在这里只是为了简单起见使用它因为我只有一个缓存因此需要刷新。 注意如果您有多个高速缓存即多个高速缓存名称并且只想清除一个则需要使用CacheManager.clearAllStartingWith(String prefix) 该名称以CacheManager开头的名称清除CacheManager中所有高速缓存的内容。前缀但不删除它们。 2.如何触发缓存缓存 这篇文章的第二部分将讨论清除缓存的可能性。 由于缓存实现是一个企业Java Bean因此我们可以从MBean或从Web服务中调用它。 MBean 如果您不熟悉Java管理扩展JMX 这是一种Java技术它提供用于管理和监视应用程序系统对象设备例如打印机和面向服务的网络的工具。 这些资源由称为MBeans用于Managed Bean的对象表示 我强烈建议您从本教程的路径Java管理扩展JMX开始。 接口 公开的方法仅允许通过JMX重置缓存 MXBean public interface CacheResetMXBean { void resetReferenceDataCache(); } “ MXBean是一种MBean仅引用一组预定义的数据类型。 这样您可以确保您的MBean可被任何客户端包括远程客户端使用而无需客户端有权访问代表MBean类型的特定于模型的类。 MXBean提供了一种将相关值捆绑在一起的便捷方法而无需将客户端特别配置为处理捆绑。” [5] 实作 CacheReset MxBean实现 Singleton Startup public class CacheReset implements CacheResetMXBean {private MBeanServer platformMBeanServer;private ObjectName objectName null;EJBReferenceDataCache referenceDataCache;PostConstructpublic void registerInJMX() {try {objectName new ObjectName(org.codingpedia.simplecacheexample:typeCacheReset);platformMBeanServer ManagementFactory.getPlatformMBeanServer();//unregister the mbean before registerting againSetObjectName existing platformMBeanServer.queryNames(objectName, null);if(existing.size() 0){platformMBeanServer.unregisterMBean(objectName);}platformMBeanServer.registerMBean(this, objectName);} catch (Exception e) {throw new IllegalStateException(Problem during registration of Monitoring into JMX: e);}} Overridepublic void resetReferenceDataCache() {referenceDataCache.evictAll();}} 注意 如前所述该实现仅调用上一节中介绍的注入的单例bean的evictAll()方法 该bean也被定义为Singleton Startup批注导致在应用程序启动时由容器实例化Bean – 渴望初始化 我再次使用PostConstruct功能。 在这里 此 bean已在JMX中注册如果有的话请检查是否使用ObjectName将其删除。 休息服务电话 我还内置了通过调用REST资源清除缓存的可能性。 在rest-context/ reference-data / flush-cache上执行HTTP POST时会发生这种情况 通过REST资源触发缓存刷新 Path(/reference-data) public class ReferenceDataResource {EJBReferenceDataCache referenceDataCache;POSTPath(flush-cache)public Response flushReferenceDataCache() {referenceDataCache.evictAll();return Response.status(Status.OK).entity(Cache successfully flushed).build();} GETProduces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })public Response getReferenceData(QueryParam(version) String version) {ReferenceData referenceData referenceDataCache.getReferenceData(); if(version!null version.equals(referenceData.getVersion())){return Response.status(Status.NOT_MODIFIED).entity(Reference data was not modified).build(); } else {return Response.status(Status.OK).entity(referenceData).build(); }} } 注意GET getReferenceData(...)方法中存在版本查询参数。 这表示参考数据上的哈希如果尚未修改则客户端将收到304未修改HTTP状态 。 这是节省带宽的好方法尤其是在您拥有移动客户端的情况下。 有关REST服务设计和实现的详细讨论请参阅我的教程“使用Jersey和Spring的Java REST API设计和实现”。 注意在集群环境中当参考数据更改时需要在部署了应用程序的每个JVM上调用resetCache…。 好就是这样。 在本文中我们学习了如何借助Ehcache在Java EE中构建简单的参考数据缓存。 当然您可以轻松扩展缓存功能以提供对缓存对象的更精细的访问/清除。 在这种情况下请不要忘记使用LockType.WRITE作为清除方法…… 翻译自: https://www.javacodegeeks.com/2014/11/how-to-build-and-clear-a-reference-data-cache-with-singleton-ejbs-ehcache-and-mbeans.htmlejb构建

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/88477.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎样去各大网站做淘宝推广网站建设首期款

jedis jedispool Redistemplate 整理了之前学习 redis 的笔记,强烈建议看最后总结。 在大型系统数据读请求中,基本上90%都可以通过分布式缓存集群来抗下来,而 Redis 又是分布式缓存集群的主要践行者,因此了解 Redis 是必不可少的…

佛山专业做淘宝网站推广确定网站界面

linux-前端项目由nginx迁移到apache httpd 1、前端项目存放目录为 /var/www/dist 虚拟主机端口80 反向代理拦截 /prod-api 后端服务地址 http://192.168.0.44:8097 2、在/etc/httpd/conf.d/目录中&#xff0c;创建一个vhost.conf的文件&#xff0c;放入以下内容 <VirtualHos…

wordpress网站搜索引擎仿门户网站多功能js相册画廊源码

一、常见存储引擎 我们可以知道表的类型是由存储引擎决定的&#xff0c;如图所示&#xff0c;我们可以看到MySQL中支持八种储存引擎&#xff0c;那么我们这里就介绍常用的三种存储引擎&#xff0c;分别是Innodb、MyISAM、Memory。 二、Innodb、MyISAM、Memory的特点 1、Inno…

做网站页面的需要哪些技巧工业设计作品集网站

1前言开发接口&#xff0c;是给客户端&#xff08;Web前端、App&#xff09;用的&#xff0c;前面说的RESTFul&#xff0c;是接口的规范&#xff0c;有了统一的接口风格&#xff0c;客户端开发人员在访问后端功能的时候能更快找到需要的接口&#xff0c;能写出可维护性更高的代…

江门网站定制多少钱在东莞做

深入解析Java 22&#xff1a;专栏介绍 Java&#xff0c;作为一种广泛使用的编程语言&#xff0c;一直以来都在不断地发展和改进。2024年3月19日&#xff0c;Java 22的GA版本正式发布&#xff0c;带来了众多令人瞩目的新特性和性能优化。本专栏将深入解析Java 22&#xff0c;带…

对于网站建设的体会设计之家室内设计

一、前言每一个Linux驱动工程师都知道这样一个准则&#xff1a;在中断上下文中不能睡眠。但是为什么interrupt context中不能调用导致睡眠的kernel API呢&#xff1f;如果驱动这么做会导致什么样的后果呢&#xff1f;这就是本文探讨的主题。为了理解这个主题&#xff0c;我们设…

用python做网站的多吗永嘉做网站

这里写目录标题 1. 下载Mendeley 并插入到Word1.1 下载安装1.2 在Word 中添加Mendeley 插件文献引用相关 1. 下载Mendeley 并插入到Word 1.1 下载安装 Mendeley 官网下载 1.2 在Word 中添加Mendeley 插件 打开 Mendeley&#xff0c;点击 Tools —>Install Mendeley Cite…

经过学习网站开发后的心得体会网页源代码拿到后怎么使用

( )程序包用于读写操作系统文本文件。(选一项)A、Dbms_outputB、Dbms_lobC、Dbms_randomD、Utl_file( )触发器允许触发操作的语句访问行的列值。(选一项)A、行级B、语句级C、模式D、数据库级( )是oracle在启动期间用来标识物理文件和数据文件的二进制文件。(选一项)A、控制文件…

网络运营部wordpress 纯代码seo

解决代码&#xff1a; .el-table {/deep/ .el-table__body-wrapper {overflow-x: scroll !important;//直接设置横轴内容滚动条 即可撑高高度 还不影响使用} }一、情景&#xff1a;给element的el-table设置fixed固定后&#xff0c;最后一行显示部分被遮挡。有的说是有时出现这…

哈尔滨建筑专业网站家具网站怎么做

Clean Sheet是适用于Windows 10的符合人体工程学的Eclipse主题。它基于干净&#xff0c;低眩光的外观和感觉&#xff0c;旨在减轻视觉疲劳和眼睛疲劳。 它融合了均衡的颜色选择&#xff0c;可以突出谐波语法并注重可读性。 除自定义滚动条外&#xff0c;它还努力满足现代美学要…

服务器分配网络提高网站访问速度网站建设公司经营

做开发时&#xff0c;经常遇到服务器监控报警&#xff0c;日志占据大量的磁盘空间&#xff0c;需要清理。每次手动清理很麻烦。这里分享一些定时清理的脚本&#xff0c;减轻运维的工作量。将sh脚本与crontab定时任务结合&#xff0c;实现定时清理。 nacos日志清理脚本 nacos也…

域名解析网站什么意思vue做的网站

前面的文章我们介绍了系统应用解析流程和通过 PackageInstaller.apk安装应用程序的相关流程,这一篇我们来分析使用 ADB 命令来实现 APK 安装流程。 一、ADB安装命令 ADB命令使用 adb install [选项] [APK绝对路径] 常见选项如下: -r:覆盖安装,保存原有数据; -t:…

免费个人域名网站网站建设需要钱吗

在官网可编辑表格typescript样例里 const inputRef useRef<InputRef>(null); InputRef项目报错原因是ant design的版本问题! antd 4.19版本重写了input 可通过InputRef来使用input组件的ref

住建部网站查询系统网站服务器用来做啥

1故事背景 忘记密码这件事&#xff0c;相信绝大多数人都遇到过&#xff0c;输一次错一次&#xff0c;错到几次以上&#xff0c;就不允许你继续尝试了。 但当你尝试重置密码&#xff0c;又发现新密码不能和原密码重复&#xff1a; 图片 相信此刻心情只能用一张图形容&#xf…

沈阳专业网站建设企业站长工具seo综合查询怎么用

姓名 李宁 日期 2015年7月13日 主要工作及心得 由于我负责服务器端的编写工作&#xff0c;而各部分的客户端的操作都要与服务器端通信&#xff0c;所以在今天的调试中&#xff0c;我贯穿于各部分模块的调试和检测&#xff0c;主要负责在出现问题…

博学云网站建设怎么把自己做的网站发布到网上

转载自 关于java.util.Properties读取中文乱码的正确解决方案&#xff08;不要再用native2ascii.exe了&#xff09; 碰到了用java.util.Properties读取中文内容&#xff08;UTF-8格式&#xff09;的配置文件&#xff0c;发生中文乱码的现象&#xff0c; Properties propnew Pro…

做水果网站特点分析wordpress插件xiazai

1. Serial GC Serial GC 是用于单线程环境的垃圾回收器&#xff0c;它使用复制算法&#xff08;Copy&#xff09;进行年轻代的垃圾回收&#xff0c;而老年代则使用标记-整理&#xff08;Mark-Compact&#xff09;算法。由于它在进行垃圾回收时会暂停其他所有的工作线程&#xf…

深圳网站建设小江宁夏交通建设有限公司网站

文章目录 文章开篇Json简介Json数据类型Json硬性规则Json数据转化网站Json和Dict类型转换json模块的使用Python数据和Json数据的类型映射json.dumps1.字典数据中含有**存在中文**2.json数据通过缩进符**美观输出**3.对Python数据类型中键进行**排序输出**4.json数据**分隔符的控…

网站建设与网页设计百度文库微信小程序登录流程

一、类与类加载器 类加载器虽然只用于实现类的加载动作&#xff0c;但它在Java程序中起到的作用却远超类加载阶段。对于 任意一个类&#xff0c;都必须由加载它的类加载器和这个类本身一起共同确立其在Java虚拟机中的唯一性&#xff0c;每一个类加载器&#xff0c;都拥有一个独…