java中的关键字transient详解

利用抖音Cookie充值接口提取支付链接,调起原生微信h5支付宝h5支付 最近开始搞一些个人支付通道的开发,方便个人不用和第三方平台签约就能收款,省去很多流程手续的成本。 然后翻了一下网上并没有太多现成的技术教程,只能自己研究着搞了。 这次要分享的是利用抖音的充值接口,去分析提取出支付链接,分别包含微信原生支付的h5支付链接,和支付宝h5支付链接。 微信h5支付: 抖币充值,抖音充值,抖音直播充值官方入口 - 抖音 支付宝h5支付 抖币充值,抖音充值,抖音直播充值官方入口 - 抖音 整个开发流程思路是以下几步: 1.抓包分析抖音的充值的整个流程,提取关键的一些 阅读详情

这个关键字的作用其实我在写java的序列化机制中曾经写过,不过那时候只是简单地认识,只要其简单的用法,没有深入的去分析。这篇文章就是去深入分析一下transient关键字。

先给出这篇文章的大致脉络

首先,介绍了transient的基本概念和基本用法、然后,介绍深入分析一下transient关键字,并介绍几个需要掌握的问题最后,来个总结

一、初识transient关键字

其实这个关键字的作用很好理解,就是简单的一句话:将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会被序列化。

概念也很好理解,下面使用代码去验证一下:
在这里插入图片描述

然后我们在Test中去验证一下:

在这里插入图片描述

从上面可以看出,在序列化SerializeUser方法中,首先创建一个序列化user类,然后将其写入到G://Test/template路径中。在反序列化DeSerializeUser方法中,首先创建一个File,然后读取G://Test/template路径中的数据。

这就是序列化和反序列化的基本实现,而且我们看一下结果,也就是被transient关键字修饰的age属性是否被序列化。

在这里插入图片描述

从上面的这张图可以看出,age属性变为了0,说明被transient关键字修饰之后没有被序列化。

二、深入分析transient关键字

为了更加深入的去分析transient关键字,我们需要带着几个问题去解读:

(1)transient底层实现的原理是什么?

(2)被transient关键字修饰过得变量真的不能被序列化嘛?

(3)静态变量能被序列化吗?被transient关键字修饰之后呢?

带着这些问题一个一个来解决:

1、transient底层实现原理是什么?

java的serialization提供了一个非常棒的存储对象状态的机制,说白了serialization就是把对象的状态存储到硬盘上 去,等需要的时候就可以再把它读出来使用。有些时候像银行卡号这些字段是不希望在网络上传输的,transient的作用就是把这个字段的生命周期仅存于调用者的内存中而不会写到磁盘里持久化,意思是transient修饰的age字段,他的生命周期仅仅在内存中,不会被写到磁盘中。

2、被transient关键字修饰过得变量真的不能被序列化嘛?

想要解决这个问题,首先还要再重提一下对象的序列化方式:

Java序列化提供两种方式。

一种是实现Serializable接口

另一种是实现Exteranlizable接口。 需要重写writeExternal和readExternal方法,它的效率比Serializable高一些,并且可以决定哪些属性需要序列化(即使是transient修饰的),但是对大量对象,或者重复对象,则效率低。

从上面的这两种序列化方式,我想你已经看到了,使用Exteranlizable接口实现序列化时,我们自己指定那些属性是需要序列化的,即使是transient修饰的。下面就验证一下

首先我们定义User1类:这个类是被Externalizable接口修饰的
在这里插入图片描述

然后我们就可以测试了

在这里插入图片描述

上面,代码分了两个方法,一个是序列化,一个是反序列化。里面的代码和一开始给出的差不多,只不过,User1里面少了age这个属性。

然后看一下结果:
在这里插入图片描述

结果基本上验证了我们的猜想,也就是说,实现了Externalizable接口,哪一个属性被序列化使我们手动去指定的,即使是transient关键字修饰也不起作用。

3、静态变量能被序列化吗?没被transient关键字修饰之后呢?

这个我可以提前先告诉结果,静态变量是不会被序列化的,即使没有transient关键字修饰。下面去验证一下,然后再解释原因。

