网易云音乐全链路埋点管理平台建设

2022-12-21
阅读 4 分钟
1.6k
在文章云音乐曙光埋点:还原数据理想国中,我们介绍了曙光埋点项目方案,该方案基于多端一致埋点对象树建设管理,实现了统一自动化埋点和链路追踪,方案高度还原了大前端埋点的理想状态、具备较强通用性和扩展性。我们围绕这套埋点方案研发了配套的埋点管理系统,以承载及埋点规则数据管理、埋点设计、埋点研发、埋点测...
封面图

你构建的代码为什么这么大

2022-12-20
阅读 6 分钟
1.6k
本文作者:文西前言代码体积的控制对前端来说至关重要,尽管网络条件逐渐变好,但是代码体积的增加不仅仅只影响资源加载速度,还会直接或间接影响浏览器各类性能指标。例如增加用户内存使用消耗,内存的增加又会更频繁的触发 V8 引擎的 GC 机制,进而影响页面交互性能。本文从一个典型的 Webpack+Babel 工程出发,找到构...
封面图

React Native工程Monorepo改造实践

2022-12-16
阅读 7 分钟
1.7k
那在开发过程中存在的问题就是每个收银台的核心逻辑如商品展示、支付方式展示、下单购买等逻辑都大致相同,而每次有修改或者新增需求的时候都需要开发多次,重复代码较多效率低下。
封面图

读懂 gradle dependencies

2022-12-13
阅读 12 分钟
1.5k
不过在使用 dependencies 时有一些细节之前一直没有搞清楚,遂研究了一下部分细节。本文整体参考 gradle 官方文档,大家感兴趣也可以自己深入研究下。
封面图

傻瓜方式分析前端应用的体积

2022-12-01
阅读 24 分钟
1k
图片来源:cdn77.com本文作者:xsy前端应用的 bundle 体积是影响应用性能的主要方面之一,我们看下取自 HTTP Archive - Loading Speed 的两幅截图大概是得益于设备性能以及带宽的提升,2022 年移动端页面资源的加载耗时相较 2017 年降低了 38.6%JS 启动耗时指的是脚本被解析执行的耗时,随着前端应用承载了越来越多的功...
封面图

扒一扒 Jetpack Compose 实现原理

2022-11-21
阅读 25 分钟
2.7k
Compose 是 Google 推出的现代化 UI 开发工具包,基于声明式 UI 开发风格,加上 @Composable 函数帮助开发者有效的实现关注点分离,另外 Compose 内部最大程度优化了重组范围,可以帮助我们高效的刷新UI,考虑到 Compose 整体架构设计过于复杂,这篇文章主要带大家了解 Compose Runtime 层核心的实现逻辑。
封面图

如何魔改Retrofit

2022-11-15
阅读 14 分钟
1.6k
Retrofit 是 Square 公司开源的网络框架,在 Android 日常开发中被广泛使用,开发者们对于 Retrofit 的原理、源码都已经有相当深入的分析。
封面图

云音乐iOS端代码静态检测实践

2022-11-07
阅读 13 分钟
2.2k
随着项目的扩大,依靠纯人工 Code Review 来保障代码质量、防止代码劣化变得”力不从心“。此时有必要借助代码静态分析能力,提升项目可持续发展所需要的自动化水平。针对 C、Objective-C 主流的静态分析开源项目包括:Clang Static Analyzer、Infer、OCLint 等。它们各自特点如下:
封面图

极致编译速度,一文搞定webpack5升级

2022-11-02
阅读 8 分钟
1.6k
本文作者:xiongxiao01在尝试升级 webpack5 之前,建议大家尽量先把官方文档通读一遍,可以少走很多弯路,本文是在结合具体业务场景后,对官方文档的归纳和补充。
封面图

Recoil 状态管理方案的浅入浅出

2022-10-11
阅读 9 分钟
1.9k
背景: Recoil 是 Facebook 推出的一款专门针对React应用的状态管理库,在一定程度上代表了目前的一种发展趋势,在使用时觉得一些理念很先进,能极大地满足作为一个前端开发者的数据需求,本文对 Recoil 的这些特性做一个梳理。
封面图

云音乐 iOS 启动性能优化「开荒篇」

2022-09-21
阅读 19 分钟
4.5k
  App 启动作为用户使用应用的第一个体验点,直接决定着用户对 App 的第一印象。云音乐作为一个有着近10年发展历史的 App,随着各种业务不停的发展和复杂场景的堆叠,不同的业务和需求不停地往启动链路上增加代码,这给 App 的启动性能带来了极大的挑战。而随着云音乐用户基数的不断扩大和深度使用,越来越多...
