设置缓存的大小

2023-11-08

目录

1     CacheManager级别

2     Cache级别

3     大小衡量

4     配置大小示例

       缓存大小的限制可以设置在CacheManager上,也可以设置在单个的Cache上。我们可以设置缓存使用内存的大小,也可以设置缓存使用磁盘的大小,但是使用堆内存的大小是必须设置的,其它可设可不设,默认不设就是无限制。在设置缓存大小的时候,我们可以设置缓存使用某一个存储器的最大字节数,也可以设置缓存在某一个存储器上最多存放元素的数量。

1       CacheManager级别

       CacheManager级别有三个属性可以分别用来限制三种存储器缓存信息的大小,其控制的都是字节数,分别是maxBytesLocalHeap、maxBytesLocalOffHeap和maxBytesLocalDisk。CacheManager级别限制的大小是其内所有的Cache共享的。

       maxBytesLocalHeap是用来限制缓存所能使用的堆内存的最大字节数的,其单位可以是K、M或G,不区分大小写。默认是0,表示不限制。但是当我们没有指定CacheManager级别的maxBytesLocalHeap时,我们必须在每一个Cache上指定maxBytesLocalHeap或maxEntriesLocalHeap。

       maxBytesLocalOffHeap是用来限制缓存所能使用的非堆内存的最大字节数,其单位也可以是K、M或G。默认是0,表示不限制。但是当我们在CacheManager级别指定了maxBytesLocalOffHeap时就会隐式的使所有Cache级别的overflowToOffHeap为true,在Cache级别使用该属性时只会使当前Cache的overflowToOffHeap为true。如果此时不需要overflowToOffHeap的话,那么我们需要在Cache级别显示的指定overflowToOffHeap为false。只有企业版的Ehcache才能使用非堆内存存储缓存信息。

       maxBytesLocalDisk是用来限制缓存所能使用的磁盘的最大字节数的,其单位可以是K、M或G。默认是0,表示不限制。只有在单机环境下才可以使用本地磁盘,分布式环境下是不可以使用的。另外,这个设置只适用于临时将缓存内的信息写入到磁盘的情况,对于持久化缓存信息到磁盘的情况是不适用的。Cache级别的maxBytesLocalDisk同样如此。当我们在CacheManager级别指定了maxBytesLocalDisk时会隐式的指定所有Cache的overflowToDisk为true,而Cache级别只会使当前Cache的overflowToDisk为true。

       下面是一个在CacheManager级别指定缓存大小限制的示例,在该示例中我们指定了该CacheManager所能使用的最大堆内存是500M,最大非堆内存是2G,使用本地磁盘的最大字节数是50G。

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
   maxBytesLocalHeap="500M" maxBytesLocalOffHeap="2G" maxBytesLocalDisk="50G">
 
</ehcache>

2       Cache级别

       在CacheManager上能够指定的限制大小的参数在Cache级别都能使用。

当我们在Cache级别指定了某种类型的限制大小后,该Cache将不再共享CacheManager内的该种限制了。如我们在CacheManager级别限制了堆内存的最大使用数maxBytesLocalHeap为1G,意味着CacheManager内的所有的Cache将共享这1G的堆内存,如果这个时候我们指定CacheManager内的cache1的最大使用堆内存数maxBytesLocalHeap为200M,那就意味着cache1的堆内存最大使用数只能是其自身设置的200M了,而其它Cache只能共享剩余的824M了。

       与CacheManager不同的是我们在Cache级别上指定maxBytesLocalHeap、maxBytesLocalOffHeap和maxBytesLocalDisk时还可以使用百分比的形式,前提是对应的限制在CacheManager上有指定。打个比方,我们的CacheManager有如下配置,我们指定了其最多使用的堆内存是500M,那么这个时候我们在其中定义了一个Cache,在指定其maxBytesLocalHeap时我们可以指定其值为百分比形式,如50%,表示我们的Cache最多使用CacheManager级别的maxBytesLocalHeap的50%,即250M。而如果我们试图在该Cache上使用百分比的时候指定maxBytesLocalDisk时则会出错,因为我们没有在CacheManager级别上指定maxBytesLocalDisk,Ehcache也就无法知道你这个百分比到底是多少了。需要注意的是我们所有Cache上指定的字节数大小之和不能超过CacheManager上对应的限制大小;所有Cache上对应限制以百分比形式指定的和不能超过100%。

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
   maxBytesLocalHeap="500M">
 
