JAVA代码之Snappy 压缩

Snappy is a compression/decompression library. It does not aim for maximum compression, or compatibility with any other compression library; instead, it aims for very high speeds and reasonable compression. For instance, compared to the fastest mode of zlib, Snappy is an order of magnitude faster for most inputs, but the resulting compressed files are anywhere from 20% to 100% bigger. On a single core of a Core i7 processor in 64-bit mode, Snappy compresses at about 250 MB/sec or more and decompresses at about 500 MB/sec or more.

Snappy is widely used inside Google, in everything from BigTable and MapReduce to our internal RPC systems. (Snappy has previously been referred to as “Zippy” in some presentations and the likes.)

Snappy 是Google的一个 C++ 的用来压缩和解压缩的开发包。其目标不是最大限度压缩或者兼容其他压缩格式,而是旨在提供高速压缩速度和合理的压缩率。Snappy 比 zlib 更快,但文件相对要大 20% 到 100%。在 64位模式的 Core i7 处理器上,可达每秒 250~500兆的压缩速度。

snappy 的前身是Zippy。虽然只是一个数据压缩库,它却被Google用于许多内部项目程,其中就包括BigTable,MapReduce和RPC。Google宣称它在这个库本身及其算法做了数据处理速度上的优化,作为代价,并没有考虑输出大小以及和其他类似工具的兼容性问题。Snappy特地为64位x86处理器做了优化,在单个Intel Core i7处理器内核上能够达到至少每秒250MB的压缩速率和每秒500MB的解压速率。

Google极力赞扬Snappy的各种优点,Snappy下载从一开始就被“设计为即便遇到损坏或者恶意的输入文件都不会崩溃”,而且被Google在生产环境中用于压缩PB级的数据。其健壮性和稳定程度可见一斑。

核心代码下载

package cn.com.kafkademo.kafkademo;

import java.io.IOException;

import org.xerial.snappy.Snappy;

public class SnappyDemo {

/**

* args

*/

public static void main(String[] args) {

}

public static byte[] compressHtml(String html) {

try {

return Snappy.compress(html.getBytes("UTF-8"));

} catch (IOException e) {

e.printStackTrace();

return null;

}

}

public static String decompressHtml(byte[] bytes) {

try {

return new String(Snappy.uncompress(bytes));

} catch (IOException e) {

e.printStackTrace();

return null;

}

}

}

下载


 

 

时间: 2024-10-11 12:37:28

JAVA代码之Snappy 压缩的相关文章

使用Snappy 压缩方式报错“java.lang.UnsatisfiedLinkError: no snappyjava in java.library.path”

情况描述 其实这个问题已经困扰我很久了,最近在公司Linux上搭建hadoop 和 spark环境的时候,我就遇到 spark提交作业到yarn 集群就报错这个错,当时已经安装snappy环境了,任何关于snappy静态库都编译了,这是我提交到spark mail list上的http://apache-spark-user-list.1001560.n3.nabble.com/java-lang-UnsatisfiedLinkError-no-snappyjava-in-java-librar

java代码实现图片处理功能。对图片质量进行压缩。

java图片处理有点头疼,找了很多资料.在这里进行一个汇总,记录下个人的体验,也希望对大家有所帮助. 需求:浏览的图片需要在1M一下. 1.真正对图片的质量进行压缩的(不是通过修改图片的高,宽进行缩小图片.就单单缩小图片质量) 优点:不修改图片大小,简便. 缺点:对jpg格式能处理很好,对于gif,png其他格式不适合. compressPic(图片路径,处理格式); /** * * 修改图片大小 * <p>描述</p> * @date 2014-7-10 下午4:27:51 *

最笨的方法解决 使用Snappy 压缩方式报错“java.lang.UnsatisfiedLinkError: no snappyjava in java.library.path”

之前写过一篇这个文章:http://blog.csdn.net/stark_summer/article/details/47361603,那个时候 linux环境 spark 使用snappy方式压缩任然不好用,而今天我同事hive on hadoop 使用snappy压缩方式也报这个错,此刻的我,感觉这个问题 一定要解决 我想了想,只能使用最笨的方式先解决这个问题了,将libsnappyjava.so文件放到$JAVA_HOME/jre/lib/amd64/下了 操作过程如下: 首先把$HA

从 Java 代码到 Java 堆

本文将为您提供 Java? 代码内存使用情况的深入见解,包括将 int 值置入一个 Integer 对象的内存开销.对象委托的成本和不同集合类型的内存效率.您将了解到如何确定应用程序中的哪些位置效率低下,以及如何选择正确的集合来改进您的代码. 优化应用程序代码的内存使用并不是一个新主题,但是人们通常并没有很好地理解这个主题.本文将简要介绍 Java 进程的内存使用,随后深入探讨您编写的 Java 代码的内存使用.最后,本文将展示提高代码内存效率的方法,特别强调了 HashMap 和 ArrayL

配置Snappy压缩

1. 功能说明 使用snappy压缩来提升mapreduce和hbase的性能.其实就是用CPU换IO吞吐量和磁盘空间.配置并使用snappy有如下几点要求: 首先需要hadoop集群的native库已经收到编译好,并且添加了对snappy的支持.编译hadoop源码之前安装了snappy并且编译时指定-Drequire.snappy参数.(我使用的版本是hadoop-2.5.0-cdh5.3.3伪分布式) 安装了maven(我使用的版本是3.0.5) jdk已经成功安装并设置了JAVA_HOM

Java代码是怎么运行的

Java代码执行步骤 编译 Java文件通过JVM的编译器编译成字节码文件,有了字节码,JVM的类加载器就开始加载字节码文件. 解释器 解释器会将字节码转换成汇编指令,然后在转换成CPU可以识别的机器指令(下图是汇编指令转成机器码的案例).解释器是软件实现的,他将字节码转换成汇编指令,可以实现同一份Java字节码在不同的硬件上运行,而将汇编指令转换成机器指令由硬件直接实现,所以他的速度会更快.JVM为了提升运行效率,会将某些热点代码,一次全部编译成机器指令再执行.也就是和解释执行对应的即时编译,

去除挖宝报毒的问题,修改基础包的java代码,并且打包

1:去除报毒的  yl-util-countly.jar 2:注释基础包 java 的调用到yl-util-countl的代码 3:充值编译gamebase-lib.jar 1:在项目里执行  ant release 2:生成的bin\classes.jar 就是 gamebase-lib.jar 附件为所以的java代码,只有3个需要改,注释掉了调用yl-util-countl的代码

java代码分析及分析工具

java代码分析及分析工具 一个项目从搭建开始,开发的初期往往思路比较清晰,代码也比较清晰.随着时间的推移,业务越来越复杂.代码也就面临着耦合,冗余,甚至杂乱,到最后谁都不敢碰. 作为一个互联网电子商务网站的业务支撑系统,业务复杂不言而喻.从09年开始一直沿用到现在,中间代码经过了多少人的手,留下了多少的坑,已经记不清楚了,谁也说不清了. 代码的维护成本越来越高.代码已经急需做调整和改善.最近项目组专门设立了一个小组,利用业余时间做代码分析的工作,目标对核心代码进行分析并进行设计重构. 代码分析

Tomcat使用MyEclipse远程调试Java代码配置详解

Tomcat使用MyEclipse远程调试Java代码总结如下:在做远程调试时,在windows系统和非windows系统下的配置,Tomcat中会有所差别,具体如下: 第一步.配置tomcat一.在windows系统中:打开%CATALINE_HOME%/bin下的文件catalina.bat,加入下面这行:set CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket