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

哪个协会要做网站建设啊一个人做两个博客网站

哪个协会要做网站建设啊,一个人做两个博客网站,织梦文章采集到wordpress,在线制作网址免费在导入Excel的时候#xff0c;如果文件比较大#xff0c;行数很多#xff0c;一行行读往往速度比较慢#xff0c;为了加快导入速度#xff0c;我们可以采用多线程的方式 话不多说直接上代码 首先是Controller import com.sakura.base.service.ExcelService; import com.s…在导入Excel的时候如果文件比较大行数很多一行行读往往速度比较慢为了加快导入速度我们可以采用多线程的方式 话不多说直接上代码 首先是Controller import com.sakura.base.service.ExcelService; import com.sakura.common.api.ApiResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile;RestController RequestMapping(/excel) public class ExcelController {Autowiredprivate ExcelService excelService;PostMapping(/import)public ApiResultBoolean importExcel(ModelAttribute MultipartFile file) throws Exception {boolean flag excelService.importExcel(file);return ApiResult.result(flag);} }然后Service import org.springframework.web.multipart.MultipartFile;public interface ExcelService {boolean importExcel(MultipartFile file) throws Exception;}ServiceImpl import com.sakura.base.entity.User; import com.sakura.base.mapper.UserMapper; import com.sakura.base.service.ExcelService; import lombok.extern.java.Log; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile;import java.io.IOException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;Service Log public class ExcelServiceImpl implements ExcelService {Autowiredprivate UserMapper userMapper;Overridepublic boolean importExcel(MultipartFile file) throws Exception {// 文件为空这些校验大家自己加这里只是做一个示例// 每次处理的数据量大家可以自己调整比如每次处理1000条int batchSize 5;// 最大线程数大家可以自己调整根据自己服务器性能来调整int maxThreads 3;// 创建一个线程池并设置最大线程数ExecutorService executorService Executors.newFixedThreadPool(maxThreads);Workbook workbook null;try {workbook new XSSFWorkbook(file.getInputStream());// 获取第一页Sheet sheet workbook.getSheetAt(0);// 获取总行数int rowCount sheet.getLastRowNum();// 第0行一般为表头从第一行开始int startRow 1;// 结束行Math.min用来比较两个数的大小取最小值int endRow Math.min(batchSize, rowCount);while (startRow rowCount) {// 提交任务到线程池executorService.execute(new ExcelRowProcessorTask(sheet, startRow, endRow));// 下一批数据的起始行startRow endRow 1;// 下一批数据的结束行endRow Math.min(startRow batchSize - 1, rowCount);}// 关闭线程池executorService.shutdown();} catch (Exception e) {e.printStackTrace();} finally {// 关闭流if (workbook ! null) {try {workbook.close();} catch (IOException e) {e.printStackTrace();}}}return true;}private class ExcelRowProcessorTask implements Runnable {private final Sheet sheet;private final int startRow;private final int endRow;public ExcelRowProcessorTask(Sheet sheet, int startRow, int endRow) {this.sheet sheet;this.startRow startRow;this.endRow endRow;}Overridepublic void run() {// _________________________________________// 测试用模拟处理数据的耗时实际应用删除try {Thread.sleep(2000);} catch (InterruptedException e) {throw new RuntimeException(e);}// _________________________________________for (int i startRow; i endRow; i) {Row row sheet.getRow(i);if (row ! null) {Cell nameCell row.getCell(0); // 第一列Cell phoneCell row.getCell(1); // 第二列nameCell.setCellType(CellType.STRING);String name nameCell.getStringCellValue();phoneCell.setCellType(CellType.STRING);String phoneNumber phoneCell.getStringCellValue();User user new User();user.setName(name);user.setPhoneNumber(phoneNumber);userMapper.insert(user);}}}} }实体类User就不贴了没啥好说的 还有就是poi的jar包 dependencygroupIdorg.apache.poi/groupIdartifactIdpoi/artifactIdversion3.15/version/dependencydependencygroupIdorg.apache.poi/groupIdartifactIdpoi-ooxml/artifactIdversion3.15/version/dependency用postman验证上面的代码 可以看下数据库的数据因为我限制了每次处理的数据为5条同时最多有3个线程所以可以看到同一时间段导进去的数据为15条 上面这个还有一个问题就是主线程不会等数据导入完就会返回如果你需要主线程等待数据导入完可以加上下面这行代码 executorService.awaitTermination(Long.MAX_VALUE, TimeUnit.SECONDS); // 等待所有任务执行完毕 Long.MAX_VALUE为超时时间可以自由设置就放在关闭线程池后面就可以了 有想看下怎么用多线程导出Excel的移步 Java多线程导出Excel示例
http://www.zqtcl.cn/news/577112/

相关文章:

  • 跑纸活做网站加大门户网站安全制度建设
  • 多商户开源商城seo对网店的作用有哪些
  • 提供微信网站建设福州seo建站
  • 泉州市住房与城乡建设网站潍坊网站建设方案外包
  • 网络文化经营许可证怎么申请免费seo提交工具
  • 网站建设 需求分析报告手机网站微信网站开发
  • 做司法考试题目的网站建站中企动力
  • 做360网站优化ppt模板免费下载千图网
  • 网站域名哪些后缀更好项目推广平台有哪些
  • 做游戏特效的网站网站开发中安全性的防范
  • 阿里云网站建设好用吗齐诺网站建设
  • 中小企业网站建设行情嘉兴公司的网站设计
  • 做服装有哪些好的网站台州网站建设多少钱
  • 任县网站建设公司北京网站开发网站开发公司
  • 重庆seo网站策划网站的tdk指的是什么
  • 自做刷赞网站山东东成建设咨询有限公司网站
  • 泉州网站制作推广网站建设一年多少
  • 超大型网站建设公司网站打开显示建设中
  • 惠东县网站建设建设方案
  • 怎么把做的网站发布长春建网站
  • 织梦网站手机端郑州网站制作公司名单
  • 如何建设网站安全网站桥页也叫
  • 南浔网站建设昆山智能网站开发
  • 阿里云可以做电商网站吗杭州网站建设浙江
  • 查询网站备案进度网站建设推广
  • 怎么做公司网站需要什么科目高端网站建设教学
  • 资讯平台网站模板中企中立做的网站好吗
  • 网站开发人员配备山西省吕梁市简介
  • 网站注销主体注销中国建设教育协会培训报名网站
  • 电商网站设计思想建设化妆品网站的成本