Ehcache

Ehcache with Spring boot is not working in Test env

妖精的绣舞 提交于 2021-01-28 04:41:12
问题 I am using Spring boot (1.4.2.RELEASE) and Ehcache (2.4.3) Cache is being used in dev environment but it is not being used(hit) in other environments(test and prod). Code is as below: pom.xml <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId> </dependency> On Main class , have added below annotation for caching @EnableCaching public class Application { Under src/main/resources, ehcache.xml <?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http://www.w3

SingletonEhCacheRegionFactory is no longer available when upgrading from Hibernate 5.2 to 5.3

谁说我不能喝 提交于 2021-01-27 17:51:28
问题 A project I work on is currently using Hibernate version 5.2.15.Final. When configuring the second-level cache, the project has been using org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory as the value for hibernate.cache.region.factory_class . When I change the Hibernate version to 5.3.12.Final, SingletonEhCacheRegionFactory is no longer in that package. A class with that same name is available in the net.sf.ehcache.hibernate package, and I can use that with no compilation errors.

缓冲&缓存&对象池概念的理解

倖福魔咒の 提交于 2021-01-16 04:55:06
一)、缓冲 作用:缓解程序上下层之间的性能差异。 1)、当上层组件的性能优于下层组件时加入缓冲机制可以减少上层组件对下 层组件的等待时间。 2)、上层组件不需要等待下层组件接收全部数据,即可返回操作,加快了上 层组件的处理速度。 缓冲的应用: JDK的I/O组件提供了缓冲功能。 例:当对文件进行写操作时需要从内存中读取数据写入到硬盘,此时,文件从 内存中的读取速度比写入硬盘的速度快,此时就出现了上层组件的性能优 于下层组件的情况,此时可以加入缓冲机制BufferInputStream()先将数据 写入缓冲区,再将数据写道硬盘中。 二)、缓存 定义:是一块为提高系统性能的内存空间。 作用:暂存数据处理结果,并提供下次访问使用。 应用场景: 数据处理或数据获取可能会非常耗时,当数据的请求量很大时,频繁的数据处 理会耗尽cpu资源。 简单缓存的实现:直接使用HashMap 弊端: 1)、不知道应该何时清理无效数据。 2)、如何防止数据过多导致内存溢出。 基于java的缓存框架: EHCache: Hibernate默认的数据缓存解决方案。 OSCache: 由OpenSymphony设计的,可以缓存任何对象,甚至是缓存 部分JSP页面,或者Http请求。 JBossCache: 由JBoss开发,可用于JBoss集群间数据共享的缓存框架。 缓存的应用

一个excel(20M)就能干趴你的poi,你信吗?

纵然是瞬间 提交于 2021-01-15 06:04:54
  自从上一篇: 一个普通类就能干趴你的springboot,你信吗? 后,很巧的是这次又发现一个问题,所以有了这篇文章,还是想沿用上篇的”流水帐“的方式查找问题和解决问题。这篇文章主要是因为使用POI导入一个20M的excel发生了OOM(OutOfMemoryError)异常。说来也惭愧,工作了这么多年,还真没导入过这种大小的文件,并且还发生了内存溢出。如果你百度下基本上清一色的告诉你:POI导入excel文件有两种方式,第一种是用户模式,这种模式用起来很简单直观,可以类比xml的dom方式解析(这里只针对excel2007,因为2003本身就有最大条数限制并且目前基本用的很少,这里直接忽略),第二种是event模式,这种通常是网上说的解决POI导入大excel的”万金油“方法,可以类比为xml的sax解析方式。呵呵,我这篇文章首先就是要干趴这种方法 (JVM使用-Xms512m -Xmx512m) 。不信你随便写一个导入接口,导入如下20M大小的execl看看:链接: https://pan.baidu.com/s/1DUrS8ctLPp7Z6imOc1aIUQ 提取码: hd79 。   首先,既然要导入大点的excel2007,那么我们应该稍微了解一下这种文件如何存储数据,我们百度上可以发现,2007其实就是一个压缩包,可以直接修改后缀成zip然后解压打开文件看看,如下

你不知道的,Java代码性能优化的 40+ 细节,赶快收藏!

余生颓废 提交于 2021-01-15 01:42:26
在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身。养成良好的编码习惯非常重要,能够显著地提升程序性能。 在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: 控制资源的使用,通过线程同步来控制资源的并发访问; 控制实例的产生,以达到节约资源的目的; 控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信。 整理了一份Java面试宝典完整版PDF 避免随意使用静态变量 当某个对象被定义为static变量所引用,那么GC通常是不会回收这个对象所占有的内存,如 public class A { private static B b = new B(); } 此时静态变量b的生命周期与A类同步,如果A类不会卸载,那么b对象会常驻内存,直到程序终止。 避免过多过常地创建Java对象 尽量避免在经常调用的方法,循环中new对象,由于系统不仅要花费时间来创建对象,而且还要花时间对这些对象进行垃圾回收和处理,在我们可以控制的范围内,最大限度地重用对象,最好能用基本的数据类型或数组来替代对象。 使用final修饰符 带有final修饰符的类是不可派生的。在JAVA核心API中,有许多应用final的例子,例如java、lang、String

Spring Boot Cache使用与整合

