Java
文章平均质量分 70
yuhualee
这个作者很懒,什么都没留下…
展开
-
HashMap中capacity、loadFactor、threshold、size等概念的解释
最近在看HashMap的源码,有很多概念都很模糊,今天写了一个测试例子,加深对这几个概念的理解,并演示了扩容及树化的过程(见下篇博文:)。注:本文基于JDK 1.8HashMap的结构约定约定前面的数组结构的每一个格格称为桶约定桶后面存放的每一个数据称为binbin这个术语来自于JDK 1.8的HashMap注释。sizesize表示HashMap中存放KV的数量(为链表和树中的KV的总和)。capacitycapacity译为容量。capacity就是指Has...转载 2021-02-25 14:22:08 · 668 阅读 · 0 评论 -
JAVA三种常量池的区别
1.全局字符串池(string pool也有叫做string literal pool)全局字符串池里的内容是在类加载完成,经过验证,准备阶段之后在堆中生成字符串对象实例,然后将该字符串对象实例的引用值存到string pool中(记住:string pool中存的是引用值而不是具体的实例对象,具体的实例对象是在堆中开辟的一块空间存放的。)。 在HotSpot VM里实现的string poo转载 2017-11-16 13:36:31 · 5983 阅读 · 3 评论 -
Java虚拟机的体系结构
说明:本文参照《深入Java虚拟机》第5章内容;本文所说的java虚拟机指的是一个运行中的java虚拟机实例。一个java虚拟机实例的任务就是:负责运行一个java程序,有着相同的生命周期。每个java程序都有属于自己的java虚拟机实例,如果在同一台机器上运行3个java程序,将得到3个java虚拟机实例。一个虚拟机的行为分别是按照子系统,内存区,数据类型以及指令原创 2017-09-13 14:57:41 · 291 阅读 · 0 评论 -
Java锁机制
1、synchronized把代码块声明为 synchronized,有两个重要后果,通常是指该代码具有 原子性(atomicity)和 可见性(visibility)。1.1 原子性原子性意味着个时刻,只有一个线程能够执行一段代码,这段代码通过一个monitor object保护。从而防止多个线程在更新共享状态时相互冲突。1.2 可见性可见转载 2016-03-01 16:20:19 · 348 阅读 · 0 评论 -
HashMap源码剖析(JDK1.8)
一、HashMap概述二、HashMap的数据结构三、HashMap源码分析 1、关键属性 2、构造方法 3、存储数据 4、调整大小 5、数据读取 6、HashMap的性能参数 7、Fail-Fast机制一、HashMap概述 HashMap基于哈希转载 2017-11-08 17:14:46 · 217 阅读 · 0 评论 -
堆内存设置
原理JVM堆内存分为2块:Permanent Space 和 Heap Space。Permanent 即 持久代(Permanent Generation),主要存放的是Java类定义信息,与垃圾收集器要收集的Java对象关系不大。Heap = { Old + NEW = {Eden, from, to} },Old 即 年老代(Old Generation),New 即 年轻代转载 2016-05-05 14:58:35 · 475 阅读 · 0 评论 -
关于HashCode和equals的理解
在Java中,hashCode()和equals()是基类Objcet的两个方法,它们在Object中的实现十分简单,如下:hashCode函数主要功能是返回一个Object对象的物理地址,equals则比较两个Object的引用地址是否相等。 而在实际应用中,那些继承自Object往往需要根据实际情况重写equals,例如String类重写了equals方法,使得两个Str转载 2014-02-12 12:06:39 · 717 阅读 · 0 评论 -
Java设计模式--代理模式
代理模式的概念:代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用,以控制对这个对象的访问。 代理类和委托类有共同的父类或父接口,这样在任何使用委托类对象的地方都可以用代理对象替代。代理类负责请求的预处理、过滤、将请求分派给委托类处理、以及委托类执行完请求后的后续处理。 1.静态代理:由程序员创建或工具生成代理类的源码,再编译代理类。所谓原创 2016-03-01 19:13:20 · 343 阅读 · 0 评论 -
Java 匿名内部类
匿名内部类:一. 即没有名字的内部类。是为了方便使用类的功能,而不给其显示指定名称。简化了代码的编写,使代码更紧凑,模块化程度高。二. 因为只使用一次,所以不需要给其指定显示的引用对象(即对象名),这就是匿名内部类的用处。三. 特征:在java编译的时候,会将匿名内部类单独编译成一个字节码文件, 名称为:原类名$1.class。如:Person$1.class。若有某个类中有多个匿原创 2014-03-20 15:11:43 · 465 阅读 · 0 评论 -
Eclipse中小图标的意义
里面总共分为三种类型:1. 颜色:红、黄、绿2. 形状:方、菱、圆3. 内部:实心、空心 其中:红色方块 代表 private 黄色菱形 代表 protected 绿色圆形 代表 public 实心 代表 函数 空心 代表 变量转载 2014-02-19 12:51:18 · 594 阅读 · 0 评论 -
Java--JDBC操作数据库
import java.io.File;import java.io.FileInputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import org.apache.poi.hssf.usermodel.HSSFShe原创 2014-01-02 21:53:31 · 476 阅读 · 0 评论 -
Java中的IO流系统详解
Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组。Java 内用 Unicode 编码存储字符,字符流处理类负责将外部的其他编码的字符流和 java 内 Unicode 字符流之间的转换。而类 InputStreamReader 和 OutputStreamWrit转载 2013-12-17 23:57:34 · 377 阅读 · 0 评论