- 浏览: 109923 次
- 性别:
- 来自: 江西
文章分类
- 全部博客 (79)
- java (8)
- java虚拟机 (3)
- 学习类 (4)
- Java SE (26)
- java引用 (1)
- 工作总结。 (2)
- JSF (1)
- 软件架构 (1)
- Javascript (10)
- struts2 (1)
- eclipse (1)
- mysql (1)
- ArcGis (4)
- dojo (1)
- Extjs (1)
- jquery (4)
- 软件包 (1)
- 控件 (1)
- tuijian (0)
- 命令 (1)
- JAVAEE (1)
- goagent教程详细版猫理会 (0)
- python (0)
- tomcat (1)
- eclipse 出 can not create virtual machine (1)
- spring (3)
- 设计模式 (3)
- hibernate (1)
- dd (0)
- 样式 (0)
- http://blog.csdn.net/wisgood/article/details/11762427 (0)
最新评论
-
bz5011:
node.eachChild() 要延迟,等node.expa ...
EXTJS学习笔记----EXTJs中带复选框的tree,选中父节点时所有子节点也被选中 -
hvang1988:
[img][/img][url][/url][flash= ...
jquey 取值 -
xiaguangme:
写的很不错
java需要关注的知识点---HashMap -
perfect613:
sinly 写道perfect613 写道你好,有个问题请教一 ...
JS动态创建表格,动态设置属性,动态添加事件 . -
aiyingpower:
把哥的代码拿过来也不注明一下?
arcgis地图————————基础操作
1。对象序列化:
序列化是什么:
序列化就是将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得。
序列化分为两大部分:序列化和反序列化。序列化是这个过程的第一部分,将数据分解成字节流,以便存储在文件中或在网络上传输。反序列化就是打开字节流并重构对象。对象序列化不仅要将基本数据类型转换成字节表示,有时还要恢复数据。恢复数据要求有恢复数据的对象实例
序列化的什么特点:
如果某个类能够被序列化,其子类也可以被序列化。声明为static和transient类型的成员数据不能被序列化。因为static代表类的状态, transient代表对象的临时数据。
什么时候使用序列化:
一:对象序列化可以实现分布式对象。主要应用例如:RMI要利用对象序列化运行远程主机上的服务,就像在本地机上运行对象时一样。
二:java对象序列化不仅保留一个对象的数据,而且递归保存对象引用的每个对象的数据。可以将整个对象层次写入字节流中,可以保存在文件中 或在网络连接上传递。利用对象序列化可以进行对象的"深复制",即复制对象本身及引用的对象本身。序列化一个对象可能得到整个对象序列
序列化我是实现轻量级持久性。
结果:
序列化控制,Externalizable.
使用transient可以关闭序列化,用以保护数据。
序列化是什么:
序列化就是将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得。
序列化分为两大部分:序列化和反序列化。序列化是这个过程的第一部分,将数据分解成字节流,以便存储在文件中或在网络上传输。反序列化就是打开字节流并重构对象。对象序列化不仅要将基本数据类型转换成字节表示,有时还要恢复数据。恢复数据要求有恢复数据的对象实例
序列化的什么特点:
如果某个类能够被序列化,其子类也可以被序列化。声明为static和transient类型的成员数据不能被序列化。因为static代表类的状态, transient代表对象的临时数据。
什么时候使用序列化:
一:对象序列化可以实现分布式对象。主要应用例如:RMI要利用对象序列化运行远程主机上的服务,就像在本地机上运行对象时一样。
二:java对象序列化不仅保留一个对象的数据,而且递归保存对象引用的每个对象的数据。可以将整个对象层次写入字节流中,可以保存在文件中 或在网络连接上传递。利用对象序列化可以进行对象的"深复制",即复制对象本身及引用的对象本身。序列化一个对象可能得到整个对象序列
序列化我是实现轻量级持久性。
package com.io; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import java.util.Random; public class ObjectSer implements Serializable{ private static Random random = new Random(47); private Data[] d = { new Data(random.nextInt(10)), new Data(random.nextInt(10)), new Data(random.nextInt(10)) }; private ObjectSer next; private char c; public ObjectSer(int i, char x) { super(); System.out.println("ObjectSer constructor:" + i); c = x; if(--i > 0) { next = new ObjectSer(i,(char)(x+1)); } } public String toString() { StringBuilder result = new StringBuilder(":"); result.append(c); result.append("("); for(Data dat:d) result.append(dat); result.append(")"); if(next != null) result.append(next); return result.toString(); } public ObjectSer() { super(); System.out.println("Default constructor"); } /** * @param args * @throws IOException * @throws FileNotFoundException * @throws ClassNotFoundException */ public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException { ObjectSer os = new ObjectSer(6,'a'); System.out.println("os =:" +os); ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("worm.out")); out.writeObject("Object storage\n"); out.writeObject(os); out.close(); ObjectInputStream in = new ObjectInputStream(new FileInputStream("worm.out")); String s = (String)in.readObject(); ObjectSer objects = (ObjectSer)in.readObject(); System.out.println(s+ " objects: " + objects); ByteArrayOutputStream bout = new ByteArrayOutputStream(); ObjectOutputStream out2 = new ObjectOutputStream(bout); out2.writeObject("Objectser storage\n"); out2.writeObject(os); out2.flush(); ObjectInputStream in2 = new ObjectInputStream(new ByteArrayInputStream(bout.toByteArray())); s = (String)in2.readObject(); ObjectSer os2 = (ObjectSer)in2.readObject(); System.out.println(s + " os2 = "+os2); } } class Data implements Serializable { private int n; public Data(int n) {this.n = n;} public String toString() {return Integer.toString(n);} }
结果:
ObjectSer constructor:6 ObjectSer constructor:5 ObjectSer constructor:4 ObjectSer constructor:3 ObjectSer constructor:2 ObjectSer constructor:1 os =::a(853):b(119):c(802):d(788):e(199):f(881) Object storage objects: :a(853):b(119):c(802):d(788):e(199):f(881) Objectser storage os2 = :a(853):b(119):c(802):d(788):e(199):f(881)
序列化控制,Externalizable.
package com.io; import java.io.Externalizable; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectInputStream; import java.io.ObjectOutput; import java.io.ObjectOutputStream; public class BlipsExternalizable { public static void main(String[] args) throws IOException, IOException, ClassNotFoundException { Blip1 b1 = new Blip1(); Blip2 b2 = new Blip2(); ObjectOutputStream dos = new ObjectOutputStream(new FileOutputStream("Blp.obj")); dos.writeObject(b1); dos.writeObject(b2); ObjectInputStream ois = new ObjectInputStream(new FileInputStream("Blp.obj")); b1 = (Blip1)ois.readObject(); b2 = (Blip2)ois.readObject(); } } class Blip1 implements Externalizable { public Blip1(){ System.out.println("Blip1 constructor"); } @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { System.out.println("Blip1 read"); } @Override public void writeExternal(ObjectOutput out) throws IOException { System.out.println("Blip1 write"); } } class Blip2 implements Externalizable { Blip2() { System.out.println("Blip2 constructor"); } @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { System.out.println("Blip2 read"); } @Override public void writeExternal(ObjectOutput out) throws IOException { System.out.println("Blip2 write"); } } 结果:Blip1 constructor Blip2 constructor Blip1 write Blip2 write Blip1 constructor Blip1 read Exception in thread "main" java.io.InvalidClassException: com.io.Blip2; com.io.Blip2; no valid constructor at java.io.ObjectStreamClass.checkDeserialize(Unknown Source) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.readObject(Unknown Source) at com.io.BlipsExternalizable.main(BlipsExternalizable.java:21) Caused by: java.io.InvalidClassException: com.io.Blip2; no valid constructor at java.io.ObjectStreamClass.<init>(Unknown Source) at java.io.ObjectStreamClass.lookup(Unknown Source) at java.io.ObjectOutputStream.writeObject0(Unknown Source) at java.io.ObjectOutputStream.writeObject(Unknown Source) at com.io.BlipsExternalizable.main(BlipsExternalizable.java:18)
public class Blip3Externalizable implements Externalizable { private String s; private int i; public Blip3Externalizable() { super(); System.out.println("Blip constructor"); } public Blip3Externalizable(String s, int i) { super(); System.out.println("Blip constructor(s,i)"); this.s = s; this.i = i; } @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { System.out.println("Blip read"); //reset the attribute value. s = (String)in.readObject(); i = in.readInt(); } @Override public void writeExternal(ObjectOutput out) throws IOException { System.out.println("Blip write"); out.writeObject(s); out.writeInt(i); } public static void main(String[] args) throws IOException, ClassNotFoundException { Blip3Externalizable blip = new Blip3Externalizable("String", 41); ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("blip.obj")); oos.writeObject(blip); ObjectInputStream ois = new ObjectInputStream(new FileInputStream("blip.obj")); blip = (Blip3Externalizable) ois.readObject(); System.out.println(blip.i); } }
使用transient可以关闭序列化,用以保护数据。
发表评论
-
日志记录工具类
2012-11-09 15:51 1989import org.apache.log4j.Log ... -
重入锁
2012-02-08 14:18 1158重入锁(ReentrantLock)是一种递归无阻塞的同步机制 ... -
java需要关注的知识点---并发之加入一个新线程
2012-01-03 11:29 882package com.thread; public ... -
java需要关注的知识点---并发之后台线程
2011-12-30 16:07 905所谓的后台线程,是指在程序运行的时候在后台提供一种通用服务的线 ... -
java需要关注的知识点---并发之从任务中产生返回值
2011-12-29 16:04 710class TaskWithResult implemen ... -
java需要关注的知识点---并发之使用Executor
2011-12-29 16:00 949public class CachedthreadPool ... -
java需要关注的知识点---并发之定义任务
2011-12-29 12:53 7841:定义任务: public class LiftOff ... -
java需要关注的知识点---I0之XML的生成
2011-12-27 17:47 921package com.io; import java. ... -
java需要关注的知识点---I0之压缩
2011-12-26 15:38 9011.GZIP压缩: public class GZIPPc ... -
java需要关注的知识点--新I0(NIO)之大文件读取
2011-12-22 14:43 2844在读取大文件的时候,采用管道方式进行分流,使用byteBuff ... -
java需要关注的知识点---Charset
2011-12-21 10:25 8531.Charset 名称必须以字母或数字开头。空字符串不是合法 ... -
java需要关注的知识点---I0之获取特殊属性
2011-12-20 17:51 7271.获取文本的编码方式: String encoding ... -
java需要关注的知识点---I0之新IO(NI0)
2011-12-20 15:40 1181缓冲器操纵数据: ByteBuffer是数据移进移出通道的唯一 ... -
java需要关注的知识点---标准I0流
2011-12-20 11:16 683System.in public class System ... -
java需要关注的知识点---IO流
2011-12-16 17:06 8801.无论何时使用readLine(). ... -
TreeeMap的底层实现
2011-11-28 17:46 1101treeMap插入元素的图解法: 插入前: 插入过程: ... -
java需要关注的知识点---HashSet
2011-11-28 15:20 10071.构造方法: public HashSet() { ... -
java需要关注的知识点---Vector
2011-11-24 17:53 10021.默认初始大小 10. 2.Vector是一个object数 ... -
java需要关注的知识点---LinkedList
2011-11-24 10:19 3221LinkedList是采用双向链表来存储数据: Linked ... -
volatile 修饰符
2011-11-23 16:39 994volatile修饰符告诉编译程序不要对该变量所参与的操作进行 ...
相关推荐
一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源...
一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源...
一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源...
序列化,串行化 ['siәriәlaiz]'(serializable adj.)(deserialize反序列化,反串行化) Socket [java] 网络套接字['sɒkit] stack n.堆栈 [stæk] (对应 heap 堆) statement 程序语句; 语句 ['steitmәnt]' n. 陈述,...
一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源...
一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源...
一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源...
一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源...
一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源...
本书的每一章都提供吸引人的练习题、实践问题和本章知识点回顾以强化所学的知识。本书既是帮助读者轻松地通过oca/ocp认证考试的好帮手,也是oracle从业人员必备的参考书。 本书全面覆盖了1z0-051、1z0-052和1z0-...
疯狂的java讲义 源码 JavaEE-Study-Notes (JavaEE 学习笔记) 用于记录 JavaEE 学习过程中的笔记 知识点预览(个人学习要求) ...多线程编程、NIO、反射、序列化、JVM 调优; 1.2 FrontEnd 前端部分: HTML 4.01、CSS
12.5.2理解对象序列化文件格式 12.5.3保存对象引用问题的解决 12.5.4理解对象引用的输出格式 12.5.5修改默认的序列化机制 12.5.6单元素与类型安全枚举的序列化 12.5.7版本 12.5.8使用序列化进行...
JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...
一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源...