随笔分类 - Java基础总结
Java基础知识汇总
摘要:HashMap链表成环的原因:1.多线程竞争,2.Rehash扩容。导致链表成环。 jdk1.8与jdk1.7中HashMap实现的区别: (1)JDK1.7用的是头插法,而JDK1.8及之后使用的都是尾插法,那么他们为什么要这样做呢?因为JDK1.7是用单链表进行的纵向延伸,当采用头插法时会容易出
阅读全文
摘要:ThreadPoolExcutor的构造函数源码: 从源码中可以看出,线程池的构造函数有7个参数,分别是corePoolSize、maximumPoolSize、keepAliveTime、unit、workQueue、threadFactory、handler。下面会对这7个参数一一解释。 一、c
阅读全文
摘要:BIO同步阻塞IO,NIO同步非阻塞IO,BIO异步非阻塞IO; 传统IO和新IO都是用于输入/输出,传统的IO存在没有读到有效数据,程序将会在此处阻塞线程的执行。新IO(NIO)采用文件映射的方式来处理IO,将文件或者文件的一段区域映射到内存中,这样就可以像访问内存一样来访问文件了。通过这种方式就
阅读全文
摘要:浅拷贝(浅复制、浅克隆):被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅拷贝仅仅复制所考虑的对象,而不复制它所引用的对象。 深拷贝(深复制、深克隆):被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。 那些引用其他对象
阅读全文
摘要:使用 synchronized 来做同步处理时,锁的获取和释放都是隐式的,实现的原理是通过编译后加上不同的机器指令来实现。 而 ReentrantLock 就是一个普通的类,它是基于 AQS(AbstractQueuedSynchronizer)来实现的。 是一个重入锁:一个线程获得了锁之后仍然可以
阅读全文
摘要:前言 对于以下两种场景: 1.子线程执行完毕之后,通知主线程处理某些逻辑的场景。 2.线程A执行某个操作之后通知线程B执行某些操作。 这两种场景涉及到线程间通信,可以通过以下几种方式来实现。 1)等待通知机制 两个线程通过对同一对象调用等待 wait() 和通知 notify() 方法来进行通讯。
阅读全文
摘要:本文目录: 一、基本概念 二、volatile的基本原理 一、基本概念 volatile是一个类型修饰符。当一个变量定义为volatile之后,将具备两种特性: 1.保证此变量对所有的线程的可见性,这里的“可见性”。可见性,是指线程之间的可见性,一个线程修改的状态对另一个线程是可见的。当一个线程修改
阅读全文
摘要:进程vs线程: 进程:每个程序被运行加载到内存之后,都会被操作系统作为一个进程,进程是处于运行过程中的程序,是具有独立功能,被操作系统进行资源分配和调度的独立单元。 线程:一个进程里面可以拥有多个线程,线程拥有自己的堆栈,程序计数器和自己的局部变量,但是不拥有系统资源,多个线程共享进程的系统资源。
阅读全文
摘要:Lambda表达式 Predicate操作 Predicate<T>接口 返回一个boolean类型的结果。 Java8为Collection集合新增一个removeIf(Predicate filter)方法,该方法将会批量删除符合filter条件的元素。该方法需要Predicate对象作为参数,
阅读全文
摘要:Java集合类 Java集合大致分为Set,List,Queue和Map四类。Set代表无顺、不可重复的结合;List代表有序、重复的集合;而Map 代表ket-value具有映射关系的集合,Queue代表一种队列集合的实现。 Java集合类:java.util.*包 Java的集合类主要是由两个接
阅读全文
摘要:泛型 泛型:在定义类,接口,方法时使用类型形参,这个类型形参将在声明变量、创建对象、调用方法时动态地指定(即传入实际的类型参数,也可以称为类型实参)。 在定义的接口,类中声明形参,类型形参在整个接口,类里可当成类型使用。 List<String> l1 = new ArrayList<>(); Li
阅读全文
摘要:参考链接:https://www.baeldung.com/jackson-object-mapper-tutorial 简介 Jackson是一个简单基于Java应用库,Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。Jacks
阅读全文
浙公网安备 33010602011771号