标签:
国庆假期,宅呀~ 无意中看到一篇java压缩算法的文章,就顺便度娘了一些相关文章来看。
本来想深入研究一下算法,但是,毕竟是假期,哪有那份心思啊,就实际应用简单Memo一下吧。
1. 中文乱码问题
其实这是无意中看到的,度娘一下漫天都是,看来各位程序猿还是以务实的应用为多啊。
度娘里,99%的帖子都是说用 Ant中的 org.apache.tools.zip.* 来代替 java.util.zip.*
这种办法来解决中文乱码问题。究其原因是,jdk中写死了UTF-8编码,而操作系统的文件编码如果不是UTF-8,如中文Windows下的GBK,则压缩、解压出的文件名就会出现乱码。
因为,org.apache.tools.zip.ZipOuputStream 有setEncoding(String) 方法,因此可以解决。
压缩时,(不知道什么原因?)Ant也没有提供 org.apache.tools.zip.ZipInputStream 这个类,所以只能使用JDK自带的类了。
即便在度娘中输入关键字“1.7”,也搜不出来的,就是其实JDK1.7已经可以设置字符集了。
Java1.7之后,我们只要在构造zos时,
ZipOutputStream zos = new ZipOutputStream(out, System.getProperties("sun.jnu.encoding"));
就可以解决中文乱码问题了。
是不是可以忘记 org.apache.tools.zip 呢?至少我没有看到,它还在其他什么方面更有优势。
2. 压缩/解压速度与压缩比
速度和效率是矛盾的,但优秀的算法可以尽量化解这个矛盾。可以,事实很残酷,没有任何一个已知的算法是速度最快且压缩比最高的。借用一下 http://www.importnew.com/14410.html 的结论吧
(黄道越长越好,速度快;绿道越短越好,文件体积小)
此文作者,优选 LZ4.FastNative,其次是Deflate(M=1)
这里我想说明两点
ZipOutputStream zos = new ZipOutputStream(out, System.getProperties("sun.jnu.encoding")); // 还记得这个属性吧?
zos.setLevel(java.util.zip.Deflater.BEST_SPEED); // BEST_SPEED == 1
以上两点,是今天短暂学习的一点笔记,也算是至少总结了两篇以上的,网上比较不好找的、内容比较有用的文章,在给自己做个Memo的同时,如果对他人有一点点用处,想必也是极好的。
springmvc + mybatis整合详细,及遇到的问题请参看以下资料:
参考资料:
http://www.springmvc,net/detail/6074493.html
http://my.spring.net/wangbiglei/blog/489583
http://my.springmvc.net/wangbiglei/blog/489604
标签:
原文地址:http://www.cnblogs.com/lucene110/p/4856401.html