谷粒商城项目学习——2023年11月14日

前言

        记录学习过程中遇到的各种问题,顺便加深对编程语言的学习。最好是通俗易懂。

        就我而言,学习此项目,遇到不会的就必须知道个所以然,好奇心害死猫

1.环境搭建

        其实,一开始学习,里面有很多陌生的名词,其实一上来就讲这些,对我而言,还是云里雾里的,所以直接开始正片,开始实践,哪里不会再去研究,我觉得这样更好。至少不用因为很多都不知道而感到压力巨大了。从而变成从入门到放弃了。

1.1下载软件 (建议WiFi下载)  

第一种方式(不推荐使用。而且我也没弄完,放弃了。所以你也可以不看,这个内容作为学习时保留的过程。踩坑,这个cmd窗口下载镜像的实在太慢了,因此不推荐此种方式。) 建议直接用第二种方式

VirtualBox ≈ 电脑(大小105M左右)正常下载

        目的:用于安装各种项目中需要用到的软件。

        虚拟机≈电脑(就是一个在你自己的电脑上又安装了一个电脑,而这个虚拟机可以安装各种软件,仅此而已)

        实操:

        我这里选择的是VirtualBox。官网下载:Downloads – Oracle VM VirtualBox

        根据自己的电脑系统选择安装,我的是Windows系统

                图-下载页面

        下载好之后,选择一键安装即可。

        注意:

        选择安装在非c盘之外的盘符( 理解:一般软件安装不会选择安装在c盘,因为C盘是系统盘,可能会越来越大,会导致电脑出现各种问题(比如,系统升级,需要C盘空间足够才可以)。因此c盘尽量要保证有一定的空间。如果您的电脑C盘够大,请随意用)

       需要自己的电脑开启CPU的虚拟化功能才能正常使用这个软件(谨慎操作,这涉及到电脑的配置,百度查看如何开启,但是要知道自己的电脑型号。每个电脑开启方式不同,不然一不小心把电脑弄坏了。进入bios之后,查看字样CPU Configuration,按enter进入之后,选择Intel Virtualization Technology   [Enabled]这样的就可以了。如果是开启的就不用管了。实在没有就问问别人咋弄的)

Vagrant ≈ 操作系统大小261M左右) 下载卡住一半

       Windows: Install | Vagrant | HashiCorp Developer

        下载到一半卡住不动了,好家伙,迅雷下载都不行了。建议使用IDM或者XDown下载。这两个软件又需要折腾,自己百度吧

        默认给我安装到c盘了,无语

         Discover Vagrant Boxes - Vagrant Cloud      Vagrant 官方镜像仓库

        打开cmd

        

# 找到一个目录,然后运行以下指令
vagrant init centos/7  #即可初始化一个 centos7 系统
vagrant up  # 即可启动虚拟机,系统 root 用户的密码是 vagrant

到此处下载镜像实在太慢了,就放弃了,还不如直接下载个镜像直接用

第二种(推荐)

Vmware  直接官网下载

镜像的话,推荐Nginx Directory  大小4.4G左右 

iso.mirrors.ustc.edu.cn/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.isocentos-7-isos-x86_64安装包下载_开源镜像站-阿里云 (aliyun.com)

vmware创建虚拟机等配置

首先测试能否联网

ping 192.168.1.1 # ping自己的主机ip
ping baidu.com # 查看是否能上网

如果不能的话,就需要进行设置

1.第一步

2.打开vmware网络编辑器

进入nat设置查看ip

 1.子网IP 和网关IP前三个网段要一样

2.记住这个网关ip 

子网IP和子网掩码的最后一位2要一样,如子网掩码为0,则ip最后一位也为0

进入linux设置网络,ip一定要和自己的对应 下面的只是wo'd

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static                            //设置成静态获取
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=f47bde51-fa78-4f79-b68f-d5dd90cfc698
ONBOOT=yes                        //设置成yes ,开机启动
IPADDR=192.168.2.120            //前面三位和网关保持一致,后面随意,如果后面一位不行  就多试试几个不同的
NETMASK=255.255.255.0            //固定设置
GATEWAY=192.168.2.2          //查看的虚拟机网关 就是刚刚查看的网关IP 要保证一样
DNS1=192.168.2.2              //设置成和网关相同即可

 

