当前位置: 首页 > news >正文

网站建设需要材料wordpress会员列表

网站建设需要材料,wordpress会员列表,网站标签怎么做跳转页面,高端科研网站设计一 简介 对象序列化就是把一个对象变成二进制的数据流的一种方法#xff0c;通过对象序列化可以方便地实现对象的传输和存储。 把对象转换为字节序列的过程称为对象的序列化 把字节序列恢复为对象的过程称为对象的反序列化 对象的序列化主要有两种用途#xff1a; 1#xff… 一 简介 对象序列化就是把一个对象变成二进制的数据流的一种方法通过对象序列化可以方便地实现对象的传输和存储。 把对象转换为字节序列的过程称为对象的序列化 把字节序列恢复为对象的过程称为对象的反序列化 对象的序列化主要有两种用途 1 把对象的字节序列永久地保存到硬盘上通常存放在一个文件中 2 在网络上传送对象的字节序列。 对象序列化包括如下步骤1 创建一个对象输出流它可以包装一个其他类型的目标输出流如文件输出流2 通过对象输出流的writeObject()方法写对象。 对象反序列化包括如下步骤1 创建一个对象输入流它可以包装一个其他类型的源输入流如文件输入流2 通过对象输入流的readObject()方法读取对象。 在很多应用中需要对某些对象进行序列化让它们离开内存空间入住物理硬盘以便长期保存。比如最常见的是Web服务器中的Session对象当有 10万用户并发访问就有可能出现10万个Session对象内存可能吃不消于是Web容器就会把一些seesion先序列化到硬盘中等要用了再把保存在硬盘中的对象还原到内存中。 当两个进程在进行远程通信时彼此可以发送各种类型的数据。无论是何种类型的数据都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列才能在网络上传送接收方则需要把字节序列再恢复为Java对象。 二 Java中的序列化API 如果一个类的对象想被序列化那么该对象所在的类必须实现java.io.Serializable接口此接口的定义如下 public interface Serializable{} 可以发现此接口并没有定义任何的方法只是一个标识接口表示一个类可以被序列化如 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 package cn.zifangsky.serializable; import java.io.Serializable; public class Person implements Serializable {     private static final long serialVersionUID  2651243789670519969L;     private String name;     private int age;     public Person(String name, int age) {         this.name  name;         this.age  age;     }     public String toString() {         return Person [name  name  , age  age  ];     } } 就像上面这个Person类一样实现了序列化接口表明此类的对象可以经过二进制的数据流进行传输了。但是如果想要完成对象的输入和输出还需要借助对象输出流ObjectOutputStream和对象输入流ObjectInputStream java.io.ObjectOutputStream代表对象输出流它的writeObject(Object obj)方法可对参数指定的obj对象进行序列化把得到的字节序列写到一个目标输出流中java.io.ObjectInputStream代表对象输入流它的readObject()方法从一个源输入流中读取字节序列再把它们反序列化为一个对象并将其返回 只有实现了Serializable或Externalizable接口的类的对象才能被序列化。Externalizable接口继承自 Serializable接口实现Externalizable接口的类完全由自身来控制序列化的行为而仅实现Serializable接口的类可以 采用默认的序列化方式 。 三 使用Serializable接口实现的实例 首先定义了一个实现了Serializable接口WebSite的实体类 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 package cn.zifangsky.serializable; import java.io.Serializable; public class WebSite implements Serializable {     private static final long serialVersionUID  1835573222135484360L;     private String siteName;     private String siteUrl;     private String webMaster;     public WebSite() {     }     public WebSite(String siteName, String siteUrl, String webMaster) {         this.siteName  siteName;         this.siteUrl  siteUrl;         this.webMaster  webMaster;     }     public String getSiteName() {         return siteName;     }     public void setSiteName(String siteName) {         this.siteName  siteName;     }     public String getSiteUrl() {         return siteUrl;     }     public void setSiteUrl(String siteUrl) {         this.siteUrl  siteUrl;     }     public String getWebMaster() {         return webMaster;     }     public void setWebMaster(String webMaster) {         this.webMaster  webMaster;     }     public String toString() {         return WebSite [siteName  siteName  , siteUrl  siteUrl  , webMaster  webMaster  ];     } } 然后进行序列化和反序列化测试 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 package cn.zifangsky.serializable; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class TestSerialize {     public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {         TestSerialize.serializeWebSite();         TestSerialize.deserializeWebSite();     }           /**      * 使用ObjectOutputStream 序列化WebSite      * throws IOException       * throws FileNotFoundException       *       * */     public static void serializeWebSite() throws FileNotFoundException, IOException{         WebSite webSite  new WebSite();         webSite.setSiteName(zifangsky的个人博客);         webSite.setSiteUrl(http://www.zifangsky.cn);         webSite.setWebMaster(zifangsky);                   //序列化         ObjectOutputStream objectOutputStream  new ObjectOutputStream(new FileOutputStream(new File(C:/Users/Administrator/Desktop/test.txt)));         objectOutputStream.writeObject(webSite);         objectOutputStream.flush();         objectOutputStream.close();     }           /**      * 使用ObjectInputStream 反序列化WebSite      * throws IOException       * throws FileNotFoundException       * throws ClassNotFoundException       *       * */     public static void deserializeWebSite() throws FileNotFoundException, IOException, ClassNotFoundException{         ObjectInputStream objectInputStream  new ObjectInputStream(new FileInputStream(new File(C:/Users/Administrator/Desktop/test.txt)));         //反序列化         WebSite webSite  (WebSite) objectInputStream.readObject();         objectInputStream.close();         System.out.println(webSite);     }       } 输出 1 WebSite [siteNamezifangsky的个人博客, siteUrlhttp://www.zifangsky.cn, webMasterzifangsky] 四 使用Externalizable接口实现的实例 被Serializable接口声明的类的对象的内容都将被序列化如果现在用户希望自己制定序列化的内容则可以让一个类实现Externalizable接口此接口的定义如下 public interface Externalizable extends java.io.Serializable {     void writeExternal(ObjectOutput out) throws IOException;     void readExternal(ObjectInput in) throws IOException, ClassNotFoundException;} 其中这两个方法的作用是 iwriteExternal(ObjectOutput out) 在此方法中制定要保存的属性信息对象序列化时调用 iireadExternal(ObjectInput in)  在此方法中读取被保存的信息对象反序列化时调用 下面将以一个具体的实例来简单说明序列化和反序列化过程 1实现了Externalizable接口的实体类 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 package cn.zifangsky.serializable; import java.io.Externalizable; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; public class ExternalizableDemo implements Externalizable{     private String name;     static {         System.out.println(调用静态代码块);     }     public ExternalizableDemo() {         System.out.println(调用无参构造方法);     }     public ExternalizableDemo(String name) {         this.name  name;         System.out.println(调用有参构造方法);     }     public String getName() {         return name;     }     public void setName(String name) {         this.name  name;     }     public String toString() {         return ExternalizableDemo [name  name  ];     }           /**      * ObjectOutputStream会调用writeExternal(ObjectOutput out))这个方法进行序列化      * */     public void writeExternal(ObjectOutput out) throws IOException {         out.writeObject(name);     }     /**      * ObjectInputStream会调用readExternal(ObjectInput in)这个方法进行反序列化      * */     public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {         name  (String) in.readObject();     } } 2然后进行序列化和反序列化测试 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 package cn.zifangsky.serializable; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class TestExternalizable {     public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {         ExternalizableDemo demo  new ExternalizableDemo(hello);         // 序列化         ObjectOutputStream objectOutputStream  new ObjectOutputStream(                 new FileOutputStream(new File(C:/Users/Administrator/Desktop/test2.txt)));         objectOutputStream.writeObject(demo);         objectOutputStream.flush();         objectOutputStream.close();                   //反序列化         ObjectInputStream objectInputStream  new ObjectInputStream(new FileInputStream(new File(C:/Users/Administrator/Desktop/test2.txt)));         ExternalizableDemo demo2  (ExternalizableDemo) objectInputStream.readObject();         objectInputStream.close();         System.out.println(demo2);          } } 输出 1 2 3 4 调用静态代码块 调用有参构造方法 调用无参构造方法 ExternalizableDemo [namehello] 注 1使用Externalizable进行序列化时当读取对象时会调用被序列化类的无参构造器去创建一个新的对象然后再将被保存对象的字段的值分别填充到新对象中 2Externalizable接口与Serializable接口实现序列化的区别 区别SerializableExternalizable实现负责度实现简单Java对其有内建支持实现负责由开发人员自己完成执行效率所有对象由Java统一保存性能较低开发人员自己决定保存那些对象可能造成速度提升保存信息保存时占用空间大部分存储可能造成空间减小3一个对象被序列化后到底哪些内容被保存了下来是属性还是方法 答只有属性被序列化。因为每个对象都有相同的方法但是每个对象的属性却不一定相同因此对象保存的只有属性信息那么同样道理在进行序列化操作时也只有属性被序列化 五 transient关键字 当使用Serializable接口实现序列化操作时如果一个对象中的某个属性不希望被序列化那么就可以使用transient关键字进行声明 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 package cn.zifangsky.serializable; import java.io.Serializable; public class WebSite implements Serializable {     private static final long serialVersionUID  1835573222135484360L;     private String siteName;     private String siteUrl;     private transient String webMaster;     public WebSite(String siteName, String siteUrl, String webMaster) {         this.siteName  siteName;         this.siteUrl  siteUrl;         this.webMaster  webMaster;     }     public String toString() {         return WebSite [siteName  siteName  , siteUrl  siteUrl  , webMaster  webMaster  ];     } } 在上面这个类中不希望webMaster这个属性被序列化因此把它用transient关键字进行修饰接下来就是序列化与反序列化测试 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 package cn.zifangsky.serializable; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class TestSerialize {     public static void main(String[] args) throws FileNotFoundException,             IOException, ClassNotFoundException {         TestSerialize.serializeWebSite();         TestSerialize.deserializeWebSite();     }     /**      * 使用ObjectOutputStream 序列化WebSite      *       * throws IOException      * throws FileNotFoundException      *       * */     public static void serializeWebSite() throws FileNotFoundException,             IOException {         WebSite webSite  new WebSite(zifangsky的个人博客,http://www.zifangsky.cn,zifangsky);         // 序列化         ObjectOutputStream objectOutputStream  new ObjectOutputStream(                 new FileOutputStream(new File(                         C:/Users/Administrator/Desktop/test.txt)));         objectOutputStream.writeObject(webSite);         objectOutputStream.flush();         objectOutputStream.close();     }     /**      * 使用ObjectInputStream 反序列化WebSite      *       * throws IOException      * throws FileNotFoundException      * throws ClassNotFoundException      *       * */     public static void deserializeWebSite() throws FileNotFoundException,             IOException, ClassNotFoundException {         ObjectInputStream objectInputStream  new ObjectInputStream(                 new FileInputStream(new File(                         C:/Users/Administrator/Desktop/test.txt)));         // 反序列化         WebSite webSite  (WebSite) objectInputStream.readObject();         objectInputStream.close();         System.out.println(webSite);     } } 输出 1 WebSite [siteNamezifangsky的个人博客, siteUrlhttp://www.zifangsky.cn, webMasternull] 从上面的输出可以看出webMaster这个属性并没有被序列化 本文转自 pangfc 51CTO博客原文链接http://blog.51cto.com/983836259/1758247如需转载请自行联系原作者
http://wiki.neutronadmin.com/news/30360/

