3.JAVA反射和泛型
1.什么是 Java 泛型?它有什么作用?
Java 泛型是一种允许在类、接口和方法中使用类型参数的机制。泛型的作用是使代码更加通用,避免了类型转换的麻烦,同时增强了类型安全性。泛型在编译时进行类型检查,避免了运行时的 ClassCastException(类型转换异常)。
2.什么是 Java 反射?它的作用是什么?
Java 反射(Reflection)是 Java 提供的一种强大机制,可以在运行时动态地查询和操作类的结构信息,包括类的方法、字段、构造方法等。反射可以用来绕过 Java 的访问控制检查,动态加载类,甚至实例化对象。
4.Socket
1.什么是 Socket?它是如何工作的?
Socket 是一种提供网络通信的机制,是应用层与传输层之间的接口,用于实现不同计算机之间的数据交换。它使得应用程序能够在网络上发送和接收数据。通过 Socket,应用程序可以通过网络与其他应用程序进行通信,无论它们是否运行在同一台机器上,或者是否处于不同的网络环境中。
Socket 基本的工作流程大致分为以下几个步骤:
-
服务器端
服务器通过
ServerSocket
类监听一个指定端口,等待客户端的连接请求。一旦客户端发起连接请求,服务器通过
accept()
方法接受连接,并创建一个新的Socket
对象与客户端进行通信。 -
客户端
客户端通过
Socket
类与服务器建立连接,指定服务器的 IP 地址和端口号。 -
数据通信
一旦连接建立,客户端和服务器就可以通过输入输出流(
InputStream
、OutputStream
)进行数据交换。 -
关闭连接
通信完成后,客户端和服务器都可以通过
close()
方法关闭连接。
5.ZoeKeeper
ZooKeeper 是一个开源的分布式协调服务,它用于分布式应用程序中进行协调、管理配置、同步服务等任务。
ZooKeeper 的工作原理
ZooKeeper 是通过一个集群来实现高可用和一致性的,通常由多个节点(Zookeeper 节点)组成,形成一个主从结构。ZooKeeper 依赖于一种名为 ZAB (Zookeeper Atomic Broadcast) 的协议来确保一致性和可靠性。
ZooKeeper 架构
-
Leader(主节点):ZooKeeper 集群中的一个节点被选举为 Leader,它负责处理所有的写请求。Leader 会向所有 Follower 节点同步数据,并保证数据一致性。
-
Follower(跟随节点):Follower 节点响应客户端的读请求,并将写请求转发给 Leader。Follower 节点复制 Leader 节点的日志,以保持一致性。
-
Observer(观察者节点):Observer 节点不参与投票,它只负责提供服务,响应客户端的读取请求,减轻主从节点的压力。它与 Follower 类似,但不参与集群的选举过程。