谷粒商城环境搭建

一、安装docker

Docker安装文档:https://docs.docker.com/install/linux/docker-ce/centos/

1.卸载旧版本的docker,没有安装过可以跳过这步

 sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2.设置储存库

sudo yum install -y yum-utils

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

3.安装docker引擎

 sudo yum install docker-ce docker-ce-cli containerd.io

4.启动docker 

sudo systemctl start docker

 5.查看Docker虚拟机上下载有什么镜像 使用超级管理员 sudo docker images命令

 6.设置docker开机自启动 sudo systemctl enable docker

7.Docker配置阿里云镜像加速

登录成功之后点击控制台,选中容器镜像服务,在容器镜像服务中选择镜像加速器

 以此执行以下命令

二、docker安装mysql

1.去镜像仓库中下载

使用命令

sudo docker pull mysql:8.0

检查下载镜像

sudo docker images

 2.启动容器

docker run --privileged=true -p 3306:3306 --name mymysql -v $sql/conf:/etc/mysql/conf -v $sql/logs:/logs -v $sql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d  mysql:8.0

参数说明:

  -p 3306:3306将容器的3306端口 映射到主机的3306端口

  -v /sql/log:/var/log/mysql :将日志文件夹挂载到主机

  -v /sql/data:/var/lib/mysql :将配置文件夹挂载到主机

  -v /sql/conf:/etc/mysql :将配置文件夹挂载到主机

  -e MYSQL_ROOT_PASSWORD=root :初始化root用户的密码

  --privileged=true :解决docker挂载文件路径后无法启动的问题

启动成功之后可以根据 docker ps命令 查看启动成功的容器

 如果想要删除容器,需要先停止服务

docker stop 容器id

之后进行删除

docker rm 容器id

3.修改mysql的配置文件

主要修改mysql的配置文件编码

在本机的conf目录中使用

vi my.cnf

  进行编辑

编码内容如下:

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
init_connet='SET collation_connection = utf8_unicode_ci'
init_connet='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

  三、安装Redis

1.下载Redis

使用命令进行下载,不加版本号,默认下载最新版

docker pull redis

2.启动Redis,并挂载目录

 (1)首先需要创建文件夹,创建文件

 (2) 进行启动Redis,并挂载目录

docker run -p 6379:6379 --name redis -v $mydata/redis/data:/data -v $mydata/redis/conf/redis.conf
:/etc/redis/redis.conf  -d redis redis-server /etc/redis/redis.conf

 启动成功之后可以运行Redis

  想要Redis持久化,需要修改配置文件

  在redis.conf中,输入一下代码,实现持久化

appendonly yes

  修改完之后使用docker restart redis 进行重启Redis。

四、开发环境统一

1.配置Maven

在maven配置文件setting中进行配置

  <mirrors> 
	<mirror>
	<id>nexus-aliyun</id>
	<mirrorOf>central</mirrorOf>
	<name>Nexus aliyun</name>
	<url>http://maven.aliyun.com/nexus/content/groups/public</url>
	</mirror>
  </mirrors>


 <profiles>
   <profile>
    <id>jdk-1.8</id>
    <activation>
        <activeByDefault>true</activeByDefault>
        <jdk>1.8</jdk>
    </activation>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
    </properties>
   <profile>
  </profiles>

在idea的setting中进行配置

 

 2.下载安装VSCode并安装插件

下载地址Download Visual Studio Code - Mac, Linux, Windows

插件:

 3.配置git

首先下载git,下载成功后安装直接一路next即可。

下载完成之后需要创建一个gitee账号。

然后代开Git Bash Here对git进行配置

首先配置提交代码的用户名和邮箱地址

为了避免我们再向gitee提交代码的时候要输入密码,在这里可以设置一个公钥,需要输入注册gitee的邮箱地址,输入完成之后直接敲击三次回车即可。

 输入命令 

cat ~/.ssh/id_rsa.pub 查看秘钥

 将秘钥复制到gitee中

 打开设置,选择安全设置

将刚刚生成的秘钥进行粘贴即可。

 4.从gitee初始化一个项目

 首先新建仓库

 

 5.在idea中克隆项目

 右键项目,创建项目微服务

