欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术的推送!
在我后台回复 「资料」 可领取
编程高频电子书
!在我后台回复「面试」可领取
硬核面试笔记
!文章导读地址:点击查看文章导读!
感谢你的关注!
最新 Dubbo3 深入理解原理系列
Dubbo 源码中的一些小技巧
快速判断端口是否被占用
Dubbo 在暴露应用元数据服务的时候,有可能服务默认端口会被占用,那么就需要判断默认端口是否被占用,如果被占用了就换一个端口
那么判断端口占用其实就是在这个端口上创建一个 Socket 连接,如果失败抛出异常了,说明这个端口被占用:
java
int port = 20880;
while (true) {
try (ServerSocket isBusy = new ServerSocket(port)) {
// ...
} catch (IOException e) {
// 抛出异常说明端口被占用,再试试下一个端口
port += 1;
continue;
}
}
transient 关键字使用
Dubbo 中服务暴露的时候需要向注册中心放一些信息,通过 Netty 将数据信息传输到注册中心进行注册
在 Java 中一般是使用一个类来存放这些信息的,但是有些字段只是在 Dubbo 内部使用,而不需要放到注册中心中去,这时可以使用 transient 关键里来不对这些字段进行序列化
要将数据传给注册中心都是需要对数据进行序列化的,我们就可以在序列化的时候通过 transient 关键字跳过那些不需要注册的数据
java
public class User {
private String name;
// 不对 password 进行序列化
private transient String password;
}
因此也就不会通过 Netty 传输到注册中心了