2018年1月10日
摘要: 了解4个概念:接口,实现类,wrapper,adaptive。 扩展是接口实现类被wrap之后的对象,adaptive扩展是动态生成的类(例如Dubbo$Adaptive类)。 dubbo框架为接口指定一个同名配置文件,文件中定义了实现类(包括 wrapper)。 以dubbo-2.5.2.jar/ 阅读全文
posted @ 2018-01-10 18:11 偶尔发呆 阅读(498) 评论(0) 推荐(0) 编辑
  2018年1月8日
摘要: 考虑这样一种情况,由于网络延时,consumer先抛出超时异常,一段时间后又收到了已经超时的响应,dubbo是怎么处理的? 拆分为3步看: 1. consumer的DubboResponseTimeoutScanTimer进行扫描 DubboResponseTimeoutScanTimer负责扫描响 阅读全文
posted @ 2018-01-08 12:24 偶尔发呆 阅读(2072) 评论(0) 推荐(0) 编辑
摘要: dubbo中的请求和响应是如何关联起来的呢? 每一个请求和响应共用同一个id。 consumer创建请求的调用栈: provider 创建响应: dubbo的响应: 请求-响应对示例: 阅读全文
posted @ 2018-01-08 10:13 偶尔发呆 阅读(957) 评论(0) 推荐(0) 编辑
  2018年1月5日
摘要: 标号用于控制循环执行流程: 多层循环,使用break可以直接退出for循环,使用continue直接开始下一轮外层循环。 阅读全文
posted @ 2018-01-05 16:59 偶尔发呆 阅读(258) 评论(0) 推荐(0) 编辑
  2018年1月4日
摘要: 1. 创建线程池 创建线程池的调用栈如下: SimpleDataStore把线程池存放在map中。 executor = (ExecutorService) ExtensionLoader.getExtensionLoader(ThreadPool.class).getAdaptiveExtensi 阅读全文
posted @ 2018-01-04 15:44 偶尔发呆 阅读(3427) 评论(0) 推荐(0) 编辑
摘要: https://stackoverflow.com/questions/8517121/java-what-is-the-difference-between-init-and-clinit# <init> is the (or one of the) constructor(s) for the 阅读全文
posted @ 2018-01-04 10:21 偶尔发呆 阅读(674) 评论(0) 推荐(0) 编辑
  2018年1月3日
摘要: 一般情况,consumer发送请求时,创建一个DefaultFuture对象,然后阻塞并等待响应。DefaultFuture类,封装了请求和响应: 1. consumer发送请求,阻塞等待响应。 调用代码: 调用代理对象的sayHello方法,代理类proxy0由javassist动态生成,代码大致 阅读全文
posted @ 2018-01-03 16:37 偶尔发呆 阅读(1052) 评论(0) 推荐(0) 编辑
  2017年12月27日
摘要: 在zk模板配置文件中有: 这个配置的作用就是:一个ip所对应的客户机,只能和zk服务器维持60个连接。 以NIOServerCnxnFactory为例: tips: 关心这个参数,是因为之前有人上线时,客户端连接数超过了默认值,导致无法建立连接。 阅读全文
posted @ 2017-12-27 10:41 偶尔发呆 阅读(3112) 评论(0) 推荐(0) 编辑
  2017年12月25日
摘要: 首先看一张zk官网上的图: zk为我们提供了一种类似于文件存储的树形数据结构,那么它是如何实现的呢? 先假定我们有一个map,以路径名作为键,以节点作为值,如下: “/” -> 节点1,“/app1” -> 节点2,“/app2” -> 节点3,“/app1/p_1” -> 节点4…… 同时,每个节 阅读全文
posted @ 2017-12-25 17:58 偶尔发呆 阅读(599) 评论(0) 推荐(0) 编辑
  2017年12月22日
摘要: 使用MessageFormat格式化数字,有一个很隐蔽的技巧点: 程序输出:3.14,3.1 上述代码修改一处: 程序输出: 3.14 ,3.1 "#.##"字符串的格式,会影响格式化的结果。 阅读全文
posted @ 2017-12-22 11:21 偶尔发呆 阅读(2331) 评论(0) 推荐(0) 编辑