自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

掘客DIGGKR

生活是一座大山,每天挖掘才能有所收获。掘客是一种生活态度!

  • 博客(19)
  • 资源 (12)
  • 收藏
  • 关注

原创 HashMap默认负载因子0.75和泊松分布有关系吗?

我们在看HashMap源码时,知道HashMap默认的负载因子是0.75。那这个0.75是怎么来的呢?/** * The load factor used when none specified in constructor. */static final float DEFAULT_LOAD_FACTOR = 0.75f;通常,加载因子需要在时间和空间成本上寻求一种折衷。加载因子过高:例如为1,虽然减少了空间开销,提高了空间利用率,但同时也增加了查询时间成本。加载因子过低:例如0.5,

2020-08-29 12:24:19 950 1

转载 JDK1.8 HashMap源码剖析

上篇我们介绍了JDK1.7版的HashMap,今天我们来讲解下JDK1.8版的HashMap。JDK1.7的实现大家看出有没有需要优化的地方?其实一个很明显的地方就是:当 Hash 冲突严重时,在桶上形成的链表会变的越来越长,这样在查询时的效率就会越来越低;时间复杂度为 O(N)。因此JDK1.8 中重点优化了这个查询效率。1、JDK1.8 HashMap 数据结构图我们会发现优化的部分就是把链表结构变成了红黑树。原来jdk1.7的优点是增删效率高,于是在jdk1.8的时候,不仅仅增删效率高,而

2020-08-28 22:54:22 170

转载 JDK1.7 HashMap源码剖析,循环链表是如何产生的

Map 这样的 Key Value 在软件开发中是非常经典的结构,常用于在内存中存放数据。众所周知 HashMap 底层是基于 数组 + 链表 组成的,不过在 JDK1.7 和 1.8 中具体实现稍有不同。今天我们只讲解JDK1.7版本的HashMap。1、HashMap的数据结构图是一个数组+链表结构2、HashMap成员变量/** * The default initial capacity - MUST be a power of two. */static final int DE

2020-08-25 14:40:38 1117 1

转载 红黑树简单解析,动画演示

今天我们来了解下红黑树。1、啥是红黑树?红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。因此想要弄清楚红黑树,我们需要先解决几个问题:① 二叉查找树是什么?② 为什么会出现红黑树?2、剖析二叉查找树二叉查找树特性二叉查找树(Binary Search Tree)是一颗二叉树,简称BST。就像我们说int都是整数一样,BST这一种二叉树需要满足如下三个特性:① 某节点的左子树节点值仅包含小于该节点值② 某节点的右子

2020-08-23 12:27:54 294

转载 面试官:说一下这头牛COW,Copy-On-Write

Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOnWriteArraySet。CopyOnWrite容器非常有用,可以在非常多的并发场景中使用到。1、什么是CopyOnWrite容器Co

2020-08-20 13:59:50 206

转载 为什么会出现ConcurrentModificationException异常,如何解决?

