
JAVA
文章平均质量分 53
堂子哥冲鸭
努力学习,不断进步
展开
-
Java字面常量
字母常量是类型为简单类型、String类型和空类型的值在源程序中的表现。数字字面常量数字字母常量可以表示成十进制、十六进制、八进制和二进制。十进制数字字面量要么是整数0,要么是以1~9开始,后面跟着0~9的ASCII字符十六进制数字字面量以0x字符开始八进制数字字面量以0数字开始二进制数字字面量以0b字符开始十六进制数字十六进制数字以前导的ASCII字符0X或者0...原创 2018-06-24 21:11:14 · 1878 阅读 · 1 评论 -
MapStruct的入门教程
MapStruct的入门教程MapStruct的入门教程为什么需要MapStruct什么是MapStructMapStruct初体验MapStruct的入门教程为什么需要MapStruct多层应用程序通常需要在不同的对象模型(例如实体和DTO)之间进行映射。编写此类映射代码是一项繁琐且容易出错的任务。MapStruct旨在通过使其尽可能自动化来简化这项工作。与其他映射框架相比,MapStruct在编译时生成Bean映射,以确保高性能,允许快速的开发人员反馈和彻底的错误检查。什么是MapStruct原创 2021-05-27 11:27:49 · 683 阅读 · 0 评论 -
面试题:有A,B,C三个线程,如何保证三个线程同时执行?如何在并发情况下保证三个线程依次执行?如何保证二个线程有序交错进行?
面试题:有A,B,C三个线程,如何保证三个线程同时执行?如何在并发情况下保证三个线程依次执行?如何保证二个线程有序交错进行?面试题:有A,B,C三个线程,如何保证三个线程同时执行?如何在并发情况下保证三个线程依次执行?如何保证二个线程有序交错进行?有A,B,C三个线程,如何保证三个线程同时执行?有A,B,C三个线程,如何在并发情况下保证三个线程依次执行?有A,B,C三个线程,如何保证三个线程有序交错进行?面试题:有A,B,C三个线程,如何保证三个线程同时执行?如何在并发情况下保证三个线程依次执行?如何保证原创 2021-04-09 23:52:20 · 4158 阅读 · 0 评论 -
CyclicBarrier的使用说明
CyclicBarrier的使用说明CyclicBarrier的使用说明CyclicBarrier介绍构造方法主要方法使用示例CyclicBarrier的使用说明CyclicBarrier介绍CyclicBarrier叫做循环栅栏,主要用于在指定数量的线程都达到了栅栏,才开始执行逻辑的场景。例如,全家人都到餐桌了才吃饭,旅游景点观光车坐满了人才发车,类似于这样的场景。就是说CyclicBarrier就是一个栅栏,只有所有的线程都到达了栅栏处,才开始进行执行。而且我们要关注循环这两个字,说明这个栅栏是循原创 2021-04-08 22:30:08 · 181 阅读 · 0 评论 -
CountDownLatch的使用说明
CountDownLatch的使用说明CountDownLatch的使用说明CountDownLatch的使用说明原创 2021-04-07 23:41:09 · 457 阅读 · 1 评论 -
Java对象结构
Java对象结构Java对象结构对象头MarkWordklass数组长度(只有数组对象有)实例数据对齐填充如何计算对象的大小Java对象结构当我们在代码中新建了一个对象,这个对象在虚拟机内存中是怎么样的呢?在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)对象头HotSpot虚拟机的对象头包括两部分信息:MarkWork和KlassMarkWord第一部分MarkWord,用于存储对象自身原创 2021-04-05 18:23:40 · 91 阅读 · 0 评论 -
彻底弄懂红黑树
红黑树的插入和删除操作红黑树的插入和删除操作概述从2-3-4树开始讲起插入操作删除操作红黑树的插入和删除操作概述我们知道二叉搜索树在一些特定的情况下会退化成链表,比如插入有序的数据的时候。为了解决这个问题,可以使用AVL树。AVL树是一个平衡二叉树,其左右子节点的高度差不大于1,这样子的话,就可以尽量地减少树的高度,以得到稳定的查询效率,但是为了维持平衡二叉树,需要频繁地进行树的左右旋转。那么是否有一种数据结构能够兼顾防止树的退化和查询效率呢,有,它就是红黑树。我们知道红黑树有如下特征:每个节点原创 2021-01-15 23:26:14 · 470 阅读 · 0 评论 -
面试题:手写单例模式
面试题:手写单例模式面试题:手写单例模式二级目录三级目录面试题:手写单例模式二级目录三级目录原创 2021-01-12 22:52:56 · 1054 阅读 · 3 评论 -
面试题: final 在 java 中有什么作用?在底层是如何实现的?
面试题: final 在 java 中有什么作用?在底层是如何实现的?面试题: final 在 java 中有什么作用?在底层是如何实现的?题目分析题目回答底层实现面试题: final 在 java 中有什么作用?在底层是如何实现的?题目分析final关键字是一个经常使用的关键字,在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。题目回答final 修饰的类叫最终类,该类不能被继承。final 修饰的方法不能被重写。final 修饰的变量叫常量,常量必须初始化,初始化之原创 2021-01-10 23:42:34 · 713 阅读 · 0 评论 -
面试题:两个对象的 hashCode()相同,则 equals()也一定为 true吗?
@[TOC](面试题:两个对象的 hashCode()相同,则 equals()也一定为 true吗?)面试题:两个对象的 hashCode()相同,则 equals()也一定为 true吗?题目分析Java常规知识了解,在Object类的hashCode方法和equals方法的注释上有相关介绍。题目回答两个对象的hashCode相同,equals方法不一定需要为true。在Object的hashCode方法写了hashCode的几个约定,其中就有一条表示,equals方法返回false,不代表h原创 2021-01-10 21:50:11 · 1149 阅读 · 0 评论 -
面试题:JDK和JRE有什么区别?
面试题:JDK和JRE有什么区别?面试题:JDK和JRE有什么区别?题目分析题目回答面试题:JDK和JRE有什么区别?题目分析这是一个非常简单的题目。题目回答JDK是Java开发工具包,JRE是Java运行环境。JDK中包含了Java的开发环境和运行环境,例如开发所使用的编译器等。所以JDK一般为Java开发人员所使用,而JRE只包含运行环境,所以如果只需要运行Java程序,可以使用JRE。...原创 2021-01-10 21:41:49 · 1690 阅读 · 0 评论 -
面试题:String和StringBuffer和StringBuilder的区别
面试题:String和StringBuffer和StringBuilder的区别面试题:String和StringBuffer和StringBuilder的区别题目分析题目回答面试题:String和StringBuffer和StringBuilder的区别题目分析StringBuffer和StringBuilder是两个极为相似的两个类,它们都是可变的字符串。可以通过查看源码可知,它们的继承的类,实现的接口都是一样的。这两个类在实现上不同的地方基本有两点:StringBuffer在很多方法上加上了原创 2021-01-09 22:15:10 · 2669 阅读 · 2 评论 -
面试题:请你说下volatile这个关键字,volatile原理是什么?
面试题:请你说下volatile这个关键字,volatile原理是什么?面试题:请你说下volatile这个关键字,volatile原理是什么?题目分析题目回答volatile的作用volatile的原理可见性实现有序性实现面试题:请你说下volatile这个关键字,volatile原理是什么?题目分析此题考察的是volatile这个关键字。可以从volatile的作用和volatile的原理这三个方面来进行回答。volatile只能保证变量的可见性、有序性,但是不能保证原子性。题目回答volat原创 2021-01-06 20:38:59 · 653 阅读 · 1 评论 -
类的加载顺序
类的加载顺序类的加载顺序解析类的加载顺序父类静态变量父类静态代码块子类静态变量子类静态代码块父类变量父类非静态代码块父类构造方法子类变量子类非静态代码块子类构造方法解析当需要使用一个类时,需要将此类加载到JVM虚拟机中.加载过程中,包含步骤初始化.初始化的步骤会执行类的<client>方法.若初始化在执行过程中,发现如果此类拥有父类,则先执行父类的<client>方法,<client>方法是编译器收集静态变量的赋值和静态代码块形成的方法.所原创 2021-01-01 22:58:57 · 100 阅读 · 1 评论 -
面试题:你知道类加载器吗?说说你所了解的类加载器.
面试题:你知道类加载器吗?说说你所了解的类加载器.面试题:你知道类加载器吗?说说你所了解的类加载器.问题分析问题回答引导类加载器拓展类加载器系统类加载器面试题:你知道类加载器吗?说说你所了解的类加载器.问题分析这个问题考察的是类加载器,我们需要回答有哪些类加载器,以及类加载器加载的内容.问题回答类的加载器有三种,分别是:引导类加载器拓展类加载器系统类加载器引导类加载器引导类加载器是最上层的类加载器,由C++实现,主要负责Java中核心类的加载,负责将 <JAVA_HOME>原创 2021-01-01 20:52:55 · 357 阅读 · 1 评论 -
面试题:你知道类加载的机制吗?为什么需要双亲委派,如何打破双亲委派?
面试题:你知道类加载的机制吗?为什么需要双亲委派,如何打破双亲委派?你知道类加载的机制吗?问题解析问题回答为什么需要双亲委派机制?问题分析问题回答如何打破双亲委派?问题分析问题回答你知道类加载的机制吗?问题解析这个问题问的是类加载的机制,从比较广义的范围来看,问题问的可能是类的加载过程,包括的类加载的3个过程,类加载器的类型和双亲委派机制,也又可能问的是比较狭隘的双亲委派机制.这里就以双亲委派机制来回答.可以先说以下有哪几种类加载器,然后双亲委派机制如何运作.问题回答类加载使用了双亲委派机制,首先原创 2021-01-01 20:41:16 · 1490 阅读 · 0 评论 -
面试题:你知道创建线程有哪些方式吗?
面试题:你知道创建线程有哪些方式吗?面试题:你知道创建线程有哪些方式吗?题目分析题目解答面试题:你知道创建线程有哪些方式吗?题目分析题目考察的多线程中的线程创建,属于基础的问题,一般可以被用来引出并发相关的问题.题目解答创建线程中四种方法,分别是:继承Thread类,覆写run方法.实现接口Runnable,实现run方法.实现接口Callable,实现call方法.使用Executors创建线程池ThreadPoolService,使用submit方法提交线程....原创 2021-01-01 16:41:07 · 2028 阅读 · 0 评论 -
面试题:软引用是什么?怎么实现的?使用场景?哪些地方用到它?
面试题:软引用是什么?怎么实现的?使用场景?哪些地方用到它?面试题:软引用是什么?怎么实现的?使用场景?哪些地方用到它?题目分析题目解答面试题:软引用是什么?怎么实现的?使用场景?哪些地方用到它?题目分析题目考虑的是Java四种引用类型强软弱虚中的软引用,题目不算太难,需要记忆即可.题目解答软引用所引用的对象当内存足够时不会被垃圾回收器回收,可是当到内存不足时,就会被垃圾回收.使用SoftReference来实现软引用,创建一个SoftReference类,并将对象作为参数传入构造函数.在一些原创 2021-01-01 16:27:43 · 1020 阅读 · 0 评论 -
面试题:你知道类的加载过程吗?
面试题:你知道类的加载过程吗?面试题:你知道类的加载过程吗?问题分析问题解答加载过程连接过程验证准备解析初始化其他面试题:你知道类的加载过程吗?问题分析类的加载过程是一个比较基础也是面试中经常问到的问题,需要专门去记忆下。问题解答类的加载过程一般分为三个阶段,加载、连接、初始化。加载过程加载过程中虚拟机需要完成以下三件事情:通过一个类的全限定名来获取这个类的二进制字节流。将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。在Java堆中生存一个代表这个类的java.lang.原创 2021-01-01 11:27:06 · 342 阅读 · 0 评论 -
面试题:HashMap底层查找的时间复杂度?
面试题:HashMap底层查找的时间复杂度?面试题:HashMap底层查找的时间复杂度?问题分析问题回答面试题:HashMap底层查找的时间复杂度?问题分析这个问题问的是查找的时间夫复杂度,考察的是HashMap底层数据的存储,我们直到java8之后,HashMap的存储结构为数组+链表+红黑树。所以结合HashMap的存储结构来进行回答。问题回答理想情况下,哈希不冲突,可以直接找到结果,所以O(1)在最差的情况下,HashMap保存的数据都在链表中保存,所以需要遍历链表,所以时间复杂度为O(原创 2020-12-31 14:37:32 · 4153 阅读 · 0 评论 -
面试题:HashMap如何get一个元素?
面试题:HashMap如何get一个元素?面试题:HashMap如何get一个元素?题目分析回答面试题:HashMap如何get一个元素?题目分析这一题问的是如何获取HashMap内保存的元素,考察的是HashMap底层原理的掌握。首先要知道,HashMap是如何保存元素的,之后才能够知道如何获取一个元素。回答想要在HashMap中获取Get一个元素,需要传入一个Key。HashMap会计算这个key的哈希值,并对HashMap的容量进行求余,得到以数组的方式保存的数据中,key所对应的位置。原创 2020-12-31 13:36:48 · 1564 阅读 · 0 评论 -
equals和==有什么区别?
equals和==有什么区别?符号【==】比较的是什么?equals方法比较的是什么?符号【==】比较的是什么?对于基本类型和引用类型 ==的作用效果是不同的,两者比较如下基本类型:比较的是值是否相同;引用类型:比较的是引用是否相同;equals方法比较的是什么?equals方法用于进行对象的比较,若对象相等,则返回true,否则返回false。equals是定义于Object上的方法,其上面描述了equals方法要遵守的一些原则。如下所示:自反性 :对于任何非空的参考值x , x.eq原创 2020-12-29 07:49:14 · 407 阅读 · 1 评论 -
Java中GCRoots包括哪些
Java中GCRoots包括哪些Java中GCRoots包括哪些GCRootsJava中GCRoots包括哪些在垃圾回收过程中如何判断一个对象是否是垃圾,有两种算法。一种是引用记数法,一种是可达性分析法。引用记数法是早期垃圾回收器中使用的算法,每一个对象维护一个该对象被引用的记数,每引用一次,记数加1,每减少引用1次,引用减1,当引用为0时,表示该对象不再被引用,可以作为垃圾被清除。但是引用记数法有一个最致命的问题,就是无法解决循环引用的问题。可达性分析法,是通过从GCRoots出发,找出内存中的原创 2020-12-29 07:05:46 · 4001 阅读 · 1 评论 -
Java中的四种引用类型及其使用场景
Java中的四种引用类型及其使用场景Java中的四种引用类型及其使用场景Java中的四种引用类型强引用软引用弱引用虚引用总结Java中的四种引用类型及其使用场景Java中的四种引用类型Java中的引用相关类的架构如下所示强引用当内存不足,JVM开始垃圾回收,对于强引用的对象,就算是出现了OOM也不会对该对象进行回收,死都不收。强引用是我们最常见的普通对象引用,只要还有强引用指向一个对象,就能表明对象还“活着”,垃圾收集器不会碰这种对象。在Java中最常见的就是强引用,把一个对象赋给一个引用变量原创 2020-12-28 23:41:38 · 2295 阅读 · 0 评论 -
Java中CAS
Java中CASJava中CAS什么是CAS?CAS的原理Unsafe模拟CAS的应用CAS的缺点ABA问题Java中CAS什么是CAS?CAS是Compare and Swap的简称,翻译过来就是比较并交换.CAS描述了在设置之前先比较的一种操作.例如变量a的值为10,我现在想要把变量a修改为20,所以我修改之前判断下变量a是否还是为10(期望值),若是,表示变量a没有被人修改过,所以我可以将20设置为变量a的值;若变量a的值不是10,表示了在获取到变量a的值为10之后,变量a又被修改过,所以设置为原创 2020-12-27 21:46:53 · 272 阅读 · 0 评论 -
Java中的字符串
Java中的字符串Java中的字符串Java中的字符串在日常工作或者面试题目中经常会问道,字符串是否相等的问题,其实考察的知识点就是,字符串的创建。通过字面量(直接通过双引号"")声明字符串的方式, 虚拟机首先会到字符串常量池中查找该字符串是否已经存在. 如果存在会直接返回该引用, 如果不存在则会在堆内存中创建该字符串对象, 然后到字符串常量池中注册该字符串。使用new关键字创建字符串对象的时候,JVM将不会查询字符串常量池, 它将会直接在堆内存中创建一个字符串对象, 并返回给所属变量.当调用i原创 2020-12-14 21:56:17 · 104 阅读 · 0 评论 -
finally 语句块的深度辨析
Java的finally块的深度辨析原创 2019-10-17 23:47:26 · 382 阅读 · 0 评论 -
java虚拟机之class文件解读
java虚拟机之class文件解读解读前提我们知道,java的源码文件经过编译器的编译就得到了字节码文件,也就是class文件。我们一直以来,关心的都是源码文件。身为程序员的你,是否跟我一样好奇过class文件里面是什么,是否也打开过class文件,然后发现一堆看不懂的乱码而放弃。那么这篇博客就是介绍如何来解读class文件。首先我们要知道class文件的内容是以二进制的格式存在的,这也就是...原创 2019-04-13 00:18:04 · 499 阅读 · 0 评论 -
Java的8种基本数据类型
在Java中有八种基本数据类型,这八种数据类型中有四种是整型类型,两种是浮点类型,还有两种分别是字符类型和布尔类型。整型类型 byteshortintlong浮点类型 floatdouble字符类型 char布尔类型 boolean整型类型整型用于表示没有小数点的数值。Java提供了4种整型,分别是byte、short、int、long,这4种整型的不同主...原创 2018-05-07 16:53:27 · 249 阅读 · 0 评论 -
centos7安装SunJDK
环境信息CentOS Linux release 7.4.1708 (Core) jdk1.8.0_172卸载OpenJDK在终端运行命令,查看是否有安装OpenJDK[vagrant@localhost ~]$ java -versionopenjdk version "1.8.0_161"OpenJDK Runtime Environment (build 1.8.0_...原创 2018-05-02 11:45:12 · 1726 阅读 · 0 评论