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

天津公司网站推广如何做内容收费的网站

天津公司网站推广,如何做内容收费的网站,wordpress 主页面错乱,忘记wordpress密码​ 使用EasyExcel和多线程实现高效数据导出 1. 概述 在企业级应用中#xff0c;数据导出是一个常见的需求。为了提高导出效率#xff0c;尤其是在处理大量数据时#xff0c;我们可以结合使用EasyExcel库和多线程技术。本文将详细介绍如何通过EasyExcel和多线程技术实现高…​ 使用EasyExcel和多线程实现高效数据导出 1. 概述 在企业级应用中数据导出是一个常见的需求。为了提高导出效率尤其是在处理大量数据时我们可以结合使用EasyExcel库和多线程技术。本文将详细介绍如何通过EasyExcel和多线程技术实现高效的数据导出功能。 2. 环境准备 2.1 Java版本 Java版本本项目基于Java开发。 2.2 依赖库 com.alibaba:easyexcel: 用于Excel文件的读写操作。org.springframework:spring-jdbc: 提供JDBC模板类简化数据库操作。 3. 代码结构与逻辑 3.1 类定义 import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.write.metadata.WriteSheet; import com.*.*.business.core.domain.ExportParam; import lombok.AllArgsConstructor; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service;import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; import java.util.concurrent.*;3.2 主要方法解析 3.2.1 exportData 该方法负责设置HTTP响应头并调用EasyExcel进行Excel文件的生成。同时它利用多线程分页查询数据以提升性能。 public void exportData(ExportParam? exportParam, HttpServletResponse response) throws IOException {// 设置响应头response.setContentType(application/vnd.ms-excel);response.setCharacterEncoding(utf-8);String fileName URLEncoder.encode(exportParam.getFileName(), UTF-8);response.setHeader(Content-Disposition, attachment;filename fileName .xlsx);// 执行导出try (ExcelWriter excelWriter EasyExcel.write(response.getOutputStream(), exportParam.getEntityClass()).build()) {WriteSheet writeSheet EasyExcel.writerSheet(Sheet1).build();int total getTotalCount(exportParam.getSql());int totalPages (total exportParam.getPageSize() - 1) / exportParam.getPageSize();ExecutorService executor Executors.newFixedThreadPool(exportParam.getThreadCount());ListFutureList? futures new ArrayList();for (int page 1; page totalPages; page) {int startRow (page - 1) * exportParam.getPageSize();int endRow page * exportParam.getPageSize();futures.add(executor.submit(new QueryTask(jdbcTemplate,exportParam.getSql(),exportParam.getEntityClass(),startRow,endRow)));}for (int i 0; i totalPages; i) {List? data futures.get(i).get();excelWriter.write(data, writeSheet);}executor.shutdown();} catch (Exception e) {throw new RuntimeException(导出失败, e);}}3.2.2 getTotalCount 获取SQL查询结果的总记录数用于计算分页信息。 private int getTotalCount(String originalSql) {String countSql SELECT COUNT(*) FROM ( originalSql );return jdbcTemplate.queryForObject(countSql, new Object[]{}, Integer.class);}3.2.3 QueryTask 实现了Callable接口用于异步执行分页查询任务。 AllArgsConstructor private static class QueryTask implements CallableList? {private final JdbcTemplate jdbcTemplate;private final String originalSql;private final Class? entityClass;private final int startRow;private final int endRow;Overridepublic List? call() throws Exception {String paginatedSql SELECT * FROM (SELECT ROWNUM rn, temp.* FROM ( originalSql ) temp WHERE ROWNUM ?) WHERE rn ?;return jdbcTemplate.query(paginatedSql, new Object[]{endRow, startRow}, new BeanPropertyRowMapper(entityClass));} }4. 关键点说明 4.1 多线程优化 通过创建固定大小的线程池ExecutorService可以并发地执行多个分页查询任务从而显著减少整体导出时间。每个任务都是一个QueryTask实例负责从数据库中获取指定范围的数据。 4.2 分页查询 为了避免一次性加载过多数据导致内存溢出采用了分页查询的方式。每次只查询一页的数据并将其写入到Excel文件中。 4.3 异常处理 在整个导出过程中对可能出现的异常进行了捕获和处理确保即使发生错误也能给出明确提示。 5. 总结 本文介绍了如何使用EasyExcel库结合多线程技术实现高效的数据导出功能。通过合理的分页查询策略和多线程并发执行不仅提高了导出效率还保证了系统的稳定性和可靠性。希望这篇文章能够帮助你在实际项目中更好地解决类似问题。 附录 附录A: 依赖管理 在pom.xml或build.gradle中添加以下依赖 !-- pom.xml -- dependency groupIdcom.alibaba/groupId artifactIdeasyexcel/artifactId version最新版本/version /dependency dependency groupIdorg.springframework/groupId artifactIdspring-jdbc/artifactId version最新版本/version /dependency// build.gradle implementation com.alibaba:easyexcel:最新版本 implementation org.springframework:spring-jdbc:最新版本附录B: SQL注意事项 确保SQL查询语句的正确性特别是分页查询部分。对于不同数据库分页语法可能有所不同请根据实际情况调整。 附录C: 性能调优建议 根据服务器资源情况合理配置线程池大小。考虑使用更高效的批量插入方式如EasyExcel提供的批量写入功能。 希望这份文档对你有所帮助如果有任何问题或建议请随时联系我。 ​
http://www.hkea.cn/news/14425736/

相关文章:

  • 优秀 响应式网站网站设计素材下载
  • dede增加手机网站wordpress geek theme
  • 网站建设 开票广州抖音seo公司
  • 石排仿做网站成都百度推广公司电话
  • 侨联网站建设wordpress不同背景图片
  • 企业营销型网站建设优惠网站建设骗子公司
  • 太原网站制作案例滨州市手工活外发加工网
  • 博物馆网站制作国际品牌的广州网页设计
  • 中国广东网站建设定制型网站建设
  • 里水哪里做有做网站重庆网站建设只选承越
  • 网页设计与网站建设全攻略pdf北京市规划网站
  • 能自己做照片书的有哪些网站中国建设监理协会网站
  • 新蒲建设集团网站购物网站建设策划书
  • 称多网站建设电脑基础培训班哪里有
  • 数据网站有哪些个人博客手机网站模板
  • wordpress改网页电话苏州seo公司排名
  • 网站运营数据周报表怎么做辽宁网站优化
  • django mysql网站开发长沙网站建设联系电话
  • 纹身网站建设免费建立公司网站
  • 做童装在哪个网站做广告怎么选择手机网站建设
  • 网站开发中职责网站建设开发简介
  • 企业网站设计怎么做濮阳市建设分局网站
  • 网站后台关键词怎么设置游戏类网站怎么做
  • 订餐网站怎么做一单一结手机兼职
  • 网站建设公司一般多少钱广州建站网站前十名
  • 台州建设规划局网站怎么自己做充值网站
  • 做家教中介网站赚钱吗wordpress+大屏模版
  • 温州网站制作公司英德网络推广
  • 观山湖制作网站哪些群体对网站开发有需求
  • 成品网站w灬源码伊甸制作免费网站