面试
文章平均质量分 83
以面试为主要目标进行的复习内容
很閒很快樂
这个作者很懒,什么都没留下…
展开
-
ArrayList动态数组,是怎么实现动态的?
ArrayList动态数组是怎么实现动态的?ArrayList是一个动态数组,可以通过泛型来决定数据中存放的元素类型。原创 2023-08-09 17:17:52 · 186 阅读 · 0 评论 -
JVM虚拟机之——双亲委派模型
双亲委派模型一、简介站在Java虚拟机角度来看,只存在两种不同的类加载器启动类加载起,这个类加载器使用C++语言实现,是虚拟机自身的一部分其他所有类加载器,这些类加载器都由Java实现,独立存在与虚拟机外,并且全部继承自抽象类,java.lang.ClassLoader站在Java开发人员角度来看,Java一直保持着三层类加载器、双亲委派的类加载结构二、三层类加载器&双亲委派模型2.1 启动类加载器(Bootstrap Class Loader)这个类加载器负责加载存放在&原创 2021-02-10 19:18:48 · 205 阅读 · 0 评论 -
你了解Java的线程池吗?看完就懂了
线程池一、线程池的优势池化技术相比大家已经屡见不鲜了,线程池、数据库连接池、Http 连接池等等都是对这个思想的应用。池化技术的思想主要是为了减少每次获取资源的消耗,提高对资源的利用率。1.1 使用线程池的好处:降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗;提高系统响应速度,当有任务到达时,通过复用已存在的线程,无需等待新线程的创建便能立即执行;方便线程并发数的管控。因为线程若是无限制的创建,可能会导致内存占用过多而产生OOM,并且会造成cpu过度切换(cpu切换线原创 2021-02-08 11:42:50 · 211 阅读 · 0 评论 -
HashMap初始容量为什么是2的n次幂及扩容为什么是2倍的形式
HashMap的初始容量都是2的n次幂的形式存在的,而扩容也是2倍的原来的容量进行扩容,也就是扩容后的容量也是2的n次幂的形式存在的,下面就来说明一下为什么是2的n次幂的形式! 先来看一下源码,也就是向HashMap中添加元素,或者扩容时是怎么存放元素的。 第一个截图是向HashMap中添加元素putVal()方法的部分源码,可以看出,向集合中添加元素时,会使用(n - 1) & hash的计算方法来得出该元素在集合中的位置;而第二个截图是HashMap扩容时调用resize()..转载 2021-01-26 15:08:31 · 1085 阅读 · 1 评论 -
JVM虚拟机之 Java内存区域详解
Java 内存区域详解写在前面 (常见面试题)基本问题拓展问题一 概述二 运行时数据区域2.1 程序计数器2.2 Java 虚拟机栈2.3 本地方法栈2.4 堆2.5 方法区2.5.1 方法区和永久代的关系2.5.2 常用参数2.5.3 为什么要将永久代 (PermGen) 替换为元空间 (MetaSpace) 呢?2.6 运行时常量池2.7 直接内存总结1. 程序计数器2. Java 虚拟机栈3. 本地方法栈4. 堆5. 方法区6...原创 2021-01-25 21:18:44 · 102 阅读 · 0 评论 -
操作系统之虚拟内存
文章目录几种常见的内存管理机制什么是虚拟内存局部性原理虚拟内存的技术实现页面置换算法文章开头,我们先来介绍一下几种常见的内存管理机制几种常见的内存管理机制简单分为连续分配管理方式和非连续分配管理方式这两种。连续分配管理方式是指为一个用户程序分配一个连续的内存空间,常见的如 块式管理 。同样地,非连续分配管理方式允许一个程序使用的内存分布在离散或者说不相邻的内存中,常见的如页式管理 和 段式管理。块式管理 : 远古时代的计算机操系统的内存管理方式。将内存分为几个固定大小的块,每个块中只包含一个原创 2021-01-25 19:03:04 · 96 阅读 · 0 评论 -
MySQL——MVCC原理讲解&当前读、快照读
MVCCMVCC的作用可重复读隔离级别的时候,通过MVCC解决幻读问题只在可重复读和读已提交两个隔离级别下工作因为读未提交总是读取最新的数据,而不是读取当前事务版本的数据行,而可串行化则会对所有读取的行加锁MVCC的基本原理MVCC的实现,通过保存数据在某个时间点的快照来实现的。也就是一个版本链,相当于保存了事务操作的一个历史纪录。版本链对于使用InnoDB存储引擎的表,其聚簇索引记录中包含了两个重要的隐藏列:trx_id:每当事务对聚簇索引中的记录进行修改时,都会把当前事务的事务i.原创 2021-01-24 22:52:32 · 767 阅读 · 0 评论 -
MySQL——Innodb中的锁及四种隔离级别
MySQL——Innodb中 表锁和行锁的思考InnoDB存储引擎实现了两种标准的锁共享锁(S-Lock):也就是读锁MySQL读锁,是读取操作创建的锁,是不阻塞的,其他的用户可以并发数据,但任何用户都不可以修改数据,直到释放。当上锁时候可以读可以加锁,但不可以更新。排它锁(X-Lock):也就是写锁MySQL写锁,如果事务A对行加入写锁,写锁是阻塞的,其他事务将不能再对该行加任何锁,事务A可以读可以改,其他事务将被阻塞Innodb中的行锁与表锁行锁行锁可以最大程度的支持并发策略,原创 2021-01-23 17:35:44 · 548 阅读 · 0 评论 -
JVM之 用例子讲解JVM虚拟机的类加载机制
虚拟机类加载机制因为疫情原因,都从去年颓废到今年了,这可不行,得抓紧了,还要暴富呢!!!今年让我们先从Java虚拟机类的加载机制开始1.1 生命周期一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,整个生命周期将会经历七个阶段,其中验证,准备,解析,三个部分统称为连接。其中只有解析阶段不一定按顺序执行,它在某些情况下可以在初始化阶段之后开始。1.2 什么情况下开始 “ 初始化阶段 ”关于开始第一个阶段 “ 加载阶段 ”,这点交给虚拟机的具体实现...原创 2021-01-01 16:06:51 · 102 阅读 · 0 评论 -
Java设计模式——单例模式的线程安全和不安全的实现方式
Java设计模式——单例模式的实现对于单例模式的实现,在Java面试中也是会经常问到,单例模式有好多种实现方法,让我在下面给大家展开讲解1.饿汉模式class Singleton1 { // 饿汉模式 private static Singleton1 singleton1 = new Singleton1(); private Singleton1(){} public static Singleton1 getInstance(){ retu.原创 2020-12-04 15:54:50 · 199 阅读 · 1 评论 -
Java基础——对HashMap的put和resize方法进行理解
Java基础——对HashMap的put和resize方法进行理解前言一、Put方法put方法源码put方法总结:二、resize方法resize源码resize方法总结:前言我们可以看到,在面试所有大厂Java岗位的时候,都有对了解HashMap原理的要求,意识到透彻了解HashMap的底层原理迫在眉睫,所以决定再写一篇博文对HashMap进行记忆和分享。一、Put方法开篇我们直接上干货!put方法源码public V put(K key, V value) { return原创 2020-11-22 14:55:48 · 391 阅读 · 2 评论 -
你知道ArrayList和LinkedList之间有什么区别吗?
写在前面众所周知,在面试Java岗位的时候,面试官最常问的问题之一就是,你常用哪些Java集合框架啊?可以说一说ArrayList和LinkedList之间有什么区别吗?我们今天就来聊一聊到底有什么样的区别。不同点ArrayListArrayList的底层实现是基于动态数组的数据结构,所以它可以以O(1)的时间复杂度去对元素进行随机访问因为底层是数组,所以对于插入和删除操作来说,最坏则需要遍历整个数组,而且在插入元素时候(除了使用尾插法)还需要重新计算数组大小,更新索引,并且在数组空原创 2020-09-09 10:18:28 · 240 阅读 · 1 评论 -
弄清Java中的String,StringBuilder,StringBuffer的区别
Java中的String,StringBuilder,StringBuffer一、三者区别String对象是常量,它的值不能被创建后改变,StringBuffer和StringBuilder可以可变;StringBuilder非线程安全(单线程使用),String与StringBuffer线程安全(多线程使用);如果程序不是多线程的,那么使用StringBuilder效率高于StringBuffer。二、String 类——String字符串常量字符串广泛应用 在Java 编程中原创 2020-08-12 19:26:00 · 524 阅读 · 2 评论 -
常用的Java包小记
第一个包:java.lang包。该包提供了Java语言进行程序设计的基础类,它是默认导入的包。该包里面的Runnable接口和Object、Math、String、StringBuffer、System、Thread以及Throwable类需要重点掌握,因为它们应用很广。第二个包:java.util包。该包提供了包含集合框架、遗留的集合类、事件模型、日期和时间实施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。第三个包:java.io包。该包通过文件系统、数据流和序列化提供系统原创 2020-08-12 21:21:16 · 165 阅读 · 0 评论 -
Java集合框架的底层实现原理之——ArrayList
文章目录一、ArrayList1、ArrayList介绍2、ArrayList源码分析2.1 ArrayList底层使用List2.2 ArrayList的构造方法2.3 ArrayList的新增操作2.4 ArrayList的删除操作2.5 ArrayList的查找操作一、ArrayList1、ArrayList介绍public class ArrayList<E> extends AbstractList<E> implements List<E&g原创 2020-08-16 15:30:42 · 765 阅读 · 0 评论