java里seri_关于serilization
首先要了解java默认的序列化行为,java将一切关于对象的信息都保存了下了,也就是说,有些时候那些不需要保存的也被保存了下来。一般情况下,我们仅仅需要保存逻辑数据就可以了。不需要保存的数据我们可以用关键字transient标出。
例如:
import java.io.*;
public class Serial implements Serializable {
int company_id;
String company_addr;
transient boolean company_flag;
}
其中的company_flag字段将不会参与序列化与反序列化,但同时也增加了为它初始值的责任。这也是序列化常常导致的问题之一。因为序列化相当于一个只接受数据流的public构造函数,这种对象构造方法是语言之外的。但他仍然是一种形式上的构造函数。如若你的类不能够通过其他方面来保证初始化,则你需要额外的提供readObject方法,首先正常的反序列化,然后对transient标示的字段进行初始化。
在不适合的时候,使用java默认的序列化行为可能会带来速度上的影响,最糟糕的情况是,可能导致溢出。在某些数据结构的实现中,经常会充斥着各种的循环引用,而java的默认序列化行为,并不了解你的对象结构,其结果就是java试图通过一种昂贵的“图遍历”来保存对象状态。可想而知,不但慢而且可能溢出。这时候你就要提供自己的readObject,来代替默认的行为。
java里seri_关于serilization相关推荐
- Java 里的 for (;;) 与 while (true),哪个更快?
点击关注公众号,Java干货及时送达 在JDK8u的jdk项目下做个很粗略的搜索: mymbp:/Users/me/workspace/jdk8u/jdk/src $ egrep -nr " ...
- 快手二面:Java 里的 for (;;) 与 while (true),哪个更快?
转自:知乎 www.zhihu.com/question/52311366/answer/1300903 在 JDK8u 的 jdk 项目下做个很粗略的搜索: mymbp:/Users/me/work ...
- JAVA里面的int类型 和Integer类型,有什么不一样
JAVA里面的int类型 和Integer类型,有什么不一样 原创 2013年09月04日 23:15:11 标签: java / 2120 编辑 删除 JAVA里面的int类型 和Integer类型 ...
- 【转】Java里如何实现线程间通信
正常情况下,每个子线程完成各自的任务就可以结束了.不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程间通信了. 本文涉及到的知识点:thread.join(), object.w ...
- 原型模式(ProtoType) - Java里的对象复制
一, 引用的复制和对象复制. 在编程中, 我们有时会用两个引用指向同一个对象. 例如: ArrayList a = new ArrayLIst(); ArrayList b = a; 看起来好像有a, ...
- Java里的数组介绍
注意, 本文讲的是数组(Array), 非数组型线性表容器(ArrayList). 一. C语言的静态数组和动态数组. 稍微接触过c的程序猿都应该知道, c语言里的数组分为静态数组和动态数组. 1. ...
- Java 里的泛型简介.
我们在JDK中有时回见到1个类or接口后面跟这1个尖括号. 例如: java.util.HashMap<K,V> 我们一开始大概知道K,V 大概就是Key和Value的意思, 键值对嘛, ...
- Java里的容器存放的元素必须是1个对象.
我们经常看到这个句话: Java里存放的容器只能是1个对象. 一. 值类型和对象类型. 实际上, java里的变量可以分为两种类型, 一种是值类型. 一种是对象类型. 1.1 值类型变量 所谓值类型的 ...
- Java里的容器 Collection 简介
容器也是Java面试经常问到的问题. 也是Java编程的其中1个难点. 在一篇文章中很难全部讲清楚, 我打算分几篇逐步介绍. 一. 什么是容器 1.1 容器的定义 Java里的容器的定义很简单: ...
- Java里的字符串, String类简单介绍.
String类在java面试中也是1个常见的问题点. 所以也是写在这里方便以后查阅了. 大家都知道c语言里是没有String 字符串这个数据类型的. 只能用字符数组的1个特殊形式来表示一个字符串, 就 ...
最新文章
- 个人计算机中的cache,cache在计算机中的作用是什么?
- git工具tig用法
- 自己写的程序发给别人老是会出现缺失各种库,而自己电脑运行却没毛病
- r语言调用dll出现错误载入表里没有c字符名,R语言(示例代码)
- Verilog代码风格
- java程序怎么都不是一个_java运行的流程-怎么运行java程序编了一个程序不知道怎么运行郁闷啊后缀文件名是 爱问知识人...
- 半路学编程,可以成为大牛吗?
- 一支python教学_第一只python爬虫
- 让网络不再瘫痪 ARP病毒的解决措施
- jquery与javascript的引入问题
- matplotlib 绘制直方图和拟合正态曲线
- case when 失效,看了这篇文章就明白了
- JOI2014Final 飞天鼠
- 下载地址部落冲突(Clash Of Clans)免费获取宝石
- bash ps1变量_Shell PS1变量:命令提示符设置
- OpenCV物体颜色检测(Python)
- 苹果手机一卡通找不到了的解决方案 换手机 重下APP 找不到一卡通解决方案
- 台灯AAA和AA有什么区别?国AA台灯有必要买吗
- Android去除EditText的聚焦Focuse
- 触心创业路 - 记一家VR游戏创业团队的经历