构建优化-基于Gradle构建优化
构建优化思路 Gradle 执行分为 Initialization -> Configuration -> Execution 三个阶段. 通常来说 Initialization 都很少, 我们主要来看看其它两个阶段的优化。 不管执行哪个 task, configuration 阶段都会执行. 因此 Configuration 阶段的优化十分必要 构建优化 常规优化手段 ...
构建优化思路 Gradle 执行分为 Initialization -> Configuration -> Execution 三个阶段. 通常来说 Initialization 都很少, 我们主要来看看其它两个阶段的优化。 不管执行哪个 task, configuration 阶段都会执行. 因此 Configuration 阶段的优化十分必要 构建优化 常规优化手段 ...
影响构建速度的因素 主要有以下几个方面: 硬件性能:CPU、RAM 等; 构建配置:缓存、增量编译等; 项目:项目的大小和复杂度,代码量、模块化、依赖管理等; 其他:网络速度,下载慢或者找不到等 构建耗时分析工具 Build Analyzer Build Analyzer,是 Android Studio 提供的构建分析器,可以在 build 窗口中打开查看。 ...
SQL 基础 通常可以将 SQL 分为四类,分别是 DDL(数据定义语言)、DML(数据操作语言)、DQL(数据查询语言)和 DCL(数据控制语言)。 DDL 主要用于创建、删除、修改数据库中的对象,比如创建、删除和修改二维表,核心的关键字包括 create、drop 和 alter; DML 主要负责数据的插入、删除和更新,关键词包括 insert、delete 和 upda...
视图 视图是关系型数据库中将一组查询指令构成的结果集组合成可查询的数据表的对象。简单的说,视图就是虚拟的表,但与数据表不同的是,数据表是一种实体结构,而视图是一种虚拟结构,你也可以将视图理解为保存在数据库中被赋予名字的 SQL 语句。 使用视图可以获得以下好处: 可以将实体数据表隐藏起来,让外部程序无法得知实际的数据结构,让访问者可以使用表的组成部分而不是整个表,降低数据库被攻击...
MySQL 基础 MySQL 介绍 MySQL 最早是由瑞典的 MySQL AB 公司开发的一个开放源码的关系数据库管理系统,该公司于 2008 年被昇阳微系统公司(Sun Microsystems)收购。在 2009 年,甲骨文公司(Oracle)收购昇阳微系统公司,因此 MySQL 目前也是 Oracle 旗下产品。 MySQL 在过去由于性能高、成本低、可靠性好,已经成为最流行的...
关系型数据库 关系数据库特点 理论基础:关系代数(关系运算、集合论、一阶谓词逻辑)。 具体表象:用二维表(有行和列)组织数据。 编程语言:结构化查询语言(SQL)。 ER 模型(实体关系模型)和概念模型图 ER 模型,全称为实体关系模型(Entity-Relationship Model),由美籍华裔计算机科学家陈品山先生提出,是概念数据模型的高层描述方式,如下图所示...
责任链,拦截器 优秀框架拦截器设计 OKHttp 拦截器设计 对网络的请求和响应,通过拦截器实现,可在请求前对请求做一些处理,请求后做一些处理 ARouter 拦截器设计 拦截器是运行在线程池的 见大圣助手:InterceptorServiceImpl
单链表 Pools Pools 总结 对象池缓存池,无需多线程同步用 SimplePool,需要多线程同步用 SynchronizedPool 对象缓存池用的是数组 从缓存中取对象和释放对象都是取/存数组中的最后一个 Pools 源码 Android 包 androidx.core.util 下有个工具类 Pools,为开发者提供了两种对象池,没有同步控制的 Sim...
动态扩展类并绑定生命周期的新方式 (参考 viewModelScope) 引出问题? 不使用继承和组合,如何动态地扩展类?比如,如何给 Activity 扩展一个 String 属性,当 Activity 被销毁时,将其置空? viewModelScope 源码 我们来看 ViewModel 生命周期绑定的 viewModelScope 被定义成它的扩展属性。它是怎么做到和 View...
路由框架的抉择 自己实现一个路由框架? 1、路由是什么?为什么需要路由框架? 什么是路由? 路由的本质是将一个 String 映射到某一个具体的页面;路由框架就是实现这样一个目的的一个框架 为什么需要路由框架? 原生路由的限制:功能单一,扩展灵活性差,不易协同 startActivity、startService 等 显示 依赖具体类,需要依赖源码或 a...