浪尽此生 提交于 2021-01-08 20:15:07
Spring 提供了对缓存功能的抽象:即允许绑定不同的缓存解决方案(如Caffeine、Ehcache等),但本身不直接提供缓存功能的实现。它支持注解方式使用缓存,非常方便。 SpringBoot在annotation的层面实现了数据缓存的功能,基于Spring的AOP技术。所有的缓存配置只是在annotation层面配置,像声明式事务一样。 Spring定义了CacheManager和Cache接口统一不同的缓存技术。其中CacheManager是Spring提供的各种缓存技术的抽象接口。而Cache接口包含缓存的各种操作。 Cache接口下Spring提供了各种xxxCache的实现,如RedisCache,EhCacheCache ,ConcurrentMapCache等; 一,缓存技术类型与CacheManger 针对不同的缓存技术,需要实现不同的cacheManager,Spring定义了如下的cacheManger实现。 CacheManger 描述 SimpleCacheManager 使用简单的Collection来存储缓存,主要用于测试 ConcurrentMapCacheManager 使用ConcurrentMap作为缓存技术 (默认) ,需要显式的删除缓存,无过期机制 NoOpCacheManager 仅测试用途,不会实际存储缓存

Specifying the order of proxy creation in Spring

浪子不回头ぞ 提交于 2021-01-03 05:27:34
问题 I have a Spring Application where I have the following skeleton class class ServiceCaller { public Result callService() { //call a remote service } } Since calling a remote service is an expensive operation, I added caching in my application. I used EhCache Spring annotations @Cacheable and applied it to the callService() method. Everything was working fine and my Result objects were getting correctly cached. Later I wanted to add a logger across all my ServiceCaller s such that my logger

Shiro要点概览与SpringBoot整合实例

筅森魡賤 提交于 2020-12-29 22:19:40
1. 简介 概念 说明 Subject 主体,简化点说就是用户实体 Principal Subject的唯一标识,如id、用户名、手机号、邮箱等 Credential 凭证信息,主体证明自己的东西,如密码、证书等 Authenticator 认证器,对Subject身份进行认证,例如验证用户的用户名和密码是否匹配 Authorizer 授权器,通过认证器认证之后,要访问资源,还得获得资源授权 sessionManager 会话管理,不依赖web容器的session,可以将分布式应用的会话集中在一点管理,实现单点登录,自定义可继承DefaultWebSessionManager SecurityManager 安全管理器,继承了Authenticator,Authorizer, SessionManager,对全部的subject进行安全管理 Realm 领域,实际认证和授权的地方,因为shiro不知道你的用户和密码相关数据,所以一般需要自定义Realm完成认证和授权 SessionDAO 对session会话操作的一套接口,自定义可继承EnterpriseCacheSessionDAO CacheManager 缓存管理,将用户权限数据存储在缓存,避免每次访问数据库 Cryptography 密码管理,加密/解密的组件,如:常用的散列、加解密等功能 2.

Java Web从前端到后台常用框架介绍

拜拜、爱过 提交于 2020-12-26 19:06:12
一、SpringMVC Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。 模型(Model ) 封装了应用程序的数据和一般他们会组成的POJO。 视图(View) 是负责呈现模型数据和一般它生成的HTML输出,客户端的浏览器能够解释。 控制器(Controller ) 负责处理用户的请求,并建立适当的模型,并把它传递给视图渲染。 Spring的web模型 - 视图 - 控制器(MVC)框架是围绕着处理所有的HTTP请求和响应的DispatcherServlet的设计。 Spring Web MVC处理请求的流程 具体执行步骤如下 : 1、 首先用户发送请求————>前端控制器,前端控制器根据请求信息(如URL)来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前的控制器的控制逻辑部分;图2-1中的1、2步骤; 2、 页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,这个对象在Spring Web MVC中叫命令对象,并进行验证,然后将命令对象委托给业务对象进行处理;处理完毕后返回一个ModelAndView

Ehcache详细解读

岁酱吖の 提交于 2020-12-24 07:26:03
Ehcache 是现在最流行的纯Java开源缓存框架,配置简单、结构清晰、功能强大,最初知道它,是从Hibernate的缓存开始的。网上中文的EhCache材料以简单介绍和配置方法居多,如果你有这方面的问题,请自行google;对于API,官网上介绍已经非常清楚,请参见官网;但是很少见到特性说明和对实现原理的分析,因此在这篇文章里面,我会详细介绍和分析EhCache的特性,加上一些自己的理解和思考,希望对缓存感兴趣的朋友有所收获。 一、特性一览 ,来自官网,简单翻译一下: 1、快速轻量 过去几年,诸多测试表明Ehcache是最快的Java缓存之一。 Ehcache的线程机制是为大型高并发系统设计的。 大量性能测试用例保证Ehcache在不同版本间性能表现得一致性。 很多用户都不知道他们正在用Ehcache,因为不需要什么特别的配置。 API易于使用,这就很容易部署上线和运行。 很小的jar包,Ehcache 2.2.3才668kb。 最小的依赖:唯一的依赖就是SLF4J了。 2、伸缩性 缓存在内存和磁盘存储可以伸缩到数G,Ehcache为大数据存储做过优化。 大内存的情况下,所有进程可以支持数百G的吞吐。 为高并发和大型多CPU服务器做优化。 线程安全和性能总是一对矛盾,Ehcache的线程机制设计采用了Doug Lea的想法来获得较高的性能。 单台虚拟机上支持多缓存管理器。