数据库基础
关系型数据库 关系数据库特点 理论基础:关系代数(关系运算、集合论、一阶谓词逻辑)。 具体表象:用二维表(有行和列)组织数据。 编程语言:结构化查询语言(SQL)。 ER 模型(实体关系模型)和概念模型图 ER 模型,全称为实体关系模型(Entity-Relationship Model),由美籍华裔计算机科学家陈品山先生提出,是概念数据模型的高层描述方式,如下图所示...
关系型数据库 关系数据库特点 理论基础:关系代数(关系运算、集合论、一阶谓词逻辑)。 具体表象:用二维表(有行和列)组织数据。 编程语言:结构化查询语言(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...
池化技术 见 [[01-Android/Android Architecture Design/看源码学姿势?/池化技术 池化技术]]
图片框架设计 自己设计一个图片框架? 图片加载的轮子有很多了,Universal-Image-Loader, Picasso, Glide, Fresco 等 1、参数 配置需要用到的一些配置信息 (缓存路径、缓存策略、),一般可能通过 Builder 构建者模式来配置参数 2、缓存设计 三级缓存 内存缓存,可用 LruCache 来配置 弱引用缓存 磁盘...
APM 系统设计
Java 中的异常 Java 中有两种异常:已检测异常(Checked exceptions)和未检测异常(Unchecked exceptions)。Checked exceptions 必须使用 throws 或 try catch 进行异常处理;Unchecked exceptions 不需要指定或捕获。Java 对未检测异常默认处理方式是:将堆栈跟踪信息写到 控制台中(或者记录到错...
SVGAPlayer 什么是 SVGA? SVGA 是一种跨平台的开源动画格式,同时兼容 iOS / Android / Web。SVGA 除了使用简单,性能卓越,同时让动画开发分工明确,各自专注各自的领域,大大减少动画交互的沟通成本,提升开发效率。动画设计师专注动画设计,通过工具输出 svga 动画文件,提供给开发工程师在集成 svga player 之后直接使用。 SVGA 原理 ...