背景最近在对一些大厂App进行研究学习,在对某音App进行研究时,发现其在线程方面做了一些优化工作,并且其解决的问题也是之前我在做线上卡顿优化时遇到的,因此对其具体实现方案做了深入分析。本文是对其相关源码的研究加上个人理解的一个小结。问题创建线程卡顿我们可以可以知道start()函数底层涉及到一系列的操作,包括栈内存空间分配、内核线程创建等操作,这些操作在某些情况下可能出现长耗时现象,比如由于linux系统中,所有系统线程的创建在内核层是由一个专门的线程排队实现,那么是否可能由于队列较长同时内核调度出现问题而出现长耗时问题?具体的原因因为没有在线下复现过此类问题,因此只能大胆猜测,不过在线上确
切记!不要自作聪明!请仔细通读本文档再安装,不然报错会让你抓狂!即使你对PHP非常熟悉,对uniapp非常熟悉,也必须通读文档,严格遵守文档的所写的,不然100%有报错,绝无可能顺利安装成功。1、服务器环境要求Centos7.6 、php7.2、mysql5.7(必须严格遵守,特别是服务器版本,不然ffmpeg无法正常安装成功)尽可能走宝塔部署,且用上面的环境要求,mysql在宝塔中只能存在一个版本服务器需要安装php插件 ffmpeg宝塔里进入终端然后输入wgethttp://download.bt.cn/install/ext/ffmpeg.sh&&shffmpeg.sh 并回车,等待他
切记!不要自作聪明!请仔细通读本文档再安装,不然报错会让你抓狂!即使你对PHP非常熟悉,对uniapp非常熟悉,也必须通读文档,严格遵守文档的所写的,不然100%有报错,绝无可能顺利安装成功。1、服务器环境要求Centos7.6 、php7.2、mysql5.7(必须严格遵守,特别是服务器版本,不然ffmpeg无法正常安装成功)尽可能走宝塔部署,且用上面的环境要求,mysql在宝塔中只能存在一个版本服务器需要安装php插件 ffmpeg宝塔里进入终端然后输入wgethttp://download.bt.cn/install/ext/ffmpeg.sh&&shffmpeg.sh 并回车,等待他
作者|王海超背景介绍直播OOM问题比较棘手难以定位,主要体现在涉及的业务很多,从定位到解决花费时间比较久。为了提前触达问题,提高定位的效率,也是对现有工具的补充,提出直播内存抖动解决方案-MemoryThrashing。为什么要提出这个方案?现有的“MemoryGraph”工具可以通过抓取的“MemoryGraph”文件分析OOM成因,比如内存泄漏、内存占用过高导致的OOM问题,但因为性能开销很大,所以是采样上报且采样率很低,不容易触达问题,只能定向对已知用户开启才行。期望自研一个工具,在内存增长时可以发现问题,也能用于OOM发生后的分析,同时具备性能开销小、全采样的能力;“MemoryGra
作者|王海超背景介绍直播OOM问题比较棘手难以定位,主要体现在涉及的业务很多,从定位到解决花费时间比较久。为了提前触达问题,提高定位的效率,也是对现有工具的补充,提出直播内存抖动解决方案-MemoryThrashing。为什么要提出这个方案?现有的“MemoryGraph”工具可以通过抓取的“MemoryGraph”文件分析OOM成因,比如内存泄漏、内存占用过高导致的OOM问题,但因为性能开销很大,所以是采样上报且采样率很低,不容易触达问题,只能定向对已知用户开启才行。期望自研一个工具,在内存增长时可以发现问题,也能用于OOM发生后的分析,同时具备性能开销小、全采样的能力;“MemoryGra
作者|张冀朱丹翔 背景对抗是反作弊永恒的主旋律,面对对抗我们需要做到快速响应、见招拆招、在变化中发现不变的本质。在反作弊场景中,黑产必须通过文本进行信息传递或触达受害者,而文本由于其生产成本低廉、传递信息能力强的特点成为了黑产与我们进行对抗的主要战场。文本理解算法为应对各类强对抗提供了文本检索、文本风险标签、风险信息提取的能力,以及一个文本模型训练平台。这些能力的组合使用可有效打击文本内容维度的作弊行为,现已在反作弊的各业务场景中得到应用。文本检索如上所述反作弊风控就是一个和黑产持续强对抗的过程,而强对抗的一个显著特点就是快速的变化,所以常规的先收集标注数据再训练模型的方式很难跟得上黑产变化的
作者|张冀朱丹翔 背景对抗是反作弊永恒的主旋律,面对对抗我们需要做到快速响应、见招拆招、在变化中发现不变的本质。在反作弊场景中,黑产必须通过文本进行信息传递或触达受害者,而文本由于其生产成本低廉、传递信息能力强的特点成为了黑产与我们进行对抗的主要战场。文本理解算法为应对各类强对抗提供了文本检索、文本风险标签、风险信息提取的能力,以及一个文本模型训练平台。这些能力的组合使用可有效打击文本内容维度的作弊行为,现已在反作弊的各业务场景中得到应用。文本检索如上所述反作弊风控就是一个和黑产持续强对抗的过程,而强对抗的一个显著特点就是快速的变化,所以常规的先收集标注数据再训练模型的方式很难跟得上黑产变化的
背景Java多线程开发中为了保证数据的一致性,引入了同步锁(synchronized)。但是,对锁的过度使用,可能导致卡顿问题,甚至ANR:Systrace中的主线程因为等锁阻塞了绘制,导致卡顿Slardar平台(字节跳动内部APM平台,以下简称Slardar)中搜索waitingtolock关键字发现很多锁导致的ANR,仅Java锁异常占到总ANR的3.9%本文将着重向大家介绍Slardar线上锁监控方案的原理与使用方法,以及我们在抖音上发现的锁的经典案例与优化实践。监控方案获取运行时锁信息的方法有以下几种方案应用范围特点systrace线下可以发现锁导致的耗时没有调用栈定制ROM线下可以支
背景Java多线程开发中为了保证数据的一致性,引入了同步锁(synchronized)。但是,对锁的过度使用,可能导致卡顿问题,甚至ANR:Systrace中的主线程因为等锁阻塞了绘制,导致卡顿Slardar平台(字节跳动内部APM平台,以下简称Slardar)中搜索waitingtolock关键字发现很多锁导致的ANR,仅Java锁异常占到总ANR的3.9%本文将着重向大家介绍Slardar线上锁监控方案的原理与使用方法,以及我们在抖音上发现的锁的经典案例与优化实践。监控方案获取运行时锁信息的方法有以下几种方案应用范围特点systrace线下可以发现锁导致的耗时没有调用栈定制ROM线下可以支
作者|王展、张宇、罗群锋、谷春晖背景抖音Feed容器在推荐、关注、同城、朋友等多个场景中使用,每个场景都有自身的逻辑和业务,最终汇总在FeedViewController中,随着业务的迭代,代码越来越臃肿,面临如下的问题:容器类(FeedViewController)有10000+行,还有十多个业务分类,整体的理解和维护成本高容器类框架和业务边界不清晰,框架代码的修改不收敛和不规范,业务改动可能导致线上问题,如数据层不收敛导致的问题:自动删除导致一次滑动多个视频或者自动跳转到第一个视频等问题容器类承担了推荐、关注、朋友三个大场景,细节的业务逻辑差异较多,目前多业务代码耦合在一起,增加新功能时需