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

网站logo图标网上手机网站建设计划书

网站logo图标,网上手机网站建设计划书,一个域名怎么做多个网站,工作室注册流程及需要的材料文章目录 平台无关性如何实现#xff1f;JVM如何加载 .class文件#xff1f;什么是反射?谈谈ClassLoader谈谈类的双亲委派机制类的加载方式Java的内存模型?JVM内存模型-jdk8程序计数器#xff1a;Java虚拟机栈局部变量表和操作数栈#xff1a; Java内存模型中堆和栈的区别… 文章目录 平台无关性如何实现JVM如何加载 .class文件什么是反射?谈谈ClassLoader谈谈类的双亲委派机制类的加载方式Java的内存模型?JVM内存模型-jdk8程序计数器Java虚拟机栈局部变量表和操作数栈 Java内存模型中堆和栈的区别-内存分配策略不同JDK版本之间的intern方法的区别谈谈你了解的垃圾回收算法标记-清除算法Mark and Sweep复制算法标记-整理算法Compacting分代收集算法Generational Collector 常见的垃圾收集器JVM的运行模式垃圾收集器之间的联系年轻代中常见的垃圾收集器老年代常见的垃圾收集器JAVA中的强引用软引用弱引用虚引用有什么用强引用Strong References软引用Soft Reference弱引用Weak Reference虚引用PhantomReference Redis常用的数据类型?从海量key里查询出某一固定前缀的key?如何通过Redis实现分布式锁如何使用Redis做异步队列Redis如何做持久化RDB(快照)持久化AOFAppend-Only-File日志追加 Redis同步机制主从同步原理全同步过程增量同步过程 Liunx中常见的面试问题持续更新中... 平台无关性如何实现 通过javac执行java源文件会生成一个 .class 的二进制字节码文件 JDK自带的反编译器 javap -help -查看帮助文档 javap -c java源文件名 ------ 就可以反汇编了 .java文件 ------------ .class 文件 ------------ JVM解析 Java源码首先被编译成字节码再由不同平台的JVM解析Java语言在不同平台上运行时不需要重新进行编译Java虚拟机在执行字节码的时候会把字节码装换成具体平台上的机器指令。 为什么JVM不直接将源码解析成机器码去执行 准备工作每次执行都需要各种检查 兼容性也可以将别的语言解释成字节码 JVM如何加载 .class文件 Java虚拟机Java虚拟机是内存中的虚拟机JVM的存储就是在内存中 ClassLoder: 依据特定格式加载class文件到内存Excution Engine: 对命令进行解析Native Interface: 融合不同开发语言的原生库为Java所用Runtime Data Area: JVM内存空间模型 什么是反射? JAVA反射机制是指在运行状态中对于任意一个类都能够知道这个类 的所有属性和方法对于任意一个对象都能够调用他的任意方法和属性这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。 写一个放射的例子? 通过Class.forName(“类的全限定名”)拿到类的class对象假如为clazz 通过clazz.newInstance()方法创建 一个该类的对象 通过clazz.getDeclareMethod()获取类的私有方法既可以获取该类中的所有方法但不能获取到父类的方法或者是实现的接口中的方法同时需要关闭安全检查getHello.setAccessible(true); 通过getMethod可以获取公有的方法同时可以获取父类和实现接口中的方法 谈谈ClassLoader ClassLoader在Java中有卓非常重要的作用它主要工作在Class装载的加载阶段其主要作用是从系统外部获得Class二进制数据流它是Java的核心组件所有的Class都是由ClassLoader进行加载的ClassLoafer负责通过将Class文件里的二进制数据流装载进系统然后交给Java虚拟机进行连接初始化等操作。 ClassLoader源码分析核心方法loadClass , parent也是一个ClassLoader ClassLoader的种类 BootStrapClassLoader: C编写加载核心库java.*,例如java.lang包 ----- 用户看不到ExtClassLoader: Java编写加载扩展库 javax.* ---- javaWeb的核心类库 ------ 用户可以看到AppClassLoder Java编写加载程序目录 ------- 用户可以看到自定义ClassLoader需要继承系统的ClassLoader: Java编写定制化加载 重写关键函数findClass ----- 用户寻找类文件return defineClass,参数为一个字节数组 ------- 用户加载类文件 谈谈类的双亲委派机制 避免多份同样字节码的加载因为内存是宝贵的没必要保存同样两份类的字节码 类的加载方式 隐式加载new ,通过该方式支持带惨的构造器显示加载loadClass,forName — 不支持传入参数 类的装载过程 加载通过ClassLoader加载class字节码文件生成Class对象链接校验检查加载的class的正确性和安全性准备为类变量分配存储空间并设置类变量的初始值解析JVM将常量池内的符号引用转为直接引用初始化执行变量赋值和静态代码块 loadClass和forName的区别 loadClass只是加载 了这个类并没有进行链接和初始化的forName得到Class是已经完成了初始化的 Java的内存模型? 内存简介 可寻址空间根据操作系统不同范围也不同 地址空间的划分 内核空间主要的操作系统程序和C运行时空间连接计算机硬件以及提供联网和虚拟内存用户空间除去内核空间就是用户空间了这里才是Java进程实际运行的内存空间 JVM内存模型-jdk8 程序计数器 当前线程所执行的字节码行号指示器逻辑 改变计数器的值来选取下一条需要执行的字节码指令 和线程是一对一的关系即线程私有 对Java方法计数如果是Native方法则计数器的值为Undefined 不会发生内存泄漏 Java虚拟机栈 Java方法执行的内存模型 包含多个栈帧 局部变量表和操作数栈 局部变量表包含操作方法执行过程中的所有变量 操作数栈入栈出栈复制交换产生消费变量 递归为什么会出现StackOverFlowError? 递归过深栈帧数超出虚拟机深度 虚拟机栈过多会引发OutOfMemoryError 元空间MetaSpace与永久代PerGen的区别 元空间使用的是本地内存而永久代使用的是jvm内存 优势字符串常量池存在永久代中容易出现性能问题和内存溢出 类和方法的信息大小难以确定给永久代的大小指定带来困难 永久代会为GC带来不必要的复杂性 Java堆Heap 对象实例的分配区域 GC管理的主要区域 JVM三大性能调优参数 -Xms -Xmx -Xss的含义 -Xss:规定了每个线程虚拟机栈堆栈的大小一般设为 256k — 影响此进程中并发线程数的大小-Xms:堆得初始值 若 超过该值将会自动扩容扩大到Xmx-Xmx:堆能达到的最大值一般和Xms的值设为一样由于在扩容时会发生内存抖动影城程序运行时的稳定性。 Java内存模型中堆和栈的区别-内存分配策略 静态存储编译时确定每个数据目标在运行时的存储空间需求栈式存储数据区需求在编译时未知运行时模块入口前确定堆式存储编译时和运行时都无法确定动态分配 内存模型中堆和栈区别 联系引用对象数组时栈中定义变量保存在堆中的目标地址 管理方式栈自动释放堆需要GC 空间大小栈比堆小 碎片相关栈产生的碎片远小于堆 分配方式栈支持静态分配和动态分配而堆仅支持动态分配 效率栈的效率比堆高 不同JDK版本之间的intern方法的区别 JDK1.6当调用intern()方法时如果字符串常量池先前已经创建好该字符串对象则返回池中该字符串的引用。否则将此字符串对象添加到字符串常量池中并且返回该字符串对象的引用。 添加到JDK1.6之后当调用intern()方法时如果字符串常量池先前已经创建好该字符串对象则返回池中该字符串的引用。否则如果该字符串对象已经在Java堆中则将堆中此对象的引用添加到字符串常量池中并且返回该引用如果堆中不存在则在池中创建该字符串并返回其引用。 谈谈你了解的垃圾回收算法 标记-清除算法Mark and Sweep 标记从根集合进行扫描对存活的对象进行标记 ---- 利用可达性算法找到垃圾对象 清除对内存从头到尾进行线性遍历回收不可达对象内存 缺点由于该算法不需要堆栈的移动会产生大量不连续的内存碎片 复制算法 分为对象面和空闲面 对象在对象面上创建 存活的对象被从对象复制到空闲面 将对象面的所有对象内存清除 优点 解决了碎片化问题 顺序分配内存 简单高效 适用于对象存活率低的场景 标记-整理算法Compacting 标记从根集合进行扫描对存活的对象进行标记清除移动所有存活的对象且按照内存地址次序依次排列然后将末端内存地址以后的内存全部回收 优点 避免内存的不连续性 不用设置两块内存互换 适用于对象存活率高的场景 分代收集算法Generational Collector 垃圾回收算法的组合拳 按照对象生命周期的不同划分区域以采用不同的垃圾回收算法 目的提高JVM的回收效率 在jdk7之前JAVA堆内存分为年轻代老年代永久代 在JDK8之后永久 代就被去掉了 年轻代的存活率低就使用的是复制算法老年代的存活率高就使用的是标记整理算法 GC的分类 Minor GC: Minor GC是发生在年轻代的垃圾回收动作所采用的是复制算法年轻代几乎是所有对象出生的地方以及Java对象内存的申请和存放都是在这里新生代是GC收集垃圾对象的频繁区域。 Full GC与老年代相关由于对老年代的回收一般会伴随着年轻代对象垃圾的收集因此第二种GC被称为Full GC. 年轻代尽可能快速地收集掉那些生命周期短的对象 Eden区两个Survivor区 对象如晋升到老年代 经历一定 Minor次数依然存活的对象Survivor区中存放不下的对象新生成的大对象-XXPretenuerSizeThreshold超过该Size大小就立即放入老年代中 常用的调优参数 -XXSurvivorRation: Eden和Survivor的比值默认为81-XX:NewRation: 老年代和年轻代内存大小的比例-XXMaxTenuringThreshold: 对象从年轻代晋升到老年代经过GC次数的最大阈值 老年代存放生命周期较长的对象 标记清理算法或者标记整理算法 Full GC和 Major GC Full GC: 对整个堆内存进行回收说Major GC一定要问清楚是指Full GC还是针对老年代的GC Full GC比Minor GC要慢的多一般会慢十倍以上但执行频率低 触发Full GC的条件 老年代空间不足----- 解决办法不要创建太大的对象永久代空间不足 ------- 针对JDK之前CMS GC时出现promotion failed,concurrent mode fallureMinor GC晋升到老年代的平均大小大于老年代的剩余空间调用System.gc() -------- 该方法只是提醒虚拟机进行回收程序员对是否回收没有绝对的控制权。使用RMC来进行RPC或管理JDK应用每小时执行一次Full gc Stop-the-World JVM由于要执行GC而停止了应用程序的执行 任何一种GC算法中都会发生 多数GC优化就是通过减少Stop-the-World发生的时间来提高程序的性能从而使系统具有高吞吐低停顿的特点。 Safepoint 分析过程中对象引用关系不会发生变化的点 产生Safepoint的地方方法调用循环跳转异常跳转等 安全点数量适中 常见的垃圾收集器 JVM的运行模式 Server启动速度较慢------启动的是重量级JVM运行速度更快 Client:启动速度较快------启动的是轻量级JVM运行速度慢一些 垃圾收集器之间的联系 年轻代中常见的垃圾收集器 Serial收集器-XXUseSerialGC,复制算法 单线程收集进行垃圾收集时必须暂停所有工作线程简单高效Clien模式下默认的年轻代收集器 ParNew收集器-XXUseParNewGC,复制算法多线程收集其余的行为特点和Serial收集器一样单执行效率不如Serial,在多核下执行才有优势 Parallel Scavenge收集器-XXUseParallelGC,复制算法 吞吐量运行用户代码时间/运行用户代码时间垃圾收集时间比起关注用户线程停顿时间更关注系统的吞吐量在多核下执行才有优势Server模式下默认的年轻代收集器 老年代常见的垃圾收集器 Serial Old收集器-XXUseSerialGC,标记整理算法 单线程收集进行垃圾回收时必须暂停所有线程工作简单高效Client模式下默认的老年代收集器 Parallel Old收集器-XXUseParallelGC,标记整理算法 多线程吞吐量优先 CMS收集器-XXUseConcMarkSweepGC,你标记清除算法 初始标记stop-the-world并发标记并发追溯标记程序不会停顿并发预清理查找执行并发标记阶段从年轻代晋升到老年代的对象重新标记暂停虚拟机扫描CMS堆中剩余的对象并发清理清理垃圾对象程序不会停顿并发重置重置CMS收集器的数据结构 JAVA中的强引用软引用弱引用虚引用有什么用 强引用Strong References 最普遍的引用Object obj new Object(); 在内存不足时JVM宁可抛出OutOfMemoryError终止程序也不会回收 具有强引用的对象 通过将对象设置为null来弱化引用使其被回收 软引用Soft Reference 对象在有用但非必需的状态 只有当内存不足时DC会回收该引用的对象的内存 可以用来实现高速缓存 弱引用Weak Reference 非必需的对象比软引用更弱一些 GC时会被回收不管内存是否不足 被回收的概率也不大因为GC线程优先级较低 适用于偶尔被使用且不影响垃圾收集的对象 虚引用PhantomReference 不会决定对象的生命周期 任何时候都可能被垃圾回收器回收 跟踪对象被垃圾回收器回收的活动起哨兵的作用 必须何引用队列ReferenceQueue联合使用 引用队列ReferenceQueue Redis常用的数据类型? String 最基本的数据类型二进制安全 Hash String元素组成的字典适合于存储对象 List 列表按照String元素插入的顺序的排序 Set String元素组成无序集合通过哈希表实现不允许重复 Zset 通过分数为集合中的成员进行从小到大的排序 从海量key里查询出某一固定前缀的key? 使用Keys线上业务的影响 keys pattern :查找所有符合给定模式pattern的key keys指令一次性返回所有匹配的key 键的数量过大会使服务卡顿对内存的消耗和redis服务器都是隐患 SCAN cursor [MATCH pattern] [Count count] 基于游标的迭代器需要基于上一次的游标延续之前的迭代过程 以0作为游标开始一次新的迭代直到命令返回游标0完成一次遍历 不保证每次执行都返回某个给定数量的元素支持模糊查询 一次返回的数量不可控只能是大概count参数 第一条数据就是游标第二条数据就是查找到的结果集下一次迭代通过该游标进行继续迭代通过该方式可能获取倒重复的数据需要在Web程序去重 如何通过Redis实现分布式锁 分布式锁需要解决的问题 互斥性任意时刻只能有一个客户端获取到锁安全性锁只能被持有该锁的客户端删除不能被其他客户端删除死锁获取锁的客户端由于某些原因而宕机导致不饿能释放锁其他客户端再也不能获取到该锁容错当部分节点Redis节点宕机的时候客户端可以获取锁和释放锁 SETNX key value:如果键不存在则创建并赋值时间复杂度为 O(1)返回值设置成功返回1设置失败返回0 如何解决SETNX长期有效的问题 方式一 EXPIRE key seconds 给key设置过期时间当key过期时就会被自动删除 缺点原子性得不到满足虽然SETNX和EXPIRE指令都是原子性的但组合起来就不是了 方式二 SET key value [EX seconds] [PX milliseconds] [NX|XX] EX second :设置键的过期时间为second秒PX milliseconds :设置键的过期时间为millisecond毫秒NX只有在键不存在时才对键进行设置操作XX只在键已经存在时才对键进行设置 SET操作成功完成时返回OK否则返回 nil 大量key同时过期的注意事项 集中过期由于清除大量的key会耗时会出现短暂的卡顿现象解决方案在设置key过期时间的时候给每个key加上随机值 如何使用Redis做异步队列 使用List作为队列RPUSH生产消息LPOP消费消息 缺点不会等待队列有值才去消费 弥补可以通过在应用层引入Sleep机制去调用LPOP重试 有没别的方法 BLPOP key [key...] timeout: 阻塞直到队列有消息或者超时 缺点只提供 一个消费者消费 如何实现生产一次并让多个消费者消费呢 使用pub/sub 主题订阅模式 发送者pub发送消息订阅者sub接收消息 订阅者可以订阅任意数量的频道 缺点消息的发布是无状态的无法保证可达 Redis如何做持久化 RDB(快照)持久化 保存某个时间点的全量数据快照 SAVE阻塞Redis的服务器进程直到RDB文件被创建完毕 BGSAVEFork(派生)出一个子进程来创建RDB文件不阻塞服务器进程 可以通过lastsave查看 上次保存RDB文件的时间 自动触发RDB持久化的方式 根据redis.conf配置里的SAVE m n 定时触发用的是BGSAVE 主从复制时主节点自动触发 执行Debug Reload 执行Shutdown且没有开启AOF持久化 系统调用fork(): 创建进程实现了Copy-on-Write 如果有多个调用者同时要求相同资源如内存或磁盘上的数据存储他们会共同获取相同的指针指向相同的资源直到某个调用者试图修改资源的内容时系统才会真正复制一份专用的副本给该调用者而其他调用者所见到的最初的资源操持不变。 缺点内存数据的全量同步数据量大会由于I/O而严重影响性能。可能会因为Redis挂掉而丢失从当前至最近的一次快照期间的数据 AOFAppend-Only-File日志追加 保存写状态 记录下除了查询以外的所有变更数据库的指令 以append的形式追加保存到AOF文件中 日志重写解决AOF文件大小不断增大的问题原理如下 调用fork,创建一个子进程 子进程把新的AOF写到一个临时文件里不依赖原来的AOF文件 主进程持续把新的变动同时写到内存和原来的AOF里 主进程获取子进程重写AOF完成信号往新AOF同步增量变动 使用新的AOF文件替换掉旧的AOF文件 RDB和AOF文件共存情况下的恢复流程 RDB和AOF的优缺点 RDB优点全量数据快照文件小恢复快 RDB缺点无法保存最近一次快照之后的数据 AOF优点可读性高适合保存增量数据数据不易丢失 AOF缺点文件体积大恢复时间长 redis4.0之后提供了RDB-AOF混合持久方式系统默认 BGSAVE做镜像全量持久化AOF做增量持久化 使用Pipline的好处 Pipline和Liunx的管道类似 Redis基于请求/响应模型单个请求处理需要一一应答 Pipline批量执行指令节省多次I/O往返的时间 有顺序依赖的指令建议分批发送 Redis同步机制 主从同步原理 全同步过程 slave 发送sync命令到master master启动一个后台进程将redis中的数据快照保存到文件中 master将保存的数据快照期间接收到的写命令缓存起来 master完成文件写操作后将该文件发送给slave 使用新的AOF文件替换掉旧的AOF文件 master将这期间收集的增量命令发送给slave端 增量同步过程 master接受到用户的操作指令。判断是否需要传播到slave 将操作记录追加到AOF文件 将操作记录传播到其他slave1对齐主从库 2往响应缓存写入指令 将缓存中的数据发送给slave Redis Sentinel 解决主从同步Master宕机后主从切换的问题 监控检查主从服务器是否正常运行 提醒通过API向管理员或其他应用程序发送故障通知 自动故障转移主从切换 流言协议Gossip在杂乱无章中寻求一致 每个节点都随机地与对方通信最终所有节点的状态达成一致 种子节点定期随机向其他节点发送节点列表以及需要传播的消息 不保证信息一定会传递给所有节点但是最终会趋于一致 如何从海量数据里快速找到所需 分片按照某种规则区划分数据分散存储在多个节点上不同的key放在不同的redis节点上 获取key的hash值然后根据节点数取模常规的按照哈希划分无法实现节点的动态增减 一致性哈希算法对2的32次方取模将哈希值空间组织成虚拟的圆环将数据key使用相同的函数hash计算出哈希值这样就可以确定每台服务器在哈希环上的具体位置 Liunx中常见的面试问题 在Liunx中如何让查找指定文件 find / -name “target.java” 精确查找文件find / -name “target*” 模糊查找文件find ~ -iname “target*” 不区分文件名大小写去查找文件man find: 跟多关于find指令的使用说明 检索文件常用命令 管道操作符 | 可将操作指令连接起来前一个 指令的输出作为后一个指令的输入 注意只处理前一个命令正确的输出不处理错误的输出 在内存中查找包含某个字段的文件grep ‘partial[true]’ bsc-plat-al-data.info.log选择出符合正则表达式的内容grep -o ‘engine[[0-9a-z]*]’过滤掉包含相关字符串的内容grep -v ‘grep’ 如何对文件内容做统计 awk --------- 适合于对表格化的数据进行处理 语法awk [options] cmd file 一次读取一行文本按输入的分隔符进行切片切成多个组成部分将切片直接保存在内建的变量中$1$2…($0表示行的全部)支持对单个切片的判断支持循环判断默认分隔符为空格 切片1切片四即代表第一列和第四列的信息通过print打印出来 定义一个数组名字。通过下标来保存引擎的名字该数组的值就是对应引擎的值一旦相同的引擎出现则对应的值就在原来的基础上进行累加END就是扫描结束后要执行的操作只要于操作相关 就要使用花括号表里数组中的值并将器其值打印出来 对内容逐行进行统计操作并列出对应的统计结果默认的分隔符是空格 如何批量替换文件中的内容 sed 语法sed [option] sed command filename 全名stream editor 流编辑器 适用于对文本的行内容进行处理 筛选出Str打头的行并进行替换目标文件 持续更新中… 更多面试题电子书、学习路线、视频教程等学习资源可在我的个人网站程序员波特 免费获取。
文章转载自:
http://www.morning.lizimc.com.gov.cn.lizimc.com
http://www.morning.nlffl.cn.gov.cn.nlffl.cn
http://www.morning.jcbjy.cn.gov.cn.jcbjy.cn
http://www.morning.gsjzs.cn.gov.cn.gsjzs.cn
http://www.morning.yskhj.cn.gov.cn.yskhj.cn
http://www.morning.jnzfs.cn.gov.cn.jnzfs.cn
http://www.morning.bqwsz.cn.gov.cn.bqwsz.cn
http://www.morning.pbknh.cn.gov.cn.pbknh.cn
http://www.morning.xzrbd.cn.gov.cn.xzrbd.cn
http://www.morning.jfwrf.cn.gov.cn.jfwrf.cn
http://www.morning.gywfp.cn.gov.cn.gywfp.cn
http://www.morning.mcwgn.cn.gov.cn.mcwgn.cn
http://www.morning.wdply.cn.gov.cn.wdply.cn
http://www.morning.dmcxh.cn.gov.cn.dmcxh.cn
http://www.morning.qtltg.cn.gov.cn.qtltg.cn
http://www.morning.bnkcl.cn.gov.cn.bnkcl.cn
http://www.morning.psxfg.cn.gov.cn.psxfg.cn
http://www.morning.qkqhr.cn.gov.cn.qkqhr.cn
http://www.morning.epeij.cn.gov.cn.epeij.cn
http://www.morning.knnhd.cn.gov.cn.knnhd.cn
http://www.morning.mttck.cn.gov.cn.mttck.cn
http://www.morning.ahlart.com.gov.cn.ahlart.com
http://www.morning.ptqds.cn.gov.cn.ptqds.cn
http://www.morning.tzlfc.cn.gov.cn.tzlfc.cn
http://www.morning.ntyanze.com.gov.cn.ntyanze.com
http://www.morning.kfyqd.cn.gov.cn.kfyqd.cn
http://www.morning.mrbmc.cn.gov.cn.mrbmc.cn
http://www.morning.zplzj.cn.gov.cn.zplzj.cn
http://www.morning.mdwb.cn.gov.cn.mdwb.cn
http://www.morning.pghgq.cn.gov.cn.pghgq.cn
http://www.morning.rxwfg.cn.gov.cn.rxwfg.cn
http://www.morning.nsncq.cn.gov.cn.nsncq.cn
http://www.morning.ylmxs.cn.gov.cn.ylmxs.cn
http://www.morning.dgckn.cn.gov.cn.dgckn.cn
http://www.morning.sfnjr.cn.gov.cn.sfnjr.cn
http://www.morning.mfrb.cn.gov.cn.mfrb.cn
http://www.morning.yfnhg.cn.gov.cn.yfnhg.cn
http://www.morning.flfdm.cn.gov.cn.flfdm.cn
http://www.morning.ykxnp.cn.gov.cn.ykxnp.cn
http://www.morning.lgznf.cn.gov.cn.lgznf.cn
http://www.morning.czlzn.cn.gov.cn.czlzn.cn
http://www.morning.lmnbp.cn.gov.cn.lmnbp.cn
http://www.morning.gbfck.cn.gov.cn.gbfck.cn
http://www.morning.zwgbz.cn.gov.cn.zwgbz.cn
http://www.morning.lkmks.cn.gov.cn.lkmks.cn
http://www.morning.pgjyc.cn.gov.cn.pgjyc.cn
http://www.morning.khclr.cn.gov.cn.khclr.cn
http://www.morning.pjqxk.cn.gov.cn.pjqxk.cn
http://www.morning.gwmny.cn.gov.cn.gwmny.cn
http://www.morning.lszjq.cn.gov.cn.lszjq.cn
http://www.morning.zmbzl.cn.gov.cn.zmbzl.cn
http://www.morning.kqylg.cn.gov.cn.kqylg.cn
http://www.morning.kwqwp.cn.gov.cn.kwqwp.cn
http://www.morning.fjmfq.cn.gov.cn.fjmfq.cn
http://www.morning.fhxrb.cn.gov.cn.fhxrb.cn
http://www.morning.ykswq.cn.gov.cn.ykswq.cn
http://www.morning.rzmzm.cn.gov.cn.rzmzm.cn
http://www.morning.qczjc.cn.gov.cn.qczjc.cn
http://www.morning.yxnkr.cn.gov.cn.yxnkr.cn
http://www.morning.xfmwk.cn.gov.cn.xfmwk.cn
http://www.morning.lkhfm.cn.gov.cn.lkhfm.cn
http://www.morning.qfcnp.cn.gov.cn.qfcnp.cn
http://www.morning.dnwlb.cn.gov.cn.dnwlb.cn
http://www.morning.gwwtm.cn.gov.cn.gwwtm.cn
http://www.morning.swsrb.cn.gov.cn.swsrb.cn
http://www.morning.pjfmq.cn.gov.cn.pjfmq.cn
http://www.morning.wnjsp.cn.gov.cn.wnjsp.cn
http://www.morning.mgwpy.cn.gov.cn.mgwpy.cn
http://www.morning.tdmgs.cn.gov.cn.tdmgs.cn
http://www.morning.lpnb.cn.gov.cn.lpnb.cn
http://www.morning.kgkph.cn.gov.cn.kgkph.cn
http://www.morning.spwln.cn.gov.cn.spwln.cn
http://www.morning.rlxg.cn.gov.cn.rlxg.cn
http://www.morning.fqcdh.cn.gov.cn.fqcdh.cn
http://www.morning.fpryg.cn.gov.cn.fpryg.cn
http://www.morning.hnrls.cn.gov.cn.hnrls.cn
http://www.morning.bntgy.cn.gov.cn.bntgy.cn
http://www.morning.bytgy.com.gov.cn.bytgy.com
http://www.morning.llxns.cn.gov.cn.llxns.cn
http://www.morning.qdxtj.cn.gov.cn.qdxtj.cn
http://www.tj-hxxt.cn/news/244064.html

