Android 程序员的技术栈大全
AndroidAll
项目地址:chiclaim/AndroidAll
简介: Android 程序员的技术栈大全
更多:作者 提 Bug
标签:
内容涵盖绝大部分 Android 程序员所需要的技能:「设计模式」「Flutter」「ReactNative」「Kotlin」「RxJava」「Dagger2」「Retrofit」「OkHttp」「ButterKnife」「Router」「NDK」「Android 架构」「数据结构与算法」「自定义 View」「性能优化」「Android 源码分析」 「经典书籍」等。
我编写了一份详细的 Android 技术栈思维导图,由于 GitHub 图片国内展示不稳定,所以下面使用的树形结构目录。你可以点击查看详细的 -> 思维导图
如果您有任何问题可以提 Issues ,本项目也欢迎各位开发者朋友来分享自己的一些想法和实践经验,欢迎 Pull Request。
计算机基础
- 协议
- OSI 模型、TCP/IP 模型
- HTTP / HTTP2 / HTTPS
- 操作系统
- Unix / Linux
- Windows
- 数据结构与算法
- 协议
Java
- Java 基础
- 面向对象思想
- 类和接口
- 注解与反射
- 泛型
- 多线程
- 多线程通信
- volatile / synchronized
- await / notify / notifyAll
- 线程池
- 线程池入门 Callable 和 Future
- 线程池各参数的意义
- 并发库
- Lock
- Condition
- Semaphore
- CyclicBarrier
- CountDownLatch
- Exchanger
- ArrayBlockingQueue
- Java 并发编程
- 多线程通信
- I/O
- 字节流
- InputStream
- FileInputStream
- FilterInputStream
- BufferedInputStream
- DataInputStream
- PushbackInputStream
- ByteArrayInputStream
- ObjectInputStream
- SequenceInputStream
- PipedInputStream
- OutputStream
- FileOutputStream
- FilterOutputStream
- BufferedOutputStream
- DataOutputStream
- PrintStream
- ByteArrayOutputStream
- ObjectOutputStream
- PipedOutputStream
- InputStream
- 字符流
- Reader
- BufferedReader
- InputStreamReader
- FileReader
- StringReader
- PipedReader
- CharArrayReader
- FilterReader
- PushbackReader
- Writer
- BufferedWriter
- InputStreamWriter
- FileWriter
- PrintWriter
- StringWriter
- PipedWriter
- CharArrayWriter
- FilterWriter
- Reader
- 字节流
- 集合框架
- List
- ArrayList
- LinkedList
- Stack
- Vector
- TreeList
- Set
- HashSet
- LinkedHashSet
- TreeSet
- Map
- HashMap
- LinkedHashMap
- WeakHashMap
- TreeMap
- Queue
- PriorityQueue
- ArrayDeque
- 并发包
- ConcurrentHashMap
- CopyOnWriteArrayList
- CopyOnWriteArraySet
- ArrayBlockingQueue
- LinkedBlockingDeque
- LinkedBlockingQueue
- ConcurrentLinkedQueue
- DelayQueue
- List
- JVM 虚拟机
- class 字节码
- class 字节码的构成
- class 字节码指令
- 学习字节码对开发的指导意义
- class 字节码执行
- 方法调用
- 方法调用指令
- 方法重载解析
- 动态分派
- 动态类型语言的支持
- 方法执行
- 局部变量表
- 操作数栈
- 动态连接
- 方法返回地址
- 对象的创建
- 对象的创建过程
- 对象的内存布局
- 对象的访问定位
- 方法调用
- 类加载
- 类的加载时机
- 类的加载过程
- 类加载器
- 双亲委派机制
- 自定义类加载器
- 类加载器死锁问题
- Class.forName VS ClassLoader.loadClass
- JVM 内存区域
- 程序计数器
- Java 虚拟机栈
- 本地方法栈
- Java 堆
- 方法区
- 运行时常量池
- 垃圾回收
- 什么样的对象可以被回收
- 什么是 GC Root
- 垃圾回收算法
- 标记-清除算法
- 复制算法
- 标记整理算法
- 分代收集算法
- 常见的垃圾收集器
- Serial 收集器
- ParNew 收集器
- Parallel Scavenge 收集器
- Serial Old 收集器
- CMS 收集器
- Parallel Old 收集器
- G1 收集器
- ZGC
- 垃圾回收相关的内存池
- Eden Space
- Survivor Space
- Old Gen
- Metaspace
- Compressed Class Space
- Code Cache
- JVM 内存模型
- class 字节码
- Java 基础
Kotlin
- Kotlin 数据类型、访问修饰符
- Kotlin 中的 Class 和 Interface
- Lambda 表达式
- 定义 Lambda 表达式
- Member Reference
- 常用函数 let、with、run、apply 分析
- Lambda 原理分析
- 高阶函数
- 高阶函数的定义
- 高阶函数的原理分析
- 高阶函数的优化
- Kotlin 泛型
- Java 泛型:不变、协变、逆变
- Kotlin 中的协变、逆变
- Kotlin 泛型擦除和具体化
- Kotlin 集合
- Kotlin 集合创建方式有哪些
- Kotlin 集合的常用的函数
- Kotlin 集合 Sequence 原理
- Kolint 操作符重载
- 算术操作符重载
- 比较操作符重载
- 集合相关的操作符重载
- 区间操作符重载
- 解构操作符重载
- 属性委托
- Koltin 和 Java 交互的一些问题
Android 基础
- 四大组件
- Activity
- Service
- ContentProvider
- BroadcastReceiver
- Activity 启动模式
- standard
- singleTop
- singleTask
- singleInstance
- 常用的布局控件
- RecyclerView
- ConstraintLayout
- WebView
- ......
- 数据存储
- SharedPreferences
- File
- SQLite
- Realm
- 线程异步
- Thread
- AsyncTask
- IntentService
- 线程池
- IPC
- IPC 方式
- Bundle
- 文件共享
- AIDL
- Messager
- ContentProvider
- Socket
- 框架
- Hermes
- HermesEventBus
- IPC 方式
- 熟悉常用的开源框架
- 四大组件
UI
- UI 绘制流程及原理
- 事件的传递机制
- 自定义 View
- 屏幕适配
开源库
- RxJava
- OkHttp
- Retrofit
- Router
- EventBus
- Glide
- Dagger
- LeakCanary
- SQLite
- ......
Android 虚拟机
- Dalvik
- ART
架构
- 程序架构
- MVC
- MVP
- MVVM
- Clean
- Jetpack
- 设计模式
- 6 大设计原则
- 模板模式
- 观察者模式
- 单例模式
- 建造者模式
- 工厂模式
- 适配器模式
- 装饰器模式
- 代理模式
- ......
- 架构思想
- 概念
- IoC 控制反转
- DI 依赖注入
- AOP 面向切面
- 开源方案
- ASM
- Javasisit
- AspectJ
- 工具
- APT
- Gradle plugin
- 概念
- 组件化
- 如何处理组件之间的代码边界
- 组件之间的 Router 路由
- 控制反转和依赖注入
- 如何管理拆分的 Module
- 插件化
- 发展历程
- 2014 年
- Dynamic-load-apk
- 2015 年
- OpenAltas
- DroidPlugin
- Small
- 2016 年
- Zeus
- 2017 年
- Atlas
- RePlugin
- VirtualAPK
- 2019 年
- Qigsaw
- Shadow
- 2014 年
- 发展历程
- 热修复
- Native Hook
- Dexposed
- AndFix
- HotFix
- Java Multidex
- QZone
- QFix
- Nuwa
- RocooFix
- Java Hook
- Robust
- Aceso
- Dex Replace
- Tinker
- Amigo
- 混合/优化(商业收费)
- Sophix
- Native Hook
- 字节码技术
- gradle plugin
- 全局的 bug 修复
- 日志统计
- 程序架构
性能优化
- 安装包大小优化
- 启动优化(冷启动、暖启动、热启动)
- 耗电量优化
- UI 性能优化
- XML 布局优化
- 代码优化
- 网络优化
- 线上、线下全链路性能监控
NDK
- C/C++
- AndroidStudio NDK 开发
- FFmpeg
跨平台
- H5
- Flutter
- Weex
- ReactNative
团队
- 如何提高整体的团队水平?
- 如何提高提高团队内代码质量?
- 如何提高团队积极性?
计算机技术
网络协议
- 关于 HTTPS 一篇文章就够了
数据结构与算法
- 数据结构与算法(十四)深入理解红黑树和 JDK TreeMap 和 TreeSet 源码分析
- 数据结构与算法(十三)平衡二叉树之 AVL 树
- 数据结构与算法(十二)并查集(Union Find)及时间复杂度分析
- 数据结构与算法(十一)Trie 字典树
- 数据结构与算法(十)线段树(Segment Tree)入门
- 数据结构与算法(九)Set 集合和 BinarySearchTree 的时间复杂度分析
- 数据结构与算法(八)二分搜索树(Binary Search Tree)
- 数据结构与算法(七)树和二叉树
- 数据结构与算法(六)二叉堆、优先队列和 Java PriorityQueue
- 数据结构与算法(五)深入理解递归
- 数据结构与算法(四)队列和 Java ArrayDeque 源码剖析
- 数据结构与算法(三)栈和 Java Stack 源码分析
- 数据结构与算法(二)线性表之链式存储和 LinkedList 实现
- 数据结构与算法(一)线性表之顺序存储和 ArrayList、Vector 源码剖析
Java
Java 基础
- Java 反射技术详解
- Java XML 解析方式汇总
- Java ClassLoader 类加载器详解
Java 网络编程
- Java 网络编程详解(一)
- Java 网络编程详解(二)
JavaIO
- Java I/O 流操作(一)System Properties Runtime 类
- Java I/O 流操作(二)字节流与缓冲流
- Java I/O 流操作(三)File 文件操作、PrintWriter、SequenceInputStream
- Java I/O 流操作(四)对象的序列化
Java 多线程
- Java 多线程(一)线程间的互斥和同步通信
- Java 多线程(二)同步线程分组问题
- Java 多线程(三)线程池入门 Callable 和 Future
- Java 多线程(四)ThreadPoolExecutor 线程池各参数的意义
- Java 多线程(五)Lock 和 Condition 实现线程同步通信
- Java 多线程(六)Semaphore 实现信号灯
- Java 多线程(七)CyclicBarrier 同步的工具类
- Java 多线程(八)CountDownLatch 同步工具类
- Java 多线程(九)Exchanger 同步工具类
- Java 多线程(十)ArrayBlockingQueue 阻塞队列
- Java 多线程(十一)JDK 同步集合
Java 集合框架
- 数据结构与算法(十四)深入理解红黑树和 JDK TreeMap 和 TreeSet 源码分析
- 数据结构与算法(十三)平衡二叉树之 AVL 树
- 数据结构与算法(十二)并查集(Union Find)及时间复杂度分析
- 数据结构与算法(十一)Trie 字典树
- 数据结构与算法(十)线段树(Segment Tree)入门
- 数据结构与算法(九)Set 集合和 BinarySearchTree 的时间复杂度分析
- 数据结构与算法(八)二分搜索树(Binary Search Tree)
- 数据结构与算法(七)树和二叉树
- 数据结构与算法(六)二叉堆、优先队列和 Java PriorityQueue
- 数据结构与算法(五)深入理解递归
- 数据结构与算法(四)队列和 Java ArrayDeque 源码剖析
- 数据结构与算法(三)栈和 Java Stack 源码分析
- 数据结构与算法(二)线性表之链式存储和 LinkedList 实现
- 数据结构与算法(一)线性表之顺序存储和 ArrayList、Vector 源码剖析
- ArrayBlockingQueue 阻塞队列
Java 虚拟机
- 深入理解 Java 虚拟机(一)~ class 字节码文件剖析
- 深入理解 Java 虚拟机(二)~ 类的加载过程剖析
- 深入理解 Java 虚拟机(三)~ class 字节码的执行过程剖析
- 深入理解 Java 虚拟机(四)~ 各种容易混淆的常量池
- 深入理解 Java 虚拟机(五)~ 对象的创建过程
- 深入理解 Java 虚拟机(六)~ Garbage Collection 剖析
Kotlin
- Kotlin 基础入门详解
- Kotlin 操作符重载详解
- 从 Java 角度深入理解 Kotlin
设计原则与架构
设计模式
- 设计模式 ~ 面向对象 6 大设计原则剖析与实战
- 设计模式 ~ 模板方法模式分析与实战
- 设计模式 ~ 观察者模式分析与实战
- 设计模式 ~ 单例模式分析与实战
- 设计模式 ~ 深入理解建造者模式与实战
- 设计模式 ~ 工厂模式剖析与实战
- 设计模式 ~ 适配器模式分析与实战
- 设计模式 ~ 装饰模式探究
- 设计模式 ~ 深入理解代理模式
- 设计模式 ~ 小结
Android 架构
- Android MVP 架构改造~如何重用顶层业务
- 二维火 Android 云收银模块化架构实践
- Android 架构—MVP 架构在 Android 中的实践
- Android-MVVM 架构-Data Binding 的使用
- 使用 repo 管理 Android 组件化项目
Android 性能优化
- Android 性能优化—内存篇
NDK 开发
- Android NDK ~ 基础入门指南
- Android NDK ~ Java 和 Native 交互
Android 框架
RxJava
- RxJava create 操作符的用法和源码分析
- RxJava map 操作符用法详解
- RxJava flatMap 操作符用法详解
- RxJava concatMap 操作符用法详解
- RxJava onErrorResumeNext 操作符实现 app 与服务器间 token 机制
- RxJava retryWhen 操作符实现错误重试机制
- RxJava 使用 debounce 操作符优化 app 搜索功能
- RxJava concat 操作处理多数据源
- RxJava zip 操作符在 Android 中的实际使用场景
- RxJava switchIfEmpty 操作符实现 Android 检查本地缓存逻辑判断
- RxJava defer 操作符实现代码支持链式调用
- combineLatest 操作符的高级使用
- RxJava 导致 Fragment Activity 内存泄漏问题
- interval、takeWhile 操作符实现获取验证码功能
- RxJava 线程的自由切换
Dagger2
- Android Dagger2(二)源码分析-对象是如何被注入的
- Android Dagger2(一) Dagger 使用详解
ButterKnife
- Android 开发之手把手教你写 ButterKnife 框架(三)
- Android 开发之手把手教你写 ButterKnife 框架(二)
- Android 开发之手把手教你写 ButterKnife 框架(一)
Android WebView
- Android WebView 文件上传及自定义文件选择器
跨平台开发
Flutter
- (一)Flutter 学习之 Dart 变量和类型系统
- (二)Flutter 学习之 Dart 展开操作符 和 Control Flow Collections
- (三)Flutter 学习之 Dart 函数
- (四)Flutter 学习之 Dart 操作符、控制流和异常处理
- (五)Flutter 学习之 Dart 面向对象
- (六)Flutter 学习之 Dart 异步操作详解
- (七)Flutter 学习之开发环境搭建
- (八)Flutter 和 Native 之间的通信详解
- (九)Android 项目集成 Flutter 模块
- (十)Flutter FutureBuilder 优雅构建异步 UI
- 更新中...
经典书籍
- 《Android 开发艺术探索》
- 《Android 源码设计模式》
- 《Android 自定义控件开发入门与实战》
- 《Android 软件安全与逆向分析》
- 《Android 群英传》
- 《Java 编程思想》
- 《Java 核心技术:卷 I 基础知识》
- 《Java8 实战》
- 《重构:改善既有代码的设计》
- 《Java 并发编程实战》
- 《深入理解 Java 虚拟机》
- 《Effective Java 第二版》
- 《Java 与模式》
- 《代码整洁之道》
- 《剑指 Offer 名企面试官精讲典型编程题》
- 《阿里巴巴-深入探索 Android 热修复技术原理》
- 《Kotlin In Action》
- 《HTTP 权威指南》
- 陆续整理网盘开放中...
Android 程序员的技术栈大全相关推荐
- Android 程序员的技术栈大全(1),中高级Android面试题目汇总解答
BufferedReader InputStreamReader FileReader StringReader PipedReader CharArrayReader FilterReader Pu ...
- Android 程序员的技术栈大全,已整理成文档
计算机基础 协议 OSI 模型.TCP/IP 模型 HTTP / HTTP2 / HTTPS 操作系统 Unix / Linux Windows 数据结构与算法 Java Java 基础 面向对象思想 ...
- 这份程序员常用技术栈和工具清单,刷爆朋友圈……
基于Java的Web应用开发技术已成为目前Web开发的主流技术,作为一名Java程序员,到底要掌握什么技术才能完成一个JavaWeb项目呢? 小编和一位十年经历程序员要来这份Java程序员常用技术栈, ...
- Android程序员的技术要求和学习路线
转载自知乎上关于Android程序员技术等级标准的回答: 如上图所描述的技能要求,可分为下面几大模块: 通用知识 编程语言 Android 编码与设计 工具和方法 对应学习线路如下 书籍准备: 1.疯 ...
- 这份2021Java程序员常用技术栈和工具清单,刷爆了朋友圈...
点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 关注公众号后台回复pay或mall获取实战项目资料+视频 作为一枚Java程序员,需要掌握哪些技术和工具才能完成一个J ...
- c/c++程序员的技术栈
在当今的互联网时代, java, 安卓, ios, 大行其道,而c/c++却显得越来越落寞. 其实这并不是c/c++程序员本身的问题,而是这是一个产品快速响应市场的年代.用过c/c++的人都知道, ...
- 前端程序员开发技术栈(前端干货)
网上找的各种资料整理归纳成下面的表格,有需要的朋友们可以收藏一下 Web前端开发 浏览器 (直接百度下载使用就行) Internet Explorer(需要了解,需不需要看公司业务需求) Ch ...
- Android程序员现状:没有架构师的命,却得了架构师的病!
Android开发的现状貌似已经是一个老生常谈的问题了.但今天不想写Android开发的现状,什么Android前景如何.Android凉凉之类被别人写烂了的话题. 今天我们来聊聊我们自己,我们And ...
- Android程序员该如何进阶学习以预防35岁中年职场危机?
一.大家都在担心的问题 不只是Android,很多程序员都在担心业界的"35岁危机",担心自己到35岁后就被市场淘汰. 比如最近就经常被大家问到这样的问题,比如这样的: 大佬好,目 ...
最新文章
- solr的安装配置与helloworld
- 百练OJ:2728:第一个C++程序
- 分享实录 | 单人开发场景下的测试环境实践
- ABAP如何调用OCX
- unity gizmo_GitLab的新功能,沃尔玛的OneOps,《纽约时报》的Gizmo以及更多新闻
- a lt b lt c c语言描述,《数据结构与算法分析――c语言描述》读后笔记 4
- ping不同的网卡方法
- CATransition(过渡)
- vue修改数组元素方法
- ECharts初体验(下载使用步骤、vscode取色器插件)
- matlab中求最大似然估计,matlab求最大似然估计
- ucserver admin.php,Discuz!X3.2 升级后ucenter、uc_server正确密码却无法登录后台的解决方法...
- 线性与非线性规划:可行方向法
- 什么是计算机内存?它的用途是什么?
- 计算机滴答滴的教学,滴答滴教案
- openstack glance-api-paster
- 【科软课程NLP】自然语言处理复习
- JButton部分常用的方法
- 微信小程序的基本使用
- Matlab实现 把.tdms文件转换成.mat文件,并读取分割成等长信号数据集
热门文章
- 南加大计算机科学硕士费用,南加州大学计算机科学硕士排名第15(2020年TFE Times排名)...
- NLP04-pyLDAvis可视化主题
- ERP之替代料的使用
- [市场产品部]MP部副部长(陈晓慧):产品概念设计组-餐饮公司设计任务圆满完成...
- Hadoop安装(一) --- JDK安装
- 1循环结构程序设计-第5关:C循环-寻找完数
- socket的延时技巧
- Windows官方原版操作系统下载
- 100个人围成一个圈从1开始报数,输入数m,报到m的人退出,继续从1开始报,报到m继续退出依次下去直到剩余的人小于m不再报数,输出剩下人的位置。
- Visio viewer 不能从IE打开vsd文件(转)