既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
solve(problem):
if problem is small enough:
// 如果任务足够小,执行任务
solve problem directly (sequential algorithm)
else:
// 拆分任务
for part in subdivide(problem)
fork subtask to solve(part)
// 合并结果
join all subtasks spawned in previous loop
return combined results
所以,理解Fork/Join模型和CompletableFuture,首先要理解其背后的算法的目的和思想,因为后文所要详述的CompletableFuture不过只是这种算法的一种的实现和应用。
二、CompletableFuture具体应用场景
按照思想->实现->分析的思路,在了解了Fork/Join思想之后,这样可以更好地体验CompletableFuture的用法。
在这里再次简单交代下接口自动化具体业务背景:在文件上传过程中,进行反复切换集群的操作,验证文件再上传过程中是否有损坏,预期结果是下载到本地的文件,要和源文件保持一致。
场景解析:上传文件、切换集群其实是两个任务,要求是并行的;
难点分析:我们都知道java代码在一个方法内,正常情况下都是按照代码上下顺序执行的,但是我们怎么让上传文件、切换集群两种操作并行执行呢?
如下伪代码(为了帮助大家理解,以及满足保密要求,所以对全文代码有一定的删减):
@Test(description = "上传分片文件过程中由源当前集群切换另一个集群")
public void testSwitchSourceContainerClusterBetweenPartFileUpload() throws Exception {
//上传文件
PartObjectUploadClient.upload(cspPartRequestDto, 10250);
//切换集群
SimpleObjectUploadClient.switchMap2SourceBucketFirstIndex(paramMap);
}
正常情况下来说,先执行上传文件操作、再执行切换集群操作,对吧?但是我们需要的是边上传文件,边切换集群的效果,咋办?
使用CompletableFuture框架呗(引入有点生硬哈),具体伪代码如下:
@Test(description = "上传分片文件过程中由源当前集群切换另一个集群")
public void testSwitchSourceContainerClusterBetweenPartFileUpload() throws Exception {
// 创建第一个异步操作
CompletableFuture<Void> future1