- 浏览: 117607 次
- 性别:
- 来自: 合肥
-
文章列表
使用设计模式改善程序结构(三)
- 博客分类:
- 设计模式
使用设计模式改善程序结构(三)
设计模式在某种程度上确实能够改善我们的程序结构,使设计具有更好的弹性。也正是由于这个原因,会导致我们可能过度的使用它。程序结构具有过度的、不必要的灵活性和程序结 ...
使用设计模式改善程序结构(二)
- 博客分类:
- 设计模式
使用设计模式改善程序结构(二)
在本系列的 第一篇文章中,描述了如何通过设计模式来指导我们的程序重构过程,并且着重介绍了设计模式意图、动机的重要性。在本文中我们将继续上篇文章进行讨论,这次主要着重于设计模式的适用性,对于设计模式适用性的掌握有助于从另一个不同的方面来判断一个设计模式是否真正适用于我们的实际问题,从而做出明智的选择。
1、 回顾
使用设计模式改善程序结构(一)
- 博客分类:
- 设计模式
使用设计模式改善程序结构(一)
设计模式是对特定问题经过无数次经验总结后提出的能够解决它的优雅的方案。但是,如果想要真正使设计模式发挥最大作用,仅仅知道设计模式是什么,以及它是如何实现的是很不 ...
java解惑你知多少(六)
- 博客分类:
- Java
41. instanceof与转型
Java代码
System.out.println(null instanceof String);//false
System.out.println(new Object() instanceof String);//false
java解惑你知多少(七)
- 博客分类:
- Java
应用
47. 不可变的引用类型
Java代码
BigInteger total = BigInteger.ZERO;
total.add(new BigInteger("1"));
total.add(new BigInteger("10"));
java解惑你知多少(八)
- 博客分类:
- Java
56. 惰性初始化
Java代码
public class Lazy {
private static boolean initial = false;
ExtJs源码分析与学习—ExtJs源码结构
- 博客分类:
- ExtJs
博客分类: Extjs
ext
内容引自 lindar0209
一、源码的目录结构
以下是以官方最新版本ext-3.3.1列出源码目录结构
1、 adapter :适配器,主要是ExtJs 提供了4中适配器 ext、jquery、prototype、yui。通过这些适配器,可以使ExtJs的 ...
HashMap源码分析
- 博客分类:
- 源代码
HashMap用来存储key-value对,内部使用拉链法Hash表作为存储结构,key-value被封装成Entry<K, V>,Entry也是链表结点。
1. Hash表的内部结构如下:
Entry<K, V> table[];
Java代码
table[0]-->Entry(K,V)-->Entry(K,V)
table[1]-->Entry(K,V)
HashSet源码分析
- 博客分类:
- 源代码
HashSet是Set的一个实现,Set定义一个集合,集合的一个特征是不能包含重复的元素(可以包含null),HashSet底层使用HashMap作为存储结构来实现。
可知HashSet只用来存储对象,并不是key-value对,因为HashMap中的key必须是不同的,跟集合的定义相同,
所以HashSet只使用HashMap中的key来存储元素,而value字段使用同一个常量对象PRESENT就可以了。
private static final Object PRESENT = new Object();
private tra ...
Java GC 、引用
- 博客分类:
- Java
一个优秀的Java程 序员必须了解GC的工作原理、如何优化GC的性能、如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统、实时系统等,只有全面 提升内存的管理效率 ,才能提高整个应用程序的性能。本篇文章首先简单介绍GC的工作原理之后,然后再对GC的几个关键问题进行深入探讨,最后提出一些Java程序设计建议, 从GC角度提高Java程序的性能。 GC的基本原理 Java的内存管理实际上就是对象的管理,其中包括对象的分配和释放。 对于程序员来说,分配对象使用new关键字;释放对象时,只要将对象所有引用赋值为null,让程序不能够再访问到这个对象,我们称该对象 ...
1.参考文献
1).SSH实例:基于HibernateDaoSupport的泛型Dao
2).GenericDao设计模式
3).Generic Data Access Objects
open source project:
4).genericdao
5).
1、java标准异常概述
Throwable表示任何可以作为异常被抛出的类,有两个子类Error和Exception。从这两个类的源代码中可以看出,这两个类并没有添加新的方法,Throwable提供了所以方法的实现。Error表示编译时和系统错误。Exception是可以被抛出的异常类。RuntimeException继承自Exception(如NullPointerException),表示运行时异常,JVM会自动抛出.
2、自定义异常类
自定义异常类方法: 通过继承Throwable或Exception。异常类的所有实现都是基类Throwable实现的,所以构造自定义异常类完全可 ...
ArrayList类源码分析
- 博客分类:
- 源代码
ArrayList源码分析 ArrayList是以数组为基础实现的一个动态数组容器,通过以下的代码分析可知,一方面在ArrayList中添加或者删除元素(除了在数组容器末尾添加或者删除元素),是需要移动大量元素的借助System.arraycopy()来实现拷贝移动,另一方面,由于数组实现基础,可依靠数组下标,可以实现随机访问,当然查找具体的元素,还是需要循环去查找的,再者ArrayList不是thread-safe的,在代码中无论是add,remove,get,都没有任何同步措施,在多线程环境下需要自己确保thread-safe。由此可知ArrayList适用于在任意位置添加,删除元 ...
LinkedList源代码分析
- 博客分类:
- 源代码
LinkedList是动态数组的另一种实现,底层以双向循环链表为实现基础,它的优势在于可以快速的删除和添加元素,不需要像ArrayList那样移动大量的元素,但对于查找元素需要逐个遍历链表中的元素,进行匹配。所以LinkedList适用于频繁删除和添加元素,较少查找元素的应用场景。
LinkedList内部使用Entry<E>来封装双向循环链表结点.LinkedList头结点的定义:
private transient Entry<E> header = new Entry<E>(null, null, null); ...
Java多线程-volatile的原理与技巧
- 博客分类:
- 多线程
volatile, 用更低的代价替代同步为什么使用volatile比同步代价更低?同步的代价, 主要由其覆盖范围决定, 如果可以降低同步的覆盖范围, 则可以大幅提升程序性能. 而volatile的覆盖范围仅仅变量级别的. 因此它的同步代价很低.volatile原理是什么?volatile的语义, 其实是告诉处理器, 不要将我放入工作内存, 请直接在主存操作我.(工作内存详见java内存模型)因此, 当多核或多线程在访问该变量时, 都将直接操作