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

昆明门户网站建设浙江省建设工程监理协会网站

昆明门户网站建设,浙江省建设工程监理协会网站,厦门网站建设服务,做网站的三年规划随着信息技术和网络技术的飞速发展#xff0c;人类已进入全新信息化时代#xff0c;传统管理技术已无法高效#xff0c;便捷地管理信息。为了迎合时代需求#xff0c;优化管理效率#xff0c;各种各样的管理平台应运而生#xff0c;各行各业相继进入信息管理时代#xf…随着信息技术和网络技术的飞速发展人类已进入全新信息化时代传统管理技术已无法高效便捷地管理信息。为了迎合时代需求优化管理效率各种各样的管理平台应运而生各行各业相继进入信息管理时代冬奥会科普平台就是信息时代变革中的产物之一。 任何平台都要遵循平台设计的基本流程本平台也不例外同样需要经过市场调研需求分析概要设计详细设计编码测试这些步骤基于java语言设计并实现了冬奥会科普平台。该平台基于B/S即所谓浏览器/服务器模式应用java技术选择MySQL作为后台数据库。平台主要包括平台首页个人中心用户管理项目类型管理冬奥会项目管理精彩视频管理冬奥论坛系统管理等功能模块。 本文首先介绍了冬奥会科普管理的技术发展背景与发展现状然后遵循软件常规开发流程首先针对平台选取适用的语言和开发平台根据需求分析制定模块并设计数据库结构再根据平台总体功能模块的设计绘制平台的功能模块图流程图以及E-R图。然后设计框架并根据设计的框架编写代码以实现平台的各个功能模块。最后对初步完成的平台进行测试主要是功能测试、单元测试和性能测试。测试结果表明该平台能够实现所需的功能运行状况尚可并无明显缺点。 关键词冬奥会科普javaMySQL数据库 springboo冬奥会科普平台源码和论文362 演示视频 springboo冬奥会科普平台源码和论文 Abstract With the rapid development of information technology and network technology, human beings have entered a new information age, traditional management technology has been unable to efficiently and conveniently manage information. In order to meet the needs of The Times and optimize management efficiency, a variety of management platforms have emerged, and all walks of life have entered the information management era. The Popular science platform of the Winter Olympics is one of the products in the information era. Any platform should follow the basic process of platform design, and this platform is no exception. It also needs to go through the steps of market research, demand analysis, outline design, detailed design, coding and testing. Based on Java language, the Popular science platform of winter Olympics is designed and implemented. The platform is based on THE B/S browser/server mode, the application of Java technology, MySQL as the background database. The platform mainly includes the platform home page, personal center, user management, project type management, Winter Olympics project management, highlight video management, Winter Olympics forum, system management and other functional modules. This article first introduces the winter Olympics technology development background and current situation of the development of science management, and then follow the routine software development process, the first platform for the selection of suitable language and development platform, according to the requirement analysis module and database structure design, and according to the overall function module design rendering platform platform function module chart, flow diagram and e-r diagram. Then, the framework is designed and the code is written according to the designed framework to realize the various functional modules of the platform. Finally, the preliminarily completed platform is tested, mainly functional test, unit test and performance test. The test results show that the platform can achieve the required functions, the operating condition is fair and there are no obvious shortcomings. Key words: Winter Olympics science popularization; Java; The MySQL database 本平台采用的是MySQL数据库存储数据平台中使用到的主要数据表的具体展示部分如下所示。 表4-1token表 字段名称 类型 长度 字段说明 主键 默认值 id bigint 主键 主键 userid bigint 用户id username varchar 100 用户名 tablename varchar 100 表名 role varchar 100 角色 token varchar 200 密码 addtime timestamp 新增时间 CURRENT_TIMESTAMP expiratedtime timestamp 过期时间 CURRENT_TIMESTAMP 表4-2收藏表 字段名称 类型 长度 字段说明 主键 默认值 id bigint 主键 主键 addtime timestamp 创建时间 CURRENT_TIMESTAMP userid bigint 用户id refid bigint 收藏id tablename varchar 200 表名 name varchar 200 收藏名称 picture varchar 200 收藏图片 type varchar 200 类型(1:收藏,21:赞,22:踩) 1 inteltype varchar 200 推荐类型 表4-3冬奥新闻 字段名称 类型 长度 字段说明 主键 默认值 id bigint 主键 主键 addtime timestamp 创建时间 CURRENT_TIMESTAMP title varchar 200 标题 introduction longtext 4294967295 简介 picture varchar 200 图片 content longtext 4294967295 内容 package com.controller;import java.io.*; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.text.SimpleDateFormat; import java.util.*;import javax.servlet.http.HttpServletRequest;import com.alibaba.fastjson.JSON; import com.utils.StringUtil; import org.apache.commons.lang3.StringUtils; import org.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.util.ResourceUtils; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController;import com.annotation.IgnoreAuth; import com.baidu.aip.face.AipFace; import com.baidu.aip.face.MatchRequest; import com.baidu.aip.util.Base64Util; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.entity.ConfigEntity; import com.service.CommonService; import com.service.ConfigService; import com.utils.BaiduUtil; import com.utils.FileUtil; import com.utils.R;/*** 通用接口*/ RestController public class CommonController {private static final Logger logger LoggerFactory.getLogger(CommonController.class);Autowiredprivate CommonService commonService;/*** Java代码实现MySQL数据库导出** param mysqlUrl MySQL安装路径* param hostIP MySQL数据库所在服务器地址IP* param userName 进入数据库所需要的用户名* param hostPort 数据库端口* param password 进入数据库所需要的密码* param savePath 数据库文件保存路径* param fileName 数据库导出文件文件名* param databaseName 要导出的数据库名* return 返回true表示导出成功否则返回false。*/IgnoreAuthRequestMapping(/beifen)public R beifen(String mysqlUrl, String hostIP, String userName, String hostPort, String password, String savePath, String fileName, String databaseName) {File saveFile new File(savePath);if (!saveFile.exists()) {// 如果目录不存在 saveFile.mkdirs();// 创建文件夹 }if (!savePath.endsWith(File.separator)) {savePath savePath File.separator;}PrintWriter printWriter null;BufferedReader bufferedReader null;try {Runtime runtime Runtime.getRuntime();String cmd mysqlUrl mysqldump -h hostIP -u userName -P hostPort -p password databaseName;runtime.exec(cmd);Process process runtime.exec(cmd);InputStreamReader inputStreamReader new InputStreamReader(process.getInputStream(), utf8);bufferedReader new BufferedReader(inputStreamReader);printWriter new PrintWriter(new OutputStreamWriter(new FileOutputStream(savePath fileName), utf8));String line;while ((line bufferedReader.readLine()) ! null) {printWriter.println(line);}printWriter.flush();} catch (Exception e) {e.printStackTrace();return R.error(备份数据出错);} finally {try {if (bufferedReader ! null) {bufferedReader.close();}if (printWriter ! null) {printWriter.close();}} catch (Exception e) {e.printStackTrace();}}return R.ok();}/*** Java实现MySQL数据库导入** param mysqlUrl MySQL安装路径* param hostIP MySQL数据库所在服务器地址IP* param userName 进入数据库所需要的用户名* param hostPort 数据库端口* param password 进入数据库所需要的密码* param savePath 数据库文件保存路径* param fileName 数据库导出文件文件名* param databaseName 要导出的数据库名*/IgnoreAuthRequestMapping(/huanyuan)public R huanyuan(String mysqlUrl, String hostIP, String userName, String hostPort, String password, String savePath, String fileName, String databaseName) {try {Runtime rt Runtime.getRuntime();Process child1 rt.exec(mysqlUrlmysql.exe -h hostIP -u userName -P hostPort -p password databaseName);OutputStream out child1.getOutputStream();//控制台的输入信息作为输出流String inStr;StringBuffer sb new StringBuffer();String outStr;BufferedReader br new BufferedReader(new InputStreamReader(new FileInputStream(savePath/fileName), utf-8));while ((inStr br.readLine()) ! null) {sb.append(inStr \r\n);}outStr sb.toString();OutputStreamWriter writer new OutputStreamWriter(out, utf8);writer.write(outStr); // 注这里如果用缓冲方式写入文件的话会导致中文乱码用flush()方法则可以避免writer.flush();out.close();br.close();writer.close();} catch (Exception e) {e.printStackTrace();return R.error(数据导入出错);}return R.ok();}/*** 饼状图求和* return*/RequestMapping(/pieSum)public R pieSum(RequestParam MapString,Object params) {logger.debug(饼状图求和:,,Controller:{},,params:{},this.getClass().getName(),params);ListMapString, Object result commonService.pieSum(params);return R.ok().put(data, result);}/*** 饼状图统计* return*/RequestMapping(/pieCount)public R pieCount(RequestParam MapString,Object params) {logger.debug(饼状图统计:,,Controller:{},,params:{},this.getClass().getName(),params);ListMapString, Object result commonService.pieCount(params);return R.ok().put(data, result);}/*** 柱状图求和单列* return*/RequestMapping(/barSumOne)public R barSumOne(RequestParam MapString,Object params) {logger.debug(柱状图求和单列:,,Controller:{},,params:{},this.getClass().getName(),params);ListMapString, Object result commonService.barSumOne(params);ListString xAxis new ArrayList();//报表x轴ListListString yAxis new ArrayList();//y轴ListString legend new ArrayList();//标题ListString yAxis0 new ArrayList();yAxis.add(yAxis0);legend.add();for(MapString, Object map :result){String oneValue String.valueOf(map.get(name));String value String.valueOf(map.get(value));xAxis.add(oneValue);yAxis0.add(value);}MapString, Object resultMap new HashMap();resultMap.put(xAxis,xAxis);resultMap.put(yAxis,yAxis);resultMap.put(legend,legend);return R.ok().put(data, resultMap);}/*** 柱状图统计单列* return*/RequestMapping(/barCountOne)public R barCountOne(RequestParam MapString,Object params) {logger.debug(柱状图统计单列:,,Controller:{},,params:{},this.getClass().getName(),params);ListMapString, Object result commonService.barCountOne(params);ListString xAxis new ArrayList();//报表x轴ListListString yAxis new ArrayList();//y轴ListString legend new ArrayList();//标题ListString yAxis0 new ArrayList();yAxis.add(yAxis0);legend.add();for(MapString, Object map :result){String oneValue String.valueOf(map.get(name));String value String.valueOf(map.get(value));xAxis.add(oneValue);yAxis0.add(value);}MapString, Object resultMap new HashMap();resultMap.put(xAxis,xAxis);resultMap.put(yAxis,yAxis);resultMap.put(legend,legend);return R.ok().put(data, resultMap);}/*** 柱状图统计双列* return*/RequestMapping(/barSumTwo)public R barSumTwo(RequestParam MapString,Object params) {logger.debug(柱状图统计双列:,,Controller:{},,params:{},this.getClass().getName(),params);ListMapString, Object result commonService.barSumTwo(params);ListString xAxis new ArrayList();//报表x轴ListListString yAxis new ArrayList();//y轴ListString legend new ArrayList();//标题MapString, HashMapString, String dataMap new LinkedHashMap();for(MapString, Object map :result){String name1Value String.valueOf(map.get(name1));String name2Value String.valueOf(map.get(name2));String value String.valueOf(map.get(value));if(!legend.contains(name2Value)){legend.add(name2Value);//添加完成后 就是最全的第二列的类型}if(dataMap.containsKey(name1Value)){dataMap.get(name1Value).put(name2Value,value);}else{HashMapString, String name1Data new HashMap();name1Data.put(name2Value,value);dataMap.put(name1Value,name1Data);}}for(int i 0; ilegend.size(); i){yAxis.add(new ArrayListString());}SetString keys dataMap.keySet();for(String key:keys){xAxis.add(key);HashMapString, String map dataMap.get(key);for(int i 0; ilegend.size(); i){ListString data yAxis.get(i);if(StringUtil.isNotEmpty(map.get(legend.get(i)))){data.add(map.get(legend.get(i)));}else{data.add(0);}}}System.out.println();MapString, Object resultMap new HashMap();resultMap.put(xAxis,xAxis);resultMap.put(yAxis,yAxis);resultMap.put(legend,legend);return R.ok().put(data, resultMap);}/*** 柱状图统计双列* return*/RequestMapping(/barCountTwo)public R barCountTwo(RequestParam MapString,Object params) {logger.debug(柱状图统计双列:,,Controller:{},,params:{},this.getClass().getName(),params);ListMapString, Object result commonService.barCountTwo(params);ListString xAxis new ArrayList();//报表x轴ListListString yAxis new ArrayList();//y轴ListString legend new ArrayList();//标题MapString, HashMapString, String dataMap new LinkedHashMap();for(MapString, Object map :result){String name1Value String.valueOf(map.get(name1));String name2Value String.valueOf(map.get(name2));String value String.valueOf(map.get(value));if(!legend.contains(name2Value)){legend.add(name2Value);//添加完成后 就是最全的第二列的类型}if(dataMap.containsKey(name1Value)){dataMap.get(name1Value).put(name2Value,value);}else{HashMapString, String name1Data new HashMap();name1Data.put(name2Value,value);dataMap.put(name1Value,name1Data);}}for(int i 0; ilegend.size(); i){yAxis.add(new ArrayListString());}SetString keys dataMap.keySet();for(String key:keys){xAxis.add(key);HashMapString, String map dataMap.get(key);for(int i 0; ilegend.size(); i){ListString data yAxis.get(i);if(StringUtil.isNotEmpty(map.get(legend.get(i)))){data.add(map.get(legend.get(i)));}else{data.add(0);}}}System.out.println();MapString, Object resultMap new HashMap();resultMap.put(xAxis,xAxis);resultMap.put(yAxis,yAxis);resultMap.put(legend,legend);return R.ok().put(data, resultMap);}/**tableName 查询表condition1 条件1condition1Value 条件1值average 计算平均评分取值有值 Number(res.data.value.toFixed(1))无值 if(res.data){}* */IgnoreAuthRequestMapping(/queryScore)public R queryScore(RequestParam MapString, Object params) {logger.debug(queryScore:,,Controller:{},,params:{},this.getClass().getName(),params);MapString, Object queryScore commonService.queryScore(params);return R.ok().put(data, queryScore);}/*** 查询字典表的分组统计总条数* tableName 表名* groupColumn 分组字段* return*/RequestMapping(/newSelectGroupCount)public R newSelectGroupCount(RequestParam MapString,Object params) {logger.debug(newSelectGroupCount:,,Controller:{},,params:{},this.getClass().getName(),params);ListMapString, Object result commonService.newSelectGroupCount(params);return R.ok().put(data, result);}/*** 查询字典表的分组求和* tableName 表名* groupColumn 分组字段* sumCloum 统计字段* return*/RequestMapping(/newSelectGroupSum)public R newSelectGroupSum(RequestParam MapString,Object params) {logger.debug(newSelectGroupSum:,,Controller:{},,params:{},this.getClass().getName(),params);ListMapString, Object result commonService.newSelectGroupSum(params);return R.ok().put(data, result);}/*** 柱状图求和 老的*/RequestMapping(/barSum)public R barSum(RequestParam MapString,Object params) {logger.debug(barSum方法:,,Controller:{},,params:{},this.getClass().getName(), com.alibaba.fastjson.JSONObject.toJSONString(params));Boolean isJoinTableFlag false;//是否有级联表相关String one ;//第一优先String two ;//第二优先//处理thisTable和joinTable 处理内容是把json字符串转为Map并把带有,的切割为数组//当前表MapString,Object thisTable JSON.parseObject(String.valueOf(params.get(thisTable)),Map.class);params.put(thisTable,thisTable);//级联表String joinTableString String.valueOf(params.get(joinTable));if(StringUtil.isNotEmpty(joinTableString)) {MapString, Object joinTable JSON.parseObject(joinTableString, Map.class);params.put(joinTable, joinTable);isJoinTableFlag true;}if(StringUtil.isNotEmpty(String.valueOf(thisTable.get(date)))){//当前表日期thisTable.put(date,String.valueOf(thisTable.get(date)).split(,));one thisDate0;}if(isJoinTableFlag){//级联表日期MapString, Object joinTable (MapString, Object) params.get(joinTable);if(StringUtil.isNotEmpty(String.valueOf(joinTable.get(date)))){joinTable.put(date,String.valueOf(joinTable.get(date)).split(,));if(StringUtil.isEmpty(one)){one joinDate0;}else{if(StringUtil.isEmpty(two)){two joinDate0;}}}}if(StringUtil.isNotEmpty(String.valueOf(thisTable.get(string)))){//当前表字符串thisTable.put(string,String.valueOf(thisTable.get(string)).split(,));if(StringUtil.isEmpty(one)){one thisString0;}else{if(StringUtil.isEmpty(two)){two thisString0;}}}if(isJoinTableFlag){//级联表字符串MapString, Object joinTable (MapString, Object) params.get(joinTable);if(StringUtil.isNotEmpty(String.valueOf(joinTable.get(string)))){joinTable.put(string,String.valueOf(joinTable.get(string)).split(,));if(StringUtil.isEmpty(one)){one joinString0;}else{if(StringUtil.isEmpty(two)){two joinString0;}}}}if(StringUtil.isNotEmpty(String.valueOf(thisTable.get(types)))){//当前表类型thisTable.put(types,String.valueOf(thisTable.get(types)).split(,));if(StringUtil.isEmpty(one)){one thisTypes0;}else{if(StringUtil.isEmpty(two)){two thisTypes0;}}}if(isJoinTableFlag){//级联表类型MapString, Object joinTable (MapString, Object) params.get(joinTable);if(StringUtil.isNotEmpty(String.valueOf(joinTable.get(types)))){joinTable.put(types,String.valueOf(joinTable.get(types)).split(,));if(StringUtil.isEmpty(one)){one joinTypes0;}else{if(StringUtil.isEmpty(two)){two joinTypes0;}}}}ListMapString, Object result commonService.barSum(params);ListString xAxis new ArrayList();//报表x轴ListListString yAxis new ArrayList();//y轴ListString legend new ArrayList();//标题if(StringUtil.isEmpty(two)){//不包含第二列ListString yAxis0 new ArrayList();yAxis.add(yAxis0);legend.add();for(MapString, Object map :result){String oneValue String.valueOf(map.get(one));String value String.valueOf(map.get(value));xAxis.add(oneValue);yAxis0.add(value);}}else{//包含第二列MapString, HashMapString, String dataMap new LinkedHashMap();if(StringUtil.isNotEmpty(two)){for(MapString, Object map :result){String oneValue String.valueOf(map.get(one));String twoValue String.valueOf(map.get(two));String value String.valueOf(map.get(value));if(!legend.contains(twoValue)){legend.add(twoValue);//添加完成后 就是最全的第二列的类型}if(dataMap.containsKey(oneValue)){dataMap.get(oneValue).put(twoValue,value);}else{HashMapString, String oneData new HashMap();oneData.put(twoValue,value);dataMap.put(oneValue,oneData);}}}for(int i 0; ilegend.size(); i){yAxis.add(new ArrayListString());}SetString keys dataMap.keySet();for(String key:keys){xAxis.add(key);HashMapString, String map dataMap.get(key);for(int i 0; ilegend.size(); i){ListString data yAxis.get(i);if(StringUtil.isNotEmpty(map.get(legend.get(i)))){data.add(map.get(legend.get(i)));}else{data.add(0);}}}System.out.println();}MapString, Object resultMap new HashMap();resultMap.put(xAxis,xAxis);resultMap.put(yAxis,yAxis);resultMap.put(legend,legend);return R.ok().put(data, resultMap);}/*** 柱状图统计 老的*/RequestMapping(/barCount)public R barCount(RequestParam MapString,Object params) {logger.debug(barCount方法:,,Controller:{},,params:{},this.getClass().getName(), com.alibaba.fastjson.JSONObject.toJSONString(params));Boolean isJoinTableFlag false;//是否有级联表相关String one ;//第一优先String two ;//第二优先//处理thisTable和joinTable 处理内容是把json字符串转为Map并把带有,的切割为数组//当前表MapString,Object thisTable JSON.parseObject(String.valueOf(params.get(thisTable)),Map.class);params.put(thisTable,thisTable);//级联表String joinTableString String.valueOf(params.get(joinTable));if(StringUtil.isNotEmpty(joinTableString)) {MapString, Object joinTable JSON.parseObject(joinTableString, Map.class);params.put(joinTable, joinTable);isJoinTableFlag true;}if(StringUtil.isNotEmpty(String.valueOf(thisTable.get(date)))){//当前表日期thisTable.put(date,String.valueOf(thisTable.get(date)).split(,));one thisDate0;}if(isJoinTableFlag){//级联表日期MapString, Object joinTable (MapString, Object) params.get(joinTable);if(StringUtil.isNotEmpty(String.valueOf(joinTable.get(date)))){joinTable.put(date,String.valueOf(joinTable.get(date)).split(,));if(StringUtil.isEmpty(one)){one joinDate0;}else{if(StringUtil.isEmpty(two)){two joinDate0;}}}}if(StringUtil.isNotEmpty(String.valueOf(thisTable.get(string)))){//当前表字符串thisTable.put(string,String.valueOf(thisTable.get(string)).split(,));if(StringUtil.isEmpty(one)){one thisString0;}else{if(StringUtil.isEmpty(two)){two thisString0;}}}if(isJoinTableFlag){//级联表字符串MapString, Object joinTable (MapString, Object) params.get(joinTable);if(StringUtil.isNotEmpty(String.valueOf(joinTable.get(string)))){joinTable.put(string,String.valueOf(joinTable.get(string)).split(,));if(StringUtil.isEmpty(one)){one joinString0;}else{if(StringUtil.isEmpty(two)){two joinString0;}}}}if(StringUtil.isNotEmpty(String.valueOf(thisTable.get(types)))){//当前表类型thisTable.put(types,String.valueOf(thisTable.get(types)).split(,));if(StringUtil.isEmpty(one)){one thisTypes0;}else{if(StringUtil.isEmpty(two)){two thisTypes0;}}}if(isJoinTableFlag){//级联表类型MapString, Object joinTable (MapString, Object) params.get(joinTable);if(StringUtil.isNotEmpty(String.valueOf(joinTable.get(types)))){joinTable.put(types,String.valueOf(joinTable.get(types)).split(,));if(StringUtil.isEmpty(one)){one joinTypes0;}else{if(StringUtil.isEmpty(two)){two joinTypes0;}}}}ListMapString, Object result commonService.barCount(params);ListString xAxis new ArrayList();//报表x轴ListListString yAxis new ArrayList();//y轴ListString legend new ArrayList();//标题if(StringUtil.isEmpty(two)){//不包含第二列ListString yAxis0 new ArrayList();yAxis.add(yAxis0);legend.add();for(MapString, Object map :result){String oneValue String.valueOf(map.get(one));String value String.valueOf(map.get(value));xAxis.add(oneValue);yAxis0.add(value);}}else{//包含第二列MapString, HashMapString, String dataMap new LinkedHashMap();if(StringUtil.isNotEmpty(two)){for(MapString, Object map :result){String oneValue String.valueOf(map.get(one));String twoValue String.valueOf(map.get(two));String value String.valueOf(map.get(value));if(!legend.contains(twoValue)){legend.add(twoValue);//添加完成后 就是最全的第二列的类型}if(dataMap.containsKey(oneValue)){dataMap.get(oneValue).put(twoValue,value);}else{HashMapString, String oneData new HashMap();oneData.put(twoValue,value);dataMap.put(oneValue,oneData);}}}for(int i 0; ilegend.size(); i){yAxis.add(new ArrayListString());}SetString keys dataMap.keySet();for(String key:keys){xAxis.add(key);HashMapString, String map dataMap.get(key);for(int i 0; ilegend.size(); i){ListString data yAxis.get(i);if(StringUtil.isNotEmpty(map.get(legend.get(i)))){data.add(map.get(legend.get(i)));}else{data.add(0);}}}System.out.println();}MapString, Object resultMap new HashMap();resultMap.put(xAxis,xAxis);resultMap.put(yAxis,yAxis);resultMap.put(legend,legend);return R.ok().put(data, resultMap);} }
http://www.w-s-a.com/news/908937/

