代理模式

Spring核心详解!!!

元气小坏坏 提交于 2019-12-12 23:17:32
原创作者点击跳转 Spring核心详解!!! Spring出现的原因? Spring出现的原因 解除耦合 软件开发的开闭原则:通过多态实现,要么子类重写父类,要么增加方法 提高抽象层次; 提高抽象层次的方法 把子类对象赋给父类对象进行使用的动态多态 注入Injection:某一个类想要什属性,通过set方法给他 就叫注入 依赖注入 Depenency Injection =DI 有set就能活 没有就错误 配置文件(反射) Spring如何解除耦合 解耦合:首先解除逻辑耦合 mvc模式第一次解除了逻辑耦合 spring的IOC是进行深度解耦 日志:用来保持程序的健壮性,就是程序的运行记录 代理需要在jdk1.5以上版本使用 jdk代理是基于反射的没有反射就没有办法通用 调用代理类的的任何方法,都会执行到invoke方法 代理是模式 代理机制其实真正的代理的是方法 代理:proxy 代理的本质就是原产品不动,不做任何改变 要增值 要包装 代理分类: 一.静态代理:门面模式或装饰模式 缺点:需要为每一个被代理的方法都写一个代理方法,修改的时候特别值复杂,不灵活 二.动态代理 1.jdk动态代理:缺点:要想代理对象,被代理对象必须有接口,否侧不能代理 2.CGLIB代理:优点:在被代理类没有接口的情况下也能够被代理,实际就是为当前类生成一个子类 代理类和被代理类都需要实现同一个接口

代理模式(代理设计模式)

无人久伴 提交于 2019-12-12 14:24:43
在有些情况下,一个客户不能或者不想直接访问另一个对象,这时需要找一个中介帮忙完成某项任务,这个中介就是代理对象。例如,购买火车票不一定要去火车站买,可以通过 12306 网站或者去火车票代售点买。又如找女朋友、找保姆、找工作等都可以通过找中介完成。 在软件设计中,使用代理模式的例子也很多,例如,要访问的远程对象比较大(如视频或大图像等),其下载要花很多时间。还有因为安全原因需要屏蔽客户端直接访问真实对象,如某单位的内部数据库等。 代理模式的定义与特点 代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。 代理模式的主要优点有: 代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用; 代理对象可以扩展目标对象的功能; 代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度; 其主要缺点是: 在客户端和目标对象之间增加一个代理对象,会造成请求处理速度变慢; 增加了系统的复杂度; 代理模式的结构与实现 代理模式的结构比较简单,主要是通过定义一个继承抽象主题的代理来包含真实主题,从而实现对真实主题的访问,下面来分析其基本结构和实现方法。 1. 模式的结构 代理模式的主要角色如下。 抽象主题(Subject)类

http协议解析

妖精的绣舞 提交于 2019-12-11 18:45:54
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。 HTTP协议的主要特点可概括如下: 1.支持客户/服务器模式。 2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。 4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。 一、HTTP协议详解之URL篇 http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议

iOS中的常用的几种设计模式

隐身守侯 提交于 2019-12-11 11:56:21
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 总结一下自己在开发中经常用的一些 设计模式 (一)代理模式 应用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现。 优势:解耦合 敏捷原则:开放-封闭原则 实例:tableview的 数据源delegate,通过和protocol的配合,完成委托诉求。 列表row个数delegate 自定义的delegate (二)观察者模式 应用场景:一般为model层对,controller和view进行的通知方式,不关心谁去接收,只负责发布信息。 优势:解耦合 敏捷原则:接口隔离原则,开放-封闭原则 实例:Notification通知中心,注册通知中心,任何位置可以发送消息,注册观察者的对象可以接收。 kvo,键值对改变通知的观察者,平时基本没用过。 (三)MVC模式 应用场景:是一中非常古老的 设计模式 ,通过 数据模型 ,控制器逻辑,视图展示将应用程序进行逻辑划分。 优势:使系统,层次清晰,职责分明,易于维护 敏捷原则:对扩展开放-对修改封闭 实例:model-即数据模型,view-视图展示,controller进行UI展现和数据交互的逻辑控制。 (四) 单例模式 应用场景:确保程序运行期某个类,只有一份实例,用于进行 资源共享 控制。 优势:使用简单,延时求值,易于跨模块 敏捷原则

