简介
Trie 树,又叫字典树、前缀树、单词查找树,是一种多叉树结构。如下图:
EventBus 是一款针对 Android 优化的发布-订阅事件总线。它简化了应用程序内各组件间的通信,开销小,代码更简洁,以及将发送者和接受者解耦。
本文将从源码的角度分析 EventBus 的实现原理,分析版本为 EventBus-3.0.0。
okio 补充了 java.io 和 java.nio 的内容,使得数据访问、存储和处理更加便捷。本文将简单介绍一下 okio 的使用以及基于 okio-1.17.0 版本,对 okio 的源码进行分析,最后总结一下 okio 的优点。
dfs(Depth-First-Search),即深度优先遍历。从根开始,一路往下遍历,遍历到底再返回,找到下一未访问的点,继续往下遍历,直到所有点都遍历完毕。如果是先访问左孩子的话,和前序遍历是一样的。
向服务器发起请求时,header 部分如果有 Connection: keep-alive,表示客户端和服务器之间保存长连接,这个连接是可以复用的。长连接在 HTTP/1.1 中默认开启。
连接的复用可以提高性能。没有连接复用的话,发起 http 请求时要先建立 TCP 连接,然后传递数据,最后再释放连接。如果同一个客户端在某段时间进行频繁的请求操作,这时频繁的创建和释放连接会导致性能低下。而如果可以连接复用,那么在 timeout 空闲时间内,连接不会关闭,这样就可以减少连接的创建和释放,大幅提高性能。
在 okhttp 中,也有一个复用连接池 ConnectionPool,可以进行连接复用。本文将会从源码分析 okhttp 的复用连接池,以下代码基于 okhttp-3.10.0。
拦截器是 okhttp 的精髓,okhttp 的网络请求过程其实就是通过一条拦截器链来完成的,这体现了责任链模式。本文将分析 okhttp 拦截链中各拦截器的作用,代码基于 okhttp-3.10.0。
本文将针对Glide的图片加载过程,从对最简单的Glide.with(this).load(url).into(imageView)出发,对Glide的源码进行分析,以下代码基于Glide-4.9.0。