因为是基于web开发,各个项目直接需要相互调用,所以刚开始先导入这俩个依赖

 

 依次创建:商品服务、仓储服务、订单服务、优惠券服务、用户服务

创建完成之后,在父项目创建配置pom

 git提交的时候需要过滤垃圾文件

 最后直接提交即可。

6.初始化数据库

使用Navicat链接虚拟机的地址

链接完成之后创建数据库,创建成功之后,执行资料中的sql,创建表。

7.快速开发,使用人人开源搭建项目

在gitee中搜索人人开源,并进入主页

 选择renren-fast 和 renren-fast-vue进行快开发

 将renren-fast放到父工程中,并修改pom

用vscode打开renren-fast-vue,并下载node

下载成功之后配置淘宝镜像

npm config set registry http://registry.npm.taobao.org/

打开vscode终端,使用npm install加载项目依赖,加载成功之后执行命令npm run dev运行项目

npm run dev

8.快速开发,逆向工程的搭建和使用

在gitee人人开源中克隆

 下载之后打开网址人人代码生成器

 将生成后的代码复制到product模块中,并创建公共模块gulishop_common,用于存放公共的依赖、bean、工具类等。

9.配置Mybatis-plus

 (1)导入依赖

 (2)配置

       1.配置数据源:

              1)、导入数据库的驱动。

              2)、在application.yml中配置数据源相关信息

               

        2.配置Mybatis-Plus

            1)、使用@MapperScan

             2)、告诉Mybatis-plus,sql映射文件位置

              

10. Spring cloud Alibaba简介

SpringCloud 的几大痛点
SpringCloud 部分组件停止维护和更新,给开发带来不便;
SpringCloud 部分环境搭建复杂,没有完善的可视化界面,我们需要大量的二次开发和定制
SpringCloud 配置复杂,难以上手,部分配置差别难以区分和合理应用
SpringCloud Alibaba 的优势:
阿里使用过的组件经历了考验,性能强悍,设计合理,现在开源出来大家用
成套的产品搭配完善的可视化界面给开发运维带来极大的便利
搭建简单,学习曲线低。
结合 SpringCloud Alibaba 我们最终的技术搭配方案:
SpringCloud Alibaba - Nacos :注册中心(服务发现 / 注册)
SpringCloud Alibaba - Nacos :配置中心(动态配置管理)
SpringCloud - Ribbon :负载均衡
SpringCloud - Feign :声明式 HTTP 客户端(调用远程服务)
SpringCloud Alibaba - Sentinel :服务容错(限流、降级、熔断)
SpringCloud - Gateway API 网关( webflux 编程模式)
SpringCloud - Sleuth :调用链监控
SpringCloud Alibaba - Seata :原 Fescar ,即分布式事务解决方案

11.注册中心搭建

SpringCloud Alibaba-Nacos[作为注册中心]

Nacos 是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理
平台。他是使用 java 编写。需要依赖 java 环境
Nacos 文档地址: https://nacos.io/zh-cn/docs/quick-start.html
1)、加入依赖
2)、下载 nacos-server
https://github.com/alibaba/nacos/releases
下载完成之后,解压缩文件夹。之后打开bin目录中的startup.cmd

 

 如果这里启动失败,可以用记事本或者其他方式打开startup.cmd 将以集群模式启动改成以单机模式启动

 启动成功之后在yml中进行配置注册中心地址

然后在启动类中加上

@EnableDiscoveryClient

注解,注册到注册中心里面。 

配置服务名称:

 之后启动项目再通过8848端口访问nacos,进行登录,账号和密码都是nacos

进入nacos后可发现有一个实例已经成功注入

 接下来一次将剩余的服务进行注入。

Feign 使用三步:

1.导包openfeign

2.开启@EnableFeignClients功能

3.编写接口,进行远程调用

@FeignClient("stores")
public interface StoreClient {
@RequestMapping(method = RequestMethod.GET, value = "/stores")
List<Store> getStores();
@RequestMapping(method = RequestMethod.POST, value = "/stores/{storeId}",
consumes = "application/json")
Store update(@PathVariable("storeId") Long storeId, Store store);
}
SpringCloud Alibaba-Nacos[ 作为配置中心 ]
1.pom.xml 引入Nacos Config Starter
<dependency>
           <groupId>com.alibaba.cloud</groupId>
           <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

