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

网站建设需要什么材料百度自助建站官网

网站建设需要什么材料,百度自助建站官网,源代码网站和模板做的区别,wordpress主题路径文章目录前言一,异步任务1.1 无返回值异步任务调用1.2 有返回值异步任务调用二、定时任务2.1 背景介绍2.2 todo三、邮箱任务3.1 todo前言 开发 web 应用时,多数应用都具备任务调度功能,常见的任务包括异步任务、定时任务和邮件任务。我们以数…

文章目录

  • 前言
  • 一,异步任务
    • 1.1 无返回值异步任务调用
    • 1.2 有返回值异步任务调用
  • 二、定时任务
    • 2.1 背景介绍
    • 2.2 todo
  • 三、邮箱任务
    • 3.1 todo

前言

开发 web 应用时,多数应用都具备任务调度功能,常见的任务包括异步任务、定时任务和邮件任务。我们以数据库报表为例看看任务调度如何帮助改善系统设计。报表可能是错综复杂的,用户可能需要很长时间找到需要的报表数据,此时我们可以在这个报表应用中添加异步任务减少用户等待时间,从而提高用户体验性;除此之外,还可以在报表应用中添加定时任务和邮件任务,以便用户可以安排在任何他们需要的时间定时生成报表,并在 Email 中发送。本文记录如何使用 SpringBoot 开发这些常见的任务。

一,异步任务

web 应用开发中,大多数情况都是通过同步方式完成数据交互处理,但是,当处理与第三方系统的交互时,容易造成响应迟缓的情况,之前大部分都是使用多线程完成此类任务,除此之外,还可以使用异步调用的方式完美解决这个问题。根据异步处理方式的不同,可以将异步任务的调用分为无返回值异步任务调用和有返回值异步任务调用。

1.1 无返回值异步任务调用

  1. 在启动类上添加注解 @EnableAsync(开启基于注解的异步任务支持)
  2. 在指定无返回值的业务方法上添加 @Asyn注解,实现异步请求方法

启动类

@EnableAsync
@SpringBootApplication
public class AsyncApplication {public static void main(String[] args) {SpringApplication.run(AsyncApplication.class, args);}
}

Service 层代码

@Service
public class AsyncService {@Asyncpublic void send(){System.out.println("调用短信验证码方法......");long start = System.currentTimeMillis();try {Thread.sleep(4000);} catch (InterruptedException e) {e.printStackTrace();System.out.println("出现异常:"+ e.getMessage());}long end = System.currentTimeMillis();System.out.println("短信验证码方法执行时间:"+(end - start) + "毫秒");}
}

Controller 层代码

@RestController
public class AsyncController {@Autowiredprivate AsyncService asyncService;@GetMapping("/async")public R testAsync(){long start = System.currentTimeMillis();asyncService.send();long end = System.currentTimeMillis();System.out.println("调用结束主流程耗时"+(end-start)+"毫秒");return R.ok().put("success", "调用结束主流程耗时"+(end-start)+"毫秒");}
}

若没有使用异步处理(注释掉 @Async 注解),访问接口返回数据如下

在这里插入图片描述

控制台输出内容:

在这里插入图片描述

若使用异步处理(使用 @Async 注解),访问接口返回数据如下

在这里插入图片描述

控制台输出内容:

在这里插入图片描述

当未使用异步处理时,访问接口需要等待4s左右才返回数据,而使用异步处理后几乎不需要等待时间,用户体验更佳了。

需要说明的是,无返回值异步方法在被主流程方法调用时,主流程方法不会阻塞,而是继续向下执行主流程方法内容,直接向页面响应结果,而调用的异步方法会作为一个子线程单独执行,直到异步方法执行完成。

1.2 有返回值异步任务调用

  1. 在启动类上添加注解 @EnableAsync(开启基于注解的异步任务支持)
  2. 在指定有返回值的业务方法上添加 @ASync注解,实现异步请求方法
    注意: 返回值必须用Future 泛型封装,例如: new AsyncResult(count),当想获取装的值时用 Futue 对象调用其 get() 方法即可获得。

业务场景设定:假设业务A(耗时3秒)进行数据分析返回一个整数值,业务B(耗时5秒)也进行数据分析返回一个整数值;且两者没有相互影响,计算业务A和业务B的返回整数值相加的结果。

同步方式: 先调用业务A ,再调用B,再将A返回值与B返回值相加,最终将结果返回给用户,总耗时肯定大于8秒。这种方式相对来说整体耗时更长,响应慢,降低了用户体验。

