上一页 1 2 3 4 5 6 ··· 8 下一页
摘要: 一.类图 二.意图 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 三.适用性 a)当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。 b)当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。 四.实现方式 1.懒汉模式package explore.singleton;//懒汉模式//直到第一次调用的时候再初始化public class Singleton1 { private static Singleton1 instance = null; private Singleton1() { } ... 阅读全文
posted @ 2012-03-19 16:54 focusJ 阅读(192) 评论(0) 推荐(0)
摘要: 一.类图 二.意图 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 三.适用性 a)当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 b)当构造过程必须允许被构造的对象有不同的表示时。 四.实例 首先声明我是一个技术男,所以我在学校做过不少项目。有自己独立完成的,也有和别人合作完成的大项目。一天我们Java小分队接了一个大项目,经过一番讨论之后技术选型是这样的:SSH+MySQL。但是团队中之后组长精通Spring。无奈只有等组长封装好底层接口后我们再进行各自模块的开发,然后把各模块交给组长,组长各模块的集成。package e... 阅读全文
posted @ 2012-03-19 16:53 focusJ 阅读(201) 评论(0) 推荐(0)
摘要: 一.类图 二.意图 动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。 三.适用性 a)在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。 b)处理那些可以撤销的职责。 c)当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,似的子类数量呈爆炸性增长。另一种情况是因为类定义被隐藏,或类定义不能适用于子类。 四.实例 大学阶段90%的学生考试都有作弊的情况(我属于10%中的学生),对于90%的学生来说作弊已经是考试必不可少的一部分。所以用这个例子我们来说明一下Dec... 阅读全文
posted @ 2012-03-18 15:51 focusJ 阅读(683) 评论(0) 推荐(0)
摘要: 写在开头:工厂模式是我们开发中最常用的模式,工厂模式又有三个不同的版本:简单工厂,工厂方法,抽象工厂,下面依次讲解。 一.类图 1.简单工厂 2.工厂方法 3.抽象工厂 二.意图 1.简单工厂 定义了一个用于创建对象的工具类,这个类包含特定的逻辑判断,可以决定什么时候创建一个产品。 2.工厂方法 定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。 3.抽象工厂 供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 三.适用性 1.简单工厂 a)免除客户端创建类的责任,仅仅用于使用产品。 2.... 阅读全文
posted @ 2012-03-18 13:01 focusJ 阅读(573) 评论(0) 推荐(0)
摘要: 一.运行时栈帧结构1.栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈的元素。栈帧存储了方法的局部变量,操作数栈,动态链接,方法返回地址等信息。2.对于执行引擎来讲,活动的线程,只有栈顶的栈帧是有效的,称为当前栈帧,这个栈帧所关联的方法称为当前方法。局部变量表1.局部变量表是一组变量值存储空间,用于存放方法参数和方法内部定义的局部变量。在java程序被编译为Class文件时,在方法的Code属性的max_locals数据项中确定该方法所需要分配的最大局部变量表的容量。2.局部变量表的容量以变量槽:Slot为最小单位,这些Slot是可重用的。3.旁门索道P 阅读全文
posted @ 2012-03-05 12:30 focusJ 阅读(2076) 评论(3) 推荐(3)
摘要: 前面发了几篇学习笔记,但是看这些东西总是感觉很"玄乎",来一篇实战的东西来揭一下"JVM"的面纱,让"SSH"时代的童鞋们来熟悉一下Java的"老祖爷"JVM。由于自己的水平有限,所以大家在看过程中发了什么问题,或者您有什么疑问请及时提出来,我及时解决。如果您有什么建议,那么更好大家一块讨论。 1. 源码文件public class LearningClassFile { //普通变量 private int id1; //静态变量 private static int id2; //常量 private fina 阅读全文
posted @ 2012-03-05 08:15 focusJ 阅读(3232) 评论(1) 推荐(4)
摘要: 一.Class文件结构1.Class文件是一组以8位字节为基础的二进制流,采用一种类似C语言结构体的伪代码类存储。它只有两种数据类型:无符号数和表。2.无符号数属于基本的数据类型,以u1,u2,u4,u8分表代表1个,2个,4个,8个字节。他可以用来描述数字,索引引用,数量值,UTF-8编码的字符串。3.表有多个无符号数或其他表作为数据项构成的符合数据类型,所有的表都已_info结尾。4.Class文件格式类型名称数量U4Magic(魔数)1U2Minor_version(次版本号)1U2Major_version(主版本号)1U2Constant_pool_length1Cp_infoCon 阅读全文
posted @ 2012-03-01 11:02 focusJ 阅读(1774) 评论(0) 推荐(2)
摘要: 一.概述1.定义:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型。类加载和连接的过程都是在运行期间完成的。二.类加载的时机1.类加载的生命周期:加载(Loading)-->验证(Verification)-->准备(Preparation)-->解析(Resolution)-->初始化(Initialization)-->使用(Using)-->卸载(Unloading)2.加载:这有虚拟机自行决定。3.初始化阶段:a)遇到new、getstatic、putstatic、invo 阅读全文
posted @ 2012-03-01 07:48 focusJ 阅读(1914) 评论(5) 推荐(2)
摘要: 一.Java的运行时数据区域 (1)程序计数器(线程私有):是一块较小的内存空间,它的作用是当前线程所执行字节码的行号指示器。字节码解释器就是通过计数器的值来获得下一条需要执行的指令。如果线程执行的是java方法,这个计数器记录的是正在执行的虚拟机字节码指令地址,如果执行的是native方法,这个区域为空。Java中的多线程为了能够获得正确的执行位置,每一个线程都需要一个独立的程序计数器,这块内存称为"线程私有内存"。这也是唯一一个java虚拟机规范没有规定任何OutOfmemroyError的区域。 (2)虚拟机栈(线程私有):它与线程的生命周期相同。虚拟机栈描述的是ja 阅读全文
posted @ 2012-02-29 21:19 focusJ 阅读(2384) 评论(1) 推荐(6)
摘要: public class ClhSpinLock { private final ThreadLocal<Node> pred; private final ThreadLocal<Node> node; private final AtomicReference<Node> tail = new AtomicReference<Node>(new Node()); public ClhSpinLock() { this.node = new ThreadLocal<Node>() { protected Node initialVa 阅读全文
posted @ 2012-02-21 09:03 focusJ 阅读(1421) 评论(3) 推荐(0)
上一页 1 2 3 4 5 6 ··· 8 下一页