• poi使用随笔


    HSSFworkbook,XSSFworkbook,SXSSFworkbook区别简述

    1. HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,扩展名是.xls;
    2. XSSFWorkbook:是操作Excel2007的版本,扩展名是.xlsx;
    3. 前两者由于是office较为早期的版本,对于行数,列数,sheet表数都有太多限制,两者的具体区别在这里近互联网发展迅猛,需求日益递增,对于应对大数据量的导入导出解析等,对性能和效率要求越来越高,所以需求倒逼技术升级。至此,今天的重头戏要登场了,他就是SXSSFWorkbook,刚才列举的两个,都是小数据量,内存式操作,内存中操作数据优缺点都比较直观,优点当然是读写块,缺点是小数据量尚可,使用范围和场景受限。SXSSFWorkbook则是兼并的这两者的优点,采用临时文件+内存的方式进行读写。

    按说写到这里已经差不多了,但是先别走,等我把话说完,刚才说的这么多的优点,难道没有缺点?经过一段时间使用后发现,服务器磁盘上升的异常迅速,但是感觉应该及时这块改造引起的,

    通过源码分析,

    1. 首先是
    SXSSFWorkbook workbook = new SXSSFWorkbook();

    Sheet sheet = workbook.createSheet(sheetName);

     问题就在创建Sheet上,我们进去看看!

    原来内部也是基于XSSF够早的啊,继续刨

    这个方法把XSSF转换成了SXSS,继续下钻

    这里有个_writer,需要注意下,我们去这里看看

    由于压缩临时文件会导致性能下降,所以_compressTmpFiles使用默认值false,继续刨

    已经接近真相了,

     原来如此,在这里创建了临时对象,然后进行文件方式缓存数据,怪不得,会有这么多的临时文件

     既然找到源头就好办了,把临时文件删了不就好了,在这里我不得不吐槽下一些人,我不是针对谁,如果我的截图中出现了您的帖子,纯属无意冒犯

     我就呵呵了,poi可是Apache的项目,你这是在小看谁呢,借这个机会正好说下我的感受,很多人喜欢主观判断,一个老段子说的挺好,

    插不进去,只能是你姿势不对

     好了,闲话到此为止看源码

     下面说下我的解决过程,清除临时文件,但是方法受保护,应该再往上翻

     

    方法还是受限,再往上翻,

    哇塞,终点站了,请刷卡下车......

  • 相关阅读:
    为lvm逻辑分区扩容
    Linux性能优化课程笔记-CPU性能工具
    Linux性能优化课程笔记-bcc工具
    nmcli命令添加bond网口
    IPv6地址冲突
    mongodb的审计功能
    BIND支静态存根区域
    git的使用(2)
    全世界都在学python-打开文件
    java操作mongodb时,对象bean和DBObject相互转换的方法
  • 原文地址:https://www.cnblogs.com/songyz/p/9476333.html
Copyright © 2020-2023  润新知