java 动态代理
1、首先必须有个接口
package reflection;
public interface HelloWorld {
void sayHelloWorld();
void testHello(String hello);
}
2、接口的实现类
package reflection;
public class HelloWorldImpl implements HelloWorld {
public void sayHelloWorld() {
System.out.println("Hello World!");
}
public void testHello(String hello) {
System.out.println(hello);
}
}
3、实现动态代理类,此类必须实现接口InvocationHandler,实现洗接口的方法
invoke(Object proxy, Method method, Object[] args)
在实际使用时,第一个参数obj一般是指代理类,method是被代理的方法,args为该方法的参数数组。
package reflection;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class HelloWorldHandler implements InvocationHandler {
// 要代理的原始对象
private Object objOriginal;
/**
* 构造函数。
* @param obj 要代理的原始对象。
*/
public HelloWorldHandler(Object obj) {
this.objOriginal = obj;
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
Object result;
// 方法调用之前
doBefore();
// 调用原始对象的方法
result = method.invoke(this.objOriginal, args);
// 方法调用之后
doAfter();
return result;
}
private void doBefore() {
System.out.println("before method invoke!");
}
private void doAfter() {
System.out.println("after method invoke!");
}
}
Proxy:该类即为动态代理类,作用类实现了InvocationHandler接口的代理类,其中主要包含以下函数。
protected Proxy(InvocationHandler h):构造函数,用于给内部的h赋值。
static Class getProxyClass (ClassLoader loader, Class[] interfaces):获得一个代理类,其中loader是类装载器,interfaces是真实类所拥有的全部接口的数组。
static Object newProxyInstance(
相关文档:
由于大家对package的使用存在太多困惑,我在这里将自己对于package的使用的领悟进行一点总结:
package中所存放的文件
所有文件,不过一般分一下就分这三种
1,java程序源文件,扩展名为.java。
2,编译好的java类文件,扩展名为.class。
3,其他文件,其他任何文件,也称为resource
例如图片 ......
垃圾回收器是如何工作的?我现在就简单的介绍一下
首先要明确几点:
Java是在堆上为对象分配空间的
垃圾回收器只跟内存有关,什么IO啊,网络连接啊,管它P事
当可用内存数量较低时,Sun版本的垃圾回收器才会被激活
在垃圾回收器回收垃圾之前,我们先来了解一下Java分配对象的方式,Java的堆更像一个传送带,每分配一 ......
第一个阶段(基础阶段)
1、你要掌握HTML语言,认识常用的HTML一些标签。我推荐大家学习孙鑫老师视频的《HTML语言速成》
2、掌握JAVA基础,也就是J2SE,我推荐大家学习马士兵老师的J2SE视频。当时我学习J2SE主要学习
的张孝祥和孙鑫老师的视频(当时还不知道马士兵老师呢!呵呵)不过我认为孙鑫老师前面几讲还是 ......
2010-03-10
最近做项目遇到了一个问题,需要将客户端到处的加密ZIP压缩包直接导入到系统中。在网上查了下关于ZIP解密的问题,发现了winzipaes这个开源项目http://code.google.com/p/winzipaes ,这个项目需要依赖bcprov-jdk14-145.jar这个开源包,两个包联合使用可以解密AES -256算法的加密密码。
因为系统使用的是JDK1.4 ......
DES算法为密码体制中的对称密码体制,又被成为美国数据加密标准
,是1972年美国IBM
公司研制的对称密码体制加密算法。其密钥长度为56位,明文按64位进行分组,将分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。
DES加密算法特点:分组比较短、密钥太短、密码生命周期短、运算速度较慢。
DES工作 ......