</ehcache>

此外,在Cache级别我们还可以利用两个属性来限制在堆内存或者是磁盘上缓存元素的最大数,这两个属性是maxEntriesLocalHeap和maxEntriesLocalDisk,而对于非堆内存OffHeap的话是不能指定元素的最大数量的。

       maxEntriesLocalHeap是用来限制当前缓存在堆内存上所能保存的最大元素数量的。Ehcache规定如果在CacheManager上没有指定maxBytesLocalHeap时必须在各个Cache上指定maxBytesLocalHeap或者maxEntriesLocalHeap,但maxEntriesLocalHeap和maxBytesLocalHeap不能同时出现。也就是说我们不能在一个Cache上同时指定maxBytesLocalHeap和maxEntriesLocalHeap,当然我们也不能在Cache上指定maxEntriesLocalHeap的同时在CacheManager上指定maxBytesLocalHeap。但同时在CacheManager和Cache上指定maxBytesLocalHeap则是允许的。

       maxEntriesLocalDisk是用来限制在磁盘上所能保存的元素的最大数量的。(暂时觉得这种保存的数量限制应该是对应于持久化的保存)。

3       大小衡量

       放在Cache里面的元素将会使用net.sf.ehcache.pool.sizeof.SizeOf来衡量其大小,当然这种衡量只是针对于存在堆内存里面的元素而言的,因为非堆内存和磁盘上我们是直接存的字节,可以直接来计算字节。元素的大小包括元素的key和value,以及其它属性信息,而且在计算大小时这些信息都是递归计算的,即如果value关联了另外一个对象B,那么B的大小也会被计算在内。如果我们不想计算元素内部某部分内容的大小的话,我们可以通过使用net.sf.ehcache.pool.sizeof.annotations.IgnoreSizeOf注解来标记忽略该内容的大小。IgnoreSizeOf是不会考虑继承性的,也就是说如果你将IgnoreSizeOf标注在类型A上,那么将只会忽略A的大小,而不会忽略A的子类B的大小,如果也需要忽略B的大小的话,则需要在类B上也使用IgnoreSizeOf进行标注。

IgnoreSizeOf可以标记在三个地方。

       (1)属性上:表示忽略某对象的对应属性。如下表示我们将忽略User对象的role属性。

    public class User {  
       
       @IgnoreSizeOf  
       private Role role;  
        
    }  

    (2)类上:表示将忽略该中类型。如下表示我们将忽略User类型。

    @IgnoreSizeOf  
    public class User {  
       
       private String name;  
        
    }  

       (3)包上:标记在包上的时候是标记在包对应的package-info.java上,表示将忽略该包下面所有的类型,如我们要忽略com.xxx.xxx包下的所有内容时可以在该包对应的package-info.java文件中的package上使用IgnoreSizeOf注解进行标注。

    @net.sf.ehcache.pool.sizeof.annotations.IgnoreSizeOf  
    package com.xxx.xxx;  

此外,我们也可以通过全限定名的方式指定在计算Cache中元素的大小时哪些属性、类和包需要忽略,然后把这些信息写在一个属性文件里面,再将系统属性net.sf.ehcache.sizeof.filter指向该文件。系统属性可以通过java –Dnet.sf.ehcache.sizeof.filter来指定。
 

       如上所述,我们的SizeOf在进行大小衡量的时候是进行递归衡量的,即会计算对象所持有的引用、引用的引用等。针对于此,我们可以来指定SizeOf在进行大小衡量时的一个策略,sizeOfPolicy。sizeOfPolicy有CacheManager级别的和Cache级别的,分别对应于ehcache子元素和cache子元素或defaultCache子元素。当Cache级别和CacheManager级别同时指定有sizeOfPolicy时,Cache级别的配置将覆盖CacheManager级别的配置。sizeOfPolicy元素有两个属性,maxDepth和maxDepthExceededBehavior。

l  maxDepth表示链接的最大深度。

l  maxDepthExceededBehavior表示当访问的深度超过指定的maxDepth后的行为,对应有continue和abort两种。continue将给出一个警告,然后继续计算大小,这是默认值;abort将给出警告,然后中止此次计算,并标记没有跟踪到内存的使用。

4       配置大小示例