Nginx配置文件nginx.conf中文详解

拟墨画扇 提交于 2019-12-11 07:21:57
Nginx配置文件nginx.conf中文详解 1.1 定义Nginx运行的用户和用户组 user nginx nginx; #改为特殊的用户和组 1.2 nginxworker进程数,即处理请求的进程(熟称负责接客的服务员) worker_processes 8; #初始可设置为CPU总核数 1.3 cpu亲和力配置,让不同的进程使用不同的cpu worker_cpu_affinity 0001 0010 0100 1000 0001 00100100 1000; 1.4 全局错误日志定义类型,[ debug|info|notice|warn|error|crit] error_log logs/error.log error; #一定要设置warn级别以上 1.5 把进程号记录到文件 pid logs/nginx.pid; #用于管理nginx进程 1.6 Nginxworker最大打开文件数,可设置为系统优化后的ulimit -HSn的结果 worker_rlimit_nofile 65535; 1.7 IO事件模型与worker进程连接数设置 events { use epoll; #epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型 worker_connections 10240; #单个worker进程最大连接数。nginx最大连接数

Java反射以及在Android中的使用

痴心易碎 提交于 2019-12-11 00:05:37
本文涉及java中的一些反射知识,如果你对反射这部分不太熟悉,建议先去了解一下反射知识,或者看一下我的这篇文章 Java反射以及在Android中的使用 代理模式 一、定义 给 某一个对象 提供一个 代理对象 ,并由 代理对象 控制对 原对象 的引用。 举例说明: 代理模式从字面上就是我们理解的生活中那个中介代理,比如公司A( 原对象 )为海外公司,消费者B( 某一个对象 )直接从公司A购买商品需要各种各样复杂的步骤,这时候就出现了代理人C( 代理对象 ),让他来替我们去处理那些复杂的步骤,我们只需要告诉代理人C我们需要什么商品就可以了,由代理人C去跟公司A进行购买,消费只需要等着收快递,其他的不用关心。 二、使用代理好处 1、通过引入代理对象的方式 来间接访问目标对象,防止直接访问目标对象给系统带来的不必要复杂性; 2、通过代理对象对原有的业务增强; 三、UML图 公共接口角色 :定义了 委托角色 和 代理角色 的共同接口或者抽象类。 委托角色 (公司A) :实现或者继承抽象主题角色,定义实现具体业务逻辑的实现。 代理角色 (代理C) : 实现或者继承抽象主题角色,持有 委托角色 的引用,控制和限制 委托角色 的实现,并且拥有自己的处理方法(预处理和善后)。 特点: 委托角色 和 代理角色 共同继承同一个接口或者实现抽象类 代理角色 持有 委托角色 对象的引用 四、静态代理

java代理模式

