GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - BlackZhangJX/Android-Notes: Android开发核心知识点笔记(不断更新中🔥)

BranchesTags
Open more actions menu

Latest commit

 

History

212 Commits
212 Commits

Folders and files

NameName
Last commit message
Last commit date
Docs
Docs
 
 
screenshots
screenshots
 
 
README.md
README.md
 
 

Repository files navigation

要想成为一名优秀的Android开发,一份知识体系是必不可少的~

感谢大家的关注与支持,Issues的问题都会看的,有问题都会慢慢改过来,实在是工作上比较忙,很难抽出时间来更新~

一不小心拖更了这么久,这次主要是针对Framework部分和音视频部分。(另外,之前做整合的时候记得有标注过原作者,之前有好友反馈说没保存下来,又得一个一个加上去~~~

目录以及总的结构方面还需要再优化一下,然后N久以前就打算再整理一下面试题相关的内容……emm,一直没有大家别怪我~后面计划会给大家制作一份知识体系图……

时间跨度可能不会很短,但会尽自己能力去更新维护。再次感谢大家的关注与支持,同时也感谢向我提出修改建议的朋友们!

Emm……辛辛苦苦种树……确定不来个Star鼓励一下?

部分内容收集整理于网络,在此也再次感谢所有内容产出者的贡献!

版权声明 ~~>>>如果觉得看起来比较麻烦,需要PDF版本,或是需要更多学习资料、面试资料,进阶、架构资料,都可以加上VX或QQ群领取。祝愿每一位有追求的Android开发同胞都能进大厂拿高薪!

Android-Notes

Android开发核心知识点笔记-目录:

1 2 3 4 5 6 7 8 9 10
Java Android Android
扩展
Frame
work
性能优化 开源库
源码分析
Gradle 设计模式 C++ 音视频
☕ 📱 📳 📁 ⚙️ 🔍 📔 🛠️ ©️ 📼
A B C 持续更新中
计算机
网络基础
Kotlin 常见面试
算法题
持续更新中
💻 🍭 📝 持续更新中

Java 知识点汇总

  • JVM
    • JVM 工作流程
    • 运行时数据区(Runtime Data Area)
      • 程序计数器
      • Java 虚拟机栈
      • 本地方法栈
      • Java 堆
      • 方法区
    • 方法指令
    • 类加载器
    • 垃圾回收 gc
      • 对象存活判断
      • 垃圾收集算法
      • 垃圾收集器
      • 内存模型与回收策略
  • Object
    • equals 方法
    • hashCode 方法
  • static
  • final
  • String、StringBuffer、StringBuilder
  • 异常处理
  • 内部类
    • 匿名内部类
  • 多态
  • 抽象和接口
  • 集合框架
    • HashMap
      • 结构图
      • HashMap 的工作原理
      • HashMap 与 HashTable 对比
    • ConcurrentHashMap
      • Base 1.7
      • Base 1.8
    • ArrayList
    • LinkedList
    • CopyOnWriteArrayList
  • 反射
  • 单例
    • 饿汉式
    • 双重检查模式
    • 静态内部类模式
  • 线程
    • 状态
    • 状态控制
  • volatile
  • synchronized
    • 根据获取的锁分类
    • 原理
  • Lock
    • 锁的分类
      • 悲观锁、乐观锁
      • 自旋锁、适应性自旋锁
      • 死锁
  • 引用类型
  • 动态代理
  • 元注解

Android 知识点汇总

  • Activity
    • 生命周期
    • 启动模式
    • 启动过程
  • Fragment
    • 特点
    • 生命周期
    • 与Activity通信
  • Service
    • 启动过程
    • 绑定过程
    • 生命周期
    • 启用前台服务
  • BroadcastReceiver
    • 注册过程
  • ContentProvider
    • 基本使用
  • 数据存储
  • View
    • MeasureSpec
    • MotionEvent
    • VelocityTracker
    • GestureDetector
    • Scroller
    • View 的滑动
    • View 的事件分发
    • 在 Activity 中获取某个 View 的宽高
    • Draw 的基本流程
    • 自定义 View
  • 进程
    • 进程生命周期
    • 多进程
    • 进程存活
      • OOM_ADJ
      • 进程被杀情况
      • 进程保活方案
  • Parcelable 接口
    • 使用示例
    • 方法说明
    • Parcelable 与 Serializable 对比
  • IPC
    • IPC方式
    • Binder
      • 流程
    • AIDL 通信
    • Messenger
  • Window / WindowManager
    • Window 概念与分类
    • Window 的内部机制
    • Window 的创建过程
      • Activity 的 Window 创建过程
      • Dialog 的 Window 创建过程
      • Toast 的 Window 创建过程
  • Bitmap
    • 配置信息与压缩方式
    • 常用操作
      • 裁剪、缩放、旋转、移动
      • 保存与释放
      • 图片压缩
    • BitmapFactory
      • Bitmap创建流程
      • Option类
      • 基本使用
    • 内存回收
  • 屏幕适配
    • 单位
    • 头条适配方案
    • 刘海屏适配
  • Context
  • SharedPreferences
    • 获取方式
      • getPreferences
      • getDefaultSharedPreferences
      • getSharedPreferences
    • 架构
    • apply / commit
    • 注意
  • 消息机制
    • Handler 机制
    • 工作原理
      • ThreadLocal
      • MessageQueue
      • Looper
      • Handler
  • 线程异步
    • AsyncTask
      • 基本使用
      • 工作原理
    • HandlerThread
    • IntentService
    • 线程池
  • RecyclerView 优化
  • Webview
    • 基本使用
      • WebView
      • WebSettings
      • WebViewClient
      • WebChromeClient
    • Webview 加载优化
    • 内存泄漏

Android 扩展知识点汇总

  • ART
    • ART 功能
      • 预先 (AOT) 编译
      • 垃圾回收优化
      • 开发和调试方面的优化
    • ART GC
  • Hook
    • 基本流程
    • 使用示例
  • Proguard
    • 规则
    • 公共模板
    • 常用的自定义混淆规则
    • aar中增加独立的混淆配置
    • 检查混淆和追踪异常
  • 架构
    • MVC
    • MVP
    • MVVM
  • Jetpack
    • 架构
    • 使用示例
  • NDK 开发
    • JNI 基础
      • 数据类型
      • String 字符串函数操作
      • 常用 JNI 访问 Java 对象方法
    • NDK 开发
      • 基础开发流程
      • System.loadLibrary()
    • CMake 构建 NDK 项目
    • 常用的 Android NDK 原生 API
  • 类加载器
    • 双亲委托模式
    • DexPathList

Framework 知识点汇总

  • Handler
    • Handler机制实现原理(一)宏观理论分析与Message源码分析
      • Message:
        • 看一下全局变量:有好多存数据的对象。
        • Obtain方法:
        • recycle():回收当前message到全局池
      • setData:
      • 发送消息的一些方法:
        • 构造方法:
        • writeToParcel:
    • Handler机制实现原理(二)MessageQueue的源码分析
      • 消息队列存储原理
      • 使用JNI实现的native方法
      • 创建与销毁
      • 消息入队管理enqueueMessage()方法
      • 同步消息拦截器
      • 队列空闲处理器IdleHandler
      • 消息出队管理next()方法
      • 总结
    • Handler机制实现原理(三)Looper的源码分析
      • 创建与退出Looper
      • 运行Looper处理消息
      • 总结
    • Handler机制实现原理(四)handler的源码分析
      • 初始化
      • 发送消息
      • 接收消息
      • 内存泄漏的可能
    • Handler机制实现原理(五)总结
      • Message缓存池
      • 真正的阻塞发生在MessageQueue
      • 为什么推荐使用Handler实现线程间通信
  • Binder
    • Binder原理(一)学习Binder前必须要了解的知识点
      • Linux和Android的IPC机制种类
        • Linux中的IPC机制种类
        • Android中的IPC机制
      • Linux和Binder的IPC通信原理
        • Linux的IPC通信原理
        • Binder的通信原理
      • 为什么要使用Binder
      • 为什么要学习Binder?
    • Binder原理(二)ServiceManager中的Binder机制
      • 基于Binder通信的C/S架构
      • MediaServer的main函数
      • 每个进程唯一的ProcessState
      • ServiceManager中的Binder机制
        • BpBinder和BBinder
        • 解密IServiceManager
        • IServiceManager家族
      • 小结
    • Binder原理(三)系统服务的注册过程
      • 从调用链角度说明MediaPlayerService是如何注册的
        • writeTransactionData函数分析
        • waitForResponse函数分析
        • 小结
      • 从进程角度说明MediaPlayerService是如何注册的
      • 总结
    • Binder原理(四)ServiceManager的启动过程
      • ServiceManager的入口函数
        • 打开binder设备
        • 注册成为Binder机制的上下文管理者
        • 循环等待和处理client端发来的请求
      • 总结
    • Binder原理(五)系统服务的获取过程
      • 客户端MediaPlayerService请求获取服务
      • 服务端ServiceManager处理请求
      • 总结
    • Binder原理(六)Java Binder的初始化
      • Java Binder的JNI注册
        • Binder类的注册
        • BinderInternal类的注册
    • Binder原理(七)Java Binder中系统服务的注册过程
      • 将AMS注册到ServiceManager
        • BinderInternal.getContextObject()
        • ServiceManagerNative.asInterface()
        • getIServiceManager().addService()
      • 引出JavaBBinder
      • 解析JavaBBinder
      • Java Binder架构
  • Zygote
    • Zygote(一):Android系统的启动过程及Zygote的启动过程
      • init进程
        • 属性服务初始化与启动
        • 设置进程信号处理
        • 解析init配置文件
      • Zygote进程启动
        • SystemServer启动过程
    • Zygote(二):应用进程的启动过程
      • Zygote监听客户端请求
      • AMS发送创建进程请求
      • Zygote接收信息并创建进程
      • 启动Binder线程池
  • AMS
    • AMS源码分析(一)Activity生命周期管理
      • Activity的生命周期
        • 一个Activity从启动到销毁所经历的周期
        • 从一个Activity启动另一个Activity的生命周期
      • 源码分析
        • Binder
        • IdleHandler
        • Activity在AMS中的标识
        • 启动过程时序图
        • 从AActivity跳转BActivity的生命周期分析
          • AActivity#onPause
          • BActivity#onCreate
          • BActivity#onStart
          • BActivity#onResume
          • AActivity#onStop
        • 从BActivity返回到AActivity
          • BActivity#onPause
          • AActivity#onStart、AActivity#onResume
          • BActivity#onStop、BActivity#onDestroy
    • AMS源码分析(二)onActivityResult执行过程
      • onActivityResult
        • AActivity跳转BAcitivty并从BActivity返回数据
      • Intent.FLAG_ACTIVITY_FORWARD_RESULT
        • 示例:
          • AActivity以startActivityForResult方式打开BActivity
          • BActivity以普通方式打开CActivity,设置Intent 的Flag Intent.FLAG_ACTIVITY_FORWARD_RESULT
      • 源码解析
        • ActivityResult数据的写入
        • ActivityResult数据的传递
        • Intent.FLAG_ACTIVITY_FORWARD_RESULT的实现
    • AMS源码分析(三)AMS中Activity栈管理详解
      • Activity栈管理相关类
        • ActivityStackSupervisor
        • ActivityDisplay
        • TaskRecord
        • ActivityStack
        • 关系图:
      • 启动模式
        • standard
          • Intent.FLAG_ACTIVITY_CLEAR_TOP
          • 源码分析
            • 加入TaskRecord
            • standard + Intent.FLAG_ACTIVITY_CLEAR_TOP
        • singleTop
          • 流程图:
            • 原Activity不在栈顶
            • 原Activity在栈顶
          • singleTop + Intent.FLAG_ACTIVITY_CLEAR_TOP
          • log
            • 原Activity不在栈顶
            • 原Activity在栈顶
            • 原Actiivty在栈顶且设置Intent.FLAG_ACTIVITY_CLEAR_TOP
          • 源码分析
            • singleTop + Intent.FLAG_ACTIVITY_CLEAR_TOP
        • singleTask
          • 启动流程
            • 场景一
            • 场景二
            • 场景三
          • singeTask源码分析
        • singleInstance
      • Intent.FLAG_ACTIVITY_NEW_TASK、taskAffinity、新Task的创建
        • Intent.FLAG_ACTIVITY_NEW_TASK的自动设置
        • taskAffinity的识别
        • 是否创建新task的识别
        • 总结
  • PMS
    • 深入PMS源码(一)—— PMS的启动过程和执行流程
      • PMS简介
      • PMS的启动过程
      • PMS构造函数
        • PMS的工作过程
        • 解析配置文件package.xml
        • 扫描安装的应用程序
        • 将apk解析数据同步到PMS的属性中
        • 更新配置文件
    • 深入PMS源码(二)—— APK的安装和卸载源码分析
      • 应用程序安装基础
      • PMS中APK安装过程
      • 应用程序的卸载过程
    • 深入PMS源码(三)—— PMS中intent-filter的匹配架构
      • PMS保存IntentFilter
      • IntentFilter的查找匹配
  • WMS
    • WMS(一):WMS的诞生
      • WMS概述
        • 窗口管理
        • 窗口动画
        • 输入系统的中转站
        • Surface管理
      • WMS的诞生
    • WMS(二):WMS的重要成员和Window的添加过程
      • WMS的重要成员
      • Window的添加过程(WMS部分)
        • addWindow方法part1
        • addWindow方法part2
        • addWindow方法part3
        • addWindow方法总结
      • 结语
    • WMS(三):Window的删除过程
      • Window的删除过程

性能优化知识点汇总

  • 启动优化
    • 视觉优化
      • 启动主题优化
    • 代码优化
      • 冷启动耗时统计
      • Application 优化
      • 闪屏页业务优化
      • 广告页优化
    • 优化效果
    • 启动窗口
  • UI渲染优化
    • CPU、GPU的职责
    • 查找Overdraw
    • clipRect解决自定义View的OverDraw
    • Hierarchy Viewer的使用
    • 内存抖动现象
  • 崩溃优化
    • 崩溃
      • 崩溃的收集
      • ANR
      • 应用退出
    • 崩溃处理
      • 崩溃现场
      • 崩溃分析
      • 系统崩溃
  • 内存优化
    • 优化工具
      • Memory Profiler
      • Memory Analyzer(MAT)
      • LeakCannary
    • 内存管理
      • 内存区域
      • 对象存活判断
      • 垃圾回收算法
    • 内存抖动
      • 模拟内存抖动
      • 分析并定位
    • 内存泄露
      • 模拟内存泄露
      • 分析并定位
    • MAT分析工具
      • Overview
      • Histogram
      • Dominator_tree
      • SQL
      • Thread_overview
      • Top Consumers
      • Leak Suspects
    • 通过ARTHook检测不合理图片
      • 获取Bitmap占用内存
      • 检测大图
    • 线上内存监控
      • 常规方案
      • LeakCannary定制改造
      • 完整方案
  • 卡顿优化
    • 卡顿
    • 帧率
    • 卡顿原因
    • 卡顿检测
      • 使用dumpsys gfxinfo
      • 使用systrace
      • 使用BlockCanary
      • 使用Choreographer
    • 优化
  • 存储优化
    • 交换数据格式
    • SharePreferences 优化
    • Bitmap 解码
    • 数据库优化
      • 事务
      • SQLiteStatement
      • 索引
    • 其它通用优化
  • 网络优化
    • 网络连接对用户的影响
    • 分析网络连接的工具
      • Network Monitor
      • 网络代理工具
    • 从哪些方面优化网络连接
      • 接口设计
      • 网络缓存
      • 弱网测试&优化
  • 耗电优化
    • 耗电监控
      • Android Vitals
    • 耗电监控都监控什么
    • 如何监控耗电
      • Java Hook
      • 插桩
  • 多线程并发优化
    • Thread 使用
      • Thread 中断
      • 同步
    • Android Threading
      • AsyncTask
      • HandlerThread
      • IntentService
      • Loader
      • ThreadPool
    • 线程优先级
  • 安装包优化
    • 常用的优化方式
      • 清理无用资源
      • 图片资源优化
      • 资源动态加载
      • lib库优化
      • 7zip压缩资源
      • 代码混淆
      • 资源(res)混淆
      • 使用微信AndResGuard
      • Facebook的redex优化字节码

Android 开源库源码分析

  • OKHttp
    • OKHttp请求流程
      • 新建OKHttpClient客户端
      • 同步请求流程
      • 异步请求流程
    • 网络请求缓存处理
    • 连接池
  • Retrofit
    • 基本使用流程
    • Retrofit构建过程
      • Retrofit核心对象解析
      • Builder内部构造
      • 添加baseUrl
      • 添加GsonConverterFactory
      • build过程
    • 创建网络请求接口实例过程
    • 创建网络请求接口类实例并执行请求过程
    • Retrofit源码流程图
  • Glide
    • 基本使用流程
    • GlideApp.with(context)源码详解
    • load(url)源码详解
    • into(iv)源码详解
    • 完整Glide加载流程图
  • GreenDao
    • 基本使用流程
    • GreenDao使用流程分析
      • 创建数据库帮助类对象DaoMaster.DevOpenHelper
      • 创建DaoMaster对象
      • 创建DaoSession对象
      • 插入源码分析
      • 查询源码分析
    • GreenDao是如何与ReactiveX结合?
  • RxJava
    • RxJava是什么?
    • RxJava的订阅流程
      • 创建被观察者过程
      • 订阅过程
    • RxJava的线程切换
  • LeakCanary
    • 原理概述
    • 简单示例
    • 源码分析
    • LeakCanary运作流程
  • ButterKnife
    • 简单示例
    • 源码分析
      • 模板代码解析
      • ButterKnife 是怎样实现代码注入的
      • ButterKnife是如何在编译时生成代码的?
  • Dagger 2
    • 预备知识
      • @Inject
      • @Module
      • @Singleton
      • @Providers
      • @Component
      • @Scope
      • @Qualifier
      • dependencies
      • @SubComponent
    • 简单示例
    • 源码分析
  • EventBus
    • 简单示例
    • 源码分析

音视频知识点汇总

  • Android音视频开发初级入门篇
    • Android 音视频开发(一) : 通过三种方式绘制图片
      • ImageView 绘制图片
      • SurfaceView 绘制图片
      • 自定义 View 绘制图片
    • Android 音视频开发(二):使用 AudioRecord 采集音频PCM并保存到文件
      • AudioRecord API详解
      • 使用 AudioRecord 实现录音,并生成wav
        • 创建一个AudioRecord对象
        • 初始化一个buffer
        • 开始录音
        • 创建一个数据流,一边从AudioRecord中读取声音数据到初始化的buffer,一边将buffer中数据导入数据流。
        • 关闭数据流
        • 停止录音
      • 附言
      • 源码
    • Android 音视频开发(三):使用 AudioTrack 播放PCM音频
      • AudioTrack 基本使用
        • MODE_STATIC模式
        • MODE_STREAM模式
      • AudioTrack 详解
        • 音频流的类型
        • Buffer分配和Frame的概念
        • AudioTrack构造过程
      • AudioTrack 与 MediaPlayer 的对比
        • 区别
        • 联系
        • SoundPool
      • 源码
    • Android 音视频开发(四):使用 Camera API 采集视频数据
      • 预览 Camera 数据
      • 取到 NV21 的数据回调
    • Android 音视频开发(五):使用 MediaExtractor 和 MediaMuxer API 解析和封装 mp4 文件
      • MediaExtractor API介绍
      • MediaMuxer API介绍
      • 使用情境
        • 从MP4文件中提取视频并生成新的视频文件
    • Android 音视频开发(六): MediaCodec API 详解
      • MediaCodec 介绍
      • MediaCodec API 说明
      • MediaCodec 流控
        • 流控基本概念
        • Android 硬编码流控
        • Android 流控策略选择
    • Android 音视频开发(七): 音视频录制流程总结
      • 流程分析
        • 需求说明
        • 实现方式
        • 数据处理思路
      • 实现过程
        • 收集Camera数据,并转码为H264存储到文件
        • 音视频采集+混合,存储到文件
  • Android音视频开发中级进阶篇
    • OpenGL ES
      • Android OpenGL ES 开发(一): OpenGL ES 介绍
        • 简介OpenGL ES
        • 基本介绍
          • GLSurfaceView
          • GLSurfaceView.Renderer
      • Android OpenGL ES开发(二) : OpenGL ES 环境搭建
        • 环境搭建目的
        • 在Manifest中声明OpenGL ES使用
        • 创建一个Activity 用于展示OpenGL ES 图形
        • 创建GLSurfaceView对象
        • 创建一个Renderer类
        • 总结
      • Android OpenGL ES 开发(三):OpenGL ES定义形状
        • 定义三角形
        • 定义正方形
      • Android OpenGL ES开发(四) : OpenGL ES绘制形状
        • 初始化形状
        • 绘制形状
      • Android OpenGL ES开发(五) : OpenGL ES使用投影和相机视图
        • 定义投影
        • 定义相机视图
        • 应用投影和相机变换
      • Android openGL ES开发(六): OpenGL ES添加运动效果
        • 旋转一个图形
        • 允许连续渲染
      • Android openGL ES开发(七) : OpenGL ES 响应触摸事件
        • 设置触摸事件
        • 暴露旋转角度
        • 应用旋转
      • Android OpenGL ES开发(八) :OpenGL ES 着色器语言GLSL
        • GLSL 简介
        • GLSL 基础
          • 基本数据类型
            • 标量:
            • 向量:
            • 矩阵:
            • 采样器:
            • 结构体:
            • 数组:
            • 空类型:
          • 运算符
          • 类型转换
          • 限定符
          • 流程控制
          • 函数
          • 浮点精度
          • 程序结构
        • GLSL 内建变量
          • 顶点着色器的内建变量
          • 片元着色器的内建变量
        • 常用内置函数
          • 常见函数
          • 几何函数
          • 矩阵函数
          • 纹理采样函数
      • Android OpenGL ES开发(九): OpenGL ES纹理贴图
        • 概念
        • 原理
        • 显示纹理图片
          • 修改着色器
          • 设置顶点坐标和纹理坐标
          • 计算变换矩阵
          • 显示图片
      • Android OpenGL ES 开发(十):通过GLES20与着色器交互
        • 获取着色器程序内成员变量的id(句柄、指针)
        • 向着色器传递数据
          • 定义顶点属性数组
          • 启用或者禁用顶点属性数组
          • 选择活动纹理单元。
    • OpenSL ES
      • Android OpenSL ES 开发:Android OpenSL 介绍和开发流程说明
        • Android OpenSL ES 介绍
        • Android OpenSL ES 开发流程
          • OpenSL ES 开发最重要的接口类 SLObjectItf
          • SLObjectItf 创建的具体的接口对象实例
          • 创建引擎并实现
          • 利用引擎对象创建其他接口对象
        • OpenSL ES 使用示例
          • 播放assets文件
          • 播放pcm文件
            • 创建播放器和混音器
            • 设置pcm格式的频率位数等信息并创建播放器
            • 设置缓冲队列和回调函数
            • 设置播放状态并手动开始调用回调函数
      • Android OpenSL ES 开发:使用 OpenSL 播放 PCM 数据
        • 创建声音引擎
        • 创建声音播放器
        • 设置播放缓冲
        • 获得其他接口用来控制播放
        • 提供播放数据
        • 播放音乐
        • 调解音量
        • 释放资源
      • 参考源码
      • Android OpenSL ES 开发:Android OpenSL 录制 PCM 音频数据
        • 实现说明
        • 编码实现
          • 编写缓存buffer队列:RecordBuffer.h、RecordBuffer.cpp
          • 使用OpenSL ES录制PCM数据
        • 验证录制成果
        • 参考源码
      • Android OpenSL ES 开发:OpenSL ES利用SoundTouch实现PCM音频的变速和变调
        • 缘由
        • 实现
          • 移植SoundTouch(Android)
          • 用SoundTouch转码PCM源文件
          • SoundTouch使用流程
            • 添加命名空间,并创建SoundTouch指针变量
            • 设置SoundTouch参数
            • 向SoundTouch中传入获取到的PCM数据,使用:putSamples函数
            • 获取SoundTouch输出的PCM数据:使用receiveSamples函数
            • OpenSL ES播放SoundTouch处理后的PCM音频数据
        • 思维发散
          • FFmpeg解码得到的PCM数据(uint_8 *)利用SoundTouch转码
        • 总结
        • 参考源码
  • Android音视频开发高级探究篇
    • 音视频编解码技术
      • 音视频编解码技术(一):MPEG-4/H.264 AVC 编解码标准
        • H264 概述
          • H.264视频编解码的意义
          • H.264编解码的理论依据
        • H.264相关概念
          • H.264 的基本单位
          • 帧类型
          • GOP(画面组)
          • IDR 帧
        • H.264 压缩方式
          • H.264 压缩算法
          • H.264压缩方式说明
        • H.264 分层结构
          • VLC层(Video Coding Layer)
          • NAL层(Network Abstraction Layer)
          • NALU (NAL Unit)
            • Start Code
            • NAL Header
            • RBSP(Raw Byte Sequence Payload))
        • H.264 局限性
      • 音视频编解码技术(二):AAC 音频编码技术
        • AAC编码概述
        • AAC编码规格简述
        • AAC编码的特点
        • AAC音频文件格式
          • ACC 音频文件格式类型
          • ADIF 的 Header 结构
          • ADTS 的 Header 头结构
          • AAC文件处理流程
        • 开源AAC解码器
    • 流媒体协议
      • 流媒体协议(一):HLS 协议
        • HLS 概述
          • 原理介绍:
          • 整体架构
        • HLS 播放
          • 播放未加密HLS
          • 播放加密HLS
        • HLS 协议总结
          • 优点:
          • 缺点:
          • 改进
      • 流媒体协议(二):RTMP协议
        • 概念与摘要
        • RTMP块流
          • 消息格式
          • 握手
            • 握手序列
            • C0和S0格式
            • C1和S1格式
            • C2和S2格式
        • RMTP握手
          • 握手过程示意图
    • 多媒体文件格式
      • 多媒体文件格式(一):MP4 格式
        • MP4 格式标准介绍
        • MP4分析工具
          • Elecard StreamEye
          • mp4box
          • mp4info
        • MP4格式重要Box
          • ftyp(File Type Box)
          • moov(Movie Box)
          • trak(Track Box)
          • mdat(Meida Data Box)
          • free或skip(Free Space Box)
          • stbl(Sample Table Box)
        • MP4格式 与 FFmpeg实战
          • 在FFmpeg中的输出MP4的Demuxer信息
          • 通过FFmepg faststart参数的使用,来理解mdat和moov的顺序的意义
      • 多媒体文件格式(二):FLV 格式
        • FLV 格式标准介绍
          • 文件头 Header
          • 文件体 FLV Body
          • Tag
        • FLV 分析工具
          • FlvAnalyzer
          • FLV Format Analysis 工具
        • FLV格式 与 FFmpeg 实战
          • 使用FFmpeg生成带关键索引信息的FLV
          • 使用ffprobe查看FLV关键帧索引相关信息
      • 多媒体文件格式(三):M3U8 格式
        • M3U8 格式标准介绍
        • HLS 与 M3U8
        • FFmpeg转HLS文件(M3U8)实战
          • FFmpeg转MP4为HLS(M3U8)文件
        • FFmpeg 转 HLS (M3U8) 文件命令参数
          • start_number 参数
          • hls_time 参数
          • hls_list_size 参数
          • hls_base_url参数
      • 多媒体文件格式(四):TS 格式
        • TS 格式标准介绍
        • TS 格式详解
        • TS层
          • TS Header
          • TS Adaptation Field
          • TS Payload
        • PES层 & ES 层
          • PES层
          • ES 层
        • TS流生成及解析流程
          • TS 流生成流程
          • TS 流解析流程
      • 多媒体文件格式(五):PCM / WAV 格式
        • 名词解析
          • 采样率
          • 位深度
        • PCM
          • PCM音频数据存储方式
          • PCM 音频数据的参数
        • WAV
        • PCM & WAV 开发实践
          • PCM格式转为WAV格式(基于C语言)
          • PCM降低某个声道的音量(基于C语言)
          • 分离PCM音频数据左右声道的数据
          • 从PCM16LE单声道音频采样数据中截取一部分数据
          • 将PCM16LE双声道音频采样数据转换为PCM8音频采样数据
          • 将PCM16LE双声道音频采样数据的声音速度提高一倍
    • FFmpeg
      • FFmpeg命令行工具(一):查看媒体文件头信息工具ffprobe
        • 简述
        • 命令格式
        • 使用ffprobe查看mp3格式的文件
        • 使用ffprobe查看mp4格式的文件
        • ffprobe高级使用方式
      • FFmpeg命令行工具(二):播放媒体文件的工具ffplay
        • 简述
        • 命令格式
          • 主要选项
          • 一些高级选项
          • 一些快捷键
        • ffplay 播放音频
        • ffplay 播放视频
        • ffplay 高级使用方式
          • 循环播放
          • 播放 pm.mp4 ,播放完成后自动退出
          • 以 320 x 240 的大小播放 test.mp4
          • 将窗口标题设置为 "myplayer",循环播放 2 次
          • 播放 双通道 32K 的 PCM 音频数据
        • ffplay音画同步
      • FFmpeg命令行工具(三):媒体文件转换工具ffmpeg
        • 简述
        • 命令行参数
          • 通用参数
          • 视频参数
          • 音频参数
        • 实践学习
          • 列出ffmpeg支持的所有格式
          • 剪切一段媒体文件,可以是音频或者视频文件
          • 提取视频文件中的音频数据,并保存为文件
          • 将视频中的音频静音,只保留视频
          • 从mp4文件中抽取视频流导出为裸H264数据:
          • 将视频推送到流媒体服务器上:
          • 将流媒体服务器上的流dump到本地:
          • 给视频添加水印
          • 倒放音视频
          • 将几个MP4视频文件合并为1个视频.
      • FFmpeg命令行工具(四):FFmpeg 调整音视频播放速度
        • 调整视频速率
        • 调整音频速率
        • 参考文献
      • FFmpeg(一):FFmpeg 简介
        • FFmpeg 介绍
        • FFmpeg 组成
        • FFmpeg包含类库说明
          • 类库说明
          • 常用结构
            • 封装格式
            • 编解码
            • 网络协议
            • 数据存放
      • FFmpeg(二):Mac下安装FFmpeg
        • 安装ffmpeg
          • 命令行安装
          • 下载压缩包安装
        • 安装ffplay
          • 命令行安装
          • 下载压缩包安装
        • 附言
      • FFmpeg(三):将 FFmpeg 移植到 Android平台
      • FFmpeg(四):FFmpeg API 介绍与通用 API 分析
        • FFmpeg 编解码流程
        • FFmpeg 相关术语
        • FFmpeg 通用 API 分析
          • av_register_all 分析
          • av_find_codec 分析
          • avcodec_open2 分析
          • avcodec_close 分析
        • 总结
      • FFmpeg(五):FFmpeg 编解码 API 分析
        • FFmpeg 解码 API 分析
          • avformat_open_input 分析
          • avformat_find_stream_info 分析
          • av_read_frame 分析
          • avcodec_decode分析
          • avformat_close_input 分析
        • FFmpeg 编码 API 分析
          • avformat_alloc_output_context2 分析
          • avio_open2 分析
          • 编码其他API(步骤)分析
        • FFmpeg 解码 API 超时设置
          • 设置开流的超时时间
          • 设置interrupt_callback定义返回机制
      • FFmpeg(六):FFmpeg 核心模块 libavformat 与 libavcodec 分析
        • libavformat介绍
        • libavcodec介绍
      • FFmpeg 结构体(一): AVFormatContext 分析
        • 源码整理
        • AVForamtContext 重点字段
      • FFmpeg 结构体(二): AVStream 分析
        • 源码整理
        • AVStream 重点字段
      • FFmpeg 结构体(三): AVPacket 分析
        • 源码整理
        • AVPacket 重点字段
      • FFmpeg 结构体(四): AVFrame 分析
        • 源码整理
        • AVFrame 重点字段
          • data[]
          • pict_type
          • sample_aspect_ratio
          • qscale_table
      • FFmpeg 结构体(五): AVCodec 分析
        • 源码整理
        • AVCodec 重点字段
          • enum AVMediaType type
          • enum AVCodecID id
          • const enum AVPixelFormat *pix_fmts
          • const enum AVSampleFormat *sample_fmts
      • FFmpeg 结构体(六): AVCodecContext 分析
        • 源码整理
        • AVCodecContext 重点字段
          • codec_type
          • sample_fmt
          • profile
      • FFmpeg 结构体(七): AVIOContext 分析
        • 源码整理
        • AVIOContext 重点字段
      • FFmpeg 结构体(八):FFMPEG中重要结构体之间的关系
        • 解协议(http,rtsp,rtmp,mms)
        • 解封装(flv,avi,rmvb,mp4)
        • 解码(h264,mpeg2,aac,mp3)
        • 存数据
      • FFmpeg 开发之 AVFilter 使用流程总结
        • AVFilterGraph 、AVFilterContext、AVFilter
        • AVFilter 相关Api使用方法整理
          • AVFilterContext 初始化方法
          • AVFilterGraph 相关的Api
        • FFmpeg Filter Buffer 和 BufferSink 相关APi的使用方法整理
        • FFmpeg AVFilter 使用整体流程
          • 过滤器构建:
          • 数据加工
          • 资源释放
      • FFmpeg 过时 Api 汇总整理
        • AVStream::codec: 被声明为已否决
        • avcodec_encode_audio2:被声明为已否决
        • 'avpicture_get_size': 被声明为已否决
        • 'avpicture_fill': 被声明为已否决
        • 'avcodec_decode_video2': 被声明为已否决
        • ' avcodec_alloc_frame': 被声明为已否决
        • 'av_free_packet': 被声明为已否决
        • avcodec_decode_audio4:被声明为已否决
        • avcodec_encode_video2:被声明为已否决

