我的Android知识体系

热门博客

Android知识体系汇总
Gityuan
数据结构与算法
互联网公司Android面试题汇总
隔壁老李头

23种设计模式

Android设计模式
Java设计模式

image.png

创建型模式:
工厂模式(Factory Pattern)
抽象工厂模式(Abstract Factory Pattern)
单例模式(Singleton Pattern)
建造者模式(Builder Pattern)
原型模式(Prototype Pattern)

结构型模式:
适配器模式(Adapter Pattern)
桥接模式(Bridge Pattern)
过滤器模式(Filter、Criteria Pattern)
组合模式(Composite Pattern)
装饰器模式(Decorator Pattern)
外观模式(Facade Pattern)
享元模式(Flyweight Pattern)
代理模式(Proxy Pattern)

行为型模式:
责任链模式(Chain of Responsibility Pattern)
命令模式(Command Pattern)
解释器模式(Interpreter Pattern)
迭代器模式(Iterator Pattern)
中介者模式(Mediator Pattern)
备忘录模式(Memento Pattern)
观察者模式(Observer Pattern)
状态模式(State Pattern)
空对象模式(Null Object Pattern)
策略模式(Strategy Pattern)
模板模式(Template Pattern)
访问者模式(Visitor Pattern)

插件化

插件化学习之路
MultiDex工作原理分析和优化方案
Android关于Dex拆分(MultiDex)技术详解
MultiDex中出现的main dex capacity exceeded解决之道
Too many classes in --main-dex-list

cocos2d-x

Cocos官网
cocos2d-x 减少编译时间/免除重复编译
Cocos2dx.3x入门三部曲

第三方动画框架

YY-SVGA动画框架
Lottie- 让Android动画实现更简单

控件位置

得到view坐标的各种方法

Flutter

想入门 Google 的 Flutter?我整理了一些资料看你需要吗?
Flutter教程

热修复

热修复学习之路

组件化

主要是解决个组件之间的通信问题
ARouter 源码浅析
业界首个支持渐进式组件化改造的Android组件化开源框架

APT

元注解简介
编写最基本的APT Demo
一起玩转Android项目中的字节码

Gradle 插件

编写最基本的Gradle插件

Android app 启动流程

Android 应用进程启动流程解析

Activity启动流程

image.png

Bundle 机制

红茶一杯话Binder
Android Binder之应用层总结与分析
理解Android Binder机制(1/3):驱动篇

Java集合类工作原理及实现

Java集合类工作原理及实现
图解HashMap(一)

HashMap是什么

结论:HashMap是由数组和链表组合构成的数据结构,Java8中链表长度超过8时会把长度超过8的链表转化成红黑树;存取时都会根据键值计算出”类别”(hashCode),再根据”类别”定位到数组中的位置并执行操作。

HashCode是什么

结论:hashCode是一个对象的标识,Java中对象的hashCode是一个int类型值。通过hashCode来指定数组的索引可以快速定位到要找的对象在数组中的位置,之后再遍历链表找到对应值,理想情况下时间复杂度为O(1),并且不同对象可以拥有相同的hashCode。

HashMap的时间复杂度

结论:HashMap的时间复杂度取决于hash算法,优秀的hash算法可以让时间复杂度趋于常数O(1),糟糕的hash算法可以让时间复杂度趋于O(N)。

负载因子是什么

结论:我们知道HashMap中默认的数组长度是16,默认负载因子为0.75。在数组大小不变的情况下,存放键值对越多,查找的时间效率会降低,扩容可以解决该问题,而负载因子决定了什么时候扩容,负载因子是已存键值对的数量和总的数组长度的比值。默认情况下负载因子为0.75,我们可在初始化HashMap的时候自己修改。

图解HashMap(二)
图解集合系列

数据结构与算法

数据结构与算法解析

线程安全List

private static List<String> TEST_LIST = Collections.synchronizedList(new ArrayList<String>());  

Collections.synchronizedList进行包装

图片加载原理

Android 三大图片缓存原理、特性对比

多线程断点续传

RandomAcessFile类实现文件的分割和合并
http1.1 头文件中传入
Content-Range: bytes 20000-40000/47000

线程

线程创建的三种方式

1.新建类继承 Thread 类实现线程
2.通过实现接口 Runnable 实现创建线程
3.使用 ExecutionException、Callable、ExecutorService、Future 等类,Executors 框架实现线程,此方法:相对前两种可抛异常,且有返回值。

