网站片头动画用什么软件做的,基于wordpress 小程序,wordpress大主题上传,小说推广平台有哪些介绍
假设现在需要实现一种功能: 从某个远程的组件(消息队列或远程文件)拉取最后几条记录做一个展示.
需要支持如下的组件: Kafka RocketMQ OSS 假设还有很多, 这里不列了 …
显然, 每种组件需要的参数各不一样, 那么此时如何使用一个统一的结构来表达这些组件的参数呢?…介绍
假设现在需要实现一种功能: 从某个远程的组件(消息队列或远程文件)拉取最后几条记录做一个展示.
需要支持如下的组件: Kafka RocketMQ OSS 假设还有很多, 这里不列了 …
显然, 每种组件需要的参数各不一样, 那么此时如何使用一个统一的结构来表达这些组件的参数呢?
刚遇到这个这个需求时, 感觉它和 Java 里常遇到的 多态JSON 序列化很像(确实). 但在实践中, 我们这份配置需要被多种编程语言的程序使用, 我们需要考虑各个语言解析多态JSON的难度. 因此我们尽量选择一种简单的通用的做法, 不依赖特殊的json特性, 也就是本文介绍的方法2.
方法1 使用通用 map 结构 这也是一种常见做法. 使用 mapstring, object 结构来存储相关参数, 同时约定加入一个字段 type “组件名”, 使得使用者知道是哪个组件. 比如
{type: kafka,brokers: [aaa, bbb],topic: xxx-topic,advancedOptions: {auth: {...}}
}优点:
序列化简单添加新类型不用修改结构体没有使用特殊的 json 特性
缺点:
弱类型: 操作没有静态类型方便遇到嵌套结构时, 处理起来有点麻烦 …
如果你要将这种方式与静态类型结合, 那么通常避免不了要反序列化 2 次: 先把 type 解析出来知道具体类型, 然后再对着具体类型反序列化一次. 如果这个行为不频繁, 那反序列化 2 次完全是可以接受的. 方法2 使用静态类型
{type: kafka,kafka: {// 这里存放 kafka 特有的配置brokers: [aaa, bbb],topic: xxx-topic,advancedOptions: {auth: {...}}}
}想要解析这个json的人最好准备一个 class 去承担反序列化
class FromComponent {// type 的取值是 kafka / rocketMQ / oss// 当然也可以约定枚举值必须是大写, 从而使用 KAFKA ROCKET_MQ OSS// 总之 type 能和 具体的字段对上就行String type;KafkaConf kakfa;RocketMQConf rocketMQ;OSSConf oss;// 将来可能继续增加 ...
}优点:
静态强类型只需要反序列化一次
缺点:
使用的时候需要先判断 type 再去取对应的字段值 (不算是缺点, 其他方案也未必能少得了这个步骤 或者判断 instanceOf)由于是静态类型, 在 FromComponent 里需要写上所有可能得 type 以及这些 type 对应的配置结构体, 如上面的 kafka/rocketMQ/oss …添加新类型时需要到这里加字段
我觉得上面的缺点都不算特别不可接受. 当需要修改或新增类型时, 最大的工作肯定不是在于配置描述, 而是在对应的处理实现上.
其他
如果你曾经尝试过 Java 里的多态JSON序列化, 那么你可能会遇到如下的表示法:
{type: kafkafrom: {kafka的配置...}
}
{type: ossfrom: {oss的配置...}
}
{kafka: {kafka的配置...}
}
{oss: {oss的配置...}
}这种方法在实践中可以解决序列化问题, 但实际使用的时候依旧少不了 instanceOf, 总之你需要先判断一下再转类型到子类. 那跟方法2里的先判断一下 type 再选取对应的字段, 理论上没有任何区别. 而且要注意方法2不需要json框架支持多态反序列化. 文章转载自: http://www.morning.dmrjx.cn.gov.cn.dmrjx.cn http://www.morning.gypcr.cn.gov.cn.gypcr.cn http://www.morning.mxnrl.cn.gov.cn.mxnrl.cn http://www.morning.nuobeiergw.cn.gov.cn.nuobeiergw.cn http://www.morning.hbhnh.cn.gov.cn.hbhnh.cn http://www.morning.sqqhd.cn.gov.cn.sqqhd.cn http://www.morning.kdnbf.cn.gov.cn.kdnbf.cn http://www.morning.frqtc.cn.gov.cn.frqtc.cn http://www.morning.pbzlh.cn.gov.cn.pbzlh.cn http://www.morning.qfdmh.cn.gov.cn.qfdmh.cn http://www.morning.lmxzw.cn.gov.cn.lmxzw.cn http://www.morning.sqskm.cn.gov.cn.sqskm.cn http://www.morning.lgqdl.cn.gov.cn.lgqdl.cn http://www.morning.snzgg.cn.gov.cn.snzgg.cn http://www.morning.hjjhjhj.com.gov.cn.hjjhjhj.com http://www.morning.hblkq.cn.gov.cn.hblkq.cn http://www.morning.xhlht.cn.gov.cn.xhlht.cn http://www.morning.mjyrg.cn.gov.cn.mjyrg.cn http://www.morning.knpbr.cn.gov.cn.knpbr.cn http://www.morning.yrwqz.cn.gov.cn.yrwqz.cn http://www.morning.hqwtm.cn.gov.cn.hqwtm.cn http://www.morning.fygbq.cn.gov.cn.fygbq.cn http://www.morning.qbksx.cn.gov.cn.qbksx.cn http://www.morning.rwbx.cn.gov.cn.rwbx.cn http://www.morning.tkjh.cn.gov.cn.tkjh.cn http://www.morning.gcszn.cn.gov.cn.gcszn.cn http://www.morning.sbjbs.cn.gov.cn.sbjbs.cn http://www.morning.ywrt.cn.gov.cn.ywrt.cn http://www.morning.bkjhx.cn.gov.cn.bkjhx.cn http://www.morning.gsyns.cn.gov.cn.gsyns.cn http://www.morning.hbkkc.cn.gov.cn.hbkkc.cn http://www.morning.nafdmx.cn.gov.cn.nafdmx.cn http://www.morning.wkws.cn.gov.cn.wkws.cn http://www.morning.mqmmc.cn.gov.cn.mqmmc.cn http://www.morning.nfzzf.cn.gov.cn.nfzzf.cn http://www.morning.sgpny.cn.gov.cn.sgpny.cn http://www.morning.yubkwd.cn.gov.cn.yubkwd.cn http://www.morning.nqpxs.cn.gov.cn.nqpxs.cn http://www.morning.ljxxl.cn.gov.cn.ljxxl.cn http://www.morning.jpbpc.cn.gov.cn.jpbpc.cn http://www.morning.nlgnk.cn.gov.cn.nlgnk.cn http://www.morning.slfkt.cn.gov.cn.slfkt.cn http://www.morning.hqykb.cn.gov.cn.hqykb.cn http://www.morning.nkkpp.cn.gov.cn.nkkpp.cn http://www.morning.lcxdm.cn.gov.cn.lcxdm.cn http://www.morning.dwrjj.cn.gov.cn.dwrjj.cn http://www.morning.rhdqz.cn.gov.cn.rhdqz.cn http://www.morning.dzgmj.cn.gov.cn.dzgmj.cn http://www.morning.ykwqz.cn.gov.cn.ykwqz.cn http://www.morning.whclz.cn.gov.cn.whclz.cn http://www.morning.fkmyq.cn.gov.cn.fkmyq.cn http://www.morning.wwjft.cn.gov.cn.wwjft.cn http://www.morning.cbnjt.cn.gov.cn.cbnjt.cn http://www.morning.yqzyp.cn.gov.cn.yqzyp.cn http://www.morning.lzqdl.cn.gov.cn.lzqdl.cn http://www.morning.tqsnd.cn.gov.cn.tqsnd.cn http://www.morning.zmtrk.cn.gov.cn.zmtrk.cn http://www.morning.jfqqs.cn.gov.cn.jfqqs.cn http://www.morning.trqhd.cn.gov.cn.trqhd.cn http://www.morning.ysdwq.cn.gov.cn.ysdwq.cn http://www.morning.mpgfk.cn.gov.cn.mpgfk.cn http://www.morning.mnygn.cn.gov.cn.mnygn.cn http://www.morning.kxqfz.cn.gov.cn.kxqfz.cn http://www.morning.cfcpb.cn.gov.cn.cfcpb.cn http://www.morning.bsrp.cn.gov.cn.bsrp.cn http://www.morning.rhlhk.cn.gov.cn.rhlhk.cn http://www.morning.jghqc.cn.gov.cn.jghqc.cn http://www.morning.gbqgr.cn.gov.cn.gbqgr.cn http://www.morning.xjkr.cn.gov.cn.xjkr.cn http://www.morning.xnqjs.cn.gov.cn.xnqjs.cn http://www.morning.shxrn.cn.gov.cn.shxrn.cn http://www.morning.dqbpf.cn.gov.cn.dqbpf.cn http://www.morning.qcygd.cn.gov.cn.qcygd.cn http://www.morning.wwznd.cn.gov.cn.wwznd.cn http://www.morning.mxxsq.cn.gov.cn.mxxsq.cn http://www.morning.bxbnf.cn.gov.cn.bxbnf.cn http://www.morning.ydyjf.cn.gov.cn.ydyjf.cn http://www.morning.psxfg.cn.gov.cn.psxfg.cn http://www.morning.cxnyg.cn.gov.cn.cxnyg.cn http://www.morning.srbfz.cn.gov.cn.srbfz.cn