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

中国国建设监理协会网站识图 WordPress

中国国建设监理协会网站,识图 WordPress,廊坊网站建设技术支持,微网站的案例现状 目前市面上和官方均只有rocketmq x86架构下的docker镜像#xff0c;而随着国产化和信创适配的需求越来越多#xff0c;显然现有的x86架构下的docker镜像不能满足多样化的需求#xff0c;因此我们需要根据官方发布的版本制作满足需求的多架构镜像#xff0c;以在不同cp…现状 目前市面上和官方均只有rocketmq x86架构下的docker镜像而随着国产化和信创适配的需求越来越多显然现有的x86架构下的docker镜像不能满足多样化的需求因此我们需要根据官方发布的版本制作满足需求的多架构镜像以在不同cpu架构下部署使用。 rocketmq官方网站RocketMQ · 官方网站 | RocketMQ 关于rocketmq的介绍请阅读官方文档这里就不做过多赘述。 前提条件 1. 构建镜像的机器需要能访问互联网拥有良好的网络环境 2. 构建之前请搭建好私有仓库比如harbor、registry这种以便将多架构镜像推送到镜像仓库中 3. 需要安装docker版本要求19.03以上并支持buildx插件 准备工作 1. 编写Dockerfile文件 # 多阶段构建方式 cat Dockerfile-centos################################################################################ # Build stage 1 builder: # Download and extract RocketMQ ################################################################################ FROM eclipse-temurin:8-jdk-centos7 AS builderARG versionRUN set -eux \ yum -y update \ yum -y install curl gnupg unzip \ yum clean all -yRUN curl -L https://archive.apache.org/dist/rocketmq/${version}/rocketmq-all-${version}-bin-release.zip -o rocketmq.zip \ curl -L https://archive.apache.org/dist/rocketmq/${version}/rocketmq-all-${version}-bin-release.zip.asc -o rocketmq.zip.asc \ curl -L https://www.apache.org/dist/rocketmq/KEYS -o KEYS \ gpg --import KEYS \ gpg --batch --verify rocketmq.zip.asc rocketmq.zipRUN unzip rocketmq.zip \ mkdir -p /tmp/rocketmq-${version} \ mv rocketmq*/* /tmp/rocketmq-${version}################################################################################ # Build stage 2: # Make the actual RocketMQ docker image ################################################################################ FROM eclipse-temurin:8-jdk-centos7ARG userrocketmq ARG grouprocketmq ARG uid3000 ARG gid3000ARG version# Rocketmq version ENV ROCKETMQ_VERSION ${version}# Rocketmq home ENV ROCKETMQ_HOME /home/rocketmq/rocketmq-${ROCKETMQ_VERSION}# expose namesrv port EXPOSE 9876# expose broker ports EXPOSE 10909 10911 10912# RocketMQ is run with user rocketmq, uid 3000 # If you bind mount a volume from the host or a data container, # ensure you use the same uid RUN groupadd -g ${gid} ${group} \ useradd -l -u ${uid} -g ${gid} -m -s /bin/bash ${user} \ yum -y update \ yum -y install less openssl which bash wget curl tzdata \ yum clean all -y rm -rf /var/cache/yum # Copy customized scripts COPY scripts/ ${ROCKETMQ_HOME}/bin/# Copy RocketMQ artifact from builder COPY --frombuilder --chown${uid}:${gid} /tmp/rocketmq-${version}/ ${ROCKETMQ_HOME}# Override customized scripts for namesrv # Override customized scripts for broker # Export Java options # Add ${JAVA_HOME}/lib/ext as java.ext.dirs RUN mv ${ROCKETMQ_HOME}/bin/runserver-customize.sh ${ROCKETMQ_HOME}/bin/runserver.sh \ mv ${ROCKETMQ_HOME}/bin/runbroker-customize.sh ${ROCKETMQ_HOME}/bin/runbroker.sh \ chmod -R ax ${ROCKETMQ_HOME}/bin/ \ export JAVA_OPT -Duser.home/opt \ sed -i s/${JAVA_HOME}\/jre\/lib\/ext/${JAVA_HOME}\/jre\/lib\/ext:${JAVA_HOME}\/lib\/ext/ ${ROCKETMQ_HOME}/bin/tools.sh \ chown -R ${uid}:${gid} ${ROCKETMQ_HOME} \ localedef -i en_US -f UTF-8 en_US.UTF-8 \ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ export LANGC.UTF-8USER ${user}WORKDIR ${ROCKETMQ_HOME}/binENTRYPOINT [./docker-entrypoint.sh] # Dummy overridable parameter parsed by entrypoint CMD [dummy] 2. 编写需要的脚本文件 # 脚本文件docker-entrypoint.sh cat docker-entrypoint.sh#!/bin/bash set -e# Allow user specify custom CMD, maybe run /bin/bash to check the image if [[ $1 nameserver || ${NODE_ROLE} nameserver ]]; thenshiftexec ./mqnamesrv ${} elif [[ $1 broker || ${NODE_ROLE} broker ]]; thenshiftexec ./mqbroker ${} elif [[ $1 controller || ${NODE_ROLE} controller ]]; thenshiftexec ./mqcontroller ${} else# Run whatever command the user wantsexec $ fi # 脚本文件 runbroker-customize.sh#!/bin/bash# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the License); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an AS IS BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License.# # Java Environment Setting # error_exit () {echo ERROR: $1 !!exit 1 }find_java_home() {case uname inDarwin)JAVA_HOME$(/usr/libexec/java_home);;*)JAVA_HOME$(dirname $(dirname $(readlink -f $(which javac))));;esac }find_java_home[ ! -e $JAVA_HOME/bin/java ] JAVA_HOME$HOME/jdk/java [ ! -e $JAVA_HOME/bin/java ] JAVA_HOME/usr/java [ ! -e $JAVA_HOME/bin/java ] error_exit Please set the JAVA_HOME variable in your environment, We need java(x64)!export JAVA_HOME export JAVA$JAVA_HOME/bin/java export BASE_DIR$(dirname $0)/.. export CLASSPATH.:${BASE_DIR}/conf:${CLASSPATH}# # JVM Configuration # calculate_heap_sizes() {case uname inLinux)system_memory_in_mbfree -m| sed -n 2p | awk {print $2}system_cpu_coresegrep -c processor([[:space:]]):.* /proc/cpuinfo;;FreeBSD)system_memory_in_bytessysctl hw.physmem | awk {print $2}system_memory_in_mbexpr $system_memory_in_bytes / 1024 / 1024system_cpu_coressysctl hw.ncpu | awk {print $2};;SunOS)system_memory_in_mbprtconf | awk /Memory size:/ {print $3}system_cpu_corespsrinfo | wc -l;;Darwin)system_memory_in_bytessysctl hw.memsize | awk {print $2}system_memory_in_mbexpr $system_memory_in_bytes / 1024 / 1024system_cpu_coressysctl hw.ncpu | awk {print $2};;*)# assume reasonable defaults for e.g. a modern desktop or# cheap serversystem_memory_in_mb2048system_cpu_cores2;;esac# some systems like the raspberry pi dont report cores, use at least 1if [ $system_cpu_cores -lt 1 ]thensystem_cpu_cores1fi# set max heap size based on the following# max(min(1/2 ram, 1024MB), min(1/4 ram, 8GB))# calculate 1/2 ram and cap to 1024MB# calculate 1/4 ram and cap to 8192MB# pick the maxhalf_system_memory_in_mbexpr $system_memory_in_mb / 2quarter_system_memory_in_mbexpr $half_system_memory_in_mb / 2if [ $half_system_memory_in_mb -gt 1024 ]thenhalf_system_memory_in_mb1024fiif [ $quarter_system_memory_in_mb -gt 8192 ]thenquarter_system_memory_in_mb8192fiif [ $half_system_memory_in_mb -gt $quarter_system_memory_in_mb ]thenmax_heap_size_in_mb$half_system_memory_in_mbelsemax_heap_size_in_mb$quarter_system_memory_in_mbfiMAX_HEAP_SIZE${max_heap_size_in_mb}M# Young gen: min(max_sensible_per_modern_cpu_core * num_cores, 1/4 * heap size)max_sensible_yg_per_core_in_mb100max_sensible_yg_in_mbexpr $max_sensible_yg_per_core_in_mb * $system_cpu_coresdesired_yg_in_mbexpr $max_heap_size_in_mb / 4if [ $desired_yg_in_mb -gt $max_sensible_yg_in_mb ]thenHEAP_NEWSIZE${max_sensible_yg_in_mb}MelseHEAP_NEWSIZE${desired_yg_in_mb}Mfi }calculate_heap_sizes# Dynamically calculate parameters, for reference. Xms$MAX_HEAP_SIZE Xmx$MAX_HEAP_SIZE Xmn$HEAP_NEWSIZE MaxDirectMemorySize$MAX_HEAP_SIZE # Set for JAVA_OPT. JAVA_OPT${JAVA_OPT} -server -Xms${Xms} -Xmx${Xmx} -Xmn${Xmn} JAVA_OPT${JAVA_OPT} -XX:UseG1GC -XX:G1HeapRegionSize16m -XX:G1ReservePercent25 -XX:InitiatingHeapOccupancyPercent30 -XX:SoftRefLRUPolicyMSPerMB0 -XX:SurvivorRatio8 JAVA_OPT${JAVA_OPT} -verbose:gc -Xloggc:/dev/shm/mq_gc_%p.log -XX:PrintGCDetails -XX:PrintGCDateStamps -XX:PrintGCApplicationStoppedTime -XX:PrintAdaptiveSizePolicy JAVA_OPT${JAVA_OPT} -XX:UseGCLogFileRotation -XX:NumberOfGCLogFiles5 -XX:GCLogFileSize30m JAVA_OPT${JAVA_OPT} -XX:-OmitStackTraceInFastThrow JAVA_OPT${JAVA_OPT} -XX:AlwaysPreTouch JAVA_OPT${JAVA_OPT} -XX:MaxDirectMemorySize${MaxDirectMemorySize} JAVA_OPT${JAVA_OPT} -XX:-UseLargePages -XX:-UseBiasedLocking JAVA_OPT${JAVA_OPT} -Djava.ext.dirs${JAVA_HOME}/jre/lib/ext:${BASE_DIR}/lib #JAVA_OPT${JAVA_OPT} -Xdebug -Xrunjdwp:transportdt_socket,address9555,servery,suspendn JAVA_OPT${JAVA_OPT} ${JAVA_OPT_EXT} JAVA_OPT${JAVA_OPT} -cp ${CLASSPATH}numactl --interleaveall pwd /dev/null 21 if [ $? -eq 0 ] thenif [ -z $RMQ_NUMA_NODE ] ; thennumactl --interleaveall $JAVA ${JAVA_OPT} $elsenumactl --cpunodebind$RMQ_NUMA_NODE --membind$RMQ_NUMA_NODE $JAVA ${JAVA_OPT} $fi else$JAVA ${JAVA_OPT} $ fi# 脚本文件 runserver-customize.sh#!/bin/bash# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the License); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an AS IS BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License.# # Java Environment Setting # error_exit () {echo ERROR: $1 !!exit 1 }find_java_home() {case uname inDarwin)JAVA_HOME$(/usr/libexec/java_home);;*)JAVA_HOME$(dirname $(dirname $(readlink -f $(which javac))));;esac }find_java_home[ ! -e $JAVA_HOME/bin/java ] JAVA_HOME$HOME/jdk/java [ ! -e $JAVA_HOME/bin/java ] JAVA_HOME/usr/java [ ! -e $JAVA_HOME/bin/java ] error_exit Please set the JAVA_HOME variable in your environment, We need java(x64)!export JAVA_HOME export JAVA$JAVA_HOME/bin/java export BASE_DIR$(dirname $0)/.. export CLASSPATH.:${BASE_DIR}/conf:${CLASSPATH}# # JVM Configuration # calculate_heap_sizes() {case uname inLinux)system_memory_in_mbfree -m| sed -n 2p | awk {print $2}system_cpu_coresegrep -c processor([[:space:]]):.* /proc/cpuinfo;;FreeBSD)system_memory_in_bytessysctl hw.physmem | awk {print $2}system_memory_in_mbexpr $system_memory_in_bytes / 1024 / 1024system_cpu_coressysctl hw.ncpu | awk {print $2};;SunOS)system_memory_in_mbprtconf | awk /Memory size:/ {print $3}system_cpu_corespsrinfo | wc -l;;Darwin)system_memory_in_bytessysctl hw.memsize | awk {print $2}system_memory_in_mbexpr $system_memory_in_bytes / 1024 / 1024system_cpu_coressysctl hw.ncpu | awk {print $2};;*)# assume reasonable defaults for e.g. a modern desktop or# cheap serversystem_memory_in_mb2048system_cpu_cores2;;esac# some systems like the raspberry pi dont report cores, use at least 1if [ $system_cpu_cores -lt 1 ]thensystem_cpu_cores1fi# set max heap size based on the following# max(min(1/2 ram, 1024MB), min(1/4 ram, 8GB))# calculate 1/2 ram and cap to 1024MB# calculate 1/4 ram and cap to 8192MB# pick the maxhalf_system_memory_in_mbexpr $system_memory_in_mb / 2quarter_system_memory_in_mbexpr $half_system_memory_in_mb / 2if [ $half_system_memory_in_mb -gt 1024 ]thenhalf_system_memory_in_mb1024fiif [ $quarter_system_memory_in_mb -gt 8192 ]thenquarter_system_memory_in_mb8192fiif [ $half_system_memory_in_mb -gt $quarter_system_memory_in_mb ]thenmax_heap_size_in_mb$half_system_memory_in_mbelsemax_heap_size_in_mb$quarter_system_memory_in_mbfiMAX_HEAP_SIZE${max_heap_size_in_mb}M# Young gen: min(max_sensible_per_modern_cpu_core * num_cores, 1/4 * heap size)max_sensible_yg_per_core_in_mb100max_sensible_yg_in_mbexpr $max_sensible_yg_per_core_in_mb * $system_cpu_coresdesired_yg_in_mbexpr $max_heap_size_in_mb / 4if [ $desired_yg_in_mb -gt $max_sensible_yg_in_mb ]thenHEAP_NEWSIZE${max_sensible_yg_in_mb}MelseHEAP_NEWSIZE${desired_yg_in_mb}Mfi }calculate_heap_sizes# Dynamically calculate parameters, for reference. Xms$MAX_HEAP_SIZE Xmx$MAX_HEAP_SIZE Xmn$HEAP_NEWSIZE # Set for JAVA_OPT. JAVA_OPT${JAVA_OPT} -server -Xms${Xms} -Xmx${Xmx} -Xmn${Xmn} JAVA_OPT${JAVA_OPT} -XX:UseConcMarkSweepGC -XX:UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction70 -XX:CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB0 -XX:CMSClassUnloadingEnabled -XX:SurvivorRatio8 -XX:-UseParNewGC JAVA_OPT${JAVA_OPT} -verbose:gc -Xloggc:/dev/shm/rmq_srv_gc.log -XX:PrintGCDetails JAVA_OPT${JAVA_OPT} -XX:-OmitStackTraceInFastThrow JAVA_OPT${JAVA_OPT} -XX:-UseLargePages JAVA_OPT${JAVA_OPT} -Djava.ext.dirs${JAVA_HOME}/jre/lib/ext:${BASE_DIR}/lib #JAVA_OPT${JAVA_OPT} -Xdebug -Xrunjdwp:transportdt_socket,address9555,servery,suspendn JAVA_OPT${JAVA_OPT} ${JAVA_OPT_EXT} JAVA_OPT${JAVA_OPT} -cp ${CLASSPATH}$JAVA ${JAVA_OPT} $编写构建脚本build-image.sh # 构建镜像的脚本#!/usr/bin/env bashcheckVersion() {echo Version $1echo $1 |grep -E ^[0-9]\.[0-9]\.[0-9] /dev/nullif [ $? 0 ]; thenreturn 1fiecho Version $1 illegal, it should be X.X.X format(e.g. 4.5.0), please check released versions in https://archive.apache.org/dist/rocketmq/exit -1 }if [ $# -lt 2 ]; thenecho -e Usage: sh $0 Version BaseImageexit -1 fiROCKETMQ_VERSION$1BASE_IMAGEcentoscheckVersion $ROCKETMQ_VERSION# Build rocketmq case ${BASE_IMAGE} incentos)docker run --privileged --rm harbor.codemiracle.com.cn/baseapp/binfmt:latest --install alldocker buildx create --use --namemybuilder-rocketmq --driver docker-container --driver-opt imageharbor.codemiracle.com.cn/baseapp/buildkit:masterdocker buildx build --no-cache -f Dockerfile-centos --platformlinux/amd64,linux/arm64 -t harbor.codemiracle.com.cn/baseapp/rocketmq:${ROCKETMQ_VERSION} --build-arg version${ROCKETMQ_VERSION} . --pushdocker buildx rm mybuilder-rocketmq;;*)echo ${BASE_IMAGE} is not supported, supported base images: centosexit -1;; esac 如何构建 # 如何使用脚本构建呢1. 创建相关目录将文件放到对应目录下mkdir scriptsmv docker-entrypoint.sh scripts/mv runbroker-customize.sh scripts/mv runserver-customize.sh scripts/2. 登陆harbordocker login harbor.codemiracle.com.cn3. 执行构建脚本sh build-image.sh [rocketmq版本号]eg: sh build-image.sh 4.5.2参考资料 GitHub - apache/rocketmq-docker: Apache RocketMQ Docker
文章转载自:
http://www.morning.xlbtz.cn.gov.cn.xlbtz.cn
http://www.morning.zypnt.cn.gov.cn.zypnt.cn
http://www.morning.xtrzh.cn.gov.cn.xtrzh.cn
http://www.morning.trbxt.cn.gov.cn.trbxt.cn
http://www.morning.ntwfr.cn.gov.cn.ntwfr.cn
http://www.morning.bpncd.cn.gov.cn.bpncd.cn
http://www.morning.tyjnr.cn.gov.cn.tyjnr.cn
http://www.morning.ljmbd.cn.gov.cn.ljmbd.cn
http://www.morning.pyswr.cn.gov.cn.pyswr.cn
http://www.morning.hjssh.cn.gov.cn.hjssh.cn
http://www.morning.thbqp.cn.gov.cn.thbqp.cn
http://www.morning.ypxyl.cn.gov.cn.ypxyl.cn
http://www.morning.yznsx.cn.gov.cn.yznsx.cn
http://www.morning.wnpps.cn.gov.cn.wnpps.cn
http://www.morning.bfysg.cn.gov.cn.bfysg.cn
http://www.morning.fhcwm.cn.gov.cn.fhcwm.cn
http://www.morning.lxhrq.cn.gov.cn.lxhrq.cn
http://www.morning.smhtg.cn.gov.cn.smhtg.cn
http://www.morning.dpqqg.cn.gov.cn.dpqqg.cn
http://www.morning.wqbrg.cn.gov.cn.wqbrg.cn
http://www.morning.nfbkp.cn.gov.cn.nfbkp.cn
http://www.morning.kmldm.cn.gov.cn.kmldm.cn
http://www.morning.dfmjm.cn.gov.cn.dfmjm.cn
http://www.morning.hqgkx.cn.gov.cn.hqgkx.cn
http://www.morning.dlgjdg.cn.gov.cn.dlgjdg.cn
http://www.morning.zynjt.cn.gov.cn.zynjt.cn
http://www.morning.qwfq.cn.gov.cn.qwfq.cn
http://www.morning.nkyc.cn.gov.cn.nkyc.cn
http://www.morning.bsrcr.cn.gov.cn.bsrcr.cn
http://www.morning.yksf.cn.gov.cn.yksf.cn
http://www.morning.cjqcx.cn.gov.cn.cjqcx.cn
http://www.morning.fhkr.cn.gov.cn.fhkr.cn
http://www.morning.swwpl.cn.gov.cn.swwpl.cn
http://www.morning.jcyrs.cn.gov.cn.jcyrs.cn
http://www.morning.jppb.cn.gov.cn.jppb.cn
http://www.morning.rknjx.cn.gov.cn.rknjx.cn
http://www.morning.clkyw.cn.gov.cn.clkyw.cn
http://www.morning.hxljc.cn.gov.cn.hxljc.cn
http://www.morning.rgrdd.cn.gov.cn.rgrdd.cn
http://www.morning.xlwpz.cn.gov.cn.xlwpz.cn
http://www.morning.kabaifu.com.gov.cn.kabaifu.com
http://www.morning.jzfrl.cn.gov.cn.jzfrl.cn
http://www.morning.ngcw.cn.gov.cn.ngcw.cn
http://www.morning.ffcsr.cn.gov.cn.ffcsr.cn
http://www.morning.gxtfk.cn.gov.cn.gxtfk.cn
http://www.morning.rfpq.cn.gov.cn.rfpq.cn
http://www.morning.xpfwr.cn.gov.cn.xpfwr.cn
http://www.morning.rkfh.cn.gov.cn.rkfh.cn
http://www.morning.xfxqj.cn.gov.cn.xfxqj.cn
http://www.morning.ryglh.cn.gov.cn.ryglh.cn
http://www.morning.knrgb.cn.gov.cn.knrgb.cn
http://www.morning.qichetc.com.gov.cn.qichetc.com
http://www.morning.rtryr.cn.gov.cn.rtryr.cn
http://www.morning.errnull.com.gov.cn.errnull.com
http://www.morning.myzfz.com.gov.cn.myzfz.com
http://www.morning.mydgr.cn.gov.cn.mydgr.cn
http://www.morning.jlpdc.cn.gov.cn.jlpdc.cn
http://www.morning.nnttr.cn.gov.cn.nnttr.cn
http://www.morning.qxltp.cn.gov.cn.qxltp.cn
http://www.morning.nlwrg.cn.gov.cn.nlwrg.cn
http://www.morning.mbprq.cn.gov.cn.mbprq.cn
http://www.morning.hgwsj.cn.gov.cn.hgwsj.cn
http://www.morning.lnwdh.cn.gov.cn.lnwdh.cn
http://www.morning.lrskd.cn.gov.cn.lrskd.cn
http://www.morning.qwdlj.cn.gov.cn.qwdlj.cn
http://www.morning.qtltg.cn.gov.cn.qtltg.cn
http://www.morning.mrxgm.cn.gov.cn.mrxgm.cn
http://www.morning.tcfhs.cn.gov.cn.tcfhs.cn
http://www.morning.tgtsg.cn.gov.cn.tgtsg.cn
http://www.morning.bfbl.cn.gov.cn.bfbl.cn
http://www.morning.dncgb.cn.gov.cn.dncgb.cn
http://www.morning.hyryq.cn.gov.cn.hyryq.cn
http://www.morning.yhjrc.cn.gov.cn.yhjrc.cn
http://www.morning.jkwwm.cn.gov.cn.jkwwm.cn
http://www.morning.jcxyq.cn.gov.cn.jcxyq.cn
http://www.morning.zphlb.cn.gov.cn.zphlb.cn
http://www.morning.xqjrg.cn.gov.cn.xqjrg.cn
http://www.morning.zylzk.cn.gov.cn.zylzk.cn
http://www.morning.lwgrf.cn.gov.cn.lwgrf.cn
http://www.morning.sgfnx.cn.gov.cn.sgfnx.cn
http://www.tj-hxxt.cn/news/277071.html