cd /etc/sysconfig/network-scripts/   # 进入此目录
vi ifcfg-ens33 或者 vi ifcfg-ens32 # 使用vi编辑器编辑 有的设置可能不一样 自己找找
# 在末尾添加以下内容 一定要根据自己的ip改  比如你的子网ip为192.168.10.20 
# 你就可以设置为192.168.10.30 只要最后一段不一样就行,
# netmask和getway一定要和net网络设置一样即可  dns1 设置为网关地址即可
IPADDR=192.168.10.30  # ip地址
NETMASK=255.255.255.0 # 子网掩码
GATEWAY=192.168.10.2 # 网关 与之前看到的一定要一样
DNS1=192.168.10.2   # dns域名解析器
DNS2=8.8.8.8

之后重启网卡

systemctl restart network  # 重启网卡

# 再次ping
ping baidu.com

 finalshell  (官网下载即可,用来本地连接虚拟机,简化虚拟机操作)

虚拟机中安装docker

首先修改yum源,因为使用yum指令安装软件,有的时候会非常慢,加快速度

# 备份原有的yum
mv /etc/yum.repos.d/CentOS-Base.repo  /etc/yum.repos.d/CentOS-Base.repo.backup
# 使用新 yum 源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
# 此项命令建议不执行,占有磁盘。生成缓存  就是把服务器的包信息下载到本地电脑缓存起来,makecache# 
# 建立一个缓存以后用install时就在缓存中搜索,提高了速度。 
yum makecache
安装docker
# 卸载系统之前的 docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine


# 安装yum工具
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken


# 设置docker镜像源 :???
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 这个作用不知道是什么
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

# 应该是开启缓存
yum makecache fast

# 安装docker
yum install -y docker-ce

        工作上不要随便关闭防火墙!!!,如果是学习上可以

         启动docker前切记要关闭linux的防火墙,这里只是学习上用一下。工作上不要这样弄。否则你不能访问到linux未暴露的端口。

        其实也可以暴露相关端口。不细说了

# 启动docker
# Docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议大家直接关闭防火墙!

# 启动docker前,一定要关闭防火墙后!!

# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙 (推荐)
systemctl disable firewalld

# 通过命令启动docker:
systemctl start docker  # 启动docker服务

systemctl stop docker  # 停止docker服务

systemctl restart docker  # 重启docker服务

# 设置docker开机自启
systemctl enable docker

配置镜像加速

docker官方镜像仓库网速较差,我们需要设置国内镜像服务:

# 创建文件夹
sudo mkdir -p /etc/docker
# 创建文件并写入内容
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://m0z0l0cp.mirror.aliyuncs.com"]
}
EOF
# 重新加载配置文件daemon
sudo systemctl daemon-reload
# 重启docker
sudo systemctl restart docker

至此,安装完毕

docker拉取mysql

国内镜像仓库  Docker

# 拉取mysql镜像 我使用的版本

docker pull mysql:5.7.25
# 在创建之前由于要挂载数据卷(理解:就是将本机的目录与容器内的目录合并,或者是文件替换),因此需 # 要将自己的配置文件替换容器内的
# 可以在本机将以下内容放到一个名为hmy.cnf中,然后将这个文件上传到虚拟机中 这里可以使用远程连接工
# 具,更方便上传
# 首先要知道配置文件在哪里 先创建一个容器
docker run --name mysqltest -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.25
# 进入容器,并查看配置文件位置
docker exec -it mysqltest bash
# 查找Docker内,MySQL配置文件my.cnf的位置
mysql --help | grep my.cnf
# 显示如下,意思是路径按优先排序,会是在以下路径里:
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
# 配置文件的路径不一定都一样,有些博客介绍的位置是在/etc/my.cnf。而Ubuntu系统上,实际存在位置# # 是在/etc/mysql/my.cnf,可以查看
cd /etc/mysql
# 踩坑,其实都是软连接,经过我百度 真正的是在这个目录/etc/mysql/mysql.cnf
# 然后退出容器
# 创建两个文件夹存放mysql的配置文件和数据
mkdir -p /data/mysql/conf && mkdir -p /data/mysql/data && mkdir -p /data/mysql/log
# 将临时容器里 MySQL 的配置文件复制到该路径,目的:日后需改配置,直接在挂载路径的配置文件上修改# 即可。
docker cp mysqltest:/etc/mysql/mysql.cnf /data/mysql/conf
# 这里说的是应该将mysql.cnf重命名为my.cnf即可。不知道需不需要重命名   
# 我实践的是不重命名的看能不能行

