一:病虫害 AI 识别系统项目初期准备与Docker初识,VM虚拟机

提前下载好VMware Workstation Pro

第一部分:

统一认证登录:

采用JWT(JSON Web Token)实现令牌认证,用户登录成功后生成 JWT 令牌,后续请求携带令牌进行身份验证,保障系统安全。后期项目优化部分结合 SaToken 进行权限校验,确保只有合法用户才能访问系统资源。

数据集管理:

完成大文件上传

算子管理:

模型管理:

权限管理:

用户--角色--权限

用户和角色之间的关系?建立一张桥表

多对多

角色和权限之间的关系?建立一张桥表

多对多

多对多,外键设置在哪一方都不合适,所以要创建桥表

系统管理:

后期不会改变的常量等,但会使用到,使用数据字典管理,用到哪个去字典中查即可

日志导出:easy excel 小组件 中间件

项目架构:

1.技术架构

本系统基于 Jdk17 (默认jdk版本)和 SpringBoot3 搭建核心框架,利用 MyBatisPlus(编码更方便 Mybatis--Flex:一个优雅的mybatis增强框架,可操作多表, mybatis--Plus:简化开发,只做增强不做改变,提高效率,不需要手动写SQL语句(利用id查询数据的代码--针对单表操作) )实现对 MySQL 数据库操作的便捷化,简化数据访问层的开发

经常用数据库操作io数据的,太繁琐,内存有限,使用redis非关系型数据库,基于内存操作,速度快,springcache实现缓存数据和MySQL数据一致性

RabbitMQ(中间件)跨语言,对于python端和java端数据交互,双十一商品发短信给用户,将消息先丢到消息队列(先进先出)

不用if判断是否为空,使用JSR303参数校验,也就是添加一个注解就能实现大量用if判断的语句

MapStruct实现beanCopy拷贝,像之前的物联网项目环境湿度温度的拷贝

A B 相同类型的对象

将A的完整属性拷贝给B,B调用set,使用get 获取A的属性

例:bean下的user的属性name和其他属性,需要vo对象拿取需要的部分,不需要vo.setname(user.getName)繁琐的导入,直接通过MapStruct进行映射

Knife4j:接口测试,不再用postman,直接在代码中生成web网页进行测试,自动识别请求方式

系统架构分层:

第二部分

1.SQL导入

引入sql表,navicat右键运行SQL文件,找到pai.sql,进行导入

或者右键--新建数据库,数据库名,字符集utf8mb4,右键--运行SQL文件

第三部分

环境搭建

1.win+r:查看git版本号 git --version

2.在idea打开plant--ai--identify项目

3.close当前idea项目,open刚才解压的plant--ai--identify项目

sdks中也是17

file--settings--maven

settings--Plugins--下载Gitee--Version Controller--Gitee--添加账号

Gitee插件下载不下来,直接把插件压缩包去官网找打开

创建Git仓库

点击test确保是自己git地址

删除项目目录中的.git .idea文件自己手动初始化,关闭项目重新打开,删除Git中的与项目重复的仓库,file--VSC --share project gitee--commit

第四部分:

目录结构

项⽬采⽤三层架构(表⽰层、业务逻辑层、数据访问层),项⽬对应的⽬录结构如下

vo对象:前端要什么,后端就封装什么,前端既想要栏圈又想要栏舍信息,就在后端封装一个vo对象

dto:从前端拿到后封装一个dto对象

第五部分:

配置文件

开启VMware虚拟机(linux虚拟机)

1.打开VMware,右键,打开Ubuntu 20.04.ova这个文件,稍后安装操作系统,linux,版本Ubuntu64位,虚拟机名称:Ubuntu 20.04

处理器:2~4个(4)

处理器内核数量:1~2个(2)

2:1的关系

内存2个G

io控制类型默认选项

创建新的虚拟磁盘,20个G

开启虚拟机(虚拟机ifconfig和物理机ipconfig处于同一个网段ipv4上)

用户briup

密码

ifconfig

出现inet:ipv4地址

操作虚拟机的工具 用来连接虚拟机----------------------MobaXterm_Personal_23.2.exe

将以下两个文件存放在自己创建的文件夹中

在这个程序中输入命令实现动态连接虚拟机

右键exe发送到桌面创建快捷方式

双击打开这个程序

点击Session--ssh--remote host:ipv4地址--username:briup--ok--accept

win+r:ping ipv4地址 能ping通就说明连接虚拟机成功了

虚拟机ubuntu不用了可以挂起,再次用到重新开启然后依次输入密码,ifconfig

去连接虚拟机的程序MobaXterm_Personal_23.2中输入密码进去这样就连接到虚拟机了

ls 查看当前目录下的文件

cd / 根目录

cd ~ 家目录

