SpringBoot SpringBoot 开发实用篇 5 整合第三方技术 5.5 变更缓存供应商 Ehcache

news2024/11/16 7:27:42

SpringBoot

【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】

SpringBoot 开发实用篇

文章目录

      • SpringBoot
      • SpringBoot 开发实用篇
      • 5 整合第三方技术
        • 5.5 变更缓存供应商 Ehcache
          • 5.5.1 缓存实现方案
          • 5.5.2 缓存供应商变更
          • 5.5.3 小结
          • 5.5.4 知识加油站【扩展】

5 整合第三方技术

5.5 变更缓存供应商 Ehcache

5.5.1 缓存实现方案

SpringBoot提供了缓存的统一整合接口,方便缓存技术的开发与管理

  • Generic
  • JCache
  • Ehcache
  • Hazelcast
  • Infinispan
  • Couchbase
  • Redis
  • Caffeine
  • Simple(默认)【之前我们做的都是基于这个默认的,包括手机验证码案例】
  • memcached
5.5.2 缓存供应商变更

【为什么要改,因为专门做缓存的公司搞的缓存技术更专业,哈哈哈哈】

【这一节用 Ehcache】

【导入坐标】

<dependency>
    <groupId>net.sf.ehcache</groupId>
    <artifactId>ehcache</artifactId>
</dependency>

在这里插入图片描述

【配置】

在这里插入图片描述

改成ehcache

在这里插入图片描述

如果我pom 中不提供坐标,这里又要硬用

在这里插入图片描述

可以看到, 工程都跑不起来

恢复正常,再次运行

在这里插入图片描述

可以看到,打开了,还是报错了

【原因】

ehcache 是一个 Spring 以外的技术,要想使用必须对它进行配置

在resources 目录下添加一个新的配置文件,ehcache.xml

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
         updateCheck="false">
    <diskStore path="D:\ehcache" />

    <!--默认缓存策略 -->
    <!-- external:是否永久存在,设置为true则不会被清除,此时与timeout冲突,通常设置为false-->
    <!-- diskPersistent:是否启用磁盘持久化-->
    <!-- maxElementsInMemory:最大缓存数量-->
    <!-- overflowToDisk:超过最大缓存数量是否持久化到磁盘-->
    <!-- timeToIdleSeconds:最大不活动间隔,设置过长缓存容易溢出,设置过短无效果,可用于记录时效性数据,例如验证码-->
    <!-- timeToLiveSeconds:最大存活时间-->
    <!-- memoryStoreEvictionPolicy:缓存清除策略-->
    <defaultCache
        eternal="false"
        diskPersistent="false"
        maxElementsInMemory="1000"
        overflowToDisk="false"
        timeToIdleSeconds="60"
        timeToLiveSeconds="60"
        memoryStoreEvictionPolicy="LRU" />

</ehcache>

再次重启服务器

在这里插入图片描述

OK,成功启动了

跑一下我们做的手机号验证码案例

在这里插入图片描述

好家伙,又直接报错了

【原因是】

我们之前写了一个缓存空间名称,想起来了

在这里插入图片描述

这玩意儿,现在我们换缓存技术了,它找不到这个东西,

在这里插入图片描述

因为默认的时候我们啥也没配,但是,现在换技术了,就要进行配置了

配一下

<cache
        name="smsCode"
        eternal="false"
        diskPersistent="false"
        maxElementsInMemory="1000"
        overflowToDisk="false"
        timeToIdleSeconds="10"
        timeToLiveSeconds="10"
        memoryStoreEvictionPolicy="LRU" />

在这里插入图片描述

现在就声明了这个空间了

再次运行

在这里插入图片描述

成功启动,再次跑一下那个案例

获取验证码

在这里插入图片描述

校验

在这里插入图片描述

没毛病

可以看到,我们压根儿没有修改代码,就添加了一些配置,就无缝换到一种新的缓存技术了

现在试试修改一下缓存的过期时间

在这里插入图片描述

那就不改了,这说明什么,10s 钟之后这个缓存就毙掉了

试试

在这里插入图片描述

没毛病,刚好十秒

【不同的数据就可以设置不同的缓存策略】【喵喵喵啊!】

回顾一下

  • 加入Ehcache坐标(缓存供应商实现)

在这里插入图片描述

  • 缓存设定为使用Ehcache

在这里插入图片描述

  • 提供ehcache配置文件ehcache.xml

在这里插入图片描述

  • 提供ehcache配置文件ehcache.xml

在这里插入图片描述

5.5.3 小结
  1. 变更缓存供应商为Ehcache
