Flutter源码之三颗树分类

注:本文代码基于Flutter SDK 3.13.5 一、Widget的分类 作为一个初学者,我们知道在Flutter中万物皆Widget,这恰恰说明了Widget在Flutter中的一个重要性,那么以Android开发者的角度来看,Flutter中的Widget是否等同于Android中的View呢

解读JDK动态代理

注:本文代码基于JDK 17 一、概述 动态代理,一个听起来很高深的名词,其实并非如此,在日常的开发中,你或多或少都有遇到过,比如你调用第三方SDK的方法时,该方法的具体实现或许就是使用了动态代理,这个本文后面会讲到。 不管是在Java开发还是Android开发中,动态代理的应用场景都非常

解读Kotlin协程启动源码

注:本文代码基于Kotlin 1.9.0 前言 一般而言,Kotlin的协程实现分为两个层次: 基础设施层:标准库的协程API,主要对协程提供了概念和语义上最基本的支持,API所在包名的前缀为kotlin.coroutines.*。基于此,本文主要内容就是解读Kotlin协程启动源码。 业务框架层

Android事件分发机制

注:本文代码基于Android Sv2 一、概述 事件分发机制是View体系中一个非常重要的核心知识点,也是难点,不少Android开发者搞了几年的Android,或许也还没完全弄明白它的原理。 另外,在Android开发过程中难免会碰到滑动冲突的场景,而解决滑动冲突的理论基础就是事件分发机

Android解析XML数据

注:本文代码基于Android Sv2 一、概述 XML文件在Android中是一种非常常见的文件格式,例如你的主页面布局文件activity_main.xml、Android清单文件AndroidManifest.xml、XXX.xml的res资源文件等等,然而我们在日常开发中往往会忽略

Java集合系列:一文解读ArrayDeque源码「JDK11」

一、概述 假设你对ArrayDeque的源码一无所知,那么仅凭ArrayDeque名字来看的话,大概可以猜到它的实现和Array数组有关。 ArrayDeque是Java Collections Framework的一个成员,它的底层是基于定长数组实现的一个双端队列,如果数组存放满了,就会通过扩容机制重新生

Java集合系列:一文解读LinkedList源码「JDK11」

一、概述 LinkedList是Java Collections Framework的一个成员,然后底层是基于双向链表来实现的。对于LinkedList来说,可能平常开发用的频率并没有ArrayList多,这并不是我们不去学习LinkedList原理的理由。我们知道,ArrayList的特点是随机访问效率

Java集合系列:一文解读ArrayList源码「JDK11」

一、概述 ArrayList是经常用到的一个容器,它是Java Collections Framework的一个成员,然后底层是基于定长数组来实现的,如果数组存放满了,就会通过扩容机制重新生成一个更大的数组来存放数据。 因此,扩容机制是ArrayList的核心所在,这一点是务必要掌握的;除此之外,本文还会叙