`
123003473
  • 浏览: 1064185 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

hessian学习基础篇——序列化和反序列化

 
阅读更多
1、概念介绍

   把Java对象转换为字节序列的过程称为对象的序列化。
   把字节序列恢复为Java对象的过程称为对象的反序列化。

   对象的序列化主要有两种用途:
  1) 数据介质存储
  2) 数据网络传输

2、对象序列化实例

     为了更好的理解hessian的序列化机制,所以把java和hessian的对象序列化实例都一一列出。

      1)对象序列化--java

public byte[] serialize(Object obj) throws Exception {  
    if(obj==null) throw new NullPointerException();  
      
    ByteArrayOutputStream os = new ByteArrayOutputStream();  
    ObjectOutputStream out = new ObjectOutputStream(os);  
    out.writeObject(obj);  
    return os.toByteArray();  
}  
  
public Object deserialize(byte[] by) throws Exception {  
    if(by==null) throw new NullPointerException();  
      
    ByteArrayInputStream is = new ByteArrayInputStream(by);  
    ObjectInputStream in = new ObjectInputStream(is);  
    return in.readObject();  
}  


   2)对象序列化--hessian (hessian2的序列化方式在附件中)

public byte[] serialize(Object obj) throws IOException{  
    if(obj==null) throw new NullPointerException();  
      
    ByteArrayOutputStream os = new ByteArrayOutputStream();  
    HessianOutput ho = new HessianOutput(os);  
    ho.writeObject(obj);  
    return os.toByteArray();  
}  
  
public Object deserialize(byte[] by) throws IOException{  
    if(by==null) throw new NullPointerException();  
      
    ByteArrayInputStream is = new ByteArrayInputStream(by);  
    HessianInput hi = new HessianInput(is);  
    return hi.readObject();  
}  


从以上代码不难看出,对象序列化的过程为:
         先将对象转为字节码或其它,然后再将其还原为对象。在反序列化时,内存中必须有源对象的所属类。

3、对象序列化效率
     hessian2在这方面有了很大的改进,所以优势十分明显。具体细节不再详述,在进阶篇中,我会详述序列化的实现细节。在此仅把实例执行结果公布出来:

执行结果代码:
java:  
77  
stxm  
  
hessian:  
41  
stxm  
  
hessian2:  
30  
stxm  
  
说明:  
1、数字为对象序列化后的字节长度。  
2、‘stxm’为对象方法的执行结果。  


    hessian2的优点,谁用谁知道。待我再做深入研究之后,再把我自己认为的和大家认为的优点总结一下,并加以解释。

【转载地址】http://lionbule.iteye.com/blog/523355


http://agapple.iteye.com/blog/949266
分享到:
评论

相关推荐

    CXF+RMI+HESSIAN

    这涉及到在CXF的配置文件中添加相关配置,指示CXF使用Hessian编码器进行序列化和反序列化。 4. 创建RMI注册表:启动RMI注册表,使得远程对象可以被找到和调用。 5. 客户端调用:在客户端,我们创建一个代理对象,...

    RPC 框架学习 好的参考学习

    - 序列化模块通常是可插拔的,QiuRPC可能内置支持JSON、Hessian、Protobuf等多种序列化方式,开发者可以根据性能和需求选择合适的序列化库。 5. **负载均衡与容错**: - QiuRPC可能会提供简单的负载均衡策略,如...

    dubbo精品课程-基础篇

    5. **协议与序列化**:讨论Dubbo支持的通信协议,如`dubbo`、`rmi`、`http`等,以及各种序列化方式,如`Hessian2`、`FastJson`等,分析它们的优缺点和适用场景。 6. **负载均衡策略**:介绍Dubbo内置的多种负载均衡...

    dubbo-demo

    当服务消费者调用服务接口时,Dubbo会处理底层的网络通信,如TCP连接,并执行序列化和反序列化操作。Dubbo提供了多种协议供选择,如RPC协议、HTTP协议等,以及多种序列化方式,如Hessian、Java自带的序列化等。此外...

    dubbo_rpc_hession_rmi

    Hessian则通过序列化和反序列化机制实现远程调用,其性能相比纯HTTP协议有显著提升。 总结,"dubbo_rpc_hession_rmi"这个主题涵盖了Dubbo作为RPC框架的核心概念,Hessian作为RPC协议的实现,以及RPC基础理论。通过...

    Android开发项目怎样快速开发框架

    Hessian是一种二进制Web服务协议,它能高效地处理Java对象的序列化和反序列化。在Android开发中,Hessian用于客户端和服务端之间的通信,可以减少数据传输的开销,提高网络通信的效率。通过Hessian,Android应用可以...

    dubbo官方demo

    在Demo中,通常会默认使用Dubbo协议和Hessian序列化。 6. **服务暴露与引用(Service Export & Reference)**:服务提供者通过`<dubbo:service>`标签暴露服务,而服务消费者通过`<dubbo:reference>`标签引用服务。...

    dubbox框架源码和使用实例

    除了基础的使用,深入学习 Dubbox 还包括了解其内部工作原理,如 Remoting 层的通信机制、序列化与反序列化过程、服务治理策略的实现等。此外,结合实际业务场景,学习如何利用 Dubbox 的扩展点实现定制化功能,如...

    hession之经典入门例子

    Hession能自动序列化和反序列化对象,使得远程调用像本地方法调用一样简单。与JSON或XML相比,Hession的二进制格式在传输效率上有着显著的优势。 接下来,我们来看看"springHessianClient"这个压缩包中的文件,这是...

    dubbo最新全面深度解读

    序列化是远程调用中必不可少的一环,Dubbo支持多种序列化方式,如Java自带的序列化、Hessian2、FastJson等。选择合适的序列化方式可以影响到系统的性能和兼容性。 8. **容错机制** Dubbo提供了多种容错策略,如...

    Dubbo高级视频教程

    - **网络传输优化**:使用更高效的序列化协议(如Hessian2)以及TCP连接复用技术。 - **并发模型**:合理设置线程池大小以平衡资源利用率和响应时间。 - **服务拆分与模块化**:遵循微服务架构原则,合理拆分服务并...

    springboot-httpinvoker-demo.zip

    3. 数据传输:请求和响应的数据都通过HTTP协议进行传输,Spring会自动处理对象的序列化和反序列化。 4. 异常处理:HTTP Invoker支持异常的透明传播,客户端可以捕获到服务器端抛出的异常,从而进行相应的处理。 四...

    dubbox源代码

    此外,Dubbox 支持多种序列化方式,如 Hessian2、FastJson、Java自带的序列化等。源代码展示了如何根据配置选择合适的序列化算法,并进行数据的编码和解码。 4. **负载均衡策略** 为了提高系统的可用性和响应速度...

    dubbo初体验

    除此之外,Dubbo还支持多种通信协议和序列化方式,如RPC协议、HTTP协议,Hessian、Fastjson等序列化库,以适应不同的场景需求。它还具备强大的容错机制,如失败重试、降级策略、隔离策略等,保证了服务的高可用性。 ...

    dubbo源码解析

    综上所述,阅读和理解Dubbo源码需要较为扎实的Java基础和丰富的框架应用经验,对于希望深入学习分布式系统和服务治理的开发者来说,Dubbo是一个非常好的学习案例。通过本文的详细分析,可以帮助读者快速掌握Dubbo的...

    基于Dubbo分布式系统架构视频教程,

    5. **协议与序列化**:讨论Dubbo支持的多种通信协议(如HTTP、TCP、RMI等)和序列化方式(如Hessian、JSON等),以及如何选择合适的组合。 6. **服务注册与发现**:介绍ZooKeeper作为注册中心的角色,以及服务元...

    2018最新Dubbo视频教程

    此外,Dubbo还提供了多种序列化方式(如Hessian、JSON等)来满足不同场景下的性能需求。 #### 负载均衡 为了提升服务调用效率和可靠性,Dubbo内置了多种负载均衡策略,如随机算法、轮询算法以及最少活跃调用数算法...

    第二课:快速掌握Dubbo常规应用 (1)1

    它支持多种传输协议(如TCP、HTTP等)和序列化方式(如Hessian、JSON等),确保了跨语言的互操作性。此外,Dubbo还提供了服务治理的功能,包括服务注册、服务发现、调用路由等,使得微服务架构的构建和维护更加便捷...

    dubbo入门案例

    Dubbo支持多种通信协议,如RPC(Remote Procedure Call)和HTTP,以及多种序列化方式,如Hessian和Fastjson。 在"edu-service-user"这个入门案例中,我们可以看到一个基础的服务提供者和服务消费者的构建。"edu-...

Global site tag (gtag.js) - Google Analytics