AbstractQueue

AbstractQueue

一、定义

1
2
3
4
5
public abstract class AbstractQueue<E>
extends AbstractCollection<E>
implements Queue<E> {

}

AbstractQueue 只是一个抽取类,其目的主要是为接口 Queue 的一些方法提供了基础的实现模板。

 AbstractSet

AbstractSet

一、定义

1
2
public abstract class AbstractSet<E> extends AbstractCollection<E> implements Set<E> {
}

AbstractSet 提供了接口 Set 的模板实现,也就是提供了 Set 中某些方法的实现,减少实现 Set 接口时的代码。

二、实现

 AbstractMap

AbstractMap

一、定义

1
2
public abstract class AbstractMap<K,V> implements Map<K,V> {
}

AbstractMap 就是接口 Map 的模板实现类,提供一些已经实现好的方法,后续子类继承时就不用重复写了。

二、实现

2.1 entrySet

实际上,AbstractMap 里面的方法实现都是依赖 entrySet() 方法来实现的,具体看看代码吧:

 AbstractList

AbstractList

一、定义

AbstractList 是一个抽象类,是一个 List

1
2
3
public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> {
...
}

二、属性

AbstractList 中,有一个特殊的属性 modCount,用于统计列表被修改的次数(例如删除、添加等)。

1
protected transient int modCount = 0;

modCount 属性的作用是为了在并发修改列表时,能够快速失败(fail-fast)并抛出并发异常。例如多个线程同时修改列表时,就有可能对正在访问列表元素的线程造成影响,modCount 属性可用于判断当前列表是否是异常状态。

 注解@Enumerated

@Enumerated

@Enumerated 是JDK中 javax.persistence 包下的注解,用在持久化实体类属性或字段上,表示该属性或字段应该按照枚举类型 Enum 来持久化。例如:

1
2
3
4
public enum Gender {
MALE,
FEMALE;
}
1
2
3
4
5
6
7
8
@Entity
public class Person {
@Column
@Enumerated
private Gender gender;

// 省略其他属性方法,后面也是
}

属性或字段按照枚举类型来持久化时,可以分为两种情况:原始类型和字符串类型。

 JSON数据格式

JSON

JSON 是一种数据格式,不是一种编程语言。一般用于Web服务的前后端的数据交流格式。

一、类型

JSON 的语法可以有3种类型的值:

  • 简单值:包括字符串、数值、布尔值和 null(但是不支持 Javascript 中的 undefined)
  • 对象:表示一组无序的键值对
  • 数组:表示一组有序的值的列表

二、与 Jsvacript 的区别

 事件的监听以及处理

事件

事件,是文档或浏览器窗口中发生的一些特定的交互瞬间。

下面分别介绍事件中的几个重要特性:

  • 事件流
  • 事件处理程序
  • 事件对象

一、事件流

事件流是用于描述页面接收事件的顺序。

 浏览器中的BOM对象

BOM

BOM 是指浏览器对象模型。

主要用于开发人员控制浏览器显示的界面以外的部分,例如浏览器窗口的位置、浏览器的地址信息、浏览历史界面的前进后退等。

一、window

window 对象是 BOM 的核心对象,表示浏览器的一个实例。

1.1 全局声明

window 既是访问浏览器窗口的接口,也是 ECMAScript 的全局对象(Global)。

 HTML中的DOM对象

DOM

DOM(文档对象模型)是针对 HTML 和 XML 文档的一个API。

  • 主流浏览器都完成了 DOM1 级的实现
  • IE 的 DOM 对象都是以 COM 对象的形式存在,和原始的 DOM 对象行为并不一致

一、节点层次

DOM 可以将 HTML 或 XML 文档描绘成一个由多层节点构成的结构,简单点说,就是一个树结构。