请叫我大师兄

哎,博客页面是越改越虐心啊。

以小故事的形式讲述Java回调机制,非常有助于理解。

Java的回调机制,可能都听说过,当然这个机制不仅限于Java,其他各门语言,都应该有使用。但是怎么理解,就有点困惑。 还有什么是抽象类回调,什么是接口回调,以及二者之间的差别。也不是一句两句就能说清楚,就算说的人清楚,但是不能保证,听的人也能听的清楚。 下面看这个小故事,来深入理解一下回调机...

2017-02-06 11:30:31

阅读数 1605

评论数 1

Java HashMap中链表结构是如何产生的

先看hashmap底层是个数组结构,数组上面存的数据都是 Entry 这个类型的数据。 然后看他的主要实现如下: static class Entry implements Map.Entry { final K key; V value; ...

2017-01-22 16:31:43

阅读数 7405

评论数 10

为什么HashSet不能重复以及具体原理源码分析

为什么HashSet里面add的时候,不可以add相同的值, 为什么可以用HashSet的这个不重复的值的特性来去重复呢。 为什么要用HashSet去重复的时候,要重写Java model的hashcode和equal方法 先看如下HashSet的几个构造方法如下: /** ...

2016-09-09 15:25:23

阅读数 5593

评论数 4

理解Java Integer的缓存策略

本文将介绍 Java 中 Integer 缓存的相关知识。这是 Java 5 中引入的一个有助于节省内存、提高性能的特性。 首先看一个使用 Integer 的示例代码,展示了 Integer 的缓存行为。接着我们将学习这种实现的原因和目的。 你可以先猜猜下面 Java 程序的输出结果。很明显,这里...

2016-09-08 17:45:22

阅读数 5207

评论数 1

Java 的引用类型有哪几种:强引用、软引用、弱引用和虚引用

Java虽然有内存管理机制,但仍应该警惕内存泄露的问题。例如对象池、缓存中的过期对象都有可能引发内存泄露的问题。 从JDK1.2版本开始,加入了对象的几种引用级别,从而使程序能够更好的控制对象的生命周期,帮助开发者能够更好的缓解和处理内存泄露的问题。 这几种引用级别由高到低分别为:强引用、软引...

2016-09-07 16:26:17

阅读数 5974

评论数 0

guava中Lists.newArrayListWithCapacity()的作用和实现原理

list集合初始化的时候,若大小可知,应初始化固定大小的集合,也是个好习惯。 避免在add()元素的时候,要扩容,然后就得重新copy一遍元素,这样就不好啦。 ArrayList集合大概原理:就是一个Object数组,来存储值,然后知道这点之后,继续看下面的。 下面关于guava的Lists.ne...

2016-09-05 10:45:16

阅读数 6406

评论数 3

Java集合之ArrayList源码概览学习

一、ArrayList概述       ArrayList是实现List接口的动态数组,所谓动态就是它的大小是可变的。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。       每个A...

2016-09-02 11:35:58

阅读数 678

评论数 0

Java和guava关于hashmap在初始化的时候最好给个初始容量,避免扩容引起性能问题的探究。

一般Java的集合初始化如下带初始容量的map: Map map = new HashMap(4); 本意是希望给HashMap设置初始值, 避免扩容(resize)的开销. 但是没有考虑当添加的元素数量达到HashMap容量的75%时将出现resize. 所以说上面的是徒劳的。错误的。 ...

2016-09-01 16:52:59

阅读数 12729

评论数 0

详细图解什么叫平方探查法即二次探测再散列和线性探测再散列(数据结构 哈希函数 哈希冲突)

虽然上文有提到怎么解释的开放地址法处理hash冲突,但是当时只是给了个简单的图,没有 详细讲解一下, 我当时有点不明白,回头查查资料,然后亲自动手,整理了一下。 然后我就三幅图详细讲解一下: 什么叫线性探测再散列; 什么叫平方探测再散列(二次探测再散列); 老师的ppt吧。 给个原始数据如...

2016-08-28 22:38:44

阅读数 50507

评论数 24

Hashtable,HashMap,ConcurrentHashMap 底层实现原理与线程安全问题

术语定义 术语 英文 解释 哈希算法 hash algorithm 是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值。  哈希表 hash table 根据设定的哈希函数H(key)和处理冲突方...

2016-08-22 19:15:00

阅读数 18352

评论数 3

Java HashMap中在resize()时候的rehash,即再哈希法的理解

HashMap的扩容机制---resize() 扩容(resize)就是重新计算容量,向HashMap对象里不停的添加元素,而HashMap对象内部的数组无法装载更多的元素时,对象就需要扩大数组的长度,以便能装入更多的元素。当然Java里的数组是无法自动扩容的,方法是使用一个新的数组代替已有的...

2016-08-22 00:24:52

阅读数 17465

评论数 28

java 解决Hash(散列)冲突的四种方法--开放定址法(线性探测,二次探测,伪随机探测)、链地址法、再哈希、建立公共溢出区

一)哈希表简介 非哈希表的特点:关键字在表中的位置和它之间不存在一个确定的关系,查找的过程为给定值一次和各个关键字进行比较,查找的效率取决于和给定值进行比较的次数。     哈希表的特点:关键字在表中位置和它之间存在一种确定的关系。 哈希函数:一般情况下,需要在关键字与它在表中的存储位置之...

2016-08-21 22:13:37

阅读数 32961

评论数 20

Java反射结合属性文件实现工厂模式

通过属性文件的形式配置所需要的子类 首先创建一个fruit.properties的资源文件 内容为: apple=Reflect.Apple orange=Reflect.Orange 然后编写主类代码 package Reflect; import java.io.*; import jav...

2016-08-20 00:47:42

阅读数 1529

评论数 0

利用反射机制实现工厂模式

package Reflect; interface fruit{ public abstract void eat(); } class Apple implements fruit{ public void eat(){ System.out.println...

2016-08-20 00:43:10

阅读数 5014

评论数 3

工厂模式的代码实现,简单易懂。

工厂模式的代码实现,简单易懂。 interface fruit { public abstract void eat(); } class Apple implements fruit { public void eat() { System.out.printl...

2016-08-20 00:39:54

阅读数 10006

评论数 2

java反射详解---反射的理论知识

此篇主要讲解下反射的理论概念,另外一篇则是有很多的实际反射的例子,链接如下: 不要看着多,但是功能就是下面描述的反射的作用 一、JAVA是动态语言吗? 一般而言,说到动态言,都是指在程序运行时允许改变程序结构或者变量类型,从这个观点看,JAVA和C++一样,都不是动态语言。 但JAVA它却...

2016-08-20 00:21:02

阅读数 1442

评论数 0

java反射详解---具体代码操作看看反射都能干些什么

1反射机制是什么 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。 2反射机制能做什么 反射机制主要提供了以下功能: 在运行时判断任意一个对象...

2016-08-20 00:01:58

阅读数 3626

评论数 7

HashMap的工作原理--重点----数据结构示意图的理解

HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道HashTable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投资银行更喜欢问这个问题,甚...

2016-08-15 11:43:20

阅读数 14476

评论数 2

HashMap的数据结构---示意图和结构的理解

1.HashMap的数据结构   数组的特点是:寻址容易,插入和删除困难;而链表的特点是:寻址困难,插入和删除容易。那么我们能不能综合两者的特性,做出一种寻址容易,插入删除也容易的数据结构?答案是肯定的,这就是我们要提起的哈希表,哈希表有多种不同的实现方法,我接下来解释的是最常用的一种方...

2016-08-15 11:41:12

阅读数 5624

评论数 0

java7--(1.7)也可能还早的-----HashMap的实现原理

HashMap也是我们使用非常多的Collection,它是基于哈希表的 Map 接口的实现,以key-value的形式存在。在HashMap中,key-value总是会当做一个整体来处理,系统会根据hash算法来来计算key-value的存储位置,我们总是可以通过key快速地存、取value。下...

2016-08-14 23:06:32

阅读数 8934

评论数 1

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