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
      • 字符流
        • Reader

          • BufferedReader
          • InputStreamReader
            • FileReader
          • StringReader
          • PipedReader
          • CharArrayReader
          • FilterReader
            • PushbackReader
        • Writer
          • BufferedWriter
          • InputStreamWriter
            • FileWriter
          • PrintWriter
          • StringWriter
          • PipedWriter
          • CharArrayWriter
          • FilterWriter
    • 集合框架
      • 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
    • 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 内存模型
  • 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
    • 熟悉常用的开源框架
  • 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
    • 热修复
      • Native Hook

        • Dexposed
        • AndFix
        • HotFix
      • Java Multidex
        • QZone
        • QFix
        • Nuwa
        • RocooFix
      • Java Hook
        • Robust
        • Aceso
      • Dex Replace
        • Tinker
        • Amigo
      • 混合/优化(商业收费)
        • Sophix
    • 字节码技术
      • 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 程序员的技术栈大全相关推荐

  1. Android 程序员的技术栈大全(1),中高级Android面试题目汇总解答

    BufferedReader InputStreamReader FileReader StringReader PipedReader CharArrayReader FilterReader Pu ...

  2. Android 程序员的技术栈大全,已整理成文档

    计算机基础 协议 OSI 模型.TCP/IP 模型 HTTP / HTTP2 / HTTPS 操作系统 Unix / Linux Windows 数据结构与算法 Java Java 基础 面向对象思想 ...

  3. 这份程序员常用技术栈和工具清单,刷爆朋友圈……

    基于Java的Web应用开发技术已成为目前Web开发的主流技术,作为一名Java程序员,到底要掌握什么技术才能完成一个JavaWeb项目呢? 小编和一位十年经历程序员要来这份Java程序员常用技术栈, ...

  4. Android程序员的技术要求和学习路线

    转载自知乎上关于Android程序员技术等级标准的回答: 如上图所描述的技能要求,可分为下面几大模块: 通用知识 编程语言 Android 编码与设计 工具和方法 对应学习线路如下 书籍准备: 1.疯 ...

  5. 这份2021Java程序员常用技术栈和工具清单,刷爆了朋友圈...

    点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 关注公众号后台回复pay或mall获取实战项目资料+视频 作为一枚Java程序员,需要掌握哪些技术和工具才能完成一个J ...

  6. c/c++程序员的技术栈

    在当今的互联网时代, java,  安卓, ios, 大行其道,而c/c++却显得越来越落寞. 其实这并不是c/c++程序员本身的问题,而是这是一个产品快速响应市场的年代.用过c/c++的人都知道, ...

  7. 前端程序员开发技术栈(前端干货)

    网上找的各种资料整理归纳成下面的表格,有需要的朋友们可以收藏一下 Web前端开发 浏览器 (直接百度下载使用就行) Internet Explorer(需要了解,需不需要看公司业务需求)     Ch ...

  8. Android程序员现状:没有架构师的命,却得了架构师的病!

    Android开发的现状貌似已经是一个老生常谈的问题了.但今天不想写Android开发的现状,什么Android前景如何.Android凉凉之类被别人写烂了的话题. 今天我们来聊聊我们自己,我们And ...

  9. Android程序员该如何进阶学习以预防35岁中年职场危机?

    一.大家都在担心的问题 不只是Android,很多程序员都在担心业界的"35岁危机",担心自己到35岁后就被市场淘汰. 比如最近就经常被大家问到这样的问题,比如这样的: 大佬好,目 ...

最新文章

  1. solr的安装配置与helloworld
  2. 百练OJ:2728:第一个C++程序
  3. 分享实录 | 单人开发场景下的测试环境实践
  4. ABAP如何调用OCX
  5. unity gizmo_GitLab的新功能,沃尔玛的OneOps,《纽约时报》的Gizmo以及更多新闻
  6. a lt b lt c c语言描述,《数据结构与算法分析――c语言描述》读后笔记 4
  7. ping不同的网卡方法
  8. CATransition(过渡)
  9. vue修改数组元素方法
  10. ECharts初体验(下载使用步骤、vscode取色器插件)
  11. matlab中求最大似然估计,matlab求最大似然估计
  12. ucserver admin.php,Discuz!X3.2 升级后ucenter、uc_server正确密码却无法登录后台的解决方法...
  13. 线性与非线性规划:可行方向法
  14. 什么是计算机内存?它的用途是什么?
  15. 计算机滴答滴的教学,滴答滴教案
  16. openstack glance-api-paster
  17. 【科软课程NLP】自然语言处理复习
  18. JButton部分常用的方法
  19. 微信小程序的基本使用
  20. Matlab实现 把.tdms文件转换成.mat文件,并读取分割成等长信号数据集

热门文章

  1. 南加大计算机科学硕士费用,南加州大学计算机科学硕士排名第15(2020年TFE Times排名)...
  2. NLP04-pyLDAvis可视化主题
  3. ERP之替代料的使用
  4. [市场产品部]MP部副部长(陈晓慧):产品概念设计组-餐饮公司设计任务圆满完成...
  5. Hadoop安装(一) --- JDK安装
  6. 1循环结构程序设计-第5关:C循环-寻找完数
  7. socket的延时技巧
  8. Windows官方原版操作系统下载
  9. 100个人围成一个圈从1开始报数,输入数m,报到m的人退出,继续从1开始报,报到m继续退出依次下去直到剩余的人小于m不再报数,输出剩下人的位置。
  10. Visio viewer 不能从IE打开vsd文件(转)