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

最近美团开源了日志框架 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。苹果建议使用 ...

Redis设计与实现

最近为了学习redis,把redis设计与实现这本书看完了。这本书图文并茂,深入浅出,有种作者是把菜饭嚼碎了喂给你吃的感觉。看完后对redis的实现有了比较深的理解,决定把感触比较深的几点记录下来。 数据类型和结构 首先要明白数据类型和数据结构的区别: redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。 redis底层的六种数据结构:SDS(简单动态字符串),list( ...