暂无个人介绍
大家好,今天是 3T 选手小彭。上周是 LeetCode 第 332 场周赛,你参加了吗?算法解题思维需要长时间锻炼,加入我们一起刷题吧~
在上一篇文章里,我们聊到了 Square 开源的 I/O 框架 Okio 的三个优势:精简且全面的 API、基于共享的缓冲区设计以及超时机制。前两个优势已经分析过了,今天我们来分析 Okio 的超时检测机制。
今天,我们来讨论一个 Square 开源的 I/O 框架 Okio,我们最开始接触到 Okio 框架还是源于 Square 家的 OkHttp 网络框架。那么,OkHttp 为什么要使用 Okio,它相比于 Java 原生 IO 有什么区别和优势?今天我们就围绕这些问题展开。
在之前的文章里,我们聊到了 LRU 缓存淘汰算法,并且分析 Java 标准库中支持 LUR 算法的数据结构 LinkedHashMap。当时,我们使用 LinkedHashMap 实现了简单的 LRU Demo。今天,我们来分析一个 LRU 的应用案例 —— Android 标准库的 LruCache 内存缓存。
今天,我们来讨论 WeakHashMap,其中的 “Weak” 是指什么,与前两者的使用场景有何不同?我们就围绕这些问题展开。
我们日常生活接触到的大部分数字却是十进制编码,例如手机号码、工牌号、学号。那为什么计算机要使用二进制数制?二进制数据如何进行运算,以及计算机做了哪些优化来如何提高运算的效率?今天我们就围绕这些问题展开。
在上一篇文章里,我们聊到了计算机的冯·诺依曼架构,以及计算机的五大部件:控制器、运算器、存储器、输入设备和输出设备。在现在计算机体系中,CPU 是整个计算机的核心,主要包含控制器和运算器两大部件。 在后续文章中,我们将从 CPU 的基本认识开始,逐步将 CPU 与执行系统、存储系统和 I/O 系统串联起来,请关注。
在上一篇文章里,我们聊到了 HashMap 的实现原理和源码分析,在源码分析的过程中,我们发现一些 LinkedHashMap 相关的源码,当时没有展开,现在它来了。 那么,LinkedHashMap 与 HashMap 有什么区别呢?其实,LinkedHashMap 的使用场景非常明确 —— LRU 缓存。今天,我们就来讨论 LinkedHashMap 是如何实现 LRU 缓存的。
在上一篇文章里,我们聊到了散列表的整体设计思想,在后续几篇文章里,我们将以 Java 语言为例,分析标准库中实现的散列表实现,包括 HashMap、ThreadLocalMap、LinkedHashMap 和 ConcurrentHashMap。今天,我们来讨论 Java 标准库中非常典型的散列表结构,也是 “面试八股
Gson 是 Google 推出的 Java Json 解析库,具有接入成本低、使用便捷、功能扩展性良好等优点,想必大家都很熟悉了。在这篇文章里,我们将讨论 Gson 的基本用法和以及主要流程的源码分析。
在前几篇文章里,我们聊到了 Java 中的几种线性表结构,包括 ArrayList、LinkedList、ArrayDeque 等。今天,我们来讨论另一种常用的基础数据结构,同时也是 “面试八股文” 的标准题库之一 —— 散列表(Hash Table)。
在上一篇文章里,我们聊到了基于链表的 Queue 和 Stack 实现 —— LinkedList。那么 Java 中有没有基于数组的 Queue 和 Stack 实现呢?今天我们就来聊聊这个话题。
在上一篇文章里,我们聊到了ArrayList 的线程安全问题,其中提到了 CopyOnWriteArrayList 的解决方法。那么 CopyOnWriteArrayList 是如何解决线程安全问题的,背后的设计思想是什么,今天我们就围绕这些问题展开。
在前面的文章里],我们学习了很多数据结构与算法思想。在实际的业务开发中,往往不需要我们手写数据结构,而是直接使用标准库的数据结构 / 容器类。 在后续的文章里,我们将以 Java 语言为例,分析从 ArrayList 到 LinkedHashMap 等一系列标准库容器类,最后再有一篇总结回顾,请关注。
在前面的文章里,我们聊到了 CPU 的高速缓存机制。由于 CPU 和内存的速度差距太大,现代计算机会在两者之间插入一块高速缓存。 然而,CPU 缓存总能提高程序性能吗,有没有什么情况 CPU 缓存反而会成为程序的性能瓶颈?这就是我们今天要讨论的伪共享(False Sharing)。
在上一篇文章里,我们聊到了 CPU 的缓存一致性问题,分为纵向的 Cache 与内存的一致性问题以及横向的多个核心 Cache 的一致性问题。我们也讨论了 MESI 协议通过写传播和事务串行化实现缓存一致性。
什么是缓存一致性问题,CPU Cache 的读取和写入过程是如何执行的,MESI 缓存一致性协议又是什么?今天我们将围绕这些问题展开。
美团组件化事件总线方案改进:ModularEventBus
来开源吧!发布开源组件到 MavenCentral 仓库超详细攻略
为什么各大厂自研的内存泄漏检测框架都要参考 LeakCanary?因为它是真强啊!(下)
为什么各大厂自研的内存泄漏检测框架都要参考 LeakCanary?因为它是真强啊!
图片系列(6)高低版本 Bitmap 内存分配与回收原理对比
JVM 系列(6)吊打面试官:为什么 finalize() 方法只会执行一次?
JVM 系列(5)吊打面试官:说一下 Java 的四种引用类型
JVM 系列(4)吊打面试官:对象的内存分为哪几个部分?
飞书前端提到的竞态问题,在 Android 上怎么解决?
计算机基础:今天一次把 Unicode 和 UTF-8 说清楚
NDK 系列(5):JNI 从入门到实践,万字爆肝详解!(下)
NDK 系列(5):JNI 从入门到实践,万字爆肝详解!
NDK 系列(6):说一下注册 JNI 函数的方式和时机
Android 面试题:说一下 PendingIntent 和 Intent 的区别
算法系列(2)—— 简答一波 HashMap 常见八股面试题
Jetpack 系列(3)—— 为什么 Activity 都重建了 ViewModel 还存在?
Jetpack 系列(2)—— 为什么 LiveData 会重放数据,怎么解决?
Jetpack 系列(1)—— Lifecycle:生命周期感知型组件的基础
Gradle 系列(8)其实 Gradle Transform 就是个纸老虎
Gradle 系列(2)手把手带你自定义 Gradle 插件
Gradle 系列(1)为什么说 Gradle 是 Android 进阶绕不去的坎
还没适配 Android 12 的要抓紧了(下)
还没适配 Android 12 的要抓紧了
Android 12 还没用上,Android 13 已经来了!
列表分页接口有哪些方案,你知道吗?
你的第一个 Jenkins 项目,从这里开始
Jetpack 系列(4)—— 有小伙伴说看不懂 LiveData、Flow、Channel,跟我走
金三银四必备,全面总结 Kotlin 面试知识点
Android Deep Link 深度链接,看看你在第几层?
IMEI 弃用!收下这份保姆级的 OAID 集成教程
Jetpack 系列(5)—— Android UI 架构演进:从 MVC 到 MVP、MVVM、MVI
Gradle 系列(5)一键检索未适配 64 位架构的 so 文件
落地西瓜视频埋点方案,埋点从未如此简单