将以下配置内容放到mysql.cnf中,使用本机软件打开更方便,不要使用虚拟机操作,太麻烦

[mysqld]
skip-name-resolve # skip-name-resolve: 跳过域名解析 解决 MySQL 连接慢的问题
character_set_server=utf8
datadir=/var/lib/mysql
server-id=1000

# 删除之前的测试容器

docker rm -f mysqltest


# 创建新的容器

docker run --restart=always \
--name mysql \
-v /data/mysql/conf/mysql.cnf:/etc/mysql/my.cnf \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/log:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-p 3306:3306 \
-d mysql:5.7.25

# 查看日志

 docker logs -f mysql

# 然后使用本机数据库连接工具navicat进行连接 连接成功  说明my.cnf和mysql.cnf名字都可以(推荐)
# 当然你也可以通过容器的 mysql 命令行工具连接(不推荐)太麻烦

docker exec -it mysql mysql -uroot -proot


# 设置 root 远程访问   不知道有什么用   项目运行之后建立连接才能成功

grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
flush privileges;

select host,user,plugin,authentication_string from mysql.user;

# 参数说明
-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口
-v /data/mysql/conf:/etc/mysql:将配置文件夹挂载到主机
-v /data/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
-v /data/mysql/data:/var/lib/mysql/:将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码

docker拉取redis
# 拉取redis镜像 不加版本号,默认是最新版 latest
docker pull redis
# 同样我们也需要配置文件,通过在线下载redis.conf配置文件
# 创建需要挂载的目录
mkdir -p /data/redis/conf && mkdir -p /data/redis/data
# 进入目录
cd  /data/redis/conf
# 安装wget工具
yum -y install wget
# 获取redis配置文件
wget http://download.redis.io/redis-stable/redis.conf
# 备份配置文件
cp redis.conf redis.conf.bak

        修改redis.conf文件中的一些配置:

# 允许访问的地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问,生产环境不要设置为0.0.0.0
bind 0.0.0.0
# 守护进程,修改为yes后即可后台运行  但是如果docker 使用了-d就不可以用了
# daemonize yes 
# 密码,设置后访问Redis必须输入密码
requirepass 123456
# 监听的端口
port 6379
# 工作目录,默认是当前目录,也就是运行redis-server时的命令,日志、持久化等文件会保存在这个目录
dir .
# 数据库数量,设置为1,代表只使用1个库,默认有16个库,编号0~15
databases 1
# 设置redis能够使用的最大内存
maxmemory 512mb
# 日志文件,默认为空,不记录日志,可以指定日志文件名
logfile "redis.log"

创建容器

docker run --restart=always \
-p 6379:6379 \
--name redis \
-v /data/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /data/redis/data:/data \
-d redis:latest \
 redis-server /etc/redis/redis.conf

# 可以在配置文件中配置
 --appendonly yes 
# 配置文件已经配置
 --requirepass 123456

测试

使用 redis 镜像执行 redis-cli 命令连接 (不推荐)
docker exec -it redis redis-cli

使用本机redis客户端软件连接redis(推荐)

maven下载及配置  下载windows版 直接下

找到配置文件conf目录下的settings.xml 然后添加这项配置  进去之后 可以按CTRL+F搜索mirrors

配置阿里云镜像
<mirrors>
	  <mirror>
		<id>aliyunmaven</id>
		<mirrorOf>*</mirrorOf>
		<name>阿里云公共仓库</name>
		<url>https://maven.aliyun.com/repository/public</url>
      </mirror>
  </mirrors>
配置 jdk1.8 编译项目 
<profiles>
	<profile>
		<id>jdk-1.8</id>
		<activation>
			<activeByDefault>true</activeByDefault>
			<jdk>1.8</jdk>
		</activation>
		<properties>
			<maven.compiler.target>1.8</maven.compiler.target>
			<maven.compiler.source>1.8</maven.compiler.source>
			<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
			<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
			<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
			<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		</properties>
	</profile>
  </profiles>

配置本地仓库

<localRepository>D:\mavenRepository</localRepository>

idea和vscode安装插件