首先,在User类中对age属性添加transient关键字和static关键字修饰。

然后,在Test类中去测试
在这里插入图片描述

最后,测试一下,看看结果
在这里插入图片描述

结果已经很明显了。现在解释一下,为什么会是这样,其实在前面已经提到过了。因为静态变量在全局区,本来流里面就没有写入静态变量,我打印静态变量当然会去全局区查找,而我们的序列化是写到磁盘上的,所以JVM查找这个静态变量的值,是从全局区查找的,而不是磁盘上。user.setAge(18);年龄改成18之后,被写到了全局区,其实就是方法区,只不过被所有的线程共享的一块空间。因此可以总结一句话:

静态变量不管是不是transient关键字修饰,都不会被序列化

三、transient关键字总结

java 的transient关键字为我们提供了便利,你只需要实现Serilizable接口,将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中。像银行卡、密码等等这些数据。这个需要根据业务情况了。

08 RK3568 MAC TO MAC直连 RTL8367S mdio 本文:采用rk3568 gamc0 通过rgmii直连 交换芯片的mac口 通信方法为mdio。 阅读详情

相关推荐

Cadence仿真实战:从零构建高精度带隙基准电压源

本文是一份详细的Cadence仿真实战指南,指导读者从零开始构建高精度带隙基准电压源。文章首先解释了带隙基准电压源稳定输出电压的原理,然后逐步演示了在Cadence Virtuoso环境中如何搭建测试电路、测量关键温度系数、计算并搭建核心电路,并通过参数扫描和迭代调优来驯服温度漂移,最终实现低漂移的基准电压输出。

weixin_29207533的博客 242

Java基础—序列化关键字transient

原文作者:老鼠只爱大米 原文地址:Java中transient关键字的详细总结 一、概要介绍 本文要介绍的是Java中的transient关键字,transient是短暂的意思。对于transient 修饰的成员变量,在类的实例对象的序列化处理过程中会被忽略。 因此,transient变量不会贯穿对象的序列化和反序列化,生命周期仅存于调用者的内存中而不会写到磁盘里进行持久化。 (1)序列化 Java中对象的序列化指的是将对象转换成以字节序列的形式来表示,这些字节序列包含...

sanmi8276的博客 3229

别再混淆了!5分钟搞懂机器人导纳控制与阻抗控制的本质区别(附Simulink对比仿真)

本文深入解析机器人柔顺控制中的导纳控制与阻抗控制的本质区别,通过信号流方向、架构对比和应用场景三个关键视角进行详细阐述。文章还提供Simulink对比仿真案例,帮助读者快速理解两种控制策略的差异及其适用场景,特别适合机器人控制领域的研究者和工程师参考。

weixin_42543046的博客 604

Java关键字之transient详解

1. transient介绍和使用 2. 使用场景和实际应用

Mr.绵羊的知识星球 4659

光谱特征选择之模拟退火算法SA

光谱特征选择之模拟退火算法SA。

weixin_42621095的博客 901

python监听海康威视报警服务器

因为我使用海康威视摄像头是自带热成像的所以事件报警会上报两张图片,一张是RGB图像、另一张是热成像图像,因此使用。拿到的就是第一张RGB图像。可以点击测试,会显示。

qq_57018478的博客 1157

Java transient关键字

在 Java 中,序列化用于将对象转换为字节流。字节流由实例的数据以及存储在该实例中的数据类型组成。反序列化执行完全相反的操作。它将字节序列转换为原始对象数据。在序列化过程中,当我们不想序列化对象时,可以使用transient关键字。 为什么要使用transient关键字? transient关键字可以与类的数据成员一起使用,以避免它们的序列化。例如,如果程序接受用户的登录详细信息和密码。但是我们不想将原始密码存储在文件中。在这里,我们可以使用transient关键字,当 JVM 读取trans...

allway2的博客 3260

wsl2 配置ubuntu 固定ip

wsls ubuntu 设置固定ip

musk1212的博客 2616

transient关键字

