
总结知识点
文章平均质量分 80
青春路上的小蜜蜂
世界上最美妙的声音--键盘的敲击声!
展开
-
Java中的线程池简述
当提交一个任务时,线程池会创建一个新线程执行任务,直到当前线程数等于corePoolSize;如果当前线程数为corePoolSize,继续提交的任务会被保存到阻塞队列中,等待被执行;如果阻塞队列满了,那就创建新的线程执行当前任务,直到线程池中的线程数达到maxPoolSize,这时再有任务来,只能执行reject()处理该任务;原创 2023-06-25 18:04:50 · 965 阅读 · 0 评论 -
Handler机制剖析
前言说起Handler我们再熟悉不过了,Handler用来进行线程间进行通讯的,但是Handler线程间通讯的机制以及原理是什么样的?下面我们就一起来剖析一下。问题(1)一个线程可以有几个Handler,可以有几个Looper?答:一个线程只有一个Looper,可以有多个Handler。(2)子线程中能否创建子线程的Handler?答:可以。但是有个前提,在子线程创建Handler,必...原创 2020-04-28 15:25:08 · 251 阅读 · 0 评论 -
Dagger2的基本使用
前言Dagger2是一个依赖注入框架,我们经常用到的依赖注入框架还有ButterKnife。说到这里,首先了解一个概念:控制反转。控制反转(又叫IOC:Inversion Of Control):是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection),还有一种方式叫“依赖查找”(Dependency Lo...原创 2020-03-11 10:31:38 · 5743 阅读 · 2 评论 -
创建对象时,new和Class.newInstance() 以及Constructor.newInstance()区别,以及getDeclaredMethods和getMethods的区别
一、newInstance和new用newInstance与用new是区别的,区别在于创建对象的方式不一样,前者是使用类加载机制。在使用newInstance()方法的时候,必须保证这个类已经加载并且已经连接了,而这可以通过Class的静态方法forName()来完成的。newInstance()在工厂模式里面用到。Class.newInstance()的使用:Class.forNa...原创 2020-02-29 18:26:20 · 3919 阅读 · 1 评论 -
仿ButterKnife的BindView,注解Activity的成员变量
前言最近看到注解一块,看到ButterKnife的源码解析,于是就想仿ButterKnife的BindView,弄一个自定义的注解,来对Activity中的控件进行注解,避免通过书写findViewById获取对象(注意:其实BindView的底层还是通过findViewById获取的控件对象)。自定义注解@Retention(RetentionPolicy.RUNTIME)@Ta...原创 2020-02-28 16:39:30 · 238 阅读 · 0 评论 -
注解的分类
前言最近温习到注解这一块,于是想写篇文章,把看到的注解知识梳理一下。注解的分类注解主要分为三大类:普通注解、元注解、自定义注解,下面来详细梳理一下这三大类注解。一、普通注解普通注解,常见的主要有三个 :@Override、@Deprecated、@SuppressWarnings(1)@Override@Override注解我们可能见到的比较多,主要用于子类对父类方法的...原创 2020-02-28 13:36:25 · 3345 阅读 · 1 评论 -
EventBus简单剖析
前言最近在重温EventBus的源码,于是想写篇博文,记录一下。既然说到了EventBus,那就先从EventBus的使用开始吧。一、EventBus的使用:(1)在项目的build.gradle下,引入EventBus//EventBusimplementation "org.greenrobot:eventbus:3.1.1"(2)在Activity或Fragme...原创 2020-02-26 17:15:30 · 171 阅读 · 0 评论 -
知识点(6)——LinkedList和ArrayList的效率差异性分析
前言最近在看集合这一块,都知道LinkedList是双链表结构,可以用来实现栈、队列、双端队列(因为LinkedList实现了Deque,deque 即双端队列,是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行)。LinkedList随机访问效率低,但是插入、随机删除速度快。而ArrayList是动态数组结构,实现了RandomAcce...原创 2020-02-19 13:55:03 · 526 阅读 · 1 评论 -
知识点(5)——使用LinkedList实现栈和队列
前言LinkedList是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。LinkedList 实现 List 接口,能对它进行队列操作。LinkedList 实现 Deque 接口,即能将LinkedList当作双端队列使用。LinkedList 实现了Cloneable接口,即覆盖了函数clone(),能克隆。L...原创 2020-02-18 10:25:23 · 3210 阅读 · 1 评论 -
知识点(4)——HashMap中插入数据用的头插法还是尾插法
前言大家都知道,HashMap用到的数据结构,在JDK8之前是数组+单链表。在JDK8用的是数组+单链表+红黑树。这里说一句题外话,为什么JDK8时候引入了红黑树?(1)因为当数组中每个元素,都是一个Entry,每一个Entry是一个单链表。(2)当链表长度过长的时候,查询链表中的一个元素就比较耗时,这时就引入了红黑树。(3)首先红黑树是一棵二叉树,而且属于二叉树中比较特殊的二...原创 2019-11-19 16:45:25 · 16712 阅读 · 0 评论 -
知识点(3)——HashMap和Hashtable的比较
1.继承和实现方式不同HashMap 继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口。而Hashtable继承于Dictionary,实现了Map、Cloneable、java.io.Serializable接口。HashMap的定义:public class HashMap<K,V> extend...原创 2019-11-19 13:39:03 · 161 阅读 · 0 评论 -
Android 的一些基本概念和OOM异常的处理方法
一些基本的概念ActivityManagerServices,简称AMS,服务端对象,负责系统中所有的Activity的生命周期ActivityThread,App的真正入口。当开启App之后,会调用main()开始运行,开启消息循环队列,这就是传说中的UI线程或者叫主线程。与ActivityManagerServices配合,一起完成Activity的管理工作。ApplicationThre原创 2016-07-06 10:35:50 · 2099 阅读 · 0 评论