问题:最近开发时遇到个字段超长的问题,有保存原始数据,但其他服务传递这个数据是字段无法超长无法存储,字段长度超过varchar最长,数据量过大无法处理更改为longtext;于是想到用gzip压缩文本
A-->B-->C-->D-->E
解决:第一个服务取值时进行压缩传递给B,D解压传递给E;完美解决
代码有个小tips,如果压缩发生异常就return原始值,解压也是,兼容切换过程时差
这里扔出解压压缩代码:
import java.io.ByteArrayInputStream;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;
import java.io.ByteArrayOutputStream;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
/**
* 字符串压缩
*
* @param str
* @return
*/
public String zipString(String str) {
if (str == null) {
return null;
}
try (ByteArrayOutputStream bos = new ByteArrayOutputStream();
GZIPOutputStream os = new GZIPOutputStream(bos)) {
os.write(str.getBytes());