idea 安装 lombok、mybatisx 插件
Vscode 安装开发必备插件
Vetur —— 语法高亮、智能感知、Emmet 等
包含格式化功能, Alt+Shift+F (格式化全文),Ctrl+K Ctrl+F(格式化选中代码,两个 Ctrl需要同时按着)
EsLint —— 语法纠错
Auto Close Tag —— 自动闭合 HTML/XML 标签
Auto Rename Tag —— 自动完成另一侧标签的同步修改
JavaScript(ES6) code snippets — — ES6 语 法 智 能 提 示 以 及 快 速 输 入 , 除 js 外 还 支
持.ts,.jsx,.tsx,.html,.vue,省去了配置其支持各种包含 js 代码文件的时间
HTML CSS Support —— 让 html 标签上写 class 智能提示当前项目所支持的样式
HTML Snippets —— html 快速自动补全  // 已经被弃用
Open in browser —— 浏览器快速打开
Live Server —— 以内嵌服务器方式打开
Chinese (Simplified) Language Pack for Visual Studio Code —— 中文语言包

使用git进行版本控制 git≈代码存放位置

1.下载 git; Git (git-scm.com)
2.配置git,鼠标右键进入git bash here
输入命令
# 配置用户名
git config --global user.name "username" //(名字)
# 配置邮箱
git config --global user.email "username@email.com" //(注册账号时用的邮箱)

配置ssh免密登录,就是每次登录不需要认证了

# ssh免密登录
ssh-keygen -t rsa -C "xxxxx@xxxxx.com"
# 然后连续三次回车。 用户目录下会有 id_rsa 和 id_rsa.pub
# 查看密钥
cat ~/.ssh/id_rsa.pub
# 然后登录进入 gitee,在设置里面找到 SSH KEY 将id_rsa.pub 文件的密钥内容粘贴进去
# 使用 ssh -T git@gitee.com 测试是否成功即可
ssh -T git@gitee.com
然后我们去gitee去初始化一个仓库(操作略),用于存放我们开发的代码
然后通过idea克隆到本地

2.开发

1.开发微服务

从gitee初始化一个项目,在这里去进行一些基本设置

然后去复制仓库地址

在idea中获取此仓库的代码

去新建模块

        这里创建模块的时候会出现一个让你提交到本地仓库的提示,先点取消

        由于看弹幕有的直接点确定了。不过就算点了也没什么大事吧。反正先不要点。目前这个git我也不太懂。

     
      创建项目,这里需要注意的是视频中springboot版本选择的是2.1.8版本,现在idea中已经没有这个版本了,所以我们需要在pom文件更改一下自己的版本号,以防之后出现各种bug  
        修改以下几处,如果pom依然爆红,那就是没有反应过来,不用管它
        <version>${spring-cloud.version}</version>这个也爆红,我看视频里面也爆红了,暂时不管
        
<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>8</java.version>
        <spring-cloud.version>Greenwich.SR3</spring-cloud.version>
</properties>
 
    
接下来同样步骤将以下模块创建成功。
商品服务 product
仓储服务 warehouse
订单服务 order
优惠券服务 coupon
用户服务 user

 因为是聚合工程所以需要你在父工程下创建pom文件 可以复制一个其他模块的pom文件进行修改

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.xxx.grainmall</groupId>
    <artifactId>grainmall</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>grainmall</name>
    <description>谷粒商城-聚合服务</description>
    <packaging>pom</packaging>
</project>

        但是目前来看,就在只修改了pom文件中的版本号,之后依然有爆红,那么可能是因为下面的插件有问题  这段代码爆红 

​
<configuration>
    <image>
        <builder>paketobuildpacks/builder-jammy-base:latest</builder>
    </image>
</configuration>

​

        怎么解决呢,就是把视频中的pom中的这一段代码拿过来替换掉这段代码。注意是build代码块全部替换掉呀,上面我只截取了爆红的代码块

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

      最终模块如下:

        

  这样,全部就弄好了 。其实,问题还挺多的。就是需要细心,然后把遇到的问题记录下来。这样以后方便查看自己遇到的坑了。但是我觉得这样一边做一边错误的话,以后这个项目不想看那么多,只想看错误的话,我想就把这些问题汇总到别的地方。名字就叫学习java时遇到的问题。如此以来,这篇文章里有遇到问题的记录。那么另外一遍用来专门记录遇到错误的记录。我暂且称这些问题为“宝术”吧。那么文章名就叫java宝术,理解就是java问题集锦,当然有的问题解决了,有的还尚未解决。

        2.聚合工程

这个简单,直接上代码,在父工程的pom文件下加入以下代码

<!--    模块-->
    <modules>
        <module>grainmall-product</module>
        <module>grainmall-user</module>
        <module>grainmall-coupon</module>
        <module>grainmall-warehouse</module>
        <module>grainmall-order</module>
    </modules>

        


