Ehcache

我设计了一个牛逼的本地缓存!

百般思念 提交于 2020-12-17 20:54:24
点击上方 java项目开发 , 选择 设为星标 优质文章,及时送达 -- 作者:ksfzhaohui http://dwz.win/Ws4 最近在看Mybatis的源码,刚好看到缓存这一块,Mybatis提供了一级缓存和二级缓存;一级缓存相对来说比较简单,功能比较齐全的是二级缓存,基本上满足了一个缓存该有的功能;当然如果拿来和专门的缓存框架如ehcache来对比可能稍有差距;本文我们将来整理一下实现一个本地缓存都应该需要考虑哪些东西。 考虑点 考虑点主要在数据用何种方式存储,能存储多少数据,多余的数据如何处理等几个点,下面我们来详细的介绍每个考虑点,以及该如何去实现; 1.数据结构 首要考虑的就是数据该如何存储,用什么数据结构存储,最简单的就直接用Map来存储数据;或者复杂的如redis一样提供了多种数据类型哈希,列表,集合,有序集合等,底层使用了双端链表,压缩列表,集合,跳跃表等数据结构; 2.对象上限 因为是本地缓存,内存有上限,所以一般都会指定缓存对象的数量比如1024,当达到某个上限后需要有某种策略去删除多余的数据; 3.清除策略 上面说到当达到对象上限之后需要有清除策略,常见的比如有LRU(最近最少使用)、FIFO(先进先出)、LFU(最近最不常用)、SOFT(软引用)、WEAK(弱引用)等策略; 4.过期时间 除了使用清除策略,一般本地缓存也会有一个过期时间设置

教你设计一个超牛逼的本地缓存!