相关文章:

  • 品牌形象网站有哪些珠海市区工商年报在哪个网站做
  • 注册域名不建设网站seo外包服务方案
  • 如何进行外贸网站建设wordpress文章输入密码可见
  • 政务网站建设索引常州做网站信息
  • 南宁做网站找哪家好wordpress 更改首页
  • 一个人在家做网站建设品牌策划流程
  • 小网站广告投放wordpress页面添加js
  • 仿制别人的竞价网站做竞价犯法吗wordpress添加版块
  • wordpress主题 站长互联网站备案表
  • 广州品牌策划公司排行南宁seo网络推广公司
  • 营销型网站图片肯德基网站开发
  • 网站的外链是什么wordpress开启菜单
  • 文字字体是什么网站西安博达网站建设
  • 北京南昌网站建设网站查看空间商
  • 网站建设人员职责分布乐清市网站建设设计
  • 网站建设etw网站建设陕西
  • 网站文章页内链结构不好可以改吗wordpress英文模板下载
  • 北京天通苑 做网站哈尔滨快速网站排名
  • 网站开发负责人是什么职位试剂网站建设
  • 什么是展示型网站wordpress链接视频
  • 佳木斯城乡建设局网站过年做哪个网站能致富
  • 石家庄快速网站搭建设计公司属于什么企业
  • 中小学智慧校园建设平台网站sem竞价推广
  • 想创建一个网站官方网站建设推广
  • 江门网站优化民间it网站建设
  • 科研实验室网站建设wordpress加载模板
  • 用r做简易的网站软件园二期做网站的公司
  • 菏泽网站建设价格长春高档网站建设
  • PHP网站开发与管理设计心得网站流量图怎么做
  • 苏州做网站企业wordpress点击文字弹出层