3.提交到gitee     

git提交的时候需要定义一些无意义的文件,视频中idea是:

        我的idea是在左边位置,不知道你的是在哪里呢

        提交之前需要忽略的内容如下

# 设置一些不需要提交的文件
# **/ 表示父目录的任意目录下的名字为mvnw文件不会上传
**/mvnw
**/mvnw.cmd
**/.gitignore
**/.mvn
**/target/
.idea

        总体来说,忽略完之后还剩21个文件,跟视频里的一样,如果您的不是的话,要么就是2023年你用的idea生成了其他的文件吧。或者其他原因,不过以上忽略的内容是不需要上传到码云的,只要你设置了就行。提交和推送和视频里的idea不同,只要你找到了就推送就可以了

        这里视频教程里安装了一个插件是gitee,你可以安装。我暂时没有安装,但也可以提交

         其实以上的都不算太难,遇到了别的问题可以百度。重要的可能在后面。

        3.数据库初始化

        这里有个问题,就是本地连接不上linux系统上的服务。比如mysql服务。可以看下安装docker时是怎么解决的。如果你安装docker的时候就已经弄好了,就没事了。

        这里需要用到的数据库sql脚本资料在,链接:百度网盘 请输入提取码提取:hdt6  然后自己导入到数据库就行了

       数据库脚本资料我们是没有的,自己肯定短时间是做不出来的,怎么办,博主已经给我提供好了,本来就是学习用的,在哔哩哔哩评论里面有这个资料连接。大家自取

        当然,我也准备了,码:htd6 复制这段内容后打开百度网盘手机App,操作更方便哦

        这个数据库设计,当然我觉得可以专门学习下,但是这里已经准备好了。数据库的设计是真难。因为要考虑到各种因素,反正我设计不出来,由于学习这个系统,我们直接用就好了。

        这里数据库脚本都提供好了,直接导入到mysql里面就行了。不管你用什么方式都行。

         这里有个问题就是docker里面视频里的这个命令

        

docker update mysql --restart=always
docker update redis --restart=always

       

        如果你用的是先前docker命令启动的容器可以不用这个命令

        因为--restart=always 在创建容器的时候已经加了。

docker run --restart=always \
--name mysql \
-v /data/mysql/conf/mysql.cnf:/etc/mysql/my.cnf \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/log:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-p 3306:3306 \
-d mysql:5.7.25

        还有个问题就是需要关闭防火墙,如果您的客户端连接不到linux里面的mysql容器的话,这个在前面安装docker的时候就已经说了。这里视频里面没有去关闭,也行也可以。如果你能成功连接也可以不用在操作别的了。弹幕有的说关闭本机和虚拟机的防火墙,其实只用关闭linux的防火墙就行,开发中,还是不要随便关闭防火墙,这里学习,可以用。因为我们需要访问虚拟机中的端口

 4.使用人人开源搭建后台管理系统

        管理系统≈管理者用的系统,不是给用户用的就行了。

        克隆人人开源的代码,大家跟着视频教程走,

        人人开源地址:人人开源

        这个克隆的是后台管理系统。

        

       

然后克隆前端后台管理系统。

 

将renren-fast模块添加到父模块里面

        将后台项目部署到商城项目,记得先删除掉.git文件,加载pom文件,将一些没有下载好依赖下载好,踩坑,有一些依赖并没有下载,可以自己手动下载。可以添加以下代码,下载好之后可以注释掉。

        <dependency>
			<groupId>org.codehaus.mojo</groupId>
			<artifactId>wagon-maven-plugin</artifactId>
			<version>1.0</version>
		</dependency>
		<dependency>
			<groupId>com.spotify</groupId>
			<artifactId>docker-maven-plugin</artifactId>
			<version>0.4.14</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
			<version>2.6.6</version>
		</dependency>

         发现pom依然有报错,在pom中添加一个代码<relativePath/>放到这个位置

        

    <parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.6.6</version>
		<relativePath/>
	</parent>

        然后就没有错了,可以启动项目了 

        安装nodejs

        可以使用nvm安装nodejs方便切换nodejs 的版本

        并配置好环境变量(≈任何路径都可以使用npm命令),安装时好像是自动配置好了。如果没有就去百度配置

        nvm配置加速 打开 settings.txt 

node_mirror: https://npmmirror.com/mirrors/node/
npm_mirror: https://npmmirror.com/mirrors/npm/

        设置基本配置

