- 博客(21)
- 收藏
- 关注
原创 深入理解Java虚拟机(6)--String.intern()方法
String str1 = new StringBuilder("计算机").append("软件").toString();System.out.println(str1.intern() == str1);//jdk1.6 false jdk1.7 trueString str2 = new StringBuilder("ass").append("ert").toString();Sy
2017-06-26 17:28:39
368
原创 深入理解Java虚拟机(5)--对象的访问定位
建立对象是为了使用对象,我们的Java程序需要通过栈上的reference数据来操作堆上的具体对象。由于reference类型在Java虚拟机规范中之规定了一个指向对象的引用,并没用定义这个引用因该通过何种方式去定位、访问队中的对象的具体位置,所以对象的访问方式也是通过虚拟机实现而定的。访问方式分类:1、直接指针: reference 中存储的直接就是对象地址,对象实例数据中有一块区域存储
2017-06-24 15:24:09
414
原创 深入理解Java虚拟机(4)--对象的创建(虚拟机再遇到一条new指令时,会怎么做?)
我们在编写程序的时候经常使用new指令来创建一个对象,那么虚拟机再遇到一条new指令创建对象(仅限于简单对象,不包括数组和Class对象等)的时候,在虚拟机的内部到底是一个怎么样的过程。首先介绍几个在创建对象的过程中使用到的几个生词。1、Java分配内存的方式:1.1、 指针碰撞: 假设Java堆中内存是绝对完规整的,所有用过的内存都放在一边,空闲的内存都放在另一边,中间放着一个指针作为分界点
2017-06-22 16:35:38
829
1
原创 深入理解Java虚拟机(3)--Java内存区域的划分及作用
Java虚拟机在执行Java程序的过程中会把它所管咧内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和小会的时间,有的区域随着虚拟机的启动而存在,有些区域再依赖用户线程的启动和结束而建立和销毁。根据Java虚拟机规范Java虚拟机所管理的内存包括以下几个运行区域:1、程序计数器1.1、简述: 程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。字节码解释器
2017-06-22 16:07:51
389
原创 深入理解Java虚拟机(2)--JDK、JRE、JVM的区别
很多程序员已经干了一段时间java了依然不明白jdk、jre以及jvm的区别,尤其是jdk与jre之间的区别。JDK(Java Development Kit)Java 语言的软件开发工具包(SDK),是面向Java开发人员的使用者,它提供了Java的开发环境和运行环境。SDK是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等。JRE是Java Runt
2017-06-21 13:36:33
1001
原创 为什么使用HashSet储存对象时必须重写equals和hashcode方法
对于 Set 接口的实现类 HashSet,它是按照哈希算法来存取集合中的对象,并且因为其继承了 Set 接口,所以不允许插入相同的数据。但是当我们在储存自定义的类的时候会出现相同的对象,我们来查看下面一个示例。示例一:User.java/** * Created by MGL on 2017/4/22. */public class User { private String numbe
2017-05-04 13:39:23
4636
原创 HashSet解析
我们已经花了很长的一段时间来学习了HashMap的一些底层原理,以及简单了解了Hashtable和HashMap两种集合的区别,现在我们从HashSet源码入手,来学习HashSet更细节的地方。1.HashSet概述:HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素2.类的定义publi
2017-04-22 09:01:56
663
原创 HashMap(3)进阶篇--HashMap扩容机制
1.什么是resize:resize就是重新计算容量;当我们不断的向HashMap对象里不停的添加元素时,HashMap对象内部的数组就会出现无法装载更多的元素,这是对象就需要扩大数组的长度,以便能装入更多的元素;当然Java里的数组是无法自动扩容的,方法是使用一个新的数组代替已有的容量小的数组;就像我们用一个小桶装水,如果想装更多的水,就得换大水桶。2.什么时候需要resize():当向容器添加元
2017-03-05 13:21:52
9153
原创 HashMap基础篇(1) 之Hash算法、Hash表以及冲突的处理
HashMap是我们使用非常多的Collection,它是基于哈希表的 Map 接口的实现,以key-value的形式存在。在HashMap中,key-value总是会当做一个整体来处理,系统会根据hash算法来来计算key-value的存储位置,我们总是可以通过key快速地存、取value。在学习HashMap之前先来了解几个概念。Hash的定义:Hash,一般翻译做“散列”,也有直接音译为“哈希
2017-02-26 11:08:14
634
原创 Log4j的配置
log4j简介Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
2017-02-14 12:06:16
1347
原创 tomcat 7(一) startup.bat详解
在window系统系,当我们运行startup.bat文件时,我们就可以启动tomcat。我们来看一下该文件到究竟干了什么。首先介绍一下bat文件1.bat文件 bat文件是dos下的批处理文件,在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。使用批处理文件(也被称为批处理程序或脚本),可以简化日常或重复性任务
2016-09-08 18:52:31
2468
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人