[toc]
此工程是一个总结性的工程,涵盖了计算机基础、Java、Android、数据结构、算法、设计模式等知识点。 目前还在不断完善中
工程目录结构:
- app Android 默认工程,里面是一些 Android 相关的测试代码
- common 公用类库
- lib_code 数据结构、算法、设计模式 的相关代码 以及一些测试代码
- pics 存放相关知识点的图片
- docs 存放所有的总结性文档(重点)
- 1.1 JVM
- 1.2 基本数据类型
- 1.3 自动装箱与拆箱
- 1.4 continue、break、和 return 的区别是什么
- 1.5 泛型
- 1.6 泛型通配符
- ?无界通配符
- 上界通配符 < ? extends E>
- 下界通配符 < ? super E>
- ? 和 T 的区别
- Class 和 Class<?> 区别
- 1.7 ==和 equals 的区别
- 1.8 深拷贝 vs 浅拷贝
- 2.1 构造器 Constructor 是否可被 override?
- 2.2 在 Java 中定义一个不做事且没有参数的构造方法的作用
- 2.3 对象实体与对象引用有何不同?
- 2.4 对象的相等与指向他们的引用相等,两者有什么不同?
- 2.5 面向对象三大特征 : 封装、继承、多态
- 2.6 String 为什么是不可变的?
- 2.7 String、StringBuffer 、StringBuilder 的区别是什么?
-
3.1 反射 详见/docs/java/Reflect.md
-
概述
-
获取 Class 对象
-
获取属性、字段、及相关调用
-
反射与 Annotation
-
3.2 多线程与并发 (重点)
-
简述线程、程序、进程的基本概念。以及他们之间关系是什么?
-
多线程并发 详见/docs/java/Thread.md
-
相关概念
- 同步 VS 异步
- 并发 VS 并行
- 阻塞 VS 非阻塞
- 临界区
-
线程状态及基本操作
- 线程状态
- 线程基本操作 interrupted、join、sleep、yield
-
并发原理:Java内存模型(JMM) 以及 happens-before
- JMM抽象结构模型
- 重排序
- as-if-serial
- happens-before
-
并发关键字
- synchronized
- synchronized的实现原理
- synchronized优化
- CAS
- volatile
- volatile 实现原理
- volatile 适用场景
- synchronized
-
三大性质简介
- 原子性
- 可见性
- 有序性
- Synchronized VS volatile
-
Lock体系
- ReentrantLock
- 公平锁 与 非公平锁
- 读写锁 ReentrantReadWriteLock
- Condition 的 await 和 signal 机制
-
并发容器
- ConcurrentHashMap
- CopyOnWriteArrayList
- COW vs 读写锁
- ThreadLocal
- BlockingQueue
- ArrayBlockingQueue
-
Executor 体系
- 为什么要使用线程池
- 线程池的工作原理
- 线程池的创建
- 如何合理配置线程池参数
- ScheduledThreadPoolExecutor
- FutureTask
-
原子操作类
- 原子更新基本类型
- 原子更新数组类型
- 原子更新引用类型
- 原子更新字段类型
-
并发工具
- 倒计时器: CountDownLatch
- 循环栅栏: CyclicBarrier
- CountDownLatch VS CyclicBarrier
- 控制资源并发访问: Semaphore
- 线程间交换数据的工具: Exchanger
-
生产者-消费者 问题
- wait/notifyAll实现生产者-消费者
- 使用Lock中Condition的await/signalAll实现生产者-消费者
- 使用BlockingQueue实现生产者-消费者
-
3.3 文件与IO
- Java 中 IO 流分为几种
- 既然有了字节流,为什么还要有字符流
-
3.4 容器类
- Collection
- List
- Set
- Queue
- Map
- HashMap
- LinkedHashMap
- Hashtable
- Collection
-
3.5 异常
-
3.1.1 四大组件
-
3.1.2 混淆与签名
-
3.1.3 版本更新 && 下载 && 安装
- todo
-
3.1.4 存储相关
-
3.1.5 Handler
-
3.1.6 设备硬件、软件相关信息
-
3.2.1 View显示过程 详见UI.md
-
3.2.2 View绘制流程 详见UI.md
-
3.2.3 View触摸事件传递 详见UI.md
-
3.2.4 View滑动 详见UI.md
-
3.2.5 属性动画
- ObjectAnimator
- ValueAnimator
-
3.2.6 数据库
- GreenDao
- Room
-
按下Home键 && 生命周期 [todo] (todo)
- 3.3.1 NDK开发
- 3.3.2 组件化
- 3.3.3 Android 性能优化 详见Android.md
- UI优化
- 内存优化
- 电量优化
- APK瘦身
Glide
- 计模式的六大原则
- 单例模式
- 工厂模式
- 建造者模式(Builder)
- 代理模式
- 策略模式
- 观察者模式
- 适配器模式
- 模板模式
- 数组(Array)
- 队列(Queue)
- 链表(LinkedList)
- 跳表(SkipList)
- 栈(Stack)
- 散列表(HashTable)
- 树(Tree)
- 堆(Heap)
- 图(Graph)
- 复杂度分析
- 递归算法(Recursion)
- 二分查找算法(BinarySearch)
- 冒泡排序(BubbleSort)
- 插入排序(InsertSort)
- 选择排序(SelectionSort)
- 归并排序(MergeSort)
- 快速排序(QuickSort)
- 桶(BucketSort)
-
WireShark
-
Charles