时间秒杀一切 提交于 2019-12-10 23:32:00
最近学习了代理模式,在此做一个记录 一、概念 1、代理模式解决的问题:将主要业务、次要业务解耦 2、代理模式的本质:监听某一种行为,当改行为发生的时候对行为进行修饰,此处行为可以看做主要业务,修饰可以看成次要业务 3、代理模式的组成: a、业务接口:申明需要被监听的行为 b、代理实现类(InvocationHandler):次要业务,次要业务和主要业务绑定执行   c、代理对象(监听对象) 二、静态代理和动态代理 1、静态代理 a、接口 /** * @program: demo * @description: 接口 * @author: bang.chen * @create: 2018-06-25 22:21 **/ public interface IUserDao { void save(); } b、接口实现类、目标对象 /** * @program: demo * @description: 接口实现、目标对象 * @author: bang.chen * @create: 2018-06-25 22:22 **/ public class UserDao implements IUserDao{ @Override public void save() { System.out.println("数据已经保存"); } }    c、代理类 /** * @program

【c++设计模式】代理模式

落花浮王杯 提交于 2019-12-10 22:49:17
结构型模式 10)代理模式 本文参考 https://www.cnblogs.com/wrbxdj/p/5267370.html 代理模式贯彻了面对对象程序的开闭原则(对修改关闭,对扩展开放),在不改变原本类的情况下,修改用户的使用接口。 也就是为其他类提供一种代理,以控制对这个类的访问。真正调用时只让代理出现,不让真正的用户出现。 一般来说包括两个角色: 第一种,对象类。 第二种,代理类。 需要注意的是上面两个角色需要继承自同一基类。 例如在游戏中,通过代理来控制不同用户的访问权限。 //基本游戏接口 class play{ public: virtual void play1() = 0; virtual void play2() = 0; }; //玩家接口 class player : public play{ public: void play1(){ cout<<"装备1"<<endl; } void play2(){ cout<<"装备2"<<endl; } void play3(){ cout<<"装备3"<<endl; } }; //代理玩家1 class proxyPlayer1 : public play{ public: proxyPlayer1(){ m_player = new player(); } void play1(){ m_player-

23种设计模式概念

房东的猫 提交于 2019-12-10 22:31:03
23种设计模式概念 创建型模式 1、ABSTRACT FACTORY—追MM少不了请吃饭了,麦当劳的套餐和肯德基的套餐都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“两个B套餐”就行了。麦当劳和肯德基就是B套餐的Abstract Factory, B套餐里含有汉堡, 鸡翅和饮料. 麦当劳或肯德基会根据B套餐的规格, 让汉堡Factory, 鸡翅Factory, 饮料Factory分别生产对应B套餐的材料. 抽象工厂模式:客户类和工厂类分开。消费者任何时候需要某套产品集合时,只需向抽象工厂请求即可。抽象工厂会再向具体的工厂生产出符合产品集规格的产品. 2、BUILDER—MM最爱听的就是“我爱你”这句话了,见到不同地方的MM,要能够用她们的方言跟她说这句话哦,我有一个多种语言翻译机,上面每种语言都有一个按键,见到MM我只要按对应的键,它就能够用相应的语言说出“我爱你”这句话了,国外的MM也可以轻松搞掂,这就是我的“我爱你”builder。(这一定比美军在伊拉克用的翻译机好卖) 建造模式:将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。 3、FACTORY METHOD

Nginx 的总结

こ雲淡風輕ζ 提交于 2019-12-10 19:05:55
目录 Nginx 的产生 Nginx 的用武之地 Web 服务器对比 Nginx 的产生 Nginx 同 Apache 一样都是一种 Web 服务器。基于 REST 架构风格,以统一资源描述符(Uniform Resources Identifier)URI 或者统一资源定位符(Uniform Resources Locator)URL 作为沟通依据,通过 HTTP 协议提供各种网络服务。 然而,这些服务器在设计之初受到当时环境的局限,例如当时的用户规模,网络带宽,产品特点等局限并且各自的定位和发展都不尽相同。这也使得各个 Web 服务器有着各自鲜明的特点。 Apache 的发展时期很长,而且是毫无争议的世界第一大服务器。它有着很多优点:稳定、开源、跨平台等等。 它出现的时间太长了,它兴起的年代,互联网产业远远比不上现在。所以它被设计为一个重量级的。 它不支持高并发的服务器。在 Apache 上运行数以万计的并发访问,会导致服务器消耗大量内存。 操作系统对其进行进程或线程间的切换也消耗了大量的 CPU 资源,导致 HTTP 请求的平均响应速度降低。 这些都决定了 Apache 不可能成为高性能 Web 服务器,轻量级高并发服务器 Nginx 就应运而生了。 俄罗斯的工程师 Igor Sysoev,他在为 Rambler Media 工作期间,使用 C 语言开发了 Nginx。