使用环境:
Vagrant:Vagrant 2.3.4
VirtualBox:VirtualBox6.37
Docker:Docker version 23.0.1, build a5ee5b1
Java:Java 11.0.8
Maven:Apache Maven 3.5.0
IDEA 2021.2
设计数据库:PowerDesigner
node v10.16.3
Nacos 1.2.1
P6 vargrant up加速太慢,删除Vargrantfile文件,使用 vagrant init centos7 https://mirrors.ustc.edu.cn/centos-cloud/centos/7/vagrant/x86_64/images/CentOS-7.box 命令,
或先本地下载,下载链接: https://cloud.centos.org/centos/7/vagrant/x86_64/images/CentOS-7-x86_64-Vagrant-2004_01.VirtualBox.box ,再vargrant up即可。
P6 使用Vagrant 2.3.4和VirtualBox7.0 出现报错:
The virtual machine 'Master' has terminated unexpectedly during startup with exit code 1 (0x1). More details may be available in 'C:\Users\meng.lv\VirtualBox VMs\Master\Logs\VBoxHardening.log'.
解决方案:降低VirtualBox版本,使用的版本号为VirtualBox6.37。其中VirtualBox\drivers下无\vboxdrv文件夹。
vagrant up //启动虚拟机
vagrant reload //重启虚拟机
vagrant ssh //连接虚拟机
service mysqld status//查看mysql是否启动
ctrl+l //Linux清屏快捷键
ip addr //查看虚拟机网络地址
ipconfig //查看windows网络地址
su root //变为root权限
Docker 镜像网站: Docker Hub
sudo docker images //查看当前虚拟机有无下载镜像
sudo systemctl enable docker //让docker开机自启动
配置阿里云镜像加速器(P9)
sudo docker pull mysql:5.7.36 //mysql下载
sudo docker ps -a //查看所有容器
主机地址 192.168.56.10
mysql设置的密码 : root root
本地连接密码: root root
P10 Mysql无法启动,重启不显示,docker ps无mysql服务:
解决方案:首先要端口放行或直接关闭防火墙,使用 docker ps -a 发现mysql没有挂载成功(端口映射失败)。在Mysql配置中 vi /mydata/mysql/conf/my.cnf 文件不能复制须手打配置(空格都要求相同),再 docker restart mysql ,docker ps 查看mysql启动成功。
systemctl start firewalld //开启防火墙
firewall-cmd --zone=public --add-port=1935/tcp --permanent //开放指定端口
netstat -ntlp //查看当前所有tcp端口
netstat -ntulp |grep 3306 //查看3306端口使用情况
Docker配置mysql
sudo docker run -it -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-v /home/mysql/mysql-files:/var/lib/mysql-files/ \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql
注:一定要进入linux手打一遍 -- 复制的符号可能不同
创建功能模块
模块以及要编写的功能
微服务对应
coupon | 优惠券服务 |
member | 会员服务 |
order | 订单服务 |
product | 商品服务 |
ware | 仓储服务 |
数据库对应
gulimall_oms | 订单系统(order) |
gulimall_pms | 商品系统(product) |
gulimall_sms | 营销系统(sell) |
gulimall_ums | 用户系统(user) |
gulimall_wms | 仓储系统(ware) |
P14 下载项目出现问题 无效的目标发行版:17 ,配置完setting、project structure,Maven设置后出现问题 无法访问org.springframework.boot.SpringApplication
解决办法:SpringBoot 3.0 最低要求是 Java 17,所以需要使用 2.x 的版本。且在properties中指定jdk版本,若spring-boot-maven-plugin爆红还需指定其具体版本。
IDEA2021版本没有 version control,看不到local changes
取消勾选,点击Git即可。
P15 在关闭虚拟机后,上次已下载的mysql、redis未自动启动该如何设置?
sudo docker ps #首先看看是否有运行中的软件(无)
sudo docker ps -a #查看所有容器(容器还在)
sudo docker update redis --restart=always
sudo docker update mysql --restart=always
P16 node.js版本配置不同,卸载重下?
使用nvm进行包管理
nvm ls // 查看已安装node版本
nvm install vXX // 安装对应vXX版本的node
nvm install v10.16.0 //v不能掉
nvm uninstall vXX // 卸载对应vXX版本的node
nvm use xxx // 选择使用XXX版本
P16 前台没有显示验证码?
检查RenrenApplication两个端口是否启动成功(端口8080与端口80)
P18 在测试mybatis-plus方法时出现java.lang.NoClassDefFoundError和java.lang.NoSuchMethodError
出现java.lang.IllegalStateException: Failed to load ApplicationContext Caused by: org.springframework.beans.factory.
实质上是注入资源依赖项失败,从指定的包名,文件路径,配置等挨个排查
1.检查gulimall-product下的application.yml文件路径配置是否正确(如com.mysql.cj...,url配置)
2.检查主类与测试类是否在同一目录下
3.检查主类上是否添加了包扫描 @MapperScan("com.atguigu.gulimall.product.dao")
4.测试类的@SpringBootTest默认找包位置错误,需指明位置。如改为:@SpringBootTest(classes = GulimallProductApplication.class)
其中GulimallProductApplication.class是主类,GulimallProductApplicationTests是测试类
出现ClassNotFoundException是 springboot与springcloud版本冲突问题。
这里使用springboot 2.1.8RELEASE 搭配 springcloud Greenwich.SR3
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.8.RELEASE</version>
<relativePath/>
<!-- lookup parent from repository -->
</parent>
<properties>
<java.version>11</java.version>
<spring-cloud.version>Greenwich.SR3</spring-cloud.version>
</properties>
P21 配置nacos双击没反应?
两个解决方案:
前提是nacos保存的路径中部不包括中文
在startup.cmd文件中设置JAVA_HOME的值
2.在系统变量中配置JAVA_HOME的值
启动成功
方案二: cmd中cd到bin目录(我的在E盘) 输入 startup.cmd -m standalone
网关的代理转发
spring:
cloud:
gateway:
routes:
- id: test_route
uri: https://www.baidu.com
predicates:
- Query=url,baidu
- id: qq_route
uri: https://www.qq.com
predicates:
- Query=url,qq
//意思是访问的url中是QQ或baidu的就做对应的跳转
//访问地址: localhost:88?url=baidu
var与let的区别
1、var声明往往越域,let声明有严格的作用域
2、var可以声明多次,let只能声明一次
3、var会变量提升,let不会变量提升
console.log(x); //undefined
var x = 10;
console.log(y);
let y = 20; //ReferenceError: y is not defined
4、let声明后不允许改变,且一旦声明必须初始化
箭头函数没有自己的this,会往外层找,应使用 对象.属性 调用