java字符串压缩js解压_接口实现后台GZIP压缩,pako.js 前端解压

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.util.zip.GZIPInputStream;

import java.util.zip.GZIPOutputStream;

public class GZIPUtils {

/**

* 字符串的压缩

*

* @param str

* 待压缩的字符串

* @return 返回压缩后的字符串

* @throws IOException

*/

public static String compress(String str) throws IOException {

if (null == str || str.length() <= 0) {

return null;

}

// 创建一个新的 byte 数组输出流

ByteArrayOutputStream out = new ByteArrayOutputStream();

// 使用默认缓冲区大小创建新的输出流

GZIPOutputStream gzip = new GZIPOutputStream(out);

// 将 b.length 个字节写入此输出流

gzip.write(str.getBytes("UTF-8"));

gzip.close();

// 使用指定的 charsetName,通过解码字节将缓冲区内容转换为字符串

return out.toString("ISO-8859-1");

}

/**

* 字符串的解压

*

* @param b

* 对字符串解压

* @return 返回解压缩后的字符串

* @throws IOException

*/

public static String unCompress(byte[] b) {

try {

if (null == b || b.length <= 0) {

return null;

}

// 创建一个新的 byte 数组输出流

ByteArrayOutputStream out = new ByteArrayOutputStream();

// 创建一个 ByteArrayInputStream,使用 buf 作为其缓冲区数组

ByteArrayInputStream in;

in = new ByteArrayInputStream(b);

// 使用默认缓冲区大小创建新的输入流

GZIPInputStream gzip = new GZIPInputStream(in);

byte[] buffer = new byte[256];

int n = 0;

while ((n = gzip.read(buffer)) >= 0) {// 将未压缩数据读入字节数组

// 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此 byte数组输出流

out.write(buffer, 0, n);

}

// 使用指定的 charsetName,通过解码字节将缓冲区内容转换为字符串

return out.toString("UTF-8");

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

}

String encodeStr = URLEncoder.encode(JSON.toJSONString(buildMenuTree(menus)), "UTF-8");

encodeStr = Base64.encodeBase64String(encodeStr.getBytes("UTF-8"));

String menuCompressStr = GZIPUtils.compress(encodeStr);

前端js

//data为后台返回的值

JSON.parse(unzip(data));

// 解压

function unzip(key) {

var charData = [];

var keyArray = key.split('');

for(var i = 0; i < keyArray.length; i++){

var item = keyArray[i];

charData.push(item.charCodeAt(0));

}

// var binData = new Uint8Array(charData);

// console.log('Uint8Array:' + binData);

// 解压

// var data = pako.inflate(binData);

var data = pako.inflate(charData);

// 将GunZip ByTAREAR转换回ASCII字符串

// key = String.fromCharCode.apply(null, new Uint16Array(data));

key = String.fromCharCode.apply(null, data);

return decodeURIComponent(Base64.decode(key));

}

// 压缩

function zip(str) {

//escape(str) --->压缩前编码,防止中午乱码

var binaryString = pako.gzip(escape(str), { to: 'string' });

return binaryString;

}

需要pako.min.js文件的邮箱留言

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/526821.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java list初始值null_关于list集合存储null的问题

工作中&#xff0c;遇到list集合存储null的问题&#xff0c;不确定list能否存储null值。于是写一些demo测试list&#xff0c;set,table,及map存储null的问题。1.list之arraylist1 public static voidmain(String[] args) {2 String string null;3 List list new ArrayList();4 …

js java 反射机制_java 类加载机制和反射机制

一.类的加载机制jvm把class文件加载到内存&#xff0c;并对数据进行校验、解析和初始化&#xff0c;最终形成jvm可以直接使用的java类型的过程。(1)加载将class文件字节码内容加载到内存中&#xff0c;并将这些静态数据转换成方法区中的运行时数据结构&#xff0c;在堆中生成一…

java fx输出_JavaFX中具有输入和输出参数的并发后台任务或服务

宁愿这是一个非常简单的概念,但是由于我对JavaFX的并发性完全陌生.我一直在努力理解这个概念.在构建一个非常简单的JavaFX应用程序时,我想在后台执行一些冗长的任务,并使UI免受冻结.在下面的示例中,我试图创建一个简单的后台任务服务,然后使用ControlsFX Dialog在主UI窗口上显示…

pod 挂载点 mysql_Pod挂载(Secret )

一种特殊的Volume&#xff1a; Projected Volume &#xff0c;你可以把它翻译为“投射数据卷”。Ps&#xff1a;Projected Volume 是 Kubernetes v1.11 之后的新特性在 Kubernetes 中&#xff0c;有几种特殊的 Volume&#xff0c;它们存在的意义不是为了存放容器里的数据&#…

lambda 流 peek java_JDK8 流与λ表达式

λ表达式什么是λ表达式λ表达式有三部分组成&#xff1a;参数列表&#xff0c;箭头(->)&#xff0c;以及一个表达式或者语句块。public int add(int x, int y) {return x y;}转换为λ表达式(int x, int y) -> x y;去除参数类型(x, y) -> x y;无参 以及 只有一个参…

理解java虚拟机工作后了解吗_JAVA入门到再次入门——深入理解JAVA虚拟机(二)|七日打卡...

前言为什么叫做入门到到再次入门请参考前一篇或个人博客&#xff0c;在此不再赘述&#xff0c;嗯哼&#xff0c;了解了JVM的基本运行流程以及内存结构&#xff0c;算是初步认识了JVM&#xff0c;跟着课本往前走&#xff0c;继续了解根据JVM的内存模型探索java当中变量的可见性以…

java访问错误404_如何解决 Java web 项目中的 404 错误

在使用 Tomcat 进行 Java Web 开发的时候&#xff0c;经常会遇到以下 HTTP 404 错误&#xff1a;错误代码为 HTTP 404(未找到)&#xff0c;描述信息是&#xff1a;“The origin server did not find a current representation for the target resource or is not willing to di…

java double 的精度_Java Double的精度问题

Java.text类 DecimalFormatjava.lang.Objectjava.text.Formatjava.text.NumberFormatjava.text.DecimalFormatvoid setMaximumFractionDigits(int newValue) 设置某个数的小数部分中所允许的最大数字位数。void setMinimumFractionDigits(int newValue) …

java餐饮管理系统图片,基于jsp的酒店餐饮管理系统-JavaEE实现酒店餐饮管理系统 - java项目源码...

基于jspservletpojomysql实现一个javaee/javaweb的酒店餐饮管理系统, 该项目可用各类java课程设计大作业中, 酒店餐饮管理系统的系统架构分为前后台两部分, 最终实现在线上进行酒店餐饮管理系统各项功能,实现了诸如用户管理, 登录注册, 权限管理等功能, 并实现对各类酒店餐饮管…

php 验证码一直不对,ThinkPHP验证码老是出错怎么办

ThinkPHP验证码老是出错的解决办法&#xff1a;1、找到服务器php配置文件php.ini在网站根目录下建一个info.php文件。例如&#xff1a;D:\wwwRoot\wp 这个是网站的根目录&#xff0c;在此目录下&#xff0c;新建一个txt文档&#xff0c;输入如下代码&#xff1a;然后另存为info…

小皮面板有php环境吗,体验phpStudy小皮面板创建LAMP/LNMP系统和建站图文

在国庆节后老 左有看到原phpStudy面板新的Linux面板系统更新发布取名小皮面板(phpStudy Linux系统初次体验 – 一键安装phpStudy面板查看功能)&#xff0c;初次体验这款面板之后我们肯定会会当前比较热门的宝塔面板作为比较&#xff0c;有些人说UI和功能上有所参考&#xff0c;…

php 断点续传 暂停,PHP 断点续传实例详解

在做一个案例&#xff0c;要给客户端做断点续传的服务&#xff0c;断点续传主要是HTTP协议中的Content-Range报头。其理解如下&#xff1a;Content-Range&#xff1a;响应资源的范围。可以在多次请求中标记请求的资源范围&#xff0c;在连接断开重新连接时&#xff0c;客户端只…

如何在php中插入数据并修改,php怎么同时向2张表里插入数据

情况是这个样子的&#xff1a;我要做一个发消息的表&#xff0c;因为接受人可能是多个&#xff0c;所以又给接收人一单独的表&#xff0c;(这种方案好还是全部都放到一张表里好点呢&#xff1f;)2张表的字段如下&#xff1a;message_id是第一张表的主键&#xff0c;如果收件人有…

java设计模式之道文字版,Java Web设计模式之道 PDF

资源名称&#xff1a;Java Web设计模式之道 PDF第一部分 仙人指路——设计模式简介第1章 设计模式概述1.1 设计模式是什么1.2 软件设计模式的发展历程1.3 作者阐述软件设计模式的主要方式第二部分 设计红宝书——设计模式原则详解第2章 设计原则之开闭原则2.1 何谓开闭原则2.2 …

java上传excel文件代码,求java把上传文件的excel表中数据存入数据库中.实现录入的代码?...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼CREATE TABLE [dbo].[p_bom_user_info] ([ID] varchar(50) NULL ,[SESAID] varchar(200) NULL ,[StaffNo] varchar(200) NULL ,[NotesID] varchar(200) NULL ,[ACName] varchar(100) NULL ,[BusinessUnit] varchar(100) NULL ,[Com…

php开发视频播放顺序,请问关于php代码运行顺序问题

麻烦会的朋友帮忙回答下 以下的问题&#xff0c; 谢谢啦。在网上下载了套代码。 如下 admin.php 文件&#xff1a;对于以下这段代码&#xff0c; 究竟代码是怎么跑的呢&#xff1f;也就是比如说 以下的代码&#xff0c;什么时候 才会跑 if ($device ipad) 这句代码呢&#xff…

python文件操作模式是什么,python --文件操作模式详解

#f open(r"aaa/a.txt",modert) # f的值是一种变量&#xff0c;占用的是应用程序的内存空间,此时牵扯的是两个方面的资源#print(f)##2.操作文件&#xff1a;读/写文件,应用程序对文件的读写请求都是向操作系统调用&#xff0c;然后由操作系统控制把硬盘把输入读入内存…

php 中文转成url,php字符转URL地址的函数

php字符转URL地址的函数php提供了urlencode()、urldecode()、rawurlencode()、rawurldecode()函数了&#xff0c;利用它就可以直接转换URL地址。下面是小编为大家带来的.php字符转URL地址的函数&#xff0c;欢迎阅读。php字符转URL地址的函数代码如下function tourl($str) {$st…

php和ajax的同步和异步请求,ajax 同步请求和异步请求的差异分析_javascript技巧

ajax同步和异步的差异&#xff0c; 先看2段代码&#xff1a;代码一&#xff1a;Synchronize function(url,param) {function createXhrObject() {var http;var activeX [ "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP" ];try …

matlab变量由非标量,matlab中的if语句

有条件性地执行语句语法if expressionstatementsend描述MATLAB计算表达式&#xff0c;如果产生一个逻辑真或者非零结果&#xff0c;然后就执行一条或者多条MATLAB命令语句。当有嵌套if时&#xff0c;每一个if必须和一个相应的end匹配。当你在if语句里面嵌套使用else if或者else…