2022 年 6 月在 Flutter 3.0 版本中 Google 官方正式将渲染器 Impeller 从独立仓库中合入 Flutter Engine 主干进行迭代,这是 2021 年 Flutter 团队推动重新实现 Flutter 渲染后端以来,首次正式明确了 Impeller 未来代替 Skia 作为 Flutter 主渲染方案的定位。Impeller 的出现是 Flutter 团队用以彻底解决 SkSL(Skia Shading Language) 引入的 Jank 问题所做的重要尝试。官方首次注意到 Flutter 的 Jank 问题是在 2015 年,当时推出的最重要的优化是对 Dart 代码使用 AOT 编译优化执行效率。在 Impeller出现之前,Flutter 对渲染性能的优化大多停留在 Skia 上层,如渲染线程优先级的提升,在着色器编译过久的情况下切换 CPU 绘制等策略性优化。
字节的数据可分为端数据和业务数据,这些记录往往需要通过加工处理才能产生业务价值。数据加工处理的流程一般是读取原始数据,进行数据清洗,再经过多种计算和存储,最终汇入指标、报表和数据服务系统。数据血缘描述了数据的来源和去向,以及数据在多个处理过程中的转换,是组织内使数据发挥价值的重要基础能力。
基于字节跳动分布式治理的理念,数据平台数据治理团队自研了 SLA 保障平台,目前已在字节内部得到广泛使用,并支持了绝大部分数据团队的 SLA 治理需求,每天保障的 SLA 链路数量过千,解决了数据 SLA 难对齐、难保障、难管理的问题。
字节跳动的大数据业务和底层运算能力近年来发展迅速,本文介绍了字节跳动在流式计算和批式计算方面的重大演进以及最佳实践。
计算机或手机的渲染是一个非常复杂的过程,本文介绍了渲染相关的一些基础知识,并结合 iOS 和安卓的技术框架介绍了移动端渲染原理,最后详细的解析了 iOS 中的离屏渲染以及圆角优化的一些方法。
在数据领域,有几类经典的查询场景:1.想要统计某段时间内访问某网站的 UV 数,或是统计某段时间内既访问了页面 A 又访问了页面 B 的 UV 数,亦或是统计某段时间内访问了页面 A 但未访问页面 B 的 UV 数,通常我们对这种查询叫做基数统计。2. 想要观察某些指标的数据分布,例如统计某段时间范围内访问页面 A 与页面 B 各自的浏览时长 95 分位数、50 分位数,则需要用到分位数统计。3. 想要统计某段时间内播放量最多或者点击率最高的 10 个视频或者文章(热榜列表),则需要用到 TopN 统计。