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

帮人管理网站做淘宝客广州优化防控措施

帮人管理网站做淘宝客,广州优化防控措施,文字壁纸做背景处理的网站,佛山企业网站建设教程目录 第1章 Git概述 1. 何为版本控制 2. 为什么需要版本控制 3. 版本控制工具 4. Git简史 5. Git工作机制 6. Git和代码托管中心 第2章 Git安装 第3章 Git常用命令 1. 设置用户签名 1.1 基本语法 1.2 案例实操 2. 初始化本地库 2.1 基本语法 2.2 案例实操 3. 查…目录 第1章 Git概述 1. 何为版本控制 2. 为什么需要版本控制 3. 版本控制工具 4. Git简史 5. Git工作机制 6. Git和代码托管中心 第2章 Git安装 第3章 Git常用命令 1. 设置用户签名 1.1 基本语法 1.2 案例实操 2. 初始化本地库 2.1 基本语法 2.2 案例实操 3. 查看本地库状态 3.1 基本语法 3.2 案例实操 1首次查看工作区没有文件 2新增文件 3再次查看检测到未追踪文件 4. 添加暂存区 4.1 将工作区的文件添加到暂存区 1基本语法 2案例实操 4.2 查看状态检测到暂存区有新文件 5. 提交本地库 5.1 暂存区文件提交到本地库 1基本语法 2案例实操 5.2 查看状态没有文件需要提交 6. 修改文件hello.txt 6.1 查看状态检测到工作区有文件被修改 6.2 将修改的文件再次添加暂存区 6.3 查看状态工作区的修改添加到了暂存区 6.4 将暂存区文件提交到本地库 7. 历史版本 7.1 查看历史版本 1基本语法 2案例实操 7.2 版本穿梭 1基本语法 2案例实操 第4章 Git客户端便捷操作 1. 安装部署 2. 基础操作 2.1 设置个人信息 2.2 创建新的Git仓库 2.3 提交不同版本 3. 连接GitHub远程仓库 4. Gitee替代GitHub 5. idea兼容使用GitJAVA代码 第5章 GitLab的部署与使用 1. 为什么使用GitLab-开发运维一体化 2. 部署安装GitLab 2.1 安装部署 2.1.1 安装准备 2.1.2 rpm 包安装 2.1.3 执行初始化 2.1.4 启停命令 2.1.5 修改 root 密码 2.1.6 设置简体中文 3. 使用GitLab完成团队管理 3.1 创建用户 3.2 创建群组 4. 使用IDEA兼容GitLab 第6章 企业项目构建与开发分支 1. GitFlow工作流介绍 1.1 集中式工作流 1.2 功能开发工作流 1.3 GitFlow工作流 1.4 Forking工作流 2. 各分支功能介绍 2.1 主干分支 master 2.2 开发分支 develop 2.3 功能分支 feature 2.4 准生产分支预发布分支 release 2.5 bug 修理分支 hotfix 3. 创建项目与分支管理 3.1 idea与远程仓库连接 3.2 不同分支的提交与合并 第7章 冲突提交 1. 不同人修改不同文件 2. 不同人修改同文件的不同区域 3. 不同人修改同文件的相同区域 4. 同时变更文件名和文件内容 5. 不同人把同一文件改成不同的文件名 第8章 GitLab功能拓展 1. 使用GitLab完成code review 2. CICD部署程序 3. 安装gitLab-runner 第1章 Git概述 Git是一个免费的、开源的分布式版本控制系统可以快速高效地处理从小型到大型的各种项目。 Git易于学习占地面积小性能极快。 它具有廉价的本地库方便的暂存区域和多个工作流分支等特性。其性能优于Subversion(svn)、CVS、Perforce和ClearCase等版本控制工具。 1. 何为版本控制 版本控制是一种记录文件内容变化以便将来查阅特定版本修订情况的系统。 版本控制其实最重要的是可以记录文件修改历史记录从而让用户能够查看历史版本方便版本切换。 2. 为什么需要版本控制 个人开发过渡到团队协作。 3. 版本控制工具 集中式版本控制工具 CVS、SVN(Subversion)、VSS…… 集中化的版本控制系统诸如 CVS、SVN等都有一个单一的集中管理的服务器保存所有文件的修订版本而协同工作的人们都通过客户端连到这台服务器取出最新的文件或者提交更新。多年以来这已成为版本控制系统的标准做法。 这种做法带来了许多好处每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限并且管理一个集中化的版本控制系统要远比在各个客户端上维护本地数据库来得轻松容易。 事分两面有好有坏。这么做显而易见的缺点是中央服务器的单点故障。如果服务器宕机一小时那么在这一小时内谁都无法提交更新也就无法协同工作。 分布式版本控制工具 Git、Mercurial、Bazaar、Darcs…… 像Git这种分布式版本控制工具客户端提取的不是最新版本的文件快照而是把代码仓库完整地镜像下来本地库。这样任何一处协同工作用的文件发生故障事后都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作实际上都是一次对整个文件仓库的完整备份。 分布式的版本控制系统出现之后,解决了集中式版本控制系统的缺陷: 服务器断网的情况下也可以进行开发因为版本控制是在本地进行的 每个客户端保存的也都是整个完整的项目包含历史记录更加安全 4. Git简史 5. Git工作机制 6. Git和代码托管中心 代码托管中心是基于网络服务器的远程代码仓库一般我们简单称为远程库。 局域网 GitLab 互联网 GitHub外网 Gitee码云国内网站 第2章 Git安装 官网地址 Git或https://github.com/git-for-windows/git/releases 查看GNU协议可以直接点击下一步。 选择Git安装位置要求是非中文并且没有空格的目录然后下一步。 Git选项配置推荐默认设置然后下一步。 Git安装目录名不用修改直接点击下一步。 Git的默认编辑器建议使用默认的Vim编辑器然后点击下一步。 默认分支名设置选择让Git决定分支名默认为master下一步。 修改Git的环境变量选第一个不修改环境变量只在Git Bash里使用Git。 选择后台客户端连接协议选默认值OpenSSL然后下一步。 配置Git文件的行末换行符Windows使用CRLFLinux使用LF选择第一个自动转换然后继续下一步。 选择Git终端类型选择默认的Git Bash终端然后继续下一步。 选择Git pull合并的模式选择默认然后下一步。 选择Git的凭据管理器选择默认的跨平台的凭据管理器然后下一步。 其他配置选择默认设置然后下一步。 实验室功能技术还不成熟有已知的bug不要勾选然后点击右下角的Install按钮开始安装Git。 点击Finsh按钮Git安装成功 右键任意位置在右键菜单里选择Git Bash Here即可打开Git Bash命令行终端。 在Git Bash终端里输入git --version查看git版本如图所示说明Git安装成功。 第3章 Git常用命令 命令名称作用git config --global user.name 用户名设置用户签名git config --global user.email 邮箱设置用户邮箱git init初始化本地库git status查看本地库状态git add 文件名添加到暂存区git commit -m 日志信息 文件名提交到本地库git reflog查看历史记录git reset --hard 版本号版本穿梭 1. 设置用户签名 1.1 基本语法 git config --global user.name 用户名 git config --global user.email 邮箱 1.2 案例实操 全局范围的签名设置 git config --global user.name yhm git config --global user.email yaohm7788163.com git config --list # 查看全局配置 cat ~/.gitconfig # cat linux中查看文本的命令 ~ 家 [你当前用户的家]/ .gitconfig 说明 签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到以此确认本次提交是谁做的。Git首次安装必须设置一下用户签名否则无法提交代码。 ※注意这里设置用户签名和将来登录GitHub或其他代码托管中心的账号没有任何关系。 2. 初始化本地库 2.1 基本语法 git init 2.2 案例实操 结果查看 3. 查看本地库状态 3.1 基本语法 git status 3.2 案例实操 1首次查看工作区没有文件 2新增文件 3再次查看检测到未追踪文件 4. 添加暂存区 4.1 将工作区的文件添加到暂存区 1基本语法 git add 文件名 2案例实操 4.2 查看状态检测到暂存区有新文件 5. 提交本地库 5.1 暂存区文件提交到本地库 1基本语法 git commit -m 日志信息 文件名 2案例实操 5.2 查看状态没有文件需要提交 6. 修改文件hello.txt 6.1 查看状态检测到工作区有文件被修改 6.2 将修改的文件再次添加暂存区 6.3 查看状态工作区的修改添加到了暂存区 6.4 将暂存区文件提交到本地库 7. 历史版本 7.1 查看历史版本 1基本语法 git reflog 查看版本信息 git reflog -n 数量 git log 查看版本详细信息 2案例实操 7.2 版本穿梭 1基本语法 git reset --hard 版本号 2案例实操 --首先查看当前的历史记录可以看到当前是在48f4e22这个版本 --切换到之前版本8ca80d7版本也就是我们第一次提交的版本 --切换完毕之后再查看历史记录当前成功切换到了8ca80d7版本 --然后查看文件hello.txt发现文件内容已经变化 Git切换版本底层其实是移动的HEAD指针。 第4章 Git客户端便捷操作 1. 安装部署 使用命令行操作git相对而言是非常不方便的查看内容也不是很直观所有官方推荐使用Git的GUI 客户端来完成页面化操作。 Git - GUI Clients 推荐下载使用GitHub Desktop。下载安装之后选择不登录先进入页面。 2. 基础操作 2.1 设置个人信息 2.2 创建新的Git仓库 2.3 提交不同版本 新创建文件1.txt并写入信息。之后可以在GitGui上面进行提交。 多次提交的版本可以直接在History页面查看区别不需要再使用reset命令。 3. 连接GitHub远程仓库 登录自己注册的账号 点击Publish可以将当前项目创建到GitHub上面。 之后修改本地文件就可以先推送到本地git之后再远程同步到GitHub仓库中。 1选择对应的分支 2点击推送 3也可以先在GitHub上面创建远程仓库之后再拉取到本地保持统一。 4拉取远程仓库到本地 点击克隆即可连接完成远程仓库和本地Git之后在本地修改文件提交Git之后再push推送即可完成同步。 4. Gitee替代GitHub GitHub的网站有时候会连接不上无法登录。可以使用阿里提供的Git远程仓库网站Gitee来代替。 登录账号之后创建新的仓库 同步远程Gitee仓库的方式和同步GitHub仓库方法完全一致。 5. idea兼容使用GitJAVA代码 1首先在idea中创建一个空的项目 2编写基础的JAVA代码Hello world 3此时会产生IDEA中的特定文件 4 配置Git忽略文件 文件名称xxxx.ignore前缀名随便起建议是git.ignore 这个文件的存放位置原则上在哪里都可以为了便于让~/.gitconfig文件引用建议也放在用户家目录下 git.ignore文件模版内容如下 # Compiled class file *.class # Log file *.log # BlueJ files *.ctxt # Mobile Tools for Java (J2ME) .mtj.tmp/ # Package Files # *.jar *.war *.nar *.ear *.zip *.tar.gz *.rar # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* .classpath .project .settings target .idea *.iml 5在.gitconfig文件中引用 此文件在Windows的家目录中 [user]     name yhm     email yaohm7788163.com [core]     excludesfile C:/Users/merge/git.ignore 注意这里要使用正斜线/不要使用反斜线\ 6 定位Git程序 7初始化本地库 8提交到本地库 右键点击项目选择Git - Add将项目添加到暂存区。 9切换版本 查看历史版本 右键选择要切换的版本然后在菜单里点击get。 第5章 GitLab的部署与使用 1. 为什么使用GitLab-开发运维一体化 2. 部署安装GitLab 使用git还需要一个远程代码仓库。常见的github、gitee这种远程代码仓库公司中一般不会使用因为他们是使用外网的不够安全。一般企业都会搭建一个仅内网使用的远程代码仓库最常见就是 GitLab。 2.1 安装部署 GitLab一般由公司的运维人员安装部署开发人员只需要申请账号和相应权限即可在这里我们在hadoop104上自己安装GitLab社区版体验一下。 2.1.1 安装准备 1需要开启ssh已开启可跳过 sudo systemctl status sshd sudo systemctl enable sshd sudo systemctl start sshd 2防火墙开放http、https服务已关闭防火墙可跳过 sudo systemctl status firewalld sudo firewall-cmd --permanent --add-servicehttp sudo firewall-cmd --permanent --add-servicehttps sudo systemctl reload firewalld 2.1.2 rpm 包安装 1上传安装包 下载地址Nexus Repository Manager 安装包较大建议下载好手动上传服务器。这里上传到/opt/software 2编写安装脚本 cd ~/bin vim gitlab-install.sh 脚本内容如下 sudo yum install -y curl policycoreutils-python openssh-server perl curl -fsSL https://packages.gitlab.cn/repository/raw/scripts/setup.sh | /bin/bash sudo rpm -ivh gitlab-jh-16.6.1-jh.0.el7.x86_64.rpm sudo yum install -y postfix sudo systemctl enable postfix sudo systemctl start postfix 3修改脚本执行权限并执行 chmod x gitlab-install.sh sh gitlab-install.sh 4修改external_url 编辑gitlab.rb [atguiguhadoop104 ~]$ sudo vim /etc/gitlab/gitlab.rb 在文件中找到external_url修改为如下内容 external_url http://hadoop104 保存退出 5修改host 编辑gitlab.yml [atguiguhadoop104 ~]$ sudo vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml.example 找到gitlab.host修改为如下内容 gitlab:     \## Web server settings (**note:** host is the FQDN, do not include http://)     host: hadoop104     port: 80     https: false 保存退出 修改文件名称 [atguiguhadoop104 ~]$ sudo mv /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml.example /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml 6重装需要彻底卸载 1 卸载gitlab [atguiguhadoop104 opt]$ sudo rpm -e gitlab-jh-16.6.1 2 删除gitlab文件 [atguiguhadoop104 opt]$ sudo rm -rf /etc/gitlab [atguiguhadoop104 opt]$ sudo rm -rf /var/opt/gitlab [atguiguhadoop104 opt]$ sudo rm -rf /opt/gitlab 3 重装如果卡在sudo gitlab-ctl reconfigure配置命令上可以使用另外一个窗口执行 sudo systemctl restart gitlab-runsvdir 2.1.3 执行初始化 执行过程大概需要3分钟 sudo gitlab-ctl reconfigure 2.1.4 启停命令 1启动命令 sudo gitlab-ctl start 2停止命令 sudo gitlab-ctl stop 2.1.5 修改 root 密码 1访问Web页面 默认使用80端口直接浏览器输入安装服务器的hostname或iphadoop104 2查看root密码 账号root密码将随机生成并在 /etc/gitlab/initial_root_password 中保存24 小时 sudo cat /etc/gitlab/initial_root_password zOyGe6aBQbkfYf6rOZP2qaWQOAo59K0HMrq9Rs7Yi2w 修改密码 2.1.6 设置简体中文 回到首页可以看到变成中文 3. 使用GitLab完成团队管理 去到一家公司应该是已经有了GitLab平台运维人员拥有root管理员账号。而作为一名普通的开发人员你的leader和同事都拥有各自的GitLab账号和不同权限。入职后你只需要申请开通GitLab账号和对应权限不需要你来操作。 3.1 创建用户 为了更符合公司实际我们假设数据组的leader账号为tutou你是atguigu。 创建一个leader的账号 再申请一个atguigu账号 用户会收到重置密码的邮件也可以由管理员设置 3.2 创建群组 在gitlab里可以创建出组、组下的子组。在小公司里可以看见gitlab里边会创建出后端大数据等等一系列组。尽量不要使用中文创建组名, 可以在组信息中的备注编写中文描述以及中文组名, 组内人员名称也尽量用全拼命名。 对于人员权限以及角色的控制也比较简单有如下五种 Ø Owner最高权限谁去创建组这个组就被谁拥有它可以开除管理员但管理员无法操作owner的角色。 Ø Maintainer管理员-只是具备sudo权限的用户管理员一般是给小组的组长或者是给产品线的总监设定。 Ø Developer是干活的人就是写代码的程序员可以进行代码的上传以及代码的下载不能下载其他的组内的代码只能下载它们组的代码。 Ø Repoter比如现在有需求其他组的大牛到我们组过来指导工作要审视我们的代码人家就提出需要一个权限我不能给它developer因为它会改你代码其他组的人不能改我们组的代码所以就给一个repoter权限他只能看只读权限。 Ø guest不用看匿名直接去掉。一般出现在从ldap中把离职人员的信息删掉再去gitlab查这个人的时候它就是一个guest用户匿名需要再到gitlab把它删掉不删也没事。 下面我们假设研发部群组是rdc下属后端组、前端组、大数据组等子群组 1创建研发中心群组rdc 2创建大数据组 在研发中心组下再创建一个大数据组当然其他还会有后端组、前端组等 当然根据公司情况还可以进一步在数据组下面细分子组比如离线、实时、湖等这里我们就不再细分。 将数据组的leader设为bigdata的负责人 将atguigu添加为普通的开发人员 现在我们就有一个顶级群组rdc其下有一个子群组bigdata组内有管理员tutou开发人员atguigu。 4. 使用IDEA兼容GitLab 1安装 GitLab 插件 2 配置 SSH 免密登录 ssh-keygen -t rsa -C ergouatguigu.com 到用户目录下.ssh查看id_rsa.pub文件 添加到GitLab中 3获取 GitLab 个人令牌 创建后可以查看和复制生成的token 4添加 GitLab 服务 5修改默认分支的保护策略 第6章 企业项目构建与开发分支 1. GitFlow工作流介绍 在项目开发过程中使用 Git 的方式常见的有 1.1 集中式工作流 所有修改都提交到 Master 这个分支。比较适合极小团队或单人维护的项目不建议使用这种方式。 1.2 功能开发工作流 功能开发应该在一个专门的分支而不是在 master 分支上。适用于小团队开发。 1.3 GitFlow工作流 公司中最常用于管理大型项目。为功能开发、发布准备和维护设立了独立的分支让发布迭代过程更流畅。 1.4 Forking工作流 在 GitFlow 基础上充分利用了 Git 的 Fork 和 pull request 的功能以达到代码审核的目的。一般用于跨团队协作、网上开源项目。 2. 各分支功能介绍 2.1 主干分支 master 主要负责管理正在运行的生产环境代码永远保持与正在运行的生产环境完全一致。为了保持稳定性一般不会直接在这个分支上修改代码都是通过其他分支合并过来的。 2.2 开发分支 develop 主要负责管理正在开发过程中的代码。一般情况下应该是最新的代码。 2.3 功能分支 feature 为了不影响较短周期的开发工作一般把中长期开发模块会从开发分支中独立出来。 开发完成后会合并到开发分支。 2.4 准生产分支预发布分支 release 较大的版本上线前会从开发分支中分出准生产分支进行最后阶段的集成测试。该版本上线后会合并到主干分支。生产环境运行一段阶段较稳定后可以视情况删除。 2.5 bug 修理分支 hotfix 主要负责管理生产环境下出现的紧急修复的代码。 从主干分支分出修复完毕并测试上线后并回主干分支和开发分支。并回后视情况可以删除该分支。 3. 创建项目与分支管理 首先在Gitlab上面按照项目规格创建远程仓库。 3.1 idea与远程仓库连接 3.2 不同分支的提交与合并 1新建分支和切换分支 2不同分支提交代码与合并 首先在feature分支编写第一个模块的模拟代码并提交 package com.atguigu;public class module1 {public static void main(String[] args) {System.out.println(完成第一个模块的开发);} } 3合并feature到develop分支 审查测试通过之后完成合并 第7章 冲突提交 实际单个模块的开发往往不是单独一个人来进行操作当多个人协同开发相同的一个项目时就会涉及到提交冲突的问题。 1. 不同人修改不同文件 1在远程仓库添加gitLab.txt 2在本地IDEA中添加代码继续进行第二个模块的开发 public class Module2 {public static void main(String[] args) {System.out.println(开始进行模块2的开发);} } 3提交代码到远程仓库此时会有报错信息 Git会智能识别采用merge合并命令拉取远端文件到本地进行合并。 4查看Git提交的全部历史记录可以看到中间有拉取Gitee日志的部分 2. 不同人修改同文件的不同区域 1远程仓库修改module1代码 public class Module1 {public static void main(String[] args) {System.out.println(没完成模块1的开发);} } 2本地IDEA继续添加代码 //添加注释 public class Module1 {public static void main(String[] args) {System.out.println(完成模块1的开发);} } 3提交代码之后push到远程仓库 同样可以采用merge命令git会自动合并不同的区域代码。 3. 不同人修改同文件的相同区域 1远程仓库添加模块开发顺利 2本地IDEA添加模块开发遇到了bug public class module1 {public static void main(String[] args) {System.out.println(完成第一个模块的开发);System.out.println(继续进行第一个模块的二次开发);System.out.println(模块开发继续!!!);System.out.println(模块开发遇到了bug!);} } 无法直接采用merge命令需要人为判断哪些作为最终的结果来保留 3之后需要重新提交到远程仓库 4. 同时变更文件名和文件内容 1本地IDEA修改原先的文件名称为Module1plus之后重新开发实现功能 //添加注释 public class Module1plus {public static void main(String[] args) {System.out.println(没完成模块1的开发);System.out.println(模块1的开发遇到了bug);System.out.println(完成了模块1的开发);System.out.println(进一步完成了模块1的拓展开发);} } 2提交代码修改到远程仓库 可以直接提交成功。 5. 不同人把同一文件改成不同的文件名 1远程仓库把文件名称改为module1 2本地IDEA修改文件名称为module3 3提交到远程仓库 4需要手动宣传使用哪一个 push会导致报错之后需要用户自己解决保留哪些文件。 5使用命令解决最终的冲突 C:\mybigdata\project\gitlab_demogit status #删除掉报红找不到的文件 C:\mybigdata\project\gitlab_demogit rm src/main/java/com/atguigu/Module1Plus.java 6最后重新选择正确的代码提交到仓库 第8章 GitLab功能拓展 1. 使用GitLab完成code review 2. CICD部署程序 使用gitLab的自动部署功能可以快速实现自动部署完成运行。 3. 安装gitLab-runner 上传安装包之后执行 sudo rpm -ivh gitlab-runner-16.6.1-1.x86_64.rpm 之后运行注册命令 sudo gitlab-runner register #输入地址 http://hadoop104 #输入token nqaTgGDeJyFsA5fzg8ck #输入描述 [hadoop104]: ci #输入标签 ci #输入记录标签WARNING: Support for registration tokens and runner parameters in the register command has been deprecated in GitLab Runner 15.6 and will be replaced with support for authentication tokens. For more information, see https://docs.gitlab.com/ee/ci/runners/new_creation_workflow Registering runner... succeeded runnernqaTgGDe #选择运行模式 - 使用最简单的shell shell token的位置 注册完成之后runner就已经上线了。
http://www.dnsts.com.cn/news/78873.html

