zoukankan      html  css  js  c++  java
  • JAVA序列化:implements Serializable

    什么是序列化:

    序列化的过程,就是一个“freeze”的过程,它将一个对象freeze住,然后进行存储,等到再次需要的时候,再将这个对象de-freeze就可以立即使用。

    什么情况下需要序列化:

    原文:https://blog.csdn.net/dinghqalex/article/details/46009911 

            1.     当你想把的内存中的对象写入到硬盘的时候。

            2.     当你想用套接字在网络上传送对象的时候。

            3.     当你想通过RMI传输对象的时候。

    稍微解释一下:

            1.    【保存在硬盘中时】比如说你的内存不够用了,那计算机就要将内存里面的一部分对象暂时的保存到硬盘中,等到要用的时候再读入到内存中,硬盘的那部分存储空间就是所谓的虚拟内存。在比如过你要将某个特定的对象保存到文件中,我隔几天在把它拿出来用,那么这时候就要实现Serializable接口。

            2.    【网络上传输时】在进行Java的Socket编程的时候,你有时候可能要传输某一类的对象,那么也就要实现Serializable接口。最常见的你传输一个字符串,它是JDK里面的类,也实现了Serializable接口,这样做为的是将数据变为二进制来传输,所以可以在网络上传输。

            3.    【远程方法调用时】如果要通过远程的方法调用(RMI)去调用一个远程对象的方法,如在计算机A中调用另一台计算机B的对象的方法,那么你需要通过JNDI服务获取计算机B目标对象的引用,将对象从B传送到A,就需要实现序列化接口。

     如何实现序列化:

      一个对象序列化的接口,一个类只有实现了Serializable接口,它的对象才是可序列化的。因此如果要序列化某些类的对象,这些类就必须实现Serializable接口。而实际上,Serializable是一个空接口,没有什么具体内容,它的目的只是简单的标识一个类的对象可以被序列化。

    疑问:

    @ResponseBody是作用在方法上的,@ResponseBody 表示该方法的返回结果直接写入 HTTP response body 中,一般在异步获取数据时使用【也就是AJAX】,在使用 @RequestMapping后,返回值通常解析为跳转路径,但是加上 @ResponseBody 后返回结果不会被解析为跳转路径,而是直接写入 HTTP response body 中。(@RequestBody 将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。) 比如异步获取 json 数据,加上 @ResponseBody 后,会直接返回 json 数据,JSON是序列化, (所以返回结果要实现序列化就能转为json(待确认))

    参考:https://www.cnblogs.com/yingyigongzi/p/9280608.html

    问:返回如果是对象,对象需要实现序列化

    SpringBoot定制@ResponseBody注解返回的Json格式:

      https://blog.csdn.net/qq_33328356/article/details/89856823

  • 相关阅读:
    (1) C语言 基础1
    (5)数据契约
    hdu3592(差分约束) (线性)
    POJ3169 差分约束 线性
    BZOJ 3754 Tree之最小方差树 MST
    CodeForces788B 欧拉路
    【bzoj2152】聪聪可可 点分治
    POJ 1741 Tree【Tree,点分治】
    POJ3107 树的重心
    poj1655(dfs,树形dp,树的重心)(点分治基础)
  • 原文地址:https://www.cnblogs.com/aaronRhythm/p/10916644.html
Copyright © 2011-2022 走看看