文章归档

学习Javascript闭包(Closure)

下面就是我的学习笔记,对于Javascript初学者应该是很有用的。 一、变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域。 变量的作用域无非就是两种:全局变量和局部变量。

ObjectInputStream

    ObjectInputStream     public class ObjectInputStreamextends InputStreamimplements ObjectInput, ObjectStreamConstants     ObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化。     ObjectOutputStream 和 ObjectInputStream 分别与 FileOutputStream 和 FileInputStream 一起使用时,可以为应用程序提供对对象图形的持久性存储。ObjectInputStream 用于恢复那些以前序列化的对象。其他用途包括使用套接字流在主机之间传递对象,或者用于编组和解组远程通信系统中的实参和形参。     ObjectInputStream 确保从流创建的图形中所有对象的类型与 Java 虚拟机中的显示的类相匹配。使用标准机制按需加载类。     只有支持 java.io.Serializable 或 java.io.Externalizable 接口的对象才能从流读取。     readObject 方法用于从流读取对象。应该使用 Java 的安全强制转换来获取所需的类型。在 Java 中,字符串和数组都是对象,所以在序列化期间将其视为对象。读取时,需要将其强制转换为期望的类型。     可以使用 DataInput 上的适当方法从流读取基本数据类型。     默认情况下,对象的反序列化机制会将每个字段的内容还原为写入时它所具有的值和类型。反序列化进程将忽略声明为瞬态或静态的字段。到其他对象的引用使得根据需要从流中读取这些对象。使用引用共享机制能够正确地还原对象的图形。反序列化时始终分配新对象,这样可以避免现有对象被重写。     读取对象类似于运行新对象的构造方法。为对象分配内存并将其初始化为零 (NULL)。为不可序列化类调用无参数构造方法,然后从以最接近 java.lang.object 的可序列化类开始和以对象的最特定类结束的流还原可序列化类的字段。     例如,要按 ObjectOutputStream 中示例的写入从流读取,请执行以下操作:     FileInputStream fis = new FileI …

>>Read more

ObjectOutputStream

    ObjectOutputStream     ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream。可以使用 ObjectInputStream 读取(重构)对象。通过使用流中的文件可以实现对象的持久存储。如果流是网络套接字流,则可以在另一台主机上或另一个进程中重构对象。     只能将支持 java.io.Serializable 接口的对象写入流中。每个 serializable 对象的类都被编码,编码内容包括类名和类签名、对象的字段值和数组值,以及从初始对象中引用的其他所有对象的闭包。     writeObject 方法用于将对象写入流中。所有对象(包括 String 和数组)都可以通过 writeObject 写入。可将多个对象或基元写入流中。必须使用与写入对象时相同的类型和顺序从相应 ObjectInputstream 中读回对象。     还可以使用 DataOutput 中的适当方法将基本数据类型写入流中。还可以使用 writeUTF 方法写入字符串。     对象的默认序列化机制写入的内容是:对象的类,类签名,以及非瞬态和非静态字段的值。其他对象的引用(瞬态和静态字段除外)也会导致写入那些对象。可使用引用共享机制对单个对象的多个引用进行编码,这样即可将对象的图形还原为最初写入它们时的形状。     例如,要写入可通过 ObjectInputStream 中的示例读取的对象,请执行以下操作:     FileOutputStream fos = new FileOutputStream(“t.tmp”);     ObjectOutputStream oos = new ObjectOutputStream(fos);     oos.writeInt(12345);     oos.writeObject(“Today”);     oos.writeObject(new Date());     oos.close();     在序列化和反序列化过程中需要特殊处理的类必须实现具有下列准确签名的特殊方法:     private void readObject(java.io.ObjectInputStream stream)     t …

>>Read more