用 Golang 写一个日志处理服务
libcurl 域名解析分析
Chromium 工程源码是如何测试的
Chromium 这样庞大的工程,涉及超多的模块依赖,如何保证代码质量?源码中随处可见 xxx_unittest.cc 和 xxx_fuzzer.cc 这样的文件,它们是如何组织的呢?项目的每一个 Commit 需要执行哪些测试,流程是什么?Chromium 做了哪些基础的工作支持繁琐又重要的测试工作,我们是否可以借鉴用到自己的项目中?
怎样阅读源代码
阅读源代码是程序员最重要的基本功之一,研读高质量的开源项目源码是进阶的必要手段。那么面对一个新项目时,如何高效快速地熟悉整个源码呢?
2018 年度总结
Chromium 跨平台基础库:多线程
多线程是基础库非常重要的一部分,每个平台都有各自的多线程API,实现一套高效、易用的多线程基础库也是挺有挑战的。Chromium base库中有完整的跨平台thread封装和实现,本文主要整理一下Chromium 线程相关实现细节。
Objective-C Runtime
Interview Notebook
iOS
性能优化
block
什么时候在 block 里面用 self, 不需要使用 weak self
我们知道, 在使用 block 的时候, 为了避免产生循环引用, 通常需要使用 weakSelf 与 strongSelf, 写下面这样的代码:1
2
3
4
5
6
7__weak typeof(self) weakSelf = self;
[self doSomeBlockJob:^{
__strong typeof(weakSelf) strongSelf = weakSelf;
if (strongSelf) {
...
}
}];
那么请问: 什么时候在 block 里面用 self, 不需要使用 weak self ?
WWDC-Advanced Graphics and Animations for iOS Apps
本文基于 Advanced Graphics and Animations for iOS Apps 整理,介绍了Core Animation和iOS GPU渲染管线的基础知识,以及如何profiling,定位和解决 UI 性能问题。
Creating a responsive UI requires an understanding of Core Animation and how mobile GPUs work. Learn about the iOS rendering pipeline in Core Animation, the new UIVisualEffectView and how it utilizes the GPU. Find out about the available tools for profiling UI performance. See how to identify and fix performance issues on a variety of devices.