字节跳动技术团队年度 TOP10 技术干货,陪你度过不平凡的 2020

2023-10-31

2020 注定是不平凡的一年,在这特殊的一年里,字节跳动技术团队依旧在技术人身边,分享字节跳动的技术实践。

本年度字节跳动技术团队共发布了50篇技术干货,其中许多都受到读者的喜爱。值此元旦佳节,我们精选出了其中最受大家欢迎的10 篇文章,供大家回顾,点击文章标题即可阅读全文。

TOP 1:字节跳动混沌工程实践总结

#基础架构 #混沌工程

混沌工程是通过故障注入的方式帮助系统寻找薄弱点,从而提高系统的稳定性。随着微服务、云原生相关技术的发展,分布式系统已经流行在业界各处,但因此也带来了复杂度急剧上升、故障发生难以预测后果、难以避免与验证等挑战。而混沌工程正是通过故障注入等方式为切入点,帮助解决以上问题。本文讨论了字节跳动引入混沌工程以来的相关实践,希望能提供一些参考。

TOP 2:字节跳动自研万亿级图数据库 & 图计算实践

#基础架构 #图数据库 #ByteGraph

2019 年,Gartner 将图列为 2019 年十大数据和分析趋势之一,字节跳动在面对把海量内容推荐给海量用户的业务挑战中,也大量采用图技术。本文将对字节跳动自研的分布式图数据库和图计算专用引擎做深度解析和分享,展示新技术是如何解决业务问题,影响几亿互联网用户的产品体验。

TOP 3:今日头条品质优化 - 图文详情页秒开实践

#客户端 #性能优化

作为一个内容类应用,看新闻读资讯一直是头条用户的核心需求,页面的打开速度直接关系到用户使用头条的核心体验,在头条中,为了更多的承载足够丰富的样式和逻辑下保持多端体验的统一,详情页的内容我们是通过 WebView 来承载的,但 WebView 本身的性能相比 Native 来说比较差,因此,今日头条技术团队一直致力于优化详情页的加载速度。

经过不断的优化,目前今日头条中详情页在线上的打开体验,从肉眼上基本已经感知不到加载过程。在接下来这篇文章里,我们会逐步拆解和介绍我们对详情页加载优化的思路和实践。

TOP 4:“���”引发的线上事故

#Go #服务端

本文对一起依赖升级 + 异常数据引发的线上事故进行回顾和总结。得出如下反思:

  1. 服务重大版本更新,至少在线下跑一周。

  2. 有问题,第一时间回滚。

  3. 对于工具的使用要规范。如不要随意更改 vendor 文件夹的内容而不同步更新vendor.json文件,反之亦然。

  4. 因为go mod的版本选择以及不遵守开源规范的第三方库作者会让使用者不知不觉、被动地引入一些难以发现的问题。可以使用go mod vendor代替,如果要锁死版本的话,使用 replace。

TOP 5:iOS性能优化实践:头条抖音如何实现OOM崩溃率下降50%+

#客户端 #iOS #OOM

iOS OOM 崩溃在生产环境中的归因一直是困扰业界已久的疑难问题,字节跳动旗下的头条、抖音等产品也面临同样的问题。

在字节跳动性能与稳定性保障团队的研发实践中,我们自研了一款基于内存快照技术并且可应用于生产环境中的 OOM 归因方案——线上 Memory Graph。基于此方案,3 个月内头条抖音 OOM 崩溃率下降 50%+。

本文主要分享下该解决方案的技术背景,技术原理以及使用方式,旨在为这个疑难问题提供一种新的解决思路。

TOP 6:字节跳动在 Go 网络库上的实践

#Go #基础架构

RPC 框架作为研发体系中重要的一环,承载了几乎所有的服务流量。本文将简单介绍字节跳动自研网络库 netpoll 的设计及实践;以及实际遇到的问题和解决思路,希望能为大家提供一些参考。

TOP 7:YARN 在字节跳动的优化与实践

#YARN #基础架构

本文从利用率提升、多负载场景优化、稳定性提升、异地多活四个方面介绍了字节跳动在四年来对 Hadoop YARN 进行的一系列的优化,以及生产环境中的实践经验。

TOP 8:Fastbot:行进中的智能 Monkey

#测试 Fastbot

字节自研测试工具 Fastbot,是基于模型的智能 GUI 测试服务。我们分拆服务至客户端和服务端,客户端做 GUI 监听和动作注入,服务端做模型构建和算法决策,使用强化学习研发多种智能搜索算法,有效避免 GUI 测试局部死循环问题,大幅提升测试覆盖率。

TOP 9:抖音包大小优化-资源优化

