exists、in、inner join的区别和效率

in用于检查一个值是否包含在列表中。exists用于检查子查询返回行的存在性在子查询中,exists提供的性能通常比in提供的性能要好IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况in 和existsin是把外表和内表作hash 连接,而exists 是对外表作loop 循环
2023年06月09日 1,031次浏览

状态模式(二十五)

类的行为是基于它的状态改变的意图:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类菜鸟案例:我们将创建一个 State 接口和实现了 State 接口的实体状态类。Context 是一个带有某个状态的类。StatePatternDemo,我们的演示类使用 Context 和状态对
2023年06月09日 730次浏览

访问者模式(二十四)

我们使用了一个访问者类,它改变了元素类的执行算法元素的执行算法可以随着访问者改变而改变意图:主要将数据结构与数据操作分离。菜鸟案例:我们将创建一个定义接受操作的 ComputerPart 接口。Keyboard、Mouse、Monitor 和 Computer 是实现了 ComputerPart 接
2023年06月09日 601次浏览

模板模式(二十三)

一个抽象类公开定义了执行它的方法的方式/模板意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。感觉特别像父类把东西都写好了,你只需要加点东西就成跟自己的要求相同,并形成符合自己条件的类菜鸟案例:我们将创建一个定义操作的
2023年06月09日 596次浏览

策略模式(二十二)

一个类的行为或其算法可以在运行时更改意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换菜鸟案例:我们将创建一个定义活动的 Strategy 接口和实现了 Strategy 接口的实体策略类。Context 是一个使用了某种策略的类。StrategyPatternDemo,我们的演示
2023年06月09日 601次浏览

空对象模式(二十一)

一个空对象取代 NULL 对象实例的检查Null 对象不是检查空值,而是反应一个不做任何动作的关系菜鸟案例:我们将创建一个定义操作(在这里,是客户的名称)的 AbstractCustomer 抽象类,和扩展了 AbstractCustomer 类的实体类。工厂类 CustomerFactory 基于
2023年06月09日 585次浏览

代理模式(二十)

一个类代表另一个类的功能这里只讲代理模式,关于动态代理和静态代理请参考我另一个博客java中的代理菜鸟案例:我们将创建一个 Image 接口和实现了 Image 接口的实体类。ProxyImage 是一个代理类,减少 RealImage 对象加载的内存占用。ProxyPatternDemo,我们的演
2023年06月09日 579次浏览

观察者模式(十九)

当对象间存在一对多关系时,则使用观察者模式当一个对象被修改时,则会自动通知它的依赖对象菜鸟案例:观察者模式使用三个类 Subject、Observer 和 Client。Subject 对象带有绑定观察者到 Client 对象和从 Client 对象解绑观察者的方法。我们创建 Subject 类、O
2023年06月09日 572次浏览

备忘录模式(十八)

保存一个对象的某个状态,以便在适当的时候恢复对象意图:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。怎么这么感觉像MySQL怎么回溯到任意时间:每隔一段时间备份一次,回溯后日志文件也别忘了回溯到同步时间菜鸟案例:备忘录模式使用三个类 Memento、Originator
2023年06月09日 764次浏览

中介者模式(十七)

是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护怎么说呢,更像一个平台,像房屋中介,房东把房子放那,租房者去中介那看房子,关于租房者和房东之间的联系由中介来管理菜鸟案例:我们通过聊天室实例来演示中介者模式。实例中,多个用户可
2023年06月09日 551次浏览