什么是Docker?

开发完项目,会将项目部署在虚拟机

以后端为例,需要在虚拟机安装jdk环境,通过java--jar命令启动jar包,启动后端,这是之前的操作步骤

前端:安装node环境,或者直接安装nginx环境,将前端项目打包生成成html,css和js构成的静态页面,部署在nginx环境,将ip改成服务器地址,这样前端就能跑起来了,这是之前的操作步骤

繁琐,需要自己手动配置

docker:将环境提前打包好,想要用环境直接使用docker镜像,项目会直接跑起来,相当于将项目放在小型的虚拟机上运行


docker镜像:就是把所用到的依赖,环境,库等存放在docker镜像中

web项目启动要有web容器

容器:docker镜像启动也要有容器,类似于小型的linux机器,容器与虚拟机(宿主机)是共享操作系统内核的

镜像是放在容器中运行的

仓库:存放镜像的地方

最终运行的是docker容器

Docker的优势?

安装Docker

sudo:提升到管理员权限

apt:Ubuntu里下载东西

1.更新系统软件包

sudo apt update

2.安装依赖包

sudo apt install apt-transport-https ca-certificates curl software-properties-common

3.添加官方密钥(图片里的命令失效了,用这个)

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

4.添加docker阿里稳定版软件源(密钥和验证一行代码就可以搞定)

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

5.再次更新软件包

sudo apt update

6.安装默认最新版

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

7.测试 安装好后默认启动

sudo docker run hello-world

出现这个问题要更换镜像源

将文件拖到家目录

家目录

ll查看家目录中所有文件

ls查看是否存在json文件

有就执行下一条命令

8.从home broup拷贝到etc docker下面

sudo cp /home/briup/daemon.json /etc/docker/daemon.json

9.重启docker

sudo systemctl daemon-reload

sudo systemctl restart docker

10.再次测试,默认自动启动

sudo docker run hello-world

如果命令行有Hello from Docker!说明docker安装成功

11.查看docker有哪些镜像(可以看到hello world镜像)

sudo docker images

由于每条命令基本都要切换到管理员所以干脆用su切换到管理员模式,然后再输入这些命令

密码用自己的



12.列出自己的用户组,确认自己不在docker组中

groups

13.没有则新增docker组

sudo groupadd docker

14.把此用户briup添加到docker组中

sudo gpasswd -a ${USER} docker

15.更新

newgrp docker

16.重启docker

sudo service docker restart

17.开机自启docker

sudo systemctl enable docker

18.查看状态

sudo systemctl status docker

有绿色小图标就代表正在运行

ctrl+c退出

Docker安装完成

常见命令

可以看到有一个mysql容器

容器id:aa250a9514fb

不写id也可

docker update --restart=always mysql

这样mysql就实现了开机自启

案例展示

宿主机的80端口映射容器的80端口

现在可以通过本地浏览器访问nginx

192.168.......:80

这样nginx就运行成功了

ps查看容器运行状态

使用指定格式,输出更优雅


查看容器内目录

回到宿主机:exit

再次查看列表只有这两个文件

创建文件:vi 1.txt

创建好之后是只读模式,按住i可以往1.txt插入内容,hello docker!

退出:esc

shift+: 然后输入:wq退出去,这样文件内容就保存下来了

再次输入命令:vi 1.txt可以进去看到刚才输进去的内容

我们现在就在家目录下直接输入:vi .bashrc

输入i进入插入模式,找到alias继续写命令就行

对这部分长的起别名就行以后直接输入dps和dis就能查看目录和镜像

esc退出

shift+:wq保存文件并退出

现在修改了别名,我们要让bashrc生效

我们已经在家目录下了,直接输入命令:

生效后

到这里关于docker你已经入门啦!

相关推荐
敖正炀6 小时前
Spring MVC 启动全景:DispatcherServlet 与父子容器
spring boot
绿草在线8 小时前
基于SpringBoot4+Mybatis+Thymeleaf的用户管理系统开发实战
java·spring boot·thymeleaf
麦麦大数据8 小时前
基于以太坊区块链+Spring Boot+Solidity智能合约的投票系统设计与实现
spring boot·后端·区块链·智能合约·投票系统
一 乐8 小时前
茶叶商城|基于springboot + vue茶叶商城系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·茶叶商城系统
鱼弦9 小时前
Git 版本控制:Spring Boot 项目的分支管理与协作
spring boot
devpotato18 小时前
Spring Boot mTLS 报 `keystore password was incorrect`:不一定是密码错了
spring boot·tls·pkcs12·mtls
keep one's resolveY19 小时前
SpringBoot实现重试机制的四种方案
java·spring boot·后端
阿丰资源21 小时前
基于Spring Boot的电影城管理系统(直接运行)
java·spring boot·后端