#Android #性能优化 #包大小

随着业务的快速迭代,抖音 Android 端的包大小爆发式增长。包大小直接影响到下载转化率、推广成本、运行内存和安装时间等因素,因此对 apk 进行瘦身是一件很有必要且收益很大的事情。apk 主要由 dex、resource、asserts、native libraries 和 meta-data 组成,针对每一部分,都可以专项去做包大小优化。

其中,资源在 apk 包体积中占比很大,针对资源进行优化是包大小优化中很重要的部分。本着追求极致的原则,本文详细阐述抖音 Android 端针对资源部分的优化措施。

TOP 10:抖音 Android 性能优化系列:Java 内存优化篇

#Android #性能优化 #JAVA #OOM

内存作为计算机程序运行最重要的资源之一,需要运行过程中做到合理的资源分配与回收,不合理的内存占用轻则使得用户应用程序运行卡顿、ANR、黑屏,重则导致用户应用程序发生 OOM(out of memory)崩溃。抖音作为一款用户使用广泛的产品,需要在各种机器资源上保持优秀的流畅性和稳定性,内存优化是必须要重视的环节。

本文从抖音 Java OOM 内存优化的治理实践出发,尝试给大家分享一下抖音团队关于 Java 内存优化中的一些思考,包括工具建设、优化方法论。

互动有奖

在评论区说出 2020 你最难忘的技术故事。

截止 2021 年 1 月 4 日 0 点,评论区点赞第 1 名可获得精美新春养生壶,第 2-10 名可获得字节跳动技术学院抱枕。快来参与吧!‍


欢迎关注「 字节跳动技术团队 」

简历投递联系邮箱「 tech@bytedance.com 」

 点击阅读原文,快来加入我们吧!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

