知识星球
2023-05-11 09:16:37 1 举报
AI智能生成
知识流程图
作者其他创作
大纲/内容
学习导图
物理层
数据链路层
网络接口层
网络层
三次握手
四次挥手
TCP
UDP
TCP与UDP区别
传输层
DNS
会话层
表示层
请求方式
get和post区别
返回码
http1.0、1.1、2.0、3.0
http
https
http与https区别
应用层
网络
数组
队列
栈
链表
开放寻址法
链表法
再Hash法
建立公共溢出区
哈希冲突解决方法
哈希表(散列表)
平衡二叉树
完全二叉树
满二叉树
红黑树
二叉树
树
堆
图
数据结构
选择排序
冒泡排序
插入排序
快速排序
排序
二分查找
求两个数组的交集
反转链表
回文链表
判断链表是否有环
输出倒数第N个节点
前序遍历
中序遍历
后序遍历
层序遍历
二叉树的遍历
求二叉树的最大最小深度
判断是否为平衡二叉树
算法
单一职责原则(SRP)
开放封闭原则(ASD)
里氏替换原则(LSP)
依赖倒置原则(DIP)
迪米特原则(LOD)
接口隔离原则(ISP)
设计模式6大原则
6大原则
单例模式
简单工厂模式
工厂方法模式
抽象工厂模式
工厂模式
Builder模式
创建型设计模式
代理模式
享元模式
外观模式
装饰模式
适配器模式
结构型设计模式
观察者模式
策略模式
模板方法模式
责任链模式
命令模式
状态模式
子主题
行为型设计模式
设计模式专栏
设计模式
横竖屏切换时的生命周期
ActivityA启动ActivityB时生命周期变化
生命周期
Standard
SingleTop
TaskAffinity应用场景
SingleTask
SingleInstance
启动模式
onSaveInstanceState和onRestoreInstanceState
Activity
启动方式
IntentService
Service
动态注册
静态Manifest注册
注册方式
有序广播、无序广播、本地广播
BroadcastReceiver
ContentProvider
四大组件
约束布局(ConstraintLayout)
线性布局(LinearLayout)
帧布局(FrameLayout)
相对布局(RelativeLayout)
常用布局
事件冲突处理
View事件分发
自定义步骤
自定义View需要注意的点
MeasureSpec
自定义View
view/viewGroup的绘制流程
Activity、Window、PhoneWindow、DecorView以及ViewRootImpl间的关系
Window
View和SurfaceView的区别
SurfaceView为什么可以直接子线程绘制
SurfaceView
View.post和Handler.post的区别
requestLayout,invalidate,postInvalidate的区别
其他
RecyclerView和ListView的区别
Recycleview的四级缓存,缓存过程?
RecyclerView的性能优化
RecyclerView
UI
Fragment与Activity通信
Fragment与Fragment通信
懒加载
Fragment
断点续传下载原理
内置拦截器
使用的设计模式
Okhtttp
Retrofit
Bitmap 内存占用的计算
如何加载超大图
Bitmap
LruCache原理
DiskLruCache原理
如何设计一个图片加载库
Glide使用和原理
图片
Lifecycle
LiveData
ViewModel
DataBinding
Compose
Jetpack
帧动画
补间动画
补间动画和属性动画的区别
属性动画原理
属性动画
动画
进程优先级
为什么Intent不能传递大数据
Binder
Intent
广播
Socket
AIDL
文件
进程间通信方式
多进程
GreenDao
Sqlite
MVC、MVP、MVVM、MVI的演变
Arouter
组件化
插件化
模块化
架构
Gradle
为什么不能在子线程更新UI ?
Looper.loop方法是死循环为什么不会造成卡死(ANR)
Handler内存泄露的原因以及处理
子线程使用Handler
Handler的同步屏障机制
IdealHandler
HandlerThread
Handler
Android版本差异
Android系统启动流程
Activity的启动流程
Android系统架构
ART和Dalvik的区别
Apk打包流程
FrameWork
内存溢出与内存泄漏
内存泄漏常见原因
为什么LeakCanary不能用于线上
Leakcanary
线上监控
内存泄漏监控
产生原因
检测方式
解决方案
ANR
Crash监控
APK瘦身
缩包优化
启动优化
卡顿优化
性能优化
性能
Gson使用和原理
SparseArray与ArrayMap
显式Intent与隐式Intent区别
Serilaizable和Parcelable序列化的区别
APP换肤方案
EventBus源码
Android
boolean(1字节)
byte(1字节)
char(2字节)
short(2字节)
int(4字节)
float(4字节)
double(8字节)
long(8字节)
基本类型
String、StringBuilder、StringBuffer的区别
String为啥设计成不可变
String
try-catch-finnally中return返回值
异常处理
封装
继承
多态
三大特性
抽象类与接口区别
重写和重载的区别
equals和hashCode重写规则
面向对象
遍历删除的方式
ArrayList
LinkedList
Stack
Vector
CopyOnWriteArrayList
List接口
HashSet
TreeSet
LinkedHashSet
CopyOnWriteArraySet
Set接口
ArrayDequeue
Queue接口
Collection接口
HashMap
TreeMap
HashTable
LinkedHashMap
ConcurrentHashMap
Map接口
集合
继承Thread类
实现Runnable接口
实现Callable接口
创建方式
生命周期(6种状态)
乐观锁与悲观锁
死锁
公平锁与非公平锁
偏向锁
轻量级锁
重量级锁
Syncronized锁升级
wait和sleep的区别
锁
Syncronized
volatile
Syncronized与Lock锁的区别
CAS理解
Lock
AtomicBoolean
AtomicInteager
AtomicLong
原子变量操作
LinkedBlockingQueue
阻塞队列
线程同步
运行结束自动终止
退出标志位
interrupt()
线程终止
newCachedThreadPool
newFixedThreadPool
newScheduledThreadPool
newSingleThreadExecutor
线程池(ThreadPoolExecutor)
线程与进程的区别
并发与并行的区别
线程
程序计数器
Java虚拟机栈
本地方法栈
Eden区(8)
Survivor区(1)
年轻代
老年代
方法区
内存模型
启动类加载器(Bootstrap ClassLoader)
扩展类加载器(Extensions ClassLoader)
应用程序类加载器(Application ClassLoader)
用户自定义类加载器
类加载器
类加载过程
双亲委派模型机制
类加载
引用计数算法
可达性分析(根搜索)算法
垃圾标记算法
标记-清除算法
复制算法
标记-压缩算法
分代收集算法
垃圾回收算法
JVM
泛型擦除
泛型上下界
泛型
反射
注解
强引用
软引用
弱引用
虚引用
四种引用
深拷贝与浅拷贝
引用队列(ReferenceQueue)
final、finally、finalize区别
Java
let、with、run、apply、also
高阶函数
协程
Kotlin
Flutter
0 条评论
回复 删除
下一页