自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 Maven Eclipse使用

Maven是什么Maven 主要用于Java平台的项目构建,依赖管理,项目信息管理。Maven可以做什么完成Java项目的编译,打包构建jar包依赖管理自动化单元测试,生成测试报告Maven 安装下载最新版的Maven安装包配置环境变量Maven 概念groupId 公司标志artifactId 项目名称version 项目版本使用Maven创建项目两种方式: -

2016-06-21 18:37:44 666

原创 java 序列化机制深度解析

概要序列化机制允许将实现序列化的Java对象转换为字节序列,这些字节序列可以被保存在磁盘上或通过网络传输,以备以后重新恢复原来的对象,序列化机制使得对象可以脱离程序的运行而独立存在 可序列化的类包括:实现了Serializable的类,数组,枚举,String类也是可序列化对象由于序列化保存的是对象的状态,因此不会保存类的静态变量 -通过ObjectOutputStream和ObjectIn

2016-06-17 11:02:13 2344

原创 java ArrayList与Vector

本文基于JDK1.7Vector与ArrayListVector用同步实现了线程安全,ArrayList是线程不安全的,但是可以通过Collections.synchronizedList(list)来实现线程安全,不要求线程安全的场景用ArrayList效率更高Vector与ArrayList一样是一种可以根据需要自动伸缩的列表,它们都是基于数组实现的,加入了自动扩容机制Vector在初始化

2016-06-16 16:53:59 647

原创 java Stack源码解析

本源码解析基于JDK1.7概要Stack是基于Vector实现的first-in-last-out数据结构Stack用同步来实现了线程安全,因此在单线程情况下该类会由于加锁开销而效率低Stack在Vector的基础上增加了五个方法 push 入栈pop 出栈peek 取栈顶元素empty 判断栈空search 返回某个元素距离栈顶的距离JDK提供了更为

2016-06-16 15:51:15 661

原创 java System.arraycopy

概要System.arraycopy(src, srcPos, dest, destPos, length)是系统提供的native方法,将src数组从srcPos开始copy到dest数组从destPos的位置,复制长度length数组copy到自身时并不会覆盖实例注意当copy数据到原数组时并不会因为1覆盖掉2后而使得后面的复制内容全部为1,由于是native方法,无法查看源码,猜想其实现

2016-06-16 15:23:23 576

原创 java HashTable源码解析

Hashtable 概要与HashMap主要区别是Hashtable的put,get方法都是同步的,线程安全,但是性能较差key和value都不能为null,HashMap中key与value都可以为 null与HashMap类似,key必须实现hashCode()和equals方法,由于equals判断前都会先判断hashCode方法是否相等,两个equals的对象的hashCode()必须

2016-06-14 17:18:08 1467 2

原创 ConcurrentHashMap源码解析

本源码解析基于JDK1.7,参考[HashMap]HashMap,HashTable概要ConcurrentHashMap实现了HashTable的全部方法,且是线程安全的MapHashTable的put,get等方法都是同步的,效率较低,ConcurrentHashMap通过对table进行分段加锁,当一部分在修改时,其他部分可以同时的操作,在保证线程安全的情况下提高了效率concurren

2016-06-14 11:54:48 1295

原创 java LinkedHashMap源码解析

本源码解析是基于JDK1.7,本篇与HashMap源码解析较强的关联性LinkedHashMap概要LinkedHashMap是基于HashTable与LinkedList原理实现的HashMap是基于数组的,而LinkedHashMap是基于循环双向链表的,即每个节点都有指向前后节点的指针,header节点是不含真实元素的标兵节点,由于每次插入都是在header的前面,header.befo

2016-06-13 19:01:43 1657

原创 java TreeMap源码解析

TreeMap 概要基于红黑树的NavigableMapput,get,remove,containsKey操作时间复杂度 log(n)提供给SortedMap的比较器或者自身的比较函数必须与equals方法一致,因为对于SortedMap,是否相等是基于compare或者compareTo方法的,如果compare方法与equals方法不一致,SortedMap也可以工作,只是与Map接口(

2016-06-13 11:07:05 1724

原创 java移位运算

三种移位运算>>>逻辑右移,没有具体的数学意义>>算术右移,对正数,在不越界的情况下相当于除以二,对负数在不越界的情况下相当于余数为1的除以二(通常负数除以正数,余数应该为负数)<<左移位,无论对于整数负数,在不越界的情况下相当于除以二移位会对所有位(包含符号位)进行移动,左移时低位补零,右移时,>>符号位移走后,高位补原符号位,>>>高位补零示例public class Demo {

2016-06-12 12:15:13 467

原创 Java实现红黑树

红黑树概要二叉查找树实现了基本操作时间复杂度O(h),但是树的高度h在最坏的情况下可能变为n红黑树是一种平衡二叉树,可以保证树的高度 h = lg(N)红黑树的性质红黑树为每个节点添加了颜色存储位,确保了任何一个从根到叶子的路径长度不会比其他路径长出2倍每个节点是红色或者黑色根节点是黑色的叶子节点是黑色的红色节点的子节点都是黑色的当前节点到其后代叶子节点的所有简单路径路的黑色节点数目

2016-06-08 16:57:11 506

原创 Java 类初始化顺序

初始化时机初始化分为类变量的初始化与对象的初始化两个相对独立的过程类变量的初始化在程序中第一次用到该类时 类变量的初始化过程:首先将静态变量定义时的初始化语句放到静态初始化块的开始部分,然后从该类的原始祖先开始依次向下执行每个类的静态初始化块对象的初始化发生在创建对象时 对象的初始化过程会先将类的定义成员变量时的初始化语句及非静态初始化块都放到构造函数的开始部分,然后从该类的原始祖先开始依次

2016-06-07 16:24:50 498

原创 Java实现二叉查找树

二叉查找树基本性质:对任何节点x,其左子树的任意key不大于x.key,其右子树的任意节点不小于x.key实现集合操作 search,minimum,maximum,predecessor,successor,insert,delete以上操作的最坏运行时间与树的高度成正比,平均时间复杂度O(h),其中h为树的高度树的中序遍历是有序序列可以用其实现有序字典,优先队列,实现时间复杂度O

2016-06-06 17:23:09 687

原创 Java HashSet源码解析

本解析源码来自JDK1.7,HashSet是基于HashMap实现的,方法实现大都直接调用HashMap的方法 实现了Set接口,实际是靠HashMap实现的不保证遍历时的顺序,不保证集合顺序的不变性HashSet允许出现null值假定Hash算法能很好的分散元素,查询的时间复杂度为O(1)遍历的时间复杂度由set的size和其依靠的HashMap的

2016-06-01 11:19:38 3283

空空如也

空空如也

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

TA关注的人

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