字节跳动技术团队年度 TOP10 技术干货,陪你度过不平凡的 2020 的相关文章

  • 检查双精度值的等于和不等于条件

    我在比较两者时遇到困难double values using and 我创建了 6 个双变量并尝试进行比较If健康 状况 double a b c d e f if a b c d e f My code here in case of t
  • 如何打印整个字符串池?

    我想打印包含文字的整个字符串池String使用添加的对象intern 就在垃圾收集之前 JDK有没有隐式的方法来进行这样的操作 我们如何检查字符串池 EDIT The comment suggests that there may be a
  • Java 创建浮雕(红/蓝图像)

    我正在编写一个 Java 游戏引擎 http victoryengine org http victoryengine org 并且我一直在尝试生成具有深度的 3D 图像 您可以使用那些红色 蓝色眼镜看到 我正在使用 Java2D 进行图形
  • Java 泛型/类型调度问题

    考虑以下程序 import java util List import java util ArrayList public class TypeTest public static class TypeTestA extends Type
  • Google Inbox 类似 RecyclerView 项目打开动画

    目前 我正在尝试实现 Google Inbox 例如RecyclerView行为 我对电子邮件打开动画很好奇 我的问题是 该怎么做 我的意思是 他们使用了哪种方法 他们用过吗ItemAnimator dispatchChangeStarti
  • Spring Stomp over Websocket:流式传输大文件

    我的SockJs客户端在网页中 发送帧大小为16K的消息 消息大小限制决定了我可以传输的文件的最大大小 以下是我在文档中找到的内容 Configure the maximum size for an incoming sub protoco
  • spring - 强制 @Autowired 字段的 cglib 代理

    我有混合堆栈 EJB 和 Spring 为了将 Spring 自动装配到 EJB 我使用SpringBeanAutowiringInterceptor 不确定这是否会影响我遇到的问题 在尝试通过以下方式自动装配 bean 时 Scope p
  • cucumber-junit-platform-engine 中的功能文件发现

    In cucumber junit我使用的库 CucumberOptions定义功能文件位置 package com mycompany cucumber import cucumber api CucumberOptions import
  • Java:VM 如何在 32 位处理器上处理 64 位“long”

    JVM 如何在 32 位处理器上处理 64 位的原始 long 在多核 32 位机器上可以并行利用多个核心吗 64 位操作在 32 位机器上慢了多少 它可能使用多个核心来运行不同的线程 但不会并行使用它们进行 64 位计算 64 位长基本上
  • 为什么 ConcurrentHashMap::putIfAbsent 比 ConcurrentHashMap::computeIfAbsent 更快?

    使用 ConcurrentHashMap 我发现computeIfAbsent 比putIfAbsent 慢两倍 这是简单的测试 import java util ArrayList import java util List import
  • Apache Commons CLI:替代已弃用的 OptionBuilder?

    IntelliJ 显示此示例代码中不推荐使用 OptionBuilderhttp commons apache org proper commons cli usage html http commons apache org proper
  • 在 Selenium WebDriver 上如何从 Span 标签获取文本

    在 Selenium Webdriver 上 如何从 span 标记检索文本并打印 我需要提取文本UPS Overnight Free HTML代码如下 div id customSelect 3 class select wrapper
  • 使用 Java 从 S3 上的文件在 S3 上创建 zip 文件

    我在 S3 上有很多文件 需要对其进行压缩 然后通过 S3 提供压缩文件 目前 我将它们从流压缩到本地文件 然后再次上传该文件 这会占用大量磁盘空间 因为每个文件大约有 3 10MB 而且我必须压缩多达 100 000 个文件 所以一个 z
  • 如何在android sdk上使用PowerMock

    我想为我的 android 项目编写一些单元测试和仪器测试 然而 我遇到了一个困扰我一段时间的问题 我需要模拟静态方法并伪造返回值来测试项目 经过一些论坛的调查 唯一的方法是使用PowerMock来模拟静态方法 这是我的 gradle 的一
  • 我想要一个 Java 阿拉伯语词干分析器

    我正在寻找阿拉伯语的 Java 词干分析器 我找到了一个名为 AraMorph 的库 但它的输出是无法控制的 并且它会形成不需要的单词 还有其他阿拉伯语词干分析器吗 这是新的阿拉伯语词干分析器 Assem 的阿拉伯语轻词干分析器 http
  • 如何移动图像(动画)?

    我正在尝试在 x 轴上移动船 还没有键盘 我如何将运动 动画与boat png而不是任何其他图像 public class Mama extends Applet implements Runnable int width height i
  • 重写Object类的finalize()方法有什么用?

    据我所知 在java中如果我们想手动调用垃圾收集器 我们可以执行System gc 1 我们在重写的finalize 方法中做了哪些操作 2 如果我们想手动调用JVM垃圾收集器 是否需要重写finalize 方法 我们在重写的 Finali
  • 从一个文本文件中获取数据并将其移动到新的文本文件

    我有一个文件 里面有数据 在我的主要方法中 我读入文件并关闭文件 我调用另一种方法 在原始文件的同一文件夹内创建一个新文件 所以现在我有两个文件 原始文件和通过我调用的方法生成的文件 我需要另一种方法 从原始文件中获取数据并将其写入创建的新
  • Java中有类似分支/跳转表的东西吗?

    Java有类似分支表或跳转表的东西吗 分支表或跳转表是 根据维基百科 http en wikipedia org wiki Branch table 用于描述使用分支指令表将程序控制 分支 转移到程序的另一部分 或可能已动态加载的不同程序
  • java中如何找到class文件的包

    我正在编写一个使用 class 文件的 java 程序 我希望能够读取文件系统上的 class 文件 使用 InputStream 并确定它所在的包 该 class 文件可能不在一个好的包目录结构中 它可能位于某个随机位置 我怎样才能做到这