相关文章:

  • 网站如何加速WordPress 云解析视频
  • 自己可以做网站网址导航网站
  • 最新的电商平台网站优化外包服务
  • 用git 做网站做网站配什么绿色好看些
  • 模块网站和定制网站区别做一个答疑网站
  • 南宁在哪里推广网站张家港网站设计制作早晨设计
  • 遨游网站建设如何帮人做网站赚钱
  • 佛山市外贸网站建设微信公众平台小程序在哪
  • 宁波网站seo诊断工具上海人力资源网官方网
  • 搜索网站 模板各大网站流量排名
  • 做网站运营需要会什么wordpress 中文教程
  • 医疗做网站常用网站字体
  • 怎么做健康咨询网站个人网站域名名字
  • 网站建设咨询话术怎么获取wordpress的权限
  • 高端品牌网站定制设计企业网页设计案例
  • 一级a做爰片免费网站孕交视频学生个人主页设计图片
  • 广东地区建网站的公司公司网站后台上怎么上传图片呢
  • 建设银行个人网站个人客户网站建设的可行性分析报告
  • 百度做网站骗人到哪里去投诉脑白金网络营销方式
  • 做网站用的代码成都那家做网站好
  • wordpress设置主从库苏州排名搜索优化
  • 北京市西城区住房建设局官方网站中山移动网站建设多少钱
  • 邯郸做网站推广的地方网站建立多少钱
  • 产品展示型网站模板有哪些网站用vue做的
  • c#+网站开发实例页面模板是需要原创功能才能有吗
  • 怎样创建网站视频中国主流媒体平台有哪些
  • 做网站背景的图片家装公司起名
  • 网站上传后台在哪北京企业免费建站
  • 长沙网站推广有哪些啊开一家网站建设公司好
  • 团购网站开发语言站内搜索工具