![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
pstar
专注于JAVAweb开发数据挖掘linux
展开
-
深入理解HashMap
1、hashmap的数据结构 要知道hashmap是什么,首先要搞清楚它的数据结构,在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,hashmap也不例外。Hashmap实际上是一个数组和链表的结合体(在数据结构中,一般称之为“链表散列“),请看下图(横排表示数组,纵排表示数组元素【实际上是一个链表】)。转载 2013-04-01 10:03:56 · 544 阅读 · 0 评论 -
深入研究java.lang.ThreadLocal类
一、概述 ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,转载 2013-06-27 14:02:53 · 5441 阅读 · 1 评论 -
serialVersionUID 用来表明类的不同版本间的兼容性
简单来说,Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来 的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序 列化,否则就会出现序列化版本不一致的异常。 当实现java.io.Serializable接口的转载 2013-06-27 14:13:47 · 685 阅读 · 0 评论 -
JAVA中equals,hashcode方法解析
概述:toString 将对象以字符串形式表示,大多为了显示用的compareto 为了比较大小用的hashcode 获取对象hash值,只有用到Hashtable、HashMap、HashSet、LinkedHashMap等时才要注意hashcode,其他地方hashcode无用。equals 判断对象是否相同为什么要重写hashCode方法和equals方法?原创 2013-06-27 15:00:32 · 673 阅读 · 0 评论 -
java.lang.System下的arraycopy和java.util.Arrays.copyOf方法
(1) java.lang.System.arraycopypublic static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);问题:方法没有任何的实现,具体是如何实现的呢?以下是关于该方法具体的说明:* @param src转载 2013-06-27 15:33:28 · 1710 阅读 · 0 评论 -
ArrayDeque源码分析
ArrayDeque不是线程安全的。 ArrayDeque不可以存取null元素,因为系统根据某个位置是否为null来判断元素的存在。 当作为栈使用时,性能比Stack好;当作为队列使用时,性能比LinkedList好。 1. 两个重要的索引:head和tail Java代码 // 第一个元素的索引 private transient int head;转载 2013-06-27 15:51:20 · 996 阅读 · 0 评论 -
sleep、join、yield、wait、notify、notifyAll、run、start、synchronized
1、sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据。注意该方法要捕捉异常。 例如有两个线程同时执行(没有synchronized)一个线程优先级为MAX_PRIORITY,另一个为MIN_PRIORITY,如果没有Sleep()转载 2013-06-27 15:59:17 · 1041 阅读 · 0 评论 -
JVM client模式和Server模式的区别
这里向大家描述一下JVM client模式和Server模式两者的区别和联系,JVM如果不显式指定是-Server模式还是-client模式,JVM能够根据下列原则进行自动判断(适用于Java5版本或者Java以上版本)。 JVM client模式和Server模式 JVM Server模式与client模式启动,最主要的差别在于:-Server模式启动时,速度较慢,但转载 2013-06-27 16:07:53 · 687 阅读 · 0 评论 -
Java关键字final、static使用总结
一、final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。 final类不能被继承,没有子类,final类中的方法默认是final的。 final方法不能被子类的方法覆盖,但可以被继承。 final成员变量表示常量,转载 2013-06-28 12:52:10 · 614 阅读 · 0 评论 -
Java之静态内部类(static class)
在一个类中创建另外一个类,叫做成员内部类。这个成员内部类可以静态的(利用static关键字修饰),也可以是非静态的。由于静态的内部类在定义、使用的时候会有种种的限制。所以在实际工作中用到的并不多。 在开发过程中,内部类中使用的最多的还是非静态地成员内部类。不过在特定的情况下,静态内部类也能够发挥其独特的作用。 一、静态内部类的使用目的。 在定义内部类的时候,可以在其前面转载 2013-06-28 12:55:02 · 703 阅读 · 0 评论 -
Servlet请求转发:RequestDispatcher接口
在Servlet中,利用RequestDispatcher对象,可以将请求转发给另外一个Servlet或JSP页面,甚至是HTML页面,来处理对请求的响应。RequestDispatcher接口方法简介 1、RequestDispatcher对象由Servlet容器来创建,封装一个由路径所标识的服务器资源。 2、RequestDispatcher接口中定义了转载 2013-06-28 14:03:44 · 1085 阅读 · 1 评论 -
Spring单实例、多线程安全、事务解析
引言: 在使用Spring时,很多人可能对Spring中为什么DAO和Service对象采用单实例方式很迷惑,这些读者是这么认为的: DAO对象必须包含一个数据库的连接Connection,而这个Connection不是线程安全的,所以每个DAO都要包含一个不同的Connection对象实例,这样一来DAO对象就不能是单实例的了。 上述观点对了一半。对的是“每个DAO原创 2013-06-28 13:34:58 · 11847 阅读 · 2 评论 -
JAVA使用 MOCK 对象进行单元测试的实例讲解
1.出了什么问题?单元测试的目标是一次只验证一个方法,小步的前进,细粒度的测试,但是假如某个方法依赖于其他一些难以操控的东东,比如说网络连接,数据库连接,或者是Servlet容器,那么我们该怎么办呢?要是你的测试依赖于系统的其他部分,甚至是系统的多个其他部分呢?在这种情况下,倘若不小心,你最终可能会发现自己几乎初始化了系统的每个组件,而这只是为了给一个测试创造足够的运行环境让它们可转载 2013-06-27 13:57:23 · 5923 阅读 · 0 评论 -
JVM参数表格
参数名称含义默认值 -Xms初始堆大小物理内存的1/64(默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制.-Xmx最大堆大小物理内存的1/4(默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减转载 2013-06-27 16:11:26 · 927 阅读 · 0 评论 -
java利用classloader加载资源
java中资源加载大体有以下几种方式: 一、使用系统的classloader加载。例如在eclipse中ClassLoader.getSystemClassLoader().getResourceAsStream("a.txt"); 会在bin目录下寻找a.txt;如果要在子目录下加载资源,则路径不能以 ‘/’ 开头; 二、使用类加载。InputStream in=XXX.cl原创 2012-09-18 15:59:52 · 662 阅读 · 0 评论 -
java synchronized 示例
运行main函数实际上运行了一个线程,当在main中运行子线程时,两个线程同时运行,所以有时涉及到同步与互斥,下面程序显示这种情况。class WN{ public static void main(String[] args){ ThreadB b=new ThreadB(); b.start(); System.out.println("b is s原创 2012-09-20 10:51:36 · 466 阅读 · 0 评论 -
Java中数组的clone
先看实验代码: public static void main(String[] args) throws CloneNotSupportedException { // 测试一,数组可以被clone int[] arr1 = new int[5]; int[] arr2 = arr1.clone(); arr2[0] = 1; System.ou原创 2013-06-27 15:50:08 · 2071 阅读 · 1 评论 -
JAVA volatile关键字
Java中volatile关键字原义是“不稳定、变化”的意思,那么在java语言中,volatile是什么意思呢? volatile,在Java中用来修饰变量,那是为什么呢?volatile是告诉jvm,这个变量不能被私自占有使用,下面就解释一下为什么这么说吧! 大家都知道,在java中,除了long和double的操作,对基本类型的操作是原子性的,那还为什么使用v转载 2013-06-27 15:57:43 · 753 阅读 · 0 评论 -
自动装箱:小心使用 boxing
自动装箱与拆箱的功能事实上是编译器来帮你的忙,编译器在编译时期依你所编写的语法,决定是否进行装箱或拆箱动作。例如: Integer i = 100; 相当于编译器自动为你作以下的语法编译: Integer i = new Integer(100); 所以自动装箱与拆箱的功能是所谓的“编译器蜜糖”(Compiler Sugar),虽然使用这个功能很方便转载 2013-06-27 16:04:36 · 607 阅读 · 0 评论 -
关于eclipse中classpath的解释
classpath即java程序运行时加载class类文件的路径。 在安装jdk时会设置JAVA_HOME和CLASSPATH系统环境变量,这个变量指向jdk中自带的class文件目录。 当我们使用eclipse创建java工程时,它会自动的生成一个.classpath文件,这个文件内容如下: 这个文件为eclipse中的工程额外添加了一个classpa原创 2012-09-18 15:29:38 · 1603 阅读 · 0 评论 -
Thread的start()和run()
认识Thread的start和run 1) start: 用 start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的 start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行run()方法,这里方法 run()称为线程体,它包含了要执行的这个线程的转载 2013-06-27 14:07:46 · 756 阅读 · 0 评论 -
Java中异常的捕获顺序(多个catch)
Java代码 :import java.io.IOException; public class ExceptionTryCatchTest { public void doSomething() throws IOException{ System.out.println("do somthing"); } public stati转载 2013-06-27 14:09:26 · 1466 阅读 · 0 评论 -
java基本数据类型
Java basic data types are 8String is not a basic data types, String can be seen as a char array (char [])Byte byte : a signed 8-bit type , Range is (-128 to 127)Short short : a signed 16-bit typ转载 2013-06-27 15:52:41 · 543 阅读 · 0 评论 -
一张图解释java类加载过程
转载 2013-06-27 16:02:47 · 586 阅读 · 0 评论 -
Java GC种类,并更换、调优GC
调整JVM GC(Garbage Collection),可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序就有很大区别(Web可以适当的停顿,但GUI停顿是客户无法接受的),而且由于跑在各个机器上的配置不同(主要cup个数,内存不同),所以使用的GC种类也会不同。接转载 2013-06-27 16:10:39 · 748 阅读 · 0 评论