随机推荐

  • wangEditor富文本编辑器图片/视频上传

    wangEditor 有丰富的 API 和足够的扩展性 允许我们自定义开发菜单 模块 插件等 在Vue React中运用也很方便 因此本文介绍下vue中富文本上传图片和视频 安装引入后富文本有显示上传图片按钮 点击上传后会报没有配置上传地址
  • 14. TypeScript 自定义类型

    TypeScript 自定义类型 1 Diff实现 求两个对象不同的部分 let person1 name 123 age 11 address 456 let person2 address 123 type Diff
  • 基于Python+Pytest+Selenium的自动化测试之PO模式简介

    在实际的软件研发过程中 往往会存在项目时间紧张 待测工作量大 待测的功能点较多 但是团队测试人员有限 难以全部测试覆盖的问题 针对问题 我们可以通过自动化测试去解决一些测试工作中遇到的实际问题 把一些工作写成代码 交给机器去处理和执行 解放
  • java中常见的异常及处理方法

    1 java lang nullpointerexception 这个异常大家肯定都经常遇到 异常的解释是 程序遇上了空指针 简单地说就是调用了未经初始化的对象或者是不存在的对象 这个错误经常出现在创建图片 调用数组这些操作中 比如图片未经
  • Ajax基本案例详解之load的实现

    Ajax的load实现 看这篇之前建议大家去看看前面两篇文章 1 Ajax基本案例详解之 ajax的实现 2 Ajax基本案例详解之 get的实现 现在写一下 load 里面的主要内容 semail load doindex jsp ema
  • git恢复修改的文件

    文件修改后想反悔 三种情况 1 未进行任何操作 仅仅修改了文件 2 执行了git add将文件推到了暂存区 3 执行了git commit将文件推到了本地仓库 处理方法 针对情况1 只需要执行git checkout 文件名 情况2 首先g
  • linux常用命令汇总

    内存 cpu查看 free h 以合适内存单位显示内存情况 free s 数字 每几秒刷新内存显示 top 按e切换显示单位 防火墙 centos7 查看防火墙状态 firewall cmd state 停止firewall systemc
  • 服务器无法加载海康sdk依赖的问题

    首先遇到的jna jar和examples jar无法加载的问题 尝试了很多方法无效 以下方法实测有效 其次是动态链接库无法加载的问题 而且是播放库 我的方法比较简单 netsdk加载出来就行了 播放库用不到 删掉引用就行了 最后 我尝试了
  • Android程序员必备!Android学习笔记在互联网上火了,成功定级腾讯T3-2

    前言 2020年是转折的一年 上半年疫情原因 很多学android开发的小伙伴失业了 虽找到了一份工作 但高不成低不就 下半年金九银十有想法更换一份工作 很多需要大厂面试经验和大厂面试真题的小伙伴 想提前准备刷下题 接下来分享一份我的字节跳
  • 财务风险管理的内容

    财务风险管理的内容 一 筹资风险管理 筹资风险来源于两个方面 一是偿债风险 由于借入资金严格规定了借款方式 还款期限和还款金额 如果企业负债较多 而经营管理和现金管理不善 可能导致企业不能按期还本付息 就会产生偿债风险 偿债风险如不能通过财
  • nginx:accept() failed (24: Too many open files)解决方法

    有一台服务器访问量非常高 使用的是nginx 错误日志不停报以下错误 2010 05 26 08 53 49 alert 13576 0 accept failed 24 Too many open files 2010 05 26 08
  • 【R语言】期末大作业

    头部 title LZW HR dashboard report output flexdashboard flex dashboard orientation columns vertical layout fill source cod
  • Ant Design Cascader 交互场景

    何时使用 需要从一组相关联的数据集合进行选择 例如省市区 公司层级 事物分类等 从一个较大的数据集合中进行选择时 用多级分类进行分隔 方便选择 比起 Select 组件 可以在同一个浮层中完成选择 有较好的体验 业务场景 提交选择器子选项
  • C++面试题(四)——智能指针的原理和实现

    C 面试题 四 智能指针的原理和实现 tanglu2004 http blog csdn net worldwindjp C 面试题 一 二 和 三 都搞定的话 恭喜你来到这里 这基本就是c 面试题的最后一波了 1 你知道智能指针吗 智能指
  • Commit Lint 代码提交规范

    Commit Lint 代码提交规范 前端后端都可以这样配置的 install commitlint npm install save dev commitlint config conventional commitlint cli In
  • 【待完成】从StrongPity一联网组件到APT的溯源与追踪-中-从单一样本到历史样本和初始载荷

    从单一样本追踪溯源APT历史样本和初始载荷 基于PE结构寻找同源样本 Icon图标Hash ImpHash和version info 基于组件找初始载荷 通过初始载荷扩线 基于PE结构寻找同源样本 Icon图标Hash 通过VT搜索该PE文
  • Python爬虫案例解析:五个实用案例及代码示例(学习爬虫看这一篇文章就够了)

    导言 Python爬虫是一种强大的工具 可以帮助我们从网页中抓取数据 并进行各种处理和分析 在本篇博客中 我们将介绍五个实用的Python爬虫案例 并提供相应的代码示例和解析 通过这些案例 读者可以了解如何应用Python爬虫来解决不同的数
  • L-shape 方法

    L shape 方法是求解两阶段随机规划的一种常用方法 基本思想是利用切平面将第二阶段的反馈函数线性化 在构造切平面条件时有点类似 bender s 方法 注 这个图形中黑实线 Q x mathcal Q x Q x 就是下面模型中的
  • 【已解决】ModuleNotFoundError: No module named ‘distutils.util‘

    系统从Ubuntu18 04升级到20 04 内核也变动了很多次 之前运行在python3 6正常的代码突然报错 ModuleNotFoundError No module named distutils util 网上的解决方法 sudo
  • 字节跳动技术团队年度 TOP10 技术干货,陪你度过不平凡的 2020

    2020 注定是不平凡的一年 在这特殊的一年里 字节跳动技术团队依旧在技术人身边 分享字节跳动的技术实践 本年度字节跳动技术团队共发布了50篇技术干货 其中许多都受到读者的喜爱 值此元旦佳节 我们精选出了其中最受大家欢迎的10 篇文章 供大