Android GUI架构之MVC模式
摘要:1. Android UI框架和其他Java UI框架一样,Android UI框架也是单线程和事件驱动的,采用MVC模式进行组织。2. MVC模式M:Model,是应用的核心,也就是应用真正想做的事情。V:View,主要负责渲染界面。整个应用程序界面中的所有视图对象,都是通过一颗对象树来组织的。这...
阅读全文
工具运行过程中,CPU占用过高的分析定位
摘要:之前使用Java Swing开发了一款设备档案收集工具。支持多台设备同时收集,每个设备使用一个线程。在同时收集多台设备信息时,发现CPU占用率居然达到了97%,而且高居不下。显然这样的性能是令人无法忍受的。我们知道,通过jdk自带的工具jvisualvm可以查看每个线程的执行情况,但就是无法分析每个...
阅读全文
JDK源码解读之toUnsignedString
摘要:我们知道,所有整数都是通过二进制编码的形式存储在内存中的。比如32位的整数,最高位是符号位,0代表正数,1代表负数。那么怎么才能够将整数的二进制编码形式打印出来呢?Integer类提供了一个公有静态方法toBinaryString能够达到这一目的。我们来看看这段源码:public static St...
阅读全文
JVM内存区域详解
摘要:1. 程序计数器现在多线程越来越普遍了,但是对于单核处理器而言,同一个时刻只能够执行一行指令。多个线程的同时执行,实际上是通过线程切换来实现的。一种简单的方式就是,每个线程执行一段时间后,就切换到另外一个线程去执行。当线程A执行到某行字节码指令时被挂起,这个时候切换到线程B执行一段时间后,又需要切换...
阅读全文
装箱与拆箱
摘要:在Java 1.5发行版本中,引入了装箱与拆箱的机制。也就是说,你可以在代码中将基本类型与装箱类型混用,比如int与Integer。当你将基本类型赋值给装箱类型时,会自动进行装箱操作:1 Integer i = 5; Integer i = Integer.valueOf(5)...
阅读全文