5.5.4 知识加油站【扩展】

【数据淘汰策略】

数据淘汰策略中的LRU 和 LFU 的区别

【影响数据淘汰的相关配置】

  • 检测易失数据(可能会过期的数据集 server.db[i].expires)
    • volatile-Iru:挑选最近最少使用的数据淘汰
    • volatile-lfu:挑选最近使用次数最少的数据淘汰
    • volatile-ttl:挑选将要过期的数据淘汰
    • volatile-random:任意选择数据淘汰

LRU: Least Recently Used

LFU: Least Frequently Used

举个栗子:

在这里插入图片描述

在这9秒钟,这四个数据一共被访问了9次,每个key 头上的数字就代表其被访问的次数

下面的秒数 是 对应的key 最后一次被点击的秒数

OK,现在一个问题,5s 和 7s 哪一个访问离现在更短,很明显 是7s

现在这4个 key 中离现在时间最短的是哪个?很明显是 9s【说明9s 对应的name key 刚用过没多久】

最长是5s age, 说明这个key 在这段时间里,已经好久都没有访问过了

在这里插入图片描述

那么LRU 就是淘汰age 这种数据,最长时间没有被使用的

在这里插入图片描述

再看这两个数据,4 和 1,说明age 使用率比较高

那么LFU 就是这样一种策略,淘汰最不频繁被使用的

在这里插入图片描述

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

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

相关文章

部署支持使用Redis哨兵模式,支持纳管ClickHouse数据库,JumpServer堡垒机v2.28.0发布

2022年11月21日&#xff0c;JumpServer开源堡垒机正式发布v2.28.0版本。在这一版本中&#xff0c;JumpServer的部署支持使用Redis哨兵集群作为后端缓存数据库&#xff0c;从而使系统更加健壮和高可用。操作日志审计方面&#xff0c;新增支持查看资源变更信息。当资源有新增、更…

今天给大家介绍一篇基基于SSM超市管理系统的设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

【迁移学习】分布差异的度量以及迁移学习的统一表征方法

在文本分类中&#xff0c;由于文本数据有其领域特殊性&#xff0c;因此&#xff0c;在一个领域上训练的分类器&#xff0c;不能直接拿来作用到另一个领域上&#xff0c;这就需要用到迁移学习。 迁移学习是机器学习中重要的研究领域&#xff0c;ICML、NIPS、AAAI、ICIR等国际人工…

号码认证平台有哪些?号码认证平台费用?

随着互联网的发展&#xff0c;电话经常接到骚扰电话、买房、保险等电话&#xff0c;让用户不胜其扰。目前提供电话标记的软件个数达到几十款之多&#xff0c;可以有效预防诈骗发生&#xff0c;也暴露出“号码标记随意性强”“错误标记取消难”等一系列问题。如果被恶意标记&…

Rancher 全球化部署最佳实践

作者 万绍远&#xff0c;CNCF 基金会官方认证 Kubernetes CKA&CKS 工程师&#xff0c;云原生解决方案架构师。对 ceph、Openstack、Kubernetes、prometheus 技术和其他云原生相关技术有较深入的研究。参与设计并实施过多个金融、保险、制造业等多个行业 IaaS 和 PaaS 平台设…

美欧之后,台湾地区推出芯片法案:搞研发、买设备最高抵减50%税额

前言 在全球科技博弈加剧的背景下&#xff0c;芯片作为资本与技术双密集型产业&#xff0c;在全球产业链的重要地位已经不言而喻。 今年以来&#xff0c;欧洲、美国、日本、韩国、印度等国家/地区陆续出台了扶持半导体产业发展的法案&#xff0c;以加强本土半导体实力。而台湾…

肝不完这份HTTP八股文的你,再强大也是假的

关于网络模型 OSI 网络模型 应用层&#xff0c;给用户提供应用功能&#xff1b;表示层&#xff0c;负责把数据转换成兼容另一个系统能识别的格式&#xff1b;会话层&#xff0c;负责建立、维持、同步会话&#xff1b;传输层&#xff0c;负责端到端的数据传输&#xff1b;网络…

创新型中小企业认定

目前申报省级专精特新之前需要先认定创新型中小企业。创新型中小企业需要满足哪些条件才能进行认定呢&#xff1f;下面我就来详细的介绍一下&#xff1a; 一、评价方式&#xff1a; 由企业按属地原则自愿登录培育平台参与自评&#xff0c;省级中小企业主管部门根据评价标准&a…

目标检测算法——YOLOv5/YOLOv7改进之结合​ASPP(空洞空间卷积池化金字塔)