nvm install 14.19.0
nvm use 14.19.0
设置全局模块的安装路径到 “node_global” 文件夹,
npm config set prefix "E:\devTools\nodejs\node_global"
设置缓存到 “node_cache” 文件夹
npm config set cache "E:\devTools\nodejs\node_cache"
查看是否设置成功
npm config get prefix
npm config get cache

设置镜像,加快依赖下载速度
npm config set registry https://registry.npmmirror.com
查看是否设置成功
npm config get registry

       经过我的验证,视频里的node版本较低,因此我推荐安装高一点的版本14.17.0,可以成功使用。

        我之前安装过,由于视频里用的版本是v10.16.3,所以我要切换一下版本

        我安装过nvm,可以很方便的切换nodejs的版本

        nvm自己安装好并配置好,如果不会可以百度。

        我这里只是切换版本

        

nvm ls                      // 看安装的所有node.js的版本
 
nvm list available          // 显示可以安装的所有node.js的版本

        安装视频中对应的nodejs版本 10.16.3

nvm install 10.16.3 // 例如:nvm install 14.19.0

        查看版本

node -v  // 查看node版本

其他命令,这里参考的

nvm命令行操作命令
1,nvm nvm list 是查找本电脑上所有的node版本
 
- nvm list 查看已经安装的版本
- nvm list installed 查看已经安装的版本
- nvm list available 查看网络可以安装的版本
 
2,nvm install 安装最新版本nvm
 
3,nvm use <version> ## 切换使用指定的版本node
 
4,nvm ls 列出所有版本
 
5,nvm current显示当前版本
 
6,nvm alias <name> <version> ## 给不同的版本号添加别名
 
7,nvm unalias <name> ## 删除已定义的别名
 
8,nvm reinstall-packages <version> ## 在当前版本node环境下,重新全局安装指定版本号的npm包
 
9,nvm on 打开nodejs控制
 
10,nvm off 关闭nodejs控制
 
11,nvm proxy 查看设置与代理
 
12,nvm node_mirror [url] 设置或者查看setting.txt中的node_mirror,如果不设置的默认是 https://nodejs.org/dist/
  nvm npm_mirror [url] 设置或者查看setting.txt中的npm_mirror,如果不设置的话默认的是: https://github.com/npm/npm/archive/.
 
13,nvm uninstall <version> 卸载制定的版本
 
14,nvm use [version] [arch] 切换制定的node版本和位数
 
15,nvm root [path] 设置和查看root路径
 
16,nvm version 查看当前的版本

        安装完之后,将前端项目用vscode跑起来,使用

        

npm install

         踩坑经历,不需要看,下面有可以用的方案,从目录跳到下一个标题解决npm install fail!! 

    

        我这里出现了bug,花了好几个小时搞定,看了弹幕说换版本的,换python版本的都不太行,

        百度有一个办法说可以,我们就用这个办法。

        

         看到报错信息,一定要从第一行开始报错的地方看,一个一个解决。如果包含如下内容,你也可以试试(我在2023年11月16日07:13:06使用的这个方法,我试错了几个小时,就这个方案可以,)

        

      既然下载失败,我们手动下载,直接去这里下载 https://chromedriver.storage.googleapis.com/2.27/chromedriver_win32.zip

下载到一个不含中文路径的目录,不然容易出bug,然后进行安装,最好不要有中文路径

npm install chromedriver --chromedriver_filepath=你的下载路径\chromedriver_win32.zip

         终于安装成功了!!!

        然后接着执行

        

npm install

        一堆错

         这个下载不了不管了

        这个我们按他的建议安装,结果卡一半,等不下去了

npm install node-sass@^4.0.0

       于是百度解决第一个问题就是缺少这个windows-build-tools,可能github这个依赖已经没有了,所以下载不了了,于是这样解决

        打开cmd以管理员身份运行。

npm install --global --production windows-build-tools

        结果都不行,其实最终不可以的原因竟然是不能安装这个依赖

        node-sass@^4.0.0,对就是这个依赖,气死了,废了这么长时间

        只需要升级node版本我用的14.17.0的版本可以使用。其他的都不用管了

       

        有个依赖需要手动下载,直接去找这个连接下载即可,这个链接在报错信息里面有

         既然下载失败,我们手动下载,直接去这里下载 https://chromedriver.storage.googleapis.com/2.27/chromedriver_win32.zip

