04|网络通信:RPC框架在网络通信上更倾向于哪种网络IO模型?网络通信在RPC调用中有什么作用?RPC是解决进程间通信的一种方式,一次RPC调用,本质就是服务消费者与服务提供者之间的一次网络信息交换的过程。服务调用者通过网络IO发送一条请求消息,服务提供者接收并解析,处理完相关的业务逻辑之后,再发送一条响应消息给服务调用者,服务调用者接收并解析响应消息,处理完相关的响应逻辑,一次RPC调用便结束了。我们可以说,网络通信是整个RPC调用流程的基础。有哪些常见的网络IO模型?常见的网络IO模型分为四种:同步阻塞IO(BIO)、同步非阻塞IO(NIO)、IO多路复用和异步非阻塞IO(AIO)。其中
Spring管理Bean-IOC-053.基于注解配置bean3.3自动装配基本说明:基于注解配置bean,也可以实现自动装配,使用的注解是:@AutoWired或者@Resource@AutoWired的规则说明(1)在IOC容器中查找待装配的组件的类型,如果有唯一的bean装配(按类型),则使用该bean装配(2)如果待装配的类型对应的bean在IOC容器中有多个,则使用待装配的属性的属性名作为id值进行查找,找到就装配,找不到就抛异常@Resource的规则说明(1)@Resource有两个属性比较重要,分别是name和typeSpring将@Resource注解的name属性解析为be
Spring管理Bean-IOC-053.基于注解配置bean3.3自动装配基本说明:基于注解配置bean,也可以实现自动装配,使用的注解是:@AutoWired或者@Resource@AutoWired的规则说明(1)在IOC容器中查找待装配的组件的类型,如果有唯一的bean装配(按类型),则使用该bean装配(2)如果待装配的类型对应的bean在IOC容器中有多个,则使用待装配的属性的属性名作为id值进行查找,找到就装配,找不到就抛异常@Resource的规则说明(1)@Resource有两个属性比较重要,分别是name和typeSpring将@Resource注解的name属性解析为be
07|架构设计:设计一个灵活的RPC框架RPC就是把拦截到的方法参数,转成可以在网络中传输的二进制,并保证在服务提供方能正确地还原出语义,最终实现像调用本地一样地调用远程的目的。RPC的本质是一个远程调用,需要通过网络来传输数据,我们一般采用TCP协议作为数据通信协议,为了屏蔽网络传输的复杂性,我们需要封装一个独立的数据传输模块来收发二进制数据,这个模块被称为传输模块。我们在调用方法时,方法的出入参数都是对象数据,我们需要将对象转换成二进制,即进行序列化操作,同时,我们还需要在方法调用参数的二进制数据后面增加“断句”符号来分隔出不同的请求,这个过程被称为协议封装。传输模块和协议封装都是为了保证
07|架构设计:设计一个灵活的RPC框架RPC就是把拦截到的方法参数,转成可以在网络中传输的二进制,并保证在服务提供方能正确地还原出语义,最终实现像调用本地一样地调用远程的目的。RPC的本质是一个远程调用,需要通过网络来传输数据,我们一般采用TCP协议作为数据通信协议,为了屏蔽网络传输的复杂性,我们需要封装一个独立的数据传输模块来收发二进制数据,这个模块被称为传输模块。我们在调用方法时,方法的出入参数都是对象数据,我们需要将对象转换成二进制,即进行序列化操作,同时,我们还需要在方法调用参数的二进制数据后面增加“断句”符号来分隔出不同的请求,这个过程被称为协议封装。传输模块和协议封装都是为了保证
AOP1.官方文档AOP讲解:下载的spring文件-->spring-framework-5.3.8/docs/reference/html/core.html#aopAOPAPIs:下载的spring文件-->spring-framework-5.3.8/docs/reference/html/core.html#aop-api2.动态代理2.1案例说明需求说明:有Vehicle(交通工具接口,有一个run方法),下面有两个实现类Car,Ship当运行Car对象的run()方法和Ship对象的run()方法时,输出如下内容,注意观察前后有统一的输出。请思考如何完成?2.2传统方式解决Veh
AOP1.官方文档AOP讲解:下载的spring文件-->spring-framework-5.3.8/docs/reference/html/core.html#aopAOPAPIs:下载的spring文件-->spring-framework-5.3.8/docs/reference/html/core.html#aop-api2.动态代理2.1案例说明需求说明:有Vehicle(交通工具接口,有一个run方法),下面有两个实现类Car,Ship当运行Car对象的run()方法和Ship对象的run()方法时,输出如下内容,注意观察前后有统一的输出。请思考如何完成?2.2传统方式解决Veh
Java泛型025.自定义泛型5.1自定义泛型类基本语法:class类名{//…表示可以有多个泛型成员}注意细节:普通成员可以使用泛型(属性、方法)使用泛型的数组不能初始化静态方法中不能使用类的泛型泛型类的类型,是在创建类的对象时确定的(因为创建对象时,需要指定确定类型)如果在创建对象时没有指定类型,默认为Object例子://Tiger后面有泛型,所以我们把Tiger称为自定义泛型类classTiger{//T,R,M是泛型的标识符,一般是单个的大写字母;泛型的标识符可以有多个Stringname;Rr;//普通成员可以使用泛型(属性、方法),这里是属性使用泛型Mm;Tt;//使用泛型的数组
Java泛型025.自定义泛型5.1自定义泛型类基本语法:class类名{//…表示可以有多个泛型成员}注意细节:普通成员可以使用泛型(属性、方法)使用泛型的数组不能初始化静态方法中不能使用类的泛型泛型类的类型,是在创建类的对象时确定的(因为创建对象时,需要指定确定类型)如果在创建对象时没有指定类型,默认为Object例子://Tiger后面有泛型,所以我们把Tiger称为自定义泛型类classTiger{//T,R,M是泛型的标识符,一般是单个的大写字母;泛型的标识符可以有多个Stringname;Rr;//普通成员可以使用泛型(属性、方法),这里是属性使用泛型Mm;Tt;//使用泛型的数组
08|服务发现:到底是要CP还是AP?我们为什么需要“服务发现”?从高可用的角度出发,在生产环境中,服务提供方通常会以集群的方式对外提供服务,集群中的IP地址随时可能发生变化,因此我们需要一本“通讯录”来及时获取对应的服务节点信息,维护“通讯录”以及或者节点信息的过程,我们称之为“服务发现”。服务发现包括2个核心模块:服务注册:在服务提供方启动的时候,将对外暴露的接口注册到注册中心中,注册中心将这个服务节点的IP和接口保存下来。服务订阅:在服务调用方启动的时候,去注册中心查找并订阅服务提供方的IP,然后缓存到本地,并用于后续远程调用。我们为什么不采用基于DNS的服务发现机制?我们来看一下DNS