Dubbo consumer代理创建流程
开篇
这篇文章目的是为了将consumer在引用producer的过程中创建代理的细节。
Reference创建代理过程
public class ReferenceConfig<T> extends AbstractReferenceConfig {
private T creat...
如何使用Arthas提高日常开发效率?
1. Arthas有什么功能,怎么用,请看:Arthas使用手册
2. Arthas命令比较复杂,一个帮助生成命令的IDEA插件:arthas idea plugin 使用文档
3. 基于Arthas实现的简单好用的热部署插件:ArthasHotSwap
Arthas 实战,助你解决同名类依赖冲突问题(上)
上篇文章『程序员需要了解依赖冲突的原因以及解决办法』中,阿粉分析 Maven 依赖冲突分为两类:
项目同一依赖应用,存在多版本,每个版本同一个类,可能存在差异。
项目不同依赖应用,存在包名,类名完全一样的类。
第二种情况,往往是这个场景,本地/测试环境运行的都是好好的,上线之后测试就是不行。这其实与 JVM 类加载有关,本地/测试环境加载正确类,而生产环境加载错的类,为什么会这样?
主要有两个原因:
同一个类只会被加载器加载一次
不同环境,类的加载顺序不同
动态修改LOGGER日志级别
大多数情况下,我们会在打印日志时定义日志的LOGGER级别,用来控制输出的信息范围。
一方面,过多的输出会影响查看日志的效率,另一方面,过少的日志让问题定位变得困难。
但当线上出现问题时,线上容器通常定义在info级别,发生一些疑难问题时,光靠info级别的日志很难定位问题。
一个典型的场景:在一些需要打印MySQL语句的场景,如果你正在使用MyBatis框架,由于MyBaits中SQL语句是DEBUG级别的信息,通常在线上容器就没法看到。