下载到一个不含中文路径的目录,不然容易出bug,然后进行安装,最好不要有中文路径

npm install chromedriver --chromedriver_filepath=你的下载路径\chromedriver_win32.zip

         终于安装成功了!!!

        只需要升级node版本我用的14.17.0的版本可以使用。其他的都不用管了。

        去网上百度怎么升级node的版本,或者替换旧版本的都行

        接着npm install就可以了

         发现需要安装node-sass@^4.0.0,使用这个node 14.17.0版本的去安装,视频中的版本太低,安装不了。也许是当时可以,现在不行了。

npm install node-sass@^4.0.0

        一定要等待安装成功,不能取消,如果中途卡住的话,取消之后记得删除node_modules文件再重试。

 解决npm install fail

               第一个错误:

  有个依赖需要手动下载,直接去找这个连接下载即可,这个链接在报错信息里面有

         既然下载失败,我们手动下载,直接去这里下载 https://chromedriver.storage.googleapis.com/2.27/chromedriver_win32.zip

下载到一个不含中文路径的目录,不然容易出bug,然后进行安装,最好不要有中文路径

npm install chromedriver --chromedriver_filepath=你的下载路径\chromedriver_win32.zip

         终于安装成功了!!!

        接着npm install就可以了

        会发现第二个错误:

        

        

        但是不能安装node-sass@^4.0.0,否则会报错。需要与版本匹配,以下是我百度里搜集到的参考一下。

        在这里我们node是10.x版本,因此选择node-sass4.9 版本的进行安装,如果是其他版本可以自行安装。

        

npm install node-sass@4.9    

        然后再次npm install 就可以了。

        然后运行npm run dev

npm run dev

        就会看到成功界面了

 这里之前我们启动了后台管理系统,这是后台管理的前端系统。

5.快速开发——逆向工程搭建&使用

 人人开源地址:人人开源

然后输入以下代码

git clone https://gitee.com/renrenio/renren-generator.git

然后去刷新maven,

如果renren-generator没有亮,就添加这个模块,操作如下

        进行配置

         

        代码生成配置

         最后启动项目。

        访问网站,生成代码

将生成的main文件放到对应的项目中

        删除多余文件

        创建公共模块

        

 添加依赖

安装 | MyBatis-Plus

其中PageUtils,R等实体类在renren-fast模块中复制过来直接用就可以

 <dependencies>
<!--        mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.8</version>
        </dependency>
	<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore -->
		<dependency>
		    <groupId>org.apache.httpcomponents</groupId>
		    <artifactId>httpcore</artifactId>
		    <version>4.4.13</version>
		</dependency>
		<dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>


    </dependencies>

然后重启这个项目,重新生成新的代码

        最后提交git 

 

6. 快速开发——配置,测试微服务crud

        配置

        项目结构,下面这些没有的类都去renren-fast模块去复制过来用

        问题:constant类报错,解决,将以下报错代码先注解

        在common模块pom中添加以下依赖

<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.17</version>
        </dependency>

        product模块下新建application.yml配置文件并输入以下配置

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    username: root
    password: 123456
    url: jdbc:mysql://192.168.80.20:3306/gulimall_pms

        在product的引导类汇总加入@MapperScan注解

/**
 * 1.整合mybatis-plus
 *      1)导入依赖
 *         <dependency>
 *             <groupId>com.baomidou</groupId>
 *             <artifactId>mybatis-plus-boot-starter</artifactId>
 *             <version>3.2.0</version>
 *         </dependency>
 *      2)配置
 *          1.配置数据源
 *              1)导入数据库的驱动
 *              2)在application.yml配置数据源相关信息
 *          2.配置mybatis-plus:
 *              1)使用@MapperScan
 *              2)告诉mybatis-plus,sql映射文件位置
 */
@MapperScan("com.huangskyking.grainmall.product.dao")

        product模块下的application.yml中配置mybatis-plus

         