(1)只在CacheManager级别指定大小限制,没有在Cache级别指定,这种情况下cache1、cache2、cache3将平分CacheManager级别的大小限制,即各自拥有CacheManager级别的heap、offHeap和disk三分之一的容量。

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
   maxBytesLocalHeap="500M" maxBytesLocalOffHeap="5G" maxBytesLocalDisk="50G">
  
   <cache name="cache1"/>
   <cache name="cache2"/>
   <cache name="cache3"/>
 
</ehcache>

(2)CacheManager级别指定了大小限制,同时某些Cache也指定了大小限制。如下,我们指定了cache1的maxBytesLocalHeap为200M,这个时候cache1将可以使用到200M的堆内存,而cache2和cache3将平分CacheManager级别除去cache1所拥有的200M之外的堆内存,即各150M。而CacheManager级别的offHeap和disk容量将由cache1、cache2和cache3平分,各得三分之一。

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
   maxBytesLocalHeap="500M" maxBytesLocalOffHeap="5G" maxBytesLocalDisk="50G">
  
   <cache name="cache1" maxBytesLocalHeap="200M"/>
   <cache name="cache2"/>
   <cache name="cache3"/>
 
</ehcache>

(3)CacheManager不指定大小限制,Cache级别指定大小限制。这个时候将各用各的,即各个Cache只能使用其自身指定好的大小。

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd">
  
   <cache name="cache1" maxBytesLocalHeap="200M"/>
   <cache name="cache2" maxBytesLocalHeap="300M"/>
   <cache name="cache3" maxBytesLocalHeap="200M"/>
 
</ehcache>

(4)当我们在CacheManager级别指定了大小限制之后,我们可以在Cache级别通过百分比的形式来指定其可使用的对应大小限制。在下面示例中,我们的CacheManager拥有500M的heap内存,5G的offHeap内存,50G的disk容量。cache1拥有CacheManager 20%的heap内存,即100M,剩余的400M cache2和cache3平分,即各200M;cache2拥有CacheManager 20%的offHeap内存,即1G,剩余的4G将由cache1和cache3平分,即各2G;cache3拥有CacheManager 20%的disk容量,即10G,剩余的40G将由cache1和cache2平分,即各20G。所以最终cache1将拥有heap 100M、offHeap 2G、disk 20G;cache2将拥有heap 200M、offHeap 1G、disk 20G;cache3将拥有heap 200M、offHeap 2G、disk 10G。

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
   maxBytesLocalHeap="500M" maxBytesLocalOffHeap="5G" maxBytesLocalDisk="50G">
  
   <cache name="cache1" maxBytesLocalHeap="20%"/>
   <cache name="cache2" maxBytesLocalOffHeap="20%"/>
   <cache name="cache3" maxBytesLocalDisk="20%"/>
 
</ehcache>

(5)当我们没有在CacheManager上指定某种资源的可用量时我们还可以在Cache级别进行指定。CacheManager只有600M的heap内存,cache1、cache2、cache3都没有显式的指定使用多少heap内存,所以将各得200M heap内存。而cache1还指定了可以使用2G的offHeap内存;cache2还指定了可以使用20G的磁盘;而cache3仅仅只能使用CacheManager分配下来的200M heap内存。

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
   maxBytesLocalHeap="600M">
  
   <cache name="cache1" maxBytesLocalOffHeap="2G"/>
   <cache name="cache2" maxBytesLocalDisk="20G"/>
   <cache name="cache3"/>
 
</ehcache>

总之,当Cache自身设置了某种容量的限制时,在对应类型的容量限制上将使用自身的限制,如某Cache自身设置了maxBytesLocalHeap为100M,那么它能够使用的堆内存的最大量就是100M。而当Cache自身没有指定某种类型的容量限制时,如果在CacheManager级别有指定的话,那么该Cache将和其它同样没有指定该类型容量限制的Cache一起平分CacheManager级别该种类型的容量被指定了该类型容量限制的Cache瓜分后剩余的容量,否则其将没有该种类型的容量可用。如当CacheA没有指定maxBytesLocalDisk限制,而在CacheManager级别指定了maxBytesLocalDisk限制为10G,如果在该CacheManager内还有另外一个CacheB指定了maxBytesLocalDisk限制为5G,那么CacheA将能够使用的disk容量为5G,如果此时还有另外N个Cache也没有指定maxBytesLocalDisk限制的话,那么它们将和CacheA一起瓜分CacheManager的disk容量10G除去CacheB的disk容量5G后剩余的5G,即各5/(N+1)G。如果CacheManager级别也没有指定maxBytesLocalDisk的话,那么CacheA和其它同样没有指定maxBytesLocalDisk的Cache将不能使用disk进行Cache信息的存储(这里是假设这些Cache同样都没有指定maxEntriesLocalDisk)。关于这块如果还有不懂的,可以参考第四小节“配置大小示例”中示例。

