- 浏览: 112604 次
- 性别:
- 来自: 江西
文章分类
- 全部博客 (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 2021import org.apache.log4j.Log ... -
重入锁
2012-02-08 14:18 1200重入锁(ReentrantLock)是一种递归无阻塞的同步机制 ... -
java需要关注的知识点---并发之加入一个新线程
2012-01-03 11:29 917package com.thread; public ... -
java需要关注的知识点---并发之后台线程
2011-12-30 16:07 941所谓的后台线程,是指在程序运行的时候在后台提供一种通用服务的线 ... -
java需要关注的知识点---并发之从任务中产生返回值
2011-12-29 16:04 745class TaskWithResult implemen ... -
java需要关注的知识点---并发之使用Executor
2011-12-29 16:00 975public class CachedthreadPool ... -
java需要关注的知识点---并发之定义任务
2011-12-29 12:53 8141:定义任务: public class LiftOff ... -
java需要关注的知识点---I0之XML的生成
2011-12-27 17:47 961package com.io; import java. ... -
java需要关注的知识点---I0之压缩
2011-12-26 15:38 9321.GZIP压缩: public class GZIPPc ... -
java需要关注的知识点--新I0(NIO)之大文件读取
2011-12-22 14:43 2871在读取大文件的时候,采用管道方式进行分流,使用byteBuff ... -
java需要关注的知识点---Charset
2011-12-21 10:25 8821.Charset 名称必须以字母或数字开头。空字符串不是合法 ... -
java需要关注的知识点---I0之获取特殊属性
2011-12-20 17:51 7551.获取文本的编码方式: String encoding ... -
java需要关注的知识点---I0之新IO(NI0)
2011-12-20 15:40 1201缓冲器操纵数据: ByteBuffer是数据移进移出通道的唯一 ... -
java需要关注的知识点---标准I0流
2011-12-20 11:16 718System.in public class System ... -
java需要关注的知识点---IO流
2011-12-16 17:06 9051.无论何时使用readLine(). ... -
TreeeMap的底层实现
2011-11-28 17:46 1127treeMap插入元素的图解法: 插入前: 插入过程: ... -
java需要关注的知识点---HashSet
2011-11-28 15:20 10581.构造方法: public HashSet() { ... -
java需要关注的知识点---Vector
2011-11-24 17:53 10261.默认初始大小 10. 2.Vector是一个object数 ... -
java需要关注的知识点---LinkedList
2011-11-24 10:19 3272LinkedList是采用双向链表来存储数据: Linked ... -
volatile 修饰符
2011-11-23 16:39 1043volatile修饰符告诉编译程序不要对该变量所参与的操作进行 ...
相关推荐
Java序列化是Java平台内建的一种标准对象序列化机制,它允许对象的状态被保存和恢复,这对于分布式应用和服务之间的通信尤其重要。 在Netty中,Java序列化可以作为数据传输的一种方式,尤其是在服务端和客户端之间...
### Java高手必备知识点详解 #### 一、面向对象分析与设计(OOA/OOD)、设计模式及UML **1. 面向对象分析与设计(OOA/OOD):** 面向对象分析与设计是一种软件开发方法论,强调通过抽象、封装、继承和多态等机制来...
Java面向对象是Java编程的核心,理解其概念和特性对于成为一名合格的Java开发者至关重要...以上就是Java面向对象面试中常见的知识点,理解并掌握这些内容对于Java开发人员来说非常重要,尤其是在面试和实际开发过程中。
5. **输入/输出流**:Java I/O流系统支持文件读写、网络通信和数据序列化。理解流的分类(如字节流和字符流)、缓冲区、对象流和文件操作是关键。 6. **多线程**:Java提供了丰富的多线程支持,包括Thread类、...
11. **输入/输出流**:包括文件I/O、对象序列化和网络I/O,是处理数据传输的基础。 12. **多线程**:Java内置了对多线程的支持,包括线程的创建、同步和通信。 13. **反射API**:在运行时动态地获取类信息和调用...
Java的JAXB(Java Architecture for XML Binding)可以将XML文档与Java对象绑定,简化数据的序列化和反序列化。 7. **源码分析** 包含的源码示例可以帮助读者理解如何在实际项目中运用上述概念。通过阅读和运行...
- **对象序列化**:理解对象持久化的原理和实现方式。 6. **多线程** - **线程的创建**:通过Thread类和Runnable接口创建线程。 - **线程同步**:synchronized关键字、wait()、notify()、notifyAll()的使用,...
- **I/O流**:文件流、字符流、缓冲流、对象序列化等。 - **反射**:在运行时动态获取类的信息并操作对象。 - **设计模式**:常见的23种设计模式,如单例、工厂、装饰器等。 3. **Java高级特性**: - **Lambda...
根据提供的文件标题、描述以及部分代码内容,我们可以总结出该文档主要关注的是Java中的序列化技术,特别是如何利用序列化来存储和读取文件。接下来,我们将深入探讨这些知识点。 ### Java序列化简介 Java序列化是...
13. **I/O流**:Java的I/O流系统支持数据的输入和输出,包括字符流和字节流,以及过滤流、缓冲流、对象序列化等高级功能。 14. **反射**:反射机制允许程序在运行时动态获取类的信息(如类名、方法名等)并调用方法...
Java允许将对象的状态保存到文件中,这个过程称为序列化,使用`ObjectOutputStream`。反序列化则是从文件中恢复对象,使用`ObjectInputStream`。并非所有对象都可以序列化,只有实现了`Serializable`接口的对象才能...
6. **输入/输出(I/O)**:介绍Java的流模型,包括文件I/O、字节流、字符流、对象序列化和数据流。 7. **泛型**:讲解泛型的基本概念,如何在类、接口和方法中使用泛型,以及通配符和类型擦除。 8. **多线程**:包括...
根据给定文件的信息,我们可以提炼出以下关于《Core Java Volume I—Fundamentals》第十版的知识点: ### 一、书籍基本信息 - **书名**:《Core Java Volume I—Fundamentals》 - **作者**:Cay S. Horstmann - **...
3. **对象序列化与反序列化**:Java的Serializable接口允许对象被转换为字节流,方便存储和网络传输。在某些示例中,可能会展示如何实现序列化和反序列化,以便持久化对象状态。 4. **文件输入输出流**:...
在Java编程语言中,有一些知识点非常容易混淆,特别是在面试中...了解并理解这些容易混淆的Java知识点对于编写高质量的代码和成功通过面试至关重要。在实际编程中,应特别注意这些细节,以避免潜在的错误和意外行为。
6. **Java序列化**:Java序列化用于将对象状态转化为字节流,便于存储和网络传输。书中讨论了如何实现Serializable接口,序列化和反序列化过程,以及自定义序列化行为。 7. **异常处理**:Java的异常处理机制是其...
这需要实现文件I/O操作,例如使用`FileInputStream`和`FileOutputStream`读写文件,以及序列化和反序列化对象。 10. **用户体验**: 为了提供良好的用户体验,可能需要添加撤销/重做功能,以及选择不同颜色、线条...
7. **I/O流**:Java的IO流处理允许程序进行数据的输入输出,包括字符流和字节流,以及缓冲区、转换流和对象序列化等高级特性。 8. **网络编程**:Java的Socket编程允许创建客户端和服务器应用程序,实现网络通信。...
7. **序列化与反序列化**:保存和加载游戏进度时,Java的序列化接口(Serializable)可以帮助将对象状态转化为字节流。 8. **游戏逻辑**:包括单位行动规则、建筑建造条件、资源采集机制等,这些都需要通过编程逻辑...
- `ObjectInputStream` 和 `ObjectOutputStream` 支持序列化和反序列化 Java 对象。 - **字符流** - `InputStreamReader` 和 `OutputStreamWriter` 用于读写字符数据,通常与编码解码相关联。 - **随机存取文件*...