封面图

基于自建 VTree 的全链路埋点方案

2022-09-14
阅读 16 分钟
2.3k
  在当前移动互联网时代,一个产品想快速、准确的抢占市场,无疑是需要产品快速迭代更新,如何协助产品经理对产品当前的数据做出最优判断是关键,这就需要客户端侧提供高精度、稳定、全链路的埋点数据;做客户端开发的同学都深刻知道,想要在开发过程中满足上述三点,开发过程都是头大的;
封面图

基于 React Native 的动态列表方案探索

2022-09-13
阅读 7 分钟
2.1k
时至2022,精细化运营已经成为了各大App厂商的强需求,阿里的 DinamicX、Tangram 大家应该都很熟悉了,很多App厂商也自研了一些类似框架,基于DSL的动态化方案虽然有性能上的一些优势,但是毕竟不是图灵完备,一些需要逻辑动态下发的需求实现成本偏高,或由于DSL本身限制无法实现,针对这个问题我们使用RN进行了一下探索...
封面图

RTC 脚手架的设计和实现

2022-09-08
阅读 7 分钟
1.6k
RTC 即 Real-Time Communication 的简称是一种给行业提供高并发、低延时、高清流畅、安全可靠的全场景、全互动、全实时的音视频服务的终端服务。上面是比较官方的解释,通俗的来讲就是一种能够实现一对一、多对多音视频通话等众多功能的服务。目前提供该项服务的服务商有很多例如:声网、云信、火山引擎、腾讯云等。
封面图

心遇 Android 启动优化实践:将启动时间降低 50%

2022-09-02
阅读 12 分钟
2k
作为 APP 体验的重要环节,启动速度是各个技术团队关注的重点。几百毫秒启动耗时的增减都会影响用户的体验,并直接反应在留存上。心遇 APP 作为一款用于满足中青年市场用户社交诉求的应用,对各个性能层次的手机型号,都要求有良好的启动体验。因此,随着用户量快速增长,启动优化作为一个性能专项被提上了日程。
封面图

云音乐iOS端网络图片下载优化实践

2022-08-29
阅读 15 分钟
2.4k
图片展示,在各大APP中不可或缺,众所周知云音乐是一款带有社交属性的音乐软件,那么在任何社交场景,都会有展示图片的诉求,并且常常会有重图片场景,比如一个云音乐中Mlog的Feed流场景全都是图片,或者就是Mlog中的图集,都需要展示大量的图片,要是图片无法及时的展示出来,不能及时的被用户消费,那么会造成用户浏览...
封面图

项目RTL语言适配实践中遇到的问题和总结

2022-07-27
阅读 10 分钟
5.2k
当今大约有超过 22 个国家,6.6 亿人使用阿拉伯文字,使其成为仅次于拉丁文和中文的世界第三大书面语言。随着业务在海外扩展的逐渐深入,App 适配阿拉伯语已经提上了日程。与我们平时接触较多的中英文区别最明显的是,阿拉伯语的书写和使用习惯是从右到左的。尽管 iOS 本身已经有很多对于这种 RTL(Right-To-Left) 语言的...
封面图

Swift 中的 JSON 反序列化

2022-07-15
阅读 15 分钟
4.6k
图片来自:[链接] 本文作者:无帆业界常用的几种方案手动解码方案,如 Unbox(DEPRECATED)Swift 早期普遍采用的方案,类似的还有 ObjectMapper该方案需要使用者手动编写解码逻辑,使用成本比较高;目前已被 Swift 官方推出的 Codable 取代示例: {代码...} 阿里开源的 HandyJSONHandyJSON 目前依赖于从 Swift Runtime 源...
封面图

网易云音乐机器学习平台实践

2022-07-06
阅读 9 分钟
2.5k
在网易云音乐内部,机器学习平台早期主要承担着包括音乐推荐、主站搜索、创新算法业务在内的核心业务,慢慢地也覆盖包括音视频、NLP等内容理解业务。机器学习平台基础架构如下,目前我按功能将其抽象为四层,本篇文章也会从这四个方面详细描述我们在各个抽象层的具体工作。
封面图

React Native 中实现动态导入

