learn and grow up

learn and grow up

学无止境

hikari中用到的SPI思想
写在前面​ 之前文章也说到了SPI最常见的就是JDBC,刚好现在用的就是springboot中的hikari,来看看他是怎么运用SPI思想加载特定的数据库驱动的。 正文 第一次看hikari源码,可以有这么个思路来跟踪源码: ​ ①,找到我们最熟悉的配置中心里配置的DataSourceType,一步找到数据源,②然后找到数据源里的getConnection方法。③并且找到类里的driveClass属性,④找到它的set方法,打上断点,⑤启动项目,开始跟踪吧~,如下图 继续: 断点启动,跟踪调用栈可以看到springboot初始化配置hikari的地方 12345...
mac下xcode调试openJDK
写在前面​ 编译完成自己的openJDK,肯定要放在实际应用中,这篇文章就记录如何用xcode进行自己openJDK的调试。 示例过程 1、编写HelloWord.java 2、编译成class文件 3、为方便调试,将class文件拷贝到openJDK的jdk目录,如下 /build/macosx-x86_64-server-slowdebug 4、打开xcode创建一个项目,然后选择macOS,创建一个命令行项目,如图: 创建完成后,删除自动生成的文件,并把openjdk的导入进来: 5、编辑Scheme ​ Product -> Scheme ->...
mac下编译openjdk14u36
写在前面​ 年初自己在windows上编译了openjdk8,花费了好几天才成功。前几个月换到mac上,所有的东西都不能用,感到很可惜,所以自己只能重新编译一次。 ​ 幸好mac上编译openjdk相对于windows方便很多。不需要安装那么多插件,建议大家在Mac可以直接按照doc/build.md里的指引进行操作即可,唯一需要注意的就是各个工具版本就好。 ​ 本机各项环境配置如下: ​ ps:如果想编译旧版本的openjdk,前几天尝试了下,会报 找不到#include 头文件,查了很久,是因为链接时会找不到libstdc++,...
SPI是否破坏了双亲委派?
写在前面​ 之前看很多文章讲到class加载的双亲委派机制,百分之九十概率会提到SPI且说SPI破坏了双亲委派机制,之前也只是糊里糊涂的觉得是这么个回事,但是最近在看jvm。回过头来看,自己觉得SPI其实并没有破坏双亲委派。 双亲委派 含义:如果一个类加载器收到了加载某个类的请求,则该类加载器并不会去加载该类,而是把这个请求委派给父类加载器,每一个层次的类加载器都是如此,因此所有的类加载请求最终都会传送到顶端的启动类加载器;只有当父类加载器在其搜索范围内无法找到所需的类,并将该结果反馈给子类加载器,子类加载器会尝试去自己加载。 ​ 这里有几个流程要注意一下: 子类先委托父...
通过字节码简单解析i++和++i的区别
写在前面最近闲暇时间在研究jvm虚拟机原理,所以把日常看到的、学习到的记录下来,这篇文章比较简单,主要是基于上篇文章简单了解下i++和++i的区别 实例直接上代码 12345678910111213141516171819202122232425262728293031323334353637383940414243444546//sourcepublic int iinc(){ return a++; } public int inci(){ return ++a; }//classpublic in...
class文件简单解析之二
写在前面最近闲暇时间在研究jvm虚拟机原理,所以把日常看到的、学习到的记录下来,这篇文章主要是讲基础的Class文件的查看和解析 会持续更新,接上文 实例见注释 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108...
class文件简单解析
写在前面最近闲暇时间在研究jvm虚拟机原理,所以把日常看到的、学习到的记录下来,这篇文章主要是讲基础的Class文件的查看和解析 会持续更新 概念Class文件是经过JDK中javac工具编译后的一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件之中,中间没有添加任何分隔符.如何查看编译后的Class文件?推荐两种不需要安装任何额外工具的查看方式.在IDE中打开.class文件,会被内置的反编译插件反编译,还原成java类文件,既不能起到查看.class文件的目的,也不符合不安装额外工具的要求. 这里使用javap命令对class文件查看 对于clas...
自己写基于注解的参数级统一数据权限组件
写在前面接上一篇 代码片段废话不多说,上代码片段 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354/** * 随便取一个拦截实现类来展示 * @author yyt */@Component@Slf4jpublic class ProjectDataAuthHandle extends DataAuthAbstractHandle { @Override protected Set<DataAuthDomain&...
解析springBean类的注解引发的一系列如AOP|cglib代理等问题四
写在前面接上一篇,补充了第一篇最后提出解决方案中第三点的疑惑 疑惑&解答经过研究发现果然是可以对cglib的对象进行反射获取到代理的对象,如下图 所以写了个简单的工具类,废话不多说,直接上代码: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697/** * 获取b...
avatar
styytNOTstop
Knowledge has no limit.
FRIENDS
liwei