相关文章:

  • 网站的开发工具和运行环境申请公司注册需要多少钱
  • 凡科建站源码南宁seo排名优化
  • 做外国订单有什么网站成都本地网站
  • 能下短视频网站做牙北京优酷首页培训机构
  • 宿迁专业网站三合一建设网页美工设计图片
  • 简述网站设计基本流程深圳实惠的专业建站公司
  • 苏州自助建站商场设计公司
  • 电商 企业网站 福州文化建设实施方案
  • 网站建设项目的预算网站开发语言为
  • 常州哪些网站公司做的好丽江网站建设c3sales
  • 邯郸住房和城乡建设局网站建设网站证书不受信任
  • 什么网站可以做TCGA病理分期小程序开发一年多少钱
  • 宁波网站建设与推广方案wordpress大
  • 怎样进网站空间服务器wordpress 媒体路径
  • 网站如何实现微信登录界面中山网站设计公司
  • 没有公司做网站可以吗高端制造
  • 郴州58网站杨浦专业做网站
  • 汕头网站设计定制WordPress海报
  • 直播网站建设需要什么品牌营销咨询公司
  • 济南电子商务网站建设怎么安装百度
  • 网站建设的利益生成图片
  • 企业网站推广优化公司大型网站开发pdf
  • 营销网站制作全包网站建设招标提问
  • 做展馆好的设计网站什么网站做的比较好
  • php框架做网站的好处重庆制作网站怎么选
  • 网站建设策划结构网络营销有哪些功能?
  • 做网站要给ftp密码吗如何提高网站的点击量
  • 创建网站大约design工业设计
  • 做类似淘宝的网站前景网站推广的优点
  • 菠菜网站建设条件简述网站制作过程