原贴见 报表中呈现金蝶K3存放于数据库中经压缩过的大文本
上次解决K3中经kdzip.dll压缩存储到数据库中的富文本内容产生了几个问题,一是kdzip.dll调用要使用32 位JDK,造成报表系统性能低下,经常报超出内存错误。二是kdzip解压要先生成待解压文件,然后通过对这个文件解压后重新生成一个文件,效率较差。
经过向金蝶公司提单要求解决kdzip.dll64位文件问题,得到的答复是此文件是通过对zlib.lib静态库二次开发得来的,网上搜索了一大堆资料,发现JAVA原生的java.util.zip也是使用zlib压缩算法,接下来事情就变得简单多了,在原有代码上进行了修改。
通过代码的优化,从原来要 生成文件--解压文件--生成新的解压文件-读取文件的方式直接通过字节数组来操作,优化了性能。
目前,已将报表系统换成了64位,一天运行下来,没有因内存溢出出现任何问题,稳定性有了极大提升,较完美的解决了这一个问题,同理对于其它保存在数据库中的压缩图片等文件也可以通过此方法来解决。
编辑于 2018-10-6 16:18
编辑于 2018-10-6 16:28
|