随笔 - 1162
文章 - 0
评论 - 16
阅读 -
59万
04 2021 档案
Java 集合:(十七) Queue 常用接口:BlockingQueue 子接口
摘要:一、BlockingQueue 接口概述 1、 2、 3、 二、BlockingQueue 结构 1、BlockingQueue 接口声明 1 public interface BlockingQueue<E> extends Queue<E> {} 2、BlockingQueue 的继承结构及其常
阅读全文
Java 集合:(十六) Queue 常用接口:Deque 子接口
摘要:一、Deque 子接口概述 1、Deque 接口继承自 Queue 接口,表示双端队列(Double-ended queue),同时具备 【队列】和【栈】的性质。 2、双端队列即意味着此队列可以在头尾都具有入队和出队的功能。 3、Deque 接口继承自 Queue 接口,可以将 Deque 理解为【
阅读全文
Java 集合:(十五) Queue 子接口
摘要:一、Queue接口概述 1、Queue 是一个接口,Queue 接口定义的是一个队列,它包含队列的基本操作:入队(enqueue)和出队(dequeue)。 2、队列是一种先进先出(后进后出)的数据结构,类似生活中的排队一样。 3、 二、Queue 结构 1、Queue 接口的声明 1 public
阅读全文
Java 集合:(番外篇一) ArrayList线程不安全性
摘要:一、ArrayList 线程不安全性 ArrayList 线程不安全案例: 1 public class TestArrayList { 2 private static List<Integer> list = new ArrayList<>(); 3 4 public static void m
阅读全文
第十三章:StringTable
摘要:一、String 的基本特性 1、基本介绍 (1)String:字符串,使用一对" "引起来表示。 声明方式: String s1 = "Java"; //字面量的定义方式 String s2 = new String("JVM"); //构造器方式 (2)String声明为final的,不可被继承
阅读全文
Java 集合:(十四) Set实现类:TreeSet
摘要:一、TreeSet 概述 1、TreeSet 是 SortedSet 接口的实现类, TreeSet 可以确保集合元素处于排序状态。 2、TreeSet顾名思义他内部维护的是一个TreeMap,底层是红黑二叉树,他使得集合内都是有序的序列。 3、Tree 可以按照添加对象的指定属性,进行排序,所以向
阅读全文
Java 集合:(十三) Set实现类:LinkedHashSet
摘要:一、LinkedHashSet 概述 (1)LinkedHashSet 是 HashSet 的子类 (2)LinkedHashSet 根据元素的 hashCode 值来决定元素的存储位置,但它同时使用双向链表维护元素的次序,这使得元素看起来是以插入顺序保存的。 (3)LinkedHashSet作为H
阅读全文
Java 集合:(十二) Set实现类:HashSet
摘要:一、HashSet 概述 1、HashSet 是 Set 接口的典型实现,大多数时候使用 Set 集合时都使用这个实现类。 2、HashSet 按 Hash 算法来存储集合中的元素,因此具有很好的存取、查找、删除性能。 3、HashSet 具有以下特点: ① 不能保证元素的排列顺序; ② HashS
阅读全文
Java 集合:(十一) Set子接口
摘要:一、Set 接口概述 1、Set 接口是 Collection 的子接口,set 接口没有提供额外的方法; 2、Set接口:存储无序的、不可重复的数据,Set 接口中会以某种规则保证存入的元素不出现重复。 3、Set 集合不允许包含相同的元素,如果试把两个相同的元素加入同一个 Set 集合中,则添加
阅读全文
Java 集合:(十) Arraylist 与 LinkedList 异同
摘要:Arraylist 与 LinkedList 异同 一、是否保证线程安全 ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全,相对线程安全的Vector,执行效率高。 二、底层数据结构 (1)Arraylist 底层使⽤的是 Object 数组,基于动态数组的数据结构。
阅读全文
Java 集合:(九) ArrayList 与 Vector 异同
摘要:ArrayList 与 Vector 异同 一、相同点 1、底层结构相同 (1)ArrayList 是 List 的主要实现类,底层使⽤ Object[ ]存储,适⽤于频繁的查找⼯作; (2)Vector 是 List 的古⽼实现类,底层使⽤ Object[ ]存储。 2、常用操作相同 底层基于动态
阅读全文
Java 集合:(八) Vector 子类 Stack
摘要:一、Stack 概述 1、Stack 是栈结构,它继承与 Vector。它的特性是:先进后出(FILO,First In Last Out)或 后进先出(LIFO,Last In First Out); 2、Stack是Vector的子类,比Vector多了几个方法,它的后进先出的特征,就是通过调用
阅读全文
Java 集合:(七) List实现类:Vector
摘要:一、Vector 概述 1、Vector 是 List 接口的另一个实现类: Vector 2、Vector 是一个古老的集合,JDK1.0就有了。大多数操作与ArrayList相同,区别之处在于Vector是线程安全的。 3、Vector 的内部实现与 ArrayList 类似,也可以理解为一个【
阅读全文
Java 集合:(六) List实现类:LinkedList
摘要:一、LinkedList 概述 1、对于频繁的插入或删除元素的操作,建议使用LinkedList类,效率较高。 2、LinkedList是一个实现了List接口和Deque接口的双端链表。 3、LinkedList底层的链表结构使它支持高效的插入和删除操作,另外它实现了Deque接口,使得Linke
阅读全文
Java 集合:(五) List实现类:ArrayList
摘要:一、ArrayList 概述 1、ArrayList 是 List 接口的典型实现类、主要实现类; 2、ArrayList 是 List 接口的一个实现类,也是 Java 中最常用的容器实现类之一,可以把它理解为「可变数组」。 3、Java 中的数组初始化时需要指定长度,而且指定后不能改变。Arra
阅读全文
第十二章:执行引擎
摘要:一、执行引擎概述 1、执行引擎概述 执行引擎是Java虚拟机核心的组成部分之一。 “虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令
阅读全文
Java 集合:(四) List子接口
摘要:一、List 接口概述 1、鉴于Java中数组用来存储数据的局限性,我们通常使用List替代数组; 2、List集合类中元素有序、且可重复,集合中的每个元素都有其对应的顺序索引; 3、List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。 4、JDK API中
阅读全文
Java 集合:(三) Iterator迭代器接口
摘要:一、Iterable 接口 1、Iterable 是 java.lang 包下面的一个接口,实现此接口可使对象成为“ for-each循环”语句的目标,同时里面还有获取迭代器的方法。 方法说明: Iterator<T> iterator():获取迭代器对象 default void forEach(
阅读全文
第十一章:直接内存(Direct Memory)
摘要:一、直接内存概述 1、不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。 2、直接内存是在Java堆外的、直接向系统申请的内存区间; 3、来源于NIO,通过存在堆中的 DirectByteBuffer 操作 Native 内存; 4、通常,访问直接内存的速度会优于 Jav
阅读全文
Java 集合:(二) Collection接口
摘要:一、Collection 接口概述 1、Collection 接口单列集合类的根接口,用于存储一系列符合某种规则的元素,它是 List、Set 和 Queue 接口的父接口,该接口里定义的方法既可用于操作 Set 集合,也可用于操作 List 和 Queue 集合。 2、JDK不提供此接口的任何直接
阅读全文
Java 集合:(一)集合框架概述
摘要:一、集合框架概述 1、为什么要使用集合? 一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储。 另一方面,使用Array存储对象方面具有一些弊端,而Java 集合就像一种容器,可以动态地把多个对象的引用放入容器中。 不管是哪一种数据结构,其实本质上都是容
阅读全文
第十章:对象的实例化内存布局与访问定位
摘要:一、对象的实例化 1、常见面试题 美团: ① 对象在 JVM是怎么存储的? ② 对象头信息里面有哪些东西? 蚂蚁金服: ① Java 对象头里有什么? 2、对象的实例化 3、对象实例化的几种方式 4、对象创建的步骤 前面所述是从字节码角度看待对象的创建过程,现在从执行步骤的角度来分析: (1)判断对
阅读全文
第九章:方法区【重要】
摘要:一、栈、堆、方法区的交互关系 1、从线程共享与否的角度来看 2、栈、堆、方法区的交互关系 二、方法区的理解 1、官方文档 2.5.4. Method Area The Java Virtual Machine has a method area that is shared among all Ja
阅读全文
Java 注解 之 自定义注解与读取
摘要:一、自定义 Annotation 1、规则自定义 (1)定义新的 Annotation 类型使用 @interface 关键字; (2)自定义注解自动继承了 java.lang.annotation.Annotation 接口; (3)Annotation 的成员变量在 Annotation 定义中
阅读全文
第八章:堆【重要】
摘要:一、堆的核心概述 1、堆(Heap)的核心概述:堆的唯一性 (1)一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。 (2)Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。 ① 堆内存的大小是可以调节的。 (3)《Java虚拟机规范》规定
阅读全文
第七章:本地方法栈
摘要:一、本地方法栈(Native Method Stack) (1)Java虚拟机栈用于管理Java方法的调用,而本地方法栈用于管理本地方法的调用; (2)本地方法栈,也是线程私有的。 (3)允许被实现成固定或者是可动态扩展的内存大小。(在内存溢出方面是相同的) ① 如果线程请求分配的栈容量超过本地方法
阅读全文
第六章:本地方法接口
摘要:一、本地方法 简单地讲,一个 Native Method 就是一个 Java 调用非 Java 代码的接口。一个 Native Method 是这样一个Java方法;该方法的实现由非 Java 语言实现,比如 C。这个特征并非 Java 所特有,很多其它的编程语言都有这一机制,比如在 C++中,你可
阅读全文
第五章:虚拟机栈【重要】
摘要:一、虚拟机栈概述 1、虚拟机出现的背景 由于跨平台性的设计,Java 的指令都是根据栈来设计的。不同平台 CPU 架构不同,所以不能设计为寄存器的。 栈式架构的JVM: 优点是:跨平台,指令集小,编译器容易实现; 缺点是:性能下降,实现同样的功能需要更多的指令; 2、初步印象 有不少 Java 开发
阅读全文
第四章:程序计数器(PC寄存器)
摘要:一、PC Register介绍 1、官方文档说明 官方地址:https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html#jvms-2.5.1 2、PC Register概述 JVM 中的程序计数器(Program Counter Re
阅读全文
第三章:运行时数据区概述及线程
摘要:一、概述 1、整体流程 2、运行时数据区 内存是非常重要的系统资源,是硬盘和 CPU 的中间仓库及桥梁,承载着操作系统和应用程序的事实运行。JVM 内存布局规定了 Java 在运行过程中内存申请、分配、管理的策略,保证了 JVM 的高效稳定运行。不同的 JVM 对于内存的划分方式和管理机制存在这部分
阅读全文
第二章:类加载子系统
摘要:一、内存结构概述 1、简图 2、详细图-EN 3、详细图-ZH 4、如果自动实现一个虚拟机需要什么结构呢? ① 类加载子系统; ② 执行引擎; 二、类加载器与类的加载过程 1、类加载子系统作用 类加载器子系统负责从文件系统或者网络中加载 Class 文件,class 文件在文件开头有特定的文件标识;
阅读全文