Java NIO详解
https://blog.csdn.net/forezp/article/details/88414741
transient关键词有什么意义?
transient关键词只能修饰变量,无法修饰类或方法,其所修饰的对象在进行序列化(Sequence)时,不参与序列化。
有什么用?
一些敏感或安全性相关的字段原则上不应该参与序列化,以免暴露;
一些字段可以由其他字段推理出,如知道圆的直径,可很方便地推出圆的周长,在HashMap的源码中也有其应用的地方:
transient Node<K,V>[] table;// 键值对表
transient Set<Map.Entry<K,V>> entrySet;//键值对Set
transient int size;//Map尺寸
transient int modCount;//Fast-Fail机制
在对HashMap进行序列化时,其中所有的键值对会根据迭代顺序进行序列化,table、entrySet等字段的内容与键值对存在很大的重复性,而且当接收到所有键值对之后,完全可以推理出这些字段数据,在这个情境下,transient的作用就是减小序列化对象大小。