自定义博客皮肤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)
  • 资源 (6)
  • 收藏
  • 关注

原创 深入理解 hash 函数、HashMap、LinkedHashMap、TreeMap 【中】

我们之前讲过的 HashMap 的性能表现非常不错,因此使用的非常广泛。但是它有一个非常大的缺点,就是它内部的元素都是无序的。如果在遍历 map 的时候, 我们希望元素能够保持它被put进去时候的顺序,或者是元素被访问的先后顺序,就不得不使用 LinkedHashMap。 LinkdHashMap 继承了 HashMap,因此,它具备了 HashMap 的优良特性-高性能。在HashMap 的基础上, LinkedHashMap 又在内部维护了一个链表,用来存放元素的顺序。因此,我们可以将

2014-09-23 23:11:19 3490 1

原创 抽象方法不能是static或native或synchroniz 原因及误解

在网上看到过这么一篇文章,是关于抽象方法不能是static或native或synchroniz 的原因。其中提到了这些关键字的意义以及与 abstract 关键字的冲突,大体内容如下:

2014-09-20 14:02:25 9532

原创 追本溯源 回归本质--深入理解抽象类和接口

在 Java 语言中, abstract class 和 interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进 行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对 于问题领域本质的理解、对于设计意图的理解是否正确、合理。本文将

2014-09-20 12:59:46 1787

原创 原码,反码,补码详解及 Java中>>和>>>的区别

前两天分析 HashMap 的 hash 算法的时候,遇见了 >> 和 >>> 这两个符号,当时查了下资料,在脑子中过了一下。今天又碰到了,没想到竟然忘了 0-0........我这记忆力哎,不说了。只好做个笔记,提醒自己,遇到啥不会的最好记下来,好记性不如烂博客啊~

2014-09-20 00:16:03 10612 1

原创 深入理解 hash 函数、HashMap、LinkedHashMap、TreeMap 【上】

最主要的实现类有 Hashtable、HashMap、LinkedHashMap和 TreeMap。在 HashTable 的子类中,还有 Properties的实现。Properties 是专门读取配置文件的类,我们会在稍后介绍。这里首先值得关注的是 HashMap 和 HashTable 两套不同的实现,两者都实现了 Map 接口。从表面上看,并没有多大差别,但是在内部实现上却有些微小的细节。 首先,HashTable 的大部分方法都做了同步,而 HashMap 没有,因此, HashM

2014-09-18 02:04:42 5053 5

原创 Iterator 和 Iterable 区别和联系

用Iterator模式实现遍历集合 Iterator模式是用于遍历集合类的标准访问方法。它可以把访问逻辑从不同类型的集合类中抽象出来,从而避免向客户端暴露集合的内部结构。 例如,如果没有使用Iterator,遍历一个数组的方法是使用索引: for(int i=0; i而访问一个链表(LinkedList)又必须使用while循环: while((e=e.next())!=nul

2014-09-17 09:58:07 8664 1

原创 【Java程序优化】- 深度剖析 List 性能分析

List 是重要的数据结构之一。最常用的的便是: ArrayList、Vector 和 LinkedList 三种了

2014-09-15 23:44:48 4951 4

原创 求重复数算法思路

关于求重复数,我们先来看看两道常见的题1、有101个数,为[1,100]之间的数,其中一个数是重复的,如何寻找这个重复的数,其时间复杂度和空间复杂度是多少?2、1-N(N最大32000,且未知),内存只有4K,找出其中的重复数

2014-09-11 00:51:36 5018 4

原创 深入理解java虚拟机(十三) Java 即时编译器JIT机制以及编译优化

在部分的商用虚拟机中,Java 程序最初是通过解释器( Interpreter )进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁的时候,就会把这些代码认定为“热点代码”。为了提高热点代码的执行效率,在运行时,即时编译器(Just In Time Compiler )会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化。

2014-09-09 23:16:38 6653

原创 【设计优化】-使用缓存(Cache)提高程序性能

缓存(Cache)就是一块用来存放数据的内存空间。主要作用是暂存数据处理结果,并提供下次访问使用。 缓存的使用非常普遍,比如,浏览器都会在本地缓存页面,从而减少HTTP 的访问次数。又如服务器系统开发时,设计人员为一些核心的 API 加上缓存,从而提高系统的缓存时间。 最简单的缓存实现可以使用 HashMap 。当然,这样做会有很多问题,如何时清理无效的数据;如何防止缓存数据过多而导致内存溢出等。一个稍好的方案是使用 WeakHashMap,使用弱引用维护一张哈希表

2014-09-06 17:50:13 4931 1

原创 深入理解java虚拟机(十二) Java 语法糖背后的真相

语法糖(Syntactic Sugar),也叫糖衣语法,是英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语。指的是,在计算机语言中添加某种语法,这种语法能使程序员更方便的使用语言开发程序,同时增强程序代码的可读性,避免出错的机会;但是这种语法对语言的功能并没有影响。Java中的泛型,变长参数,自动拆箱/装箱,条件编译等都是,下面做简单的介绍和分析。

2014-09-05 23:40:25 3259

原创 【设计优化】-使用缓冲(Buffer)提高程序性能

缓冲区是一块特定的内存区域。开辟缓冲区的目的是通过缓解应用程序上下层之间的性能差异,提高系统性能。缓冲可以协调上层组件和下层组件的性能差异。当上层组件性能由于下层组件时,可以有效地减少上层组件对下层组件的等待时间。例如,在操作系统中,为了改善 CPU 与 I/O 设备速度不匹配的矛盾,设置了缓冲区,程序输出的数据先送到缓冲区暂存,然后由I/O 设备慢慢地处理。这时,CPU不必等待,可以继续执行程序。实现了CPU与I/O设备之间的并行工作。事实上,凡在数据的到达速率与其离去速率不同的地方,都可设置缓冲,以缓

2014-09-05 00:26:08 3903

原创 【设计优化】- 正确使用 Value Object 模式

为了解决这个问题,就可以使用 Value Object 模式。这种模式提倡将一个对象的各个属性进行封装,将封装后的对象在网络中传播,从而使系统拥有更好的交互模型,并且减少网络通信数据,从而提高系统性能。

2014-09-03 01:09:34 5387 1

原创 深入理解java虚拟机(十一) 方法调用-解析调用与分派调用

方法调用过程是指确定被调用方法的版本(即调用哪一个方法),并不包括方法执行过程。我们知道,Class 文件的编译过程中并不包括传统编译中的连接步骤,一切方法调用在 Class 文件调用里面存储的都只是符号引用,而不是方法在实际运行时的内存布局入口地址,也就是说符号引用解析成直接引用的过程。这个特性使得Java 具有强大的动态扩展能力,但也使得 Java方法调用过程变得复杂起来,需要在类加载器件,甚至是运行期间才确定目标方法的直接饮用。

2014-09-01 15:56:08 2895

hadoop-cor-1.0.4.jar

这是为了解决在window环境下使用myelipse远程连接虚拟机hadoop服务器出现的权限问题重新编译过后的jar包。

2014-03-16

Spring3.0_MVC_中文教程

Spring3.0_MVC_中文教程 介绍了整套框架的使用方法

2013-11-18

windowAPI函数大全

有关window API接口函数源代码,有大部分windowAPI的信息。

2013-03-11

空空如也

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

TA关注的人

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