瘦欲@ 提交于 2020-12-17 20:54:03
点击上方“ 掌上编程 ”,选择“ 置顶或者星标 ” 优质文章第一时间送达! 来源:ksfzhaohui juejin.im/post/5dd942e15188257324096fe7 前言 考虑点 如何实现 总结 前言 最近在看Mybatis的源码,刚好看到缓存这一块,Mybatis提供了一级缓存和二级缓存;一级缓存相对来说比较简单,功能比较齐全的是二级缓存,基本上满足了一个缓存该有的功能;当然如果拿来和专门的缓存框架如ehcache来对比可能稍有差距;本文我们将来整理一下实现一个本地缓存都应该需要考虑哪些东西。 考虑点 考虑点主要在数据用何种方式存储,能存储多少数据,多余的数据如何处理等几个点,下面我们来详细的介绍每个考虑点,以及该如何去实现; 1.数据结构 首要考虑的就是数据该如何存储,用什么数据结构存储,最简单的就直接用Map来存储数据;或者复杂的如redis一样提供了多种数据类型哈希,列表,集合,有序集合等,底层使用了双端链表,压缩列表,集合,跳跃表等数据结构; 2.对象上限 因为是本地缓存,内存有上限,所以一般都会指定缓存对象的数量比如1024,当达到某个上限后需要有某种策略去删除多余的数据; 3.清除策略 上面说到当达到对象上限之后需要有清除策略,常见的比如有LRU(最近最少使用)、FIFO(先进先出)、LFU(最近最不常用)、SOFT(软引用)、WEAK(弱引用

手把手教设计一个牛逼的Java本地缓存

瘦欲@ 提交于 2020-12-17 19:28:40
点击蓝色“ Java后端编程 ”关注我哟 加个“ 星标 ”,每天下午 17:33,干货推送! 来源: ksfzhaohui | http://dwz.win/Ws4 最近在看Mybatis的源码,刚好看到缓存这一块,Mybatis提供了一级缓存和二级缓存;一级缓存相对来说比较简单,功能比较齐全的是二级缓存,基本上满足了一个缓存该有的功能;当然如果拿来和专门的缓存框架如ehcache来对比可能稍有差距;本文我们将来整理一下实现一个本地缓存都应该需要考虑哪些东西。 考虑点 考虑点主要在数据用何种方式存储,能存储多少数据,多余的数据如何处理等几个点,下面我们来详细的介绍每个考虑点,以及该如何去实现; 1.数据结构 首要考虑的就是数据该如何存储,用什么数据结构存储,最简单的就直接用Map来存储数据;或者复杂的如redis一样提供了多种数据类型哈希,列表,集合,有序集合等,底层使用了双端链表,压缩列表,集合,跳跃表等数据结构; 2.对象上限 因为是本地缓存,内存有上限,所以一般都会指定缓存对象的数量比如1024,当达到某个上限后需要有某种策略去删除多余的数据; 3.清除策略 上面说到当达到对象上限之后需要有清除策略,常见的比如有LRU(最近最少使用)、FIFO(先进先出)、LFU(最近最不常用)、SOFT(软引用)、WEAK(弱引用)等策略; 4.过期时间 除了使用清除策略

Why isn't the Bean found? (Spring 4.x EhCache 3.x, Apache Tomcat 7)

喜你入骨 提交于 2020-12-15 01:47:41
问题 Trying to add a cache to an existing Spring 4.3 ( not SpringBoot) application Using EhCache 3.5, It is confusing. beans.xml <bean id="ehCacheManager" class="org.springframework.cache.jcache.JCacheCacheManager"> <property name="cacheManager"> <bean class="org.springframework.cache.jcache.JCacheManagerFactoryBean" jsr107:cacheManagerUri="classpath:ehcache.xml"/> </property> </bean> MyCacheService.java package com.me; import org.springframework.cache.CacheManager; import org.springframework

Why isn't the Bean found? (Spring 4.x EhCache 3.x, Apache Tomcat 7)

走远了吗. 提交于 2020-12-15 01:47:12
问题 Trying to add a cache to an existing Spring 4.3 ( not SpringBoot) application Using EhCache 3.5, It is confusing. beans.xml <bean id="ehCacheManager" class="org.springframework.cache.jcache.JCacheCacheManager"> <property name="cacheManager"> <bean class="org.springframework.cache.jcache.JCacheManagerFactoryBean" jsr107:cacheManagerUri="classpath:ehcache.xml"/> </property> </bean> MyCacheService.java package com.me; import org.springframework.cache.CacheManager; import org.springframework

Why isn't the Bean found? (Spring 4.x EhCache 3.x, Apache Tomcat 7)

此生再无相见时 提交于 2020-12-15 01:43:51
问题 Trying to add a cache to an existing Spring 4.3 ( not SpringBoot) application Using EhCache 3.5, It is confusing. beans.xml <bean id="ehCacheManager" class="org.springframework.cache.jcache.JCacheCacheManager"> <property name="cacheManager"> <bean class="org.springframework.cache.jcache.JCacheManagerFactoryBean" jsr107:cacheManagerUri="classpath:ehcache.xml"/> </property> </bean> MyCacheService.java package com.me; import org.springframework.cache.CacheManager; import org.springframework

Number of objects cached in production using EhCache

僤鯓⒐⒋嵵緔 提交于 2020-12-13 03:23:05
问题 Is there any way to know the number of objects cached in production? I am using EhCache on my project and NewRelic for monitoring. I don't know if that help me too or if there is integration for NewRelic with EhCache. 回答1: You could potentially use NewRelic's JMX integration, but also there is JCache API integration in NewRelic, which may instrument the right parts if you are using the JCache compatible features of EhCache. If you want to export select JMX information, then you need to

阿里云短信发送

随声附和 提交于 2020-11-08 09:13:14
    阿里云短信平台,可以提供三种短信模板形式(1、验证码模板;2、通知类消息模板;3、推广短信模板)     验证码模板形式:验证码${code},您正在进行身份验证,打死不要告诉别人哦!     通知类消息模板:尊敬的${name}用户,恭喜您成功注册为本商城的会员用户,相信本商城会为您带来良好的体验效果,祝您生活愉快!     推广短信模板:短信测试,短信测试,短信测试,短信测试,短信测试,短信测试     (注:推广短信模板无需参数,其他两个均需要)     (注意:以下方法基本放在service层) 一、开发前准备     1、下载SDK工具包     SDK工具包中一共包含了2个类库,一个aliyun-java-sdk-core包,另外一个是alicom-dysms-api包,将这两个包执行mvn package命令或者mvn deploy命令打包出相应的jar包,添加到工程类库中依赖使用。     SDK&DEMO[ 下载地址 ] 二、编写代码     1、编写短信统一处理函数     SendSmsResponse send(String mobiles, String content, String TemplateCode);     返回值:SendSmsResponse (用于确定是否发送短信成功),判断条件:      if

Mybatis框架基础-03

杀马特。学长 韩版系。学妹 提交于 2020-11-07 09:40:37
1.分页 分页的目的:减少数据的处理量 用Mybatis实现分页 接口 //分页查询 List < student > getstuBylimit ( Map < String , Integer > map ) ; Mapper.Xml <!--分页查询--> < select id = " getstuBylimit " parameterType = " map " resultType = " com.wang.pojo.student " > select * from student limit #{startindex},#{pagesize}; </ select > 测试 @Test public void getlimit ( ) { SqlSession sqlSession = MybatisUtils . getSqlSession ( ) ; StuMapper mapper = sqlSession . getMapper ( StuMapper . class ) ; HashMap < String , Integer > map = new HashMap < String , Integer > ( ) ; map . put ( "startindex" , 2 ) ; map . put ( "pagesize" , 2 ) ; List

常见面试题之缓存雪崩、缓存穿透、缓存击穿

吃可爱长大的小学妹 提交于 2020-11-03 03:35:49
前言 ❝ Hello,everybody,我是asong,今天与大家一起来聊一聊面试中几个常见的缓存问题。为什么会突然想做一篇这个文章呢,今天翻了一下我当初准备面试时整理的一些资料,发现缓存在面试中占比还是很高的,当初为了面试也是背了好久的,不过因为都是背的,现在也有点忘了,今天就想着好好整理一下这一部分,好好记录一下。因为自己能力有限,这一篇主讲通俗易懂,不涉及太难的缓存使用场景。好啦,我们开始吧。 ❞ 缓存应用 缓存在我们平常的项目中多多少少都会使用到,缓存使用的使用场景还是比较多的,缓存是分布式系统中的重要组件,主要解决高并发、大数据场景下,热点数据访问的性能问题。提高性能的数据快速访问。一提到缓存,这些是我们都能想到的一些缓存应用场景,但是我们是不太清楚缓存的本质思想是什么的。缓存的基本思想就是我们非常熟悉的空间换时间。缓存也并不是那么的高大上,虽然他可以为系统的性能进行提升。缓存的思想实际在操作系统或者其他地方都被大量用到。比如 「CPU Cache 缓存的是内存数据用于解决 CPU 处理速度和内存不匹配的问题,内存缓存的是硬盘数据用于解决硬盘访问速度过慢的问题。」 「再比如操作系统在 页表方案 基础之上引入了 快表 来加速虚拟地址到物理地址的转换。我们可以把快表理解为一种特殊的高速缓冲存储器(Cache)。」 上面简单介绍了缓存的基本思想,现在回到业务系统来说:*