使用gzip对数据进行压缩(Java、Android)
使用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)相关推荐
- 【Android 内存优化】Android 工程中使用 libjpeg-turbo 压缩图片 ( 初始化压缩对象 | 打开文件 | 设置压缩参数 | 写入压缩图像数据 | 完成压缩 | 释放资源 )
文章目录 一.使用 libjpeg-turbo 压缩图片流程 二.初始化 JPEG 压缩对象 三.打开文件 四.设置压缩参数 五.开始压缩 六.循环写入压缩数据 七.完成图片压缩及收尾 八.libjp ...
- 使用GZIP和Zip压缩Java数据流
转载自 使用GZIP和Zip压缩Java数据流 本文通过对数据压缩算法的简要介绍,然后以详细的示例演示了利用java.util.zip包实现数据的压缩与解压,并扩展到在网络传输方面如何应用java ...
- Sprintboot redis 采用gzip和Snappy compress压缩数据
1 前言 怎么使用和结合Sprintboot + redis ,可以参照我前面的文章:https://blog.csdn.net/zzhongcy/article/details/102584028 ...
- java 解压到内存,Java GZip 基于内存实现压缩和解压的方法
欢迎大家关注本博,同时欢迎大家评论交流,可以给个赞哦!!! GZip是常用的无损压缩算法实现,在Linux中较为常见,像我们在Linux安装软件时,基本都是.tar.gz格式..tar.gz格式文件需 ...
- 大数据-常用压缩方式总结
转载声明 本文系转载自以下两篇文章: 压缩格式gzip/snappy/lzo/bzip2 比较与总结 作者: zzhongcy Snappy.Lzo.Gzip.Bzip2比较 作者: 心有余力 转载仅 ...
- 性能优化之Java(Android)代码优化
最新最准确内容建议直接访问原文:性能优化之Java(Android)代码优化 本文为Android性能优化的第三篇--Java(Android)代码优化.主要介绍Java代码中性能优化方式及网络优化, ...
- 浅谈Java/Android下的注解
什么是注解 java.lang.annotation,接口 Annotation,在JDK5.0及以后版本引入. 注解是代码里的特殊标记,这些标记可以在编译.类加载.运行时被读取,并执行相应的处理.通 ...
- Java/Android引用类型及其使用分析
Java/Android中有四种引用类型,分别是: Strong reference - 强引用 Soft Reference - 软引用 Weak Reference ...
- Java压缩技术(二) ZIP压缩——Java原生实现
转载自 Java压缩技术(二) ZIP压缩--Java原生实现 查过相关资料后才知道,ZIP应该算作归档类的压缩算法,每一门学科都可深可浅! 闲言少叙,先说ZIP压缩. zip压缩需要通过Zip ...
最新文章
- 使用svn控制系统的优缺点和注意事项
- 虚拟机的ubunt系统在登录界面循环往复,登录不进去问题
- CasperJs 入门介绍
- MySQL主从复制(Centos6.3MySQL5.6)
- http请求curl
- Android studio设置相机权限,如何强制将“android.permission.CAMERA”权限添加到Codename中的清单中...
- 如何运行vue项目(从gethub上download的开源项目)
- 考完试 记录一下复习资料 人工智能原理知识点整理
- 智慧交通:数智化地铁大屏管控运维平台
- “计算机组成原理”视频资料(加上全集链接啦)
- FastAPI(56)- 使用 Websocket 打造一个迷你聊天室
- 台式计算机总是重启,电脑为什么老是自动重启?我的电脑经常自动重启!!
- 英语 1038个词根 后缀217个!
- 策略模式:网络小说的固定套路
- Gartner发布《2021年RPA魔力象限》,两家中国企业首次入选,开创历史!
- linux查看tcp连接日志,linux下tcp状态是从哪查出来的
- 将特殊字体添加到了html页面中
- 《实用VC编程之玩转控件》第7课:ListBox 列表控件
- 计算机绘图1091大作业,2018秋季【西南大学】[1091]《计算机绘图(1)》作业(参考答案)...
- 同品酸甜苦辣,风雨同行,不离不弃
热门文章
- 蓝牙耳机什么牌子好?盘点2022年性价比最高的蓝牙耳机品牌
- 离线强化学习(Offline RL)系列4:(数据集)Offline数据集特征及对离线强化学习算法的影响
- java疫苗之殇?关于java类加载器的一些思考
- C#中的里氏替换原则
- Linux使用devfb0 设备显示LVGL图形
- FFT算法的频率准确性问题
- 【转】数据库基本知识:(七)函数和表达式的使用
- 徐小明.别让股票,成为不能承受之重!!! (2007-06-22 07:14:12)
- 系统安全性之防火墙技术
- 电子商务(Electronic Commerce)