Java知识点收集(二)

一、Serializable的作用和SerializableUID的作用

Serializable 是一个Java接口(标记接口),用于表示一个类的实例可以被序列化为字节流并在网络或文件中进行传输或存储。当一个类实现了 Serializable 接口时,它可以被称为可序列化的类。可序列化的类可以通过将其实例转换为字节流来进行传输或存储,而反序列化则是将字节流重新转换为对象实例。

SerializableUID(Serializable Unique Identifier)是在使用 Serializable 接口进行对象序列化时的一个可选设置。它是一个静态变量,被用于唯一标识一个可序列化类的版本,以确保在序列化和反序列化过程中类的版本一致。在将一个可序列化的类序列化后,它的 SerializableUID 将与序列化数据一起存储。当尝试反序列化时,系统会比较存储的 SerializableUID 和当前类的 SerializableUID 是否匹配。如果匹配,则将反序列化成功,否则会抛出 InvalidClassException 异常。

二、Http协议与RPC协议

HTTP(Hypertext Transfer Protocol)协议和RPC(Remote Procedure Call)协议都是计算机网络中常用的通信协议,但在设计和用途上存在一些区别。HTTP协议是一种应用层协议,它主要用于在客户端和服务器之间传输超文本数据(如HTML、CSS、JavaScript等)。HTTP协议使用URL(Uniform Resource Locator)指定资源的地址,并使用请求-响应模型进行通信。客户端向服务器发送HTTP请求,服务器收到请求后进行处理,并返回相应的HTTP响应给客户端。HTTP协议使用TCP作为传输层协议进行数据的可靠传输。

RPC协议是一种通信协议,它用于实现分布式系统中不同节点之间的远程调用。RPC协议允许一个应用程序调用另一个应用程序中的函数或方法,就像本地调用一样,而不需要开发人员显式地处理底层的网络通信细节。

三、java反射以及它的优点和缺点

Java反射的优点:

  1. 动态性:反射使得程序可以在运行时动态地获取和操作类的信息,而不需要在编译时确定,这提供了更大的灵活性和适应性。

  2. 运行时类型检查:反射可以在运行时对类进行类型检查,从而避免了在编译时对类的硬编码检查,使得程序更具健壮性和扩展性。

  3. 动态代理:反射的特性使得程序可以动态地生成代理对象,从而实现AOP(面向切面编程)等特性,扩展了Java语言的能力。

Java反射的缺点:

  1. 性能影响:反射涉及到动态的方法调用、参数解析和字段访问,相比于直接使用编译时确定的类信息,反射通常会导致性能上的损失。通过反射来操作类的成员比直接调用成员方法要低效。

  2. 安全性问题:反射可以绕过Java的访问权限控制,可能导致潜在的安全隐患。使用反射时需要谨慎处理权限问题,确保程序的安全性。

  3. 代码可读性降低:反射的代码通常比直接使用编译时确定的类信息的代码更加复杂和冗长,可读性较低,增加了代码的维护难度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值