数据结构与算法学习之路
下面的算法都打包在一个应用当中,你只需要下载安装即可,里面有算法的介绍,时间复杂度,空间复杂度,代码示例
- 时间复杂度介绍
- 空间复杂度介绍
- 递归算法与非递归算法区别和转换
- 折半查找/二分查找算法
- 链表实现
- 反转一个链表
- 直接插入排序
- 快速排序
- 选择排序
- 冒泡排序
- 线程与锁详解
- 二叉树的性质
- 二叉树的遍历
- 二叉排序树
- 红黑树
- AVL树
- 图的详解
- 图的邻接表存储构成图
- 无向图的邻接表存储-深度优先搜索
- 无向图的邻接表存储-广度优先搜索
- 无向图的邻接矩阵存储-深度优先搜索
- 无向图的邻接矩阵存储-广度优先搜索
- 有向图的创建
- 拓扑排序-邻接矩阵存储-Kahn算法
- 拓扑排序-邻接矩阵存储-深度优先搜索算法
- 邻接矩阵和邻接表比较
- 最短路径算法之Dijkstra算法(狄克斯特拉算法
- ArrayList实现原理
- LinkList双向实现
- 堆排序
- 归并排序
- 希尔排序
- 八大排序总结
- 计数排序
- 同时找出最大值和最小值最优算法
- 快速查找法,查找第k个最大的数
- 10亿数据查找前100个
- 散列表(哈希表)
- 求最大不重复子串
- 死锁
- 两个线程交替输出1010
算法设计常用思想
- 贪婪算法之找零钱问题
- 贪婪算法之01背包问题
- 分治算法之二分法查找
- 分治算法之字符串全排列
- 分治算法之快速排序
- [分治算法之合并排序]
- 迭代算法之欧几里得算法
- 迭代算法和递归算法区别
- 迭代算法之二分逼近法
- 动态规划法之01背包问题
- [动态规划法之装配站问题]
- 穷举算法之百钱买鸡
- 穷举算法之鸡兔同笼
- 穷举算法之853桶分4升水的分法有多少种
- 穷举算法之爱因斯坦的思考
- 穷举加分治算法之24点计算
Java 常见问题
- Java 基础面试题
- Java垃圾回收机制
- Java 强、软、弱、虚引用
- Java 线程池实现原理
- weakHashMap
- tomcat 旧版本 使用currentHashMap和weakHashMap做分代缓存
- tomcat 新版本 使用LRU缓存,最后也被废弃了
- Java 实现LRU缓存3种方式
- LinkHashMap 实现FIFO
- Java 集合原理
- wait 和 sleep区别
- yield()和join()
- HashMap冲突
- Java 8十大特性
- Java 克隆
- Java foreach原理
- synchronized 和 Lock区别
- BlockingQueue和BlockingDequeu详解
- 锁类型详解
- Condition实现对锁进行更精确的控制
- LinkBlockingQueue原理
- 多个线程安全的原子化操作组合将不再是安全的
- CopyOnWriteArrayList原理
- ConcurrentHashMap原理
- [分布式锁-分段锁思想]
- Atomic包的原理及分析
- CAS实现自旋线程安全
- Java泛型使用
- Java NIO
Android 常见问题
- Volley源码分析经典算法
- Android Design Support Library包含内容
- Android v4 v7 v8 v13区别
- Android Design Support Library V28 新增加内容
- Android网络数据安全
- Android Binder 原理
- Android应用架构设计
- 热修复技术和原理
- Android 8.0 WorkManager后台任务可以保活
- [JNI双进程保活]
- Android 应用启动流程
- [Activity和Fragment和Service生命周期]
- [Handler机制]
- AsyncTask源码分析
- Android 图片下载
- OnNewIntent 什么时候被调用
- Android两种虚拟机区别和联系
- View的源码分析(绘制流程以及刷新机制)
- RecyclerView 和ListView区别
- volatile原理
- Fragment的懒加载实现
- requestlayout,invalidate,postInvalidate 区别于联系
- OnMeasure多次调用问题
- ViewPager缓存原理
- 多进程Application初始化问题
- Application可以开线程替换Service处理后台任务吗
- android.os.killProcess和System.exit(0)区别
- 线程通信有哪些方式
- ConstraintLayout 完全解析 快来优化你的布局
- Android 匿名共享内存原理
- Binder 原理深度剖析
- MediaPlayer生命周期
- TransactionTooLargeException解决方法
- 谈一下Http请求过程
- Android 进程通信种类
- 面试题如何计算View的深度,写一段成程序
- 统计一个ViewGroup中包含的子View的个数(递归和非递归实现)
- 返回一个在ViewGroup下面的一个View,id为方法的第二个参数
设计模式
- 面向对象的七种设计原则
- 建造者模式
- 命令模式
- 享元模式
- 模板方法模式
- 责任链模式
- 建造者模式
- 原型模式
- 观察者模式
- 策略模式与命令模式区别
- 桥接模式
- 组合模式
- 适配器模式
- 装饰者模式
- 外观模式
- 状态模式
- 状态模式与策略模式区别
- [迭代器模式]基本用不到
- [备忘模式]很简单、就是有个管理员保存一些对象
- [访问者模式] 不常用,不好用,不信你擦擦
- 中介模式
- [解释器模式]
- 代理模式
- 简单工厂模式
- 工厂模式
- 抽象工厂
- 委托设计模式
- 适配器模式 与(装饰者、代理模式)区别
- 装饰器模式和代理模式区别
Android 框架使用说明
Android框架源码分析
- EventBus源码分析
- Bufferknife源码分析
- Glide 源码分析
- [Picasso 源码分析]
- OKHttp 源码分析
- Retrofit 源码分析
- [ARouter 源码分析]
- [LeakCanary 源码分析]
- Blockcanary 源码分析
- [Lifecycler源码分析]
- RxJava 源码分析
- ViewModel 源码分析