【笔记四】编译插桩操纵字节码,实现不可能完成的任务 根据之前学习的class 字节码文件的解析,接下来在此基础上进行一些更深入的操作,来加深对 class 字节码文件的理解。 相信做过 Android 开发的工程师大多都遇到过这种需求: 记录每一个页面的打开和关闭事件,并通过各种 Data...

【笔记三】字节码层面分析 class 文件结构 1. class 的来龙去脉 Java 能够实现“一次编译,到处运行”,这其中 class 文件要占大部分功劳;为了让 Java 具有良好的跨平台能力,Java 独具匠心的提供了一种可以在所有平台上都能使用的一种中间代码—字节码类文...

【笔记二】GC 回收机制和分代回收策略 垃圾回收(Garbage Collection,简写为: GC)是 Java 开发者最关注的一块知识点。Java 语言开发者比 C 语言开发者幸福的地方就在于,不需要手动释放对象的内存,JVM 中的垃圾回收器(Garbage Collector)会为我...

【笔记一】Java程序运行时,内存是如何分配的 Java 虚拟机在执行Java 程序的过程中,会把它所管理的内存划分为不同的数据区域;主要分为:程序计数器、虚拟机栈、本地方法栈、堆、方法区。 下图描述一个 HelloWord.java 文件被加载到内存的过程: HelloWord.java...

【并发编程】线程基础 一. 实现线程的方式 1. 为何说只有一种实现线程的方式 1.1 常见的实现线程的方式 1.1.1 继承Thread类 继承 Thread 类,并重写其中的 run() 方法。 public class DemoThread extends Thread &#1...

Glide-4.11.0 浅析

今天我们来阅读一下Glide的源码,了解一下Glide 加载图标的原理,我们今天阅读的Glide源码是Glide:4.11.0版本的,是当前最新版本

调整数组顺序使奇数位于偶数前面

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。