IT职涯

一个多年的IT人的博客
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  Java

摘要:今天和老公微信聊天,又说起创业的想法来,老公是.NET技术出身,我是Java出身,技术我们都不缺。 从几年前,我在cec1on1学英语时就产生一个想法,中国随着国力的日渐强大,有越来越多的老外也有学习汉语的需求,我们做个教老外汉语的网站,直接让我们中国人在上面申请当讲师来教老外汉语,似乎也是不错,那 阅读全文

posted @ 2016-01-14 00:43 IT职涯 编辑

摘要:Google 矩阵和Page Rank的简单介绍 Page Rank是Google排名算法法则的一部分,是Google用于标识网页的等级/重要性的一种方法,是Google用来衡量一个网站好坏的标准。在揉合了诸如Title标识和Keywords标识等所有其它因素之后,Google通过PageRank来调整结果,使那些更具“等级/重要性”的网页在搜索结果中的排名获得提升,从而提高搜索结果的相关性和质量。其级别从0到10级,10级为满分。PR值越高说明该网页越重要。 Google的PageRank根据网站的外部链接和内部链接的数量和质量来衡量网站的价值。 [以上引自:百度百科,详细见http:/.. 阅读全文

posted @ 2013-06-08 15:45 IT职涯 阅读(3123) 评论(0) 推荐(1) 编辑

摘要:它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于当大量物件只是重复因而导致无法令人接受的使用大量内存。通常物件中的部分状态是可以分享。常见做法是把他们放在外部数据结构,当需要使用时再将它们传递给享元。原理:享元对象能做到共享的关键是区分内蕴状态(Internal State)和外蕴状态(External State).一个内蕴状态是存储在享元对象内部的,并且不会随环境改变而有所不同.因此,一个享元可以具有内蕴状态并可以共享.一个外蕴状态是随环境改变而改变的,不可以共享状态.享元对象的外蕴状态必须由客户端保存,并在享元对象被创建之后,在需要使用的时候再传到享元 阅读全文

posted @ 2012-12-20 11:02 IT职涯 阅读(1196) 评论(0) 推荐(0) 编辑

摘要:桥模式就是把抽象部分和它的实现部分分离开来,让两者可独立变化。这里的抽象部分指的是一个概念层次上的东西,它的实现部分指的是实现这个东西的(功能)部分,分离就把实现部分从它要实现的抽象部分独立出来,自我封装成对象。类图:组成:抽象化(Abstraction)角色:抽象化给出的定义,并保存一个对实现化对象的引用。修正抽象化(Refined Abstraction)角色:扩展抽象化角色,改变和修正父类对抽象化的定义。实现化(Implementor)角色:这个角色给出实现化角色的接口,但不给出具体的实现。必须指出的是,这个接口不一定和抽象化角色的接口定义相同,实际上,这两个接口可以非常不一样。具体实现 阅读全文

posted @ 2012-12-18 11:29 IT职涯 阅读(1230) 评论(0) 推荐(0) 编辑

摘要:将一类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作那些类可以一起工作。适用情况:使用的前提是:接口中规定了所有要实现的方法; 但一个要实现此接口的具体类,只用到了其中的几个方法,而其它的方法都是没有用的。实现方法:用一个抽象类实现已有的接口,并实现接口中所规定的所有方法,这些方法的实现可以都是空方法;原本要实现接口的子类,只实现上面的抽象类即可,并在其内部实现时,只对其感兴趣的方法进行实现;类图:角色:目标接口(Target): 客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。需要适配的类(Adaptee): 需要适配的类或适配者类。适 阅读全文

posted @ 2012-12-17 15:14 IT职涯 阅读(1603) 评论(0) 推荐(0) 编辑

摘要:装饰模式是在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。装饰模式的特点:1) 装饰对象和真实对象有相同的接口,这样客户端对象就可以和真实对象相同的方式和装饰对象交互。2)装饰对象包含一个真实对象的引用。3)装饰对象接受所有来自客户端的请求,它把这些请求转发给真实的对象。4)装饰对象可以在转发这些请求以前或以后增加一些附加功能。这样就确保了在运行时,不用修改给定对象的结构就可以在外部增加附加的功能。在面向对象的设计中,通常是通过继承来实现对给定类的功能扩展。类图:实例:public abstract class Drink{ 阅读全文

posted @ 2012-12-17 14:06 IT职涯 阅读(1075) 评论(0) 推荐(0) 编辑

摘要:为另一个对象提供一个替身或占位符以控制对这个对象的访问,简而言之就是用一个对象来代表另一个对象。类图:简单例子:有个接口Italk,people对象实现这个接口的talk()方法,有些想另外加入sing()方法,所以增加代理类talkProxy,实现两个方法.public interface ITalk{ public void talk(String msg);}public class People implements ITalk{ @Override public void talk(final String msg) { System.out.println(msg); }}pub. 阅读全文

posted @ 2012-12-14 19:00 IT职涯 阅读(4873) 评论(0) 推荐(0) 编辑

摘要:外观模式也许是我们每天都用到的,下面就稍微解释一下吧。外观模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用。他是为子系统中的一组接口所提供的一个一致的界面。它与Adapter和Proxy有类似之处,但是Proxy注重在为Client-Subject提供一个访问的中间层,Adapter注重对接口的转换与调整,而Facade所面对的往往是多个类或其他程序单元,通过重新组合各类及程序单元,对外提供统一的接口/界面。在遇到以下情况使用Facade模式:1. 当你要为一个复杂子系统提供一个简单接口时。2. 客户程序与抽象类的实现部分之间存在着很大的依赖 阅读全文

posted @ 2012-12-13 14:04 IT职涯 阅读(1158) 评论(0) 推荐(0) 编辑

摘要:组合模式又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解藕.组合模式可以优化处理递归或分级数据结构.有许多关于分级数据结构的例子,使得组合模式非常有用武之地.类图:组成部分:Component: 为参加组合的对象声明一个公共接口, 不管是组合还是叶结点.Leaf: 在组合中表示叶子结点对象,叶子结点没有子结点.Composite: 表示参加组合的有子对象的对象, 并给出树枝购件的行为.实例:public abstract class FolderComponent{ privat 阅读全文

posted @ 2012-12-13 11:57 IT职涯 阅读(3235) 评论(0) 推荐(0) 编辑

摘要:备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,属于行为模式。它是在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。类图:组成部分:发起人(Originator): 负责创建一个备忘录Memento,用以记录当前时刻自身的内部状态,并可使用备忘录恢复内部状态。发起人可以根据需要觉得备忘录存储自己的哪些内部状态。备忘录(Memento): 负责存储发起人对象的内部状态,并可以防止发起人以外的其他对象访问备忘录。备忘录有两个接口:管理者只能看到备忘录的窄接口,他只能将备忘录传递给其他对象。发起人却可以看 阅读全文

posted @ 2012-12-12 16:04 IT职涯 阅读(2181) 评论(0) 推荐(0) 编辑

摘要:解释器模式定义语言的文法,并且建立一个解释器来解释该语言中的句子。它属于类的行为模式。这里的语言意思是使用规定格式和语法的代码。应用环境:如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。而且当文法简单、效率不是关键问题的时候效果最好。类图:抽象表达式角色(AbstractExpression): 声明一个抽象的解释操作,这个接口为所有具体表达式角色都要实现的.终结符表达式角色(TerminalExpression): 实现与文法中的元素相关联的解释操作,通常一个解释器模式中只有一 阅读全文

posted @ 2012-12-12 12:49 IT职涯 阅读(6060) 评论(0) 推荐(0) 编辑

摘要:访问者模式表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。从定义可以看出结构对象是使用访问者模式的必备条件,而且这个结构对象必须存在遍历自身各个对象的方法,类似于Java中的Collection。访问者模式的目的是要把处理从数据结构中分离出来,如果系统有比较稳定的数据结构,又有易于变化的算法的话,使用访问者模式是个不错的选择,因为访问者模式使的算法操作的增加变得容易。相反,如果系统的数据结构不稳定,易于变化,则此系统就不适合使用访问者模式了。类图:访问者模式结构:访问者角色(Visitor): 为该对象结构中具体元素角色声明一个访问操作接 阅读全文

posted @ 2012-12-11 17:54 IT职涯 阅读(11326) 评论(2) 推荐(0) 编辑

摘要:中介者模式是行为模式之一。定义一个中介对象来封装系列对象之间的交互。中介者使各个对象不需要显示地相互引用,从而使其耦合性松散,而且可以独立地改变他们之间的交互。类图:实例:生产者、消费者、代理商public abstract class PersonColleague{ protected Mediator mediator; public Mediator getMediator() { return mediator; } public void setMediator(final Mediator mediator) { this.mediator = mediator; } pro.. 阅读全文

posted @ 2012-12-06 16:29 IT职涯 阅读(1958) 评论(0) 推荐(0) 编辑

摘要:职责链模式是一种对象的行为模式。在职责链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。类图:职责链模式的组成:抽象处理者(Handler)角色:定义出一个处理请求的接口。如果需要,接口可以定义出一个方法,以设定和返回对下家的引用。这个角色通常由一个抽象类或接口实现。具体处理者(ConcreteHandle)角色:具体处理者接到请求后,可以选择将请求处理掉,或者将请求传给下家。由于具体处理者持有对下 阅读全文

posted @ 2012-12-05 17:44 IT职涯 阅读(1513) 评论(0) 推荐(0) 编辑

摘要:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们还可以相互替换。策略模式让算法独立于是用它的客户而独立变化。应用场景:多个类只区别在表现行为不同,可以使用strategy模式,在运行时动态选择具体要执行的行为。需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其他方式来实现。对客户隐藏具体策略(算法)的实现细节,彼此完全独立。在网上看到一个鸭子为例的策略模式的文章,说明的是定义了一个鸭子的基类(其中有游泳,叫声和游戏方法),然后有野鸭、红头鸭及橡皮鸭继承这个基类,新的需求是设置鸭子会飞,但是橡皮鸭是不能飞的。解决方案一:基类中加入fly方法,子类都重写,但是这样使得不 阅读全文

posted @ 2012-12-05 14:23 IT职涯 阅读(1014) 评论(0) 推荐(0) 编辑

摘要:状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了他的类。适用场景:一个对象的行为取决于他的状态,并且它必须在运行时根据状态改变它的行为;一个操作中含有庞大的多分支结构,并且这些分支决定于对象的状态。类图:模式的组成:环境类Context: 定义客户感兴趣的接口。维护一个ConcreteState子类的实例,这个实例定义当前状态;抽象状态类State: 定义一个接口以封装与Context的一个特定状态相关的行为;具体状态类ConcreteState: 每一子类实现一个与Context的一个状态相关的行为;实例:push显示红-〉黄-〉绿,pull显示绿-〉黄-〉红public 阅读全文

posted @ 2012-12-04 16:31 IT职涯 阅读(14276) 评论(0) 推荐(0) 编辑

摘要:命令模式将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。命令模式的本质是对命令进行封装,将发出命令的责任和执行命令的责任分割开,实现二者之间的松耦合。类图:模式结构:Command: 定义命令的接口,声明执行的方法。ConcreteCommand: 命令接口实现对象,通常会持有接受者,并调用接受者的功能来完成命令要执行的操作。Receiver: 接收者,真正执行命令的对象。任何类都可能成为一个接收者,只要它能够实现命令要求的相应功能。Invoker: 要求命令对象执行请求,通常会持有命令对象,可以持有很多的命令对象。这个是客户端 阅读全文

posted @ 2012-12-04 14:30 IT职涯 阅读(3900) 评论(0) 推荐(0) 编辑

摘要:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤.如果你只想掌握一种设计模式,那么它就是模板方法.类图:抽象模板AbstractClass的方法分为两类:基本方法: 也叫做基本操作,由子类实现的方法,并且在模板方法被调用.模板方法: 可以有一个或几个, 一般是具体方法, 也就是骨架, 实现对基本方法的调度,完成固定的逻辑.为了防止恶意操作,一般模板方法会加上final关键字,不允许被覆写。实例://抽象模板public abstract class AbstractClass{ protected abstract v 阅读全文

posted @ 2012-12-04 12:08 IT职涯 阅读(3796) 评论(0) 推荐(0) 编辑

摘要:观察者模式定义了对象间的一种一对多依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。它将观察者和被观察者的对象分离开。提高了应用程序的可维护性和重用性。实现观察者模式有很多形式,一种是“注册---通知---撤销注册”的形式。观察者Observer:所有潜在的观察者必须实现观察者接口,这个接口只有update方法,当主题改变时,它被调用。具体观察者ConcreteObserver: 具体观察者可以是任何实现了Observer接口的类。观察者必须注册具体主题,一边接收更新。可观察者Subject: 主题接口,即可观察者Observable,对象使用此接口注册为观察者 阅读全文

posted @ 2012-12-03 18:29 IT职涯 阅读(24913) 评论(0) 推荐(0) 编辑

摘要:迭代器模式有叫做游标(Cursor)模式。GOF给出的定义:提供一种方法访问一个容器(container)对象中的各个元素,而又不暴露该对象的内部细节。迭代器模式由以下角色组成:迭代器角色(Iterator): 负责定义访问和遍历元素的接口。具体迭代器角色(Concrete Iterator):实现迭代器接口,并要记录遍历中的当前位置。容器角色(Container): 负责提供创建具体迭代器角色的接口。具体容器角色(Concrete Container):实现创建具体迭代器角色的接口, 这个具体迭代器角色与该容器的结构相关。类图:实例:public interface Iterator{ pu 阅读全文

posted @ 2012-12-03 14:10 IT职涯 阅读(9094) 评论(2) 推荐(0) 编辑