04 2016 档案
摘要:什么是单元测试 我们在编写大型程序的时候,需要写成千上万个方法或函数,这些函数的功能可能很强大,但我们在程序中只用到该函数的一小部分功能,并且经过调试可以确定,这一小部分功能是正确的。但是,我们同时应该确保每一个函数都完全正确,因为如果我们今后如果对程序进行扩展,用到了某个函数的其他功能,而这个功能
        阅读全文
                
摘要:代理设计模式 定义:为其他对象提供一种代理以控制对这个对象的访问。 动态代理使用 java动态代理机制以巧妙的方式实现了代理模式的设计理念。 代理模式示例代码 public interface Subject { public void doSomething(); } public class R
        阅读全文
                
摘要:责任链模式 责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。To
        阅读全文
                
摘要:观察者模式 Observer的定义 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。 这个主题对象在状态上发生变化时,会通知所有观察者对象,让它们能够自动更新自己。 第一部分 这里有一个例子,是马士兵老师在讲解观察者模式的时候给出的例子,个人认为对理解观察者模式有很大的
        阅读全文
                
摘要:创建内部类的典型的方式是在一个方法体的里面创建,局部内部类不能有访问说明符,因为它不是外围类的一部分,但是它可以访问当前代码块内的常量,以及此外围类的所有成员。下面的例子对局部内部类与匿名内部类的创建进行了比较。 具体代码实现: 运行结果: 在代码中,Counter返回的是序列中的下一个值。我们分别
        阅读全文
                
摘要:因为内部类的构造器必须连接到指向其外围类对象的引用,所以在继承内部类的时候,情况会变得有些复杂。问题在于,那个指向外围类对象的“秘密的”引用必须被初始化,而在导出类中不在存在可连接的默认对象。要解决这个问题,必须使用特殊的语法来说清它们之间的关联。 可以看到,InheritInner只是继承自内部类
        阅读全文
                
摘要:二叉树的定义: 二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。 二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。下面介绍二叉
        阅读全文
                
摘要:一、希尔排序 希尔排序(缩小增量法) 属于插入类排序,由Shell提出,希尔排序对直接插入排序进行了简单的改进:它通过加大插入排序中元素之间的间隔,并在这些有间隔的元素中进行插入排序,从而使数据项大跨度地移动,当这些数据项排过一趟序之后,希尔排序算法减小数据项的间隔再进行排序,依次进行下去,进行这些
        阅读全文
                
摘要:启动第一步--加载BIOS当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了
        阅读全文
                
摘要:JDOM/XPATH编程指南 本文分别介绍了 JDOM 和 XPATH,以及结合两者进行 XML 编程带来的好处。 前言 JDOM/XPATH编程指南 JDOM/XPATH编程指南 本文分别介绍了 JDOM 和 XPATH,以及结合两者进行 XML 编程带来的好处。 前言 本文分别介绍了 JDOM 
        阅读全文
                
摘要:1.概念 为子系统中的一组接口提供一个统一接口。Facade模式定义了一个高层接口,这个接口使得这子系统更容易使用。 2.UML 3.代码 下面是一个具体案例的代码: 4.应用场景 1)为一个复杂子系统提供一个简单接口。 2)提高子系统的独立性。 3)在层次化结构中,可以使用Facade模式定义系统
        阅读全文
                
摘要:中介者模式(Mediator)的定义 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 中介者模式(Mediator)的适用性 1.一组对象以定义良好但是复杂的方式进行通信,产生的相互依赖关系结构混乱且难以理解。 2.一个
        阅读全文
                
摘要:命令模式(Command)的定义 将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化;对请求排队或记录日志,以及支持可撤销的操作,将”发出请求的对象”和”接收与执行这些请求的对象”分隔开来。 命令模式(Command)的适用性 1.抽象出待执行的动作以参数化某对象。 2.在不同的时刻指定、
        阅读全文
                
摘要:适配器模式的定义 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。(就类似于我们充电器的转接头将220V的电压转换成我们的手机端可以接收的电压3.5-4.2之间) 曾经有一个面试题:问I/O流中的InputStreamReade
        阅读全文
                
摘要:桥接模式(Bridge)的定义 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?这就要使用桥接模式 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 桥接模式(Bridge)的动机 当一种抽象类型可能有多种实现方式时,一般情况我们可以考虑使用
        阅读全文
                
摘要:状态模式(State)的定义 定义对象间的一种一对多的依赖关系,当一个对象的状态(对象内部的属性,可以理解成是对象的某个字段或者方法)发生改变时,所有依赖于它的对象都得到通知并被自动更新。允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类 状态模式(State)适用性 1.一个对
        阅读全文
                
摘要:在Java1.4及以前,子类方法如果要覆盖超类的某个方法,必须具有完全相同的方法签名,包括返回值也必须完全一样。Java5.0放宽了这一限制,只要子类方法与超类方法具有相同的方法签名,或者子类方法的返回值是超类方法的子类型,就可以覆盖。【注意】:"协变返回(covariant return)",仅在
        阅读全文
                
摘要:构造器调用的层次结构带来了一个有趣的两难问题。如果在构造器内部调用正在构造的对象的某个动态绑定方法,此时会出现难以察觉的错误。我们知道,动态绑定的调用是在运行时才决定的,对象无法知道到底调用的是哪个类的方法。当我们在构造器中调用动态绑定的方法,就会用到该方法被覆盖之后的定义。但是这种调用的效果难以预
        阅读全文
                
摘要:程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算
        阅读全文
                
