当前位置: 首页 > news >正文

ftp怎么设置网站首页智慧旅游网站开发与设计

ftp怎么设置网站首页,智慧旅游网站开发与设计,怎样使自己做的网站上线,教育培训机构加盟#x1f3ac; 艳艳耶✌️#xff1a;个人主页 #x1f525; 个人专栏 #xff1a;《Spring与Mybatis集成整合》《Vue.js使用》 ⛺️ 越努力 #xff0c;越幸运。 1.Redis与SSM的整合 1.1.添加Redis依赖 在Maven中添加Redis的依赖 redis.version2.9.0/redis.… 艳艳耶✌️个人主页 个人专栏 《Spring与Mybatis集成整合》《Vue.js使用》 ⛺️ 越努力 越幸运。 1.Redis与SSM的整合 1.1.添加Redis依赖 在Maven中添加Redis的依赖 redis.version2.9.0/redis.version redis.spring.version1.7.1.RELEASE/redis.spring.versiondependencygroupIdredis.clients/groupIdartifactIdjedis/artifactIdversion${redis.version}/version /dependency 1.2.spring-redis.xml的相关配置 1.2.1注册一个redis.properties redis.hostNamelocalhost redis.port6379 redis.password123456 redis.timeout10000 redis.maxIdle300 redis.maxTotal1000 redis.maxWaitMillis1000 redis.minEvictableIdleTimeMillis300000 redis.numTestsPerEvictionRun1024 redis.timeBetweenEvictionRunsMillis30000 redis.testOnBorrowtrue redis.testWhileIdletrue redis.expiration3600 但是当spring-context.xml中需要注册多个properties文件那么我们就不能够直接在spring-*.xml中添加注册因为这样子的话只能够读取一个配置文件另一个配置文件会被覆盖掉我们可以建一个文件用来专门引入外部文件 applicationContext ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/context xmlns:txhttp://www.springframework.org/schema/txxmlns:aophttp://www.springframework.org/schema/aopxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd!--1. 引入外部多文件方式 --bean idpropertyConfigurerclassorg.springframework.beans.factory.config.PropertyPlaceholderConfigurerproperty namesystemPropertiesModeName valueSYSTEM_PROPERTIES_MODE_OVERRIDE /property nameignoreResourceNotFound valuetrue /property namelocationslistvalueclasspath:jdbc.properties/valuevalueclasspath:redis.properties/value/list/property/bean!-- 随着后续学习框架会越学越多不能将所有的框架配置放到同一个配制间否者不便于管理 --import resourceapplicationContext-mybatis.xml/importimport resourcespring-redis.xml/importimport resourceapplicationContext-shiro.xml/import /beans 那么pom.xml中也需要进行修改我们现在需要读取到所有的properties文件所以需要是*.properties文件而不能够指定是某一个配置文件 !--解决mybatis-generator-maven-plugin运行时没有将jdbc.properites文件放入target文件夹的问题--resourcedirectorysrc/main/resources/directoryincludesinclude*.properties/includeinclude*.xml/include/includes/resource 1.2.2配置数据源【连接池】 !-- 2. redis连接池配置--bean idpoolConfig classredis.clients.jedis.JedisPoolConfig!--最大空闲数--property namemaxIdle value${redis.maxIdle}/!--连接池的最大数据库连接数 --property namemaxTotal value${redis.maxTotal}/!--最大建立连接等待时间--property namemaxWaitMillis value${redis.maxWaitMillis}/!--逐出连接的最小空闲时间 默认1800000毫秒(30分钟)--property nameminEvictableIdleTimeMillis value${redis.minEvictableIdleTimeMillis}/!--每次逐出检查时 逐出的最大数目 如果为负数就是 : 1/abs(n), 默认3--property namenumTestsPerEvictionRun value${redis.numTestsPerEvictionRun}/!--逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1--property nametimeBetweenEvictionRunsMillis value${redis.timeBetweenEvictionRunsMillis}/!--是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个--property nametestOnBorrow value${redis.testOnBorrow}/!--在空闲时检查有效性, 默认false --property nametestWhileIdle value${redis.testWhileIdle}//bean 1.2.3连接工厂 !-- 3. redis连接工厂 --bean idconnectionFactory classorg.springframework.data.redis.connection.jedis.JedisConnectionFactorydestroy-methoddestroyproperty namepoolConfig refpoolConfig/!--IP地址 --property namehostName value${redis.hostName}/!--端口号 --property nameport value${redis.port}/!--如果Redis设置有密码 --property namepassword value${redis.password}/!--客户端超时时间单位是毫秒 --property nametimeout value${redis.timeout}//bean 1.2.4配置序列化器 !-- 4. redis操作模板,使用该对象可以操作redishibernate课程中hibernatetemplete相当于session专门操作数据库。--bean idredisTemplate classorg.springframework.data.redis.core.RedisTemplateproperty nameconnectionFactory refconnectionFactory/!--如果不配置Serializer那么存储的时候缺省使用String如果用User类型存储那么会提示错误User cant cast to String --property namekeySerializerbean classorg.springframework.data.redis.serializer.StringRedisSerializer//propertyproperty namevalueSerializerbean classorg.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer//propertyproperty namehashKeySerializerbean classorg.springframework.data.redis.serializer.StringRedisSerializer//propertyproperty namehashValueSerializerbean classorg.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer//property!--开启事务 --property nameenableTransactionSupport valuetrue//bean 1.2.5配置缓存管理器 !-- 5.配置缓存管理器 --bean idredisCacheManager classorg.springframework.data.redis.cache.RedisCacheManagerconstructor-arg nameredisOperations refredisTemplate/!--redis缓存数据过期时间单位秒--property namedefaultExpiration value${redis.expiration}/!--是否使用缓存前缀与cachePrefix相关--property nameusePrefix valuetrue/!--配置缓存前缀名称--property namecachePrefixbean classorg.springframework.data.redis.cache.DefaultRedisCachePrefixconstructor-arg index0 value-cache-//bean/property/bean 1.2.6配置redis的key生成策略 !--6.配置缓存生成键名的生成规则--bean idcacheKeyGenerator classcom.zking.ssm.redis.CacheKeyGenerator/bean 2.Redis的注解式开发 首先需要一个缓冲策略类用于储存信息 package com.sy.ssm.redis;import lombok.extern.slf4j.Slf4j; import org.springframework.cache.interceptor.KeyGenerator; import org.springframework.util.ClassUtils;import java.lang.reflect.Array; import java.lang.reflect.Method;Slf4j public class CacheKeyGenerator implements KeyGenerator {// custom cache keypublic static final int NO_PARAM_KEY 0;public static final int NULL_PARAM_KEY 53;Overridepublic Object generate(Object target, Method method, Object... params) {StringBuilder key new StringBuilder();key.append(target.getClass().getSimpleName()).append(.).append(method.getName()).append(:);if (params.length 0) {key.append(NO_PARAM_KEY);} else {int count 0;for (Object param : params) {if (0 ! count) {//参数之间用,进行分隔key.append(,);}if (param null) {key.append(NULL_PARAM_KEY);} else if (ClassUtils.isPrimitiveArray(param.getClass())) {int length Array.getLength(param);for (int i 0; i length; i) {key.append(Array.get(param, i));key.append(,);}} else if (ClassUtils.isPrimitiveOrWrapper(param.getClass()) || param instanceof String) {key.append(param);} else {//Java一定要重写hashCode和eqaulskey.append(param.hashCode());}count;}}String finalKey key.toString(); // IEDA要安装lombok插件log.debug(using cache key{}, finalKey);return finalKey;} } 2.1 Cacheable 注解 2.1.1、定义查询接口使用Cacheable注解 Spring会在其被调用后将其返回值缓存起来以保证下次利用同样的参数来执行该方法时可以直接从缓存中获取结果而不需要再次执行该方法。Spring在缓存方法的返回值时是以键值对进行缓存的值就是方法的返回结果。 package com.sy.ssm.biz;import com.sy.ssm.model.Clazz; import com.sy.ssm.util.PageBean;import org.springframework.cache.annotation.Cacheable;import java.util.List; import java.util.Map;public interface ClazzBiz {Cacheable(clz)Clazz selectByPrimaryKey(Integer cid);} 2.1.2.编写测试类 运行效果运行两次 2.2 自定义策略 Cacheable可以指定三个属性value、key和condition。  我可定义key值来修改我们保存到redis缓冲的key值并且可通过condition来制定什么时候需要缓冲进一步优化性能。 自定义策略如果查询的cid大于6才进行缓冲  package com.sy.ssm.biz;import com.sy.ssm.model.Clazz; import com.sy.ssm.util.PageBean;import org.springframework.cache.annotation.Cacheable;import java.util.List; import java.util.Map;public interface ClazzBiz {Cacheable(value clz,key cid:#cid,condition #cid 6)Clazz selectByPrimaryKey(Integer cid);} 2.3 CachePut 注解 它的使用与Cacheable的使用一致它们的区别 Cacheable会在redis中存储数据同时也会读取数据CachePut只会在redis储存数据不会进行读取操作 ppackage com.sy.ssm.biz;import com.sy.ssm.model.Clazz; import com.sy.ssm.util.PageBean;import org.springframework.cache.annotation.Cacheable;import java.util.List; import java.util.Map;public interface ClazzBiz {CachePut(value clz,key cid:#cid,condition #cid 6)Clazz selectByPrimaryKey(Integer cid);} 测试代码 3.Redis的击穿、穿透、雪崩  3.1.击穿 击穿指的是一个非常热门的数据在缓存中不存在导致所有的请求都直接到达数据库从而造成数据库负载过高甚至可能引起系统崩溃。这种情况常常发生在缓存中设置了过期时间的数据在数据失效的瞬间有大量请求同时涌入导致缓存无法命中并且每个请求都需要去访问数据库。 解决方案 使用互斥锁机制当一个请求发现缓存中不存在时可以使用互斥锁机制来确保只有一个线程去查询数据库其他线程等待查询结果。 提前异步加载在缓存过期之前提前异步加载数据到缓存避免缓存过期时大量请求同时到达数据库 3.2.穿透 穿透指的是请求的数据在缓存和数据库中都不存在这种情况通常是由于恶意请求或者非法请求导致的。这些请求绕过了缓存层直接访问数据库造成了数据库的压力增加资源浪费。 解决方案 参数校验在请求到达缓存之前可以进行参数校验过滤掉无效的请求。布隆过滤器Bloom Filter使用布隆过滤器可以判断一个请求对应的数据是否存在于数据库中如果不存在则可以直接拦截请求避免访问数据库 3.3.雪崩 雪崩指的是缓存中大量的数据同时失效导致所有请求都直接访问数据库从而造成数据库负载激增甚至导致系统崩溃。这种情况可能发生在缓存中的数据设置了相同的过期时间当过期时间到达时所有数据同时失效。 解决方案 设置不同的过期时间为不同的缓存数据设置稍有差异的过期时间避免所有数据同时失效。 使用热点数据预加载通过预先加载一些热门数据到缓存中来降低缓存同时失效的风险。 分布式锁机制在缓存数据失效时使用分布式锁机制确保只有一个线程去重新加载缓存其他线程等待缓存重新加载完成后再读取 解决方案         其实上述的这三种问题都有自己对应的解决方法但是他们也有一个共同的方法可以解决--限流 在Redis中限流是一种控制系统访问频率的机制用于限制对某个资源或服务的并发访问数量以防止系统过载或被恶意请求攻击。 限流的目的是通过限制请求的速率保护系统的稳定性和可用性。它可以帮助平衡系统的负载防止过多的请求同时涌入导致系统不堪重负。 今日分享就结束呐
http://www.hkea.cn/news/14338998/