Kotlin知识点汇总

  • 对象
  • 类
  • 继承
  • 变量
  • 常量
  • 静态常量
  • 定义方法
  • 重载方法
  • 基本数据类型
  • 比较类型
  • 转换符
  • 字符串比较
  • 数组
  • 循环
  • 角标循环
  • 高级循环
  • 判断器
  • 构造函数
  • 类创建
  • 私有化 set 方法
  • 私有化 get 方法
  • 枚举
  • 接口
  • 匿名内部类
  • 内部类
  • 内部类访问外部类同名变量
  • 抽象类
  • 静态变量和方法
  • 可变参数
  • 泛型
  • 构造代码块
  • 静态代码块
  • 方法代码块
  • 可见修饰符
  • 无需 findViewById
  • Lambda
  • 函数变量
  • 空安全
  • 方法支持添加默认参数
  • 类方法扩展
  • 运算符重载
  • 扩展函数
    • let 函数
    • with 函数
    • run 函数
    • apply 函数
    • also 函数
    • 总结
  • 协程

设计模式汇总

  • 设计模式分类
  • 面向对象六大原则
  • 工厂模式
  • 单例模式
  • 建造者模式
  • 原型模式
  • 适配器模式
  • 观察者模式
  • 代理模式
  • 责任链模式
  • 策略模式
  • 备忘录模式

