一只上进的程序猿
Android开发中,我们经常使用Message对象,却很少去探求其复用池的实现原理,是时候揭开它的神秘面纱了!
Demo的源码地址在 mini-rxjava, 有兴趣的可以下载源码来看. 从观察者模式说起 观察者模式,是我们在平时使用的比较多的一种设计模式.观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。
Android中位域的应用 在Android中,我们会经常用到或者看到以下这样的代码 : public class ExampleUnitTest { @Test public void gravityTest(LayoutParams...
对于泛型的原理和基础,可以参考笔者的上一篇文章java泛型,你想知道的一切 一个问题代码 观察以下代码 : public static void main(String[] args) { // 编译报错 // ...
简介 泛型是Java SE 1.5的新特性,泛型的本质是参数化类型 ( type parameters ),也就是说所操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法的创建中.
简介 Singleton UML 单例模式是应用最广的模式之一,它是为了确保某一个类在一个java虚拟机(进程)中有且只有一个实例存在. 带来的效益: 能够实现资源共享,避免由于资源操作时导致的性能或损耗.
简介 枚举是Java1.5引入的新特性,通过关键字enum来定义枚举类。枚举类是一种特殊类,它和普通类一样可以使用构造器、定义成员变量和方法,也能实现一个或多个接口,但枚举类不能继承其他类.
简介 final是java的关键字,可以声明成员变量、方法、类以及本地变量,它所表示的是“这部分是无法修改的”。不想被改变的原因有两个:效率、设计。 final作用于方法 final 修饰方法,则表明该方法不能被重写(override),所以对于 final 方法使用的第一个原因是针对设计的,进行方法锁定,以防止任何子类来对它的修改.
在开始讲volatile之前,我们需要对以下的内容有所了解. java 内存模型(JMM) 在java中,java堆内存是存在数据共享的,这些共享数据的通信就是通过java内存模型(JMM)来控制的.
Binder简介 Binder简介 Binder驱动 binder使用内存映射(mmap)来实现进程间传递数据,比较传统的进程间通信.
任务栈 android任务栈又称为Task,它是一个栈结构,具有后进先出的特性,用于存放我们的Activity组件。 我们每次打开一个新的Activity或者退出当前Activity都会在一个称为任务栈的结构中添加或者减少一个Activity组件,因此一个任务栈包含了一个activity的集合, android系统可以通过Task有序地管理每个activity,并决定哪个Activity与用户进行交互:只有在任务栈栈顶的activity才可以跟用户进行交互。
典型情况下的生命周期分析 Activity生命周期 activity 第一次启动 : onCreate -> onStart -> onResume 用户打开新activity,原activity的过程 : onPause -> onStop.
java集合 fail-fast机制 在java集合类中,使用modCount来检查数组的状态. 当在迭代集合的时候,(通常会实现 iterator()方法来获取迭代对象,或者 foreach), 集合里面的数据,在其他地方被修改了,这个时候 modCount就会被修改,与迭代过程的modCount不一致.
预备知识 原码 : 符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。 反码 : 正数的反码是其本身;负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。
Java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.根据 中的规定,将内存区域划分为 程序计数器(Program Counter Register),虚拟机栈(VM Stack),本地方法栈(Native Method Stack),方法区(Method Area)和堆(Heap)五大区域.