基础
文章平均质量分 67
大树91
这个作者很懒,什么都没留下…
展开
-
Java设计模式-工厂模式案例分析
有如下三个需求:1 任意定制交通工具2 任意定制交通工具生产过程3 任意定制产品一族,并可扩展需求 11.1 都写具体类实现定义交通工具代码public class Car { public void go() { System.out.println("???? car go sousousou ..."); }}public class Plane { public void go() { System.out.printl原创 2021-11-20 21:20:11 · 934 阅读 · 0 评论 -
HashMap常见面试题汇总
1 HashMap 的数据结构?整体是个数组结构,数组的元素是内部类Node,Node中有个成员变量 next,指向后续节点的指针,无哈希冲突时,是个单节点。当发生哈希冲突时,Node节点下将关联节点,形成联表。结合数组和链表的优点。当链表长度超过 8 时,链表转换为红黑树。transient Node<K,V>[] table;2 HashMap 的工作原理?HashMap 底层是 hash 数组和单向链表实现,数组中的每个元素都是链表,由 Node 内部类(实现 Map.Entry原创 2021-10-09 18:39:33 · 276 阅读 · 1 评论 -
Jvm垃圾收集器总结(Serial收集器)
Serial收集器是最基本、发展历史最悠久的收集器,曾经(在Jdk1.3.1之前)是虚拟机新生代收集唯一的选择。从名字可以猜出,这个收集器是单线程的收集器,但它的“单线程”的意义并不是仅仅说明它只会使用一个CPU或一条线程去完成垃圾收集工作,更重要的是在它进行垃圾收集时,必须暂停其他所有的工作线程,知道它收集结束。“Stop The World” 这个名字也许听起来很酷,但这项工作实际上是虚拟机在后台自动发起和自动完成的,...原创 2021-07-04 12:03:46 · 152 阅读 · 1 评论 -
list stream sort Comparator.nullsLast 避免空指针的正确用法
list排序中经常是针对对象的某个字段排序,但是字段为null是处理起来比较麻烦,java中有针对此情况的api,下面做详细介绍。代码案例@Testpublic void testListSort() { List<Book> bookList = new ArrayList<>(); bookList.add(new Book(null, "水浒传")); bookList.add(new Book(9, "钢铁怎样炼成的")); bookLi原创 2021-04-18 15:52:58 · 6982 阅读 · 1 评论 -
Java如何判断一个数是奇数 有什么高效率的方式
这可能是历史上最简单的一道java面试题了。判断一个数是否是奇数public boolean isOdd(int i) {}上来个人小试牛刀,这还不简单嘛,然后代码可能是这样的。public boolean isOdd(int i) { if (i % 2 == 1) { return true; } else { return false; }}你别不信,我们曾经一个同事工作几年的程序员,就写出过如此代码,而且是在coderevie原创 2020-11-12 21:03:21 · 1966 阅读 · 0 评论 -
Java内存区域划分及各区域作用
Java虚拟机内存区域示意图:各分区都有什么特点,他们的作用是什么呢?1. 程序计数器(Program Counter Register)线程私有。程序计数器是一块较小的空间,它可以看做是当前线程所执行的字节码的行号指示器。2. Java 虚拟机栈线程私有。Java 虚拟机栈的生命周期与线程相同。虚拟机栈描述的是Java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行完成的过程,就对原创 2020-10-27 21:05:44 · 547 阅读 · 0 评论 -
ArrayList为什么线程不安全 线程不安全体现在哪些方面 源码角度分析其具体原因
我们都知道ArrayList是线程不安全的,那么它不安全在哪里?又会出现什么并发问题呢?原创 2020-08-27 14:16:17 · 2237 阅读 · 1 评论 -
java中超过long范围的超大整数相加算法(面试高频) 第二版
第二版针对第一版做了一定优化,代码和算法就是个不断优化的过程。具体题目背景请看第一版文章,地址:https://blog.csdn.net/wandou9527/article/details/108025167大佬有更好更优雅的实现方式请评论区交流讨论。直接上代码:import org.junit.Test;/** * @author liming * @date 2020/8/20 */public class BigNumAddDemo { @Test publi原创 2020-08-20 14:30:33 · 826 阅读 · 1 评论 -
java中超过long范围的超大整数相加算法(面试高频)
java里有数字long来表示大的整数,如果两个数字的范围超过了long,要做加法算法怎么做呢?原创 2020-08-19 11:57:12 · 4786 阅读 · 1 评论 -
Java 手写线程池 带你翻过线程池这座山
如果想玩转 Java 的多线程与高并发,线程池是你永远也绕不过的山。既然绕不过,我们就啃他,吃透线程池,玩转高并发。原创 2020-08-09 18:59:20 · 471 阅读 · 4 评论 -
JVM GC Roots及Java的四种引用(强引用 软引用 弱引用 虚引用)
gc回收时jvm是如何判断对象已死的?原创 2020-07-31 22:49:59 · 535 阅读 · 2 评论 -
JVM GC 垃圾收集算法总结
jvm的垃圾收集算法总结起来有4种,严格来说应该是3种,下面一一详细介绍。由于垃圾收集算法涉及程序细节,而且各个平台的虚拟机操作内存的方法不同,因此这里不过多介绍算法的实现,注重几种算法的思想及发展过程。标记 - 清除算法最基础的算法“标记-清除”(Mark-Sweep)算法,算法分为“标记”和“清除”两个阶段:首先标记出所有要回收的对象,在标记完成后同一回收调,...原创 2020-06-03 20:06:06 · 198 阅读 · 1 评论 -
HashMap源码分析之扩容时机
首先从一个面试题说起,题目:jdk8中,一个默认大小(16)的HashMap最少存储几个元素会达到扩容点?有的可能会说16*0.75=12,有的会说8,让我们一探究竟。...原创 2020-05-07 15:55:44 · 925 阅读 · 0 评论 -
Java的单例模式探索
目录Java的单例模式探索01020304Java的单例模式探索单例模式是最常见的设计模式,也是面试必问的(基本)。你真的会写一个正确的高效的单例吗?下面分几个阶段介绍写法,直接上代码01public class SingletonDemo { private static SingletonDemo instance = null; private Singleton...原创 2019-08-07 15:36:38 · 144 阅读 · 0 评论