我使用GZIPOutputStream或ZIPOutputStream压缩一个String(我string.length()的小于20),但压缩结果比原始字符串长.
在某些网站上,我发现有些朋友说这是因为我原来的字符串太短,GZIPOutputStream可以用来压缩更长的字符串.
那么,有人可以给我一个压缩字符串的帮助吗?
我的功能如下:
String compress(String original) throws Exception {
}
Run Code Online (Sandbox Code Playgroud)
更新:
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPOutputStream;
import java.util.zip.*;
//ZipUtil
public class ZipUtil {
public static String compress(String str) {
if (str == null || str.length() == 0) {
return str;
}
ByteArrayOutputStream out = new ByteArrayOutputStream();
GZIPOutputStream gzip = new GZIPOutputStream(out);
gzip.write(str.getBytes());
gzip.close();
return out.toString("ISO-8859-1");
}
public static void main(String[] args) throws IOException {
String string = "admin";
System.out.println("after compress:"); …Run Code Online (Sandbox Code Playgroud) 可能重复:
Hibernate错误:org.hibernate.NonUniqueObjectException:具有相同标识符值的另一个对象已与会话关联
当我使用DAO.update(userbean)时,session.SaveOrUpdate(e);抛出异常:具有相同标识符值的不同对象已经与会话关联
功能如下:
public E save(E e) {
Session session = null;
try {
session = sessionFactory.openSession();
log.debug("session="+session.hashCode()+" save "+e);
session.SaveOrUpdate(e); //here throws exception
session.flush();
}
catch (Exception e1) {
log.err("Cannot open hibernate session "+ e1.getMessage()+" cause : "+e1.getCause());
e1.printStackTrace();
}
finally { if ( session != null ) session.close(); session = null;}
return e ;
}
Run Code Online (Sandbox Code Playgroud)
userbean是UserBean类的实例
public class UserBean{
private List<GroupBean> groups = new ArrayList<GroupBean> ();
private List<RoleBean> roles = new ArrayList<RoleBean> ();
}
public …Run Code Online (Sandbox Code Playgroud)