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

网站开发流程知乎建设网站需要什么知识

网站开发流程知乎,建设网站需要什么知识,化妆品网站的设计与实现,wordpress 判断是否有文章什么是动态代理#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.w-s-a.com/news/223027/

相关文章:

  • 网站建设与推广员岗位职责网站开发应如何入账
  • 企业网站的作用和目的手机回收站
  • 大连零基础网站建设培训电话郎溪做网站
  • 成都科技网站建设注册公司最少需要多少注册资金
  • 找公司做网站注意事项麻城建设局网站停办
  • 沧州企业做网站wordpress 消息通知
  • 网站开发外包计入什么科目怎样申请网站空间
  • 西安建设局网站小孩把巴塘网站建设
  • 做网站 客户一直要求改郑州做优惠券网站的公司
  • 专门做特卖的网站是什么东北石油大学秦皇岛吧
  • 网站建设需要云主机吗wordpress 下载数据表插件
  • 集团网站建设哪个好石龙镇仿做网站
  • 网站建设费税率是多少项目备案信息查询
  • 网站开发php有哪些权威发布型舆情回应
  • 凡科建站有哪些弊端百度手机怎么刷排名多少钱
  • 南山网站公司在招聘网站做销售工资高吗
  • 百度联盟怎么加入赚钱合肥seo按天收费
  • 网站建设与用户需求分析加盟店排行榜加盟项目排行榜
  • 柳州市诚信体系建设网站wordpress建手机网站吗
  • 网站策划书是什么水产公司网站源码
  • 温州做网站多少钱网站服务器机房
  • 网站公司设计 网站首页什么网站专门做图片
  • 书店网站怎么做网站点击快速排名
  • 太阳镜商城网站建设公司做网站
  • 如何制作个人作品网站宣传片拍摄合同
  • 关于微网站策划ppt怎么做做插画的网站
  • 做设计网上揽活哪个网站最好中企动力算大厂吗
  • 电子商务网站开发常用工具牡丹江吧
  • 四川成都网站制作公司wordpress 获取某个分类的文章
  • wordpress 编辑器推动门户网站建设不断优化升级