代理模式

静态代理模式

南楼画角 提交于 2019-12-04 03:51:25
静态代理模式总结:真实对象和代理对象,都要实现同一个接口,代理对象要代理真实角色。好处:代理对象可以做很多真实对象做不了、或者冗余的事情,真实对象只要专注做自己的事情就行。这种思想在多线程里面是一样的。语句如下: new WeddingCompany(new You()).HappyMarry(); 和 new Thread(new Runnable() { @Override public void run() { } }).start(); 静态代理模式: 1 package com.huolongluo.coindemo.morethread.sub1; 2 3 /** 4 * Created by 火龙裸 on 2019/11/9. 5 * desc : 静态代理模式 6 * version: 1.0 7 */ 8 public class StatciProxy { 9 public static void main(String[] args) { 10 /*You you = new You();//你要结婚 11 WeddingCompany weddingCompany = new WeddingCompany(you); 12 weddingCompany.HappyMarry();*/ 13 14 new WeddingCompany(new You())

设计模式---代理模式

六月ゝ 毕业季﹏ 提交于 2019-12-04 02:09:46
动态代理模式 通过代理类,接口和实现类之间可以不直接发生关系,而是在运行实现动态关联。 public interface Subject { public void shopping(); } public class Person implements Subject { @Override public void shopping() { System.out.println("XX商品购买成功"); } } import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; // 用于动态生成代理对象 public class Proxy implements InvocationHandler { private Object targect; //被代理对象 /** *用于创建代理对象 * @param targect 被代理对象 * @return */ public Object creact(Object targect){ this.targect = targect; // 创建代理对象的实例 /** * 参数1:类加载器 * 参数2:接口 * 参数3:创建代理类的对象(当前类Proxy) */ return java.lang.reflect.Proxy

iOS:探究视图控制器的转场动画

笑着哭i 提交于 2019-12-04 01:49:23
一、介绍 在iOS开发中,转场动画的使用无处不见,不只是我们自己更多的使用UIViewblock动画实现一个转场动画,其实,在我们实现VC控制器跳转的时候都是转场动画的实现,例如标签栏控制器的切换、模态动画present和dismiss、导航控制器的push和pop。实现它们的转场动画,只需要实现它们的动画协议即可,说起来有点太笼统,不如看下面的图吧: 二、分析 对于上面的三种类型的控制器,系统都会为它们设置一个代理,通过这个代理方法去监测它们切换VC的过程,这个过程仅仅是出现和消失的过程,至于这个过程是什么过渡效果,这个代理是不管的。要想这个过程是有动画的,那么在这些过程中,也就是代理函数中,需要另外再返回一个实现动画的对象,这个对象必须遵循实现动画的协议,在这个协议中开发者可以重写自定义转场动画。下面会慢慢演示这三种类型控制器的自定义转场动画。 重写不可交互转场动画的核心协议内容: //重写动画协议 @protocol UIViewControllerAnimatedTransitioning <NSObject> //动画执行时间 - (NSTimeInterval)transitionDuration:(nullable id <UIViewControllerContextTransitioning>)transitionContext; //自定义动画效果 -

Nginx学习

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

Spring AOP 是什么?

ぃ、小莉子 提交于 2019-12-04 01:06:25
为什么会有面向切面编程(AOP)?我们知道Java是一个面向对象(OOP)的语言,但它有一些弊端,比如当我们需要为多个不具有继承关系的对象引入一个公共行为,例如日志、权限验证、事务等功能时,只能在在每个对象里引用公共行为。这样做不便于维护,而且有大量重复代码。AOP的出现弥补了OOP的这点不足。 为了阐述清楚Spring AOP,我们从将以下方面进行讨论: 代理模式 静态代理原理及实践 动态代理原理及实践 Spring AOP原理及实战 1. 代理模式 代理模式:为其他对象提供一种代理以控制对这个对象的访问。这段话比较官方,但我更倾向于用自己的语言理解:比如A对象要做一件事情,在没有代理前,自己来做;在对 A 代理后,由 A 的代理类 B 来做。代理其实是在原实例前后加了一层处理,这也是 AOP 的初级轮廓。 2. 静态代理原理及实践 静态代理模式:静态代理说白了,就是在程序运行前就已经存在代理类的字节码文件、代理类和原始类的关系在运行前就已经确定。废话不多说,我们看一下代码。 package test.staticProxy; // 接口 public interface IUserDao { void save(); void find(); } //目标对象 class UserDao implements IUserDao{ @Override public void

java代理

两盒软妹~` 提交于 2019-12-04 00:56:37
代理 概念 代理模式是对象的结构型模式,代码模式给某一个对象提供代理,并由代理对象控制原对象(目标对象,被代理对象)的引用。简单点说,就是通过一个工厂生成一个类的代理对象,当客户端使用的时候不直接使用目标对象,而是直接使用代理对象。代理对象相当于中介. 1 Jdk静态代理 1.1 概念 1.1.1 代理类和目标类实现相同的接口 1.1.2 代理类持有目标类的 的引用 1.2 实例 1.2.1 创建接口 public interface UserService { public void addUser(String userId,String userName); } 1.2.2 创建实现类 public class UserServiceImpl implements UserService { @Override public void addUser(String userId, String userName) { System.out.println("UserServiceImpl addUser userId->>"+userId); } } 1.2.3 创建代理类 (代理类持有被代理类的引用) public class UserServiceImplProxy implements UserService { private UserService

Linux curl 命令模拟 POST/GET 请求

。_饼干妹妹 提交于 2019-12-03 23:49:26
Linux curl 命令模拟 POST/GET 请求 本文链接: https://blog.csdn.net/sunboy_2050/article/details/82156402 curl 命令,是一个利用URL规则在命令行下工作的文件传输工具。 curl 支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。 作为一款强力工具,curl支持包括HTTP、HTTPS、FTP等众多协议,还支持 GET、POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征,还可以做网页处理流程和数据检索自动化。 在进行web后台程序开发测试过程中,常常会需要发送url进行测试,使用curl可以方便地模拟出符合需求的url命令 curl 语法:curl [options...] <url> # curl (选项) (参数) 示例1:curl -m 30 --retry 3 https://proxy.mimvp.com/ip.php // curl 爬取网页,获取本机外网ip 示例2:curl -m 30 --retry 3 -x https://120.77.176.179:8888 https://proxy.mimvp.com/ip.php // curl 通过代理IP爬取网页,获取本机外网ip 更多示例: https

Burpsuite—渗透测试神器

孤者浪人 提交于 2019-12-03 23:27:38
Google浏览器插件---SwitchyOmega Firefox浏览器插件---SwitchyOmega hosts代理工具---SwitchHosts【右击使用管理员权限打开】 双击burp-loader-keygen.jar,运行burpsuite Https请求设置   在使用Burp Suite对Https进行拦截时会提示不是私密连接或此连接不信任,Burp默认只能抓Http请求,Https因为包含证书,因此不能抓取,需要设置可信证书。   注: SwitchHosts切换代理环境时,Burpsuite会存在缓存时间,大概5分钟,如想设置的代理马上生效,可以将Burpsuite关闭重新打开。 Foxfire 导入证书   1. 在浏览器中输入http://localhost:8080或http://burp,点击页面右上角的CA Certificate,下载本地Burp证书(cacert.der)   2. Foxfire首选项->高级->证书->查看证书->证书机构->导入,选择cacert.der文件 代理   1. 在Foxfire浏览器中输入about:addons,进入附加组件列表页面;   2. 选择“扩展”,在搜索框中输入SwitchyOmega,点击安装;   3. 安装成功后,点击SwitchyOmega的图标,选项,输入代理信息。 Chrome

设计模式——个人理解

懵懂的女人 提交于 2019-12-03 21:15:22
写在前面 设计模式是基于固定设计场景的一套解决方案,目的是为了完成开闭原则,或者说面向后续的需求变更,以成本最低的改动和测试完成新功能。同时设计模式也是一种程序员之间的交流语言,可以省去很多沟通成本。 在工作的过程中,从最初不知如何使用设计模式,到中间刻意使用设计模式,到今天稍有好转的正确的使用设计模式,踩了许多坑,也有过度设计的时候,为了避免今后在犯同样的错误,所以准备将自己在项目实践的过程中使用过的设计模式记录下来。 设计模式中,有一些实战里用过,有的没用过,没用过的应该是对这个设计方法没有领悟透彻,所以不知道该怎么用。 目前先按照自己的理解记录下来,有更深的领悟会更新。 创建型设计模式 1、工厂方法模式(FactoryMethod) 工厂方法模式的实质是“定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。” 工厂方法模式,是在抽象类中定义创建对象的方法,调用声明创建过程(抽象方法,但创建对象的过程的实现是在实现类中定义。 也就是说,在创建对象时,创建步骤是固定的,但各个步骤的实现是多种多样的,这种情况下可以使用工厂方法。 例如:创建一个电脑主机,需要安装CPU,内存,硬盘,显卡。这个安装步骤是固定的,但是由不同的工厂实现类去实现这几个步骤。 这种父类声明,子类实现的方式有很多,把这种方法用于创建对象,就叫工厂方法

反向代理负载均衡

回眸只為那壹抹淺笑 提交于 2019-12-03 17:37:05
使用反向代理服务器可以将请求转发给内部的Web服务器,使用这种加速模式显然可以提升静态网页的访问速度。因此也可以考虑使用这种技术,让代理服务器将请求均匀转发给多台内部Web服务器之一上,从而达到负载均衡的目的。这种代理方式与普通的代理方式有所不同,标准代理方式是客户使用代理访问多个外部Web服务器,而 这种代理方式是多个客户使用它访问内部Web服务器,因此也被称为反向代理模式 。 概念 实现这个反向代理能力并不能算是一个特别复杂的任务,但是在负载均衡中要求特别高的效率,这样实现起来就不是十分简单的了。每针对一次代理,代理服务器就 必须打开两个连接,一个为对外的连接,一个为对内的连接,因此对于连接请求数量非常大的时候,代理服务器的负载也就非常之大了,在最后反向代理服务器会成 为服务的瓶颈。例如,使用Apache的mod_rproxy模块来实现负载均衡功能时,提供的并发连接数量受Apache本身的并发连接数量的限制。一般来讲,可以使用它来对连接数量不是特别大,但每次连接都需要消耗大量处理资源的站点进行负载均衡,例如搜寻。 使用反向代理的好处是,可以将负载均衡和代理服务器的高速缓存技术结合在一起,提供有益的性能,具备额外的安全性,外部客户不能直接访问真实的服务器。并且实现起来可以实现较好的负载均衡策略,将负载可以非常均衡的分给内部服务器,不会出现负载集中到某个服务器的偶然现象。