简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
早期使用过 Eclipse 等 Java 编写的软件的同学可能比较熟悉,Eclipse 可以加载许多第三方的插件(或者叫扩展),这就是动态加载。这些插件大多是一些 Jar 包,而使用插件其实就是动态加载 Jar 包里的 Class 进行工作。这其实非常好理解,Java 代码都是写在 Class 里面的,程序运行在虚拟机上时,虚拟机需要把需要的 Class 加载进来才能创建实例对象并工作,而完成这一
类加载器(class loader)用来加载 Java 类到 Java 虚拟机中。一般来说,Java 虚拟机使用Java 类的方式如下:Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码,并转换成java.lang.Class类的一个实例。每个这样的实例用来表示一个 Java 类。通过
JVM,即Java虚拟机,是Java程序能跨平台无障碍运行的一个基础,我觉得更好的理解Java虚拟机有助于更加深刻的理解Java语言,虽然Java自身为我们提供了一套比较成熟完善的机制,包括垃圾回收机制,这让我们在开发中十分方便,甚至会忘记内存回收这件事,但是更深入的了解java的底层还是必不可少的。下面记录一下JVM的结构,之后也会分享更多关于JVM的学习。 收到JVM的结构
Java有自己的一套垃圾回收机制,为开发者省去了一大笔精力,这也是java相较于C++的一个很大的不同,探究一下垃圾回收机制是如何工作的和GC算法的原理。 一般来说清除垃圾要做一下两步,一.先检测垃圾 二.清除垃圾 先来说说如何检测垃圾,检测垃圾的常用算法有以下几种: 一.可达性分析算法 以根集(GC Root)对象为起始点进行搜索,
先来看一个java里一些主要容器的继承图: 然后分别解析一下上面几种容器底层的数据结构以及一些实现:1.ArrayList(非线程安全的)底层的数据结构其实就是数组,但是它比数组优秀的地方在于他是动态的,即不必像数组那样固定大小,那么他是如何实现这种数据结构是数组,但是给我们看起来确实不固定大小的呢?ArrayList 是通过将底层 Object 数组复制的
大部分Android开发应该都知道@JakeWharton 大神的ButterKnife注解库,使用这个库我们可以不用写很多无聊的findViewById()和setOnClickListener()等代码 ButterKnife项目的主页在这里:http://jakewharton.github.io/butterknife/ 简单介绍一下使用方法:public class Exampl