摘要:单链表学习 学习第一步:定义存放链表结点的类Node,类中包含两个字段:data字段和next字段,data字段是结点中的数值域,next是指向链表下一个结点的引用 学习第二步:学习单链表的一些操作,插入、删除、查找结点 双端链表学习 可以看到我们上面的操作,在链表尾插入、删除结点的操作,虽然也可以
        阅读全文
                
摘要:碰到了好几次这种情况,明明占着U盘的空间,却看不到任何内容,典型的病毒。在网上找了一种方法,用的不错,顿时感叹网友的犀利步骤:(1)新建一个文本文档(2)打开此文档,在里面输入“attrib -s -h -r *.* /s /d”(不含引号,注意空格不可少!)保存退出(3)修改文件名为*.bat,也
        阅读全文
                
摘要:工厂模式将大量有共同接口的类实例化,工厂模式可以实现动态决定实例化哪一个类的对象,工厂模式在《Java与模式》中分为三类:1)简单工厂模式(Simple Factory):添加某一种类型的产品方便,不利于产生系列产品;2)工厂方法模式(Factory Method):又称为多形性工厂;3)抽象工厂模
        阅读全文
                
摘要:单例模式的定义 一个类有且仅有一个实例,并且自行实例化向整个系统提供。比如,多程序读取一个配置文件时,建议配置文件时,建议配置文件封装成对象。会方便操作其中的数据,又要保证多个程序读到的是同一个配置文件对象,就需要该配置文件对象在内存中是唯一的。 单例模式的作用 简单说来,单例模式(也叫单件模式)的
        阅读全文
                
摘要:迭代器模式定义 迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。 迭代器模式的角色构成 (1)迭代器角色(Iterator):定义遍历元素所需要的方法,一般来说会有这么三个方法:取得下一个元素的方法next(),判断是否遍历结束的方法hasN
        阅读全文
                
摘要:ArrayList实现可变数组的原理: 当元素超出数组内容,会产生一个新数组,将原来数组的数据复制到新数组中,再将新的元素添加到新数组中。 ArrayList:是按照原数组的50%来延长,构造一个初始容量为10的空列表 用ArrayList模拟数组: 用LinkedList模拟数组 Node结点的类
        阅读全文
                
摘要:策略模式的定义: 定义了算法族,分别封装起来,让它们之间可以互相替换 ,此模式让算法的变化独立于使用算法的客户 策略模式的意义: 策略模式使开发人员能够开发出由许多可替换的部分组成的软件,并且各个部分之间是低耦合的关系。 低耦合的特性使软件具有更强的可扩展性,易于维护;更重要的是,它大大提高了软件的
        阅读全文
                
摘要:设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖
        阅读全文
                
摘要:1 package data.struct.algorithm; 2 3 import java.io.BufferedReader; 4 import java.io.IOException; 5 import java.io.InputStreamReader; 6 7 class Stackfix2 { 8 private int maxSize...
        阅读全文
                
摘要:1 package data.struct.algorithm; 2 3 import java.io.BufferedReader; 4 import java.io.IOException; 5 import java.io.InputStreamReader; 6 7 //定义栈,用于存放转换过程中的操作符 8 class StackFix { 9 ...
        阅读全文
                
摘要:中缀表达式转后缀表达式的规则:1.遇到操作数:直接输出(添加到后缀表达式中)2.栈为空时,遇到运算符,直接入栈3.遇到左括号:将其入栈4.遇到右括号:执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,左括号不输出。5.遇到其他运算符:加减乘除:弹出所有优先级大于或者等于该运算符的栈顶元素,然后
        阅读全文
                
摘要:如果我们给每个元素都分配一个数字来标记其优先级,不妨设较小的数字具有较高的优先级,这样我们就可以在一个集合中访问优先级最高的元素并对其进行查找和删除操作了。这样,我们就引入了优先级队列 这种数据结构。 优先级队列(priority queue) 是0个或多个元素的集合,每个元素都有一个优先权,对优先
        阅读全文
                
摘要:一、包含队列元素nItem方式: 二、不包含队列元素nItem方式: 三、用链表来实现队列 存放结点: 定义的链表的操作: 链表模拟的队列 测试类
        阅读全文
                
摘要:1 package data.struct.algorithm; 2 3 class BubbleSortArray{//冒泡排序 4 private int[] arr;//封装的内容包括:数组和数组的长度 5 private int len; 6 public BubbleSortArray(int maxSize){ 7 arr=ne...
        阅读全文
                
摘要:将数组封装在类中: 类中的一些方法: 一、冒泡排序 1 public void method_Bubble(){//冒泡排序 2 for(int i=0;i<len-1;i++){ 3 for(int j=i+1;j<len;j++){ 4 if(arr[i]>arr[j]){ 5 swap(arr
        阅读全文
                
摘要:1 package data.struct.algorithm; 2 3 import java.util.Arrays; 4 5 public class ArraysDemo { 6 7 // private static final int UNSORTARRAYSIZE = 10; 8 9 /** 10 * @para...
        阅读全文
                
摘要:数据结构之数组的运用,无非是增删查操作,就有序数组和无序数组进行这三种操作: 一、查找 (1)无序数组查找特定元素,线性查找: (2)有序数组查找特定元素,可以采用线性查找或者是二分查找(BinarySearch),这里我们使用二分查找 数组为升序排列或降序排列,使用二分查找代码代码有些不同,坑爹呀
        阅读全文
                
                    
                
浙公网安备 33010602011771号