![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
rain_zhao_0102
这个作者很懒,什么都没留下…
展开
-
java ServiceLoader和spi机制
spispi(Service Provider Interface)是一种服务发现机制。可以实现这样一种机制。由框架定义好接口,其他拓展包或者程序实现这个了这个接口后,可以通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类。例子新建一个模块,定义接口:HelloServicepublic interface HelloService { String sayHello();}新建另外一个模块,实现接口:ChineseHell原创 2020-06-03 22:33:51 · 244 阅读 · 0 评论 -
java ClassLoader源码剖析和双亲委派模型实现
ClassLoader是做什么的?一个类的生命周期取决于它Class对象的生命周期,经历加载、连接、初始化、使用、和卸载五个阶段。ClassLoader负责将.class文件中的二进制数据加载到内存中,放到jvm的方法区中。什么是双亲委派模型一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行,如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的启动类加载器,如果父类加载器可以完成类加载任务,就成功返回,倘若父类加载器无法完成此加载原创 2020-05-13 22:52:09 · 228 阅读 · 0 评论 -
idea 查看sun包下源码
前言最近想研究下jdk的ClassLoader。发现jdk 1.8下没有包含sun.*的源码。所以在idea中打开sun.*下的类,都只能查看通过反编译得到的代码,由于缺少相应的注释,且某些变量变成了val1,val2等,可读性变得很差,给源码的学习效率造成影响。我们可以通过引入外部的源码文件依赖,使得idea在打开sun.*包下的类时,可以找到并打开对应的源码下载OpenJDK源码到本地从github上下载OpenJDK源码:git clone https://github.com/openjd原创 2020-05-10 20:57:32 · 1793 阅读 · 0 评论 -
proto3解决使用JsonFormat转化含有Any类型的对象时报错InvalidProtocolBufferException: Cannot find type for url
使用protobuf的过程中有时需要将proto对象转成json对象方便阅读。谷歌提供了JsonFormat类提供json和proto之前的转化操作。如果proto对象含有Any类型的时候。转化会报错:om.google.protobuf.InvalidProtocolBufferException: Cannot find type for url: type.googleapis.com/...原创 2020-03-07 17:07:21 · 3427 阅读 · 0 评论 -
protobuf 笔记
文档proto语法java apidemo代码proto3首行加上syntax = “proto3”;Assigning Field Numbersgoogle保留字段 19000 through 19999也可以用reserve设置保留字段(去掉之前的参数,保留不用,怕用旧版本的proto文件会出问题)Specifying Field Rulessingular:.? 0次...原创 2020-03-07 12:25:19 · 367 阅读 · 0 评论 -
Java for(;;)和while(true)的区别
前言今天看netty的源码,发现netty写无限循环喜欢用for(; ; ),例如io.netty.channel.nio.NioEventLoop里run方法的实现: protected void run() { for (;;) { try { try { switch (...原创 2020-02-25 22:11:17 · 512 阅读 · 0 评论