>>>深度学习Tricks&#xff0c;第一时间送达<<< 目录 一、前沿介绍 1.空洞卷积&#xff08;Atrous Convolution&#xff09; 2.空洞空间卷积池化金字塔&#xff08;Atrous Spatial Pyramid Pooling&#xff09; 二、YOLOv5/YOLOv7改进之结合​​ASPP 1.…

CANoe-Ethernet IG和Ethernet Packet Builder的使用和区别

Ethernet IG和Ethernet Packet Builder都是CANoe仿真以太网报文发送的模块,但是在用途上各有不同 1. Ethernet IG 以太网IG模块允许用户以多种方式发送以太网帧、UDP报文和TCP报文。可以发送一次,也可以按照指定的周期时间循环发送 创建以太网IG的步骤如下: 在Simulation …

2.5A强驱动能力,舞台灯光驱动TMI8263锻造“中国芯”

舞台艺术&#xff0c;自古以来就是人们享受生活不可或缺的艺术形式&#xff0c;一段赏心悦目的舞台表演能为观众带来从视听感官到心灵的艺术洗礼。 现在的舞台艺术&#xff0c;越来越追求极致的视觉效果&#xff0c;舞台灯光起着非常关键的作用。 一场舞台表演&#xff0c;需要…

Linux 之 Linux/Ubuntu 中开发操作中常用的命令整理

Linux 之 Linux/Ubuntu 中开发操作中常用的命令整理 目录 Linux 之 Linux/Ubuntu 中开发操作中常用的命令整理 一、简单介绍 二、常用命令 1、 打开终端 &#xff1a;Ctrl Alt T 2、退出终端&#xff1a;exit 3、查看安装 Ubuntu 版本/显示系统等信息&#xff1a;uname…

豆瓣评分9.0,《Java核心技术与面试》神作,已帮助1374人拿到Offer

Java的知识点实在太多&#xff0c;如果什么都去学&#xff0c;而不是精学工作和面试中常用的知识点&#xff0c;那不仅会造成学习效率低下&#xff0c;而且会让大家迷失在海量的知识中。结果是&#xff0c;大家投入了大量时间&#xff0c;也学了不少知识点&#xff0c;但是无法…

汇编逆向-入门

Qt源码解析 索引 汇编逆向— 授权破解示例分析 问题模拟 运行环境 x64dbgWindows 10serial.exe 运行效果 输入注册信息不对提示错误。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tV3bdLGO-1669017713175)(D:\Work\Code\luxiang\CSDN\ASM-…

element 表格字段过长

element 表格 - 表头太长换行 解决方案一&#xff1a;show-overflow-tooltip Table表格&#xff0c;如果每列显示的内容过长则可以使用该属性&#xff0c;即 :show-overflow-tooltip“true”&#xff0c;该属性可以让内容在一行显示&#xff0c;如果显示不下时&#xff0c;显示…

智能晾衣架(一)--设计

本文素材来源于红河学院 工学院 作者&#xff1a;赵德森 张艺锦 潘志慧 曹紫康 指导老师&#xff1a;江洁 张龙超 一、简介 本作品设计的晾衣系统从人们日常生活研究设计&#xff0c;体积小&#xff0c;收纳方便&#xff0c;不占空间可以在日常生活中极大的便利用户。我们…

MyBatis 源码分析之 Select 语句执行(上)

三哥 内容来自【自学星球】 欢迎大家来了解我的星球&#xff0c;和星主&#xff08;也就是我&#xff09;一起学习 Java &#xff0c;深入 Java 体系中的所有技术。我给自己定的时间是一年&#xff0c;无论结果如何&#xff0c;必定能给星球中的各位带来点东西。 想要了解更多&…

盘点敏捷项目失败的6个主要原因

敏捷项目管理及其相关的方法和价值观正在迅速改变着许多企业的运作方式。改善灵活性、提高协作和生产力以及加强客户联系的承诺&#xff0c;敏捷的种种好处摆在企业决策者面前。 然而&#xff0c;直接运行成功的敏捷项目并不是必然的。是什么原因导致敏捷管理失败&#xff1f…

公众号免费调用题库

公众号免费调用题库 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查题校园题库&#xff1a;查题校园题库后台&#xff08;点击…

Reading Note(8) ——GNN for DSE

这篇博客是一篇论文阅读札记&#xff0c;这篇论文的主题是使用GNN来优化加速器设计中的设计空间探索耗时过长的问题。 这篇文章的标题是《Enabling Automated FPGA Accelerator Optimization Using Graph Neural Networks》&#xff0c;值得注意的是这是它的预印版&#xff0c…