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

展会网站怎么做网页翻译软件哪个好

展会网站怎么做,网页翻译软件哪个好,中国工程网亿美,广东省广建设计集团有限公司为管理状态自定义序列化 a#xff09;概述 对状态使用自定义序列化#xff0c;包含如何提供自定义状态序列化程序、实现允许状态模式演变的序列化程序。 b#xff09;使用自定义状态序列化程序 注册托管 operator 或 keyed 状态时#xff0c;需要 StateDescriptor 来指…为管理状态自定义序列化 a概述 对状态使用自定义序列化包含如何提供自定义状态序列化程序、实现允许状态模式演变的序列化程序。 b使用自定义状态序列化程序 注册托管 operator 或 keyed 状态时需要 StateDescriptor 来指定状态的名称以及有关状态类型的信息Flink 的类型序列化框架使用类型信息为状态创建适当的序列化程序。 可以让 Flink 使用自定义的序列化程序来序列化托管状态只需使用自定义的 TypeSerializer 实现直接实例化StateDescriptor public class CustomTypeSerializer extends TypeSerializerTuple2String, Integer {...};ListStateDescriptorTuple2String, Integer descriptor new ListStateDescriptor(state-name,new CustomTypeSerializer());checkpointedState getRuntimeContext().getListState(descriptor);c状态序列化器与模式演化 包含状态序列化和模式进化相关的面向用户的抽象以及 Flink 如何与这些抽象交互的必要内部细节。 从保存点恢复时Flink 允许更改用于读取和写入先前注册状态的序列化程序当状态恢复时将为该状态注册一个新的序列化程序即用于访问已恢复作业中的状态的 StateDescriptor 附带的序列化程序这个新的序列化程序可能具有与以前的序列化程序不同的模式因此在实现状态序列化程序时除了读取/写入数据的基本逻辑外还需要实现如何更改序列化模式。 模式可能会在以下几种情况下发生变化 状态类型的数据模式已经改变。即从用作状态的 POJO 中添加或删除字段一般来说在更改数据模式后需要升级序列化程序的序列化格式。 序列化程序的配置已更改。为了使新的执行具有写入的状态模式的信息并检测模式是否已经改变在获取 operator 状态的保存点时需要将状态序列化器的快照与状态字节一起写入。 TypeSerializerSnapshot 抽象 public interface TypeSerializerSnapshotT {int getCurrentVersion();void writeSnapshot(DataOuputView out) throws IOException;void readSnapshot(int readVersion, DataInputView in, ClassLoader userCodeClassLoader) throws IOException;TypeSerializerSchemaCompatibilityT resolveSchemaCompatibility(TypeSerializerSnapshotT oldSerializerSnapshot);TypeSerializerT restoreSerializer(); }public abstract class TypeSerializerT { // ...public abstract TypeSerializerSnapshotT snapshotConfiguration(); }序列化程序的 TypeSerializerSnapshot 是一个时间点信息它是关于状态序列化程序写入 schema 的唯一记录以及还原与给定时间点相同的序列化程序所必需的附加信息 在 writeSnapshot 和 readSnapshot 方法中定义了在恢复时作为序列化程序快照应写入和读取的逻辑。 注意快照自己的写入模式可能也需要随着时间的推移而更改例如当希望向快照添加更多有关序列化程序的信息时为了便于实现这一点使用 getCurrentVersion 方法中定义的当前版本号对快照进行版本控制在还原时从保存点读取序列化程序快照时写入快照的 schema 的版本将提供给 readSnapshot 方法以便读取可以实现处理不同的版本。 在恢复时应在 resolveSchemaCompatibility 方法中实现检测新序列化程序的 schema 是否已更改的逻辑当在 operator 的恢复执行中以前注册的状态再次向新的序列化程序注册时旧的序列化程序快照将通过此方法提供给新的序列化器快照此方法返回表示兼容性解析结果的 TypeSerializerSchemaCompatibility它可以是以下内容之一 TypeSerializerSchemaCompatility.compatibleAsIs()此结果表示新的序列化程序是兼容的即新的序列化器与以前的序列化程序具有相同的 schema。新的序列化程序可能已在 resolveSchemaCompatibility 方法中重新配置因此它是兼容的。TypeSerializerSchemaCompatibility.compatibleAfterMigration()此结果表示新的序列化程序具有不同的序列化架构可以通过使用以前的序列化程序识别旧架构将字节读取到状态对象中然后使用新的序列化器识别新架构将对象重写回字节从而从旧架构迁移。TypeSerializerSchemaCompatibility.incompatible()此结果表示新的序列化程序具有不同的序列化 schema但无法从旧架构迁移。 在需要迁移的情况下如何获得上一个序列化程序 序列化程序的 TypeSerializerSnapshot 的另一个重要作用是它充当还原以前的序列化程序的工厂即 TypeSerializerSnapshot 应该实现 restoreSerializer 方法来实例化一个序列化程序实例该序列化程序实例可以识别以前的序列化程序的 schema 和配置因此可以安全地读取以前的序列化程序器写入的数据。 Flink 如何与 TypeSerializer 和 TypeSerializerSnapshot 抽象交互 根据状态后端的不同状态后端与抽象交互略有不同。 堆外状态后端例如 RocksDBStateBackend 向具有 schema A 的状态序列化程序注册新状态 该状态已注册的 TypeSerializer 用于在每次状态访问时读取/写入状态状态写在 schema A 中 获取保存点 序列化程序快照是通过 TypeSerializer#snapshotConfiguration 方法提取的序列化程序快照被写入保存点以及已经序列化的状态字节使用 schema A; 执行恢复时使用具有 schema B 的新状态序列化程序重新访问恢复的状态字节 将还原以前的状态序列化程序的快照状态字节在还原时不进行反序列化只加载回状态后端因此仍在 schema A 中在接收到新的序列化程序后通过 TypeSerializer#resolveSchemaCompatibility 将以前的序列化程序的快照提供给新的序列化器的快照以检查架构兼容性 将状态后端中的状态字节从 schema A迁移到 schema B 如果兼容性解决方案反映出架构已更改并且可以进行迁移则执行架构迁移。识别 schema A 的前一个状态序列化程序将通过 TypeSerializerSnapshot#restoreSerializer() 从序列化程序快照中获得并用于将状态字节反序列化为对象这些对象又会使用识别 schema B 的新序列化程序重新写入以完成迁移。在继续处理之前已访问状态的所有条目都会一起迁移如果解析表示不兼容则状态访问将失败并出现异常。 堆状态后端例如MemoryStateBackend、FsStateBackend 向具有 schema A 的状态序列化程序注册新状态 已注册的 TypeSerializer 由状态后端维护 取一个保存点用 schema A 序列化所有状态 序列化程序快照是通过 TypeSerializer#snapshotConfiguration 方法提取的序列化程序快照被写入保存点状态对象现在被序列化到保存点用 schema A 编写 恢复时将状态反序列化为堆中的对象 将还原以前的状态序列化程序的快照识别 schema A 的上一个序列化程序是通过 TypeSerializerSnapshot#restoreSerializer() 从序列化程序快照中获得的用于将状态字节反序列化为对象从现在起所有的状态都已经被反序列化了 执行恢复时使用具有 schema B 的新状态序列化程序重新访问以前的状态 在接收到新的序列化程序后通过 TypeSerializer#resolveSchemaCompatibility 将以前的序列化程序的快照提供给新的序列化器的快照以检查架构兼容性如果兼容性检查表明需要迁移则在这种情况下不会发生任何事情因为对于堆后端所有状态都已反序列化为对象如果解析表示不兼容则状态访问将失败并出现异常 取另一个保存点用 schema B 序列化所有状态 与步骤2相同但现在状态字节都在 schema B 中。 d预定义的便捷的 TypeSerializerSnapshot 类 Flink 提供了两个典型场景的 TypeSerializerSnapshot 的抽象基类SimpleTypeSerializerSnapshot 和CompositeTypeSerializerSnapshot。 提供这些预定义快照作为其序列化程序快照的序列化程序必须具有自己的独立子类实现。 实现 SimpleTypeSerializerSnapshot SimpleTypeSerializerSnapshot 适用于没有任何状态或配置的序列化程序意味着序列化程序的序列化 schema 仅由序列化程序的类定义。 当使用 SimpleTypeSerializerSnapshot 作为序列化程序的快照类时兼容性解析只有两个可能的结果 TypeSerializerSchemaCompatibility.compatibleAsIs()新的序列化程序类保持相同TypeSerializerSchemaCompatility.uncompatible()新的序列化程序类与上一个不同 示例使用 SimpleTypeSerializerSnapshot以 Flink 的 IntSerializer 为例 public class IntSerializerSnapshot extends SimpleTypeSerializerSnapshotInteger {public IntSerializerSnapshot() {super(() - IntSerializer.INSTANCE);} }IntSerializer 没有状态或配置序列化格式仅由序列化程序类本身定义并且只能由另一个 IntSerializer 读取它适合SimpleTypeSerializerSnapshot 的用例。 SimpleTypeSerializerSnapshot 的父类构造函数需要相应序列化程序实例的提供而不管快照当前是在还原还是在快照期间写入该实例提供者用于创建还原序列化程序以及用于验证新序列化程序是否属于相同的预期序列化程序类的类型检查。 实现 CompositeTypeSerializerSnapshot CompositeTypeSerializerSnapshot 适用于依赖多个嵌套序列化程序进行序列化的序列化程序。 将依赖于多个嵌套序列化程序的序列化程序称为 “外部” 序列化程序例如MapSerializer、ListSerializer 和 GenericArraySerializer等当考虑 MapSerializer 的键和值序列化程序时将是嵌套的序列化程序而 MapSerialize 器本身是“外部”序列化程序。 外部序列化程序的快照还应包含嵌套序列化程序的 snapshot以便可以独立检查嵌套序列化程序之间的兼容性在解决外部序列化程序的兼容性时需要考虑每个嵌套序列化程序的兼容。 提供 CompositeTypeSerializerSnapshot 是为了帮助实现这类复合序列化程序的快照它处理读取和写入嵌套序列化程序快照以及在考虑所有嵌套序列化程序兼容性的情况下解析最终兼容性结果。 示例使用 CompositeTypeSerializerSnapshot以 Flink 的 MapSerializer 为例 public class MapSerializerSnapshotK, V extends CompositeTypeSerializerSnapshotMapK, V, MapSerializer {private static final int CURRENT_VERSION 1;public MapSerializerSnapshot() {super(MapSerializer.class);}public MapSerializerSnapshot(MapSerializerK, V mapSerializer) {super(mapSerializer);}Overridepublic int getCurrentOuterSnapshotVersion() {return CURRENT_VERSION;}Overrideprotected MapSerializer createOuterSerializerWithNestedSerializers(TypeSerializer?[] nestedSerializers) {TypeSerializerK keySerializer (TypeSerializerK) nestedSerializers[0];TypeSerializerV valueSerializer (TypeSerializerV) nestedSerializers[1];return new MapSerializer(keySerializer, valueSerializer);}Overrideprotected TypeSerializer?[] getNestedSerializers(MapSerializer outerSerializer) {return new TypeSerializer?[] { outerSerializer.getKeySerializer(), outerSerializer.getValueSerializer() };} }实现为 CompositeTypeSerializerSnapshot 的子类时必须实现以下三种方法 getCurrentOuterSnapshotVersion()此方法定义当前外部序列化程序快照的序列化二进制格式的版本。getNestedSerializers(TypeSerializer)给定外部序列化程序返回其嵌套的序列化程序。createOuterSerializerWithNestedSerializers(TypeSerializer[])给定嵌套的序列化程序创建外部序列化程序的实例。 上面的示例是 CompositeTypeSerializerSnapshot除了嵌套的序列化程序的快照之外没有任何额外的信息要进行快照可以预期其外部快照版本永远不需要更新。 然而其他一些序列化程序包含一些额外的静态配置这些配置需要与嵌套组件序列化程序一起持久化例如 Flink 的 GenericArraySerializer 除了嵌套的元素序列化程序之外还包含数组元素类型的类作为配置。 此时需要在 CompositeTypeSerializerSnapshot 上实现另外三个方法 writeOuterSnapshot(DataOutputView)定义如何写入外部快照信息。readOuterSnapshot(intDataInputViewClassLoader)定义如何读取外部快照信息。resolveOuterSchemaCompatibility(TypeSerializerSnapshot)基于外部快照信息检查兼容性。 默认CompositeTypeSerializerSnapshot 假设没有任何外部快照信息可供读取/写入因此上述方法的默认实现为空如果子类具有外部快照信息那么必须实现这三种方法。 以下是 CompositeTypeSerializerSnapshot 如何用于具有外部快照信息的复合序列化程序快照的示例以 Flink 的GenericArraySerializer 为例 public final class GenericArraySerializerSnapshotC extends CompositeTypeSerializerSnapshotC[], GenericArraySerializer {private static final int CURRENT_VERSION 1;private ClassC componentClass;public GenericArraySerializerSnapshot() {super(GenericArraySerializer.class);}public GenericArraySerializerSnapshot(GenericArraySerializerC genericArraySerializer) {super(genericArraySerializer);this.componentClass genericArraySerializer.getComponentClass();}Overrideprotected int getCurrentOuterSnapshotVersion() {return CURRENT_VERSION;}Overrideprotected void writeOuterSnapshot(DataOutputView out) throws IOException {out.writeUTF(componentClass.getName());}Overrideprotected void readOuterSnapshot(int readOuterSnapshotVersion, DataInputView in, ClassLoader userCodeClassLoader) throws IOException {this.componentClass InstantiationUtil.resolveClassByName(in, userCodeClassLoader);}Override protected OuterSchemaCompatibility resolveOuterSchemaCompatibility(TypeSerializerSnapshotC[] oldSerializerSnapshot) {GenericArraySerializerSnapshotC[] oldGenericArraySerializerSnapshot (GenericArraySerializerSnapshotC[]) oldSerializerSnapshot;return (this.componentClass oldGenericArraySerializerSnapshot.componentClass) ? OuterSchemaCompatibility.COMPATIBLE_AS_IS : OuterSchemaCompatibility.INCOMPATIBLE;}Overrideprotected GenericArraySerializer createOuterSerializerWithNestedSerializers(TypeSerializer?[] nestedSerializers) {TypeSerializerC componentSerializer (TypeSerializerC) nestedSerializers[0];return new GenericArraySerializer(componentClass, componentSerializer);}Overrideprotected TypeSerializer?[] getNestedSerializers(GenericArraySerializer outerSerializer) {return new TypeSerializer?[] { outerSerializer.getComponentSerializer() };} }注意 由于此 CompositeTypeSerializerSnapshot 实现具有作为快照一部分写入的外部快照信息因此每当外部快照信息的序列化格式发生更改时都必须提升由 getCurrentOuterSnapshotVersion() 定义的外部快照版本。在编写组件类时避免使用 Java 序列化只编写类名并在读回快照时动态加载它 e最佳实践 Flink 通过实例化的类名恢复序列化程序的快照 序列化程序的快照是如何序列化已注册状态的唯一记录它是读取保存点中状态的入口点为了能够恢复和访问以前的状态必须能够恢复以前的状态序列化程序的快照。 Flink 首先实例化具有类名与快照字节一起写入的 TypeSerializerSnapshot 来恢复序列化程序快照为了避免意外更改类名或实例化失败TypeSerializerSnapshot 类应该 避免被实现为匿名类或嵌套类具有用于实例化的公共空值构造函数 避免在不同的序列化程序之间共享相同的 TypeSerializerSnapshot 类 由于 schema 兼容性检查通过序列化程序快照进行因此让多个序列化程序返回与其快照相同的 TypeSerializerSnapshot 类会使TypeSerializerSnapshot#resolveSchemaCompatibility 和 TypeSerializerSnapshot#restoreSerializer() 方法的实现复杂化。 单个序列化程序的序列化 schema、配置以及如何恢复它应该合并到它自己专用的 TypeSerializerSnapshot 类中。 避免对序列化程序快照内容使用 Java 序列化 在向持久化序列化程序快照写入内容时不应使用 Java 序列化例如一个序列化程序需要将其目标类型的类作为其快照的一部分进行持久化应通过编写类名来持久化有关类的信息而不是使用 Java 直接序列化类读取快照时会读取类名并通过该名称动态加载类。 可以确保始终可以安全地读取序列化程序快照如果类型类是使用 Java 序列化持久化的一旦类实现发生变化快照就可能不再可读并且根据 Java 序列化的具体情况快照不再是二进制兼容的。 4.注册自定义序列化器-待验证 如果在 Flink 程序中使用了 Flink 类型序列化器无法进行序列化的用户自定义类型Flink 会回退到通用的 Kryo 序列化器可以使用 Kryo 注册自己的序列化器或序列化系统比如 Google Protobuf 或 Apache Thrift。 使用方法是在 Flink 程序中的 ExecutionConfig 注册类类型以及序列化器。 final ExecutionEnvironment env ExecutionEnvironment.getExecutionEnvironment();// 为类型注册序列化器类 env.getConfig().registerTypeWithKryoSerializer(MyCustomType.class, MyCustomSerializer.class);// 为类型注册序列化器实例 MySerializer mySerializer new MySerializer(); env.getConfig().registerTypeWithKryoSerializer(MyCustomType.class, mySerializer);需要确保你的自定义序列化器继承了 Kryo 的序列化器类对于 Google Protobuf 或 Apache Thrift这一点已经做好了。 final ExecutionEnvironment env ExecutionEnvironment.getExecutionEnvironment();// 使用 Kryo 注册 Google Protobuf 序列化器 env.getConfig().registerTypeWithKryoSerializer(MyCustomType.class, ProtobufSerializer.class);// 注册 Apache Thrift 序列化器为标准序列化器 // TBaseSerializer 需要初始化为默认的 kryo 序列化器 env.getConfig().addDefaultKryoSerializer(MyCustomType.class, TBaseSerializer.class);为了使上面的例子正常工作需要在 Maven 项目文件中pom.xml包含必要的依赖为 Apache Thrift 添加以下依赖 dependencygroupIdcom.twitter/groupIdartifactIdchill-thrift/artifactIdversion0.7.6/version!-- exclusions for dependency conversion --exclusionsexclusiongroupIdcom.esotericsoftware.kryo/groupIdartifactIdkryo/artifactId/exclusion/exclusions /dependency !-- libthrift is required by chill-thrift -- dependencygroupIdorg.apache.thrift/groupIdartifactIdlibthrift/artifactIdversion0.11.0/versionexclusionsexclusiongroupIdjavax.servlet/groupIdartifactIdservlet-api/artifactId/exclusionexclusiongroupIdorg.apache.httpcomponents/groupIdartifactIdhttpclient/artifactId/exclusion/exclusions /dependency对于 Google Protobuf 需要添加以下 Maven 依赖 dependencygroupIdcom.twitter/groupIdartifactIdchill-protobuf/artifactIdversion0.7.6/version!-- exclusions for dependency conversion --exclusionsexclusiongroupIdcom.esotericsoftware.kryo/groupIdartifactIdkryo/artifactId/exclusion/exclusions /dependency !-- We need protobuf for chill-protobuf -- dependencygroupIdcom.google.protobuf/groupIdartifactIdprotobuf-java/artifactIdversion3.7.0/version /dependency请根据需要调整两个依赖库的版本。 使用 Kryo JavaSerializer 的问题 如果你为自定义类型注册 Kryo 的 JavaSerializer即使你提交的 jar 中包含了自定义类型的类也可能会遇到 ClassNotFoundException 异常这是由于 Kryo JavaSerializer 的一个已知问题它可能使用了错误的类加载器。 在这种情况下应该使用 org.apache.flink.api.java.typeutils.runtime.kryo.JavaSerializer 来解决这个问题这个类是在 Flink 中对 JavaSerializer 的重新实现可以确保使用用户代码的类加载器。
文章转载自:
http://www.morning.qxmnf.cn.gov.cn.qxmnf.cn
http://www.morning.qshxh.cn.gov.cn.qshxh.cn
http://www.morning.hpcpp.cn.gov.cn.hpcpp.cn
http://www.morning.lhygbh.com.gov.cn.lhygbh.com
http://www.morning.lhjmq.cn.gov.cn.lhjmq.cn
http://www.morning.httpm.cn.gov.cn.httpm.cn
http://www.morning.nqcts.cn.gov.cn.nqcts.cn
http://www.morning.hbhnh.cn.gov.cn.hbhnh.cn
http://www.morning.dqxnd.cn.gov.cn.dqxnd.cn
http://www.morning.tmtrl.cn.gov.cn.tmtrl.cn
http://www.morning.whnps.cn.gov.cn.whnps.cn
http://www.morning.btwrj.cn.gov.cn.btwrj.cn
http://www.morning.xwnnp.cn.gov.cn.xwnnp.cn
http://www.morning.ssfq.cn.gov.cn.ssfq.cn
http://www.morning.psxcr.cn.gov.cn.psxcr.cn
http://www.morning.xcjbk.cn.gov.cn.xcjbk.cn
http://www.morning.jynzb.cn.gov.cn.jynzb.cn
http://www.morning.rqmqr.cn.gov.cn.rqmqr.cn
http://www.morning.gpnfg.cn.gov.cn.gpnfg.cn
http://www.morning.wnhgb.cn.gov.cn.wnhgb.cn
http://www.morning.xrksf.cn.gov.cn.xrksf.cn
http://www.morning.lskyz.cn.gov.cn.lskyz.cn
http://www.morning.mczjq.cn.gov.cn.mczjq.cn
http://www.morning.xqltq.cn.gov.cn.xqltq.cn
http://www.morning.errnull.com.gov.cn.errnull.com
http://www.morning.saastob.com.gov.cn.saastob.com
http://www.morning.rkfwr.cn.gov.cn.rkfwr.cn
http://www.morning.wnhsw.cn.gov.cn.wnhsw.cn
http://www.morning.blzrj.cn.gov.cn.blzrj.cn
http://www.morning.gxtfk.cn.gov.cn.gxtfk.cn
http://www.morning.fykqh.cn.gov.cn.fykqh.cn
http://www.morning.rdqzl.cn.gov.cn.rdqzl.cn
http://www.morning.rcww.cn.gov.cn.rcww.cn
http://www.morning.qttg.cn.gov.cn.qttg.cn
http://www.morning.baohum.com.gov.cn.baohum.com
http://www.morning.rwzqn.cn.gov.cn.rwzqn.cn
http://www.morning.qlry.cn.gov.cn.qlry.cn
http://www.morning.gmmyn.cn.gov.cn.gmmyn.cn
http://www.morning.lyjwb.cn.gov.cn.lyjwb.cn
http://www.morning.clkjn.cn.gov.cn.clkjn.cn
http://www.morning.lgznc.cn.gov.cn.lgznc.cn
http://www.morning.rlcqx.cn.gov.cn.rlcqx.cn
http://www.morning.txmkx.cn.gov.cn.txmkx.cn
http://www.morning.mnygn.cn.gov.cn.mnygn.cn
http://www.morning.nfbnl.cn.gov.cn.nfbnl.cn
http://www.morning.jcfqg.cn.gov.cn.jcfqg.cn
http://www.morning.tbjb.cn.gov.cn.tbjb.cn
http://www.morning.rqgbd.cn.gov.cn.rqgbd.cn
http://www.morning.lwxsy.cn.gov.cn.lwxsy.cn
http://www.morning.ftdlg.cn.gov.cn.ftdlg.cn
http://www.morning.gmgnp.cn.gov.cn.gmgnp.cn
http://www.morning.xtqr.cn.gov.cn.xtqr.cn
http://www.morning.wqgr.cn.gov.cn.wqgr.cn
http://www.morning.pbtdr.cn.gov.cn.pbtdr.cn
http://www.morning.dbrpl.cn.gov.cn.dbrpl.cn
http://www.morning.qrcsb.cn.gov.cn.qrcsb.cn
http://www.morning.fykqh.cn.gov.cn.fykqh.cn
http://www.morning.sgnxl.cn.gov.cn.sgnxl.cn
http://www.morning.tbplf.cn.gov.cn.tbplf.cn
http://www.morning.xnrgb.cn.gov.cn.xnrgb.cn
http://www.morning.zwmjq.cn.gov.cn.zwmjq.cn
http://www.morning.mqbsm.cn.gov.cn.mqbsm.cn
http://www.morning.bgqqr.cn.gov.cn.bgqqr.cn
http://www.morning.ryxdr.cn.gov.cn.ryxdr.cn
http://www.morning.xq3nk42mvv.cn.gov.cn.xq3nk42mvv.cn
http://www.morning.frnjm.cn.gov.cn.frnjm.cn
http://www.morning.mdxwz.cn.gov.cn.mdxwz.cn
http://www.morning.dzfwb.cn.gov.cn.dzfwb.cn
http://www.morning.pzss.cn.gov.cn.pzss.cn
http://www.morning.lzttq.cn.gov.cn.lzttq.cn
http://www.morning.kpzbf.cn.gov.cn.kpzbf.cn
http://www.morning.tzzfy.cn.gov.cn.tzzfy.cn
http://www.morning.gbwfx.cn.gov.cn.gbwfx.cn
http://www.morning.snrbl.cn.gov.cn.snrbl.cn
http://www.morning.hxrg.cn.gov.cn.hxrg.cn
http://www.morning.sfgzx.cn.gov.cn.sfgzx.cn
http://www.morning.wjrq.cn.gov.cn.wjrq.cn
http://www.morning.jygsq.cn.gov.cn.jygsq.cn
http://www.morning.dlbpn.cn.gov.cn.dlbpn.cn
http://www.morning.rxhsm.cn.gov.cn.rxhsm.cn
http://www.tj-hxxt.cn/news/239296.html

