生活是一门技术,可能是我技术不行
什么是动态代理?动态代理是相对于静态代理而言的,是指在程序运行期间,动态的创建出一个虚拟的代理对象。相较于静态代理,动态代理,只需要接口和目标类,不再需要一个真实的代理类了。基本语法import java.lang.reflect.Proxy; Proxy.newProxyInstance(){ loader, //类加载器(目标类的类加载器) interfaces, //接口数组(目标类和虚拟代理类的共同接口的字节码对象) h // 句柄接口(虚拟代理处理问题的具体实现) }具体实现,假设已经有了一个目标类Target,一个目标类的接口TargetInterface,一个方法show,一个带参方法say(int x)TargetInterface targetPorxy = Porxy.newProxyInstace(){ Target.class.getClassloader(), new class[]{TargetInterface.class}, new InvocationHandler(){ public Object invoke(Ob
静态代理,需要一个接口,和两个实现类(分别是代理类和目标类)。为什么需要接口?接口是规范,约定了实现类必须要完成的方法接口public interface IDemo(){ public void show(); }目标类public class Target implements IDemo(){ public void show(){ } }代理类public class proxy implements IDemo(){ public void show(){ // 代理调用目标类的方法 new Target().show(); } }
假设有如下一个类package com.wlmqtc public class Demo(){ }java 获取一个类的字节码对象,共有三种方法,概览:Demo.class new Demo().getClass() Class.forName("com.wlmqtc.Demo")类名.classClass clzz = Demo.class;对象.getClass()Demo demo = new Demo();Class clzz = demo.getClass();Class.forName(类的全包名)String className = "com.wlmqtc.Demo";Class clzz = Class.forName(className);
根据回忆,写一些常用命令,基本满足日常使用。回忆通常靠不住,如有错误,赶紧Diss我vim编辑器有三种模式,分别是:普通、编辑、命令三种模式的切换编辑-->普通,ESC普通-->编辑,插入键任选其一,如 i普通-->命令,:各种插入i 插入 在光标前a 追加 在光标后o 另起一行插入的方式太多,所以单独写,一般一个 i 就够了。yy 复制一行dd 删除一行p 粘贴gg 跳转到首行G 跳转到尾行:set nu 显示行号:set nonu 隐藏行号/keyword 搜索keyword再按一下n表示搜索下一个keywordu 撤销上一个操作ctrl-r 恢复上一个撤销:w 保存 :q退出vim编辑器 !强制示例::wq! 强制性的保存并退出编辑器还有一个常用的控制光标移动方向的四个键,hjkl按键移动方向h左j下k上l右有了以上技能,基本可以控制vim了,更多神秘高级技能的解锁,好像也很少用,现用现查也行
@interface是自定义注解的关键字public @interface myAnno(){ String url(); String ip(); }一个拥有两个成员的简单自定义注解定义成功了,就是这么简单。注意:注解的成员名后面必须有一个括号,如url()。为什么?没有为什么,这是语法要求……其他用法1public @interface myAnno(){ // 通过default关键字可以定义一个自带默认值的成员 String url() default "www.wlmqtc.com"; String ip(); }其他用法2public @interface myAnno(){ // 仅有一个成员,且成员名为value()时,使用时,可以省略成员名 String value(); }
Minghui
却道天凉好个秋!
CC BY-NC-SA 4.0