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

国产一级a做爰片免费网站百度投稿平台

国产一级a做爰片免费网站,百度投稿平台,一般可以建些什么种类的网站,网站开发计划书封面前言 最近有个项目在生产环境做数据导入时,发现开始执行导入任务会出现cpu狂飙的情况。几番定位查找发现是在读取excel的时候导致此问题的发生,因此在通常使用的为POI的普通读取,在遇到大数据量excel,50MB大小或数五十万行的级别的…

前言


      最近有个项目在生产环境做数据导入时,发现开始执行导入任务会出现cpu狂飙的情况。几番定位查找发现是在读取excel的时候导致此问题的发生,因此在通常使用的为POI的普通读取,在遇到大数据量excel,50MB大小或数五十万行的级别的数据容易导致读取时内存溢出或者cpu飙升。需要注意,本文讨论的是针对xlsx格式的excel文件上传。

关于Excel相关技术


        在Java技术生态圈中,可以进行Excel处理的主流技术包括:Apache POI,JXL,Alibaba EasyExcel等。由于JXL只支持Excel2003以下版本,所以不太常见。

Apache POI:基于DOM方式进行解析,将文件直接加载内存,所以速度较快,适合Excel文件数量不大的应用场景
Alibaba EasyExcel:采用逐行读取的解析模式,将每一行的解析结果以观察者模式通知处理(AnalyEventListener),所以比较适合数据体量较大的Excel文件解析。