在前面一篇文章中提到,对Vector、ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常。下面我们就来讨论以下这个异常出现的原因以及解决办法。1、异常出现的原因先看下面这段代码:public class Test { public static void main(String[] args) { ArrayList<Integer> list = new ArrayList

2020-08-19 23:10:58 2706

转载 同步容器讲解

为了方便编写出线程安全的程序,Java里面提供了一些线程安全类和并发工具,比如:同步容器、并发容器、阻塞队列、Synchronizer(比如CountDownLatch)。今天我们就来讨论下同步容器。1、为什么会出现同步容器?在Java的集合容器框架中,主要有四大类别:List、Set、Queue、Map。List、Set、Queue接口分别继承了Collection接口,Map本身是一个接口。注意Collection和Map是一个顶层接口,而List、Set、Queue则继承了Collection

2020-08-19 11:56:12 159

转载 面试官都爱问这个:ThreadLocal与内存泄漏

https://www.cnblogs.com/dolphin0520/p/3920407.htmlhttps://blog.csdn.net/JAck_chen0309/article/details/105257331https://blog.csdn.net/puppylpg/article/details/80433271https://blog.csdn.net/zzg1229059735/article/details/82715741?utm_medium=distribute.pc_r

2020-08-18 18:03:00 154

转载 大厂面试必问的CAS,你了解吗

我们在【大厂面试必问:volatile关键字详解】这篇文章中已经知道:volatile关键字可以保证有序性、可见性、防止指令重排,但是不能保证原子性。多线程并发修改volatile变量时,如果线程1读取volatile变量后,这时线程2读取并修改了这个变量,并写入了主内存,设置线程1工作内存中的缓存行失效。由于线程1已经读取过volatile变量了,此时不会再去缓存行读取了(此时缓存行已失效),也不会去主内存读取了,而是直接修改变量,写入主内存。这样就导致了并发修改的错误!正是由于这种错误,导致了CA

2020-08-13 15:16:21 212

转载 大厂面试必问:volatile关键字详解

volatile关键字是面试中必问的一个知识点,今天我们来剖析下。volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。1、内存模型的相关概念大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很

2020-08-12 17:34:30 200

转载 校长发奖状了,要排排队领取哦,Java Lock简述

在小时候,校长发东西时,要我们一个一个排好队绝对不敢抢,不然后果很严重。这个多人排队领取东西的场景和编程中的多线程访问共享资源的场景很像。今天我们结合Java Lock来讲解下。在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。这时候有朋友就会问了,既然都可以通过synchronized来实现同步访问了,那么为什么还需要

2020-08-09 14:31:55 170

转载 老师发糖了,要排排队领取哦,Java synchronized关键字

在小时候,老师发东西时,要我们一个一个排好队不准抢,不然打屁屁。这个多人排队领取东西的场景和编程中的多线程访问共享资源的场景很像。今天我们结合Java synchronized关键字来讲解下。1、什么时候会出现线程安全问题?在单线程中不会出现线程安全问题,而在多线程编程中,有可能会出现同时访问同一个资源的情况,这种资源可以是各种类型的的资源:一个变量、一个对象、一个文件、一个数据库表等,而当多个线程同时访问同一个资源的时候,就会存在一个问题:由于每个线程执行的过程是不可控的,所以很可能导致最终的结果

2020-08-08 14:19:33 200

转载 Java Thread类简述

今天我们来看下java.lang.Thread这个类。在学习Thread类之前,先看下线程相关知识:线程的几种状态、上下文切换,然后介绍Thread类中的方法的具体使用。1、线程的状态线程从创建到最终的消亡,要经历若干个状态。一般来说,线程包括以下这几个状态:创建(new)、就绪(runnable)、运行(running)、阻塞(blocked)、time waiting、waiting、消亡(dead)。当需要新起一个线程来执行某个子任务时,就创建了一个线程。但是线程创建之后,不会立即进入就绪状态

2020-08-07 23:19:45 172

转载 漫画图解进程与线程,形象生动

初学程序的时候,很多人搞不清进程和线程的关系,今天整理了下网友们的答案,希望对大家有所帮助。先看漫画:1、计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2、假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。背后的含义就是,单个CPU一次只能运行一个任务。3、进程就好比工厂的车间,它代表CPU所能处理的单个任务。任一时刻,CPU总是运行一个进程,其他进程处于非运行状态。4、一个车间里,可以有很多工人。他们协同完成一个任务

2020-08-06 22:30:15 587

转载 看连环画,Java垃圾回收机制

今天我们看一下的Java的垃圾回收机制。上图是oracle官网给出的GC描述,热心网友进行了翻译,图文并茂,简单易懂。翻译内容如下:什么是自动垃圾回收?自动垃圾回收是一种在堆内存中找出哪些对象在被使用,还有哪些对象没被使用,并且将后者删掉的机制。所谓使用中的对象(已引用对象),指的是程序中有指针指向的对象;而未使用中的对象(未引用对象),则没有被任何指针给指向,因此占用的内存也可以被回收掉。在用 C 之类的编程语言时,程序员需要自己手动分配和释放内存。而 Java 不一样,它有垃圾回收器,释放内存

2020-08-05 13:42:03 124

原创 面试加分项:Java引用还有分类?强引用、弱引用、软引用、虚引用

众所周知,Java中是JVM负责内存的分配和回收,这是它的优点(使用方便,程序不用再像使用c那样操心内存),但同时也是它的缺点(不够灵活)。为了解决内存操作不灵活这个问题,Java采用了软引用等方法。在JDK1.2以前的版本中,当一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及状态,程序才能使用它。这就像在日常生活中,从商店购买了某样物品后,如果有用,就一直保留它,否则就把它扔到垃圾箱,由清洁工人收走。一般说来,如果物品已经被扔到垃圾箱,想再把它捡回来使用就不可能了。

2020-08-04 23:22:23 117

原创 简述JVM内存区域划分

我们在Java编程时少不了程序优化,而程序优化的前提是知道JVM的内存是如何划分的,那么我们今天来大体了解下。在看JVM内存区域划分之前,先来看一下Java程序具体执行的过程:如上图所示,首先Java源代码文件(.java后缀)会被Java编译器编译为字节码文件(.class后缀),然后由JVM中的类加载器加载各个类的字节码文件,加载完毕之后,交由JVM执行引擎执行。在整个程序执行过程中,JVM会用一块空间来存储程序执行期间需要用到的数据和相关信息,这段空间一般被称作为Runtime Data Are

2020-08-03 22:53:42 229

原创 我异常了,快来捕获我,Java异常简述

在我们日常编程中,异常处理是必不可少的,异常处理是否得当关系到程序的健壮性和后续维护成本。试想一下,如果一个项目从头到尾没有考虑过异常处理,当程序出错从哪里寻找出错的根源?但是如果一个项目异常处理设计地过多,又会严重影响到代码质量以及程序的性能。因此,如何高效简洁地设计异常处理是一门艺术,今天我们来讲解一下。...

2020-08-02 23:06:34 130

原创 我有心上人了,Java内部类

在我们日常Java编程中,内部类用到的相对比较少,但是也有必要了解下。1、内部类简述在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。内部类一般来说分为四种:成员内部类、局部内部类、匿名内部类和静态内部类。(1)成员内部类...

2020-08-01 19:09:31 159

tomcat 啊啊啊啊啊啊啊啊啊啊啊

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

2011-05-16

wanjie2 啊啊啊啊啊啊啊啊

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

2011-05-16

人事管理系统

2011-05-16

java数据库驱动大全

java 数据库 驱动 大全java 数据库 驱动 大全java 数据库 驱动 大全java 数据库 驱动 大全java 数据库 驱动 大全java 数据库 驱动 大全

2011-05-15

图书馆管理系统的设计与实现

图书馆管理系统的设计与实现,内有详尽代码,毕设 编程参考资料。

2011-03-13

在线考试系统的设计与实现

在线考试系统的设计与实现,内有详尽代码,毕设参考资料。

2011-03-13

企业人事管理系统的设计与实现

企业人事管理系统的设计与实现,内有详尽的代码,编程、毕设参考资料。

2011-03-13

餐饮管理系统的设计与实现

餐饮管理系统的设计与实现,具有详尽的代码,毕业设计参考作品.

2011-03-13

企业QQ系统的设计与实现

企业QQ系统的设计与实现,具有详尽的代码,毕业设计参考作品.

2011-03-13

卡拉OK点歌系统的设计与实现

卡拉OK点歌系统的设计与实现,具有详尽的代码,毕业设计参考作品.

2011-03-13

中小企业进销存管理系统

中小企业进销存管理系统,具有详细的代码,毕业设计作品

2011-03-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除