Android 程序员的技术栈大全

网友投稿 958 2022-10-17

Android 程序员的技术栈大全

Android 程序员的技术栈大全

最全的 Android 技术栈

内容涵盖绝大部分 Android 程序员所需要的技能:「数据结构算法」「程序架构」「设计模式」「性能优化」「组件化」「插件化」「热修复」「NDK技术」「自定义View」「性能优化」「Android源码分析」「深入理解Kotlin」「Java核心技术」「Jetpack」「Router」「Flutter」「RxJava」「Glide」「LeakCanary」「Dagger2」「Retrofit」「OkHttp」「ButterKnife」「GreenDAO」「经典书籍」等。如果您有任何问题或建议欢迎 Issues ,核心技术栈包括:

Java核心技术Java 集合框架原理Java 网络编程Java 多线程、线程池、并发库Java I/O,覆盖绝大部分 I/O 类JVM 虚拟机技术 深入理解Kotlin技术Kotlin 类型体系Kotlin 面向对象Lambda 表达式高阶函数彻底搞懂 Kotlin 泛型Kotlin 集合操作符重载Kotlin 协程 Android基础四大组件Activity 启动模式数据存储异步操作IPC熟悉常用框架的使用 Android进阶UI 原理性能优化常用的开源框架实现原理Android 架构(MVC、MVP、MVVM、Clean、Jetpack)设计模式、6 大设计原则AOP、IoC、DIAPT、Gradle Plugin、ASM、Javassist、AspectJ组件化、插件化、热修复NDK 技术Android 虚拟机 跨平台FlutterReactNativeWeex 团队如何提高整体的团队水平?如何提高提高团队内代码质量?如何提高团队积极性?

├─ Computer Sience│ ├─ Protocol│ │ └─ OSI、TCP/IP Model│ ├─ Operating System│ │ ├─ Unix、Linux│ │ └─ Windows├─ Java│ ├─ Java Basic│ │ ├─ OOP│ │ ├─ Class/Interface│ │ ├─ Annotation/Reflection│ │ └─ Generic│ ├─ 多线程│ │ ├─ 多线程通信│ │ │ ├─ volatile/synchronized│ │ │ └─ await/notify/notifyAll│ │ ├─ Thread Pool│ │ │ ├─ 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│ ├─ Android 基础│ │ ├─ 四大组件│ │ │ ├─ Activity│ │ │ ├─ Service│ │ │ ├─ ContentProvider│ │ │ └─ BroadcastReceiver│ │ ├─ Activity 启动模式│ │ │ ├─ standard│ │ │ ├─ singleTop│ │ │ ├─ singleTask│ │ │ └─ singleInstance│ │ ├─ 数据存储│ │ │ ├─ SharedPreferences│ │ │ ├─ File│ │ │ ├─ SQLite│ │ │ └─ Realm│ │ ├─ 线程异步│ │ │ ├─ Thread│ │ │ ├─ AsyncTask│ │ │ ├─ IntentService│ │ │ └─ 线程池│ │ ├─ IPC│ │ │ ├─ IPC 方式│ │ │ │ ├─ Bundle│ │ │ │ ├─ 文件共享│ │ │ │ ├─ AIDL│ │ │ │ ├─ Messager│ │ │ │ ├─ ContentProvider│ │ │ │ └─ Socket│ │ │ └─ 框架│ │ │ │ ├─ Hermes│ │ │ │ └─ HermesEventBus│ │ ├─ 熟悉常用的开源框架│ │ │ │ ├─ Glide│ │ │ │ ├─ Retrofit│ │ │ │ ├─ OkHttp│ │ │ │ ├─ Dagger2│ │ │ │ ├─ Router│ │ │ │ ├─ EventBus│ │ │ │ ├─ LeakCanary│ │ │ │ └─ RxJava│ ├─ Android 进阶│ │ ├─ UI 原理│ │ │ ├─ UI绘制流程及原理│ │ │ ├─ 事件的传递机制│ │ │ ├─ 自定义 View│ │ │ └─ 屏幕适配│ │ ├─ 性能优化│ │ │ ├─ 安装包大小优化│ │ │ ├─ 启动优化(冷启动、暖启动、热启动)│ │ │ ├─ 耗电量优化│ │ │ ├─ UI性能优化│ │ │ │ ├─ XML 布局优化│ │ │ │ └─ 代码优化│ │ │ ├─ 字节码技术│ │ │ │ ├─ 全局的 bug 修复│ │ │ │ └─ 日志打点统计│ │ │ ├─ 网络优化│ │ │ └─ 线上、线下全链路性能监控│ │ ├─ UI 原理│ │ │ ├─ UI绘制流程及原理│ │ │ ├─ 事件的传递机制│ │ │ ├─ 自定义 View│ │ │ └─ 屏幕适配│ │ ├─ Android架构│ │ │ ├─ 程序架构│ │ │ │ ├─ 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│ │ │ ├─ 知晓常用开源框架的实现原理├─ Android 虚拟机│ ├─ Dalvik│ └─ ART├─ NDK│ ├─ C/C++│ ├─ FFmpeg│ └─ AndroidStudio NDK├─ 跨平台│ ├─ H5│ ├─ ReactNative│ ├─ Weex│ └─ Flutter├─ 团队│ ├─ 如何提高整体的团队水平?│ ├─ 如何提高提高团队内代码质量?│ └─ 如何提高团队积极性?

计算机技术

网络协议

关于 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、SequenceInputStreamJava I/O 流操作(四)对象的序列化

Java多线程

Java 多线程(一)线程间的互斥和同步通信Java 多线程(二)同步线程分组问题Java 多线程(三)线程池入门 Callable 和 FutureJava 多线程(四)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 性能优化 ~ 内存优化Android 性能优化 ~ 包体积优化实战

NDK开发

Android NDK ~ 基础入门指南Android NDK ~ Java 和 Native 交互

Android开源框架

Jetpack

Android Jetpack(一)Lifecycle 组件原理剖析Android Jetpack(二)ViewModel 组件原理剖析Android Jetpack(三)LiveData 组件原理剖析

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线程的自由切换

Retrofit

Android Retrofit 源码系列(一)~ 原理剖析Android Retrofit 源码系列(二)~ 自定义 CallAdapterAndroid Retrofit 源码系列(三)~ 整合 RxJava、Coroutine 分析Android Retrofit 源码系列(四)~ 文件上传Android Retrofit 源码系列(五)~ 设计模式分析

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权威指南》陆续整理网盘开放中...

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:postman多环境配置token自动登录配置
下一篇:win10 无法启动dhcp client服务
相关文章

 发表评论

暂时没有评论,来抢沙发吧~