- 博客(13)
- 问答 (2)
- 收藏
- 关注
原创 dubbo采坑集锦:dubbo消费者端catch异常失败 及 ExceptionFilter分析
问题描述: 消费者端调用服务者端的接口,服务端抛出一个自定义异常,该异常继承了RuntimeException,但是消费者端Debug发现catch到的是RpcException,RpcExcetion为dubbo的异常,为什么服务提供者的返回的是自定义异常却变成了RpcException? 原因分析: 代码 1. 服务端代码 接口: public interface DubboExcepti...
2019-10-24 12:33:24
3055
原创 dubbo源码分析目录
step1 浅谈jdk-spi与dubbo-spi step2 dubbo-spi源码分析 step3 dubbo源码分析:服务暴露 step4 dubbo源码分析:服务引用 step5 dubbo源码分析:服务调用
2019-09-10 10:02:51
580
1
原创 guava-RateLimiter实现限流
@TOC 限流的几种方式 (1)信号量Semaphore:主要是限制代码块内线程执行数 (2)Redis计数器 (3)通过线程池的拒绝策略 (4)guava-RateLimiter 。。。 在这里主要讲解一下guava-RateLimiter实现的限流方式 限流的两种算法 令牌桶算法 令牌桶算法只限制放令牌匀速放(桶的最大量限制),不限制怎么取令牌,令牌取完了也就达到了限流的操作,拿到一个令牌才...
2019-08-26 17:29:08
1309
原创 dubbo源码分析:服务调用
文章目录1. 服务调用方式2. 服务消费方发送请求2.1. 发送请求2.2 请求数据编码3. 服务提供者端接受请求3.1. 请求数据解码3.2. 调用服务3.2.1. 线程派发模型3.2.2. 调用服务3.3. 服务提供方返回调用结果4. 服务消费方接收调用结果4.1. 响应数据解码 dubbo 服务调用过程比较复杂,包含众多步骤,比如发送请求、编解码、服务降级、过滤器链处理、序列化、线程派发以及...
2019-08-07 12:20:12
2053
原创 ReentrantLock源码分析:非公平锁与公平锁
1. AQS分析 ReentrantLock是基于AQS的,先来分析下AQS (1)AQS /** 头指针 */ private transient volatile Node head; /** 尾指针 */ private transient volatile Node tail; /** 表示资源的可用状态,每次线程加锁state会加1,通过cas来操作state,初始值为0 ...
2019-08-02 10:38:55
4568
原创 你真的了解dubbo配置优先级吗?
我们经常会遇到的一个问题是,多个地方设置timeout配置,到底以哪个配置为准?来看下边这张图,一目了然。其他配置属性同理:retries, loadbalance… dubbo配置的优先级: (1)方法 > 接口:方法级别的配置总是优于接口级别的配置,很显然,提供者端的方法配置优先级要高于消费者端的接口配置 (2)消费者 > 提供者 (3)全局配置优先级最低 ...
2019-08-01 11:21:24
7387
原创 dubbo源码分析:服务引用
服务引用的方式 (1)服务直连的方式引用服务 (2)基于注册中心引用服务 服务引用的入口 (1)饿汉式:spring容器启动时调用ReferenceBean#afterPropertiesSet()#getObject(),可以通过dubbo:reference 的 init=true开启饿汉式,默认为懒汉式 (2)懒汉式:默认为懒汉式,服务被注入到其他类中时引用,ReferenceBea...
2019-08-01 11:19:26
11541
1
转载 一套图 彻底明白了“时间复杂度”
https://blog.csdn.net/qq_40061421/article/details/84103264
2019-07-27 18:00:44
1047
原创 dubbo源码分析:服务暴露
服务暴露以一个demo为例: Provider: public interface ProviderExport { String providerExport(String name); } public class ProviderExportImpl implements ProviderExport { @Override public String pro...
2019-07-27 11:44:39
8225
原创 dubbo-spi源码分析
1.1. ExtensionLoader getExtensionLoader(Class type) /** * 根据扩展接口获取ExtensionLoader,一个扩充接口只会对应一个ExtensionLoader * 整体逻辑: * (1)校验扩展接口是否有@SPI注解 * (2)从缓存中获取与拓展接口对应的ExtensionLoader * (3)若缓存未命中,则创建一个新的实例...
2019-07-26 11:37:46
6611
1
原创 浅谈jdk-spi与dubbo-spi
关于SPI: 关于SPI的概念,此处不再过多撰述,一句话:接口的实现的发现机制 我们直接来看两个案例 1. jdk-spi示例: 定义一个接口:Animal public interface Animal { void say(); } 定义两个实现类 public class Cat implements Animal { @Override public void ...
2019-07-11 22:50:51
6999
1
原创 Disconnected from the target VM, address: '127.0.0.1:57362', transport: 'socket'
启动项目出现如下问题 启动失败但未报错。。。 原因分析 启动失败,理论上是应该会有日志的,突然想到可能是异步日志导致,主线程结束了,异步日志也无法打印了 解决 暂时禁用异步日志,再次启动,如下 ...
2019-05-22 17:25:04
11842
2
原创 Failed to process import candidates for configuration class [.........Application] .... AutoConfigu
这里写自定义目录标题问题:springboot启动时报如下错误原因分析解决方案 问题:springboot启动时报如下错误 Failed to process import candidates for configuration class […Application] … AutoConfigure cycle detected between TransactionAutoConfigur...
2019-05-16 11:56:55
64714
2
空空如也
关于hash_hmac("MD5", "aa=11&bb=2&c=lai")
2017-08-20
在java官网什么地方能查看到java运行时候的内存说明或图解说明
2017-05-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