深入理解Java的反射机制
本文转载自 深入理解Java的反射机制。版权归原作者所有,此处仅作个人学习备份。 在上篇文章《深入JVM–探索Java虚拟机的类加载机制》中我们深入探讨了JVM的类加载机制。我们知道,在实例化一个类时,如果这个类还没有被虚拟机加载,那么虚拟机会先执行类加载过程,将该类所对应的字节码读取到虚拟机,并生成一个与这个类对应的Class对象。而在类加载的过程中,由于有双亲委派机制的存在,虚拟机保...
本文转载自 深入理解Java的反射机制。版权归原作者所有,此处仅作个人学习备份。 在上篇文章《深入JVM–探索Java虚拟机的类加载机制》中我们深入探讨了JVM的类加载机制。我们知道,在实例化一个类时,如果这个类还没有被虚拟机加载,那么虚拟机会先执行类加载过程,将该类所对应的字节码读取到虚拟机,并生成一个与这个类对应的Class对象。而在类加载的过程中,由于有双亲委派机制的存在,虚拟机保...
本文转载自 探索Java虚拟机的类加载机制。版权归原作者所有,此处仅作个人学习备份。 我们知道Java程序在编译的过程中需要先经过javac将Java文件编译成字节码文件才能被虚拟机执行。而类加载指的就是将编译好的字节码(不仅仅指.class文件中的字节码,任意的字节码流都可以被读取到JVM)读取到JVM的内存中的过程。虚拟机在加载.class文件时会对数据进行校验、转换解析和初始化。最...
本文转载自 Java垃圾回收机制最全解析。版权归原作者所有,此处仅作个人学习备份。 提起Java的垃圾回收机制大家应该都有所了解,它不仅是面试的常客,也是Java体系中相当重要的一块知识。深入理解Java的GC机制,不仅有助于我们在开发中提高程序的性能,更有了在面试官面前炫(zhuang)技(X)的资本。本篇文章将全面且深入的分析JVM的垃圾回收机制,同时还会对常用的垃圾收集器(包括最前...
一、背景:为什么要组件化 随着项目逐渐扩展,业务功能越来越多,代码量越来越大,开发人员数量也越来越多。此过程中,你是否有过以下烦恼? 项目模块多且复杂,编译一次要 5 分钟甚至 10 分钟,太慢不能忍? 改了一行代码、只调了一点 UI,就要 run 整个项目,再忍受一次 10 分钟? 合代码经常发生冲突,很烦? 被人偷偷改了自己模块的代码,很不爽? 做一个需求,发现...
本文转载自 Android应用启动流程分析。版权归原作者所有,此处仅作个人学习备份。 1 前言 网上看过很多Activity启动过程的源码解析,很多文章会贴上一大段代码,然后从startActivity()函数开始深究整个源码的调用栈。个人感觉这类文章代码细节太多,反而容易迷失在源码调用之中,从而忽略了Activity启动过程的本质。所以本文就简单地对Activity启动过程进行描述,...
class Singleton private constructor(){ companion object { fun get() : Singleton{ return Holder.instance } private object Holder{ val instance = Singleton() } } }
本文转载自 一文搞懂如何自定义 OkHttp 拦截器(作者:TravelingLight_)。版权归原作者所有,此处仅作个人学习备份。 自定义拦截器的写法 官方文档 中介绍了如何自定义一个 Interceptor,代码如下: class HeaderInterceptor() : Interceptor { override fun intercept(chain: Inte...
本文转载自 关于HTTPS的那些事(作者:赌一包辣条)。版权归原作者所有,此处仅作个人学习备份。 一、HTTPS概述 1.什么是HTTPS? 我们看维基百科给HTTPS的定义: HTTPS(Hypertext Transfer Protocol Secure)是一种通过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但利用TLS来加密数据包。HTTPS开发的主...
本文转载自 Activity A启动Activity B它们的生命周期变化。版权归原作者所有,此处仅作个人学习备份。 当活动启动另一个活动的时候,应该考虑被启动的活动的可见性。 1. 当 Activity B 覆盖 A 导致 A 完全不可见时: 两个活动的生命周期变化为: //【1】部署程序 D/MainActivity: onCreate------A D/MainActivit...
本文转载自 Android进阶知识:ANR的定位与解决。版权归原作者所有,此处仅作个人学习备份。 1、前言 ANR对于Android开发者来说一定不会陌生,从刚开始学习Android时的一不注意就ANR,到后来知道主线程不能进行耗时操作注意到这点后,程序出现ANR的情况就大大减少了,甚至于消失了。那么真的是只要在主线程做耗时操作就会产生ANR吗?为什么在有时候明明觉得自己没在主线程做耗...