使用gzip对数据进行压缩、解压


我们在开发过程中,如果需要在客户端和服务器之间进行大量的数据传输操作,这种场景我们会优先考虑使用数据压缩的方式来减少传输的数据量,从而提高传输效率,以及减少客户端的运行内存等优势。

gzip简介

gzip是一种常用的压缩算法,它是若干种文件压缩程序的简称,通常指GNU计划的实现,此处的gzip代表GNU zip。

HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。大流量的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度。

Java中gzip压缩和解压实现

字节流压缩:

    /*** 字节流gzip压缩* @param data* @return*/public static byte[] gZip(byte[] data) {byte[] b = null;try {ByteArrayInputStream in = new ByteArrayInputStream(data);ByteArrayOutputStream out = new ByteArrayOutputStream();GZIPOutputStream gzip = new GZIPOutputStream(out);byte[] buffer = new byte[4096];int n = 0;while((n = in.read(buffer, 0, buffer.length)) > 0){gzip.write(buffer, 0, n);}gzip.close();in.close();b = out.toByteArray();out.close();} catch (Exception ex) {ex.printStackTrace();}return b;}

字节流解压:

    /*** gzip解压* @param data* @return*/public static byte[] unGZip(byte[] data){// 创建一个新的输出流ByteArrayOutputStream out = new ByteArrayOutputStream();try {ByteArrayInputStream in = new ByteArrayInputStream(data);GZIPInputStream gzip = new GZIPInputStream(in);byte[] buffer = new byte[4096];int n = 0;// 将解压后的数据写入输出流while ((n = gzip.read(buffer)) >= 0) {out.write(buffer, 0, n);}in.close();gzip.close();out.close();} catch (Exception e) {e.printStackTrace();}return out.toByteArray();}

使用gzip对数据进行压缩(Java、Android)相关推荐

  1. 【Android 内存优化】Android 工程中使用 libjpeg-turbo 压缩图片 ( 初始化压缩对象 | 打开文件 | 设置压缩参数 | 写入压缩图像数据 | 完成压缩 | 释放资源 )

    文章目录 一.使用 libjpeg-turbo 压缩图片流程 二.初始化 JPEG 压缩对象 三.打开文件 四.设置压缩参数 五.开始压缩 六.循环写入压缩数据 七.完成图片压缩及收尾 八.libjp ...

  2. 使用GZIP和Zip压缩Java数据流

    转载自   使用GZIP和Zip压缩Java数据流 本文通过对数据压缩算法的简要介绍,然后以详细的示例演示了利用java.util.zip包实现数据的压缩与解压,并扩展到在网络传输方面如何应用java ...

  3. Sprintboot redis 采用gzip和Snappy compress压缩数据

    1 前言 怎么使用和结合Sprintboot + redis ,可以参照我前面的文章:https://blog.csdn.net/zzhongcy/article/details/102584028 ...

  4. java 解压到内存,Java GZip 基于内存实现压缩和解压的方法

    欢迎大家关注本博,同时欢迎大家评论交流,可以给个赞哦!!! GZip是常用的无损压缩算法实现,在Linux中较为常见,像我们在Linux安装软件时,基本都是.tar.gz格式..tar.gz格式文件需 ...

  5. 大数据-常用压缩方式总结

    转载声明 本文系转载自以下两篇文章: 压缩格式gzip/snappy/lzo/bzip2 比较与总结 作者: zzhongcy Snappy.Lzo.Gzip.Bzip2比较 作者: 心有余力 转载仅 ...

  6. 性能优化之Java(Android)代码优化

    最新最准确内容建议直接访问原文:性能优化之Java(Android)代码优化 本文为Android性能优化的第三篇--Java(Android)代码优化.主要介绍Java代码中性能优化方式及网络优化, ...

  7. 浅谈Java/Android下的注解

    什么是注解 java.lang.annotation,接口 Annotation,在JDK5.0及以后版本引入. 注解是代码里的特殊标记,这些标记可以在编译.类加载.运行时被读取,并执行相应的处理.通 ...

  8. Java/Android引用类型及其使用分析

    Java/Android中有四种引用类型,分别是: Strong reference     - 强引用 Soft Reference        - 软引用 Weak Reference     ...

  9. Java压缩技术(二) ZIP压缩——Java原生实现

    转载自   Java压缩技术(二) ZIP压缩--Java原生实现 查过相关资料后才知道,ZIP应该算作归档类的压缩算法,每一门学科都可深可浅! 闲言少叙,先说ZIP压缩.  zip压缩需要通过Zip ...

最新文章

  1. 使用svn控制系统的优缺点和注意事项
  2. 虚拟机的ubunt系统在登录界面循环往复,登录不进去问题
  3. CasperJs 入门介绍
  4. MySQL主从复制(Centos6.3MySQL5.6)
  5. http请求curl
  6. Android studio设置相机权限,如何强制将“android.permission.CAMERA”权限添加到Codename中的清单中...
  7. 如何运行vue项目(从gethub上download的开源项目)
  8. 考完试 记录一下复习资料 人工智能原理知识点整理
  9. 智慧交通:数智化地铁大屏管控运维平台
  10. “计算机组成原理”视频资料(加上全集链接啦)
  11. FastAPI(56)- 使用 Websocket 打造一个迷你聊天室
  12. 台式计算机总是重启,电脑为什么老是自动重启?我的电脑经常自动重启!!
  13. 英语 1038个词根 后缀217个!
  14. 策略模式:网络小说的固定套路
  15. Gartner发布《2021年RPA魔力象限》,两家中国企业首次入选,开创历史!
  16. linux查看tcp连接日志,linux下tcp状态是从哪查出来的
  17. 将特殊字体添加到了html页面中
  18. 《实用VC编程之玩转控件》第7课:ListBox 列表控件
  19. 计算机绘图1091大作业,2018秋季【西南大学】[1091]《计算机绘图(1)》作业(参考答案)...
  20. 同品酸甜苦辣,风雨同行,不离不弃

热门文章

  1. 蓝牙耳机什么牌子好?盘点2022年性价比最高的蓝牙耳机品牌
  2. 离线强化学习(Offline RL)系列4:(数据集)Offline数据集特征及对离线强化学习算法的影响
  3. java疫苗之殇?关于java类加载器的一些思考
  4. C#中的里氏替换原则
  5. Linux使用devfb0 设备显示LVGL图形
  6. FFT算法的频率准确性问题
  7. 【转】数据库基本知识:(七)函数和表达式的使用
  8. 徐小明.别让股票,成为不能承受之重!!! (2007-06-22 07:14:12)
  9. 系统安全性之防火墙技术
  10. 电子商务(Electronic Commerce)