资源竞争与死锁检测
多线程编程一直是一个非常难的话题,而资源竞争和死锁问题则是比较常见的多线程问题,这里我们来看看如何检测这些问题。
更多

深入理解内存分配
相信大家在学习C语言的时候,malloc是最早遇到的几个方法之一,这里就来深入的了解下,macOS/iOS中用户空间的内存分配。
更多

原子性内存栅栏问题简述
内存栅栏(Memory fence),也称为内存屏障(Memory barrier),以前碰到这类概念都是基于锁的理解,比如dispatch_barrier。在看bmalloc的源代码时,发现其在使用原子性(atomic)的时候,出现了一种memory_order的概念,所以这里来简单看看原子性方面的问题。
更多如何判断block回调未被调用
在处理异步过程中,我们经常会碰到这种情况,需要异步处理并异步回调completionHandler,但是有些场景下,如果你在处理完异步逻辑,而不回调completion的时候,会产生逻辑上的bug或者内存泄露问题,那么我们就需要知道调用方是否调用了completion。
更多C语言的动态调用
我们都认为C语言是一种非常静态的语言,几乎没有什么动态特性,同时往往在编译器就决定了整个运行方式,运行期是很难改变其运行状态的。其实C语言也是可以比较动态的,只是由于C语言是一个跨平台兼容语言,每个平台都有不同的实现,其动态化很难统一。这里我们看看在AArch64平台上的动态化实现。
更多

运行时获取函数调用栈
在之前做debug工具的时候,就有一个想法,在页面产生卡顿的时候,如果能够获取主线程的函数调用栈就好了,就可以分析出哪里出现了性能瓶颈。由于当时对这部分内容还不是很了解,就没有继续下去,现在重新来实践一次。
更多

C方法的调用参数与ARM汇编
在平时开发和调试中,经常遇到C调用栈和汇编,所以这里来统一的了解下这部分内容,本章需要一定的汇编基础才能更好的理解。
更多2017年总结
2017年很快就过去了,在这期间发生过很多事情也明白很多事情,这里就来做个年终总结吧。
更多

高性能计算
我们平时在做业务的时候很少会有性能上的瓶颈,偶尔产生的UI层的卡顿也是我们对程序结构设计的不合理产生的。但是性能优化却是一个好的程序员所应具备的,而且在某些特殊的场景下,我们还要有能力去解决很多极限的性能问题,这里就来聊聊高性能计算方面的问题。
更多property的系统实现分析
我们在使用@property这个快捷定义的时候,都没怎么注意系统是怎么实现的,那么我们来看看系统实现的,和我们自己写的setter方法是否一致呢?
更多