0. 背景
构建一个属于自己的知识体系,能够让我们学到的知识体系化.让自己清楚哪块是自己的知识盲区,哪块已经构建起根基.然后根据实际情况,有针对性的进行模块学习.让自己成为一个合格的Android工程师.
平时看博客或者学知识,学到的东西比较零散,没有独立的知识模块概念,而且学了之后很容易忘.于是我建立了一个自己的笔记仓库 (一个我长期维护的笔记仓库,感兴趣的可以点个star~你的star是我写作的巨大大大大的动力),将平时学到的东西都归类然后放里面,需要的时候呢也方便复习.过了段时间,我觉得这样还是不够好,于是我最近花了点时间,整理了一下Android中的常见知识,画了一张思维导图.更清晰地认识自己的知识边界到底在哪里,哪些东西还不足.
图片看不清楚朋友的可以访问图片源文件,或者查看幕布笔记链接: Android知识体系最新
此知识体系呢只是一个参考,大家可以根据自己的实际情况进行增删(先将笔记保存到幕布,然后就可以进行修改了).然后进行查漏补缺,提升自己~
1. 计算机基础
1.1 计算机网络
1.1.1 计算机网络概述
- 网络七层协议
- TCP/IP四层模型
- 底层协议
- 底层设备
1.1.2 应用层
- HTTP协议(⭐⭐⭐)
- DHCP协议(⭐⭐⭐)
- NAT
1.1.3 传输层(⭐⭐⭐)
- TCP协议
- UDP协议
1.1.4 网络层
- IP协议
- ICMP协议
1.2 操作系统(⭐⭐⭐)
1.2.1 操作系统基本功能
- 进程管理
- 作业管理/文件管理
- 存储管理/设备管理
1.2.2 Linux系统
- 内存管理
- 进程管理
- 文件系统
- 常见命令操作
1.2.3 补充
- 自旋锁/互斥锁/读写锁/条件变量/共享文件
- 消息队列/管道/信号量
- 操作系统的用户态与内核态
- 上下文切换成本
- 进程,线程与协程
2. Java基础(⭐⭐⭐)
2.1 集合原理
- ArrayList
- Vector
- Stack
- LinkedList
- HashMap
- Hashtable
- TreeMap
- LinkedHashMap
- HashSet
- TreeSet
- CopyOnWriteArrayList
- ConcurrentHashMap
- LinkedBlockingQueue
- SynchronousQueue
- SparseArray
- ArrayMap
2.2 其他
- 面向对象
- 设计模式
- 反射
- 泛型
- 注解
3. Java并发
3.1 线程基础
- 实现多线程
- 启动线程
- 停止线程
- 线程的6种状态
- 各种各样的锁
- 悲观锁和乐观锁
- 共享锁和独占锁
- 公平锁和非公平锁
- 可重入锁和非可重入锁
- 可中断锁和非可中断锁
- 自旋锁和非自旋锁
- 偏斜锁/轻量级锁/重量级锁
- JVM对synchronized锁的优化
- wait/notify/sleep/join等重要方法
- 守护线程,优先级等属性
- 线程安全
- Future获取运行结果
- Fork/Join模式
- CountDownLatch
- CyclicBarrier
- Semaphore
- Condition
- Phaser
- 重排序
- 原子性
- 内存可见性
- CAS原理
- AQS框架
3.2 其他
3.2.1 并发容器
- Vector/Hashtable
- ConcurrentHashMap
- CopyOnWriteArrayList
- 阻塞队列
- 非阻塞队列
- ConcurrentSkipListMap
3.2.2 atomic包,6种原子类
- 分类
- 原子类与锁
- 原子类与volatile
3.2.3 ThreadLocal
- 使用场景
- 原理
3.3.4 线程池
- 优点
- 参数
- 分类
- 执行任务流程
- 拒绝策略
- 正确关闭线程池
- 线程池复用原理
4. JVM虚拟机
- 内存区域
- 内存模型
- 内存分配回收策略
- Java对象的创建、内存布局和访问定位
- GC: 引用计数及可达性分析,垃圾回收算法,G1及ZGC
- 类加载机制
- 双亲委派模型
- 编译器优化: 方法内联,逃逸分析
- 虚拟机相关: HotSpot及JIT,Dalvik,ART及AOT
- JVM执行方法
- JVM实现反射
- JVM实现泛型
- JVM实现异常
- JVM实现注解
5. 数据结构与算法
5.1 数据结构
- 栈
- 队列
- 数组
- 链表
- Hash表
- 二叉树
- 基础排序算法
- 字符串操作
5.2 算法
- 分治算法
- 动态规划
- 贪心算法
- 分支限界法
5.3 刷题
6. Android基础
6.1 核心知识点
6.1.1 四大组件
- Activity
- Service
- BroadcastReceiver
- ContentProvider
6.1.2 布局和控件
- RelativeLayout
- FrameLayout
- LinearLayout
- ConstraintLayout
- Button
- TextView
- RecyclerView
- ……
6.1.3 自定义View/ViewGroup
- onMeasure
- onLayout
- onDraw
- onTouchEvent
- dispatchTouchEvent
- 自定义属性
6.1.4 动画和手势
- View动画
- 属性动画
- layoutAnimation视图动画
- 手势检测(GestureDetector)
- 缩放手势检测(ScaleGestureDecetor)
6.1.5 网络
- 请求网络
- 解析数据
6.1.6 图片加载
- 本地图片
- 网络图片
- 压缩图片
- 多图列表
- DiskLruCache
6.1.7 Handler
- Looper
- Message
- MessageQueue
- 内存泄漏
- ThreadLocal
6.1.8 Android各版本新特性
- Android5.0
- Android6.0
- Android7.0
- Android8.0(O)
- Android9.0(P)
- Android10.0(Q)
- Android11.0(R)
6.1.9 其他
- adb常用命令
- 文件和数据库
- 异步线程池
- Resources
6.2 开源库使用
- Retrofit/OKhttp
- RxJava
- Glide
- 注解框架
- Jetpack
6.3 性能优化
6.3.1 快-流畅的体验
- 布局优化
- 绘制优化
- 内存优化
- 启动优化
- 其他
6.3.2 稳-稳定
- 避免内存泄露
- 避免崩溃
6.3.3 省-省电/流量
- 使用JobScheduler调度任务
- 使用懒惰法则
6.3.4 小-安装包小
- apk构成
- 包体优化
7. Android进阶
7.1 核心知识点
7.1.1 多进程
- Binder
- AIDL
- Messenger
7.1.2 Activity难点
- onSaveInstanceState()和onRestoreInstanceState()
- intent-filter匹配规则
- 生命周期
- 启动模式
- Activity启动过程
- App启动过程
7.1.3 Service难点
- startService流程
- bindService流程
7.1.4 BroadcastReceiver难点
- 注册/发送/接收工作原理
7.1.5 ContentProvider难点
- ContentProvider启动过程
7.1.6
- View绘制
- 事件分发
- 消息队列
- AsyncTask原理
- RemoteViews
- Window和ViewRootImpl
7.2 开源库原理
- OkHttp
- Retrofit
- RxJava
- Glide
- LeakCanary
- GreenDao
- ARouter
7.3 Gradle
- 编译
- 混淆
- 签名
- Groovy
- Gradle构建流程
- GradlePlugin
- Gradle构建优化
- App构建过程
- 差异化打包
7.4 初级架构
- 设计模式
- MVC,MVP,MVVM
7.5 JNI
- JNI基础
- NDK基础
7.6 动态化
7.6.1 前置知识
- Android打包流程
- Java字节码
- GradlePlugin
- TransformAPI
- ASM
7.6.2 热修复:nuwa&Tinker
- 经典-64k问题
- dex分包
- MultiDex优化
- findClass原理
- QQ空间热补丁方案
- Nuwa应用层实现
- NuwaGradle
7.6.3 插件化:VirtualAPK
- 加载类
- 资源访问
- 生命周期管理
7.7 编译插桩
- AOP
- ASM
7.8 Framework
7.8.1 系统服务
- Zygote启动
- Android系统启动
- ServiceManager启动及工作原理
7.8.2 应用进程
- 启动流程
- 启用Binder机制
- Application初始化流程
- Context
7.8.3 UI体系
- 显示原理
- UI线程启动
- 屏幕刷新机制
- surface
- vsync
7.8.4 进程通信
- Binder
- IPC通信流程
- Binder对象跨进程传递
- OneWay机制
7.8.5 线程通信
- 消息队列
- 消息传递机制
- Handler消息延迟实现
- IdleHandler原理
- 消息屏障
- ThreadLocal原理
7.8.6 其他
- 跨进程传递大图片
- 四大组件启动原理
8. 领域专家
8.1 性能优化方向
- 稳定性优化
- 启动速度优化
- 绘制优化
- 内存优化
- 包体积优化
- 网络优化
- IO优化
- 存储优化
- 耗电优化
8.2 基础架构方向
- Android工程实践
- Gradle自动化构建
- 编译插桩技术
- Android架构
- Android热修复
- Android插件化
- Android核心源码
8.3 NDK、音视频
- C
- C++
- JNI基础
- 编译原理与语法基础
- Linux基础
- 热修复
- Gif图实现
- 音视频基础
- ffmpeg
- WebRTC
- opengl
- vulkan
- opencv
8.4 大前端
8.4.1 前端基础
- HTML
- CSS
- JavaScript
8.4.2 Flutter(⭐⭐)
- Dart入门
- Flutter入门
- 开发
- 工程管理
- 线上运维
- 发布
- 测试调试
8.4.3 其他
- ReactNative
- 小程序
- 性能优化
9. 其他Android相关
9.1 Kotlin(⭐⭐)
9.1.1 基础部分
- 内置类型
- 类型初步
- 表达算式
- 函数进阶
- 类型进阶
9.1.2 高级部分
- 泛型
- 反射
- 注解
- 协程
9.2 Python(⭐)
- 基础
- 函数
- 高级特性
- 函数式编程
- 模块
- 面向对象编程
- 错误,调试,测试
- IO编程
- 进程和线程常用内建模块
- 常用第三方模块
- 网络编程
- 数据库
- 异步IO
写了个python脚本,将幕布思维导图转成markdown并标上序号. 有兴趣的可以在这里看源码
参考资料
感谢以上几位大佬
今天的文章🔥 2021 最新Android知识体系分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/20435.html