我们有一个用例,我们想压缩和存储对象(内存中),并在需要时解压缩它们。
我们想要压缩的数据变化很大,从浮点向量到字符串再到日期。
有人可以建议使用任何好的压缩技术吗?
我们将压缩的难易程度和减压速度视为最重要的因素。
谢谢。
如果要压缩实例,MyObject
可以实现它Serializable
,然后将对象流式传输到压缩的字节数组中,如下所示:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream gzipOut = new GZIPOutputStream(baos);
ObjectOutputStream objectOut = new ObjectOutputStream(gzipOut);
objectOut.writeObject(myObj1);
objectOut.writeObject(myObj2);
objectOut.close();
byte[] bytes = baos.toByteArray();
然后解压缩byte[]
到对象中:
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
GZIPInputStream gzipIn = new GZIPInputStream(bais);
ObjectInputStream objectIn = new ObjectInputStream(gzipIn);
MyObject myObj1 = (MyObject) objectIn.readObject();
MyObject myObj2 = (MyObject) objectIn.readObject();
objectIn.close();
本文向大家介绍java保证对象在内存中唯一性的实现方法,包括了java保证对象在内存中唯一性的实现方法的使用技巧和注意事项,需要的朋友参考一下 前言 刚看到这个题目的朋友第一反应肯定是好奇,之后再细细思考下就会发现这个题目眼熟了。 就算是同一个答案,如果提问的方式不同, 往往会对回答造成干扰或者影响, 上学的时候老师也说过差不多的话, 学过设计模式的人看到这个题目之后肯定不会陌生:请描述java中
问题内容: Java虚拟机是否曾经在内存中移动对象,如果是,它将如何处理对移动对象的更新引用? 我问是因为我正在探索一种以分布式方式(即,跨多个服务器)存储对象的想法,但是出于效率方面的考虑,我需要能够在服务器之间移动对象。对象需要能够包含彼此的指针,甚至指向远程服务器上的对象。我正在尝试考虑更新对移动对象的引用的最佳方法。 到目前为止,我的两个想法是: 在对象的整个生命周期中都不会移动的地方保持
本文向大家介绍Java中session存储Users对象实现记住密码,包括了Java中session存储Users对象实现记住密码的使用技巧和注意事项,需要的朋友参考一下 之前做过cookie实现记住密码,这次换成session记住密码又做了一遍,有很多收获。 本次博客分为两部分。一部分是cookie和session的区别(面试经常被问道);另一部分是sesion实现记住密码,在Jsp页面和Con
问题内容: 我有一个接受File作为参数的函数。我不想创建/写入新文件(我没有对文件系统的写访问权)以便将字符串数据传递给该函数。我应该补充说字符串数据在文件中不存在(所以我无法从文件中读取数据)。 我可以使用流并将其“广播”到文件对象吗? 问题答案: 没有; 类的实例表示文件系统中的路径。因此,您只能将该功能与文件一起使用。但是,也许有一个过载需要替代?
我目前正在改进一些旧的uni分配,将它们从可序列化文件转移到任何其他形式的存储,主要是SQL数据库。我理解关系数据库设计的概念以及与OOP类的相似之处,但是,我不完全确定如何从OOP设计的角度来处理这个问题。 现在我有一个酒店类,房间列表为属性,每个房间都有一个客人列表为属性(此处为完整代码) 回到使用文件时,我可以用Serializable接口标记这些类,并将父对象存储在单个文件中。但是当使用关
问题内容: 我正在下载包含XML的压缩文件,由于延迟要求,我希望避免在操作之前将zip文件写入磁盘。但是,这不足以满足我的需求。没有办法说“这是一个zip文件的字节数组,请使用它”而不将其转换为流,并且它不可靠,因为它会扫描条目标头(请参阅EDIT下面的讨论,以了解为什么它不可靠)。 我尚无法访问要处理的zip文件,因此我不知道我是否能够通过来处理它们,因此我需要找到一种适用于任何有效ZIP文件的