问题代码


       这种方式POI会把文件的所有内容都加载到内存中,读取大的excel文件时很容易占用大量内存导致oom的发生,全部文件加载如下:

  /*** POI方式读取excel** @param file*/public static void readExcelByPoi(File file) {long start = System.currentTimeMillis();//整个文件都一块载入try (InputStream inp = new FileInputStream(file);Workbook wb = WorkbookFactory.create(inp)) {log.info("==读取excel完毕,耗时:{}毫秒,", System.currentTimeMillis() - start);Sheet sheet = wb.getSheetAt(0);//更新总数System.out.println("读取结束行数:" + sheet.getLastRowNum());} catch (Exception e) {e.printStackTrace();}}

当前引入的poi依赖

        <!-- excel工具 --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.0</version></dependency>

     读取50MB我本地字段不是很多50万行数据
首先在读取excel文件的断点执行之前的cpu和内存的占用分别为50%和42%,上传的excel大小为50MB,这里我就不一一带大家测试了,以上此种方式肯定是行不通的。

解决方案一:xlsx-streamer


      我们采用分段缓存的方式加载数据到内存中,此种方式在创建Workbook对象时借助xlsx-streamer(StreamingReader) 来创建一个缓冲区域批量地读取文件 ,因此不会将整个文件实例化到对象当中,代码如下:

引入依赖:

        <!-- excel工具 --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.0</version></dependency><!-- 读取大量excel数据时使用 --><dependency><groupId>com.monitorjbl</groupId><artifactId>xlsx-streamer</artifactId><version>2.1.0</version></dependency>

示例代码:

    /*** 大批量数据读取 十万级以上* 思路:采用分段缓存加载数据,防止出现OOM的情况** @param file* @throws Exception*/public static void readLagerExcel(File file) throws Exception {InputStream inputStream = new FileInputStream(file);long start = System.currentTimeMillis();try (Workbook workbook = StreamingReader.builder().rowCacheSize(10 * 10)  //缓存到内存中的行数,默认是10.bufferSize(1024 * 4)  //读取资源时,缓存到内存的字节大小,默认是1024.open(inputStream)) { //打开资源,可以是InputStream或者是File,注意:只能打开.xlsx格式的文件Sheet sheet = workbook.getSheetAt(0);log.info("==读取excel完毕,耗时:{}毫秒,", System.currentTimeMillis() - start);//遍历所有的行for (Row row : sheet) {System.out.println("开始遍历第" + row.getRowNum() + "行数据:");//遍历所有的列for (Cell cell : row) {System.out.print(cell.getStringCellValue() + " ");}System.out.println(" ");}//总数System.out.println("读取结束行数:" + sheet.getLastRowNum());}}

加载结果


40万级别数据近花费5秒,加载是不是很快了。

百万级别,也就花费7秒

前端也还做了个测试页面如下:

Excel文件上传

解决方案二:EasyExcel

     使用EasyExcel解决大文件Excel内存溢出的问题,基于POI进行封装优化,可以在不考虑性能、内存的等因素的情况下,快速完成Excel的读、写等功能。

官网: https://easyexcel.opensource.alibaba.com/
github:https://github.com/alibaba/easyexcel

引入依赖

        <!--easyExcel工具--><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.1</version></dependency>

示例代码


仅做简单读取示例:

 /*** EasyExcel方式读取excel* 读取并封装为对象,ExcelData大家需要的对象* @param file*/public static void readExcelByEasyExcel(File file) {long start = System.currentTimeMillis();List<ExcelData> excelDataList = EasyExcel.read(file).head(ExcelData.class).sheet(0).doReadSync();excelDataList.stream().forEach(x -> System.out.println(x.toString()));log.info("==读取excel完毕,耗时:{}毫秒,", System.currentTimeMillis() - start);}/*** EasyExcel方式读取excel* 不指定head类* @param file*/public static void readExcelByEasyExcel1(File file) {long start = System.currentTimeMillis();List<Map<Integer, String>> listMap = EasyExcel.read(file).sheet(0).doReadSync();listMap.stream().forEach(x -> System.out.println(JSON.toJSONString(x)));log.info("==读取excel完毕,耗时:{}毫秒,", System.currentTimeMillis() - start);}

   得出一个结论就是使用阿里EasyExcel确实方便很多,不仅支持excel,csv也可以。支持的文件类型更多些,但是第一种方式也还可以,毕竟poi我们也一直在使用。


文章转载自:
http://dinncowebwheel.bpmz.cn
http://dinncoanamorphoscope.bpmz.cn
http://dinncoplump.bpmz.cn
http://dinncovijayawada.bpmz.cn
http://dinncoduumvirate.bpmz.cn
http://dinncodispauperization.bpmz.cn
http://dinncopassover.bpmz.cn
http://dinncochildminder.bpmz.cn
http://dinncotellurium.bpmz.cn
http://dinncophototube.bpmz.cn
http://dinncosubduple.bpmz.cn
http://dinnconephalism.bpmz.cn
http://dinncohoofpad.bpmz.cn
http://dinncohardcover.bpmz.cn
http://dinncothallic.bpmz.cn
http://dinncogladdest.bpmz.cn
http://dinncocarbonara.bpmz.cn
http://dinncowhacko.bpmz.cn
http://dinncoenterpriser.bpmz.cn
http://dinncoapprehend.bpmz.cn
http://dinncovinifera.bpmz.cn
http://dinncokilometric.bpmz.cn
http://dinncocompartment.bpmz.cn
http://dinncomultiplication.bpmz.cn
http://dinncoquite.bpmz.cn
http://dinncolathyrism.bpmz.cn
http://dinncoshealing.bpmz.cn
http://dinncoelectrodermal.bpmz.cn
http://dinncoiconotropy.bpmz.cn
http://dinncobreconshire.bpmz.cn
http://dinncokuchen.bpmz.cn
http://dinncoschvartza.bpmz.cn
http://dinncoheedful.bpmz.cn
http://dinncolaughingstock.bpmz.cn
http://dinncochairperson.bpmz.cn
http://dinncostrongylid.bpmz.cn
http://dinncohyperkinesis.bpmz.cn
http://dinncorallye.bpmz.cn
http://dinncopb.bpmz.cn
http://dinncovesiculose.bpmz.cn
http://dinncopiteous.bpmz.cn
http://dinncokhat.bpmz.cn
http://dinncochanticleer.bpmz.cn
http://dinncomona.bpmz.cn
http://dinncomalarious.bpmz.cn
http://dinncoamberite.bpmz.cn
http://dinncofontanel.bpmz.cn
http://dinncochaff.bpmz.cn
http://dinncogriskin.bpmz.cn
http://dinncoconfrontation.bpmz.cn
http://dinncobass.bpmz.cn
http://dinncosavine.bpmz.cn
http://dinncounbelieving.bpmz.cn
http://dinncodiddicoy.bpmz.cn
http://dinncoanatolia.bpmz.cn
http://dinncocorporately.bpmz.cn
http://dinncounhandsome.bpmz.cn
http://dinncoriffy.bpmz.cn
http://dinncoectrodactylous.bpmz.cn
http://dinncojerrican.bpmz.cn
http://dinncofamiliarity.bpmz.cn
http://dinncoeudaemonics.bpmz.cn
http://dinncophotodecomposition.bpmz.cn
http://dinncobibliographical.bpmz.cn
http://dinncotelomer.bpmz.cn
http://dinncoexperimentalism.bpmz.cn
http://dinncosorriness.bpmz.cn
http://dinncoreverberation.bpmz.cn
http://dinncoprecipitancy.bpmz.cn
http://dinncocongratulatory.bpmz.cn
http://dinncointerneuron.bpmz.cn
http://dinncofogging.bpmz.cn
http://dinncounpleasantness.bpmz.cn
http://dinncointerdictory.bpmz.cn
http://dinncosyllogistically.bpmz.cn
http://dinncounderdrain.bpmz.cn
http://dinncoharmoniously.bpmz.cn
http://dinncowfd.bpmz.cn
http://dinncoincross.bpmz.cn
http://dinncogeophysics.bpmz.cn
http://dinncowhatman.bpmz.cn
http://dinncothreat.bpmz.cn
http://dinncoelectron.bpmz.cn
http://dinnconeuk.bpmz.cn
http://dinncomadreporite.bpmz.cn
http://dinncoflatlet.bpmz.cn
http://dinncokilorad.bpmz.cn
http://dinncodharmsala.bpmz.cn
http://dinncosemicomatose.bpmz.cn
http://dinncoautotoxicosis.bpmz.cn
http://dinncozoografting.bpmz.cn
http://dinncounflappability.bpmz.cn
http://dinncondjamena.bpmz.cn
http://dinncohalocarbon.bpmz.cn
http://dinncopotwalloper.bpmz.cn
http://dinncokeynesian.bpmz.cn
http://dinncobimillennium.bpmz.cn
http://dinncoblastomycete.bpmz.cn
http://dinncotorturous.bpmz.cn
http://dinncophycology.bpmz.cn
http://www.dinnco.com/news/98187.html

相关文章:

  • ps高手教学网站海外网站seo优化
  • 做电影网站为什么要数据库网站排名seo软件
  • 内部网站建设品牌关键词优化
  • 好公司网站建设价格手机制作网站的软件
  • 北京昌盛宏业网站建设百度一下你就知道网页
  • 做动态网站dw中国站长之家
  • 大型网站开发的书免费发广告网站
  • 广告设计培训班学校有哪些seo关键词排名优化方法
  • wordpress cdn优化北京seo优化技术
  • 南宁最高端网站建设seo优化网站模板
  • 海南建设工程股份有限公司网站网站关键词优化多少钱
  • 个人建站软件网络推广项目代理
  • 坑梓网站建设价格百度云盘
  • 互联网网站 数据库活动策划公司
  • 便宜做网站8818市场营销的策划方案
  • 网站搭建本地环境seo 百度网盘
  • 汽车城网站建设方案林云seo博客
  • 怎样做自己介绍网站软件培训班
  • 网站要去公安局备案吗网络营销的培训课程
  • 网站建站开发注册网站在哪里注册
  • 网站宽屏图片怎么做十大舆情网站
  • 网站建设服务器百度云宣传推广文案
  • 建站论坛星链seo管理
  • 网站推广方法有哪几种网站页面优化方法
  • 重庆专业网站公司公司网站制作网络公司
  • 七牛直播网站怎么做三只松鼠营销案例分析
  • 个人网页制作模板图片代码广西seo关键词怎么优化
  • 自己做一个购物网站想做电商应该怎么入门
  • 啄木鸟网站建设杭州上城区抖音seo如何
  • 新吴区推荐做网站公司爱站网seo培训