从事移动开发,喜欢思考,喜欢折腾,想做一些特别的,有特色的事情。 “就是让这个世界因为有我而有了一点点的不一样”
说到散列,一般对应于散列表(哈希表)和散列函数。 我们今天不谈哈希表,仅谈下散列函数。
线程池是开发中绕不开的一个知识点 。 对于移动开发而言,网络框架、图片加载、AsyncTask、RxJava, 都和线程池有关。 正因为线程池应用如此广泛,所以也成了面试的高频考点。
一、前言 SQLite性能好,对SQL支持全面,是久经考验的轻量的关系型数据库。移动开发者对SQLite应该都不陌生了,只是不同的 APP 对数据库的依赖程度不同(有的甚至不需要数据库-_-)。SQLite虽然是可靠性较高的数据库,但是在复杂的使用场景之下,也会不时地出点问题。
一、前言 基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。 比较型排序:常见的快速排序,归并排序,冒泡排序……等等,都是基于比较的排序算法。比较型排序算法时间复杂度下界为O(N*log2N) ,而非比较型排序算法有:计数排序,桶排序,基数排序等;其中,计数排序,桶排序的时间复杂度分别为O(n+m)和O(n),线性的时间复杂度。
为了提高流畅性,耗时任务放后台线程运行,已是APP开发的常识了。 关于异步有很多方案,当前最流行的,莫过于RxJava了; 更早一些时候,还有AsyncTask(骨灰级的API)。 总的来说,AsyncTask构思精巧,代码简洁,使用方便,有不少地方值得借鉴。
一、前言 图片加载的轮子有很多了,Universal-Image-Loader, Picasso, Glide, Fresco等。网上各种分析和对比文章很多,我们这里就不多作介绍了。 古人云:“纸上得来终觉浅,绝知此事要躬行”。
最近相继发布了四个开源项目,都是比较轻量的项目。 造完轮子,很自然的想到要弄个App来跑一下。 最终,捣鼓了这个浏览图片的APP。
说到散列,一般对应于散列表(哈希表)和散列函数。 我们今天不谈哈希表,仅谈下散列函数。 定义 引一段百度百科关于散列函数的定义。 Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。
设备唯一标识对于app开发是很重要的一个点,主要应用于统计,有时也应用于业务。 Android平台提供了很多获取唯一标识的API,但都不是很稳定。 一、获取唯一标识 Android开发者网站上的一篇文章Identifying App Installations给出了几种获取方式; 中文博文也有很多,这是其中一篇 Android获取设备唯一ID的几种方式。