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

什么网站做婚礼请柬x网站免费

什么网站做婚礼请柬,x网站免费,青岛做网站哪家专业,wordpress红色主题公园文章目录 百万数据准备EasyExcel导出EasyExcel不支持并发写导出功能的代码片段 EasyExcel导入 https://gitee.com/antirust/idooy-stable/tree/master/idooy-EasyExcel 开发中#xff0c;导入导出功能对于后台管理这样的系统来说太常用了#xff0c;除了实现该功能外导入导出… 文章目录 百万数据准备EasyExcel导出EasyExcel不支持并发写导出功能的代码片段 EasyExcel导入 https://gitee.com/antirust/idooy-stable/tree/master/idooy-EasyExcel 开发中导入导出功能对于后台管理这样的系统来说太常用了除了实现该功能外导入导出的性能也需要开发人员进行充分的考虑。一般情况下针对导入导出功能的设计会面临如下几个问题 如果同步导数据系统的承载的数据量会不会导致接口超时。如果把所有数据一次性装载到内存很容易引起OOM。数据量太大sql语句必定很慢。如果走异步如何通知用户导出结果如果excel文件太大目标用户打不开怎么办 个别系统导入导出业务复杂出现问题的地方就不局限于上面的这几个点开发中如果是优化的话那也无法抛开复杂的业务场景而单纯的去讨论导入导出的功能。曾经就亲身经历过业务员导入7W条数据跑好几个小时同步导出10W条数据接口超时。如果没有业务逻辑从中作梗单纯的导入和导出10W条数据还是很轻松的。 总之导出导入功能如果追求效率就需要往多线程上靠必要的话还需要进行异步操作。 本小节基于EasyExcel使用多线程进行高效的导入导出操作 百万数据准备 300W的数据大概97M大小 存储过程 create procedure insert_emp(IN num int) begindeclare i int default 0;set autocommit 0;repeatinsert into employee(last_name, age, sex, salary, job_id)values (concat(emp, lpad(i, 8, 0)), floor(rand() * 100), if(rand() 0.5, 男, 女),round(rand() * 10000), floor(rand() * 10));set i i 1;until i num end repeat;commit; end;表结构创建语句 create table if not exists employee (employee_id int auto_increment primary key,last_name varchar(100) null,age int null,sex varchar(1) null,salary decimal null,job_id int null );插入300W数据 call insert_emp(3000000);EasyExcel导出 导出分两步 select查询数据多线程分页查询数据write写入文件中因为EasyExcel不支持并发写即不管是多线程写入单个sheet还是多线程写入多个sheet都是不允许的 故EasyExcel高效率导出就是要合理的使用多线程进行分页数据的查询当然还要考虑SQL有没有优化的空间这里不进行讨论 EasyExcel不支持并发写 EasyExcel版本3.3.3并发写的时候程序异常查看官方文档文档明确指出‘不支持并发写’ 具体解决办法参看GitHub-issues#3020 导出功能的代码片段 Long count baseMapper.selectCount(queryWrapper);Long sheetNum count % pageSize 0 ? count / pageSize:count / pageSize 1;// 多线程去读// 1.初始化map容量 防止扩容带来的效率损耗MapInteger, PageT pageMap new ConcurrentHashMap(Math.toIntExact(3));CountDownLatch countDownLatch new CountDownLatch(Math.toIntExact(3));// 注意 easyexcel 暂时不支持多线程并发写入 详情请看github上issuesfor (int i 0 ;i sheetNum;i){int finali i;threadPoolTaskExecutor.submit(()-{PageT page new Page();page.setCurrent(finali 1);page.setSize(pageSize);// 获取数据存放到map中PageT selectPage baseMapper.selectPage(page,queryWrapper);pageMap.put(finali,selectPage);// 消耗掉一个countDownLatch.countDown();});}try {countDownLatch.await();} catch (InterruptedException e) {e.printStackTrace();}// 写入try (ExcelWriter excelWriter EasyExcel.write(out, pojoClass).build()) {pageMap.forEach((k,v)-{log.info(正在写入{}条数据,pageSize);WriteSheet writeSheet EasyExcel.writerSheet(k, 第(k1)批数据).build();excelWriter.write(v.getRecords(), writeSheet);pageMap.remove(k);});excelWriter.finish();}EasyExcel导入 EasyExcel导入思路如下 解析一行插入一行(速度太慢不可取)逐行解析到达指定行数EasyExcel提供PageReadListener类数据库批量插入 EasyExcel.read(resource.getInputStream(), Employee.class, new PageReadListenerEmployee((empList) - {// 方式三多线程批量插入,每次批量插入10W数据100W数据一共用时12sthreadPool.execute(() - employeeMapper.insertBatchSomeColumn(empList));log.info(成功插入一次{}量的数据, batchSize); }, batchSize)).sheet().doRead();如果是多个sheet页 每个线程处理一个sheet 解析指定的行数以后单线程批量插入。解析指定的行数以后多线程批量插入。
http://www.pierceye.com/news/9065/

相关文章:

  • 找不同 网站开发做外贸网站需要什么卡
  • c 用mysql做的网站西凤酒网站建设的目标
  • 荆州市城市建设投资开发有限公司网站企业做网站etp和源程序
  • 自主建站平台厦门软件公司排名
  • 潍坊潍微贷是哪家网站建设的wordpress登录地址插件
  • 电商网站建设 教学总结安卓开发者网站
  • 网站响应时间多久网站建设客户去哪里找
  • 地方门户网站模版青岛设计优化公司
  • 招商网站平台wordpress文章列表多图展示
  • 黄冈智能网站建设平台怎么在阿里巴巴网站做公司名称
  • 两学一做网站条幅查企业营业执照的网站
  • 新闻门户网站psd模板小白node怎么做网站
  • 做网站网络wordpress投稿页面路径怎么写
  • 苏州制作手机网站深圳公司网站建设设计
  • 织梦网站首页文字修改卫星宽带app
  • 建站神器做网站好做吗
  • 湛江免费制作网站百度站长工具抓取诊断
  • 网络营销推广的岗位职责有哪些网站seo怎样做
  • 专业商城网站建设价格低嘉兴网站推广优化公司
  • 购物网站建设网站网站建设运营培训总结
  • 网站推广方案整理涿州市查建设局网站
  • 大学生创新项目申报书 做网站宁波专业seo团队
  • 景德镇建站公司婚纱摄影网站html模板
  • 鞍山自适应网站制作网站空间后台怎么进入
  • 单位网站平台建设汇报如何做网站卖商品的网站
  • 网页设计标签大全沈阳网页关键词优化
  • 深圳彩票网站建设精选网站建设
  • 中文网站模板 免费建设企业网站内容
  • 怎么看网站到期时间公司官网建设哪家好
  • 网站备案增加域名解析自己在线制作logo免费图片