2024年大数据最新【java批量导出pdf】优化方案_java pdf导出大量数据的优化,2024年最新这个回答让我错失offer

img
img
img

既有适合小白学习的零基础资料,也有适合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)**

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值