- 浏览: 1397827 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (346)
- linux (10)
- hbase (50)
- hadoop (23)
- java (52)
- java multi-thread (13)
- Oracle小记 (41)
- 机器学习 (12)
- 数据结构 (10)
- hadoop hive (16)
- java io (4)
- jms (1)
- web css (1)
- kafka (19)
- xml (2)
- j2ee (1)
- spring (6)
- ibatis (2)
- mysql (3)
- ext (3)
- lucene (3)
- hadoop pig (3)
- java nio (3)
- twemproxy (1)
- antlr (2)
- maven (6)
- mina (1)
- 列数据库 (1)
- oozie (2)
- mongodb (0)
- 报错 (0)
- jetty (1)
- neo4j (1)
- zookeeper (2)
- 数据挖掘 (3)
- jvm (1)
- 数据仓库 (4)
- shell (3)
- mahout (1)
- python (9)
- yarn (3)
- storm (6)
- scala (2)
- spark (5)
- tachyon (1)
最新评论
-
guokaiwhu:
赞啊!今晚遇到相同的问题,正追根溯源,就找到了博主!
hbase 报错gc wal.FSHLog: Error while AsyncSyncer sync, request close of hlog YouAr -
喁喁不止:
很清楚,有帮助。
hive常用函数 -
dsxwjhf:
Good job !!
kafka获得最新partition offset -
Locker.Xai:
参考了
freemaker教程 -
maoweiwer:
为啥EPHEMERAL_SEQUENTIAL类型的节点并没有自 ...
zookeeper 入门讲解实例 转
动态代理示例
interface AbstractClass { public void show(); } public class ClassA implements AbstractClass{ @Override public void show() { // TODO Auto-generated method stub System.out.println("我是A类"); } } public class ClassB implements AbstractClass{ @Override public void show(){ System.out.println("我是B类"); } } public class Invoker implements InvocationHandler{ AbstractClass ac; public Invoker(AbstractClass ac){ this.ac = ac; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { method.invoke(ac, args); System.out.println("代理"); return null; } } @Test public void test(){ Invoker invoker1 = new Invoker(new ClassA()); AbstractClass ac1 = (AbstractClass) Proxy.newProxyInstance(AbstractClass.class.getClassLoader(), new Class[]{AbstractClass.class}, invoker1); ac1.show(); Invoker invoker2 = new Invoker(new ClassB()); AbstractClass ac2 = (AbstractClass) Proxy.newProxyInstance(AbstractClass.class.getClassLoader(), new Class[]{AbstractClass.class}, invoker2); ac2.show(); }
主要的操作都在Proxy.newProxyInstance静态方法中,
调用
byte[] proxyClassFile = ProxyGenerator.generateProxyClass(
filepath, a1.getClass().getInterfaces());
会生成实现用户给出的interface和proxy的类的class,
调用
proxyClass = defineClass0(loader, proxyName,
proxyClassFile, 0, proxyClassFile.length);
会将class的字节转为用户的类
因为都是native方法,我也就没研究这两个方法是怎么实现的了
可以将proxygenerator输出的字节输出看看
String filepath = "fileclass"; AbstractClass a1 = new ClassA(); byte[] proxyClassFile = ProxyGenerator.generateProxyClass( filepath, a1.getClass().getInterfaces()); File f = new File("f:/classes/tempProxy.class"); try { FileOutputStream fos = new FileOutputStream(f); fos.write(proxyClassFile); fos.flush(); fos.close(); System.out.println("finish"); } catch (Exception e) { // TODO: handle exception }
发表评论
-
java内存使用查看 转
2015-10-29 14:51 868转:http://mxsfengg.iteye.com ... -
Java线上应用故障排查之二:高内存占用
2015-08-17 16:28 0搞Java开发的,经常会碰到下面两种异常: 1、java. ... -
java filechannel
2015-08-14 15:42 1053Java NIO中的FileChannel是一个连接到文件 ... -
Java线上应用故障排查之一:高CPU占用
2015-08-06 13:58 6185转http://blog.csdn.net/blade20 ... -
java注释
2015-04-10 15:49 0Java注解是附加在代码中的一些元信息,用于一些工具在编译、 ... -
转jvm
2015-03-24 14:13 1673一、回顾JVM内存分配 ... -
java 域名转换
2014-12-22 11:05 768import java.net.InetAddres ... -
freemaker教程
2014-10-13 11:56 1981新换了工作,与想象差距也太大了 最近沦落到做报表了,我就 ... -
protocal buffers入门实例
2014-09-22 21:08 1654hadoop yarn中新的系列化protocol buf ... -
正则小计
2014-09-18 20:47 0&site=(.*?)&可以匹配site的值 ... -
在HBase中应用MemStore-Local Allocation Buffers解决Full GC问题
2014-06-13 23:05 1606译者注:上个月 ... -
java ipc 实例
2014-05-21 22:59 4879java ipc实例,仿照hadoop ipc写的实例 1 ... -
java worker thread模式
2014-03-25 22:46 1977转两个帖子 一个java wo ... -
bloom filter
2014-03-09 19:41 1954看到hadoop join和hbase都有bloo ... -
java reference
2014-03-09 17:49 716转 http://www.iteye.com/to ... -
annotation实例
2014-02-11 22:04 1140加载指定目录的所有class,通过注释区分实体类 p ... -
java获取子类 转
2014-02-11 16:58 3122获取子类 package com.tools; ... -
动态代理
2013-08-14 20:38 1081动态代理,转:http://langyu.iteye. ... -
java byte inputstream and outputstream
2013-02-18 11:47 0转http://blog.csdn.net/rcoder ... -
JVM同步浅析
2013-01-11 11:38 1650堆 (所有类的实例或 ...
相关推荐
运行这段代码,你会看到 "Before method call..."、"Doing something..." 和 "After method call..." 这样的输出,这就是动态代理在方法调用前后添加了额外操作的一个简单示例。 总结来说,Java动态代理是一种强大...
本示例将带你深入理解Java动态代理的概念,并通过一个简单易懂的demo来演示其用法。 1. **Java动态代理概念** Java动态代理基于Java反射机制,可以在运行时动态地创建代理类和代理对象。与静态代理(即手动编写...
下面是一个简单的动态代理示例: ```java interface MyService { void doSomething(); } class RealService implements MyService { @Override public void doSomething() { System.out.println("Real service...
以下是一个简单的Java动态代理示例: ```java public class MyInvocationHandler implements InvocationHandler { private Object target; public MyInvocationHandler(Object target) { this.target = target;...
现在,让我们看一个简单的JDK动态代理示例。假设我们有一个`MyService`接口和它的实现类`MyServiceImpl`: ```java public interface MyService { void doSomething(); } public class MyServiceImpl implements ...
以下是一个简单的Java动态代理和CGLIB代理的例子: ```java // 目标接口 public interface MyService { void doSomething(); } // 目标实现 public class MyServiceImpl implements MyService { @Override ...
本篇文章将深入探讨Java动态代理的概念、原理以及如何通过一个简单的"Hello, World!"示例来理解它。 动态代理,顾名思义,是在程序运行时动态地生成代理对象。与静态代理(编译时已知)相比,动态代理更加灵活,...
### Java代理模式与Java动态代理详解 #### 一、代理模式概述 代理模式是一种软件设计模式,它在客户端和目标对象之间提供了一种间接层。这种模式的主要目的是控制客户端对目标对象的访问,并且可以在不修改原有...
在提供的压缩包文件中,可能包含了一个简单的示例,展示了如何创建和使用动态代理。通过阅读和理解这个例子,你可以更深入地掌握动态代理的实现细节。如果你对某个部分有疑问,或者想要了解更多相关知识,可以参考...
以下是一个简单的静态代理模式示例: 1. 定义接口: ```java public interface Service { void doSomething(); } ``` 2. 实现目标对象: ```java public class RealService implements Service { @Override ...
Java 动态代理是Java平台提供的一种强大的工具,它允许我们在运行时动态生成代理类,这些代理类可以实现一组指定的接口,同时还能在方法调用前后添加自定义的行为。这种机制大大简化了面向切面编程(AOP)和事件监听...
以下是一个简单的静态代理实现示例: ```java // 目标接口 interface Service { void doSomething(); } // 目标实现类 class RealService implements Service { @Override public void doSomething() { System...
Java 动态代理机制是Java语言提供的一种在运行时创建代理类和代理对象的机制,主要涉及`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口。动态代理通常用于实现AOP(面向切面编程)、事件...
下面通过一个简单的例子来理解Java动态代理的工作原理: ```java // 定义接口 public interface HelloWorld { void sayHelloWorld(); } // 实现接口 public class HelloWorldImpl implements HelloWorld { ...
在提供的`SimpleDAOPattern`文件中,可能包含了实现上述功能的简单示例代码,包括DAO接口、实体类、动态代理的InvocationHandler实现,以及数据库连接和SQL生成的相关类。通过阅读和理解这些代码,开发者可以更直观...
下面是一个简单的动态代理示例: ```java interface MyService { void doSomething(); } class MyServiceImpl implements MyService { @Override public void doSomething() { System.out.println("Doing ...
Java动态代理是一种编程技术,主要用于在运行时创建一个新的对象,该对象可以作为现有接口的实现。动态代理的主要目的是为了在不修改原有代码的基础上,为已有的接口或类添加额外的功能,比如日志、事务管理、性能...
以下是一个简单的动态代理示例: ```java interface MyService { void doSomething(); } class RealService implements MyService { @Override public void doSomething() { System.out.println("Real Service...
在这个"java代码cmpp 2.0简单示例绝对可用"的项目中,我们可以了解到如何使用Java编程语言来实现CMPP 2.0协议的客户端。 首先,CMPP 2.0协议主要包含几个核心的消息类型,如CMPP_CONNECT、CMPP_SUBMIT、CMPP_...
总结来说,Java RMI简单示例主要展示了以下知识点: 1. **远程接口**:定义了远程方法的签名,需要继承`Remote`接口。 2. **远程对象**:服务器端的类实现远程接口,并继承`UnicastRemoteObject`,以支持远程调用。 ...