代理模式

maven本地资源库设置

梦想与她 提交于 2020-02-11 10:45:58
maven的配置文件 settings.xml 存在于两个地方: settings.xml可以从maven解压包的conf文件夹中获取 1.安装的地方:${M3_HOME}/conf/settings.xml 全局配置 2.用户的目录:${user.home}/.m2/settings.xml 用户配置 如下是settings.xml的配置  <?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <!--本地仓库。该值表示构建系统本地仓库的路径。其默认值为${user.home}/.m2/repository。 --> <localRepository>${user.home}/.m2/repository </localRepository> <!--Maven是否需要和用户交互以获得输入。如果Maven需要和用户交互以获得输入,则设置成true

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

梦想与她 提交于 2020-02-11 10:00:18
代理,指的就是一个角色代表另一个角色采取行动,就象生活中,一个红酒厂商,是不会直接把红酒零售客户的,都是通过代理来完成他的销售业务。而客户,也不用为了喝红酒而到处找工厂,他只要找到厂商在当地的代理就行了,具体红酒工厂在那里,客户不用关心,代理会帮他处理。 代理模式,就是给某一对象提供代理对象,并由代理对象控制具体对象的引用。 代理模式涉及的角色: 抽象主题角色,声明了代理主题和真实主题的公共接口,使任何需要真实主题的地方都能用代理主题代替。 代理主题角色,含有真实主题的引用,从而可以在任何时候操作真实主题,代理主题功过提供和真实主题相同的接口,使它可以随时代替真实主题。代理主题通过持有真实主题的引用,不但可以控制真实主题的创建或删除,可以在真实主题被调用前进行拦截,或在调用后进行某些操作。 真实代理对象,定义了代理角色所代表的具体对象。 参考一下代码: <?php /** * 代理模式 * * 为其他对象提供一个代理以控制这个对象的访问 * */ interface Proxy { public function request(); public function display(); } class RealSubject { public function request() { echo "RealSubject request<br/>"; } public

php代理模式(proxy design)

╄→гoц情女王★ 提交于 2020-02-11 09:57:27
结构模式最后一个,接着进入行为模式。 <?php /* The proxy design pattern functions as an interface to an original object behind the scenes. It can act as a simple forwarding wrapper or even provide additional functionality around the object it wraps. Examples of extra added functionality might be lazy loading or caching that might compensate for resource intense operations of an original object. */ interface ImageInterface { public function draw(); } class Image implements ImageInterface { private $file; public function __construct($file) { $this->file = $file; sleep(2); } public function draw() { echo 'image: '

JDK动态代理实现机制

故事扮演 提交于 2020-02-11 09:41:45
===========================================     原文链接: JDK动态代理实现机制 转载请注明出处! =========================================== 本文只对JDK动态代理的底层实现进行分析,如需了解代理模式和动态代理的使用请移步: 设计模式—代理模式 动态代理的两种实现方式(JDK/Cglib) 在读代码之前先清楚两个概念:   1、Class类存储的是类的所有信息,包括类的所有方法、属性、实现接口等。每个类对应一个Class对象(单例),Class对象是由classLoader加载出来的,使用双亲委派模型来保证class只会被加载一次。   2、classLoader在加载类的时候不管class文件是从哪里来的,无论是从.class文件、网络、数据库类加载器都不关心。他只关心给他的class二进制流是不是能够通过校验。 说明:以下测试代码和 动态代理的两种实现方式(JDK/Cglib) 相同 使用JDK动态代理需要实现 InvocationHandler 接口,同时实现invoke()方法。 package com.zpj.proxy.jdk; import java.lang.reflect.InvocationHandler; import java.lang.reflect

JAVA设计模式之代理模式

主宰稳场 提交于 2020-02-11 09:39:48
在阎宏博士的《JAVA与模式》一书中开头是这样描述代理(Proxy)模式的:   代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。 代理模式的结构   所谓代理,就是一个人或者机构代表另一个人或者机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。   代理模式类图如下:      在代理模式中的角色:   ●   抽象对象角色: 声明了目标对象和代理对象的共同接口,这样一来在任何可以使用目标对象的地方都可以使用代理对象。   ●   目标对象角色: 定义了代理对象所代表的目标对象。   ●   代理对象角色: 代理对象内部含有目标对象的引用,从而可以在任何时候操作目标对象;代理对象提供一个与目标对象相同的接口,以便可以在任何时候替代目标对象。代理对象通常在客户端调用传递给目标对象之前或之后,执行某个操作,而不是单纯地将调用传递给目标对象。 源代码   抽象对象角色 public abstract class AbstractObject { //操作 public abstract void operation(); }   目标对象角色 public class RealObject extends AbstractObject { @Override

《JAVA与模式》之代理模式

孤街醉人 提交于 2020-02-11 09:38:54
在阎宏博士的《JAVA与模式》一书中开头是这样描述代理(Proxy)模式的:   代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。 代理模式的结构   所谓代理,就是一个人或者机构代表另一个人或者机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。   代理模式类图如下:      在代理模式中的角色:   ●   抽象对象角色: 声明了目标对象和代理对象的共同接口,这样一来在任何可以使用目标对象的地方都可以使用代理对象。   ●   目标对象角色: 定义了代理对象所代表的目标对象。   ●   代理对象角色: 代理对象内部含有目标对象的引用,从而可以在任何时候操作目标对象;代理对象提供一个与目标对象相同的接口,以便可以在任何时候替代目标对象。代理对象通常在客户端调用传递给目标对象之前或之后,执行某个操作,而不是单纯地将调用传递给目标对象。 源代码   抽象对象角色 public abstract class AbstractObject { //操作 public abstract void operation(); }   目标对象角色 public class RealObject extends AbstractObject { @Override

第13讲:Proxy 代理模式

邮差的信 提交于 2020-02-11 09:38:41
2006.4.12 李建忠 直接与间接 人们对于复杂的软件系统常常有一种处理手法,即增加一层 间接层 ,从而对系统获得一种更为灵活、满足特定需求的解决方案。 假设A要访问B三次。如果A和B是分布式中的两个机器,那么A需要跨机器调用B三次就不是很好。如果在A和B之间加一个代理对象C,并且A和C处于同一个地址空间,即同一个机器。那么A和C之间通讯是非常高效的,现在A和C之间调用三次,到某个触发点的时候,和B只需要一次的通讯,这样性能就会好很多。这样做还有一个好处,即A不需要再知道分布式通讯的内容了。 现实生活中,其实操作系统就是软件和硬件之间的代理。 动机(Motivation) 在面向对象系统中,有些对象由于某种原因(比如对象创建的开销很大,或者某些操作需要安全控制,或者需要进程外的访问等),直接访问会给使用者、或者系统结构带来很多麻烦。 如何在不失去透明操作对象的同时来管理/控制这些对象特有的复杂性?增加一层间接层是软件开发中常见的解决方式。 意图(Intent) 为其他对象提供一种代理以控制对这个对象的访问。 ——《设计模式》GoF 例说Proxy应用 HrSystem里面new的Employee对象将位于和HrSystem同样的地址空间里面,但如果我们需要把Employee作为跨互联网的调用,那么这样的代码就不适用了。 改进后的代码:

代理类学习

亡梦爱人 提交于 2020-02-10 22:40:00
类对象操作时候在外面加一层代理,加一层壳,比如写日记功能,写在外面不接触具体操作对象,相当于代理对厂家的宣传作用。 下面是JDK动态代理 //makeProxy.javapackage daili; import com.sun.org.apache.xpath.internal.SourceTree; import java.lang.reflect.*; import java.util.Arrays; /* 这个类生成代理对象 JDK动态代理 1:Proxy:是所有动态代理的父类,专门用于生成代理类或者生成代理对象 这里的proxy是 java.lang.reflect Class<?>(返回值) getPRoxyClass()方法用于生成对象的Class对象,就是电脑计算机中的class对象,属性就是class object(返回值) newProxyInstance()方法用于生成代理对象的实例 2:InvocationHandler:完成动态代理的整个过程,这是一个接口,自己写一个类实现它 里面有一个invoke方法(返回值是object) */ public class makeProxy { //动态代理 : 目标对象 如何获取代理对象 代理要干什么 //目标对象 private caculate cal ; //获取代理对象需要执行方法,此时需要new

设计模式(思路)

怎甘沉沦 提交于 2020-02-10 20:31:23
设计模式七大原则: 单一责任 : 一个类尽量不要拥有太多的责任 接口隔离:接口设计的要尽量小,避免实现一个接口实现了多余的方法 依赖倒转:细节依赖于抽象,抽象不依赖于细节 里氏替换:尽量不要重写父类的方法 开闭原则:对扩展开放,对修改关闭 迪米特法则:最小知道原则,对尽量避免了解其他类的内部实现,减少耦合 合成复用原则:少用继承,而用依赖组合聚合 设计模式六大关系: 依赖 泛化 实现 聚合 组合 关联 创建型设计模式: 单例模式: 饿汉式实现 懒汉式实现 - double-check( 双重判断 ) 静态内部类实现 枚举实现 应用场景 : 需要频繁创建和销毁的对象,创建一次就够用而且需要频繁使用的对象(数据库访问,工具类) 源码中使用: RunTime 类 利用饿汉式单例模式实现, static 静态生成对象,系统调用时直接返回 . 工厂模式: 抽象工厂 : 工厂不只是一个类 而是一个工厂族,由接口定义,具体的想要的工厂实现由子类工厂提供。 源码中使用: Calendar 类 利用简单工厂模式 , 对外提供一个静态方法,用来根据日期和地域生产 Calendar 对象。 满足原则: 开闭原则 原型模式: 浅拷贝 : 实现 cloneable 接口,重写 clone() 方法 . 只会克隆对象的普通属性,如果有引用类型的属性则会都指向同一个地址引用 ( 克隆一个人

Nginx简介及安装

ぐ巨炮叔叔 提交于 2020-02-10 19:41:09
一、Nginx简介 Nginx 【http://nginx.org/en/】(engine x) 是一个高性能的HTTP和反向代理服务器 Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。 Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。 Nginx的稳定性、功能集、示例配置文件和低系统资源的消耗让他后来居上,在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。 二、常用功能 1、Http服务、反向代理 Http服务作为web服务器最常用的功能之一,尤其是反向代理。 Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。Nginx可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,又有相对应的服务器解决方案,你就可以随心所欲的玩。并且Nginx对返回结果进行错误页跳转,异常判断等。如果被分发的服务器存在异常,他可以将请求重新转发给另外一台服务器,然后自动去除异常服务器。 2、负载均衡 Nginx提供的负载均衡策略有2种