[转载] 快手主播稳定性 - Mach Port 超限问题治理
本文介绍了快手客户端团队处理的 Mach Port 超限导致异常退出的问题。介绍了从发现到解决的全过程,并且给出了监控和防劣化方案。这个问题对快手稳定性尤其是电商主播稳定性影响很大且难以察觉,同时可能在业界广泛出现。
[转载] 快手主播稳定性 - Mach Port 超限问题治理
本文介绍了快手客户端团队处理的 Mach Port 超限导致异常退出的问题。介绍了从发现到解决的全过程,并且给出了监控和防劣化方案。这个问题对快手稳定性尤其是电商主播稳定性影响很大且难以察觉,同时可能在业界广泛出现。
5分钟看懂的WebAssembly入门指南
本文是一篇WebAssembly的入门文章,从理论介绍到实战方面有全面的讲述。
由于 javascript 的动态类型特性,AOT 并不能为它做出优化,只能选择 JIT 来优化。
而为了让 JIT 效率提高,Mozilla 推出了 asm.js。它和 Typescript 比较相似的是它也是一个强类型语言,不过它的语法是 js 的子集,它专为 JIT 效率提高而打造。
在 Mozilla 推出 asm.js 之后,一些公司都觉得这个思路不错,于是联合起来推出了 WebAssembly。
WebAssembly 是一套指令集(字节码)标准,不过它并不是可以被 CPU 直接执行的原生指令集,所以它目前还需要配套一个虚拟机(low-level)来执行。
[转载] Objective-C & Swift 最轻量级 Hook 方案
本文从一个 iOS 日常开发的
hook案例入手,首先简要介绍了 Objective-C 的动态特性以及传统hook方式常见的命名冲突、操作繁琐、hook链意外断裂、hook作用范围不可控制等缺陷,然后详细介绍了一套基于消息转发机制的 instance 粒度的轻量级hook方案:**SDMagicHook**。
[转载] 抖音研发实践:基于二进制文件重排的解决方案 APP启动速度提升超15%
启动是App给用户的第一印象,对用户体验至关重要。抖音的业务迭代迅速,如果放任不管,启动速度会一点点劣化。为此抖音iOS客户端团队做了大量优化工作,除了传统的修改业务代码方式,我们还做了些开拓性的探索,发现修改代码在二进制文件的布局可以提高启动性能,方案落地后在抖音上启动速度提高了约15%。
本文从原理出发,介绍了我们是如何通过静态扫描和运行时trace找到启动时候调用的函数,然后修改编译参数完成二进制文件的重新排布。
Diff应用:从LCS到UICollectionView
什么是Diff?
日常编程中有时候会遇到对比字符串,对比数组的情况,找出前后新旧数据的不同,可以称之为Diff。
什么是LCS?
Longest Common Subsequence 的简称,最长公共子序列。
LCS有哪些应用?
1.Git等版本控制,常用的git diff命令
2.一些对比软件,如Kaleidoscope,能进行图片、文件、文本的对比
3.Facebook iOS Snapshot Test框架,通过snapshot的方式,进行页面UI测试
4.IGListKit一个基于UICollectionView的框架,通过LCS衍生优化算法,进行UICollectionView的刷新
关于本文…
前几部分都是LCS算法的一些简单介绍,感兴趣的可以看看,也可直接看靠后的LCS算法在UICollectionView中的应用。
[转载] 基于NSURLCache的缓存实现
缓存设计应该是每个客户端程序开发所必须考虑的问题,如果同一个功能需要多次访问,而每次访问都重新请求的话势必降低用户体验。但是如何处理客户端缓存貌似并没有统一的解决方案,多数开发者选择自行创建数据库直接将服务器端请求的JSON(或Model)缓存起来,下次请求则查询数据库检查缓存是否存在。事实上iOS系统自身也提供了一套缓存机制,本文将结合URL Loading System简单介绍一下如何利用系统自身缓存设计来实现一套缓存机制来平滑的扩展图虫客户端的缓存处理。
升级到 Xcode 14.3 编译部分工程出现错误
1 | ld: file not found: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphoneos.a |
查到是 Xcode14 支持最低版本是 iOS 11, 然后部分库基于 arc 的支持在 Xcode14.3 被移除了, 升级到 14.3 后无法链接, 就报错了
[转载] iOS端一次视频全屏需求的实现
对于一个带有视频播放功能的app产品来说,视频全屏是一个基本且重要的需求。虽然这个需求看起来很简单,但是在实现上,我们前后迭代了三套技术方案。这篇文章将介绍这三种实现方案中的利弊和坑点,以及实现过程中积累的经验。
[转载] iOS性能优化实践:头条抖音如何实现OOM崩溃率下降50%+
iOS OOM 崩溃在生产环境中的归因一直是困扰业界已久的疑难问题,字节跳动旗下的头条、抖音等产品也面临同样的问题。
在字节跳动性能与稳定性保障团队的研发实践中,我们自研了一款基于内存快照技术并且可应用于生产环境中的 OOM 归因方案——线上 Memory Graph。基于此方案,3 个月内头条抖音 OOM 崩溃率下降 50%+。
本文主要分享下该解决方案的技术背景,技术原理以及使用方式,旨在为这个疑难问题提供一种新的解决思路。