`
fly_yr
  • 浏览: 23351 次
  • 性别: Icon_minigender_2
  • 来自: 青岛
社区版块
存档分类
最新评论
文章列表
一、 复习点的确定(根据艾宾浩斯记忆曲线制定):1. 第一个记忆周期:5分钟2. 第二个记忆周期:30分钟3. 第三个记忆周期:12小时4. 第四个记忆周期:1天5. 第五个记忆周期:2天6. 第六个记忆周期:4天7. 第七个记忆 ...
适配器模式(Adepter),将一个类的接口转换成客户希望的另外一个接口。Adepter模式使得原本由于模式不兼容而不能一起工作的那些类,可以一起工作。 在软件开发中,当系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器模式,目的是使控制范围之外的一个原有对象与某个接口匹配,适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境不一致的情况,比如要在需要对早起代码复用,一些功能等应用上很有实用价值。 适配器模式UML类图: 分析: Target是客户所期待的接口,目标可以是具体的或抽象的类也可以是接口;Adeptee是需要适配的类;Adepte ...
状态模式(State),当一个对象的内在状态改变时,允许改变其行为,这个对象看起来好像改变了其类。状态模式主要解决的是当控制一个对象的状态转换条件表达式过于复杂时的情况。把状态的判断逻辑转移到不同状态的一系列类中,可以把复杂的判断逻辑简化。 状态模式UML类图: 分析:由上图可知(1)State类,抽象状态类,定义一个接口以封装与Context的一个特定状态相关的行为;(2)ConcreteState类,具体状态,每一个子类实现一个与Context的一个特定状态相关的行为;(3)Context类,维护一个ConcreteState子类的实例,这个实例定义当前的状态 状态模式 ...
观察者模式(Observer):定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。 UML类图: 分析: Observer类,抽象观察者,为所有的具体观察者定义一个接口,在得到主题的通知时,更新自己这个接口叫做更新接口。抽象观察者一般用一个抽象类或者一个接口实现。更新接口通常包含一个Update方法,这个方法叫做更新方法。 Subject类,可翻译为主题或者抽象通知者,一般用一个抽象类或者一个接口实现。它把所有对观察者对象的引用,保存在一个聚集里,每个主题都可以 ...
外观模式(Facade),为子系统中的一组接口提供一个一直的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 外观模式UML类图: 如上图所示为外观模式结构图,其中Facade类即外观类,它需要了解所有的子系统的方法或属性,进行组合以备外界调用,它知道哪些子系统类负责处理请求,将客户的请求代理给适当的子系统对象。SubSystem classes为子系统类集合,实现子系统功能,处理Facade对象指派的任务,注意各子类中没有Facade的任何信息,即没有对Facade对象的引用。 外观模式实现代码: using System; us ...
建造者模式(Builder),将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。 如果需要将一个复杂对象的构建和他的表示分离,使得同样的构建过程可以创建不同的表示,此时适合使用建造者模式,使用了建造者模式,用户只需要指定建造的类型就可以得到他们,而具体建造的过程和细节就不需要知道了。 建造者模式UML类图: 如上图所示,product是具体的产品类,Builder是为如何创建一个Product对象的各个部件指定的抽象接口。ConcreteBuilder是具体建造者,实现Builder接口,构造和装配各个部件。而Director是指挥者 ...
一安装jdk的详细步骤: 第一步 第二步: 稍出现下图等 第三步 第四步360会出现拦截,直接按下图操作 第五步 完成会自动弹出 Orcale 公司的页面。直接关了就行了。 二然后配置java环境: (稍后用到的数据) JAVA_HOMED:\Java\jdk1.6.0_24(安装jdk的第二步自己的改的地址) CLASSPATH.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar PATH%JAVA_HOME%\bin 以防出错可以直接复制以上数据。
Ctrl+1 快速修复(最经典的快捷键,就不用多说了) Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加) Ctrl+Alt+↑ 复制当前行到上一行(复制增加) Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了) Alt+↑ 当前行和上面一行交互位置(同上) Alt+← 前一个编辑的页面 Alt+→ 下一个编辑的页面(当然是针对上面那条来说了) Alt+Enter 显示当前选择资源(工程,or 文件 or文件)的属性 Shift+Enter 在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后) Shi ...
模板方法模式(TemplateMethod):定义一个操作中的算法的骨架,而将一些步骤延迟到子类。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 UML类图: TemplateClass是抽象类,其实也就是一个抽象 ...
快速排序(QuickSort)也是一种排序算法,对包含n个数组的输入数组,最坏情况运行时间为O(n^2)。虽然这个最坏情况运行时间比较差,但是快速排序通常是用于排序的最佳实用选择,这是因为其平均性能相当好,期望的运行时间为O(nlgn),且O(nlgn)中隐含的常数因子很小,另外它还能够进行就地排序在虚拟环境中也能很好的工作。 一、快速排序原理 快速排序也和合并排序一样,基于分治法,分为分解、解决、合并三个步骤; 分解:数组array[low...high]被分为两个(可能空)子数组array[low...temp-1]和array[temp+1...high],使得ar ...
本文主要介绍堆排序算法(HeapSort),堆排序像合并排序而不像插入排序,堆排序的运行时间为O(nlgn);像插入排序而不像合并排序,它是一种原地(in place)排序算法。在任何时候,数组中只有常数个元素存储在输入数组以外,这样,堆排序就把插入排序和合并排序的优点结合起来。 堆排序还引入了另外一种算法设计技术,利用某种数据结构(在此算法中为“堆”)来管理算法执行中的信息。堆数据结构不只在堆排序算法中有用,还可以构成一个有效的优先队列。堆数据结构是一种数组对象,它可以被视为一颗完全二叉树,树种每个结点与数组中存放该结点值的那个元素对应。树的每一层都是填满的,最后一层除外(最后一层从 ...
合并排序(MergeSort)是一种采用分治法策略对一组无序数据进行排序的算法。 分治法:将原问题划分为n个规模较小而结构与原问题相似的子问题;递归的解决这些子问题,然后合并子问题的结果,就得到原问题的解。分治法在每一层递归上有3个步骤:分解、解决、合并。 分解(Divide):将原问题分解为一系列子问题。 解决(Conquer):递归的解各个子问题,若子问题足够小,则直接求解。 合并(Combine):将子问题的解合并成原问题的解。 一、合并排序原理 合并排序(MergeSort)算法完全依照了上述模式,直观的操作如下: 分解:将n个元素 ...
原型模式(ProtoType):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。字面理解其意思就是从一个对象创建另外一个可定制的对象,而无需知道任何创建的细节,并能提高创建的性能,说白了就是copy技术,把一个对象完整的copy出一份。 原型模式UML类图: 实现克隆方法时,调用了.NET中封装的方法MemberwiseClone()方法,该方法创建一个浅表副本,方法是创建一个新对象,然后将当前对象的非静态字段复制到该新对象。如果字段是值类型的,则对该字段执行逐位复制。如果字段是引用类型,则复制引用但不复制引用的对象;因此,原始对象及其复本引用同一对象。 ...
工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。 工厂方法模式实现时,客户端需要决定实例化哪一个工厂,决定创建哪一个类的对象,也就是说,工厂方法模式把简单工厂的内部逻辑判断移到了客户端代码来进行,本来是要改工厂类的,而现在是修改客户端。总体来说,工厂方法模式修正了简单工厂中不遵循的开放-封闭原则。 工厂方法模式(Factory Method)的UML类图: 简单工厂模式的最大优点就在于工厂类中包含了必要的逻辑判断,根据客户的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。但是在 ...
代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。 一般来说分为4种:(1)远程代理,也就是为一个对象在不同的地址空间提供局部代表,这样就可以隐藏一个对象存在于不同地址空间的事实。(2)虚拟代理,是根据需要创建需求很大的对象,通过它来存放实例化需要很长时间的真实对象。这样就可以达到性能的最优化,比如说你打开一个很大的HTML网页时,里面可能有很多的文字和图片,但是你还是可以很快的打开它,此时你所看到的是所有的文字,但图片却是一张一张的下载后才能看到,那些未打开的图片框,就是通过虚拟代理来替代了真实图片,此时代理存储了真是图片的路径和尺寸。(3)安全代理,用来控制真是对象 ...
Global site tag (gtag.js) - Google Analytics