热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

javagzip压缩/ungzip解压缩、base64encode编码/decode编码、URLEncode.encode编码/URLDecoder.decode编码

日萌社人工智能AI:KerasPyTorchMXNetTensorFlowPaddlePaddle深度学习实战(不定时更新)1.对发送的
日萌社

人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新)


 

1.对发送的数据进行 gzip压缩 、Base64.encode编码、URLEncoder.encode编码,最后再进行http传输数据源数据 --> gzip压缩 --> Base64.encode编码 --> URLEncoder.encode编码 --> http传输数据
2.对http接收到的数据进行 URLDecoder.decode解码、Base64.decode解码、ungzip解压缩 得到最终的原始数据http传输的数据 --> URLDecoder.decode解码 --> Base64.decode解码 --> ungzip解压缩

java 压缩、解压缩时报错 Unexpected end of ZLIB input stream


代码文件下载链接: https://pan.baidu.com/s/19GIva6_AKlFdbVDxbYqLEw
提取码: m6xj

 

解压缩例子(调用代码): 

while(true){String urldecode = null;try{urldecode = URLDecoder.decode(http接收到的数据, "UTF-8");}catch (Exception e){logger.error("URLDecoder.decode方法报错:"+e.getMessage());logger.error("出错的数据:"+split3[1]);continue;}byte[] decode = null;try{decode = Base64Coder.decode(urldecode);}catch (IllegalArgumentException e){logger.error("Base64Coder.decode方法报错:"+e.getMessage());logger.error("出错的数据:"+split3[1]);continue;}String s = null;try{s = GZIPUtils.uncompressToString(decode);}catch (IOException e){logger.error("GZIPUtils.uncompressToString解压数据时出问题:"+e.getMessage());logger.error("出错的数据:"+split3[1]);continue;}}

URLEncoder.encode编码 和 URLDecoder.decode解码 使用java自身提供的jar包类

import java.net.URLDecoder;
import java.net.URLEncoder;

Base64.encode编码 和 Base64.decode解码

