既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
问题情境:
项目中存在web页面点击一键导出,导出所有数据对应的pdf文件,由于有些pdf文件是实时生成的,之前最简答的写法for循环处理速度太慢,超过了nginx配置的最大响应时间了,且对用户交互体验上很不友好,所以进一步进行优化。
解决方案:
1.对大量的数据进行分段处理;(向上取余)
代码示例:
public List<List<FrApplyGuaranteeInfo>> segmentList(List<FrApplyGuaranteeInfo> list ,int segmentSize) {
int limit = (list.size() + segmentSize - 1) / segmentSize;
List<List<FrApplyGuaranteeInfo>> segmentList =
Stream.iterate(0, n -> n + 1).limit(limit).parallel().map(a -> list.stream().
skip(a * segmentSize).limit(segmentSize).parallel().collect(Collectors.toList())).collect(Collectors.toList());
return segmentList;
}
2.通过threadPoolTaskExcetor.submit()方法进行多线程任务处理
示例代码:
第一步分段处理后的list
lists.forEach({list->{
threadPoolExecutor.submit(new xxxxTask());
})
第二步:具体的task需要实现callalbe
示例代码如下:
@Slf4j
public class DownloadLetterZipTask implements Callable {
// 需要预审的记录
private List<FrApplyGuaranteeInfo> dataList;
private ZipOutputStream zipOutputStream;
private CountDownLatch countDownLatch;
private IFrApplyGuaranteeInfoService applyGuaranteeInfoService;
public DownloadLetterZipTask(List<FrApplyGuaranteeInfo> dataList, ZipOutputStream zipOutputStream, CountDownLatch countDownLatch, IFrApplyGuaranteeInfoService applyGuaranteeInfoService)
{ this.dataList = dataList;
this.zipOutputStream = zipOutputStream;
this.countDownLatch = countDownLatch;
this.applyGuaranteeInfoService = applyGuaranteeInfoService; }
@Override
public Object call() throws Exception {
![img](https://img-blog.csdnimg.cn/img_convert/5914ca8a1e877e559927ccf6aa04a07e.png)
![img](https://img-blog.csdnimg.cn/img_convert/8a46d6b84fada82a9e9c925acd78e581.png)
![img](https://img-blog.csdnimg.cn/img_convert/81997b864ae9601fdb2d131c15c7a6d7.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**