- 博客(12)
- 收藏
- 关注
原创 23种设计模式之工厂模式学习笔记
什么是工厂模式?工厂顾名思义就是创建产品,根据产品是具体产品还是具体工厂可分为简单工厂模式和工厂方法模式,根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式。该模式用于封装和管理对象的创建,是一种创建型模式。本文从一个具体的例子逐步深入分析,来体会三种工厂模式的应用场景和利弊。1、简单工厂模式什么是简单工厂模式?简单工厂也叫做静态工厂,在程序编译成字节码文件前就已经确立了工厂类对一些对象的封装关系,只需要根据参数来获取工厂对象来获取对应的目标对象。优点:客户端创建对象时只需要记住特定的参数,而
2022-03-01 14:57:47 329
转载 HashMap源码中带参构造函数中Float.isNaN(loadFactor)
今天再看HashMap源码的时候看到之前从未了解过的Float中的一个静态方法isNaN(is not a number).大概查了一下该方法位于Float类中,详情如下图乍一看实在不理解 v != v 的意思,查阅了其他文章大概就是对比值的意思,但是有一种特殊情况,那就是如果v为NaN的话返回true,就表示不是一个数。NaN(Not a Number,非数)是计算机科学中数值数据类型的一类值,表示未定义或不可表示的值。目前知道的只有0.0f/0.0f表示为NaN,以及对负数进行根号运算表示为Na
2022-02-25 23:56:47 245
原创 Java快速排序原理浅析
快速排序是我们之前学习的冒泡排序的升级,他们都属于交换类排序,都是采用不断的比较和移动来实现排序的。快速排序是一种非常高效的排序算法,它的实现,增大了记录的比较和移动的距离,将关键字较大的记录从前面直接移动到后面,关键字较小的记录从后面直接移动到前面,从而减少了总的比较次数和移动次数。同时采用“分而治之”的思想,把大的拆分为小的,小的拆分为更小的,其原理如下:对于给定的一组记录,选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元
2022-01-12 12:30:57 983
原创 HashSet保证集合不重复浅析
一.Set集合的特点集合能包含重复的元素集合添加之后不能保证有序二.HashSet如何实现元素不重复首先来看一个实例:Student类:package Student;import java.util.Objects;/** * @author Fox * @date 2021/11/30 21:44 */public class Student { private int num; private String name; private int age
2021-11-30 22:48:30 626
原创 Comparable和Comparator解析和区别
文章目录前言一、Comparable1.概述2.Comparable实例3.关键点二、Comparator1.概述2.Comparator实例1.针对在上面已经实现Comparable的情况(已经实现的排序不满足现有排序需求)2.自定义对象没有实现Comparable接口的情况。3.关键点总结前言在学习中,我们经常会使用List集合及Array数组来操作一定数量的元素对象,而Collections集合工具类包含了一些静态方法来进行集合的排序、交换、查找等操作。本文主要讲述Comparable和Comp
2021-11-26 16:48:43 525
原创 ConcurrentHashMap在JDK1.7和JDK1.8中的区别
最近在学习到ConcurrentHashMap的时候发现了一个很有趣的问题,ConcurrentHashMap在JDK1.7和JDK1.8中的结构和底层实现好像有点不太一样的地方。1.JDK1.7中的ConcurrentHash结构图如下:从图中可以以看到,在JDK1.7中,ConcurrentHashMap的数据结构是由一个Segment数组和多个HashEntry组成的,而每个Segment中由多个HashEntry组成HashEntry数组,而每个HashEntry数组中的节点又代表每个链表的
2021-11-24 23:20:53 731
原创 HashMap底层原理浅析
HashMap底层实现原理此文关于HashMap的底层浅析文章目录HashMap底层实现原理前言一、Hash表二、HashMap底层实现三、HashMap源码中的一些重要属性1.初始容量2.最大容量![在这里插入图片描述](https://img-blog.csdnimg.cn/6a9b72d290f54421b30bbf1e7e68f635.png)3.默认负载因子4.树化阙值5.链表阙值6.扩容临界值四、HashMap的构造方法1.传入初始容量initialCapacity和负载因子loadFac
2021-11-22 16:03:28 360
原创 JVM内存模型
JVM内存结构文章目录JVM内存结构关于JVM虚拟机一、类装载子系统二、运行时数据区1.程序计数器2.Java虚拟机栈3.堆内存(Heap)4.方法区5.本地方法栈总结关于JVM虚拟机什么是JVM虚拟机?JVM是Java Virual Machine(Java虚拟机)的缩写,JVM是一个虚构出来的计算机,是通过在一台实际的计算机上模拟计算机功能来实现的。Java虚拟机包含一套字节码指令集、一组寄存器、堆、栈、方法区等。JVM屏蔽了与具体操作系统相关的信息,使得Java程序只需要生成在虚拟机上运
2021-11-16 23:43:07 1053
原创 Srtring创建对象两种方式的区别
Srtring创建对象两种方式的区别1.在了解String两种创建方式的区别之前首先了解栈、堆、常量池。 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆 (new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。) 堆:存放所有new出来的对象。 常量池:存放字符串常量和基本类型常量(public static final)。2.通过双引号的方式直接赋值创建对象 String str = "test"; 此时JVM会创建一块 String Poo
2021-11-15 22:50:31 407
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人