package com.nginxlog;public class Base64Coder
{// Mapping table from 6-bit nibbles to Base64 characters.private static char[] map1 &#61; new char[64];static {int i &#61; 0;for (char c &#61; &#39;A&#39;; c <&#61; &#39;Z&#39;; c&#43;&#43;)map1[i&#43;&#43;] &#61; c;for (char c &#61; &#39;a&#39;; c <&#61; &#39;z&#39;; c&#43;&#43;)map1[i&#43;&#43;] &#61; c;for (char c &#61; &#39;0&#39;; c <&#61; &#39;9&#39;; c&#43;&#43;)map1[i&#43;&#43;] &#61; c;map1[i&#43;&#43;] &#61; &#39;&#43;&#39;;map1[i&#43;&#43;] &#61; &#39;/&#39;;}// Mapping table from Base64 characters to 6-bit nibbles.private static byte[] map2 &#61; new byte[128];static {for (int i &#61; 0; i in
.* &#64;return A character array with the Base64 encoded data.*/public static char[] encode(byte[] in, int iLen) {int oDataLen &#61; (iLen * 4 &#43; 2) / 3; // output length without paddingint oLen &#61; ((iLen &#43; 2) / 3) * 4; // output length including paddingchar[] out &#61; new char[oLen];int ip &#61; 0;int op &#61; 0;while (ip >> 2;int o1 &#61; ((i0 & 3) <<4) | (i1 >>> 4);int o2 &#61; ((i1 & 0xf) <<2) | (i2 >>> 6);int o3 &#61; i2 & 0x3F;out[op&#43;&#43;] &#61; map1[o0];out[op&#43;&#43;] &#61; map1[o1];out[op] &#61; op 0 && in[iLen - 1] &#61;&#61; &#39;&#61;&#39;)iLen--;int oLen &#61; (iLen * 3) / 4;byte[] out &#61; new byte[oLen];int ip &#61; 0;int op &#61; 0;while (ip 127 || i1 > 127 || i2 > 127 || i3 > 127)throw new IllegalArgumentException("Illegal character in Base64 encoded data.");int b0 &#61; map2[i0];int b1 &#61; map2[i1];int b2 &#61; map2[i2];int b3 &#61; map2[i3];if (b0 <0 || b1 <0 || b2 <0 || b3 <0)throw new IllegalArgumentException("Illegal character in Base64 encoded data.");int o0 &#61; (b0 <<2) | (b1 >>> 4);int o1 &#61; ((b1 & 0xf) <<4) | (b2 >>> 2);int o2 &#61; ((b2 & 3) <<6) | b3;out[op&#43;&#43;] &#61; (byte) o0;if (op

gzip压缩 和 ungzip解压缩

package com.nginxlog;import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.URLDecoder;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;public class GZIPUtils
{public static final String GZIP_ENCODE_UTF_8 &#61; "UTF-8";public static final String GZIP_ENCODE_ISO_8859_1 &#61; "ISO-8859-1";public static byte[] compress(String str, String encoding)
// public static byte[] compress(String str, String encoding){if (str &#61;&#61; null || str.length() &#61;&#61; 0) {return null;}ByteArrayOutputStream out &#61; new ByteArrayOutputStream(str.getBytes().length);GZIPOutputStream gzip;try {gzip &#61; new GZIPOutputStream(out);gzip.write(str.getBytes(encoding));
// byte[] bytes &#61; out.toByteArray();gzip.close();} catch ( Exception e) {e.printStackTrace();}byte[] bytes &#61; out.toByteArray();try{out.close();}catch (IOException e) {e.printStackTrace();}return bytes;
// return new String(Base64Coder.encode(bytes));//Base64Coder 对 压缩数据 进行 编码}public static byte[] compress(String str) throws IOException{return compress(str, GZIP_ENCODE_UTF_8);}public static byte[] uncompress(byte[] bytes){int bufferSize &#61; 4096;if (bytes &#61;&#61; null || bytes.length &#61;&#61; 0) {return null;}ByteArrayOutputStream out &#61; new ByteArrayOutputStream(bytes.length);ByteArrayInputStream in &#61; new ByteArrayInputStream(bytes);try {GZIPInputStream ungzip &#61; new GZIPInputStream(in,bufferSize);byte[] buffer &#61; new byte[bufferSize];int n;while ((n &#61; ungzip.read(buffer)) >&#61; 0) {out.write(buffer, 0, n);}ungzip.close();} catch (Exception e) {e.printStackTrace();}byte[] bytes1 &#61; out.toByteArray();try{in.close();out.close();}catch (IOException e){e.printStackTrace();}return bytes1;}public static String uncompressToString(byte[] bytes, String encoding) throws IOException {int bufferSize &#61; 4096;if (bytes &#61;&#61; null || bytes.length &#61;&#61; 0) {return null;}ByteArrayOutputStream out &#61; new ByteArrayOutputStream(bytes.length);ByteArrayInputStream in &#61; new ByteArrayInputStream(bytes);GZIPInputStream ungzip &#61; null;ungzip &#61; new GZIPInputStream(in,bufferSize);byte[] buffer &#61; new byte[bufferSize];int n;while ((n &#61; ungzip.read(buffer)) > 0){out.write(buffer, 0, n);out.flush();}if (ungzip!&#61;null){ungzip.close();}in.close();String s &#61; out.toString(encoding);out.close();return s;}public static String uncompressToString(byte[] bytes) throws IOException {return uncompressToString(bytes, GZIP_ENCODE_UTF_8);}// public static void main(String[] args) throws IOException
// {
// String s &#61; "hello world";
// System.out.println("字符串长度&#xff1a;"&#43;s.length());
// System.out.println("压缩后&#xff1a;&#xff1a;"&#43;compress(s));
// System.out.println("解压后&#xff1a;"&#43;uncompress(compress(s)));
// System.out.println("解压字符串后&#xff1a;"&#43;uncompressToString(compress(s)));
// System.out.println("解压字符串后的字符串长度&#xff1a;"&#43;uncompressToString(compress(s)).length());
//
//
// String tmp &#61; "H4sIAAAAAAAAAI2Tv47UMBDGXwWZK5fI/xLb221FRYWEkBCKbM&#43;YWLebhMSb1ep0BdUVFIgKHoGWhzqJewuc3J5YEIdIE83P&#43;Wa&#43;8UzeXJE6DdZf1hHI&#43;hkrKWXMyEquSIo7JGtWlpWhUkrKK5rhsc&#43;QLBKyIhDHFFufFjUx3nFhgdMscT4HhjtDQQQqmWCcM4FOaA/KciiNsR5LLx1w44wCqgx41FKL0nihUILiPASqBNcqGD8nARRSW3BaOMXLoLiVQA1jFE3lwYCujDAWjFBQBaOsE9l7cCJU3gSRy6BgUlShcpUMNmjUIZvwnjGlfWVyQ9voyPqKXCxvsmlh6HJrqwXUEw5j7Np8IApalDO2fX&#43;GWcEfvt1harr5UnwH&#43;AABk43bBe4KZ1PhG5u2ccL3hfUpTjEdixc2tptT8HR5yPWK4IRtysKLTd&#43;/inh46QfENufth67HIUUc/&#43;67G8/86YIVdKaAU/R4PzXQxgHKUJZUehvYP7rd5V5m&#43;1OcuievOdvcV/i94rhYqw8RUpP3h2r6CzYY3zW5D84XurPtPk8g7QccTmkfu9SZtXbeSHJ38/n2&#43;8cfXz7dfru5&#43;/phVhxii";
// byte[] bytes &#61; tmp.getBytes("ISO8859-1");
// String s1 &#61; new String(bytes, "UTF-8");
// String urldecode &#61; URLDecoder.decode(s1, "UTF-8");
// byte[] decode &#61; Base64Coder.decode(urldecode);
// String s2 &#61; GZIPUtils.uncompressToString(decode);
// System.out.println(s2);
// }
}

 


推荐阅读
  • 本文介绍了Android中的assets目录和raw目录的共同点和区别,包括获取资源的方法、目录结构的限制以及列出资源的能力。同时,还解释了raw目录中资源文件生成的ID,并说明了这些目录的使用方法。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 本文介绍了在Cpp中将字符串形式的数值转换为int或float等数值类型的方法,主要使用了strtol、strtod和strtoul函数。这些函数可以将以null结尾的字符串转换为long int、double或unsigned long类型的数值,且支持任意进制的字符串转换。相比之下,atoi函数只能转换十进制数值且没有错误返回。 ... [详细]
  • 本文介绍了解决java开源项目apache commons email简单使用报错的方法,包括使用正确的JAR包和正确的代码配置,以及相关参数的设置。详细介绍了如何使用apache commons email发送邮件。 ... [详细]
  • 安装Tensorflow-GPU文档第一步:通过Anaconda安装python从这个链接https:www.anaconda.comdownload#window ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
author-avatar
粪青12_601
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有