- 浏览: 173504 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (157)
- 心情故事 (2)
- SWT/JFACE/RCP (5)
- 数据库 持久层 (22)
- 程序开发的小常识 (17)
- 设计模式 (6)
- UML图 (1)
- 框架相关文章 (15)
- 消息服务 (3)
- javascript ajax jquery (12)
- servlet http 协议 (1)
- 中间件 服务器 JNDI (11)
- EJB (4)
- core JAVA jvm (17)
- 算法 算数 智力题 (5)
- 版本控制软件 (1)
- 软件下载 (15)
- quartz job (2)
- xml (2)
- 线程 (9)
- 英语专栏学习 (0)
- SWT/JFACE/RCdP (0)
- Unix (1)
- Maven (3)
- 第一段经历 (0)
- 第二段经历 (0)
- 第三段经历 (0)
- 第四段经历 (9)
- ide开发工具 (2)
- 浏览器兼容 (1)
- 技术的缺点总结 (1)
- 验证码 (1)
- 面试问题大全 (3)
- 第五段经历 (5)
- 趣味编程 (1)
最新评论
-
zhangwei8607:
哥,我来了
发表了这么多技术文章,为什么没人留言 -
aqqcat:
这个太骚了同志
proxy 的原理 -
dmwdmc:
...
9个球其中1个空心最多称2次得出空心球 -
kjmmlzq19851226:
9个球分三组为A、B、C,任意取其中两组进行第一次称重,两种情 ...
9个球其中1个空心最多称2次得出空心球 -
zhangwei8607:
:idea: 学习了
网银系统augcb申请信用卡ejb的应用
设计模式中proxy模式可以在jdk中的proxy得到体现。
它也是spring的核心思想。
首先我定义个ActionPrettyWomanInterface 接口。
针对于这个接口,我们可以有多个实现。
一个是帮助美女的实现。
另一个是玩美女。
public class PlayPrettyWoman implements ActionPrettyWomanInterface{
public void action() {
System.out.println("我在玩美女.");
}
}
那么我们只是简单的玩,是不是太没情调了呢。
这时候我们就可以通过代理机制里的InvocationHandler加入一些情调。
之后我们就可以大玩特玩了。
控制台输出:
从中我们可以知道,当我们用代理机制创建关于接口或者类的对象时候,
它的对象实现是jdk产生的动态代理对象Proxy0。
当我们要调用玩美女或者帮助美女方法时候, 它的实际顺序是先调用InvocationHandler里的invoke, 然后invoke会通过反射调用玩美女或者帮助美女方法。
得出结论:如果我们不实现InvocationHandler的invoke方法,那么我们实际中的方法讲不会被调用到。所以这个类必须重写。
然后另外我们可以得知,创建对象除了new以后,还可以通过代理实现。
它也是spring的核心思想。
首先我定义个ActionPrettyWomanInterface 接口。
public interface ActionPrettyWomanInterface { void action(); }
针对于这个接口,我们可以有多个实现。
一个是帮助美女的实现。
public class HelpPrettyWoman implements ActionPrettyWomanInterface{ public void action() { System.out.println("我在帮美女补丝袜 ."); } }
另一个是玩美女。
public class PlayPrettyWoman implements ActionPrettyWomanInterface{
public void action() {
System.out.println("我在玩美女.");
}
}
那么我们只是简单的玩,是不是太没情调了呢。
这时候我们就可以通过代理机制里的InvocationHandler加入一些情调。
import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; public class SexyInvocationHandler implements InvocationHandler{ private Object prettyWoman; public SexyInvocationHandler(ActionPrettyWomanInterface prettyWoman){ this.prettyWoman=prettyWoman; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Object result=null; try{ System.out.println(proxy.getClass().getSimpleName()); System.out.println("让美女穿上丝袜,剪开档."); result =method.invoke(prettyWoman, args); System.out.println("抽跟烟~~~."); }catch(Exception e){ } return result; } }
之后我们就可以大玩特玩了。
import java.lang.reflect.Proxy; public class TestActionWithWoman { public static void main(String[] args) { ActionPrettyWomanInterface playWoman=new PlayPrettyWoman(); ActionPrettyWomanInterface helpWoman=new HelpPrettyWoman(); ActionPrettyWomanInterface fuckProxy=(ActionPrettyWomanInterface)Proxy. newProxyInstance(playWoman.getClass().getClassLoader(), playWoman.getClass().getInterfaces(), new SexyInvocationHandler(playWoman)); fuckProxy.action(); ActionPrettyWomanInterface remedyProxy=(ActionPrettyWomanInterface)Proxy. newProxyInstance(helpWoman.getClass().getClassLoader(), helpWoman.getClass().getInterfaces(), new SexyInvocationHandler(helpWoman)); remedyProxy.action(); System.out.println("fuckProxy classname:"+fuckProxy.getClass().getName()); } }
控制台输出:
引用
$Proxy0
让美女穿上丝袜,剪开档.
我在玩美女.
抽跟烟~~~.
$Proxy0
让美女穿上丝袜,剪开档.
我在帮美女补丝袜 .
抽跟烟~~~.
fuckProxy classname:$Proxy0
让美女穿上丝袜,剪开档.
我在玩美女.
抽跟烟~~~.
$Proxy0
让美女穿上丝袜,剪开档.
我在帮美女补丝袜 .
抽跟烟~~~.
fuckProxy classname:$Proxy0
从中我们可以知道,当我们用代理机制创建关于接口或者类的对象时候,
它的对象实现是jdk产生的动态代理对象Proxy0。
当我们要调用玩美女或者帮助美女方法时候, 它的实际顺序是先调用InvocationHandler里的invoke, 然后invoke会通过反射调用玩美女或者帮助美女方法。
得出结论:如果我们不实现InvocationHandler的invoke方法,那么我们实际中的方法讲不会被调用到。所以这个类必须重写。
然后另外我们可以得知,创建对象除了new以后,还可以通过代理实现。
发表评论
-
ClassLoader 和 反射加载的区别
2014-09-30 15:18 688在websphere中,类加载顺序是 java核心库 shar ... -
实现浏览器安全下载
2013-09-15 18:05 699这种方式比较安全。不会暴露服务器路径。 csvFile为生成好 ... -
会是类无法加载到jvm中去的代码
2013-07-28 14:38 345static { System.exit ... -
jvm 加载同包 类
2013-06-22 06:57 788如果我自己新建立一个类,叫做 java.util.ArrayL ... -
for循环,即使不满足,最后也会递增掉
2013-06-18 20:29 1209public class Test { public st ... -
类的加载过程
2013-06-17 22:08 753load->连接验证->准备->解析-> ... -
Collection 集合 List
2013-06-17 09:13 6601.ArrayList是最常用的List实现类,内部是通过数组 ... -
object 的序列化和反序列化
2013-06-15 19:35 3856首先定义pojo. 这里必须要实现implements jav ... -
equals重载时候注意
2013-06-14 15:48 720第一,先判断传进来的是否为空,空就false. 第二,比较他们 ... -
jvm调优的实际应用
2013-06-11 19:55 1040具体调优,我们可以参照这里一位的文章 http://unixb ... -
父子类的加载顺序和父类参数
2013-06-01 09:53 951public class Father { static ... -
+操作符 不能被byte,short 类型接收
2013-06-01 09:37 740这样可以 public static void main(S ... -
一家银行网站涉及的主要设计模式
2013-05-29 00:24 8411.组合模式 银行金融系统框架这边,我们最常见的就是用配置文件 ... -
简单工厂模式和工厂方法模式
2011-11-21 17:44 7791. 简单工厂模式 publci class S ... -
JAVA replaceAll 去所有空格
2011-11-16 19:51 5202public class Test1_1 { p ... -
泰文保持不乱码
2011-01-28 01:49 5432public class Test1 { publ ... -
observer模式
2010-05-07 14:45 865Observer模式定义对象间的一对多的依赖关系,当一个对象的 ... -
实际中遇到的command模式
2010-05-07 11:42 869Command 命令模式是一种对象行为型模 式,它主要解决 ... -
JAVA的内部类
2010-02-04 17:13 788成员内部类,静态内部类,局部内部类和 匿名内部类。 成员内 ... -
适配模式(Adapter) ,模板模式,桥接模式(Bridge )
2010-02-03 13:15 837适配模式(Adapter) 我想要得到接口A,但是却要类C里的 ...
相关推荐
Proxy原理说明的源码
一、IGMP的基本概念与工作原理 1. IGMP协议版本:目前存在IGMPv1、IGMPv2和IGMPv3三个版本,其中v1和v2主要关注加入和离开组播组,v3增加了对源选择的支持。 2. 组播组:由多个接收者组成的逻辑集合,每个接收者都...
1. **理解HiSuite Proxy原理**: - HiSuite Proxy是一种允许用户通过代理服务器来操作手机固件的工具,主要用于降级等场景。 - 正常情况下,用户通过HiSuite连接手机后,可以从华为的官方服务器下载相应的固件进行...
`kafka-rest-proxy` 是一个重要的工具,它提供了一个RESTful接口来与Apache Kafka集群交互。这个工具使得非Java客户端可以方便地使用HTTP协议来生产和消费Kafka消息,无需直接集成Kafka的Java客户端库。以下是对`...
代理服务器的源程序,只是一个示范,可以了解Proxy原理 program: proxyd module: proxyd.c summary: provides proxy tcp service for a host on an isolated network. programmer: Carl Harris ...
"Java动态代理语法Proxy类原理详解" Java动态代理语法Proxy类原理详解是Java语言中的一种非常重要的语法机制,它可以动态地生成代理对象,从而对目标对象进行增强和修改。本文将详细介绍Java动态代理语法Proxy类...
同时,理解代理服务的工作原理,如如何处理请求和响应,以及如何在客户端和服务器端进行交互,对于开发和维护GIS应用至关重要。 在资源包`resource-proxy-1.0`中,可能包含了这些代理服务的源代码、配置示例以及...
**PostgreSQL PL/Proxy原理与实践** PostgreSQL PL/Proxy是一种用于PostgreSQL数据库的轻量级分布式查询代理,设计用于解决大数据量、高并发读写请求以及提高数据库系统的可扩展性问题。它允许用户将数据库操作分布...
接下来,我们将深入探讨这个主题,包括ABAP Proxy的原理、创建过程以及调用方法。 ### ABAP Proxy简介 ABAP Proxy是SAP NetWeaver平台的一部分,它提供了一种灵活且可靠的通讯方式,特别是在分布式应用系统中。...
本文将详细介绍GoProxy-Android的核心概念、工作原理以及如何在Android Studio环境下进行开发和应用。 一、GoProxy-Android的核心概念 1. Go语言与GoProxy:GoProxy基于Go语言构建,Go语言以其高效的性能和强大的...
代理服务器的源程序,只是一个示范,可以了解Proxy原理
了解Influx-proxy的工作原理和配置方式对于优化InfluxDB环境至关重要。在实际应用中,合理利用Influx-proxy可以显著提升系统效率,确保服务的稳定性和响应速度。因此,深入理解并熟练掌握InfluxDB和Influx-proxy的...
"doc" 目录可能包含了更详细的用户文档、技术手册或者FAQ,这些资料可以帮助用户深入理解 3proxy 的工作原理和高级特性,解决使用过程中遇到的问题。 总的来说,3proxy-0.6.1 提供了一个全面的网络代理解决方案,...
ngx_http_proxy_connect_module是一个针对Nginx服务器的第三方模块,主要功能是支持HTTP代理的"CONNECT"方法。... 首先,我们来了解Nginx的...在部署和使用时,必须充分理解其工作原理和潜在风险,并采取必要的安全措施。
本文将详细探讨Proxylab的核心概念、实现原理以及可能遇到的挑战。 网络代理,顾名思义,是作为客户端和服务器之间的一个中介,它接收客户端的请求,转发到目标服务器,并将响应返回给客户端。在Proxylab中,我们...
了解并掌握ProxyPool的工作原理和实现细节,可以帮助我们构建自己的代理IP服务,提高网络任务的执行效率和成功率,同时降低被目标网站封锁的风险。对于从事网络爬虫、数据分析或安全测试的开发者来说,ProxyPool是一...
“nginx系列(十)nginx缓存代理proxy_cache和CDN实现的原理”这个标题揭示了本文将探讨的主题,主要集中在两个关键点上:一是Nginx的缓存代理机制proxy_cache,二是如何利用Nginx实现内容分发网络(CDN)的功能。...
这个代理程序的工作原理是创建一个服务器,监听`proxy_port`,当有客户端连接时,它会建立到`remote_host`的`service_port`的连接,并在两者之间转发数据,从而使得客户端可以通过代理服务器访问远程服务。...