|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我认为,可以通过更加简单的首次编译,而增加第二次编译的负担,来提高java的运行效率。只是将java源代码进行简单的等价转换,而不假设编译成某种虚拟机器的目标格式,而由本地编译器针对性的二次编译。甚么是序列化?
---.net的运转时情况用来撑持用户界说范例的流化的机制。它是将工具实例的形态存储到存储媒体的历程。在此过程当中,先将工具的大众字段和公有字段和类的称号(包含类地点的程序集)转换为字撙节,然后再把字撙节写进数据流。在随后对工具举行反序列化时,将创立出与原工具完整不异的正本。
序列化的目标:
1、以某种存储情势使自界说工具耐久化;
2、将工具从一个中央传送到另外一个中央。
本色上序列化机制是将类的值转化为一个一样平常的(即一连的)字撙节,然后就能够将该流写到磁盘文件或任何其他流化方针上。而要想实践的写出这个流,就要利用那些完成了IFormatter接口的类里的Serialize和Deserialize办法。
在.net框架里供应了如许两个类:
1、BinaryFormatter
BinaryFormatter利用二进制格局化程序举行序列化。您只需创立一个要利用的流和格局化程序的实例,然后挪用格局化程序的Serialize办法。流和要序列化的工具实例作为参数供应给此挪用。类中的一切成员变量(乃至标志为private的变量)都将被序列化。
起首我们创立一个类:
[Serializable]
publicclassMyObject{
publicintn1=0;
publicintn2=0;
publicStringstr=null;
}
Serializable属性用来明白暗示该类能够被序列化。一样的,我们能够用NonSerializable属性用来明白暗示类不克不及被序列化。
接着我们创立一个该类的实例,然后序列化,并存到文件里耐久:
MyObjectobj=newMyObject();
obj.n1=1;
obj.n2=24;
obj.str="一些字符串";
IFormatterformatter=newBinaryFormatter();
Streamstream=newFileStream("MyFile.bin",FileMode.Create,
FileAccess.Write,FileShare.None);
formatter.Serialize(stream,obj);
stream.Close();
而将工具复原到它之前的形态也十分简单。起首,创立格局化程序和流以举行读取,然后让格局化程序对工具举行反序列化。
IFormatterformatter=newBinaryFormatter();
Streamstream=newFileStream("MyFile.bin",FileMode.Open,
FileAccess.Read,FileShare.Read);
MyObjectobj=(MyObject)formatter.Deserialize(fromStream);
stream.Close();
<p>//上面是证实
Console.WriteLine("n1:{0}",obj.n1);
Console.WriteLine("n2:{0}",obj.n2);
Console.WriteLine("str:{0}",obj.str);那做企业软件是不是最好用J2EE? |
|