队列
队列介绍在 Java 中队列有两种形式,单向队列( AbstractQueue ) 和 双端队列( Deque ),单向队列效果如下所示,只能从一端进入,另外一端出去双端队列( Deque ), Deque 是双端队列的线性数据结构, 可以在两端进行插入和删除操作,效果如下所示: Queue 单向队列 Queue 概述 队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操...
队列介绍在 Java 中队列有两种形式,单向队列( AbstractQueue ) 和 双端队列( Deque ),单向队列效果如下所示,只能从一端进入,另外一端出去双端队列( Deque ), Deque 是双端队列的线性数据结构, 可以在两端进行插入和删除操作,效果如下所示: Queue 单向队列 Queue 概述 队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操...
栈 栈的定义 栈是 后入先出(LIFO) 的数据结构,入栈通常使用 push 操作,往栈中插入数据到栈底,出栈使用 pop 操作,从栈顶删除数据。 栈的实现 栈常用的实现方式是通过动态数组来实现的,在 Java 和 Kotlin 中也内置了栈库 Stack,但是 Stack 已经不推荐使用了。 不推荐使用 Stack 实现栈 性能低 性能低是因为 Stack 继承自 Vecto...
Java 集合框架 List LinkedList 见队列中 LinkedList 介绍 ArrayList 和 LinkedList ArrayList 和 Linkedlist 区别? ArrayList 优点:ArrayList 是基于动态数组实现的,地址连续,查询操作效率高 缺点:因为地址连续,ArrayList 要移动数据,所以插入和删除操作效率比较低 ...
CopyOnWriteArrayList 基础 CopyOnWriteArrayList 原理 Copy-On-Write 写时复制 Copy-On-Write 简称 COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容 Copy 出去形成一个新的内容然后再改,这是一种延时懒惰策略。从 JDK1.5 开始 ...
正则 在正则表达式中,如果您想匹配一个字面量的句号(.),应该写成 \.。这是因为在 Java 中,反斜杠 \ 也需要进行转义,因此需要写两个反斜杠 \ 才能转义出一个反斜杠。 所以最终的写法应该是 \.。写在 (.) 或 [.] 的不需要转义符 ^和 $ ^ 表示匹配字符串的开头;$ 表示匹配字符串的结尾。 因此,正则表达式 ^pattern$ 用于匹配整个字符串是否与给定的模式完...
Java核心技术面试精讲 运行一串 java 代码时,系统怎么处理的? 题目等价于 Java 代码怎么运行的?JVM 是怎样运行 Java 代码的呢? 通过 javac 命令将 .java 源文件编译为字节码(文件后缀名为 .class) 通过 java 启动一个 JVM 将其运行起来 JVM 运行字节码文件之前,有一个类加载器,将编译的字节码文件加载到 JVM...
for 和 forEach 遍历元素 private static void test_get() { String[] array = {"1", "2", "3"}; for (String i : array) { System.out.println(i); } ArrayList<String> list = new...
Java Lambda Lambda 省略格式 /** * lambda语法: 能省则省 */ @SuppressWarnings("unused") @Test public void testLambdaSyntax() { // 语法 BinaryOperator<Integer> bo = (Integer x, Integer y) ->...
Java SPI SPI 背景 怎么获取接口的实现类? 全局扫描全部的 Class,然后判断是否实现了某个接口?代价太大,一般不会这么做 一种合适的方式就是使用配置文件,把实现类名配置在某个地方,然后读取这个配置文件,获取实现类名。JDK 给我们提供的 ServiceLoader 就是这种方式,通过读取 resources/META-INFO/services 的配置。 ...
Java 线程池 线程池复用原理 new 的一个 thread,执行完毕后,线程就消亡了,也就没法复用了线程池,任务和线程是分开的,提交一个任务时,如果当前线程少于 corePoolSize 的话,会创建一个 Worker(其实就是对 Thread 的一个包装),也就是创建一个线程;超过 corePoolSize 的任务会放到 workQueue;这个 Worker 就在那不停的运转者,...