Alee

In the world the most exhausting matter is that spending every day falsely

数据结构与算法之美学习笔记

基础篇之排序(上)

基础篇之排序(上) 插入排序和冒泡排序的时间复杂度相同,都是O(n²),在实际的软件开发中,为什么我们更倾向于使用插入排序算法而不是冒泡排序算法呢? 如何分析一个“排序算法” 分析一个排序算法,可以从以下几个方面入手 排序算法的执行效率 对于排序算法执行效率的分析,从这几个方面来衡量: 最好情况、最坏情况、平...

数据结构与算法之美学习笔记

基础篇之递归

基础篇之递归 现在很多 App 都有这个推荐注册返佣金功能。这个功能中,用户 A 推荐用户 B 来注册,用户 B 又推荐了用户 C 来注册。我们可以说,用户 C 的“最终推荐人”为用户 A,用户 B 的“最终推荐人”也为用户 A,而用户 A 没有“最终推荐人”。基于此,如何查找指定用户的“最终推荐人”? 如何理解递归 递归是一种应用非常广泛的算法或者编程技巧。很多数据结构和算法...

数据结构与算法之美学习笔记

基础篇之队列

基础篇之栈 当我们向固定大小的线程池中请求一个线程时,如果线程池中没有空闲资源了,这个时候线程池如何处理这个请求?是拒绝请求还是排队请求?各种处理策略又是怎么实现的呢? 如何理解“队列” 可以把它想象成排队买票,先来的先买,后来的人只能站在末尾,不允许插队。先进者先出,这就是典型的“队列”。 我们知道栈只支持两个基本操作:入栈push()和出栈pop()。队列跟栈非常相似,支...

数据结构与算法之美学习笔记

基础篇之栈

基础篇之栈 你知道如何实现浏览器的前进和后退功能吗? 如何理解“栈” 我们可以把栈看成是一摞叠在一起的盘子。在放盘子的时候都是从下往上一个一个放,取盘子的时候都是从上往下一个一个地依次取,不能从中间任意抽出。后进先出,先进后出,这就是典型的“栈”结构。 栈是一种“操作受限”的线性表,只允许在一端插入和删除数据。 为什么要用这个“操作受限”的“栈”? 特定的数据结构是对...

数据结构与算法之美学习笔记

基础篇之链表

基础篇之链表 你知道如何用链表来实现LRU缓存淘汰策略吗? 链表结构 链表和数组一样,是非常基础且非常常用的数据结构,这两者有什么区别? 底层存储结构 数组需要一块连续的内存空间来存储,对内存的要求比较高。如果我们申请一个100MB大小的数组,当内存中没有连续的、足够大的存储空间时,即便内存的剩余总可用空间大于100MB,仍然会申请失败。 ...

数据结构与算法之美学习笔记

基础篇之数组

基础篇之数组 在大部分编程语言中,数组都是从0开始编号的,你知道为什么数组要从0开始编号,而不是从1开始编号呢?从1开始不是更符合人类的思维习惯吗? 什么是数组 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 几个关键词 线性表(Linear List)。 线性表就是数据排成像一条线一样的结构。每个线...

数据结构与算法之美学习笔记

入门篇

入门篇 什么是数据结构?什么是算法? 从广义上讲,数据结构就是指一组数据的存储结构。算法就是操作数据的一组方法。 从狭义上讲,是指某些著名的数据结构和算法,比如队列、栈、堆、二分查找、动态规划等。 数据结构和算法有什么关系? 数据结构和算法是相辅相成的。数据结构是为算法服务的,算法要作用在特定的数据结构之上。 算法学习重点是什么? 学习数据结构与算法,首先要掌握一个数据结构与算...

一个关于CoordinatorLayout嵌套滚动的bug

CoordinatorLayout + AppBarLayout + RecyclerView+Header

采用CoordinatorLayout + AppBarLayout + RecyclerView + Header引出的一个bug Bug展示 Bug简述 如上图所展示的效果,首页第一次在RecyclerView区域外是响应手动滑动事件的,但是一旦在底部RecyclerView区域有滚动后,再在顶部滑动就死活滑不动的bug,只能在RecyclerView区域往上滑。首页这...

解决Android Studio依赖库版本不一致的问题

强制指定第三方依赖库内部所依赖的库的版本号

具体问题 在项目开发和迭代过程中,我们不得不依赖越来越多的第三方库,有些是为了不重复造轮子,有些是要用别人的功能,比如依赖一些直播平台的库。依赖的库越多,就越容易造成依赖版本冲突的问题。在最近项目上线,空闲下来的时间,准备来解决之前一直没有顾得上解决的一个依赖问题,虽然能编译通过,总感觉有一条红色警告线看着不爽。 就是它… 根据提示,大概意思是说所有com.android.supp...

RxJava操作符

RxJava常用操作符大全

本篇都是基于RxJava2.0的操作符说明,由于操作符太多,本篇只列举常用的操作符说明 创建操作符 create 通过实现ObservableOnSubscribe接口的subscribe来创建,该方法有一个事件发射器ObservableEmitter,通过它来向下游发射事件。 onNext:发射事件 onComplete:表示事件全...