摘要: 通过spi扩展加载的时候,都是通过extensionloader来得到extension的,比如获得一个exchanger: 那么就是先拿到自己的extensionloader,然后利用这个loder去拿到extent-name对应的具体的扩展实例。 对于每一个extensionloader来说,除 阅读全文
posted @ 2019-01-06 15:54 notlate 阅读(1692) 评论(0) 推荐(0) 编辑
摘要: 在url里面指定某个参数方法的第几个参数是一个callback,也就是说这个实参是一个callback,虽然消费者把这个callback实例传给了提供者,但是提供者实际本地没有这个callback实例,提供者只能继续远程调用消费者这个callback拿到结果。 比如消费者和提供者都在url里面指定  阅读全文
posted @ 2019-01-06 14:07 notlate 阅读(1395) 评论(0) 推荐(0) 编辑
摘要: ExchangeClient主要有两种实现: HeaderExchangeClient和LazyConnectExchangeClient,前者是正常使用的对于后者如果我们在url指定使用的话,那么refer一个service的时候,不会建立server的transport层面的connect,而是 阅读全文
posted @ 2019-01-06 13:48 notlate 阅读(1318) 评论(0) 推荐(0) 编辑
摘要: public boolean isAllowable() { long now = System.currentTimeMillis(); if (now > lastResetTime + interval) { token.set(rate); lastResetTime = now; } in 阅读全文
posted @ 2019-01-06 13:42 notlate 阅读(1698) 评论(0) 推荐(0) 编辑
摘要: server和client都是以下方法得到的,Exchanger这个接口只有这么一个实现,将来可能其他更加复杂获得server和cliet方式,以下这种是目前唯一的 public class HeaderExchanger implements Exchanger { public static f 阅读全文
posted @ 2019-01-01 16:03 notlate 阅读(480) 评论(0) 推荐(0) 编辑
摘要: 根据注释,shutdown方法只是用来停止接收新的task,但是不能保证老的task是否已经停止。如果抛出SecurityException,那么说明调用者是不能直接关闭这个线程池的。 如果要确保老的任务也停止的话,那么需要调用awaitTermination阻塞等待关闭的结果。 如果返回结果是fa 阅读全文
posted @ 2019-01-01 14:58 notlate 阅读(664) 评论(0) 推荐(0) 编辑
摘要: TCP层面有自带的keep-alive,通过参数指定可以直接用,但是这种只能检测一个连接是否ok,如果一个系统连接可用,但是CPU高、IO阻塞无法返回response的话,那么这种检测属于没用的。 因此可以看到dubbo有自带的应用层心跳机制,可以做额外的包括future清理等业务处理。 另外对于h 阅读全文
posted @ 2018-12-30 20:32 notlate 阅读(219) 评论(0) 推荐(0) 编辑
摘要: close wait是被动关闭那方,time wait是主动关闭连接那方。 四次握手第三次后,也就是主动关闭连接的那方,收到被动关闭那方的fin后,自己直接进入time-wait状态,然后发一个ack给被动那方,经过2*msl时间无论如何都会直接关闭。可以保证对方重发过来的fin消息可以顺利收到,而 阅读全文
posted @ 2018-12-30 18:12 notlate 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 内存申请和内存使用是一回事吗?内存申请是对应参数overcommit,使用是对应avalable。sysctl -a 里面overcommit的参数,2表示申请以后哪怕你不用,别人也不能用。一般用0,表示你申请了,但是没用,那么别人可以抢过来用。 类加载过程会有死锁吗?有,类加载、初始化调用cini 阅读全文
posted @ 2018-12-23 17:23 notlate 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 两个用途一直是泛化服务,一种是泛化引用。前者是为了provider省事,后者是消费者省事。先介绍泛化服务怎么做到的: 比如提供者想省事,虽然提供了10个方法,但是不想在接口里面写十个方法,也就不用给这十个方法做函数声明、参数声明了。直接通过: 也就是通过method不同,直接返回不同处理结果,隐藏了 阅读全文
posted @ 2018-12-16 20:41 notlate 阅读(5973) 评论(0) 推荐(0) 编辑