代理模式

代理ip分类

旧时模样 提交于 2019-12-10 17:52:33
一、 按请求信息的安全性分类 可以分为透明代理、普通匿名代理和高级匿名代理三种。 二、按照用途分类 1、Http代理:最常用的代理,代理客户机的http访问,主要代理浏览器访问网页,它的端口一般为80、8080、3128等。 2、SSL代理也叫HTTPS代理,支持最高128位加密强度的http代理,可以作为访问加密网站的代理。加密网站是指以https//开始的网站。ssl的标准端口为443。 3、HTTP CONNECT代理:允许用户建立TCP连接到任何端口的代理服务器,这种代理不仅可用于HTTP,还包括FTP、IRC、RM流服务等。 4、FTP代理:代理客户机上的ftp软件访问ftp服务器,其端口一般为21、2121。 5、POP3代理:代理客户机上的邮件软件用pop3方式收邮件,其端口一般为110。 6、Telnet代理:能够代理通信机的telnet,用于远程控制,入侵时经常使用。其端口一般为23。 7、Socks代理:是全能代理,就像有很多跳线的转接板,它只是简单地将一端的系统连接到另外一端。支持多种协议,包括http、ftp请求及其它类型的请求。它分socks 4 和socks 5两种类型,socks 4只支持TCP协议而socks 5支持TCP/UDP协议,还支持各种身份验证机制等协议。其标准端口为1080。 8、TUNNEL代理

Bean的作用域

自作多情 提交于 2019-12-10 16:06:09
官网说明: Bean作用域 创建 bean 定义时,将创建一个配方,用于创建由 bean 定义定义的 class 的实际实例。 bean 定义是配方的 idea 很重要,因为它意味着,与 class 一样,您可以从单个配方创建许多 object 实例。 您不仅可以控制要插入到从特定 bean 定义创建的 object 的各种依赖项和 configuration 值,还可以控制从特定 bean 定义创建的 objects 的范围。这种方法功能强大且灵活,因为您可以选择通过 configuration 创建的 objects 的范围,而不必在 Java class level 的 object 范围内进行烘焙。 Beans 可以定义为部署在多个范围之一中。 Spring Framework 支持六个范围,其中四个范围仅在您使用 web-aware ApplicationContext 时可用。你也可以创建自定义范围。 以下 table 描述了支持的范围: 作用域 描述 singleton (默认)为每个 Spring IoC 容器的单个 object 实例定义单个 bean 定义。 原型 为任意数量的 object 实例定义单个 bean 定义。 请求 将单个 bean 定义范围限定为单个 HTTP 请求的生命周期。也就是说,每个 HTTP 请求都有自己的 bean 实例

动态代理模式