相关文章:

  • 怎么买网站空间广告平面设计培训班学费一般多少
  • 广州模板建站系统石家庄做网站推广
  • 网站制作哪个软件字节跳动小程序开发平台
  • wordpress音乐站主题微信开发流程四步
  • 东莞莞城网站建设公司企炬网站
  • 太原seo代理商上海seo网络推广公司
  • 河北省建设招标网站做网站兰州
  • 做国际网站有补贴吗哈尔滨做网站多少钱
  • 建网站业务员wordpress 转发标题
  • 老师问我做网站用到什么创新技术网上商城网站开发报告
  • 沈阳做网站价格e福州首页
  • 成都网站开发收费网站建设计划图
  • 网站风格的设计原则网站数据库怎么建立
  • 电商网站建设精英用wordpress主题首页
  • 建设网站的项目策划书网站怎么排名
  • 做网站的企业广州wordpress怎么找到php文件路径
  • 做淘宝客网站哪个好用济南官网seo厂家
  • 网络营销的应用研究论文广告网站建设网站排名优化
  • 如何建设一个电影网站可能wordpress.org或服务器配置文件存在问题
  • 网站视觉优化的意义手机网站设计神器
  • 在哪做网站好wordpress版本要求
  • 企业网站每年的费用国内做网站网站代理怎么样
  • 通过高权重网站做长尾关键词嘉兴市城乡规划建设局网站
  • 站长工具seo综合查询排名网页网站建设软件
  • 优秀的网站首页上海建筑网站设计
  • 排名优化网站建设中山免费建网站
  • 自己动手建设网站如何用自己的电脑建网站
  • 天河岗顶棠下上社网站建设湘潭网站建设 x磐石网络
  • 手机商城网站开发v9双语版网站怎么做
  • 自己做网站nas网站建设项目验收方案