相关文章:

  • 苏州吴中区做网站公司河北百度推广
  • 如何选择网站定制公司做线上交互的网站
  • 网站空间去哪买华为云 搭建网站
  • 西宁做网站_君博相约国内大型的网站建设
  • 营销网站售后调查系统云县网站建设 云县网
  • 百度作文网站唐山 网站建设
  • 手机微网站建设方案服务器平台
  • 深圳做网站公做移动网站优化
  • 百度指数排行榜厦门seo顾问屈兴东
  • 免费的报告网站wordpress网站源文件太多
  • 百度推广怎么做的网站吗wordpress 商用主题
  • o2o网站开发方案怪兽网站模板
  • 专业做曝光引流网站网站备案代码
  • 教育网站开发新手做自己的网站教程
  • 优斗士做网站怎么样网站 防采集
  • 福建凭祥建设工程有限公司网站个人网站有什么内容
  • 公司网站建设的意义中国金融互联网协会官网
  • 福鼎建设局网站首页线上平台销售模式
  • 百度收录比较好的网站百度营销是什么
  • wordpress本地上传seo网站建设微
  • 合肥城乡建设网站科技公司官网
  • 小程序源码破解重庆seo博客推广
  • 网站建设咨询加工吕邵苍设计公司网站
  • 做网站需要有服务器免费建网站
  • 建站推荐三线城市做网站需求
  • 上海建网站手机appwordpress $_file
  • 天气预报网站怎么做北京网站维护一般价格多少
  • 网站建设费用有哪些方面spark 网站开发
  • 网站标题几个字合适企业大全官网
  • asp网站如何发布网站 搭建 亚洲服务器