- 博客(6)
- 收藏
- 关注
原创 速读Java线程池
一、前言线程池是开发中绕不开的一个知识点 。对于移动开发而言,网络框架、图片加载、AsyncTask、RxJava, 都和线程池有关。正因为线程池应用如此广泛,所以也成了面试的高频考点。我们今天就来讲讲线程池的基本原理和周边知识。先从线程的生命周期开始。二、线程生命周期线程是程序执行流的最小单元。Java线程可分为五个阶段:新建(New): 创建Thread对象,并且未调用...
2019-04-14 11:03:01
180
原创 SQLite数据库修复方案(For Android App)
一、前言SQLite性能好,对SQL支持全面,是久经考验的轻量的关系型数据库。移动开发者对SQLite应该都不陌生了,只是不同的 APP 对数据库的依赖程度不同(有的甚至不需要数据库-_-)。SQLite虽然是可靠性较高的数据库,但是在复杂的使用场景之下,也会不时地出点问题。比如说有时候索引损坏,select count(*) from t_XXX 查询出的结果和select * from...
2019-03-12 21:56:35
428
原创 基数排序的原理与实现
一、前言基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。比较型排序:常见的快速排序,归并排序,冒泡排序……等等,都是基于比较的排序算法。比较型排序算法时间复杂度下界为O(N*log2N) ,而非比较型排序算法有:计数排序,桶排序,基数排序等;其中,计数排序,桶排序的时间复杂度分别为O(n+m)和O(n),线性的时间复杂度。计数排序和桶排...
2019-03-12 21:44:30
2484
原创 如何实现一个图片加载框架
一、前言图片加载的轮子有很多了,Universal-Image-Loader, Picasso, Glide, Fresco等。网上各种分析和对比文章很多,我们这里就不多作介绍了。古人云:“纸上得来终觉浅,绝知此事要躬行”。只看分析,不动手实践,终究印象不深。用当下流行的“神经网络”来说,就是要通过“输出”,形成“反馈”,才能更有效地“训练”。当然,大千世界,包罗万象,我们不可能任何事...
2018-10-27 21:25:55
374
原创 超轻量事件总线的实现
开发过程中,总会遇到一些需要通信的场景。如果逻辑比较简单,通过常规的传参,回调,返回值等即可实现。而如果调用层次较深(如跨模块,跨线程等),光靠传参和回调等手段,耦合度较高,对于需要主动通知,通知多个组件等场景,更是捉襟见肘。为解耦事件的发布与订阅主体,简化组件间通信,可引入事件通信机制。事件通知包含哪些内容?事件的定义,注册/注销,通知。事件框架如何实现?一个接口,一个事件管理类...
2018-10-27 21:23:34
363
原创 LightKV-高性能key-value存储组件
LightKV是基于Java NIO的轻量级,高性能,高可靠的key-value存储组件。一、起源Android平台常见的本地存储方式, SDK内置的有SQLite,SharedPreference等,开源组件有ACache, DiskLruCahce等,有各自的特点和适用性。SharedPreference以其天然的 key-value API,二级存储(内存HashMap, 磁盘xml文...
2018-10-27 21:21:41
609
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人