(本文是基于Ehcache2.8.1所写)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

设置缓存的大小 的相关文章

  • 【Redis】分布式锁

    Redis分布式锁 问题描述 随着业务发展的需要 原单体单机部署的系统被演化成分布式集群系统后 由于分布式系统多线程 多进程并且分布在不同机器上 这将使原单机部署情况下的并发控制锁策略失效 单纯的Java API并不能提供分布式锁的能力 为
  • 《消息队列高手课》缓存策略:如何使用缓存来减少磁盘IO?

    现代的消息队列 都使用磁盘文件来存储消息 因为磁盘是一个持久化的存储 即使服务器掉电也不会丢失数据 绝大多数用于生产系统的服务器 都会使用多块儿磁盘组成磁盘阵列 这样不仅服务器掉电不会丢失数据 即使其中的一块儿磁盘发生故障 也可以把数据从其
  • Go redis操作

    Go redis的操作 五种数据结构的基本操作汇总 一 String 操作 命令 说明 Set key value 给数据库中名称为 key 的 string 赋予值 valueget key 返回数据库中名称为 key 的 string
  • 深入理解浏览器缓存机制 ( http )

    一 介绍 http缓存 浏览器根据当前http请求报文策略 将网路资源存储到本地内存 memory cache 硬盘 disk cache 中 缓存流程 浏览器 浏览器缓存 服务端 发起请求 根据缓存
  • 阿里云CDN缓存预热与刷新以及常见的故障汇总

    文章目录 1 为CDN缓存的文件增加过期时间 2 CDN缓存预热配置 3 CDN缓存刷新配置 4 常见故障 CDN缓存预热指的是主动将要缓存的文件推送到全国各地的CDN边缘加速器上 减少回源率 提供命中率 缓存刷新指的是后期上传了同名的文件
  • Redis缓存穿透、击穿和雪崩

    Redis是一种开源的高性能缓存数据库 常用于加速数据访问 提高系统性能 然而 在使用Redis时 我们需要注意一些常见的问题 例如缓存穿透 击穿和雪崩 这些问题可能会导致系统性能下降甚至崩溃 因此了解和解决这些问题是非常重要的 1 缓存穿
  • 解决redis-server.exe不是内部或外部命令

    报错 redis server exe不是内部或外部命令 原因 未进入到redis的安装目录下 解决 先找到redis安装路径 复制之后 在终端中输入cd xxxxx redis的安装路径 进入安装目录之后再次输入redis server
  • 老话新谈之缓存一致性

    前言 缓存一致性常见的更新策略也比较多 如先更新数据库再更新缓存 先删缓存再更新数据库等等 我在理解的时候有些混乱 所以这个文章提供了一些理解上的技巧去理解缓存一致性 为什么会有缓存一致性的问题 缓存与数据库是两套中间件 存在网络抖动之类的
  • 持久化RDB/AOF-Redis(三)

    上篇文章说了数据持久化 这里再学习一个命令 数据结构 Redis 二 https blog csdn net ke1ying article details 131118016 一 查询所有key scan 0 match zhuge co
  • redis篇

    一 数据库分类 1 关系型数据库SQL Oracle 不开源收费 高帅富 SQL Server 不开源收费 微软自家的产品 DB2 不开源收费 IBM 的产品 Sybase 不开源收费 微软的小基友 关系破裂后家境惨淡 MySQL 大家都在
  • 关于Mysql线程的基本设置

    客户端发起连接到mysql server mysql server监听进程 监听到新的请求 然后mysql为其分配一个新的 thread 去处理此请求 从建立连接之开始 CPU要给它划分一定的thread stack 然后进行用户身份认证
  • Redis系列二

    1 4 Redis基础知识 1 4 1 默认数据库 Redis默认数据库数量有16个 redis conf配置文件可查看 默认使用的数据库为0 1 4 2 切换数据库 使用select 命令进行切换 root yunmx bin redis
  • Redis介绍、安装、基础命令

    目录 引言 一 关系数据库和非关系数据库 1 1 关系型数据库 1 2 非关系型数据库 1 3 关系型数据库与非关系型数据库区别 数据存储方式不同 扩展方式不同 对事务性的支持不同 非关系型数据库产生背景 二 Redis简介 2 1 Red
  • 4、动态代理的缓存机制

    1 背景 上一节大致介绍了Proxy动态代理的原理 从几个疑问上面分析 这一节介绍一下动态代理的缓存机制 网上的资源比较少 可以怀着下面几个问题阅读源码 为什么要缓存 缓存的内容是什么 哪里调用的缓存 缓存的实现机制 缓存的过期机制 2 属
  • Redis高级

    目录 redis介绍安装 介绍 安装 通用命令 五大数据类型 字符串 哈希 列表 集合 有序集合 高级用法 慢查询 pipline与事务 发布订阅 Bitmap HyperLogLog GEO地理位置信息 持久化 RDB方法 AOF方案 r
  • Redis 分布式缓存

    分布式缓存 单点 Redis 的问题及解决 数据丢失 实现Redis数据持久化 并发能力 搭建主从集群 实现读写分离 存储能力 搭建分片集群 利用插槽机制实现动态扩容 故障恢复能力 利用哨兵机制 实现健康检测和自动恢复 RDB RDB全称R
  • 工作几年了,你真的懂 Redis 嘛?

    大家好 我是伍六七 一个专注于输出 AI 编程内容的在职大厂资深程序员 全国最大 AI 付费社群破局初创合伙人 关注我一起破除 35 诅咒 Redis 基本上是大部分技术公司都会使用的缓存框架 但是我发现很多程序员其实并不懂 Redis 今
  • 华为OD机试真题-文件缓存系统-2023年OD统一考试(C卷)

    题目描述 请设计一个文件缓存系统 该文件缓存系统可以指定缓存的最大值 单位为字节 文件缓存系统有两种操作 存储文件 put 和读取文件 get 操作命令为put fileName fileSize或者get fileName 存储文件是把文
  • 【Redis】Redis 配置文件

    1 概述 相同文件 Redis redis 配置 配置文件 redis conf 自定义目录 myredis redis conf 4 1 Units单位 配置大小单位 开头定义了一些基本的度量单位 只支持bytes 不支持bit 大小写不
  • 【网络安全】Web缓存欺骗攻击原理及攻防实战

    Web缓存欺骗是一种新的攻击方式 危害范围可扩大至各种技术及框架 本文仅分享Web缓存攻击知识 不承担任何由于传播 利用本文所发布内容而造成的任何后果及法律责任 文章目录 前言 攻击前提及原理 实例一 ChatGPT帐户接管漏洞 实例二 P