Gradle知识点汇总

  • 依赖项配置

计算机网络基础

  • 网络体系的分层结构
  • HTTP 相关
    • 请求报文
      • 请求行
      • 请求头
    • 响应报文
    • 常见状态码
    • 缓存机制
    • Https
    • Http 2.0
  • TCP/IP
    • 三次握手
    • 四次挥手
    • TCP 与 UDP 的区别
  • Socket
    • 使用示例

C++知识点汇总

  • 头文件
  • 数据类型
  • typedef
  • 类型限定符
  • 定义常量
  • 存储类
  • 引用 vs 指针
  • struct vs class
  • 成员函数
  • 析构函数
  • 拷贝构造函数
  • friend 友元
  • inline 内联函数
  • 继承类型
  • 运算符重载
  • 动态内存
  • 命名空间
  • 预处理器
    • #include
    • #define
    • 条件编译
    • 预定义宏
  • 信号
  • 线程
  • 强制类型转换
    • const_cast
    • static_cast
    • dynamic_cast
    • reinterupt_cast
  • 智能指针
    • unique_ptr
    • shared_ptr
    • weak_ptr
  • 内存空间

常见面试算法题汇总

  • 排序
    • 比较排序
      • 冒泡排序
      • 归并排序
      • 快速排序
    • 线性排序
      • 计数排序
      • 桶排序
  • 二叉树
    • 顺序遍历
    • 层次遍历
    • 左右翻转
    • 最大值
    • 最大深度
    • 最小深度
    • 平衡二叉树
  • 链表
    • 删除节点
    • 翻转链表
    • 中间元素
    • 判断是否为循环链表
    • 合并两个已排序链表
    • 链表排序
    • 删除倒数第N个节点
    • 两个链表是否相交
  • 栈 / 队列
    • 带最小值操作的栈
    • 有效括号
    • 用栈实现队列
    • 逆波兰表达式求值
  • 二分
    • 二分搜索
    • X的平方根
  • 哈希表
    • 两数之和
    • 连续数组
    • 最长无重复字符的子串
    • 最多点在一条直线上
  • 堆 / 优先队列
    • 前K大的数
    • 前K大的数II
    • 第K大的数
  • 二叉搜索树
    • 验证二叉搜索树
    • 第K小的元素
  • 数组 / 双指针
    • 加一
    • 删除元素
    • 删除排序数组中的重复数字
    • 我的日程安排表 I
    • 合并排序数组
  • 贪心
    • 买卖股票的最佳时机
    • 买卖股票的最佳时机 II
    • 最大子数组
    • 主元素
  • 字符串处理
    • 生成括号
    • Excel表列标题
    • 翻转游戏
    • 翻转字符串中的单词
    • 转换字符串到整数
    • 最长公共前缀
    • 回文数
  • 动态规划
    • 单词拆分
    • 爬楼梯
    • 打劫房屋
    • 编辑距离
    • 乘积最大子序列
  • 矩阵
    • 螺旋矩阵
    • 判断数独是否合法
    • 旋转图像
  • 二进制 / 位运算
    • 落单的数
    • 格雷编码
  • 其他
    • 反转整数
    • LRU缓存策略

