序列化之Java默认序列化技术(ObjectOutputStream与ObjectInputStream)

简介:

Java默认序列化技术

    主要是通过

  • 对象输出流java.io.ObjectOutputStream

  • 对象输入流java.io.ObjectInputStream

    来实现的

       

1
2
3
4
5
6
7
8
9
package  com.xingej.ser;
 
public  interface  ISerializer {
     // 序列化,将obj序列化成字节数组
     public  <T>  byte [] serialize(T obj);
 
     // 反序列化,将字节数组,反序列化为T
     public  <T> T deserialize( byte [] data, Class<T> clazz);
}

实现类:

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
package  com.xingej.ser.impl;
 
import  java.io.ByteArrayInputStream;
import  java.io.ByteArrayOutputStream;
import  java.io.IOException;
import  java.io.ObjectInputStream;
import  java.io.ObjectOutputStream;
 
import  com.xingej.ser.ISerializer;
 
public  class  DefaultJavaSerializer  implements  ISerializer {
 
     public  <T>  byte [] serialize(T obj) {
         // 默认创建的是32个字节
         ByteArrayOutputStream bos =  new  ByteArrayOutputStream();
 
         ObjectOutputStream oos =  null ;
 
         try  {
                 // 对字节输出流进行封装
             oos =  new  ObjectOutputStream(bos);
 
             // 通过writeObject,将obj对象进行序列化到了bos里
             oos.writeObject(obj);
         catch  (IOException e) {
             e.printStackTrace();
         }
 
         return  bos.toByteArray();
     }
 
     @SuppressWarnings ( "unchecked" )
     public  <T> T deserialize( byte [] data, Class<T> clazz) {
         // 将字节数组,转换成输入流
         ByteArrayInputStream bis =  new  ByteArrayInputStream(data);
 
         ObjectInputStream ois =  null ;
 
         Object object =  null ;
 
         try  {
             // 将字节输入流 转换成 对象输入流
             ois =  new  ObjectInputStream(bis);
 
             // 这样的话,就可以通过ObjectInputStream的readObject方法
             // 直接读取对象了
             object = ois.readObject();
         catch  (Exception e) {
             e.printStackTrace();
         }
 
         return  (T) object;
     }
 
}

进行测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package  com.xingej.ser.client;
 
import  com.xingej.ser.ISerializer;
import  com.xingej.ser.impl.DefaultJavaSerializer;
 
/**
  * 对java默认序列化进行测试
 
  */
public  class  Driver {
     public  static  void  main(String[] args) {
         String name =  "spark" ;
         ISerializer serializer =  new  DefaultJavaSerializer();
 
         // 序列化
         byte [] nameSer = serializer.serialize(name);
 
         // 反序列
         Object object = serializer.deserialize(nameSer, String. class );
 
         System.out.println( "---序列化--->:\t"  + object);
     }
}


















本文转自故新51CTO博客,原文链接: http://blog.51cto.com/xingej/1959729,如需转载请自行联系原作者





相关文章
|
26天前
|
JSON 前端开发 JavaScript
java-ajax技术详解!!!
本文介绍了Ajax技术及其工作原理,包括其核心XMLHttpRequest对象的属性和方法。Ajax通过异步通信技术,实现在不重新加载整个页面的情况下更新部分网页内容。文章还详细描述了使用原生JavaScript实现Ajax的基本步骤,以及利用jQuery简化Ajax操作的方法。最后,介绍了JSON作为轻量级数据交换格式在Ajax应用中的使用,包括Java中JSON与对象的相互转换。
39 1
|
1月前
|
存储 安全 Java
🌟Java零基础-反序列化:从入门到精通
【10月更文挑战第21天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
71 5
|
1月前
|
SQL 监控 Java
技术前沿:Java连接池技术的最新发展与应用
本文探讨了Java连接池技术的最新发展与应用,包括高性能与低延迟、智能化管理和监控、扩展性与兼容性等方面。同时,结合最佳实践,介绍了如何选择合适的连接池库、合理配置参数、使用监控工具及优化数据库操作,为开发者提供了一份详尽的技术指南。
32 7
|
1月前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
45 3
|
1月前
|
SQL 监控 Java
Java连接池技术的最新发展,包括高性能与低延迟、智能化管理与监控、扩展性与兼容性等方面
本文探讨了Java连接池技术的最新发展,包括高性能与低延迟、智能化管理与监控、扩展性与兼容性等方面。同时,结合最佳实践,介绍了如何选择合适的连接池库、合理配置参数、使用监控工具及优化数据库操作,以实现高效稳定的数据库访问。示例代码展示了如何使用HikariCP连接池。
15 2
|
1月前
|
存储 缓存 安全
🌟Java零基础:深入解析Java序列化机制
【10月更文挑战第20天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
27 3
|
1月前
|
Java 数据库连接 数据库
优化之路:Java连接池技术助力数据库性能飞跃
在Java应用开发中,数据库操作常成为性能瓶颈。频繁的数据库连接建立和断开增加了系统开销,导致性能下降。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接,显著减少连接开销,提升系统性能。文章详细介绍了连接池的优势、选择标准、使用方法及优化策略,帮助开发者实现数据库性能的飞跃。
30 4
|
1月前
|
存储 安全 Java
Java编程中的对象序列化与反序列化
【10月更文挑战第22天】在Java的世界里,对象序列化和反序列化是数据持久化和网络传输的关键技术。本文将带你了解如何在Java中实现对象的序列化与反序列化,并探讨其背后的原理。通过实际代码示例,我们将一步步展示如何将复杂数据结构转换为字节流,以及如何将这些字节流还原为Java对象。文章还将讨论在使用序列化时应注意的安全性问题,以确保你的应用程序既高效又安全。
|
1月前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
29 1
|
1月前
|
算法 Java 数据库连接
Java连接池技术,从基础概念出发,解析了连接池的工作原理及其重要性
本文详细介绍了Java连接池技术,从基础概念出发,解析了连接池的工作原理及其重要性。连接池通过复用数据库连接,显著提升了应用的性能和稳定性。文章还展示了使用HikariCP连接池的示例代码,帮助读者更好地理解和应用这一技术。
43 1