2022-06-30
阅读 8 分钟
2.6k
随着业务的发展,每一个 React Native 应用的代码数量都在不断增加,bundle 体积不断膨胀,对应用性能的负面影响愈发明显。虽然我们可以通过 React Native 官方工具 Metro 进行拆包处理,拆分为一个基础包和一个业务包进行一定程度上的优化,但对日益增长的业务代码也无能为力,我们迫切地需要一套方案来减小我们 React ...
封面图

云音乐FeatureStore建设与实践

2022-06-29
阅读 7 分钟
2.7k
在机器学习全流程的生命周期中,Feature Store是连接Data和Model之间的桥梁。他通过存储和管理ML过程中的数据集和数据管道,减少特征工程的重复工作,以实现高效率的特征数据开发,缩短模型迭代周期。
封面图

云音乐预估系统建设与实践

2022-06-15
阅读 9 分钟
1.7k
    预估系统的核心任务是完成模型计算,可以认为模型就是一个函数(举例:f(x1, x2)= ax1 + bx2 +c)。其中参数a、b、c是通过模型训练得出的权重值,自变量x1与x2就是特征,模型计算就是使用自变量x1与x2求解的过程。    因此预估框架需要做的是:构造函数输入(特征),计算...
封面图

直播活动系统:基于消息总线的组合能力

2022-06-08
阅读 8 分钟
2k
所谓组装,就离不开老生常谈的复用,我们可以对大部分认为比较共性的场景做好系统级别的封装,封装成一个个复用度较高的服务,然后通过接口和扩展点的方式进行一部分的能力开放,但是有一种场景是解决不了的,就是当一个功能级别的代码执行结束后,希望触发到另外一个功能,同时希望这个功能是可以通过配置去解决的,并...
封面图

systrace 统计方法耗时

2022-06-07
阅读 6 分钟
2.6k
Android是单线程模型,用户的按键事件、屏幕触摸及 UI 绘制都在 UI 线程中处理。单线程意味着串行执行,如果某一个操作耗时了就会导致后续的操作都得等待,这个时候用户的第一感知就是卡了。所以在排查卡顿的时候有一个最简单的办法就是找出耗时长的方法。
封面图

云音乐低代码:基于 CodeSandbox 的沙箱性能优化

2022-05-27
阅读 11 分钟
3.1k
距离发布如何私有化部署 CodeSandbox 沙箱的文章《搭建一个属于自己的在线 IDE》 已经过了一年多的时间,最开始是为了在区块复用平台上能够实时构建前端代码并预览效果。不过在去年云音乐内部启动的基于源码的低代码平台项目中,同样有在线实时构建前端应用的需求,最初是采用从零开发沙箱的方式,不过自研沙箱存在以下...
封面图

服务启动过程性能波动的分析与解决方案

2022-05-26
阅读 6 分钟
1.8k
本文仅分享自己在工作中遇到的问题时的解决方案和思路,以及排查的过程。重点还是分享排查的思路,知识点其实已经挺老了。如有疑问或描述不妥,欢迎赐教。
封面图

NUMA架构下的预估系统性能优化

2022-05-19
阅读 3 分钟
2.1k
在推荐业务中,经典的分层逻辑为三层:召回、精排、重排,其中精排层无疑又是最复杂、最具挑战性的一个环节,预估系统主要是为精排业务提供在线推理的服务。
封面图

React 组件库 CSS 样式方案分析

2022-05-13
阅读 7 分钟
3.8k
随着业务的发展,一些代码逻辑可能同时在多个项目中使用,为了避免每次使用和更新都要复制粘贴代码,构造一个组件库就十分有必要了。构建组件库有很多需要考虑的方面,本文主要讨论在 React 生态下,如何选择一种适合组件库的 CSS 样式方案。
封面图

Disruptor在云音乐特征服务中的应用

2022-05-11
阅读 12 分钟
1.4k
我们的线上特征数据服务DataService,为了解决使用线程池模型导致机器cpu利用率不高,长尾请求延迟不线性(p99、p999出现J型曲线)的问题。在利用Disruptor替换线程池之后取得不错的性能结果。本文主要是简单的介绍一下对Disruptor的个人理解以及落地的结果。
封面图

Chrome插件:云音乐听歌识曲

2022-05-05
阅读 5 分钟
4.2k
当你用网页在视频网站刷视频的时候,有没有碰到过一个 BGM 激起你内心的波澜,而你却不知道它的名字。此时只能打开手机进行听歌识曲,而通过一个浏览器的插件却更容易解决这个问题。不需要繁琐的掏出手机,也不会因为需要外放而干扰他人,更不会因为环境噪音而识别困难。
封面图