netty-example 最简单的demo 服务端启动服务端启动 DEMO 代码public final class DiscardClient { static final boolean SSL = System.getProperty("ssl") != null; static final int PORT = Integer.parseInt(System.getPrope
事件驱动定义一种驱动架构,解耦事件的产生与消费。可以参考 发布/订阅模型核心I/O 操作抽象成事件,每个事件对应 回调函数 来处理。通过事件分发,这些事件都可以一一被检测,并调用对应的回调函数加以处理。主 - 从 reactor+worker threads 模式定义主反应堆线程只负责分发 Acceptor 连接建立,已连接套接字上的 I/O 事件交给 从-reactor 负责分发。将C
区别TCP 中连接是谁发起的,在 UDP 中报文是谁发送的。TCP 在 IP 报文的基础上,增加了诸如重传、确认、有序传输、拥塞控制等能力,通信的双方是在一个确定的上下文中工作的。UDP 它是一个不可靠的通信协议,没有重传和确认,没有有序控制,也没有拥塞控制,不保证有效传递以及报文有序。TCP 的发送和接收每次都是在同一个确定的上下文中UDP 的每次接收或发送都是一个独立的上下文套接字( s
定义观察者模式又被叫做发布订阅模式,在对象之间定义一个一对多的依赖,当一个对象状态改变的时候,所有依赖的对象都会自动收到通知。解决问题将观察者和被观察者代码解耦。应用场景当一个对象状态的改变需要改变其他对象, 或实际对象是事先未知的或动态变化的时, 可使用观察者模式。 当应用中的一些对象必须观察其他对象时, 可使用该模式。 但仅能在有限时间内
适配器模式定义用作适配,将不兼容的接口转换成可兼容的接口。适配器模式可以看作一种“补偿模式”,用来补救设计上的缺陷。应用这种模式算是“无奈之举”。如果在设计初期,我们就能协调规避接口不兼容的问题适配器模式有三个重要角色:目标角色(Target),目标接口源角色(Adaptee),需要被转换的源接口适配器角色(Adapter),核心是实现Target接口, 组合Adaptee接口实现方式1、类
理念:用组合去替代继承桥接模式定义将抽象和实现解耦,让它们可以独立变化。不要把逻辑写死,通过抽象和接口去组合,更加容易拓展和灵活举个栗子原本例如下图,写死逻辑,具体到代码里面就是很多判断和大段代码,很丑应用桥梁模式后例如下图:抽象出父类甲和乙,通过组合的形式,组合甲乙的继承和实现类,使用的时候,具体继承类通过构造方法的形式注入乙的实现类,通过统一的抽象父类的方法去使用。装饰器模式定义通过继承相同
原理与实现在不改变原始类(或叫被代理类)的情况下,通过引入代理类来给原始类附加功能。一般情况下,我们让代理类和原始类实现同样的接口。但是,如果原始类并没有定义接口,并且原始类代码并不是我们开发维护的。在这种情况下,我们可以通过让代理类继承原始类的方法来实现代理模式。动态代理 静态代理需要针对每个类都创建一个代理类,并且每个代理类中的代码都有点像模板式的“重复”代码,增加了维护成本和开
建造者模式一、使用场景:类的构造函数必填属性很多,通过set设置,没有办法校验必填属性如果类的属性之间有一定的依赖关系,构造函数配合set方式,无法进行依赖关系和约束条件校验需要创建不可变对象,不能暴露set方法(前提是需要传递很多的属性,如果属性很少,可以不需要建造者模式)二、实现方式:把构造函数定义为private,定义public static class Builder 内部类,通过Bui
工厂模式判断要不要使用工厂模式的最本质的参考标准。封装变化:创建逻辑有可能变化,封装成工厂类之后,创建产品逻辑的变更对调用者更明确。代码复用:创建代码抽离到独立的工厂类之后可以复用。隔离复杂性:封装复杂的创建逻辑,调用者无需了解如何创建对象,迪米特法则。控制复杂度:将创建代码抽离出来,让原本的函数或类职责单一,代码简洁。例如:简单工厂到M记,要一份薯条、汉堡、可乐问题,要分别点三次,而且吃不到
单例类对象是进程唯一的一个类只允许创建一个对象(或者实例),那这个类就是一个单例类用处处理资源访问冲突从业务概念上,如果有些数据在系统中只应保存一份,那就比较适合设计为单例类,表示全局唯一类饿汉式构造函数需要是 private 访问权限的instance final 静态实例缺点: 不支持延迟加载懒汉式获取实例方法加锁,用到才实例化单例( 延迟加载)缺点: 不支持高并发,导致这个方法的
解耦!解耦!解耦!创建型模式是将创建和使用代码解耦,结构型模式是将不同功能代码解耦,行为型模式是将不同的行为代码解耦设计模式创建型( 创建型模式主要解决对象的创建问题,封装复杂的创建过程,解耦对象的创建代码和使用代码)单例创建全局唯一的对象工厂创建不同但是相关类型的对象(继承同一父类或者接口的一组子类),由给定的参数来决定创建哪种类型的对象建造者用来创建复杂对象,可以通过设置不同的可选参数,“定制
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号