赞赏本库

如果这个库对您有很大帮助,您愿意支持这个项目的进一步开发以及这个项目的持续维护👇

可以扫描下面的二维码,让我可以喝一杯:coffee:or:beer: 非常感谢您对我内容产出的鼓励,谢谢!

Contanct Me

如果觉得看起来比较麻烦,需要PDF版本,或是需要更多学习资料,都可以加上QQ群领取

本群由我创立,目前已将群主权限交由合作方便于进行日常管理,介意的朋友们在GitHub上看最新版就好了

如果你对于群管理有更好的建议,欢迎群内私聊我(我是-不管事不答疑的随缘冒泡废人)

行了行了,名字很随意已经有很多人说过了…毕竟还是要恰饭的嘛…

祝愿每一位有追求的Android开发同胞都能进大厂拿高薪!

微信(停止使用)

VX号:core0610(需要资料备注一下GitHub,资料)

想加入微信群聊的话,备注:GitHub,加群

QQ群

暂时停止QQ群申请审核,等待恢复ing……

微信公众号(停止使用)

Android开发之家

版权声明

知识共享许可协议
本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。

Copyright © 2019-present BlackZhangJX

转载本作品内容须遵守上述协议,保证作品内容的完整并注明作者及出处。

任何个人或组织,未经作者本人沟通许可,不得将文中全部或部分内容洗稿和用于写书、卖课等商业活动。

About

Android开发核心知识点笔记(不断更新中🔥)

Topics

algorithmalgorithmsandroidandroid-notesandroidnoteandroidnotesinterviewjavamobile-appnotessource-codesource-code-analysissourcecodestudy-notesstudynotes

Resources

Readme
Activity

Stars

2.1k stars

Watchers

45 watching

Forks

555 forks
Report repository

Releases

Packages

Contributors

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.