transient字面意思是短暂的,转瞬即逝的,作为Java中的关键字,他的作用就是让其修饰的属性不被序列化。 序列化就是将对象转化为字节序列,序列化后的对象可以存入数据库、磁盘文件,也可用于网络传输(在Java中实现序列化的方法就是实现Serializable接口)。例如我们平时用的缓存,当我们需要持久化缓存的时候,都需要将存储的对象实现Serializable接口,目的就是为了让其可以序列化...

Peacock__的博客 1563

手把手教你学Simulink——基于自动驾驶辅助系统的场景实例:车道保持辅助系统(LKA)的仿真与实现

本文通过Simulink实例讲解车道保持辅助系统(LKA)的实现方法。首先介绍LKA从预警到主动控制的技术演进,阐述其系统架构、核心组件和工作原理。重点演示基于自行车模型的车辆横向动力学建模过程,以及使用线性二次调节器(LQR)设计横向控制器的详细步骤。教程包含四个仿真场景测试,分析关键指标如控制精度、舒适性和响应性。最后探讨LKA技术的发展方向,强调人机协同的安全理念。该实例为自动驾驶辅助系统开发提供了完整的Simulink实践方案。

MHD0815的博客 181

高云FPGA系列教程(8):ARM串口数据接收(中断和轮询方式)

GW1NSR-4C ARM部分共有2个串口外设,都挂载在APB1总线上,最高支持波特率921.6Kbit/s,无奇偶校验位,8位数据位,1位停止位,支持高速测试模式 HSTM(High Speed Test Mode),即每个时钟周期输出1位数据,可以在短时间内传输大量数据。官方手册上没有描述发送和接收缓存FIFO的深度,所以不确定是否支持缓存。

whik1194的博客 1683

剑指offer-例题 栈的压入、弹出序列

