草庐IT

last_day

全部标签

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

day09-AOP-02

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

day28--Java泛型01

Java泛型011.泛型的理解和好处看一个需求:请编写程序,在ArrayList中添加三个Dog对象Dog对象含有name和age,并输出name和age(要求使用getXXX())先用传统的方法来解决--->引出泛型传统的方法:packageli.generic;importjava.util.ArrayList;@SuppressWarnings("all")publicclassIntroduce_{publicstaticvoidmain(String[]args){//用传统的方法来解决ArrayListarrayList=newArrayList();arrayList.add(n

day28--Java泛型01

Java泛型011.泛型的理解和好处看一个需求:请编写程序,在ArrayList中添加三个Dog对象Dog对象含有name和age,并输出name和age(要求使用getXXX())先用传统的方法来解决--->引出泛型传统的方法:packageli.generic;importjava.util.ArrayList;@SuppressWarnings("all")publicclassIntroduce_{publicstaticvoidmain(String[]args){//用传统的方法来解决ArrayListarrayList=newArrayList();arrayList.add(n

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

13|优雅关闭:如何避免服务停机带来的业务损失?我们在RPC架构下,需要考虑当服务重启时,如何做到让调用方系统不出问题。当服务提供方要上线时,一般是通过部署系统完成实例重启,在这个过程汇总,服务提供方不会事先告诉调用方哪些实例会被重启,从而让调用方切换流量。而对调用方来说,它也无法预测服务提供方哪些实例会重启,因此负载均衡还是有可能降正在重启的实例挑选出来,这样导致请求被分发到正在重启的服务实例中,造成调用方无法拿到正确的响应结果。在服务重启的时候,对于调用方来说,有以下2种情况:调用方发请求前,目标服务已经下线。对于调用方来说,跟目标节点的连接会断开,这时调用可以立刻感知到,并在其健康列表中

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

13|优雅关闭:如何避免服务停机带来的业务损失?我们在RPC架构下,需要考虑当服务重启时,如何做到让调用方系统不出问题。当服务提供方要上线时,一般是通过部署系统完成实例重启,在这个过程汇总,服务提供方不会事先告诉调用方哪些实例会被重启,从而让调用方切换流量。而对调用方来说,它也无法预测服务提供方哪些实例会重启,因此负载均衡还是有可能降正在重启的实例挑选出来,这样导致请求被分发到正在重启的服务实例中,造成调用方无法拿到正确的响应结果。在服务重启的时候,对于调用方来说,有以下2种情况:调用方发请求前,目标服务已经下线。对于调用方来说,跟目标节点的连接会断开,这时调用可以立刻感知到,并在其健康列表中