![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java面试
文章平均质量分 73
软件测试开发架构师
这个作者很懒,什么都没留下…
展开
-
java hashmap在项目中的使用
在需要频繁访问数据但又不想每次都从数据库或远程服务获取的场景中,可以使用 HashMap 作为缓存。例如,在一个 Web 应用程序中,用户信息可能只需要在登录时从数据库检索一次,之后可以将这些信息存储在 HashMap 中以供快速访问。每个商品都有一个唯一的 ID(如 SKU),可以用作 HashMap 的键,而商品的数量和其他相关信息可以存储在值中。主要是对项目的一些配置信息进行统一管理,如数据库连接,网络域名,微服务地址......在Web应用中,可以使用HashMap来临时存储已登录用户的会话信息。原创 2024-05-22 18:15:39 · 287 阅读 · 0 评论 -
Redis分布式锁实战(库存扣减 Setnx、Redisson及底层源码、RedLock)
Redis高并发分布式锁实战(Setnx、Redisson及底层源码、RedLock):库存扣减中理解分布式锁的含义转载 2023-02-18 16:28:08 · 3472 阅读 · 0 评论 -
Rabbitmq消息的有序性、消息不丢失、不被重复消费
Rabbitmq面试题转载 2023-02-13 18:35:59 · 2890 阅读 · 0 评论 -
String 知识点详解
java String字符串基础知识原创 2023-02-08 23:34:37 · 298 阅读 · 0 评论 -
malloc内存分配
malloc内存分配转载 2022-09-18 14:14:17 · 838 阅读 · 0 评论 -
缺页异常(重要)
缺页异常转载 2022-09-18 11:31:43 · 2366 阅读 · 1 评论 -
CPU 100%排查及常见案例
CPU 100%排查及常见案例转载 2022-09-10 11:11:41 · 934 阅读 · 0 评论 -
AQS深入理解(二)
AQS深入理解(二)原创 2022-09-08 17:12:09 · 124 阅读 · 0 评论 -
AQS深入理解(一)
AQS深入理解(一)原创 2022-09-08 16:35:15 · 234 阅读 · 0 评论 -
CAS 自旋锁(二)
CAS自旋锁原创 2022-09-08 15:19:26 · 146 阅读 · 0 评论 -
CAS 自旋锁(一)
CAS 自旋锁(一)原创 2022-09-08 14:50:08 · 315 阅读 · 0 评论 -
红黑树动画演示
1、啥是红黑树?红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。因此想要弄清楚红黑树,我们需要先解决几个问题:① 二叉查找树是什么?② 为什么会出现红黑树?2、剖析二叉查找树二叉查找树特性二叉查找树(Binary Search Tree)是一颗二叉树,简称BST。就像我们说int都是整数一样,BST这一种二叉树需要满足如下三个特性:① 某节点的左子树节点值仅包含小于该节点值② 某节点的右子树节点值仅包含大转载 2021-07-07 16:45:31 · 439 阅读 · 0 评论 -
java 数据结构HashMap (2)equals和hashCode
java 数据结构HashMap (2)equals和hashCode我们知道Map是一种键-值(key-value)映射表,可以通过key快速查找对应的value。以HashMap为例,观察下面的代码:Map<String, Person> map = new HashMap<>();map.put("a", new Person("Xiao Ming"));map.put("b", new Person("Xiao Hong"));map.put("c", .转载 2021-06-30 22:07:46 · 776 阅读 · 0 评论 -
java 数据结构HashMap (1)
java 数据结构HashMap (1)用Map来实现根据name查询某个Student的代码如下:import java.util.HashMap;import java.util.Map;public class Main { public static void main(String[] args) { Student s = new Student("Xiao Ming", 99); Map<String, Stude...转载 2021-06-30 19:40:12 · 262 阅读 · 0 评论 -
java contains()与equals()的关系
java contains()与equals()的关系我们知道List是一种有序链表:List内部按照放入元素的先后顺序存放,并且每个元素都可以通过索引确定自己的位置。List还提供了boolean contains(Object o)方法来判断List是否包含某个指定元素。此外,int indexOf(Object o)方法可以返回某个元素的索引,如果元素不存在,就返回-1。我们来看一个例子:public class Main { public static void mai转载 2021-06-30 17:04:04 · 1155 阅读 · 0 评论 -
java数据结构arraylist和linkedlist
java数据结构arraylist和linkedlist一,首先看看内存结构图:二,详细描述:ArrayList: 可以看作是能够自动增长容量的数组ArrayList 的toArray方法返回一个数组ArrayList 的asList方法返回一个列表ArrayList 底层的实现是Array, 数组扩容实现ArrayList 线程不安全ArrayList 必须是连续的ArrayList 只能在数组末尾添加数据ArrayList 查询快,增删慢ArrayList 在转载 2021-06-29 18:52:52 · 848 阅读 · 0 评论 -
java数据结构list
java数据结构listlist是一个接口list的长度可以改变,ArrayList和linkedList都可以增加和删除元素。list里面的元素可以重复list里面可以添加null元素Iterator遍历List效率比较高for each如 for (Object s : array) 底层使用的就是Iterator遍历list转换为array:Integer[]array=list.toArray(newInteger[list.size()]);array转换成...转载 2021-06-29 16:24:14 · 728 阅读 · 0 评论 -
java数据结构array数组
java数据结构array数组和list的总结首先是array数组:array数组初始化大小之后长度不可变,所以array数组没有增加和删除元素的方法!!!array数组的长度一旦改变就是一个新数组array数组的长度不变,只改变元素时,不会生成新的array数组对象常用的array数组有:int[],String[],char[]array数组常用的方法有:Arrays.fill(); 填充数组Arrays.sort(); 数组排序Arrays.toString();转载 2021-06-29 16:07:27 · 387 阅读 · 0 评论 -
Java ArrayList和LinkedList之间的区别
Java ArrayList和LinkedList之间的区别一、ArrayListArrayList是一个可以处理变长数组的类型,这里不局限于“数”组,ArrayList是一个泛型类,可以存放任意类型的对象。顾名思义,ArrayList是一个数组列表,因此其内部是使用一个数组来存放对象的,因为Object是一切类型的父类,因而ArrayList内部是有一个Object类型的数组类存放对象。ArrayList类常用的方法有add()、clear()、get()、indexOf()、remove()、s转载 2021-03-01 10:46:14 · 191 阅读 · 0 评论 -
Java List和ArrayList的区别
Java List和ArrayList的区别List是一个接口,而ArrayList是List接口的一个实现类。ArrayList类继承并实现了List接口。因此,List接口不能被构造,也就是我们说的不能创建实例对象,但是我们可以像下面那样为List接口创建一个指向自己的对象引用,而ArrayList实现类的实例对象就在这充当了这个指向List接口的对象引用。个人见解:要是你已经学过了OOP,上面的部分是不难理解的,这是面向对象重要的知识点,面向对象最重要的就是多态,我们都知...转载 2021-02-26 16:10:20 · 2838 阅读 · 0 评论 -
在内存中java类和对象的区别
在内存中java类和对象的区别在内存中java类和对象的区别:1,类是静态的一些代码,位于方法区2,对象是new出来的,位于堆内存3,静态变量/方法在所有的对象中只有一份,也就是说:所有对象共用一份静态变量/方法4,类的成员变量(非静态)在不同的对象中都有不同的值5,类的方法(非静态)在所有的对象中只有一份,调用该方法的时候,该方法才占用内存(栈内存)...原创 2021-02-01 11:36:45 · 289 阅读 · 0 评论 -
java内存溢出 栈溢出的原因与排查方法
java内存溢出 原因与排查方法1、 内存溢出的原因是什么?内存溢出是由于没被引用的对象(垃圾)过多造成JVM没有及时回收,导致剩余的内存不够用,造成的内存溢出。如果出现这种现象可行代码排查:一)是否应用中的类中和引用变量过多使用了Static修饰 如public staitc Student s;在类中的属性中使用 static修饰的最好只用基本类型或字符串。如public static int i = 0; //public static String str;二)是否 应用 中使用了大转载 2021-01-26 18:55:19 · 3447 阅读 · 0 评论 -
Java JDK1.8中常量池所处区域
Java JDK1.8中常量池所处区域类常量池诞生时间:编译时所处区域:堆(类常量池存在Class文件中,一个Class文件对应一个类常量池)储存内容:符号引用和字面量。字符串常量池诞生时间:编译时所处区域:堆储存内容:堆内的字符串对象的引用和字符串常量。运行时常量池诞生时间:当类加载到内存中后所处区域:本地内存(每个class都加载后常量池的数据被汇总到运行时常量池,运行时常量池存在元空间中)储存内容:class文件元信息描述,编译后的代码数据,引用类型数据(类经过解析转载 2021-01-26 10:44:32 · 2836 阅读 · 8 评论 -
static无法访问非static变量和方法
static无法访问非static变量和方法为什么static无法访问非static变量和方法?static是类的成员,与对象无关,优先于对象的加载,也就是说一个类出现的时候,类里面的static就已经加载了,但是此时还没有去new对象,只有new了对象之后内存中的堆里面才加载非static成员,所以在没有new对象的时候,内存中的static是访问不到非static的成员。这也就是为什么在static方法里面访问非static方法时必须先new对象,然后再通过对象的应用来访问非static成员!原创 2021-01-24 21:26:27 · 749 阅读 · 0 评论 -
Java 内存分配详解(六)
Java 内存分配详解(六)原创 2021-01-24 20:28:00 · 116 阅读 · 0 评论 -
Java 内存分配详解(五)
Java 内存分配详解(五)栈(stack):主要保存基本类型(或者叫内置类型)(char、byte、short、int、long、float、double、boolean)和对象的引用,数据在栈内可以共享,速度仅次于寄存器(register),快于堆。堆(heap):用于存储对象和数组常量池:常量池的划分Class 文件常量池运行时常量池字符串常量池1. Class 文件常量池Class 文件常量池指的是编译生成的 class 字节码文件,其结构中有一项是常量池(Co.转载 2021-01-24 20:06:11 · 511 阅读 · 1 评论 -
Java 内存分配详解(四)
Java 内存分配详解(四)对于成员变量和局部变量:成员变量就是方法外部,类的内部定义的变量;局部变量就是方法或语句块内部定义的变量。局部变量必须初始化。形式参数是局部变量,局部变量的数据存在于栈内存中。栈内存中的局部变量随着方法的消失而消失。成员变量存储在堆中的对象里面,由垃圾回收器负责回收。class BirthDate { private int day; private int month; private int year; ...转载 2021-01-24 18:18:14 · 174 阅读 · 0 评论 -
Java 内存分配详解(三)
Java 内存分配详解(三)1,每个线程包含一个栈区,栈中只保存基础数据类型的值和自定义对象的引用(不是对象),对象都存放在堆区中2,每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。3,栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。4,存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)5,jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身 6,局部变量必须初原创 2021-01-24 17:52:02 · 338 阅读 · 0 评论 -
Java 内存分配详解(二)
Java 内存分配详解(二)最近在看《深入理解Java虚拟机》,书中给了几个例子,比较好的说明了几种OOM(OutOfMemory)产生的过程,大部分的程序员在写程序时不会太关注Java运行时数据区域的结构:感觉有必要通过几个实在的例子来加深对这几个区域的了解。Java程序运行时,数据会分区存放,JavaStack(Java栈)、 heap(堆)、method(方法区)。1、Java栈Java栈的区域很小,只有1M,特点是存取速度很快,所以在stack中存放的都是快速执行的任务,基本转载 2021-01-24 16:40:59 · 637 阅读 · 0 评论 -
java ==与equals的区别(三)
java ==与equals的区别本文主要是针对int,Integer 之间的==与equals进行比较很多人都不明白为什么integer里面存在[-128,127]这个范围,想知道这个原因的话首先要知道int和integer的区别int就是最基本的数据类型,integer是int的包装类,也就是给int变成了一个类,增加了很多熟悉和方法。由于创建类的时候每次都需要新建数据占用一些空间,于是java考虑到常用的数据基本上是在100以内,所以给了[-128,127]这个范围,只要在[-12原创 2021-01-22 19:13:19 · 125 阅读 · 0 评论 -
java ==与equals的区别(二)
java ==与equals的区别本文主要是针对int,Integer 之间的==与equals进行比较当将i的值设置为40时,注意:40在[-128,127]范围内public class test20210122_002 { public static void main(String[] args) { objPoolTest(); } public static void objPoolTest() { int i = 40;原创 2021-01-22 18:04:58 · 129 阅读 · 0 评论 -
java ==与equals的区别(一)
java ==与equals的区别首先上一段代码进行分析:public class test20210122_001 { public static void main(String[] args) { int a1=1; int a2=1; Integer a3=1; Integer a4=1; Integer b1 =new Integer (1); Integer b2 =new原创 2021-01-22 16:49:55 · 148 阅读 · 0 评论 -
int与integer的比较大小
int与integer的比较大小Integer是int的封装类,int与Integer比较时,Integer会自动拆箱,无论怎么比,int与Integer都相等,Integer比较时,查看java源代码可知道,在-128与127之间,Integer会自动存在内存中,再有时,直接从内存中去取,不在这个范围则会new新对象,所以Integer与new Integer永远都不相等。范例int a=127;int b=127;Integer c = 127;Integer d = new Integ转载 2020-12-23 20:04:49 · 2910 阅读 · 0 评论 -
Java多态 父类引用指向子类对象
原文地址http://www.cnblogs.com/111testing/p/6880831.htmlJava多态的三个必要条件:1、 继承2、 子类重写父类方法3、 父类引用指向子类对象然后看一个例子输出结果为:给出结论:Father c = new Child() 在c的眼里只能看到 child转载 2018-04-23 00:26:28 · 23936 阅读 · 8 评论 -
java static成员变量方法和非static成员变量方法的区别
原文地址http://www.cnblogs.com/111testing/p/8443539.html静态成员变量不用new对象,在类加载的过程中就已经初始化存放在数据区域,静态成员变量是类和所有对象共有的,类和对象都可以改变它的值,每一次改变值之后,静态成员变量的值在所有对象里面都将改变。 非静态成员变量只能通过对象来赋值,通过对象来改变非静态转载 2018-04-23 00:25:01 · 1854 阅读 · 0 评论 -
java多态性方法的重写Overriding和重载Overloading详解
原文地址http://www.cnblogs.com/111testing/p/6404878.htmljava多态性方法的重写Overriding和重载Overloading详解 方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中转载 2018-04-23 00:23:11 · 684 阅读 · 0 评论 -
Java接口和抽象类的区别
原文地址http://www.cnblogs.com/111testing/p/8495652.htmlJava接口和抽象类的区别Java接口和抽象类的区别转载 2018-04-23 00:21:21 · 492 阅读 · 0 评论 -
Java 面试排序代码
import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.HashSet;import java.util.Itera原创 2018-04-23 00:18:36 · 513 阅读 · 0 评论 -
Java io文件操作
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileReader;im原创 2018-04-23 00:10:23 · 459 阅读 · 0 评论 -
Java 容器基础知识
原文地址http://www.cnblogs.com/111testing/p/6602942.html在Java中使用Set,可以方便地将需要的类型以集合类型保存在一个变量中.主要应用在显示列表.Set是一个不包含重复元素的 collection。更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素。正如其名称所暗示的,此接口模仿...转载 2018-04-16 01:51:00 · 249 阅读 · 0 评论