草庐IT

day07-Spring管理Bean-IOC-05

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

《RPC实战与核心原理》学习笔记Day6

07|架构设计:设计一个灵活的RPC框架RPC就是把拦截到的方法参数,转成可以在网络中传输的二进制,并保证在服务提供方能正确地还原出语义,最终实现像调用本地一样地调用远程的目的。RPC的本质是一个远程调用,需要通过网络来传输数据,我们一般采用TCP协议作为数据通信协议,为了屏蔽网络传输的复杂性,我们需要封装一个独立的数据传输模块来收发二进制数据,这个模块被称为传输模块。我们在调用方法时,方法的出入参数都是对象数据,我们需要将对象转换成二进制,即进行序列化操作,同时,我们还需要在方法调用参数的二进制数据后面增加“断句”符号来分隔出不同的请求,这个过程被称为协议封装。传输模块和协议封装都是为了保证

《RPC实战与核心原理》学习笔记Day6

07|架构设计:设计一个灵活的RPC框架RPC就是把拦截到的方法参数,转成可以在网络中传输的二进制,并保证在服务提供方能正确地还原出语义,最终实现像调用本地一样地调用远程的目的。RPC的本质是一个远程调用,需要通过网络来传输数据,我们一般采用TCP协议作为数据通信协议,为了屏蔽网络传输的复杂性,我们需要封装一个独立的数据传输模块来收发二进制数据,这个模块被称为传输模块。我们在调用方法时,方法的出入参数都是对象数据,我们需要将对象转换成二进制,即进行序列化操作,同时,我们还需要在方法调用参数的二进制数据后面增加“断句”符号来分隔出不同的请求,这个过程被称为协议封装。传输模块和协议封装都是为了保证

day08-AOP-01

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

day08-AOP-01

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

day29--Java泛型02

Java泛型025.自定义泛型5.1自定义泛型类基本语法:class类名{//…表示可以有多个泛型成员}注意细节:普通成员可以使用泛型(属性、方法)使用泛型的数组不能初始化静态方法中不能使用类的泛型泛型类的类型,是在创建类的对象时确定的(因为创建对象时,需要指定确定类型)如果在创建对象时没有指定类型,默认为Object例子://Tiger后面有泛型,所以我们把Tiger称为自定义泛型类classTiger{//T,R,M是泛型的标识符,一般是单个的大写字母;泛型的标识符可以有多个Stringname;Rr;//普通成员可以使用泛型(属性、方法),这里是属性使用泛型Mm;Tt;//使用泛型的数组

day29--Java泛型02

Java泛型025.自定义泛型5.1自定义泛型类基本语法:class类名{//…表示可以有多个泛型成员}注意细节:普通成员可以使用泛型(属性、方法)使用泛型的数组不能初始化静态方法中不能使用类的泛型泛型类的类型,是在创建类的对象时确定的(因为创建对象时,需要指定确定类型)如果在创建对象时没有指定类型,默认为Object例子://Tiger后面有泛型,所以我们把Tiger称为自定义泛型类classTiger{//T,R,M是泛型的标识符,一般是单个的大写字母;泛型的标识符可以有多个Stringname;Rr;//普通成员可以使用泛型(属性、方法),这里是属性使用泛型Mm;Tt;//使用泛型的数组

《RPC实战与核心原理》学习笔记Day7

08|服务发现:到底是要CP还是AP?我们为什么需要“服务发现”?从高可用的角度出发,在生产环境中,服务提供方通常会以集群的方式对外提供服务,集群中的IP地址随时可能发生变化,因此我们需要一本“通讯录”来及时获取对应的服务节点信息,维护“通讯录”以及或者节点信息的过程,我们称之为“服务发现”。服务发现包括2个核心模块:服务注册:在服务提供方启动的时候,将对外暴露的接口注册到注册中心中,注册中心将这个服务节点的IP和接口保存下来。服务订阅:在服务调用方启动的时候,去注册中心查找并订阅服务提供方的IP,然后缓存到本地,并用于后续远程调用。我们为什么不采用基于DNS的服务发现机制?我们来看一下DNS

《RPC实战与核心原理》学习笔记Day7

08|服务发现:到底是要CP还是AP?我们为什么需要“服务发现”?从高可用的角度出发,在生产环境中,服务提供方通常会以集群的方式对外提供服务,集群中的IP地址随时可能发生变化,因此我们需要一本“通讯录”来及时获取对应的服务节点信息,维护“通讯录”以及或者节点信息的过程,我们称之为“服务发现”。服务发现包括2个核心模块:服务注册:在服务提供方启动的时候,将对外暴露的接口注册到注册中心中,注册中心将这个服务节点的IP和接口保存下来。服务订阅:在服务调用方启动的时候,去注册中心查找并订阅服务提供方的IP,然后缓存到本地,并用于后续远程调用。我们为什么不采用基于DNS的服务发现机制?我们来看一下DNS

day09-AOP-02

AOP-024.问题提出在上一篇的MyProxyProvider类中,我们的输出语句功能比较弱,在实际开发中,我们希望是以一个方法的形式,嵌入到真正执行的目标方法前,怎么办?1.使用土方法解决需求分析:使用土方法解决前面的问题,后面使用spring的aop组件完成改进MyProxyProvider:主要是对前置/返回/异常/最终通知的代码进行封装,封装到不同的方法中进行调用。packagecom.li.aop.proxy3;importjava.lang.reflect.InvocationHandler;importjava.lang.reflect.Method;importjava.la