写在前
今天看HashMap源码,居然又发现一个平时不常用的关键字,word天!
transient 什么玩意,百度翻译:临时的,那大概就是说它修饰的是一个临时变量咯,有什么用呢?为什么要用到这个关键字呢?
我之前在想,是不是成了银行的工作人员后就知道用户的银行卡密码了?当然这只是以前一直困惑的问题,其实到现在也还没明白…支付宝里存钱了,马云他们家知道我支付宝密码不???这安全吗??
学习的越多,越接近真相,之前搞nacos发现nacos的密码会被什么MD5值弄一下,再存储到数据库中,明明就是nacos5个字母的密码,存储到数据库中就变成了一长串的乱七八糟的字符组合了。后来搞了http,啥中文乱码处理之类的,发现网络传输还可以加密,我又搞文件服务组件,发现还有二进制、八进制、十六进制编码、奇奇怪怪的编码一混合,哈哈哈,自己都不知道密码长啥样了,又放心多了。
从接触到这个关键字,我又联想到网络传输时输入的密码…有了这个关键字,又放心了一些.当然,刚刚那些话都是我在瞎掰…
序列化,我理解就是实现Serializable 接口的类就是可以序列化的,起初也不知道有什么不一样,但是到了网络传输上,比如写了个接口,通过Vo Dto传递一些值得时候,不实现序列化好像就不好使. 所以实体类一般要实现序列化。
好了,记笔记就记关键点吧:
transient 关键字
1)transient修饰的变量不能被序列化;
2)transient只作用于实现 Serializable 接口;
3)transient只能用来修饰普通成员变量字段;
4)不管有没有 transient 修饰,静态变量都不能被序列化;
更多内容可参考以下资料,都分析验证的挺不错的。
java中的transient关键字详解
https://blog.youkuaiyun.com/qq_44543508/article/details/103232007
小伙子,你真的搞懂 transient 关键字了吗?
https://blog.youkuaiyun.com/youanyyou/article/details/88218413
TRANSIENT
https://www.cnblogs.com/tiantanglw/p/9142895.html