过去一周 Android 相关的技术文章精选,以及过去一周发现的经典文章
视频 - iPhone 13 Pro/Max 为什么省电?- ProMotion 技术分析[1] : 在每一个测评都霸榜的 iPhone 13 Pro 系列为什么省电?推荐大家看看这期电丸科技的 ProMotion 技术分析
一文读懂现代 Android 开发最佳实践 : MAD 的全称是 Modern Android Development,它是一系列技术栈和工具链的集合,涵盖了从编程语言到开发框架等各个环节。
Android 自 08 年诞生之后的多年间 SDK 变化一直不大,开发方式较为固定。13 年起技术更新逐渐加速,特别是 17 年之后, 随着 Kotlin 及 Jetpack 等新技术的出现 Android 开发方式发生了很大变化,去年推出的 Jetpack Compose 更是将这种变化推向了新阶段。Goolge 将这些新技术下的开发方式命名为 MAD ,以此区别于旧有的低效的开发方式。
MAD 可以指导开发者更高效地开发出优秀的移动应用,它的优势主要体现在以下几点:
值得信赖:汇聚 Google 在 Android 行业十余年的前沿开发经验
入门友好:提供大量 Demo 和参考文档,适用于不同阶段不同规模的项目
高效启动:通过 Jeptack 以及 Jetpack Compose 等框架,可以迅速搭建你的项目
自由选择:框架丰富多样,可与传统语言、原生开发、开源框架自由搭配
体验一致:不同设备不同版本系统下也具备一致的开发体验
淘特 Flutter 流畅度优化实践 · 二期 : 在上一篇 淘特 Flutter 流畅度优化 中说到,虽然一期效果较为明显,但距离极致的用户体验仍有不小的差距。去年,淘特端架构联合业务团队共同发起“基础链路极致体验优化”的项目,目标在时长与流畅度方面获得极致体验,本文将为大家详细解析淘特 Flutter 流畅度优化实践二期部分
从显示 Tap 原理一探 Android 12 的 Input 系统 : 本次我们聚焦 “Show taps” 的功能,查阅 Android 12 的源码,将开启和显示流程分析清楚。借此也窥探一下 Android 最重要的 Input 系统。
Android Monkey 源码解析系列
【Android Monkey 源码解析一】-系统执行[2]
【Android Monkey 源码解析二】- 参数解析[3]
【Android Monkey 源码解析三】- 运行解析[4]
【Android Monkey 源码解析四】- 异常捕获/页面控制[5]
C++17 常用新特性(六)---lambda 表达式的扩展 : 从 C++11 起就引入了 lambda 表达式,C++14 又对其进行了丰富,开始支持使用泛型 lambda。到现在的 C++17 lambda 的功能又进行了扩展。在 C++17 新特性中,主要支持了以下两种场景:
在常量表达式中使用
需要对当前对象的拷贝时使用,如不同的线程需要创建不同的对象。
10 ideas to improve your Gradle build times
10 ideas to improve your Gradle build times [Part I][6]
10 ideas to improve your Gradle build times [Part II][7]
10 ideas to improve your Gradle build times [Part III][8]
Notification runtime permission-Android13[9] : we will explore the New notification runtime permission that was added in Android Tiramisu(13).
This permission is required for non-exempt notifications
Its protection level is dangerous
Constant value:
深度解析 Jetpack Compose 布局 : Jetpack Compose 是用于构建原生 Android 界面的新工具包。它可简化并加快 Android 上的界面开发,使用更少的代码、强大的工具和直观的 Kotlin API,快速让应用生动而精彩。Compose 使用全新的组件——可组合项 (Composable) 来布局界面,使用修饰符 (Modifier) 来配置可组合项。本文会为您讲解由可组合项和修饰符提供支持的组合布局模型,并深入探究其背后的工作原理以及它们的功能,让您更好地了解所用布局和修饰符的工作方式,和应如何以及在何时构建自定义布局,从而实现满足确切应用需求的设计。
视频 - Git 基本原理介绍[10] : 真正理解 Git 的每一个操作背后都发生了什么
视频 - 智能终端产品 UX 设计中的人因研究-华为 张宇博 2020 第五届中国(重庆)人因工程高峰论坛[11] : 华为 UX 设计中的人因研究,感兴趣的可以看看
优化实践: 高刷下列表滑动出现卡顿掉帧的现象 : 120fps 最大的挑战在于一帧的完成必须在 8.3ms 内完成,细化一点就是 App 和 SurfaceFlinger 及其相关的进程端 (加上 crtc 和 hw service)花费的时间总和必须在 8.3ms 之内, 这就需要 App 侧和 Sf 侧都不能出现较长耗时,才可以保证不掉帧. 高刷下的掉帧原因可能有很多,就笔者遇到的场景有低内存下 kswapd 跑大核、同步 GC、温升限频、IO、Vsync 不均、GPU&CPU 性能不足等场景,当然最常见的场景还是应用自身绘制超时导致。
Android ANR|原理解析及常见案例 : 本文侧重介绍常见的 ANR 类型以及一般分析策略,旨在希望通过本文能够处理绝大部分的 ANR 案例
Using Metal System Trace in Instruments to Profile Your App[12] : Apple 的类 Systrace 工具:性能低下的帧率会导致应用程序感觉迟钝或对用户造成干扰,因此必须消除临时中断或停顿,以优化应用程序的用户体验。为了获得有关您的应用程序帧率缓慢的原因的信息,您可以使用 Xcode 的游戏性能工具,它将线程和系统调用信息与金属系统跟踪工具相结合。通过展示重要的应用程序状态和渲染活动,Game Performance 可以帮助您推断出为实现一致、流畅的渲染所需的变化。
[Android 禅修之路] Android 图形系统开篇[13]
[Android 禅修之路] SurfaceFlinger 的启动过程[14]
[Android 禅修之路] SurfaceFlinger 中的一些对象[15]
[Android 禅修之路] SurfaceFlinger 合成中的工作[16]
[Android 禅修之路] 解读 SurfaceFlinger 中的 BufferQueue[17]
[Android 禅修之路] 解读 Vsync(一)[18]
[Android 禅修之路] 解读 Vsync(二)[19]
[Android 禅修之路] 解读 GraphicBuffer 之 Framework 层[20]
[Android 禅修之路] 解读 GraphicBuffer 开篇[21]
一次大量 JVM Native 内存泄露的排查分析(64M 问题) : 我们有一个线上的项目,刚启动完就占用了使用 top 命令查看 RES 占用了超过 1.5G,这明显不合理,于是进行了一些分析找到了根本的原因,下面是完整的分析过程,希望对你有所帮助。会涉及到下面这些内容
Linux 经典的 64M 内存问题
堆内存分析、Native 内存分析的基本套路
tcmalloc、jemalloc 在 native 内存分析中的使用
finalize 原理
hibernate 毁人不倦
一次关于架构的“嘴炮” : 这是一次源于头条 Android 客户端软件架构问题的探讨,之所以冠上“嘴炮”之名,是因为它有一些务虚;同时又夹杂了一些方法论,不仅适用于客户端软件架构,也适用于其他工作场景,希望对大家有所帮助。为了拉满读者的带入感,且以“我们”为主语,来看架构的挑战、判断和打法。
Flutter 上字体的另类玩法:FontFeature : 什么是 FontFeature?「简单来说就是影响字体形状的一个属性」 ,在前端的对应领域里应该是 font-feature-settings,它有别于 FontFamily ,是用于指定字体内字的形状的一个参数。
抖音 Android 性能优化系列:启动优化实践 : 启动性能是 APP 使用体验的门面,启动过程耗时较长很可能使用户削减使用 APP 的兴趣,抖音通过对启动性能做劣化实验也验证了其对于业务指标有显著影响。抖音有数亿的日活,启动耗时几百毫秒的增长就可能带来成千上万用户的留存缩减,因此,启动性能的优化成为了抖音 Android 基础技术团队在体验优化方向上的重中之重。在上一篇启动性能优化之理论和工具篇中,已经从原理、方法论、工具的角度对抖音的启动性能优化进行了介绍,本文将从实践的角度通过具体的案例分析介绍抖音启动优化的方案与思路。
深入揭秘 epoll 是如何实现 IO 多路复用的 : 提起 epoll,大家都不陌生,知道它性能不错。但是它内部是如何工作的,如何达到高性能的效果呢,鲜有文章能把原理介绍清楚,所以我就撸起袖子搞了一篇文章,献给大家。
一次逆向分析 Android 内存错误之旅 : 稳定性保障是应用的基石,快手内部有自动稳定性数据巡检、归因系统。在近期一次 Native Crash 指标巡检中,一个崩溃问题突然发生了激增,涨至 Native Crash 大盘近 10%。本文记录了根据汇编实现、寄存器信息以及内存数据分析、定位该崩溃的过程。
Jank 卡顿及 stutter 卡顿率说明[22] : 本次技术干货分享主要是讲解 PerfDog 卡顿 Jank 定义、原理、Stutter(卡顿率)及影响等。内容将分为六部分:FrameTime、FPS、流畅度、Jank(卡顿次数)、Stutter(卡顿率)、影响。从深层次分析在性能测试工作中这六部分起到的重要意义。
过去一周个人阅读和收藏的非技术文章精选,扩展 Android 之外的知识和视野,不要给自己设限
不惑之年想当初,致初入职场的我 : 前几天在稀土掘金的 2022 春招打卡活动上做了一场直播,主要是华为云开发者社区跟掘金的合作,内部同事找到我做导师。应该算是今年的第一场布道吧,也挺好的。2022 春招打卡活动火热进行中,更有机会与大厂导师 1v1 沟通!- 掘金 (juejin.cn)主要是面向工作 1-3 年或学生为主体的人群,以分享求职和职场经验为主,所以我选择了文章这个标题作为我的分享议题。
2022 招聘季|从招聘方的角度理解求职[23] : 前些日子,有位同学找我咨询求职问题。他本科专业其实不错,但是第一份工作没找好,所以只好报了家培训班,想社招之路走得更稳一些。结业之前,他担心培训班就业辅导不够,也找了几位外部导师帮忙。其中就包括我。熟悉我的人都知道,我比较反对报培训班,因为:这次咨询也基本印证了我的观点。所以我想再分享一下,到底招聘方的情况是怎样的,他们有哪些需求,准备简历的时候应该注意什么,面试的时候又应该注意什么。
十年创业者 万字长文分享我是怎么招人的[24] : S 级人才:心里有火,眼里有光,找方向、带队伍、卷出一片天
在美国如何和老板进行有效 1:1[25] : 刚开始工作的时非常小白,每次 1:1 都不知道聊什么,最多拉拉家常汇报一下自己的工作的进度,说完了进度就不知道要说什么了,有时候也挺尴尬的。后来慢慢开窍了,现在和老板的 1:1 非常 effective,从老板那里得到了很多我需要的帮助。老板,Skip manager,career coach 都在不同程度上夸过和我 1:1 非常高效
播客 - IT 那些事儿 #173 一本好书[26] : 读《刘擎西方现代思想讲义》,一场思维的探险,感受近 100 多年来,在历史上留下璀璨光芒的思想家/哲学家的思想旅程。得到有这本书的电子版:https://m.igetget.com/native/ebook#/ebook/detail?ebookId=DLnMGAEG7gKLyYmkAbPaEXxD8BM4J0Lzmx3ROrpdZn19VNzv2o5e6lqjQQ1poxqy&bookType=2&uid=oYnp6Fz-3UDS95kor7Dmkw&os=iOS
聊聊知乎一直存在的一个问题 : 问答和赞同在知乎初期是很好的内容组织形式。问答产品明确了大家的使用场景:都是来寻求「解法」。而赞同多寡可以快速筛选好的解法。但如今再回看,知乎的进一步发展反而被问答和赞同掣肘。知乎没有突破它们的瓶颈,还深陷进它们制造的沼泽。
Web 3.0 漫游指南 2022【完整篇】[27] : 这部小书,是我对 Web3 领域的一个记录,也将带有我比较强烈的个人观点。它能否见证 Web3 领域的波澜壮阔,我不敢说。但他绝对会是我这个自诩站在时代前沿(也可能是悬崖哈哈)的数字嬉皮士的思想汇总。
面对互联网 3.0(我称为 Web3.0 或 Web3)这个令人摩拳擦掌的全新世界,我开启了自己的“漫游之旅”,我记录自己的探索旅程,并且尝试用文字分享这股新浪潮中,慰藉我的每一朵浪花和差点击碎我的每一波骇浪。
Web3 行业,是混沌,也是光明。每一个深渊的穿行者,眼里始终是有光的。有幸,我有很多好朋友引领我进入这个领域,与我并肩而行。这种有同伴、被信任的感觉,是我探索未知的动力。也以此书,献给你们,献给这个新世界的开拓者们!
播客 - E26 |创业 10 年面试 2000 人,他们如何识别顶级人才?[28] : 人才对于一家公司的发展至关重要,招到一名顶级人才可顶“千军万马”,而招到一个不好的人才,不仅无益于公司发展,反而会带来负向影响。那么,如何识别顶级人才?遇到不打算换工作的优秀人才又如何吸引他加入?与此同时,春招季正在进行,对于刚毕业的同学,或是考虑换工作的职场人,又该如何进行面试?如何规划自己的职业发展?
本期节目,我们邀请到两位有丰富招聘经验的创业者,Presence 创始人周喆吾 Max,联合创始人陈桦 Grace 。Grace 从研一开始创业,至今有 10 年移动互联网的创业经验,曾创立冲顶大会等爆款产品。Max 曾在 Uber 、摩拜等快速发展的创业公司工作,也是准独角兽的联合创始人。10 年间,他们面试的候选人超过 2000 个,基于丰富的招聘实践,他们分享了识别人才的方法论、优秀人才具备的特质、挖人的小技巧等。对于招聘者,相信本期节目会让你收获满满,对于应聘者,不妨听听招聘者面试背后的逻辑和思考,并从中查缺补漏、提升自己!
时隔六年 经典重现——《平面设计中的网格系统》(经典版)出版及试读[29] : 隔六年,平面设计经典著作《平面设计中的网格系统》(Grid systems in graphic design)经过修订,并以「经典版」的名义再次与读者见面。
作者约瑟夫·米勒–布罗克曼(Josef Müller-Brockmann)作为瑞士平面设计风格的先驱,因他的极简主义和基于网格的平面设计而闻名,对 21 世纪的平面设计都产生了重大影响。《平面设计中的网格系统》一书对网格系统的各个方面进行了严谨探讨,旨在帮助平面设计师及该领域的学生们掌握网格设计的系统性方法。问世四十多年来,该书仍然是平面设计师必读的一本经典教科书。
潘爱民:计算机程序的演进——我的程序人生三十年 : 大神潘爱民,编程三十余年,从学生时代兴趣出发进入计算机世界,经历过北大教学科研、微软亚研系统研究,盛大、阿里的工业研发,走上创业之路,创立指令集进行系统软件的研发及落地场景应用。《新程序员 004》,一起走进潘爱民的程序人生,从中可以一窥过去三十年计算机程序的演进,也可以通过他的视角,看透未来十年的发展。面向未来,潘爱民说,在中国写代码的人数将在两到三年后达到高峰,更将诞生基于中文的编程语言。
设计思维研究综述[30] : 设计与创新是当前时代的主题。创新不等同于技术发明,而是通过设计将技术传递给用户的过程中创造价值,实现这种创新过程的思维方式就是设计思维。设计思维是一种有影响力、高效、可广泛采用的创新方式。设计思维可以广泛地扩展和整合到社会各领域、各层次,任何人或团体都可以利用设计思维高效地创造出新想法、实现这些想法,并使之发挥作用。目前,国内外学者对于设计思维及其相关方面已展开较为广泛的研究工作。从设计思维的内涵、设计思维的实施过程、设计思维方法和工具、以及设计思维的研究方法等方面系统地评述国内外学者对设计思维的研究现状,并给出目前研究存在的问题以及进一步研究的一些建议。
中国 Android 个人技术开源排行榜[31] : 在某一天,我突发奇想,Android 做开源的大佬很多,但是大多数人无法知道都有哪些人,于是乎我开源了一个项目,用于将 Android 行业中的开源大佬聚齐起来,大家不仅可以认识到这些开源大佬,还能知道他们有哪些优秀的开源作品,可以供我们学习和参考。于是我个人自发收集了这些人的名单,以下数据均来自纯手工采集,整个过程耗时两个多月,供大家参考,如有遗留请通过 issue 通知我补上,如有错误也请通过 issue 通知我修改。
Android Weekly-511[32]
Kotlin Weekly #295[33]
onCreate Digest - Issue #101[34]
NEWSLETTER #98[35]
NEWSLETTER #99[36]
Graphics Programming weekly - Issue 227[37]
软件测试周刊(第 64 期):要和能让你快乐的一切,定期联系
周刊(第 10 期):“忘记目标,专注于体系”
体验碎周报第 88 期(2022.3.28)
豆瓣地址:https://book.douban.com/subject/3652388/[38]
这本书主要介绍系统软件的运行机制和原理,涉及在 Windows 和 Linux 两个系统平台上,一个应用程序在编译、链接和运行时刻所发生的各种事项,包括:代码指令是如何保存的,库文件如何与应用程序代码静态链接,应用程序如何被装载到内存中并开始运行,动态链接如何实现,C/C++运行库的工作原理,以及操作系统提供的系统服务是如何被调用的。每个技术专题都配备了大量图、表和代码实例,力求将复杂的机制以简洁的形式表达出来。本书最后还提供了一个小巧且跨平台的 C/C++运行库 MiniCRT,综合展示了与运行库相关的各种技术。
对装载、链接和库进行了深入浅出的剖析,并且辅以大量的例子和图表,可以作为计算机软件专业和其他相关专业大学本科高年级学生深入学习系统软件的参考书。同时,还可作为各行业从事软件开发的工程师、研究人员以及其他对系统软件实现机制和技术感兴趣者的自学教材。
本书堪称是软件调试的“百科全书”。作者围绕软件调试的“生态”系统(ecosystem)、异常(exception)和调试器 3 条主线,介绍软件调试的相关原理和机制,探讨可调试性(debuggability)的内涵、意义以及实现软件可调试性的原则和方法,总结软件调试的方法和技巧。
豆瓣地址:https://book.douban.com/subject/30379453/[39]
第 1 卷主要围绕硬件技术展开介绍。全书分为 4 篇,共 16 章。第一篇“绪论”(第 1 章),介绍了软件调试的概念、基本过程、分类和简要历史,并综述了本书后面将详细介绍的主要调试技术。第二篇“CPU 及其调试设施”(第 2 ~ 7 章),以英特尔和 ARM 架构的 CPU 为例系统描述了 CPU 的调试支持。第三篇“GPU 及其调试设施”(第 8 ~ 14 章),深入探讨了 Nvidia、AMD、英特尔、ARM 和 Imagination 这五大厂商的 GPU。第四篇“可调试性”(第 15 ~ 16 章),介绍了提高软件可调试性的意义、基本原则、实例和需要注意的问题,并讨论了如何在软件开发实践中实现可调试性。
本书理论与实践紧密结合,既涵盖了相关的技术背景知识,又针对大量具有代表性和普遍意义的技术细节进行了讨论,是学习软件调试技术的宝贵资料。本书适合所有从事软件开发工作的读者阅读,特别适合从事软件开发、测试、支持的技术人员,从事反病毒、网络安全、版权保护等工作的技术人员,以及高等院校相关专业的教师和学生学习参考。
书籍信息:https://book.douban.com/subject/35233332/[40]
第 2 卷分为 5 篇,共 30 章,主要围绕 Windows 系统展开介绍。第一篇(第 1~4 章)介绍 Windows 系统简史、进程和线程、架构和系统部件,以及 Windows 系统的启动过程,既从空间角度讲述 Windows 的软件世界,也从时间角度描述 Windows 世界的搭建过程。第二篇(第 5~8 章)描述特殊的过程调用、垫片、托管世界和 Linux 子系统。第三篇(第 9~19 章)深入探讨用户态调试模型、用户态调试过程、中断和异常管理、未处理异常和 JIT 调试、硬错误和蓝屏、错误报告、日志、事件追踪、WHEA、内核调试引擎和验证机制。第四篇(第 20~25 章)从编译和编译期检查、运行时库和运行期检查、栈和函数调用、堆和堆检查、异常处理代码的编译、调试符号等方面概括编译器的调试支持。第五篇(第 26~30 章)首先纵览调试器的发展历史、工作模型和经典架构,然后分别讨论集成在 Visual Studio 和 Visual Studio(VS)Code 中的调试器,最后深度解析 WinDBG 调试器的历史、结构和用法。
本书理论与实践结合,不仅涵盖了相关的技术背景知识,还深入研讨了大量具有代表性的技术细节,是学习软件调试技术的珍贵资料。
这本书应当还有卷 3,此卷里会讲基于 Linux 平台的调试方法。
本次推荐的工具是 Cubox[41]:一站式信息收集、阅读、管理和回顾。善用网络碎片构建个人知识库
其中几个功能非常好
文章收集:你看到的一些好的文章,都可以一键收集到 Cubox 中,非常方便
Cubox 的客户端比较全,而且有微信小助手,发送文章到微信小助手就可以自动保存
Cubox 会帮你自动解析文章和存档,就算原网页看不了了,这里还可以看
Pro 版本价格也不贵
搜索功能很好用,写某一类文章的时候,搜索关键字就可以看到所有的相关 Tag 和内容的文章
我的 Weekly 文章就是使用 Cubox 收集的,每天回去会集中看一波,加一下 Tag、标注之类的,然后周末的时候集合成 Weekly,所以可以看到我这边看的东西比较杂~。~
当前前提是你会看,而不是丢过来就再也不看了,那样的话用什么工具都没有用
S 级人才,心里有火,眼里有光,找方向、带队伍、卷出一片天
付费知识星球简介:https://www.androidperformance.com/2022/03/13/the-performance/
2022-03-25,举行了第一期茶话会,分享了一些工作、技术相关的内容,内容回顾如下:https://www.androidperformance.com/2022/03/27/the-performance-tea-part-01/
由于微信外链限制,很多文章链接都无法直接访问,推荐大家订阅 NewsLetter 来获得更好的阅读体验,或者访问网页端或者知乎专栏
订阅地址:https://androidweekly.zhubai.love/
本文 NewsLetter 地址:https://androidweekly.zhubai.love/posts/2120535669259964416
本文知乎地址:https://zhuanlan.zhihu.com/p/489766416
[1]
视频 - iPhone 13 Pro/Max 为什么省电?- ProMotion 技术分析: https://www.bilibili.com/video/BV1qf4y1c74A
[2]【Android Monkey 源码解析一】-系统执行: https://zhuanlan.zhihu.com/p/482228753
[3]【Android Monkey 源码解析二】- 参数解析: https://zhuanlan.zhihu.com/p/483471502
[4]【Android Monkey 源码解析三】- 运行解析: https://zhuanlan.zhihu.com/p/484325050
[5]【Android Monkey 源码解析四】- 异常捕获/页面控制: https://zhuanlan.zhihu.com/p/484340427
[6]10 ideas to improve your Gradle build times [Part I]: https://blog.dipien.com/10-great-ideas-to-improve-your-gradle-build-times-2a6b281c69c6
[7]10 ideas to improve your Gradle build times [Part II]: https://blog.dipien.com/10-ideas-to-improve-your-gradle-build-times-part-ii-9551bb10e9bd
[8]10 ideas to improve your Gradle build times [Part III]: https://blog.dipien.com/10-ideas-to-improve-your-gradle-build-times-part-iii-db06392f253
[9]Notification runtime permission-Android13: https://techhype.io/articles/notification-runtime-permission-android13/
[10]视频 - Git 基本原理介绍: https://space.bilibili.com/364122352/channel/collectiondetail?sid=290009
[11]视频 - 智能终端产品 UX 设计中的人因研究-华为 张宇博 2020 第五届中国(重庆)人因工程高峰论坛: https://www.bilibili.com/video/av542425211
[12]Using Metal System Trace in Instruments to Profile Your App: https://developer.apple.com/documentation/metal/performance_tuning/using_metal_system_trace_in_instruments_to_profile_your_app/
[13][Android 禅修之路] Android 图形系统开篇: https://juejin.cn/post/7026351143714308132
[14][Android 禅修之路] SurfaceFlinger 的启动过程: https://juejin.cn/post/7026352122941669413
[15][Android 禅修之路] SurfaceFlinger 中的一些对象: https://juejin.cn/post/7028951141710823432
[16][Android 禅修之路] SurfaceFlinger 合成中的工作: https://juejin.cn/post/7030402577875337230
[17][Android 禅修之路] 解读 SurfaceFlinger 中的 BufferQueue: https://juejin.cn/post/7033402333128032286
[18][Android 禅修之路] 解读 Vsync(一): https://juejin.cn/post/7045996528942448648
[19][Android 禅修之路] 解读 Vsync(二): https://juejin.cn/post/7045996703219974157
[20][Android 禅修之路] 解读 GraphicBuffer 之 Framework 层: https://juejin.cn/post/7073137242755039246
[21][Android 禅修之路] 解读 GraphicBuffer 开篇: https://juejin.cn/post/7073137551673917447
[22]Jank 卡顿及 stutter 卡顿率说明: https://perfdog.qq.com/article_detail?id=10162&issue_id=0&plat_id=1
[23]2022 招聘季|从招聘方的角度理解求职: https://segmentfault.com/a/1190000041617937
[24]十年创业者 万字长文分享我是怎么招人的: https://presence.feishu.cn/docs/doccn71hTTKbaRGF8RvD2XzLJEK#
[25]在美国如何和老板进行有效 1:1: https://blog.1point3acres.com/effective-1-on-1-with-manager-or-skip-level/
[26]播客 - IT 那些事儿 #173 一本好书: https://www.xiaoyuzhoufm.com/episode/62373aed772fff76dd13755b?s=eyJ1IjogIjVmMzM1ZDdhZTBmNWU3MjNiYjVmNjkxNSJ9
[27]Web 3.0 漫游指南 2022【完整篇】: https://mirror.xyz/tannhauser2049.eth/vPrV-lqGjFpT2VWT4kDvtjhZayxm6n8ym7ra4wiegSc
[28]播客 - E26 |创业 10 年面试 2000 人,他们如何识别顶级人才?: https://www.xiaoyuzhoufm.com/episode/623a476e8b76f3fd82bbb8bb?s=eyJ1IjogIjVmMzM1ZDdhZTBmNWU3MjNiYjVmNjkxNSJ9
[29]时隔六年 经典重现——《平面设计中的网格系统》(经典版)出版及试读: https://www.thetype.com/2022/03/23385/
[30]设计思维研究综述: http://qikan.cmes.org/jxgcxb/CN/10.3901/JME.2017.15.001#1
[31]中国 Android 个人技术开源排行榜: https://github.com/getActivity/AndroidGithubBoss
[32]Android Weekly-511: https://androidweekly.net/issues/issue-511
[33]Kotlin Weekly #295: https://mailchi.mp/kotlinweekly/kotlin-weekly-295
[34]onCreate Digest - Issue #101: https://www.oncreatedigest.com/issues/oncreate-digest-issue-101-1090254
[35]NEWSLETTER #98: https://dormoshe.io/newsletters/ag/android/98
[36]NEWSLETTER #99: https://dormoshe.io/newsletters/ag/android/99
[37]Graphics Programming weekly - Issue 227: https://us16.campaign-archive.com/?e=3e7a3ba17e&u=c3c5ca4428be9ea8baed27659&id=d9fefac8d9
[38]https://book.douban.com/subject/3652388/: https://book.douban.com/subject/3652388/
[39]https://book.douban.com/subject/30379453/: https://book.douban.com/subject/30379453/
[40]https://book.douban.com/subject/35233332/: https://book.douban.com/subject/35233332/
[41]Cubox: https://cubox.pro/