mybatis-plus:
  mapper-locations: classpath:/mapper/**/*.xml
  global-config:
    db-config:
      id-type: auto

        测试

        测试类中有这个报错就这样处理 

        开始测试crud

        

 @Autowired
    private BrandService brandService;

    /**
     * 插入数据
     */
    @Test
    void insert() {
        // 保存
        BrandEntity brandEntity = new BrandEntity();
        brandEntity.setName("小米");
        brandService.save(brandEntity);
        System.out.println("保存成功...");
    }

    /**
     * 修改数据
     */
    @Test
    void update() {
        // 保存
        BrandEntity brandEntity = new BrandEntity();
        brandEntity.setBrandId(13L);
        brandEntity.setDescript("666");
        brandService.updateById(brandEntity);
        System.out.println("修改成功...");
    }

    /**
     * 查询数据
     */
    @Test
    void query() {
        // 查询数据
        List<BrandEntity> brandEntityList = brandService.list(Wrappers.<BrandEntity>lambdaQuery().eq(BrandEntity::getBrandId, 13L));
        brandEntityList.forEach(System.out::println);
    }

        添加数据

        修改数据 

         

        查询数据

        发现,上面的内容我不知道自己在干嘛,就是一味在做。因此,需要时刻反思自己到底在干什么

         7.优惠券代码逆向生成

        首先打开人人的代码,修改以下代码,可以自动生成

        

#\u4EE3\u7801\u751F\u6210\u5668\uFF0C\u914D\u7F6E\u4FE1\u606F

mainPath=com.huangskyking
#\u5305\u540D
package=com.huangskyking.grainmall
moduleName=product
#\u4F5C\u8005
author=huangskyking
#Email
email=huang@gmail.com
#\u8868\u524D\u7F00(\u7C7B\u540D\u4E0D\u4F1A\u5305\u542B\u8868\u524D\u7F00)
tablePrefix=sms_

#\u7C7B\u578B\u8F6C\u6362\uFF0C\u914D\u7F6E\u4FE1\u606F
tinyint=Integer
smallint=Integer
mediumint=Integer
int=Integer
integer=Integer
bigint=Long
float=Float
double=Double
decimal=BigDecimal
bit=Boolean

char=String
varchar=String
tinytext=String
text=String
mediumtext=String
longtext=String


date=Date
datetime=Date
timestamp=Date

NUMBER=Integer
INT=Integer
INTEGER=Integer
BINARY_INTEGER=Integer
LONG=String
FLOAT=Float
BINARY_FLOAT=Float
DOUBLE=Double
BINARY_DOUBLE=Double
DECIMAL=BigDecimal
CHAR=String
VARCHAR=String
VARCHAR2=String
NVARCHAR=String
NVARCHAR2=String
CLOB=String
BLOB=String
DATE=Date
DATETIME=Date
TIMESTAMP=Date
TIMESTAMP(6)=Date

int8=Long
int4=Integer
int2=Integer
numeric=BigDecimal

nvarchar=String
server:
  port: 81

# mysql
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    #MySQL配置
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://192.168.80.20:3306/gulimall_sms?useSSL=false&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: 123456
    #oracle配置
    #    driverClassName: oracle.jdbc.OracleDriver
    #    url: jdbc:oracle:thin:@47.100.206.162:1521:xe
    #    username: renren
    #    password: 123456
    #SQLServer配置
    #    driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
    #    url: jdbc:sqlserver://192.168.10.10:1433;DatabaseName=renren_fast
    #    username: sa
    #    password: 123456
    #PostgreSQL配置
  #    driverClassName: org.postgresql.Driver
  #    url: jdbc:postgresql://192.168.10.10:5432/renren_fast
  #    username: postgres
  #    password: 123456



  jackson:
    time-zone: GMT+8
    date-format: yyyy-MM-dd HH:mm:ss
  resources:
    static-locations: classpath:/static/,classpath:/views/

#mongodb:
#  host: localhost
#  port: 27017
#  auth: false #是否使用密码验证
#  username: tincery
#  password: renren
#  source: 123456
#  database: test

mybatis-plus:
  mapperLocations: classpath:mapper/**/*.xml


pagehelper:
  reasonable: true
  supportMethodsArguments: true
  params: count=countSql


#指定数据库,可选值有【mysql、oracle、sqlserver、postgresql、mongodb】
renren:
  database: mysql

        然后启动人人代码自动生成服务

         下载里面的代码然后将里面的main代码放到coupon模块里,删除resource目录下的src目录

然后,添加pom.yml配置文件

        

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    username: root
    password: 123456
    url: jdbc:mysql://192.168.80.20:3306/gulimall_sms
mybatis-plus:
  mapper-locations: classpath:/mapper/**/*.xml
  global-config:
    db-config:
      id-type: auto

        测试一下,看能不能用

        以上这些事情都是为了方便更快进行开发,因为基础的增删改查都已经模板化了,不需要我们自己再去写了 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值