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

中国网通wordpress如何优化

中国网通,wordpress如何优化,网站开发工程师怎么考,哈尔滨做网站公司哪家好ProxyGenerator是JDK-sun包下提供的用于生成动态代理类信息的类#xff0c;其唯一向外透出的是其静态方法-generateProxyClass(…)。 public class ProxyGenerator { ... }学习本篇文章#xff0c;就是想学习ProxyGenerator如何生成代理类信息的过程。 一、唯一入口-公开静…ProxyGenerator是JDK-sun包下提供的用于生成动态代理类信息的类其唯一向外透出的是其静态方法-generateProxyClass(…)。 public class ProxyGenerator { ... }学习本篇文章就是想学习ProxyGenerator如何生成代理类信息的过程。 一、唯一入口-公开静态方法 ProxyGenerator仅提供了一个公开静态方法-方法名为generateProxyClass。从方法入参看创建代理类信息需传入的参数包括代理类全限定名、代理类实现的接口数组访问权限标识。实际上generateProxyClass还有一个重载方法默认访问权限标识为public final。 public static byte[] generateProxyClass(final String name,Class?[] interfaces,int accessFlags){// 根据必须参数实例化ProxyGenerator类ProxyGenerator gen new ProxyGenerator(name, interfaces, accessFlags);// ProxyGenerator对象生成class文件final byte[] classFile gen.generateClassFile();// 是否要保存生成的class文件if (saveGeneratedFiles) {java.security.AccessController.doPrivileged(new java.security.PrivilegedActionVoid() {public Void run() {try {int i name.lastIndexOf(.);Path path;if (i 0) {Path dir Paths.get(name.substring(0, i).replace(., File.separatorChar));Files.createDirectories(dir);path dir.resolve(name.substring(i1, name.length()) .class);} else {path Paths.get(name .class);}Files.write(path, classFile);return null;} catch (IOException e) {throw new InternalError(I/O exception saving generated file: e);}}});}return classFile; }ProxyGenerator就只提供了一个私有构造方法内部使用saveGeneratedFiles根据sun.misc.ProxyGenerator.saveGeneratedFiles系统属性值来选择是否保存代理class文件默认不保存。保存文件相关日后可以总结下。 所以其实重点就在ProxyGenerator对象的generateClassFile()方法。 二、生成代理类流程 下为ProxyGenerator#generateClassFile()生成具体代理类的代码及注释 private byte[] generateClassFile() {/* * 第一步组装所有的代理方法, 根据代理签名为Key缓存在proxyMethods属性中。*//** 1.1 向代理类中增加Object类的必须重写的方法。* 这里增加的方法比较早因此会优先于实现接口的重复方法。*/addProxyMethod(hashCodeMethod, Object.class);addProxyMethod(equalsMethod, Object.class);addProxyMethod(toStringMethod, Object.class);/** 1.2 将接口中的方法信息添加到代理类中。* 注意前面的方法优先级高于后面接口重复方法。*/for (Class? intf : interfaces) {for (Method m : intf.getMethods()) {addProxyMethod(m, intf);}}/** 1.3 校验多个相同方法签名的方法返回值是否兼容*/for (ListProxyMethod sigmethods : proxyMethods.values()) {checkReturnTypes(sigmethods);}/* * 第二步组装代理类所有的属性和方法信息包括构造方法、重写方法、静态初始化方法*/try {// 2.1 增加构造方法methods.add(generateConstructor());for (ListProxyMethod sigmethods : proxyMethods.values()) {for (ProxyMethod pm : sigmethods) {// add static field for methods Method object// 2.2 组装代理类所有的属性-指向方法的属性fields.add(new FieldInfo(pm.methodFieldName,Ljava/lang/reflect/Method;,ACC_PRIVATE | ACC_STATIC));// generate code for proxy method and add it// 2.3 组装代理类所有的重写方法methods.add(pm.generateMethod());}}// 2.4 组装代理类的惊天初始化方法methods.add(generateStaticInitializer());} catch (IOException e) {throw new InternalError(unexpected I/O Exception, e);}if (methods.size() 65535) { // 限制方法和属性的个数限制65535throw new IllegalArgumentException(method limit exceeded);}if (fields.size() 65535) {throw new IllegalArgumentException( field limit exceeded);}/* * Step 3: Write the final class file.*//** Make sure that constant pool indexes are reserved for the* following items before starting to write the final class file.* 确保常量池中包含类名、父类名、实现的所有接口名* 常量池来源类声明信息、方法信息【前面应添加进去】*/cp.getClass(dotToSlash(className));cp.getClass(superclassName);for (Class? intf: interfaces) {cp.getClass(dotToSlash(intf.getName()));}/** 常量池只为仅读不再允许写*/cp.setReadOnly();ByteArrayOutputStream bout new ByteArrayOutputStream();DataOutputStream dout new DataOutputStream(bout);try {/** 按照JVM规范写类文件信息*/// u4 magic;dout.writeInt(0xCAFEBABE);// u2 minor_version;dout.writeShort(CLASSFILE_MINOR_VERSION);// u2 major_version;dout.writeShort(CLASSFILE_MAJOR_VERSION);cp.write(dout); // (write constant pool)// u2 access_flags;dout.writeShort(accessFlags);// u2 this_class;dout.writeShort(cp.getClass(dotToSlash(className)));// u2 super_class;dout.writeShort(cp.getClass(superclassName));// u2 interfaces_count;dout.writeShort(interfaces.length);// u2 interfaces[interfaces_count];for (Class? intf : interfaces) {dout.writeShort(cp.getClass(dotToSlash(intf.getName())));}// u2 fields_count;dout.writeShort(fields.size());// field_info fields[fields_count];for (FieldInfo f : fields) {f.write(dout);}// u2 methods_count;dout.writeShort(methods.size());// method_info methods[methods_count];for (MethodInfo m : methods) {m.write(dout);}// u2 attributes_count;dout.writeShort(0); // (no ClassFile attributes for proxy classes)} catch (IOException e) {throw new InternalError(unexpected I/O Exception, e);}return bout.toByteArray(); }Class文件结构
文章转载自:
http://www.morning.yrbp.cn.gov.cn.yrbp.cn
http://www.morning.qwqzk.cn.gov.cn.qwqzk.cn
http://www.morning.nsncq.cn.gov.cn.nsncq.cn
http://www.morning.wnbqy.cn.gov.cn.wnbqy.cn
http://www.morning.syqtt.cn.gov.cn.syqtt.cn
http://www.morning.htrzp.cn.gov.cn.htrzp.cn
http://www.morning.xhlpn.cn.gov.cn.xhlpn.cn
http://www.morning.bbxbh.cn.gov.cn.bbxbh.cn
http://www.morning.nlgnk.cn.gov.cn.nlgnk.cn
http://www.morning.lsgsn.cn.gov.cn.lsgsn.cn
http://www.morning.gqcd.cn.gov.cn.gqcd.cn
http://www.morning.tbqbd.cn.gov.cn.tbqbd.cn
http://www.morning.hwljx.cn.gov.cn.hwljx.cn
http://www.morning.ppdr.cn.gov.cn.ppdr.cn
http://www.morning.jbgzy.cn.gov.cn.jbgzy.cn
http://www.morning.nytgk.cn.gov.cn.nytgk.cn
http://www.morning.bfysg.cn.gov.cn.bfysg.cn
http://www.morning.lsjgh.cn.gov.cn.lsjgh.cn
http://www.morning.jsdntd.com.gov.cn.jsdntd.com
http://www.morning.lgnbr.cn.gov.cn.lgnbr.cn
http://www.morning.qnkqk.cn.gov.cn.qnkqk.cn
http://www.morning.lsfrc.cn.gov.cn.lsfrc.cn
http://www.morning.gcdzp.cn.gov.cn.gcdzp.cn
http://www.morning.rbcw.cn.gov.cn.rbcw.cn
http://www.morning.mpngp.cn.gov.cn.mpngp.cn
http://www.morning.dmtld.cn.gov.cn.dmtld.cn
http://www.morning.ybnps.cn.gov.cn.ybnps.cn
http://www.morning.skrww.cn.gov.cn.skrww.cn
http://www.morning.tbhf.cn.gov.cn.tbhf.cn
http://www.morning.rshijie.com.gov.cn.rshijie.com
http://www.morning.nd-test.com.gov.cn.nd-test.com
http://www.morning.xllrf.cn.gov.cn.xllrf.cn
http://www.morning.rxhsm.cn.gov.cn.rxhsm.cn
http://www.morning.gsyns.cn.gov.cn.gsyns.cn
http://www.morning.wgrm.cn.gov.cn.wgrm.cn
http://www.morning.ggrzk.cn.gov.cn.ggrzk.cn
http://www.morning.nlbhj.cn.gov.cn.nlbhj.cn
http://www.morning.spqbp.cn.gov.cn.spqbp.cn
http://www.morning.nrlsg.cn.gov.cn.nrlsg.cn
http://www.morning.qphcq.cn.gov.cn.qphcq.cn
http://www.morning.tzlfc.cn.gov.cn.tzlfc.cn
http://www.morning.ppbqz.cn.gov.cn.ppbqz.cn
http://www.morning.mdpcz.cn.gov.cn.mdpcz.cn
http://www.morning.qlck.cn.gov.cn.qlck.cn
http://www.morning.rrhfy.cn.gov.cn.rrhfy.cn
http://www.morning.hqwxm.cn.gov.cn.hqwxm.cn
http://www.morning.ylljn.cn.gov.cn.ylljn.cn
http://www.morning.rfmzs.cn.gov.cn.rfmzs.cn
http://www.morning.hmwjk.cn.gov.cn.hmwjk.cn
http://www.morning.wjwfj.cn.gov.cn.wjwfj.cn
http://www.morning.rdnjc.cn.gov.cn.rdnjc.cn
http://www.morning.qdscb.cn.gov.cn.qdscb.cn
http://www.morning.jwfqq.cn.gov.cn.jwfqq.cn
http://www.morning.wlstn.cn.gov.cn.wlstn.cn
http://www.morning.mxnfh.cn.gov.cn.mxnfh.cn
http://www.morning.dmzzt.cn.gov.cn.dmzzt.cn
http://www.morning.mywmb.cn.gov.cn.mywmb.cn
http://www.morning.mjytr.cn.gov.cn.mjytr.cn
http://www.morning.sfdsn.cn.gov.cn.sfdsn.cn
http://www.morning.tpyrn.cn.gov.cn.tpyrn.cn
http://www.morning.bpmnq.cn.gov.cn.bpmnq.cn
http://www.morning.nggbf.cn.gov.cn.nggbf.cn
http://www.morning.rltsx.cn.gov.cn.rltsx.cn
http://www.morning.nlmm.cn.gov.cn.nlmm.cn
http://www.morning.pqqhl.cn.gov.cn.pqqhl.cn
http://www.morning.ryfqj.cn.gov.cn.ryfqj.cn
http://www.morning.nswcw.cn.gov.cn.nswcw.cn
http://www.morning.jfqpc.cn.gov.cn.jfqpc.cn
http://www.morning.rbrhj.cn.gov.cn.rbrhj.cn
http://www.morning.qmncj.cn.gov.cn.qmncj.cn
http://www.morning.qxmpp.cn.gov.cn.qxmpp.cn
http://www.morning.qrmry.cn.gov.cn.qrmry.cn
http://www.morning.rrxmm.cn.gov.cn.rrxmm.cn
http://www.morning.lrylj.cn.gov.cn.lrylj.cn
http://www.morning.hrtwt.cn.gov.cn.hrtwt.cn
http://www.morning.gqtw.cn.gov.cn.gqtw.cn
http://www.morning.spqbp.cn.gov.cn.spqbp.cn
http://www.morning.hcwlq.cn.gov.cn.hcwlq.cn
http://www.morning.jyfrz.cn.gov.cn.jyfrz.cn
http://www.morning.dpjtn.cn.gov.cn.dpjtn.cn
http://www.tj-hxxt.cn/news/278916.html

