共计 19 篇文章

一个好的移动端基础日志框架是怎么炼成的

最近美团开源了日志框架 Logan,微信开源的 Mars 里也有个日志模块 xlog。这个功能用的很多,简单点说就是往文件里写日志,这并不是一个复杂的框架。但是要做的好,还是有几个点需要考虑的,比如使用方便,性能和安全。 微信mars 的高性能日志模块 xlog 美团点评移动端基础日志库——Logan 网上基本上只有两个框架的使用教程,并没有源码分析。这两篇都是作者写的文章,基本上把框架的精髓都讲出来了,看完应该就知道一个好的日志框架是怎么炼成的了。 其实这两个框架的思路基本上是一模一样的,很明显 Logan ...

SQLite 多线程模型实测分析

网上有很多多线程模型的分析,但是讲的都不是很清楚,大多都是直接下结论,并没有数据支撑。所以想着彻底了解下各种多线程模型,并且实际地测一测数据。 线程模式 在讨论线程模式的前,先弄清楚几个SQLITE_API: sqlite3_open:返回一个数据库连接(句柄)。 sqlite3_prepare_v2 / sqlite3_bind_* / sqlite3_step:类似 sqlite3_exec,不过支持参数化 SQL, ...

MLeaksFinder / FBRetainCycleDetector 分析

最近需要提供一套检测 app 内存泄漏的工具,经过反复的比较,最终选定了 MLeaksFinder。它的优点是实现简单,扩展方便。它内部寻找循环引用则是用的 Facebook 开源的 FBRetainCycleDetector。 MLeaksFinder 介绍 MLeaksFinder 的原理十分简单: 通过运行时 hook 系统的 viewdidDisappear 等页面消失的方法,在 hook 的方法里面添加willDealloc()方法,各个子类自己实现 ...

移动端网络优化

网络优化有很多常见的点,最早的认识来源于微信开源的 Mars,当时由于好奇把 Mars 集成进 APP,并且把 Mars 的相关 Wiki 看了,学到了很多。后来看了美团的网络库 Shark,这个还没有开源,但是获得了美团内部的大奖。两者的侧重点各有不同,不过根源还是很像的。 原生api 如果不自建网络库,大部分情况下,AFNetworking 已经成为标配,当然本质上还是基于NSURLSession。苹果建议使用 ...

JSPatch实现分析

JSPatch十分小巧,能让APP具有热更新的能力。最早的一版1000行代码就搞定了,很值得学习探索。 前言 看JSPatch源码前,首先要明白编译型语言,解释性语言,脚本语言,动态语言,静态语言这几个概念。 编译型语言 这个最好理解,最早学的就是C/C++,由编译器把他编译成二进制文件,就可以直接运行,不需要再编译了,所以性能好。不过很多机器底层的CPU架构都不一样,所以不同的机器上面需要编译器重新编译,所以跨平台较差。 编译-解释型语言 计算机专业的话应该走的路都差不多,C/C+ ...