缓存概述 在 Android 开发的过程中常常需要用到缓存的功能来减少应用对用户流量的消耗(如图片缓存,文章缓存等等)。而对于用户的手机而言,其内存/存储空间的大小一般都是有限的,在一些缓存量大或缓存十分频繁的情况下,如果我们不...
TCP 在 IP 协议不可靠(尽力而为也就是无服务)之上建立了可靠的数据传输服务。它确保了发送方发送的字节流与接收方所接收到的字节流是完全相同的。那么它又是如何实现的呢? 累积确认机制 首先,我们需要清楚,TCP 报文段中具有两个...
这段时间看了看工作室的工具库的下载组件,发现其存在一些问题: 下载核心逻辑有 bug,在暂停下载或下载失败等情况时有概率无法顺利完成下载。 虽然原来的设计是采用多线程断点续传的设计,但打了一下日志发现其实下载任务都是在同...
Picasso 是 Square 公司出品的一款十分优秀的开源图片框架,也是目前 Android 开发中十分流行的一款图片加载框架。提到 Square 公司大家一定不会陌生,OkHttp、Retrofit、LeakCanary 等等 Android 开发者十分熟悉的开源库都出自他们...
在计算机网络的数据传输的过程中可能遇到数据的损坏问题: 分组的数据(bit)在传输过程中发生损坏,部分从 1 变成了 0 或者从 0 变成了 1 分组在传输过程中丢失,如到达中转路由器时,由于其输入队列已满,导致该分组被丢弃 分组未...
之前学习容器的时候缺少了一些笔记,现在补一下笔记顺便重新理解一遍这些容器的源码。 HashMap 是我们在 Java 开发中经常接触到的容器,今天就让我们从它的源码入手来了解它的实现原理。本文为上部分,不包含其有关红黑树的操作,下一...
MMKV 是腾讯于 2018 年 9 月 20 日开源的一个 K-V 组件,下面是官方对它的介绍: MMKV 是基于 mmap 内存映射的 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。从 2015 年中至今在微信上使用,其性能...
本文是独立解析源码的第二篇,SharedPreference 是一个 Android 开发自带的适合保存轻量级数据的 K-V 存储库,它使用了 XML 的方式来存储数据,比如我就经常用它保存一些如用户登录信息等轻量级数据。那么今天就让我们来分析一下它的...
之前写过了很多常用的库的源码解析,但都需要大量参考其他大牛的博客才能彻底理解一个库的原理,这样总感觉会有遗漏。现在想检验一下自己的代码阅读能力,因此尝试靠自己去独立地完成一篇源码解析,看看效果如何。我们先从 EventBus ...
这段时间学习 JVM 学得实在是有点累,要记忆的东西太多…在下一篇笔记还没发出来之前先插一脚,研究一下最近经常遇到的一个函数—— mmap() 。 提到 mmap 大家可能会感到陌生,其实 Android 中的 Binder 机制就是基于 mmap 来实现...