随机推荐

  • IDEA下载安装及配置

    IntelliJ IDEA 的安装 配置与使用 根据尚硅谷进行整理 仅仅只做笔记 根据尚硅谷进行整理 仅仅只做笔记 根据尚硅谷进行整理 仅仅只做笔记 一 IDEA 的下载地址 下载地址 https www jetbrains com ide
  • git命令学习(三)

    merge和rebase的区别 git工作流 git stash 使用场景举例 一个分支还没提交时 要切换到下一个分支 可将前一个分支放在git栈中 git stash git checkout B 处理B分支 git checkout A
  • openlayers3开发教程_开始

    openlayers3开发教程 开始 openlayers官方网站 https openlayers org 在旧版本处查看 Latest v3 v3 20 1 released 2016 12 12 docs API examples o
  • switch手柄可以连电脑吗_你想要的手柄:既能连switch又能连PC!

    您好 我是Manta科技资讯 首先 聊一聊任天堂switch 任天堂switch主机模式下是通过DOCK底座将游戏主机与电视连接以实现无缝切换 这个DOCK底座有2个USB接口 很多小伙伴不知道用它来干嘛 其实DOCK底座能够拓展很多额外的
  • kettle plugin 插件开发

    http wiki pentaho com display COM PDI Plugin Loading svn source pentaho org svnkettleroot plugins S3CsvInput
  • HDU - 1716 排列2(暴力;next_permutation)

    Ray又对数字的列产生了兴趣 现有四张卡片 用这四张卡片能排列出很多不同的4位数 要求按从小到大的顺序输出这些4位数 Input 每组数据占一行 代表四张卡片上的数字 0 lt 数字 lt 9 如果四张卡片都是0 则输入结束 Output
  • Win11打不开Windows安全中心

    1 打开Windows PowerShell ISE 在搜索框内搜索windows powershell ise 然后右击以管理员身份运行 2 依次执行如下3个命令即可 中途出现部署失败的红色提示可以无视 整个过程几分钟 复制回车 Set
  • bootstrap-table动态合并相同行和列的方法

    先看看效果 var getData ctx demo table list table bootstrapTable dataType json method post cache false url getData columns che
  • 详解JPEG编码格式

    参考文章1 参考文章2 MJPEG是一种视频压缩格式 其中的每一帧图像都使用JPEG编码 实际上 M J P E G
  • JS逆向-百度翻译sign

    前言 本文是该专栏的第36篇 后面会持续分享python爬虫干货知识 记得关注 有粉丝留言 近期需要做个翻译功能 考虑到百度翻译语言语种比较全面 但是它的参数被逆向加密了 对于这种情况需要怎么处理呢 所以本文以它为例 废话不多说 跟着笔者直
  • uniapp实现小程序云开发

    打开微信开发者工具 填写你的appid 勾选使用云开发 对应的uniapp里也要配置上你的appid喔 在这个文件manifest json 我在App vue页面 不一定是在这个页面 可以视你的情况而定 里调用 了wx cloud ini
  • JavaScript算法之动态规划

    动态规划的基本概念 动态规划 Dynamic Programming DP 是运筹学的一个分支 是求解决策过程最优化的过程 动态规划算法通常用于求解具有某种最优性质的问题 在这类问题中 可能会有许多可行解 每一个解都对应于一个值 我们希望找
  • pyqt5 tableWidget入门,和treewidget联动功能

    1 成品 最近在做项目的过程中需要用到QTreeWidget和QTableWidget联动 上一篇文章介绍了 QTreeWidget的基本用法 这里介绍一下QTableWidget的基本用法 及我在项目中的使用 先看看最终成品 要实现以上图
  • Visual Studio 2017 、2019安装Windows SDK失败的解决办法(改盘符引起)

    如果是改盘符出错就请往下看 如果不是就别往下看了 这是血泪踩出来的坑 希望有所帮助 我是手残把电脑盘符改了 然后vs就开始疯狂报错 百试无果 百度不出 果断放弃 刚开始是安装的2017 卸载完后安装的2019 安好后就开始报 fatal e
  • vue(vue-cli3)根据不同环境打包

    配置环境 在项目根目录下创建两个文件 env test NODE ENV production VUE APP ENV test env build NODE ENV production VUE APP ENV production 修改
  • 雪梨小白的“码绘”起步——p5.js实现心形动态图形的绘制

    作为一个快乐的程序媛 尤其还是一个快乐的树莓程序媛 当然应该什么都会 所以这学期学院开了很多偏艺术类的课程让我们学习 然后就开始了互动媒体这门课的学习 这一次的作业要利用p5绘制动态图形 我自己还真的是活力满满的选了一个 emmmm 一点都
  • RBF与BP神经网络的实际案例研究

    RBF与BP神经网络的实际案例研究 应用实例 基于近红外光谱的汽油辛烷值预测 辛烷值是汽油最重要的品质指标传统的实验室检测方法存在样品用量大 测试周期长和费用高等问题 不适用与生产控制 特别是在线测试 今年发展起来的近红外光谱分析方法 NI
  • Python 常见170道面试题解析

    文章目录 基础 语言特性 编码规范 数据类型 字符串 列表 字典 综合 操作类题目 高级特性 正则表达式 其他内容 算法和数据结构 爬虫相关 网络编程 并发 Git 面试题 基础 1 列出 5 个常用 Python 标准库 os 与操作系统
  • Oracle12c连接问题ORA-28040:没有匹配的验证协议

    使用hibernate 连接oracle12c时报名如下 ORA 28040 没有匹配的验证协议 google 发现修改文件即可解决 ORACLE HOME network admin sqlnet ora 加入如下 SQLNET ALLO
  • 设置缓存的大小

    目录 1 CacheManager级别 2 Cache级别 3 大小衡量 4 配置大小示例 缓存大小的限制可以设置在CacheManager上 也可以设置在单个的Cache上 我们可以设置缓存使用内存的大小 也可以设置缓存使用磁盘的大小 但