run和start的区别
run 只是普通的方法调用,start会创建新线程
start()实际上是通过本地方法start0()启动线程的。而start0()会新运行一个线程,新线程会调用run()方法,start0是native方法。创建线程会消耗系统资源。

JVM

JVM内存结构
《深入理解java虚拟机》学习笔记

泛型

Java 泛型解惑之<? extends T>和<? super T>

类的生命周期

Java虚拟机类生命周期
加载 验证 准备 解析 初始化 使用 卸载

RxJava

Rxjava 创建和线程切换
关于 RxJava 背压

EventBus实现原理

EventBus 3.0 源码分析

大文件加密

Android使用Socket对大文件进行加密传输

文件批量上传和下载

OkGo,一个专注于让网络请求更简单的框架,与RxJava完美结合,比Retrofit更简单易用

App 启动时间统计

Android 开发之 App 启动时间统计

Android 软件稳定性解决方案

Android 稳定性研究

ThreadLocal原理

ThreadLocal原理及其实际应用

Classloader

深入分析Java ClassLoader原理

代码优化

如何有效的减少重复的代码

SharedPreferences

对 SharedPreferences 再多一点了解
通过 ContentProvider 多进程共享 SharedPreferences 数据
SharedPreferences不是线程同步的,如果要进行跨进程调用请用ContentProvider代替

SurfView

SurfaceView继承了View,但是我们并不需要去实现它的draw方法来绘制自己,为什么呢?因为它和View有一个很大的区别,View在UI线程去更新自己;而SurfaceView则在一个子线程中去更新自己;这也显示出了它的优势,当制作游戏等需要不断刷新View时,因为是在子线程,避免了对UI线程的阻塞。
Android视图SurfaceView的实现原理分析

BroadcastReceiver,LocalBroadcastReceiver 区别

应用场景

1.BroadcastReceiver用于应用之间的传递消息;
2.而LocalBroadcastManager用于应用内部传递消息,比broadcastReceiver更加高效。

安全

1.BroadcastReceiver使用的Content API,所以本质上它是跨应用的,所以在使用它时必须要考虑到不要被别的应用滥用;

2.LocalBroadcastManager不需要考虑安全问题,因为它只在应用内部有效。

Handler 机制

Handler的原理

Android 事件传递机制

图解 Android 事件分发机制

GC机制

垃圾回收算法

Https 优化

DNS,携带数据,直接访问IP
深入理解https通信加密过程

TCP/UDP的区别

TCP:面向连接、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时间,系统资源)。
UDP:面向非连接、传输不可靠、用于传输少量数据(数据包模式)、速度快

http协议

Http建立与断开
四种常见的 POST 提交数据方式

Socket

Java并发编程

Java并发编程实践

synchronized与Lock的区别与使用

image.png

Java线程池

线程池基础
线程池高级

线程的状态

image.png
  • 新建状态:新建线程对象,并没有调用start()方法之前

  • 就绪状态:调用start()方法之后线程就进入就绪状态,但是并不是说只要调用start()方法线程就马上变为当前线程,在变为当前线程之前都是为就绪状态。值得一提的是,线程在睡眠和挂起中恢复的时候也会进入就绪状态哦。

  • 运行状态:线程被设置为当前线程,开始执行run()方法。就是线程进入运行状态

  • 阻塞状态:线程被暂停,比如说调用sleep()方法后线程就进入阻塞状态

  • 死亡状态:线程执行结束

App如何沙箱化

浅析Android沙箱模型

单元测试

Android单元测试

快速打包

下一代Android打包工具,100个渠道包只需要10秒钟

GIT操作

Git Pro
Git 教程

修改最后一次提交 : git commit --amend
取消已经暂存的文件 : git reset HEAD <file>...
取消对文件的修改: git checkout -- <file>...
代码合并:Merge、Rebase 的选择
异同:
如果你想要一个干净的、线性的提交历史,没有不必要的合并提交,你应该使用 git rebase 而不是 git merge 来并入其他分支上的更改。
另一方面,如果你想要保存项目完整的历史,并且避免重写公共分支上的 commit, 你可以使用 git merge。两种选项都很好用,但至少你现在多了 git rebase 这个选择

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,367评论 6 512
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,959评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,750评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,226评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,252评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,975评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,592评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,497评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,027评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,147评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,274评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,953评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,623评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,143评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,260评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,607评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,271评论 2 358

推荐阅读更多精彩内容