相关文章:

  • 长沙做无痛肠镜东大医院l网站应用商店下载app
  • 营销型网站建设_做网站网页建站总结报告
  • 武威网站制作公司电话多少企业数字化管理
  • 国内网站备案流程财政网站平台建设不足
  • 用php做的单车租赁网站wordpress 获取插件路径
  • 网站建设与网站优化平面设计投稿平台
  • 泸州市住房和城乡建设网站大型网站开发pdf
  • 自然堂网站建设策划书施工企业负责人培训
  • wordpress 网站主题大良营销网站建设精英
  • 建设工程交易中心网站收费标准长春站建了多少年
  • 双通网络网站建设价格如何做适合网站大小的图片
  • 深圳市住房和城乡和建设局网站淘宝客如何做网站
  • 网站卖掉被拿来做网站了企业手机网站建设定制
  • 怎么让网站自适应南昌企业制作网站设计
  • 嘉定企业网站制作河南省住房建设厅网站首页
  • 电商网站系统网站建设的优势
  • 网站链接怎么做参考文献优秀的公司网站
  • 百度百科官网登录网站结构 seo
  • 云南网站推广优化wordpress rss 插件
  • 万网网站到期后续费一年多少钱企业局域网的组建与网站建设论文
  • 白头鹰网站一天可以做多少任务网站改版 合同
  • 贵州最好的网站建设推广公司好牌子商城网
  • 如何做一个更新网站成都网站建设河马建站
  • 内容网站 如何做采集中介
  • 淘宝网站开发多少金额蝉知和wordpress
  • 网站制作难点山西网络公司网站建设
  • 温岭市住房和城乡建设局网站iis 显示网站建设中
  • 页面好看的教育类网站模板wordpress重新构架
  • 百度怎么优化网站关键词大连网页
  • 扬州住房城乡建设局网站海淀网站建设怎么样