摘要:
[TOC] 线程池 1. 并发队列:阻塞队列和非阻塞队列 区别如下: 入队: 非阻塞队列:当队列中满了的时候,放入数据,数据丢失 阻塞队列:当队列满了的时候,进行等待,什么时候队列中有出队的数据,那么第 11 个再放进入 出队: 非阻塞队列:如果现在队列中没有元素,取数据,得到的是 null 阻塞队 阅读全文
摘要:
[TOC] Optional 理解 1. 含义 是一个容器对象,该容器里可能包含非空值也可能不包含非空值。最主要的用途就是为了规避 NPE 异常(传入的对象为 null 造成)。 如果存在值,通过 方法返回 true,通过 方法获取 value 也提供了额外的方法,这些方法根据是否存在 value 阅读全文
摘要:
[TOC] 方法引用(method reference) 1. 含义 方法引用实际上是 Lambda 表达式的一种语法糖。 我们可以将方法引用看作是一个“函数指针”,function pointer 2. 分类 方法引用共分为 4 类: 1. 类名::静态方法名 2. 引用名(对象名)::实例方法名 阅读全文
摘要:
[TOC] 函数式接口 1. 函数式接口定义 一个接口有且只有一个抽象方法。 函数式接口的实例可以通过 lambda 表达式、方法引用或者构造方法引用来创建。 注意: 1. 如果一个接口只有一个抽象方法,那么该接口就是一个函数式接口 2. 如果我们在某个接口上声明了 注解,那么编译器就会按照函数式接 阅读全文
摘要:
[TOC] Lambda 表达式 1. 为何需要 Lambda 表达式 在 Java 中, 我们无法发将函数作为参数传递给一个方法,也无法声明返回一个函数的方法 在 JavaScript 中,函数参数是一个函数,返回值是另一个函数的情况是非常常见的;JavaScript 是一门非常经典的函数式语言 阅读全文
摘要:
[TOC] LinkedList 源码分析 1. 链表介绍 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储 阅读全文
摘要:
[TOC] ArrayList 源码分析 1. 数组介绍 数组是数据结构中很基本的结构,很多编程语言都内置数组。 在 Java 中当创建数组时会在内存中划分一块连续的内存,然后当有数据进入的时候会将数据按顺序的存储在这块连续的内存中。当需要读取数组中的数据时,需要提供数组中的索引,然后数组根据索引将 阅读全文
摘要:
[TOC] Junit 学习笔记 1. 编写测试用例时需要注意 1. 测试方法上必须使用 进行修饰 2. 测试方法必须使用 进行修饰,不能带任何参数 3. 新建一个车源代码目录来存放我们的测试代码 4. 测试类的包应该和被测试类保持一致 5. 测试单元中的每个方法必须可以独立测试,测试方向间不能有任 阅读全文
摘要:
[TOC] Idea 使用 Junit4 进行单元测试 1. Junit4 依赖安装 Idea 默认使用 作为测试框架,我们将其更改为 Junit4。 2. 编写测试代码 编写一个简单的加减乘除工具类,代码如下: Calculate.java 新建 test 目录,Idea 自动生成的测试类将自动放 阅读全文
摘要:
Java 定时器 1. 概述 Timer 可以按计划执行重复的任务或者定时执行指定任务,这是因为 Timer 内部利用了一个后台线程 TimerThread 有计划地执行指定任务。 Timer :是一个实用工具类,该类用来调度一个线程(schedule a thread) ,使它可以在将来某一时刻执 阅读全文