偶尔善良 提交于 2019-12-10 14:21:38
动态代理模式 特点:字节码随用随创建,随用随加载 作用:不修改源码的基础上对方法增强 分类: 基于接口的动态代理 基于子类的动态代理 代理的分析 基于接口的动态代理 *涉及的类:Proxy *提供者:JDK官方 *如何创建代理对象: *使用Proxy类中的newProxyInstance方法 *创建代理对象的要求: *被代理的类最少实现一个接口,没有则不能使用 *newProxyInstance方法的参数: *ClassLoader: *类加载器 ,用于加载代理对象字节码。和被代理对象使用相同的类加载器。固定写法。 *Class[]: *让代理对象和被代理对象有相同方法。固定写法 *InvocationHandler: *用于提供增强的代码,它是让我们写如何代理。我们一般都是写一个该接口的实现类,通常情况下都是匿名内部类,但不是必须的。 *此接口的实现类都是谁用谁写。 模拟一个消费者 public class Client { public static void main(String[] args) { final Producer producer=new Producer(); IProducer proxyProducer= (IProducer) Proxy.newProxyInstance(producer.getClass().getClassLoader(),

动态代理模式

随声附和 提交于 2019-12-10 14:15:00
1 日志代理 实现方式 1 实现接口 jdk动态代理   2 继承 Cglib、Javassist 动态代理 package com.itstaredu.spring.aop.before; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.util.Arrays; /** * @author lubai * @version 1.0 * @date 2019/12/10 12:43 下午 * <p> * 1 proxy 所用动态代理类的父类 生产代理类 或代理对象 * <p> * 3 getProxyClass 获取代理类的Class对象 * 4 newProxyInstance 生成代理类的实例对象 * <p> * 2 invocationHandler 动态代理 具体的处理的内容编写 即 附加功能 * <p> * 代理的目标是谁 获取代理对象 代理里面扩展的功能 **/ public class ArithmeticCalculatorProxy { /** * 目标对象 */ private ArithmeticCalculator target; public

动态代理模式

雨燕双飞 提交于 2019-12-10 13:22:33
**动态代理模式** 特点:字节码随用随创建,随用随加载 作用:不修改源码的基础上对方法增强 分类: 基于接口的动态代理 基于子类的动态代理 **代理的分析** **基于接口的动态代理** *涉及的类:Proxy *提供者:JDK官方 *如何创建代理对象: *使用Proxy类中的newProxyInstance方法 *创建代理对象的要求: *被代理的类最少实现一个接口,没有则不能使用 *newProxyInstance方法的参数: *ClassLoader: *类加载器 ,用于加载代理对象字节码。和被代理对象使用相同的类加载器。固定写法。 *Class[]: *让代理对象和被代理对象有相同方法。固定写法 *InvocationHandler: *用于提供增强的代码,它是让我们写如何代理。我们一般都是写一个该接口的实现类,通常情况下都是匿名内部类,但不是必须的。 *此接口的实现类都是谁用谁写。 模拟一个消费者 ``` public class Client { public static void main(String[] args) { final Producer producer=new Producer(); IProducer proxyProducer= (IProducer) Proxy.newProxyInstance(producer.getClass()

mybatis源码探索笔记-2(构建SqlSession并获取代理mapper)

╄→尐↘猪︶ㄣ 提交于 2019-12-10 12:54:05
前言   上篇笔记我们成功的装载了Configuration,并写入了我们全部需要的信息。根据这个Configuration创建了DefaultSqlSessionFactory。本篇我们实现构建SqlSession即mybatis的一次sql会话,并获取到我们常用的代理mapper接口类。在正文之前先放上之前的一段代码    @Autowired private SqlSessionFactory sqlSessionFactory; @GetMapping("/get") public List<AssetInfo> get(){ SqlSession sqlSession = sqlSessionFactory.openSession(); AssetInfoMapper mapper = sqlSession.getMapper(AssetInfoMapper.class); List<AssetInfo> test = mapper.get("测试删除" , "123123123"); System.out.println(test); return test; } public interface AssetInfoMapper { List<AssetInfo> get(@Param("name") String name, @Param("id")String id

设计模式(Hibernate)

拈花ヽ惹草 提交于 2019-12-10 08:44:09
1、概述 2、面向对象设计原则 1)单一职责原则 2)开闭原则 3)里氏替换原则 4)依赖倒置原则 5)接口隔离原则 6)迪米特原则 7)组合/聚合复用原则 3、设计模式 4、设计模式分类 5、简单工厂模式 样例: 产品接口类(Product): package com.ljb.simplefactory; /** * 产品接口 * @author LJB * @version 2015年4月21日 */ public interface Product { /**产品生产工艺*/ public void craftwork(); /**产品特征*/ public void type(); } 产品类(鲜奶): package com.ljb.simplefactory; /** * 鲜奶 * @author LJB * @version 2015年4月21日 */ public class Creamery implements Product { @Override public void craftwork() { System.out.println("牛奶+除菌=鲜奶"); } @Override public void type() { System.out.println("原味浓香"); } } 产品类(酸奶): package com.ljb

代理模式(Proxy)

北城余情 提交于 2019-12-10 03:35:16
为了深刻点理解代理模式,我们先来看一个 Demo , 首先这个 Demo 是用来测试 QQ 号码是否在线, 这里涉及到的内容是 Web 服务的使用, 这个 Web 服务所在地址为: http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx 如果有不懂 Web 服务的,还可以查看笔者一篇涉及 Web 服务的文章, http://www.cnblogs.com/QinBaoBei/archive/2010/03/30/1700898.html 然后,我便将上面的验证 QQ 是否在线的这个 Web 服务引入到我的项目中, 并且给这个 Web 服务命名为 WebService.TestQQ 然后就是来编写类了, 主要是一个 TestResult 类,这个类的作用就是来完成访问 Web 服务,返回验证结果, 其具体代码如下: namespace ProxyQQ { public static class TestResult { public static string GetResult (string qqNum) { //调用引用的 Web 服务(自命名为 WebService.TestQQ) WebService.TestQQ.qqOnlineWebService testQQ = new

说说 JAVA 代理模式

爱⌒轻易说出口 提交于 2019-12-10 03:25:34
事例 小张是一个普普通通的码农,每天勤勤恳恳地码代码。某天中午小张刚要去吃饭,一个电话打到了他的手机上。“是XX公司的小张吗?我是YY公司的王AA”。“哦,是王总啊,有什么事情吗?”。沟通过后,小张弄明白了,原来客户有个需求,刚好负责这方面开发的是小张,客户就直接找到了他。不过小张却没有答应客户的请求,而是让客户找产品经理小李沟通。 是小张着急去吃面而甩锅吗?并不是,只是为了使故事可以套到代理模式上。我们先看一下代理模式的定义: * 为其他对象提供一种代理,以控制对这个对象的访问。(Provide a surrogate or placeholder for another object to control access to it) 对照定义,码农小张可以映射为其他对象,产品经理小李为小张的代理。我们通过JAVA代码,表述上面事例。 静态代理 1.抽象角色 基于面向对象的思想,首先定义一个码农接口,它有一个实现用户需求的方法。 public interface ICoder { public void implDemands(String demandName); } 2.真实角色 我们假设小张是JAVA程序员,定义一个JAVA码农类,他通过JAA语言实现需求。 public class JavaCoder implements ICoder{ private String

吃透Shiro源码第三天

家住魔仙堡 提交于 2019-12-10 01:54:58
文章目录 技术手法 (1)接口的代理 (2)接口作为方法参数 (3)生命周期的使用工具 重点研究类 技术手法 (1)接口的代理 Shiro自己也实现了会话机制。Shiro创建了自己的Session接口。为了拦截某些Session调用并执行其他逻辑,创建了一个简单的Session代理。如何扩展呢?可以继承ProxiedSession这个类,重写某个function(),并调用super.function()立即调用代理对象的方法,在此之前可编写其他代码以执行其他逻辑。此实现思路可以应用到任何已经创建的接口上。 /** * 简单的代理Session实现 * 立即将调用转给代理实例 * 此类对于框架子类继承很有用, * 以拦截某些Session调用并执行其他逻辑。 */ public class ProxiedSession implements Session . . . /** * 代理实例 */ protected final Session delegate ; /** * @param target 要被代理的Session对象 */ public ProxiedSession ( Session target ) { this . delegate = target ; } @Override public Serializable getId ( ) { /