Flutter源码之三颗树分类 2023-10-10 Flutter 约 3230 字 预计阅读 7 分钟 注:本文代码基于Flutter SDK 3.13.5 一、Widget的分类 作为一个初学者,我们知道在Flutter中万物皆Widget,这恰恰说明了Widget在Flutter中的一个重要性,那么以Android开发者的角度来看,Flutter中的Widget是否等同于Android中的View呢 阅读更多
解读JDK动态代理 2023-08-11 Java 约 8994 字 预计阅读 18 分钟 注:本文代码基于JDK 17 一、概述 动态代理,一个听起来很高深的名词,其实并非如此,在日常的开发中,你或多或少都有遇到过,比如你调用第三方SDK的方法时,该方法的具体实现或许就是使用了动态代理,这个本文后面会讲到。 不管是在Java开发还是Android开发中,动态代理的应用场景都非常 阅读更多
解读Kotlin协程启动源码 2023-07-23 Kotlin 约 8816 字 预计阅读 18 分钟 注:本文代码基于Kotlin 1.9.0 前言 一般而言,Kotlin的协程实现分为两个层次: 基础设施层:标准库的协程API,主要对协程提供了概念和语义上最基本的支持,API所在包名的前缀为kotlin.coroutines.*。基于此,本文主要内容就是解读Kotlin协程启动源码。 业务框架层 阅读更多
Android事件分发机制 2023-06-23 Android 约 25430 字 预计阅读 51 分钟 注:本文代码基于Android Sv2 一、概述 事件分发机制是View体系中一个非常重要的核心知识点,也是难点,不少Android开发者搞了几年的Android,或许也还没完全弄明白它的原理。 另外,在Android开发过程中难免会碰到滑动冲突的场景,而解决滑动冲突的理论基础就是事件分发机 阅读更多
Android解析XML数据 2023-05-07 Android 约 8488 字 预计阅读 17 分钟 注:本文代码基于Android Sv2 一、概述 XML文件在Android中是一种非常常见的文件格式,例如你的主页面布局文件activity_main.xml、Android清单文件AndroidManifest.xml、XXX.xml的res资源文件等等,然而我们在日常开发中往往会忽略 阅读更多
Java集合系列:一文解读ArrayDeque源码「JDK11」 2023-04-24 Java 约 6550 字 预计阅读 14 分钟 一、概述 假设你对ArrayDeque的源码一无所知,那么仅凭ArrayDeque名字来看的话,大概可以猜到它的实现和Array数组有关。 ArrayDeque是Java Collections Framework的一个成员,它的底层是基于定长数组实现的一个双端队列,如果数组存放满了,就会通过扩容机制重新生 阅读更多
Java集合系列:一文解读LinkedList源码「JDK11」 2023-04-19 Java 约 8735 字 预计阅读 18 分钟 一、概述 LinkedList是Java Collections Framework的一个成员,然后底层是基于双向链表来实现的。对于LinkedList来说,可能平常开发用的频率并没有ArrayList多,这并不是我们不去学习LinkedList原理的理由。我们知道,ArrayList的特点是随机访问效率 阅读更多
Java集合系列:一文解读ArrayList源码「JDK11」 2023-04-16 Java 约 7409 字 预计阅读 15 分钟 一、概述 ArrayList是经常用到的一个容器,它是Java Collections Framework的一个成员,然后底层是基于定长数组来实现的,如果数组存放满了,就会通过扩容机制重新生成一个更大的数组来存放数据。 因此,扩容机制是ArrayList的核心所在,这一点是务必要掌握的;除此之外,本文还会叙 阅读更多