2.在reources中新增bootstarp.properties 配置文件 ,该配置文件会优先执行于其他配置文件。在配置文件中,配置应用名和配置中心地址

3.需要给配置中心中添加一个 数据集Data Id 

 启动项目后后台会有一个dataid 将这个名称在nacos的配置

根据需求配置完成之后利用@RefreshScop动态刷新配置,利用@Value("${配置项的名}")获取值

如果配置中心和当前应用的配置文件中都配置了相同的项,优先使用配置中心的配置。

Nacos配置中心-命名空间与配置分组

1.命名空间 :配置隔离,可以根据环境进行隔离,也可以根据服微服务进行隔离; 默认的命名空间是public(保留空间)

 可以根据需求自己创建命名空间

如果想要切换命名空间,则需要在bootstrap.properties中进行配置

 这里要写命名空间对应的命名空间的Id

 也可以给每一个微服务创建一个命名空间,让他只读自己命名空间下的配置

2.配置集:所有的配置集合

3.配置集ID:类似于文件名

 4.配置分组:

默认所有的配置集都属于:DEFAULT_GROUP

我们可以自己制定分组,需要在配置文件中进行配置

 此项目中每个微服务创建自己的命名空间,使用配置分组区分环境,dev,test,prod

微服务任何配置信息,任何配置文件都可以放在配置中心中

只需要在bootstarp.properties说明加载配置中心中哪些配置文件即可

可以用@Value,@ConfigurationProperties,以前SpringBoot任何方法从配置文件中获取值,都能使用。

配置文件有先使用配置中心的

网关

Gateway

1.创建网关模块

2.导入gateway依赖

3.在配置文件中配置注册中心地址、端口号和服务名称

配置命名空间

 配置网关规则,进行测试

 前端基本知识

快捷键:!+Enter 生成模板

ES6基础

1.let和var

(1)var 声明的变量往往会越域,let 声明有严格局部作用域

(2)var 可以声明多次 ,let 只能声明一次

2.const声明常量(只读变量)

 (1)一旦声明之后不允许改变

 (2)一旦声明必须初始化,否则会报错

 3.解构表达式

数据解构

对象解构

 

 4.字符串扩展

 5.字符串模板

 字符串插入变量和表达式。变量名写在${}中,${}中可以放入javaScript表达式

 箭头函数

箭头函数+ 解构

map和reduce方法

 

promise

可以封装异步操作,有两个参数,一个是成功的,一个是失败的

可以无限调用,每一步失败了怎么怎么样,成功了怎么怎么样

 上图的使用太过麻烦,下面是封装好的

function get(url, data) {
            return new Promise((resolve, reject) => {
                $.ajax({
                    url: url,
                    data: data,
                    success: function (data) {
                        resolve(data);
                    },
                    error: function (err) {
                        reject(err)
                    }
                })
            });
        }

        get("mock/user.json")
            .then((data) => {
                console.log("用户查询成功~~~:", data)
                return get(`mock/user_corse_${data.id}.json`);
            })
            .then((data) => {
                console.log("课程查询成功~~~:", data)
                return get(`mock/corse_score_${data.id}.json`);
            })
            .then((data)=>{
                console.log("课程成绩查询成功~~~:", data)
            })
            .catch((err)=>{
                console.log("出现异常",err)
            });

Es6模块化

 1.什么事模块化

  模块化就是把代码进行拆分,方便重复利用。类似java中的导包;要使用一个包,必须先导包。而js中没有包的概念,换来的是模块

 模块主要由两个命令构成:‘export’和‘import’

  • ‘export'命令用于规定模块的对外接口
  • ‘import’命令用于导入其他模块提高的功能

必须先导出,才能在其他模块中导入 

Vue

1.MVVM思想

  • M:即Model,模型,包括数据和一些基本操作
  • V:即View,视图,页面渲染结果
  • VM,即View-Model,模型与视图间的双向操作

只要修改了model中的数据,view也会及时改变,用户修改了view中的数据,model也会随之改变 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值