Ann

勇敢安安,不怕困难!

好好好好久不见!

带着一种很羞愧的心情,打开了博客,写下了这篇文章。。因为。。坚持了小半年的写博客的习惯又被我鸽了,我真是个废物呜呜呜! 当然,我想我给自己找了很多借口。比如我要结婚了,比如最近还算顺利,没有换工作的烦恼,比如最近领导予以厚望,工作压力比以前大很多,吧啦吧啦…… 但我还是有很多个可以调整放松的周末,都被我浪费过去了,很多个周末的下午,我就像现在这样,打开电脑,假模假样的打开了LeetCod...

设计模式——结构性设计模式

结构模式侧重于如何设计大型代码类结构。在日常开发、代码设计中非常有用。 外观模式 适配器模式 桥接模式 组合模式 装饰模式 享元模式 代理模式

JVM学习笔记6——多线程

Java内存模型 Java内存模型是JVM设计的一套旨在多并发的场景下,也能具有平台无关性的访问存储规则。 主内存 & 工作内存 主内存: 所有变量(静态字段、实例字段、数组对象元素等)都必须存在主内存中。 工作内存:线程独立的空间,保存了可能被该线程用到的变量在主内存的方法拷贝。 对应于具体的操作系统,主内存对应硬件内存,JVM会让工作内存优先享有寄存...

JVM学习笔记5——方法调用

方法调用不等于方法被执行,他的唯一作用是确定执行方法的版本,即确定方法对应的直接引用。 解析 编译过程中就确定的方法,会直接在解析过程中由符号引用转为直接引用,符合此条件的有:静态方法、私有方法、实例构造器、父类方法这四种方法。 分派 静态分派(重载的实现方式:运行期间不会变,只能确定一个更适合的版本) 动态分派(重写的实现方式:...

Android动画浅析

1 前言 日常处理UI相关的开发过程中,我们不免要与动画打交道。通过动画,我们实现了酷炫的效果、高级的交互体验,完成了web网页不可替代的顺滑体验。Android基础库为我们提供了多种动画的实现方式,支持的功能也愈来愈强大。 作用范围上,动画不只作用在单个View上,也支持作用在ViewGroup、RecyclerView、ViewPager、Fragment、甚至Ac...

JVM学习笔记4——虚拟机栈

虚拟机栈中的栈元素叫做帧栈,帧栈存储了方法的局部变量表、操作数栈、动态链接、方法返回地址等信息。 帧栈的内存大小在编译中已经确定,存在了方法表和code属性中。 局部变量表 局部变量表是一组变量值存储空间,存放方法参数和方法内部定义的局部变量。 x对于64位的数据类型,局部变量表会分配2个slot,并且以高位对齐的方式存储。 局部变量表中的第0位slot指向类的引用,即this...

Jetpack

常见jetpack组件小结

概述jetpack常见组件功能、使用方式。 简介 Jetpack是一套库、工具和指南,可以帮助开发者更轻松地编写优质应用。这些组件可以帮助开发者遵循最佳做法、让开发者摆脱编写样板代码的工作并简化复杂任务,以便开发者将精力集中放在所需的代码上。jetpack主要包含四个方面:架构,界面,行为,基础。 👉👉jetpack开发文档 架构 LifeCycle 主要目的 ...

注解

看到很多代码里都用了注解,尤其是jectpack的一些新组件,都用了注解的方式,一直没闹明白注解如何在代码中作用的,学习记录一下。 注解概念&作用 什么是注解 源代码中元数据的一种标记,注解本质上是一个继承自Annotation的类(一般通过反射的方式实现具体的功能) 注解的作用 生成文档,根据文档注解,可以生成java文档 ...

FrameWork基础

反射 & 代理

反射 反射包含以下技术 根据一个String得到一个类对象 根据一个类,获取类中字段、方法、属性 对泛型反射 获取类的方式 对象.getClass(); Class.forName(“对象全限定名”); class属性 Class x = String.class; TYPE类型(装箱类) Class x = Boolean....

四大组件插件化基本原理

介绍《Android插件化开发指南》中通用插件化方案 Activity 对启动Activity行为hook 假设我们需要在启动Activity过程中落日志记录,有以下几种方法: 构建通用基类BaseActivity,重写startActivityForResult方法 startActivity前半段:反射仪表盘mInstrumentation(仅对当前Activity生...