相关文章:

  • 网站建设仟首选金手指链接网
  • 太原网站建设价格wordpress 创建配置文件
  • 哈尔滨网站建设30t商用图片做公司网站可以吗
  • asp网站如何迁移seo关键词优化技术
  • 网站制作q深圳外贸建设网站
  • 苏州网站建设联系电话做一个公司的网站应做哪些准备
  • 自适应式网站模板互联网公司上市
  • 十款app软件下载入口seo职位描述
  • 外贸多语言网站建设推广wordpress免登录支付宝
  • 中国建设质量网官方网站怎么获得一个免费的域名
  • 做pc端网站怎么样室内设计可以做网站吗
  • 企业官网模板站信息科技公司网站怎么做
  • 中国建设银行网站首页签约雕刻业务网站怎么做
  • 大型物流公司网站给企业做网站的业务员
  • 铁岭做网站哪家好电子商务是坑人专业吗
  • 网站建设客户需求分析调查表网站后台登陆代码
  • seo优化网站网页教学wordpress小说文章发布插件
  • 专业的移动网站建设公司排名广告制作费
  • 中国建设劳动学会网站南京小程序定制开发
  • 网站建设公司资质小游戏网站怎么做
  • 11号在线 网站开发专门做护理PDCA的网站
  • 大邑县建设局网站哪个网站做简历免费
  • 长沙网站制作培训海南省住房公积金管理局地址
  • 临海钢结构设计网站深圳动漫制作
  • 网站开发设计软件长沙市师德师风建设网站
  • 南充 网站建设做爰全过程网站免费的视频教程
  • 网络营销相关的资源网站电商网站建设思维导图
  • 关键词查询的分析网站不良网站举报中心官网
  • 童装 技术支持 东莞网站建设上海发布官网app下载
  • 网站制作 需要什么网络技术做品牌网站哪个好点