ListSet
Java 集合框架 List LinkedList 见队列中 LinkedList 介绍 ArrayList 和 LinkedList ArrayList 和 Linkedlist 区别? ArrayList 优点:ArrayList 是基于动态数组实现的,地址连续,查询操作效率高 缺点:因为地址连续,ArrayList 要移动数据,所以插入和删除操作效率比较低 ...
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 就在那不停的运转者,...
线程池 什么是线程池?为什么要使用线程池?线程池好处? 什么是线程池? 线程作为操作系统宝贵的资源,对它的使用需要进行控制管理,线程池就是采用池化思想(类似连接池、常量池、对象池等)管理线程的工具。JUC 给我们提供了 ThreadPoolExecutor 体系类来帮助我们更方便的管理线程、并行执行任务。 为什么要使用线程池?线程池的好处? 池化技术池化技术的思想主要是为了减少每次...
线程安全 - 锁 线程安全的本质? 多个线程访问共享的资源时,一个线程对资源进行修改时,其他线程也需要对这个线程进行读或者写操作,导致数据出现错误。 为什么多线程同时访问(读写)同个变量,会有并发问题? JMM(Java 内存模型) 规定了所有的变量都存储在主内存中,每个线程都有自己的工作内存;线程的工作内存中保存了该线程中用到的变量的主内存副本拷贝,线程对变量的所有操作都必须...