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

化学网站定制那家公司网站做的好

化学网站定制,那家公司网站做的好,wordpress 访问量统计代码,雨颜色网站建设场景描述#xff1a; 在实际开发中#xff0c;当前端请求后台时#xff0c;如果后端处理比较慢#xff0c;但是用户是不知情的#xff0c;此时后端仍在处理#xff0c;但是前端用户以为没点到#xff0c;那么再次点击又发起请求#xff0c;就会导致在短时间内有很多请求…场景描述 在实际开发中当前端请求后台时如果后端处理比较慢但是用户是不知情的此时后端仍在处理但是前端用户以为没点到那么再次点击又发起请求就会导致在短时间内有很多请求给到后台可能会出现后台崩溃或者数据重复添加的问题。那么如何解决这个问题呢 为了避免短时间内对一个接口访问我们可以通过AOP自定义注解Redis的方式在接口上加一个自定义注解然后通过AOP的前置通知在Redis中存入一个有效期的值当访问接口时这个值还未过期则返回提示信息给前端以此来避免短时间内对接口的方法。 本文以一个文件下载的接口为例假设文件下载会在20S内完成当第一次下载的时候在redis中存入一个key并设置其过期时间为20s。当后续发起多次请求的时候提示访问过于频繁。先准备一个文件 实现过程 (1)创建一个自定义注解其中包括两个属性一个是key一个是key在Redis中的有效时间 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) public interface LimitAccess {/*** 限制访问的key* return*/String key();/*** 限制访问时间* return*/int times(); }(2)创建对应的切面 import com.example.demo.anno.LimitAccess; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.Signature; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.reflect.MethodSignature; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import java.util.concurrent.TimeUnit;/*** AOP类通知类*/ Component Aspect public class LimitAspect {Autowiredprivate RedisTemplate redisTemplate;Pointcut(annotation(com.example.demo.anno.LimitAccess))public void pt(){};Around(pt())public Object aopAround(ProceedingJoinPoint pjp) throws Throwable {// 获取切入点上面的自定义注解Signature signature pjp.getSignature();MethodSignature methodSignature (MethodSignature) signature;// 获取方法上面的注解LimitAccess limitAccess methodSignature.getMethod().getAnnotation(LimitAccess.class);// 获取注解上面的属性int limit limitAccess.times();String key limitAccess.key();// 根据key去找Redis中的值Object o redisTemplate.opsForValue().get(key);// 如果不存在说明是首次访问存入Redis过期时间为limitAccess中的timeif (o null) {redisTemplate.opsForValue().set(key, , limit, TimeUnit.SECONDS);// 执行切入点的方法return pjp.proceed();} else {// 如果存在说明不是首次访问给出提示信息return 访问过于频繁;}} }(3)在需要限制的接口上加上注解并设置key和限制访问时间 GetMapping(/download)LimitAccess(key download_key, times 20)public String downLoadFile(HttpServletRequest request, HttpServletResponse response) {FileInputStream inputStream null;BufferedInputStream bufferedInputStream null;OutputStream outputStream null;try {File file ResourceUtils.getFile(classpath:template/show.txt);if (file.exists()) {String fileName file.getName();String mineType request.getServletContext().getMimeType(fileName);response.setContentType(mineType);response.setHeader(content-type, application/form-data);response.setHeader(Content-disposition, attachment; fileName fileName);inputStream new FileInputStream(file);bufferedInputStream new BufferedInputStream(inputStream);outputStream response.getOutputStream();int len 0;byte[] buff new byte[1024];while ((len bufferedInputStream.read(buff)) ! -1) {outputStream.write(buff, 0, len);}} else {return 下载的文件资源不存在;}} catch (Exception e) {e.printStackTrace();} finally {try {if (inputStream ! null) {try {inputStream.close();} catch (IOException e) {throw new RuntimeException(e);}}if (bufferedInputStream ! null) {bufferedInputStream.close();}if (outputStream ! null) {outputStream.flush();outputStream.close();}} catch (IOException e) {e.printStackTrace();}}return success;} 测试结果 第一次访问 第二次访问 当download_key过期后则可以继续下载
http://www.dnsts.com.cn/news/41515.html

相关文章:

  • 沈阳网站网站建设深圳北站设计方案
  • 网站没有备案号网站做担保交易
  • 怎样注册代理记账公司seo查询工具精准
  • 怎样建立销售网站建设部考试中心网站
  • 昆山做企业网站wordpress 随机标题
  • 企业网站建设需要哪些设备网站风格指的是什么
  • 网站域名注销wordpress主题英文改中文
  • 互联网域名交易中心抖音优化排名
  • 气象网站建设普陀网站建设比较实惠
  • 绍兴的网站建设公司门窗专业设计网站
  • 桐梓网站开发常州被约谈企业主公司发讣告
  • 免费的logo设计网站广告联盟没网站可以做吗
  • 视频网站开发方法简单的html网页制作模板免费
  • 泉州建站公司模板网站的企业特色展示
  • 做一个付费网站多少钱网址大全免费网站
  • 什么网站发布任务有人做广州外包公司都有哪些
  • 企业网站建设解决方案window优化大师
  • 上海网站排名优化费用flash企业网站模板php
  • 小企业网站建设怎样可以快速在哪个网站找水利工地做
  • 做婚庆的网站有哪些织梦模板网站好优化吗
  • 网站定制化什么意思润滑油网站建设
  • 个人网站设计模版html做网站设计怎么提升
  • 网架公司安全员需要什么证书佛山seo教程
  • m开头的手机网站怎么做快乐麻花网站源码
  • 南京做机床的公司网站网站建设的比较合理的流程
  • 好的网站具备的条件德州做网站建设的公司哪家好
  • 郑州网站推广公司排名电子商务网站开发背景和意义
  • 怎么样注册一个网站wordpress全站使用cdn
  • 陕西咸阳做网站的公司有做学历在网站能查的到的
  • 如何在网站做宣传网站建设主要课程