Java序列化的机制和原理
有关Java对象的序列化和反序列化也算是Java基础的一部分,下面对Java序列化的机制和原理进行一些介绍。
Java序列化算法透析
Serialization(序列化)是一种将对象以一连串的字节描述的过程;反序列化deserialization是一种将这些字节重建成一个对象的过程。Java序列化API提供一种处理对象序列化的标准机制。在这里你能学到如何序列化一个对象,什么时候需要序列化以及Java序列化的算法,我们用一个实例来示范序列化以后的字节是如何描述一个对象的信息的。
序列化的必要性
Java中,一切都是对象,在分布式环境中经常需要将Object从这一端网络或设备传递到另一端。这就需要有一种可以在两端传输数据的协议。Java序列化机制就是为了解决这个问题而产生。
如何序列化一个对象
一个对象能够序列化的前提是实现Serializable接口,Serializable接口没有方法,更像是个标记。有了这个标记的Class就能被序列化机制处理。
1.import java.io.Serializable;
2.
3.class TestSerial implements Serializable {
4.
5. public byte version = 100;
6.
7. public byte count = 0;
8.
9.}
然后我们写个程序将对象序列化并输出。ObjectOutputStream能把Object输出成Byte流。我们将Byte流暂时存储到temp.out文件里。
10.public static void main(String args[]) throws IOException {
11.
12. FileOutputStream fos = new FileOutputStream("temp.out");
13.
14. ObjectOutputStream oos = new ObjectOutputStream(fos);
15.
16. TestSerial ts = new TestSerial();
17.
18. oos.writeObject(ts);
19.
20. oos.flush();
21.
22. oos.close();
23.
24.}
如果要从持久的文件中读取Bytes重建对象,我们可以使用ObjectInputStream。
25.public static void main(String args[]) throws IOException {
26.
27. FileInputStream fis = new F
相关文档:
在成功实现Java调用C++之后,接下来想到能否通过JNA实现Java调用Fortran,今天试验了一下,还是比较容易的。
网上有一个Java调用F95的例子,但是我考虑不仅要实现F95的调用,还要实现F77的调用,所以费了一些周折。
问题的关键在于F77为过程名自动添加了一个尾部的下划线,所以sub1这个过程,到Java一端,就变成了sub1_, ......
1 . 1 2 . 1 不要迷失
在整个开发过程中,最重要的事情就是:不要将自己迷失!但事实上这种事情很容易发生。大多数方法都设
计用来解决最大范围内的问题。当然,也存在一些特别困难的项目,需要作者付出更为艰辛的努力,或者付
出更大的代价。但是,大多数项目都是比较“常规”的,所以一般都能作出成功的分析 ......
首先,想比较一下这两者的不同。URL用于网络,所以带有明显的protocol,而且对于中文及符号支持的很不好。File就是我们平常系统中的文件路径了,对于中文及符号都支持,但是已经没有protocol了。所以,虽然两者都可以表示文件路径,但是却不能混用了。
典型的URL和File路径的比较:
URL:file:/D:/my%20java/URL&FILE ......
由于手头有个项目需要用的Java的输入输出操作,
所以,啃了几天书,对Java的流技术有些了解,不过,还是有很多不是很明白,下面是我看书整理的一些笔记,严格的说应该不是原创,我贴出来只是希望对大家有一些帮助
1、Java拥有一个完整的流类型,总数超过60,而四个抽象类构成了这些类的基础
In ......
1、创建了一个对象后: (1)没有在适当的地方释放掉 (2)在应该释放的地方没有做释放操作 例如:下面一段程序: m_progressDlg = ProgressDialog.show(this, getString(R.string.market),getString(R.string.is_visiting), true);
new Thread() {
public void run() {
......