摘要:
1.先看入口在哪里,我们加载自定义的扩展都会写这行代码,那么就从分析ExtensionLoader开始了 ExtensionLoader.getExtensionLoader(XXX.class).getExtension("diyExtension"); 1.1 getExtensionLoade 阅读全文
摘要:
1.新建个 #接口 package org.example; public interface LiaoYangService { public void say(); } #实现类 package org.example; public class LiaoYangServiceImpl impl 阅读全文
摘要:
恢复内容开始 起点 ① debug由此开始 扩展类是放在一个map缓存里的,先看缓存有没有,没有就创建,然后放到map 再看①处的代码,进入getExtension 恢复内容结束 阅读全文
摘要:
1.几个简单的思维可以组合,你很容易看懂,但是思维模块直接在进行组合,你就看着费力了,原因是你没看懂他分为几个思维模块,思维模块之间是怎么组合的。就相当于高数的复合函数,函数套函数,实质上还是原来那点东西,只要你看懂基本的 ,其实你都能看懂。但是呢,你首先得有拆分思维模块的意识,理清思维模块的意识和 阅读全文
摘要:
spi是jdk内置功能,dubbo也用了spi机制,我目前觉着,说白了就是多态思想,我定义个接口 ,这个是规范,具体实现你们来整,我不管。 spi 简单实用案例 先定一个规范发布项目: 代码: package com.liaoyang; public interface DriverInteface 阅读全文
摘要:
服务端: 先在服务端写接口以及接口实现类: package com.gupao.dubbo; public interface GPDubboService { public String sayHello(String msg); } package com.gupao.dubbo; public 阅读全文
摘要:
解压zookeeper-3.3.3.tar文件,总是报错: tar: Error is not recoverable: exiting now 后来试了网上一通方法 结果是文件名错了 zookeeper-3.3.3.tar.gz 略尴尬,怎么避免这种坑爹问题出现?????????????????? 阅读全文
摘要:
示例背景:现有addUser方法,我们用动态代理给该方法增加校验:添加用户时姓名长度少于2报错。 1.实体类 package com.example.xiangxue.demo.proxy.jdkproxy.CGLBproxy; public class User { public String n 阅读全文
摘要:
1.建立实体User package com.example.xiangxue.demo.proxy.jdkproxy; public class User { public String name; public String getName() { return name; } public v 阅读全文