摘要:在上一次【https://www.cnblogs.com/webor2006/p/9248621.html】对线程上下文类加载器进行理论化的了解,这里回忆一下重点之处: 这里以JDBC的这种SPI场景用图来更具体的描述一下: 而根据这个理论: 很明显JDBC会去引用JDBCImpl的具体厂商的实现,
阅读全文
摘要:在上一次【https://www.cnblogs.com/webor2006/p/9246850.html】分析源码中发现有两处设置线程上下文类加载器的代码,如下: 因为它是非常重要的东东,所以这次专门对它进行主题展开,主要的作用为了改变委托双亲模式在某些场景不太适用或者是无法满足需求的,下面先写一
阅读全文
摘要:基于上一次【https://www.cnblogs.com/webor2006/p/9240898.html】Launcher的分析继续,上次分析到了这: 接着创建应用类加载器,其创建过程其扩展类加载器类似,如下: 这里有一个细节: 因为扩展类加载器是应用类加载器的父亲,所以没必要也记录扩展类加载器
阅读全文
摘要:基于上一次获取系统类加载器这块进行分析: 关于这个方法的javadoc在之前已经阅读过了,不过这里再来仔细阅读一下加深印象: 这里有一个非常重要的概念:上下文类加载器: 它的作用非常之大,在后面会详细进行学习,先有个印象。 接着来看一下它的具体实现: 再来看一下是如何初始化的: 所以接下来将焦点定位
阅读全文
摘要:平台特定的启动类加载器深入分析: 这里以上一次【https://www.cnblogs.com/webor2006/p/9157626.html】的这个程序作为学习的开端,如下: 运行结果: 可见不同的系统类加载器所加载的目录是不一样的,那如果换成用java命令来执行这个程序会有啥不同呢,先进入该字
阅读全文
摘要:类加载器命名空间总结: 类加载器的双亲委托模型的好处: 可以确保Java核心库【如JDK中rt.jar里面的类】的安全:所有的Java应用至少会引用java.lang.Object类,也就是说在运行期,java.lang.Object这个类会被加载到Java虚拟机中;如果这个加载过程是由Java应用
阅读全文
摘要:在上一次【https://www.cnblogs.com/webor2006/p/9157626.html】最后写了一个貌似没啥意义的程序,回顾一下: 其结果为true的原因并非是因为loader1和loader2都是MyTest16的实例哈,如果是这样理解的话说明对类的双亲委托机制就不太了解,这里
阅读全文
摘要:对于类加载器之前有这样一张图,回顾一下: 也就是不同的类加载器其加载的具体目录是不一样的,那能否通过代码将这些类加载器所加载的目录打印出来直观的感受一下?当然可以,下面就来尝试一下: 编译运行: 【注意】:因为我是在mac上运行的,所以目录与目录之间的间隔以“:”分隔。 其中可以看一下应用类加载器所
阅读全文
摘要:基于上一次【https://www.cnblogs.com/webor2006/p/9129149.html】的程序进一步进行修改: 编译运行: 此时咱们在设置的桌面路径中将MySample.class、MyCat.class文件拷进来,如下: 此时再次运行: 依然是由系统类加载器来加载,也很好理解
阅读全文
摘要:对于OkHttp的缓存策略其实就是在下一次请求的时候能节省更加的时间,从而可以更快的展示出数据,那在Okhttp如何使用缓存呢?其实很简单,如下: 配置一个Cache既可,其中接收两个参数:一个是缓存的文件,一个是缓存文件的最大大小,所以下面分析一下这个Cache类的一些细节: put方法【写入Re
阅读全文
摘要:在上一次【https://www.cnblogs.com/webor2006/p/9044535.html】已经学习了补间动画的使用了,今天来学习一下属性动画,用这来实现有个官方loading【https://github.com/webor2006/AVLoadingIndicatorView】效
阅读全文
摘要:在之前咱们都在研究自定义类加载器的一些东东,不过接一来的学习还会依托于之前咱们写的MyTest16这个自定义类加载器,这里先再回顾一下: 而对于之前咱们加载的类都是一个比较简单的类,如MyTest1: 但是在日常开发中可能常见的用法是方法里面会使用其它的类,那如果是这种情况类的加载的流程是一个什么情
阅读全文
摘要:对于友盟统计我想搞程序的应该无人不晓,其中对于里面用得最多的功能就是对线上的崩溃进行修复,而这些异常都是运行期的,如: 其实也就是可以对线程中出现了这种运行期异常是提供有一种捕获机制对其进行统一处理,所以这里来剖析一下其原理,先制造一个异常: 编译运行: 如果是在app中出现这种异常那直接整个app
阅读全文
摘要:这次做一个比较有意思的实验,我们知道当一个程序如果抛异常了其程序肯定会挂掉,那有木有可能在程序异常退出时能执行一段咱们自己的代码,比如说服务器在异常退出时需要做一些额外的资源清理,像这种场景就正好是这里有实验的,下面开始,因为这个实验用shell命令演示会比较方便,所以建议实验是在linux、mac
阅读全文
摘要:类的命名空间详解: 在上一次【https://www.cnblogs.com/webor2006/p/9108301.html】最后实验中有一个违背咱们理解的,这里回顾一下: 也就是说,"某一个类对应的class文件只能被加载一次",这是有一个大前提的,该前提就是"该类加载器必须是在同一个命名空间里
阅读全文