题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的) import java.util.ArrayList; import java.util.Stack; public class Solution { public boolean I

qq_39622795的博客 904

Python 爬虫实战:去哪儿网机票价格爬取与出行比价分析

本文介绍了一个基于Python的机票价格监控系统,通过爬取去哪儿网数据实现多航线查询与智能比价。系统采用requests+BeautifulSoup+selenium技术栈,具备以下功能: 实时查询指定航线价格 历史价格追踪与分析 最低价推荐与价格预警 数据可视化展示 文章详细解析了去哪儿网的页面结构和反爬机制,提供了Selenium浏览器的完整配置方案,并实现了一个可稳定运行的机票采集爬虫。该系统能帮助用户掌握价格波动规律,选择最优购票时机,每年可节省可观的出行成本。

u014481728的博客 665

java中的transient关键字详解

说实话学了一段时间java的朋友对于`transient`这个关键字依旧很陌生基本没怎么用过,但是`transient`关键字在java中却起到了不可或缺的地位!如果要说讲到,我觉得最可能出现的地方是IO流中对象流(也叫序列化流)的时候会讲到! 相信很多人都是直到自己碰到才会关心这个关键字,记得博主第一次碰到`transient`关键字是在阅读JDK源码的时候。在学习java的过程中`transient`关键字少见的原因其实离不开它的作用:`transient`关键字的主要作用就是让某些<font c

宜春 6万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Java中transient关键字的详细总结

一、概要介绍Java中的transient关键字,transient是短暂的意思。对于transient 修饰的成员变量,在类实例的序列化处理过程中会被忽略。 因此,transient变量不会贯穿对象的序列化和反序列化,生命周期仅存于调用者的内存中而不会写到磁盘里持久化。(1)序列化Java中对象的序列化指的是将对象转换成以字节序列的形式来表示,这些字节序列包含了对象的数据和信息,一个序列化后的对...

夏日清风 14万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

java transient 关键字_java中的transient关键字详解

前言说实话学了一段时间java的朋友对于transient这个关键字依旧很陌生基本没怎么用过,但是transient关键字在java中却起到了不可或缺的地位!如果要说讲到,我觉得最可能出现的地方是IO流中对象流(也叫序列化流)的时候会讲到!相信很多人都是直到自己碰到才会关心这个关键字,记得博主第一次碰到transient关键字是在阅读JDK源码的时候。在学习java的过程中transient关键字...

weixin_29375669的博客 874

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java中的transient关键字

关键字介绍 一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个的所有属性和方法都会自动序列化。但是有种情况是有些属性是不需要序列号的,所以就用到这个关键字。只需要实现Serilizable接口,将不需要序列化的属性前添加关键字transient,序列化对

Q 1万+

Java关键字——transient

java中的transient关键字详解

qq_35854212的博客 2910

JAVA transient 关键字详解

摘要:Java中的transient关键字用于标记成员变量不参与序列化过程,在对象序列化时跳过该字段,反序列化时赋默认值(0/null)。主要应用于保护敏感信息、优化性能和处理不可序列化对象。虽然默认不序列化transient字段,但可通过自定义writeObject/readObject方法手动控制其序列化行为。注意与static的区别,后者本身就不参与序列化。在分布式系统、缓存优化等领域有广泛应用,能有效避免数据泄露和不必要的存储开销。

onlymscn的博客 1320

Java中的关键字transient

一、初识transient关键字 这个关键字的作用:将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化。 二、深入分析transient关键字 1、transient底层实现原理是什么? java的serializationtion提供了一个非常棒的存储对象状态的机制,说白了serialization就是把对象的状态存储到磁盘上去,等需要的时候就可以再把它读出来使用。有些时候像银行卡号这些字段是不希望在网络上传输的,transient的作用时就是把这个字段的生命周期仅

京北游戏官方 1万+

java transient关键字_在Java中如何使用transient

Java语言的transient不像class、synchronized和其他熟悉的关键字那样众所周知,因而它会出现在一些面试题中。这篇文章我将为大家讲解transient。transient的用途Q:transient关键字能实现什么?A:当对象被序列化时(写入字节序列到目标文件)时,transient阻止实例中那些用此关键字声明的变量持久化;当对象被反序列化时(从源文件读取字节序列进行重构),...

weixin_39551462的博客 237

Java transient关键字的理解

transient [ˈtrænziənt] adj. 短暂的; 转瞬即逝的; 临时的 n 临时旅客; 瞬变现象; 候鸟; 1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属...

翎野君的博客 162

java transient关键字_Java中关键字transient解析

文章转载自如下出处:作者:酱油君原出处:非酱油藏经阁原文链接:非酱油藏经阁​www.nopassby.com在Java序列化机制中,transient这个关键字非常有用,本篇文章就来带解析一下transient关键字。1、transient关键字的定义定义:transient只能用来修饰成员变量(field),被transient修饰的成员变量不参与序列化过程。简析:Java中的对象如果想要在网络...

weixin_39611037的博客 168

java中的关键字transient

java中的关键字transient 先给出这篇文章的大致脉络 首先,介绍了transient的基本概念和基本用法、然后,介绍深入分析一下transient关键字,并介绍几个需要掌握的问题最后,来个总结 一、初识transient关键字 其实这个关键字的作用很好理解,就是简单的一句话:将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会被序列化。 概念也很好理解,下面使用代码去验证一下: 然后我们在Test中去验证一下: 从上面可以看出,在序列化SerializeUser

qq_45925937的博客 315

java关键字(1)transient

这个关键字的作用其实我在写java的序列化机制中曾经写过,不过那时候只是简单地认识,只要其简单的用法,没有深入的去分析。这篇文章就是去深入分析一下transient关键字。 先给出这篇文章的大致脉络 首先,介绍了transient的基本概念和基本用法 然后,介绍深入分析一下transient关键字,并介绍几个需要掌握的问题 最后,来个总结 一、初识transient关键字 其实这个关键字的作用...

冯冬冬的博客 3381

Java transient 关键字详解

通过重写和// 标准序列化// 手动序列化// 标准反序列化// 手动恢复安全防护:阻止敏感数据意外序列化存储优化:减少序列化数据大小状态管理:排除临时/可重建字段结合自定义序列化实现高级控制了解不同序列化框架的行为差异文档记录 transient 字段的特殊行为对敏感数据实施额外加密保护合理应用 transient 可以使 Java 序列化更安全、高效且可维护。

m0_75107803的博客 609
上一篇: String类型可以被继承吗,为什么
下一篇: springboot中本地测试相关,开启jsp页面热部署
code_feien
博客等级 码龄7年 71粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值