当前位置: 首页 > news >正文

乐辰科技网站建设网站建设怎么配置伪静态文件

乐辰科技网站建设,网站建设怎么配置伪静态文件,四川建设网站公司,广州新闻发布什么是动态代理#xff1f;以下为个人理解:动态代理就是在程序运行的期间#xff0c;动态地针对对象的方法进行增强操作。并且这个动作的执行者已经不是this对象了#xff0c;而是我们创建的代理对象#xff0c;这个代理对象就是类似中间人的角色#xff0c;帮…什么是动态代理以下为个人理解:动态代理就是在程序运行的期间动态地针对对象的方法进行增强操作。并且这个动作的执行者已经不是this对象了而是我们创建的代理对象这个代理对象就是类似中间人的角色帮助我们为目标方法嵌入一些其他的逻辑进去。jdk动态代理的原理jdk自带的动态代理的工作原理是利用反射的newInstance创建一个代理对象(proxy)获取到目标接口的方法然后我们就可以在Invoke之前或之后做操作。它抽取出了一个invokeHandler里面就有目标method。试想一下当我们拥有了class对象增强逻辑(invokeHandler)也就是增强的目标方法之后我们自己利用反射不利用Proxy也可以很容易写出我们自己的动态代理。但是问题就在于我们只有明确了目标类之后通过自己编写Proxy类实现目标接口往里面塞invoktionHandler, 最后New出来这个实实在在的对象。而jdk提供的动态代理却可以在并不知情的情况下帮我们做这一系列的动作。jdk生成代理类时并没有经历源码阶段编译阶段而是直接到字节码阶段它生成的代理类是看不到的因为它直接就是字节码文件了。 它帮我们继承了Proxy类并且还动态的帮助我们继承了目标接口。也就是说它帮我们写代码了。里面用到的技术是ASM技术它可以直接生成我们想要的字节码。jdk方法反射调用优化:invoke() 利用反射进行本地调用效率低下它在调用了一定的次数(16)之后会生成实例化对象变成正常调用。InvocationHandler接口publicinterfaceInvocationHandler {​ publicObjectinvoke(Objectproxy, Methodmethod, Object[] args)throwsThrowable; }源码CallerSensitivepublicstaticObjectnewProxyInstance(ClassLoaderloader, Class?[] interfaces, InvocationHandlerh) throwsIllegalArgumentException{ Objects.requireNonNull(h);​ finalClass?[] intfsinterfaces.clone(); finalSecurityManagersmSystem.getSecurityManager(); if (sm!null) { checkProxyAccess(Reflection.getCallerClass(), loader, intfs); }​ /* * Look up or generate the designated proxy class. */ Class?clgetProxyClass0(loader, intfs);​ /* * Invoke its constructor with the designated invocation handler. */ try { if (sm!null) { checkNewProxyPermission(Reflection.getCallerClass(), cl); }​ finalConstructor?conscl.getConstructor(constructorParams); finalInvocationHandlerihh; if (!Modifier.isPublic(cl.getModifiers())) { AccessController.doPrivileged(newPrivilegedActionVoid() { publicVoidrun() { cons.setAccessible(true); returnnull; } }); } returncons.newInstance(newObject[]{h}); } catch (IllegalAccessException|InstantiationExceptione) { thrownewInternalError(e.toString(), e); } catch (InvocationTargetExceptione) { Throwablete.getCause(); if (tinstanceofRuntimeException) { throw (RuntimeException) t; } else { thrownewInternalError(t.toString(), t); } } catch (NoSuchMethodExceptione) { thrownewInternalError(e.toString(), e); }}cglib动态代理的原理cglib动态代理的原理跟jdk的类似只不过它是基于父类继承也就是不需要实现接口就可以做增强。它的内部并不是InvoktionHandler,而是方法拦截器 MethodInterceptor 。前面的jdk动态代理它是利用ASM技术帮我们动态编写了一个proxy对象其中继承了Proxy父类实现了目标接口而cglib则是利用ASM直接帮助我们继承了目标类不需要接口。并且有所区别的是它不仅仅通过反射拿到method,还拿到了MethodProxy。MethodInterceptor接口 继承了Callback接口它的拦截方法里面有一个特殊的参数 MethodProxy,这玩意可以不通过反射调用方法通过invokeSuper() 方法可以直接正常调用。MethodProxy是怎么做到正常调用的其实就是我们前面提到的继承了Proxy父类之后就得到了父类的原始方法当我调用invokeSuper的时候直接调用的就是父类的原始方法。MethodInterceptorpublicinterfaceMethodInterceptorextendsCallback { Objectintercept(Objectvar1, Methodvar2, Object[] var3, MethodProxyvar4) throwsThrowable;}MethodProxyinvoke() 无反射调用invokeSuper() 无反射调用publicObjectinvoke(Objectobj, Object[] args) throwsThrowable { try { this.init(); MethodProxy.FastClassInfofcithis.fastClassInfo; returnfci.f1.invoke(fci.i1, obj, args); } catch (InvocationTargetExceptionvar4) { throwvar4.getTargetException(); } catch (IllegalArgumentExceptionvar5) { if (this.fastClassInfo.i10) { thrownewIllegalArgumentException(Protected method: this.sig1); } else { throwvar5; } }}publicObjectinvokeSuper(Objectobj, Object[] args) throwsThrowable { try { this.init(); MethodProxy.FastClassInfofcithis.fastClassInfo; returnfci.f2.invoke(fci.i2, obj, args); } catch (InvocationTargetExceptionvar4) { throwvar4.getTargetException(); }}
http://www.hkea.cn/news/14547886/

相关文章:

  • 网站建设的财务计划书上海资本公司排名
  • 论述网站建设引言盗用别人公司的产品图片做网站
  • 外冈网站建设台州手机网站制作
  • 大连开发区社保网站泊头哪有哪家做网站做的号
  • wordpress 密码注册巩义网站建设方式优化
  • 网站建设费用要多少微信小程序开发流程详细
  • 网站设计与制作说明书全免费建立自己的网站
  • 卖源码的网站宁德网站建设制作
  • 网站如何做浮窗网站申请页面
  • 爱站网长尾关键词搜索网站建设目标
  • 网站服务建设公司做文献ppt模板下载网站有哪些内容
  • 网站建设捌金手指专业1宁波网站推广优化公司电话
  • 网站开发用什么软件个人网页怎么制作
  • 做耳鼻喉医院网站多少钱制作手机网站工具
  • 婚庆网站建设的需求分析seo 对手 网站 自然
  • 宁夏建设工程质量监督站网站网站项目开发收费标准
  • 坂田英文网站制作写作的网站有哪些
  • 网站建设的商业阶段效果好的网站制作
  • 猎头公司主要做什么seo报价单
  • 政协 网站建设网站关键词长尾词
  • 专业开发网站建设男男互做网站泰国
  • 银川网站建设联系电话网站百度贴吧
  • 网站qq 微信分享怎么做的免费舆情网站直接打开
  • 某网站建设策划方案佛山刚刚发生的事
  • 做攻略的网站免费建站资源
  • 长沙外贸网站建设大型门户网站
  • 旅游网站开发实验报告学校网站模板 dedecms
  • 网页设计做音乐网站网站分布
  • flash网站多少钱app制作下载
  • 扬州市建设厅网站php网站开发实战开发