3、序列化(什么是 java 序列化?什么情况下需要序列化?

3.1 什么是Java序列化?

简单来说 序列化就是把Java对象储存在某一地方(硬盘、网络),也就是将对象的内容进行流化。

反序列化:就是把二进制数据反序列化成对象数据

3.2 为什么要序列化

(持久化,复制,传输)

a)当你想把的内存中的对象状态保存到一个文件中或者数据库中时候;
b)当你想用套接字在网络上传送对象的时候;
c)当你想通过RMI传输对象的时候;

3.3 JAVA序列化有哪些方式(性能由低至高)

Java Serialization(主要是采用JDK自带的Java序列化实现,性能很不理想)
Json(目前有两种实现,一种是采用的阿里的fastjson库,另一种是采用dubbo中自己实现的简单json库)
FastJson(阿里的fastjson库)
Hession(它基于HTTP协议传输,使用Hessian二进制序列化,对于数据包比较大的情况比较友好。)
Dubbo Serialization(阿里dubbo序列化)
FST(高性能、序列化速度大概是JDK的4-10倍,大小是JDK大小的1/3左右)
Kryo

反序列化并不会调用构造方法。反序列的对象是由 JVM 自己生成的对象,不通过构造方法生成。
序列化对象的引用类型成员变量,也必须是可序列化的,否则,会报错。
如果想让某个变量不被序列化,使用 transient 修饰。
单例类序列化,需要重写 readResolve() 方法。

3.4 如何将一个 java 对象序列化到文件里

在 java 中能够被序列化的类必须先实现 Serializable 接口,该接口没有任何抽象方法只是起到一个标记作用

1.对象需要实现Serializable接口

2.通过ObjectOutputStream的writeObject()方法写入和ObjectInputStream的readObject()方法来进行读取

3、序列化(什么是 java 序列化?什么情况下需要序列化?)相关推荐

  1. 什么是 java 序列化?什么情况下需要序列化?

    什么是 java 序列化?什么情况下需要序列化? 序列化:将 Java 对象转换成字节流的过程. 反序列化:将字节流转换成 Java 对象的过程. 当 Java 对象需要在网络上传输 或者 持久化存储 ...

  2. Java实现多种情况下语言本地化

    Android 多种情况下语言本地化 Android中的本地化又叫国际化主要设计一种适应于多种语言的程序过程.下面我们来了解一下两种不同情况下 的本地化.  一.程序中实现本地化 首先介绍一下文件命名 ...

  3. Java序列化是什么?你知道什么时候需要序列化吗?

    Java序列化是什么?你知道什么时候需要序列化吗? 什么是 java 序列化?什么情况下需要序列化? 序列化:将 Java 对象转换成字节流的过程. 反序列化:将字节流转换成 Java 对象的过程. ...

  4. Java中的Serializable接口之“序列化”与“反序列化”

    你是不是想问:为什么有的类实现Serializable接口?还有什么是序列化和反序列化? 带着这个问题往下看,看完就明白了! 序列化与反序列化 序列化是指把对象转换为字节序列的过程,我们称之为对象的序 ...

  5. 【JAVA SE】第十三章 序列化与反序列化

    第十三章 序列化与反序列化 文章目录 第十三章 序列化与反序列化 一.概念 1.序列化与反序列化 2.序列化有什么作用 二.代码实现 1.思路 2.创建一个Student类 3.创建TestSeria ...

  6. 无源码情况下动态调试混淆的java程序

    逆向工程JAVA通常是非常简单的,因为优秀的JAVA二进制反编译器已经存在多年.类似于jd-gui工具和恢复java二进制文件源代码功能也做的非常出色的.在这种情况下我们需要动态调试java反编译ja ...

  7. Java学习总结:51(对象序列化)

    对象序列化 对象序列化的本质实际上就是将内存中所保存的对象数据转换为二进制数据流进行传输的操作. 但并不是所有类的对象都可以直接进行序列化操作,要被序列化的对象所在的类一定要实现java.io.Ser ...

  8. Java I/O中的对象序列化

    Java I/O中的对象序列化 Java对象序列化将那些实现了Serializable接口的对象转换成一个字节序列,并能够以后将这个字节序列完全恢复为原来的对象.利用对象的序列化,可以实现轻量级持久性 ...

  9. java 属性不序列化_怎样对带有不可序列化属性的Java对象进行序列化

    原标题:怎样对带有不可序列化属性的Java对象进行序列化 出于很多原因我们想使用自定义的序列化方法取代Java默认的机制.一个最常见的原因是提高性能,而另一个原因是有时候我们无法使用默认的序列化方法. ...

最新文章

  1. 如何定义视觉设计规范?
  2. java服务器要二次编译,ecology项目二次开发环境搭建
  3. preg_match进行正则表达式匹配
  4. 【PHP学习】—数组的定义和遍历(三)
  5. socket编程—— 服务器遇到Broken Pipe崩溃
  6. 一起谈.NET技术,在.NET中嵌入IronPython 交互
  7. 人大金仓数据库的备份与还原
  8. Python地理数据处理 一 :地理空间数据入门
  9. 中宠股份第三季度营收7.55亿元:增速环比持续下滑,净利润转降
  10. ADO与ADO.NET的区别
  11. 游戏本自动掉帧_LOL官方割韭菜?“永恩上线就出问题,游戏掉帧商城BUG仍未修复”...
  12. Java编程之屏幕上打印出n行的金字塔图案
  13. python人脸识别opencv_python中使用Opencv进行人脸识别
  14. python一个数的阶乘_python整数阶乘计算
  15. unity抠人像原理_抠出精细发丝人像图片的PS抠图教程
  16. gr-osmosdr的安装
  17. PMP项目管理——整合管理之制订项目管理计划
  18. 采购管理怎么做(详解采购工作流程)
  19. 牛客SQL练习-7-查找薪水变动超过15次的员工号emp_no以及其对应的变动次数t
  20. Python验证码识别

热门文章

  1. 移动端测试必备技能: adb命令和抓包
  2. Python绘图神器Matplotlib、Echarts、Pyecharts 和 Plotly ——可绘制各种图
  3. Delphi调用腾讯云最新签名方法v3 TC3-HMAC-SHA256发送短信
  4. 小米3联通电信通刷_2013062 2013063_官方线刷包_救砖包_解账户锁
  5. java 代码坏味道_代码中的坏味道
  6. PlayMaker — 动作
  7. word写论文时标题与页面顶端的距离和设定不一样的问题
  8. 新成立公司的会计第一个月要做什么?
  9. cacl() 浮动
  10. Java基础编程题目——编写一个三角形的类