Android-动画分析 Android的动画就可以分为3种: View动画 View Animation 帧动画 Drawable Animation 属性动画 Property Animation 1.View动画 View动画的作用对象是View。View动画的View移动只是视觉效果,并不能真正的改变位置。 View动画的种类 种类 标签 子类 效果 平移动画 <translate> 2018-06-11 #Android
Android硬件加速 软硬件绘制的分歧点绘制过程入口位于ViewRootImpl.performDraw()中 123456789101112131415//ViewRootImpl.java private void performDraw() { ... try { //调用draw()执行实际的绘制工作 boolean 2020-10-27 #Android
Android中的GC分析-Dalvik和ART虚拟机 Dalvik虚拟机 Dalvik Virtual Machine,简称Dalvik VM或者 DVM。DVM是Google专门为Android平台开发的虚拟机,是Android的重要组成部分,支持dex格式的Java应用程序运行。 dex格式是专门为DVM设计的一种压缩格式,适合内存和处理器速度有限的系统。 从架构图中可知,DVM运行在Android的运行时库层。 DVM与JVM的区别基 2018-05-13 #Android
数据结构--ConcurrentHashMap原理及解析 HashMap本身不是线程安全的,通常在多线程情况下可以去使用HashTable替代HashMap使用,该类中基本所有的操作方法都采用synchronized进行修饰,所以在高并发的情况下,每次只能有一个线程获取对象监视器锁,并发性能太低。 针对上述情况,就产生了ConcurrentHashMap这个类去解决上述问题,提高效率。 从整体上看,这三个容器的定位可以简单理解 2019-01-16 #数据结构
Java-synchronized原理及解析 synchronizedsynchronized场景一般用在以下场景 修饰实例方法(锁定当前对象实例)12345public class SynchronizedInstance{ public synchronized void test(){ //... }} 锁定的是访问该方法的实例对象,如果在多个线程中的不同对象访问该方法,则不可保证互 2018-12-18 #Java
Java-volatile原理及解析 volatile基础概念volatile的主要作用是保证可见性以及有序性,不一定保证原子性。 JVM提供的最轻量级的同步机制。 更准确地说,volatile更擅长解决的是线程之间的通信问题,例如一个线程修改状态、另外一个线程及时感知这个状态变化。它并不提供互斥访问能力,因此不能替代锁去保护一段需要整体保持一致性的临界区代码。 当一个变量被volatile关键字修饰后,就会具备两层语义: 2018-12-17 #Java
Java - 反射 Java反射机制基础 反射机制定义反射(Reflection)是Java的特征之一,它允许运行中的Java程序获取自身的信息,并且可以操作类或对象的内部属性。对于任何一个类,能够知道这个类中的所有属性和方法;对于任何一个对象,都能够调用它的任意一个方法和属性。 反射机制功能通过反射,可以在运行时获取程序中的每一个类型的成员和成员信息。利用Java的反射机制可以动态的创建对象并调用其属性。反射可以 2018-12-14 #Java
Java - 泛型 泛型基本概念 Java泛型是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter)。声明的类型参数在使用时用具体的类型来替换。 本质上是编译器为了提供更好的可读性而提供的一种方式,JVM中是不存在泛型的概念的。 泛型的出现在很大程度上是为了方便集合的使用,使其能够记住元素的数据类型。泛型是对Java语言类型系统的一种拓展,可以把类型参数看作是使用参 2019-01-02 #Java
Java - 注解 基础概念元数据 元数据是关于数据的数据,元数据是添加到程序元素入方法、字段、类和包上的额外信息。对数据进行说明描述。 元数据可用于以下场景: 编写文档:根据程序元素的注释创建文档 代码分析:通过标识的元数据对代码进行分析(例如声明方法重载) 编译检查:让编译器实现基本的编译检查,例如*@notNull——不为空* Java平台的元数据体现 就在于注解(Annotation)。 注解概念 2019-02-19 #Java
Java多线程基础 Java多线程基础 基础概念进程 操作系统结构的基础,是程序在一个数据集合上运行的过程,是系统进行资源分配和调度的基本单位。进程就是程序的实体 线程 线程是进程的一个实体,是CPU调度和分配的基本单位,线程是一个比进程更小的执行单位,一个进程在执行期间可以产生多个线程。一个进程至少一个线程。一般应用于高并发场景,可以提高CPU的利用率。 多进程 每个进程都拥有自己独立的资源,多个进程可在 2018-12-19 #Java
Java中的锁事 Java中提供了种类丰富的锁,定义这些锁可以在适当的场景中发挥更好的作用。 乐观锁&悲观锁乐观锁 每次去拿取数据的时候认为不会有人进行修改,所以不会去添加锁。只是会在更新数据时去判断是否有其他线程对这个数据进行了修改。通过判断版本号检测是否发生了更新,未发生变化直接写入新数据;发生了变化,就需要重复执行读版本号-比较有无发生变化-写入新数据操作。在Java中一般通过CAS算法实现。例如A 2019-03-15 #Hide
Java字节码学习-操作指令 对常见的字节码操作指令进行整理,方便日后进行查询。为了在字节码应用时可以进行合理利用。 JVM采用基于栈的架构,操作指令由操作码和操作数组成。操作码决定要完成的操作,操作数指参加运算的数据及其所在的单元地址。 操作码:一个字节长度(0~299),操作码个数不能不能超过256 操作数:一条指令可以包含0个或多个操作数。 为了提升传输效率,减少数据量。字节码指令放弃了 操作数对齐,减少了填充与间 2019-11-14 #Java