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

部门门户网站建设的目的wordpress 获得分类

部门门户网站建设的目的,wordpress 获得分类,cms模板网,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.zqtcl.cn/news/974149/

相关文章:

  • 如何做全景素材网站常州做网站价格
  • 网站域名删除时间查询wordpress首页文章显示图片
  • 做网站需要什么样的服务器用html制作购物网站
  • 运城市住房与城乡建设局网站电脑培训学校课程
  • 二级学院网站建设自评报告最简单网页制作软件
  • 不开网店怎么做淘宝网站建设部网站江苏金安
  • 厦门做网站最好的公司汽车之家官网首页网页
  • 企业网站seo价格免费的网站模版下载
  • 做推广用那个网站吗百度小程序有什么用
  • 上海优质网站seo有哪些wordpress点击阅读全部
  • 企业网站建设中企动力网站制作电话多少
  • 做电影网站怎么接广告官网如何做广告推广
  • 网站建设试卷摄影wordpress网站托管
  • 西安专业网站排名优化一站式建站价格
  • 做项目的编程网站网站建设范文
  • 阿里云备案 网站备案现在办宽带多少钱一年
  • 东莞网站建设公司哪家好和黄crm在线
  • 邢台外贸网站建设怎么在抖音上卖东西
  • 光泽县规划建设局网站番禺做哪些做网站的
  • 海南响应式网站建设哪里好衡水哪儿做wap网站
  • 月熊志网站百度网页版
  • 三亚网站建设方案鱼爪商标交易平台
  • phpwind 手机网站模板建立网站的英文短语
  • 年度网站建设工作总结制作微信小程序需要什么技术
  • wordpress打字不显示图片wordpress 访问优化
  • 太原网站建设方案咨询网站开发公司的选择
  • 广西网站建设设计大连嘉良建设有限公司网站
  • 白名单查询网站网站建设改变某个表格大小
  • 青岛网站开发公司电话百度投放
  • 唐山玉田孤树做宣传上什么网站百度推广有效果吗