公司:字节跳动
北京字节跳动科技有限公司,简称字节跳动,是一家位于中国北京的跨国互联网技术公司,成立于2012年3月,旗下有产品媒体聚合服务今日头条和短影音抖音(及其海外版本TikTok)、西瓜视频、社交平台Lemon8等,也有一些加入人工智能技术的专业生产力软件,例如剪映、办公套装拉客(lark,中国版本称飞书)等业务。
至2018年,字节跳动的移动应用月度用户超过十亿人,估值750亿美元,超越Uber成为全球最有价值的创业公司。截至2019年7月,字节跳动的产品和服务已覆盖全球150个国家和地区、75个语种,曾在40多个国家和地区位居应用商店总榜前列。
在中国互联网企业中,字节跳动是第一家没有向阿里巴巴、腾讯或百度寻求商业保护或融资的创业公司;相反地,字节跳动被认为与百度、腾讯两大巨头有强烈的竞争关系,因字节跳动资金主要来源于抖音和今日头条的广告收入。
至2020年3月,字节跳动已经有六万员工,并计划再增员一万人。投资人和内部消息将字节跳动2019年的营收定在1,040亿元至1,400亿元人民币,超过了Uber、Snapchat和推特的总和。在中国,其广告收入也超越了腾讯、仅次于阿里巴巴。抖音的全球下载量达1.15亿次,固定用户近10亿。
进化的隐藏水印:深度学习提升版权保护的鲁棒性
能抵抗剪切、拼接和编辑等攻击的隐藏水印了解一下?
基于 http-flv 的抖音直播端到端延迟优化实践
以抖音直播为例,直播链路各环节延迟贡献如下:
- 推流端——网络延迟平均 20 ~ 30ms,编码延迟依赖编码参数设置而定
- 流媒体服务——在拉流转码的场景下,会额外引入 300ms ~ 2s 的转码延迟(大小与转码参数相关),如果直接播放源流,则不存在转码延迟
- 播放端——网络延迟 100ms ~ 200ms 左右,主要是链路分发节点之间的传输延迟;防抖 buffer——5 ~ 8s
从各环节延迟贡献看,容易得出一个直观的结论:端到端延迟过大主要是播放器的防抖 buffer 造成,这个表面现象也经常会导致很多同学,认为降低播放器的 buffer,就能降低延迟。这个说法的对错,取决于从什么角度解释。
为Chromium实现MediaConfig API - 过程分享
在实现实现任何功能前,一般都需要有数据统计支撑,作为收益验证的手段以及测试 Case 收集的手段。因此,在尝试实现 HEVC 硬解前,首先需要统计有多少视频是 HEVC 视频,并拿到视频的解码参数。
很不幸,浏览器层面并未给我们暴露出视频的解码信息,比如分辨率,编码,Profile,色彩空间。这些一系列的视频参数,对于前端都是无感知且无法感知的。
因此,在往常,如果需要获取视频信息做数据统计,首先需要拿到视频的二进制数据,在前端解析视频的元数据(比如 HEVC VPS、SPS、PPS),来提取视频参数。这样做,缺点是显而易见的,这种方式并不支持原生的 Video 标签播放的内容,且需要额外二次发起请求,且需要针对每种编码均实现一遍。
因此,如果能从 Renderer 层,以浏览器视角,监听视频的解码信息,那或许我们则不需要做任何 Trick 的操作?我在这个过程尝试探索了一下,并成功实现了这个诉求。
融合模型权限管理设计方案
本方案梳理了业界主流权限模型,IT Saas 化中权限管理要解决的问题,参考了公司内外、国内外的一些权限设计方案,结合 RBAC、ABAC 模型提出了 ITAM 融合模型权限管理方案。
WebAssembly生态及关键技术综述
以全局视角论述 WebAssembly 技术生态发展情况以及其中涉及到的关键技术。是建立完整技术认知和体系的综述性文章,文章链接较多,建议在 PC 上访问阅读。
海量数据冷热分离方案与实践
随着财经支付业务的快速发展,考虑到未来订单量持续增长,在线存储遇到更大的挑战,需提前做好规划。目前财经支付主要业务都是使用 mysql(InnoDB)作为数据存储,因历史订单信息访问频率低并占用了大量数据库存储空间,期望将历史数据跟生产最新交易数据进行分离,当前数据库保留最近一段时间的数据作为热库,历史交易存入另一个数据库压缩存储作为冷库(rocksdb),即数据库冷热分离。此举将会极大的节省数据库设备成本,减少因在线存储空间不足扩容导致停服不可用的时长,以下基于财经支付的统一交易系统现状做的相关案例分析仅供大家参考。
都“2220”年了,Web前端测试就别“卷”了
前端测试也是一种自动化测试技术,其测试的主要对象就是 Web 应用的图形用户界面(GUI)、功能和可用性,以确保 Web 应用的 GUI 层在连续的更新迭代中没有 Bug。
例如,可以检查输入字段是否接受正确的字符,表单是否仅在填写所需字段后才提交,导航是否足够简单,页面加载是否足够快,等等。
前端测试的目标是测试功能,并验证网站或应用程序的表示层是否存在错误或无错误。测试必须在每次系统更新或变更后执行,以确保最近的更改不会对 UI 层产生任何预期外的影响。
星夜搭建平台结合微前端在火山引擎官网上的实践
搭建平台解决方案除了常见的 DSL 还是否有其他解决方案?Code In & Code Out 方案的价值在哪里?搭建平台又如何与微前端进行结合?
电影兑换券的推荐策略——二分图最优匹配算法
用户下了一笔订单,订单中有 x(根据业务场景,x <= 6)张电影票,y 张兑换券,从这 y 张兑换券中选择不超过 x 张兑换券,使得该笔订单的实际支付金额最少,如果有多种解决方案,那么根据以下优先级为用户推荐选券的方案:
- 优先级 1: 选择实际支付金额少的方案
- 优先级 2: 如果实际支付金额一致,则优先使用面值小的方案
- 原因:如果用户想购买一张票价为 38 元的电影票,当前他有一张 40 元和一张 60 元的兑换券,任意使用一张兑换券能得到的实际支付金额都是 0 元,那么优先为用户选择 40 元的兑换券,这样 60 元的兑换券就能服务于用户的下一笔订单,更能为用户省钱。
- 优先级 3: 若面值大小也一致,则优先使用优惠券所在券包消耗券数目多的优惠券
- 优先级 4: 若消耗券数目一致,则优先使用过期时间早的优惠券
字节跳动埋点数据流建设与治理实践(上)
本文将介绍字节跳动在埋点数据流业务场景遇到的需求和挑战以及具体实践,分为上下篇呈现。上篇主要包含埋点数据流简介与埋点数据流建设实践;下篇主要包含埋点数据流治理实践以及未来规划。
充分理解WebGL(六)
在前面几篇的内容里,我们的例子大部分都是黑白的,那是因为我们着重于渲染形状,基本没有考虑渲染成不同的颜色。
我们既然把 shader 中文翻译成“着色器”,顾名思义,“着色器”本身就是用来在画布上“着色”的,自然和颜色有着密切的关系。
话不多说,我们仍然通过代码由浅入深地来看一看。
抖音支付十万级 TPS 流量发券实践
近几年春节期间,抖音都会为用户带来各式各样的春节活动,每年都会有数亿用户参与其中。2022 年春节,抖音支付也参与了春节活动,面向海量用户发放抖音支付券,帮助用户在抖音春节活动中获得更好体验。对抖音支付来说,这是一个很大的挑战,因为之前抖音支付团队没有真正意义上经历过春节活动这种量级的应用场景,这对抖音支付营销系统是极大的考验。
字节跳动开源 Go HTTP 框架 Hertz 设计实践
Hertz 是字节跳动服务框架团队研发的超大规模的企业级微服务 HTTP 框架,具有高易用性、易扩展、低时延等特点。在经过了字节跳动内部一年多的使用和迭代,如今已在 CloudWeGo 正式开源。目前,Hertz 已经成为了字节跳动内部最大的 HTTP 框架,线上接入的服务数量超过 1 万,峰值 QPS 超过 4 千万。除了各个业务线的同学使用外,也服务于内部很多基础组件,如:函数计算平台 FaaS、压测平台、各类网关、Service Mesh 控制面等,均收到不错的使用反馈。在如此大规模的场景下,Hertz 拥有极强的稳定性和性能,在内部实践中某些典型服务,如框架占比较高的服务、网关等服务,迁移 Hertz 后相比 Gin 框架,资源使用显著减少,CPU 使用率随流量大小降低 30%-60%,时延也有明显降低。
Hertz 坚持内外维护一套代码,为开源使用提供了强有力的保障。通过开源, Hertz 也将丰富云原生的 Golang 中间件体系,完善 CloudWeGo 生态矩阵,为更多开发者和企业搭建云原生化的大规模分布式系统,提供一种现代的、资源高效的的技术方案。
西瓜视频 iOS 播放器技术重构
播放器是西瓜视频等视频类 App 最主要的业务场景,也是最主要的流量入口,其承载包括下层基础播放,上层的各种播放业务:状态栏、弹幕、音量、亮度、评论、点赞、进度、倍速、清晰度、选集、合集、商业化等。
西瓜对整个业务播放器做了整体抽象,提供了一套可插拔,可复用的播放器业务框架,包括:视频播放、播控交互、业务拓展。
本文播放器是指业务播放器,主要包括视频播放、播控交互、播放业务拓展,本播放器旨在提供一套完整的架构来包容播放器所有业务,实现播放业务可插拔。
2022 春节抖音视频红包系统设计与实现
在春节活动期间,抖音将视频和春节红包相结合,用户可以通过拍视频发红包的方式来给粉丝和好友送祝福。
整个活动玩法分为 B2C 和 C2C 两种玩法。
通过 Goyacc 构建 Elasticsearch Querystring 解析器 - 领域特定语言语法分析实践
领域特定语言(DSL),如 SQL、Elasticsearch Querystring 等,往往是为专门的目的设计的。在特定的任务中,DSL 通过在表达能力上做的妥协换取在某一领域内的高效。
在飞书套件日志系统的私有化研发过程中,为了符合研发同学查询日志的习惯,尝试使用 Elasticquery Querystring(下简称为 Querystring)作为过滤器的查询条件语句,由此需要可用的 Golang Querystring 解析器。由于目前开源界无法找到完善的实现,尝试使用 Goyacc 自行构建。