相关文章:

  • 公众号和网站wordpress如何转换为中文
  • 高校里做网站的工作网站建设小公司生存
  • 网站使用什么数据库公司网页制作哪家好
  • 做网站需要 的文档物流公司查询平台
  • 关于网站建设与发布的书籍saas平台是干嘛的
  • 高县网站建设wordpress 国际化 mo
  • 国内开源网站江苏做网站公司有哪些
  • 网站网址怎么写爱站网主要功能
  • 基础设施建设的网站网站开发怎么学习
  • 网站网讯制作网页通常用什么定位
  • 如何给自己建设的网站设置登陆用户名和密码免费网站打包app
  • 迅速编程做网站哈尔滨网站制作公司价格
  • 网站建设很简单陕西购物商城网站建设
  • 门户网站是不是新媒体学编程哪家培训机构好
  • 韩雪冬个人网站汕头市潮南区紧急提醒
  • 网站维护有多长时间个人怎么做公司网站
  • 网站的推广方法有哪些高中网站建设课程
  • 崇左网站建设wordpress 左侧菜单栏
  • 网站做icp备案需要多久特别炫酷的网站
  • 今天三河燕郊确诊名单南宁seo公司哪家好
  • 侯马做网站wordpress数据库e r图
  • 山西建设工程信息网站黄页网址18岁以下勿入
  • 公司做网站查看网站用什么语言做的
  • 潍坊公司做网站住房城乡建设部执业资格注册中心网站
  • 网站建设方案 百度文库电子商务网站建设的好处有哪些
  • 自助建网站工具凡科 360免费建站
  • 医疗类网站源码网站收录地址
  • 萍乡网站推广泉州晋江网站建设
  • 杭州百度seo优化seo百度刷排名
  • 莆田外贸网站建设有哪些网站到期时间