异步方式:

@Async
public Future<Integer> processA(){System.out.println("开始分析并统计业务A数据......");long start = System.currentTimeMillis();try {Thread.sleep(3000);} catch (InterruptedException e) {e.printStackTrace();System.out.println("出现异常:"+ e.getMessage());}Integer numA = 20;long end = System.currentTimeMillis();System.out.println("业务A数据统计共耗时:"+(end - start));return new AsyncResult<Integer>(numA);
}@Async
public Future<Integer> processB(){System.out.println("开始分析并统计业务B数据......");long start = System.currentTimeMillis();try {Thread.sleep(5000);} catch (InterruptedException e) {e.printStackTrace();System.out.println("出现异常:"+ e.getMessage());}Integer numB = 25;long end = System.currentTimeMillis();System.out.println("业务B数据统计共耗时:"+(end - start));return new AsyncResult<Integer>(numB);
}
@GetMapping("/asyncTask")
public R Async() throws Exception {long start = System.currentTimeMillis();Future<Integer> processA = asyncService.processA();Future<Integer> processB = asyncService.processB();int sum = processA.get() + processB.get();//等待A B结果相加成功后再向下执行,这里阻塞了long end = System.currentTimeMillis();System.out.println("调用结束主流程耗时"+(end-start)+"毫秒");return R.ok().put("data","success");
}

响应结果:小于8秒,提升了系统响应速度

在这里插入图片描述
需要说明的是,有返回值异步方法在被主流程方法调用时,主流程方法是会短暂阻塞的,需要等待并获取异步方法的返回结果,而调用的两个异步方法会作为两个子线程并行执行,直到异步方法执行完成并返回结果,这样主流程会在最后一个异步方法返回结果后跳出阻塞状态。

二、定时任务

2.1 背景介绍

在实际开发中,可能会有这样一个需求,需要在每天的某个固定时间或者每隔一段时间让程序去执行某一个任务。例如,服务器数据定时在晚上零点备份。通常我们可以使用 scheduling Tasks 实现这一定时任务的处理;在时间定时任务时需要了解下几种和定时任务相关的注解,具体如下:

  1. @EnableScheduling 用于开启基于注解方式的定时任务支持,该注解主要用在项目启动类上。
  2. @scheduled 配置定时任务的执行规则,该注解主要用在定时业务方法上。

@scheduled 注解提供多个属性,精细化配置定时任务执行规则,这些属性及说明如下表:
todo

2.2 todo

三、邮箱任务

3.1 todo

http://www.yidumall.com/news/72513.html

相关文章:

  • 电商网站 开发周期邯郸网站优化
  • 交网站建设域名计入什么科目网站优化设计的基础是网站基本要素及每个细节的优化
  • 南阳专业做网站公司哪家好百度竞价推广方案
  • 专门做中式服装平台的网站seo整站优化公司持续监控
  • 怎么做网站背景图片上海网站营销seo电话
  • 免费建站系统下载网络优化工程师吃香吗
  • crm客户管理系统方案seo网站结构优化的方法
  • 西宁网站建设制作公司推广普通话手抄报一等奖
  • 建个人网站怎么赚钱互联网推广话术
  • 大连seo网站整站优化快速排名
  • 专业的网站建设电话新塘网站seo优化
  • 网站备案照相怎么照大数据分析网站
  • 网站设计学什么专业推广网站有效的免费方法
  • 网站单个页面301跳转制作网站代码
  • 网站开发怎么接入支付宝今天重大新闻
  • 做照片有那些网站好营销网站建设哪家快
  • 杭州商城网站建设1688关键词排名查询工具
  • 药品网站网络营销推广怎么做免费广告发布平台
  • 网站大图做多大尺寸新闻稿发布
  • 做海报用什么网站网络营销渠道有哪三类
  • 如何做网站渗透测试谷歌浏览器在线打开
  • 做图片祝福的网站福建搜索引擎优化
  • 德持建设集团有限公司网站网络推广怎么找客户资源
  • 网站建设只有20%的利润网络广告形式
  • 兄弟网站建设沈阳关键词优化费用
  • 惠州网站建设网站线上推广方式
  • 个人网站备案名称填写的注意事项互联网营销师培训学校
  • 2008iis7建立网站seo网站推广工作内容
  • 公司网站是怎么做的网站排名怎么搜索靠前
  • 做企业网站 目的百度关键词多少钱一个月