day01-项目概述、环境搭建

news2024/9/17 8:19:22

1. 软件开发整体介绍

1.1 软件开发流程

在这里插入图片描述

1.2 角色分工

  • 项目经理:对整个项目负责,任务分配、把控进度
  • 产品经理:进行需求调研,输出需求调研文档、产品原型等
  • UI设计师:根据产品原型输出界面效果图
  • 架构师:项目整体架构设计、技术选型等
  • 开发工程师:代码实现
  • 测试工程师:编写测试用例,输出测试报告
  • 运维工程师:软件环境搭建、项目上线

1.3 软件环境

  • 开发环境(development):开发人员在开发阶段使用的环境,一般外部用户无法访问
  • 测试环境(testing):专门给测试人员使用的环境,用于测试项目,一般外部用户无法访问
  • 生产环境(production):即线上环境,正式提供对外服务的环境

2. 苍穹外卖项目介绍

2.1 项目介绍

定位:专门为餐饮企业(餐厅、饭店)定制的一款软件产品
在这里插入图片描述

通过功能架构图来展示管理端用户端的具体业务功能模块。
在这里插入图片描述

2.2 产品原型

产品原型:用于展示项目的业务功能,一般由产品经理进行设计
在这里插入图片描述

2.3 技术选型

技术选型:展示项目中使用到的技术框架和中间件等
在这里插入图片描述

用户层

  • 本项目中在构建系统管理后台的前端页面,我们会用到H5、Vue.js、ElementUI、apache echarts(展示图表)等技术。而在构建移动端应用时,我们会使用到微信小程序。

网关层

  • Nginx是一个服务器,主要用来作为Http服务器,部署静态资源,访问性能高。在Nginx中还有两个比较重要的作用: 反向代理和负载均衡, 在进行项目部署时,要实现Tomcat的负载均衡,就可以通过Nginx来实现。

应用层

  • SpringBoot: 快速构建Spring项目, 采用 “约定优于配置” 的思想, 简化Spring项目的配置开发。
  • SpringMVC:SpringMVC是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合,可以无缝集成。
  • Spring Task: 由Spring提供的定时任务框架。
  • httpclient: 主要实现了对http请求的发送。
  • Spring Cache: 由Spring提供的数据缓存框架
  • JWT: 用于对应用程序上的用户进行身份验证的标记。
  • 阿里云OSS: 对象存储服务,在项目中主要存储文件,如图片等。
  • Swagger: 可以自动的帮助开发人员生成接口文档,并对接口进行测试。
  • POI: 封装了对Excel表格的常用操作。
  • WebSocket: 一种通信网络协议,使客户端和服务器之间的数据交换更加简单,用于项目的来单、催单功能实现。

数据层

  • MySQL: 关系型数据库, 本项目的核心业务数据都会采用MySQL进行存储。
  • Redis: 基于key-value格式存储的内存数据库, 访问速度快, 经常使用它做缓存。
  • Mybatis: 本项目持久层将会使用Mybatis开发。
  • pagehelper: 分页插件。
  • spring data redis: 简化java代码操作Redis的API。

工具

  • git: 版本控制工具, 在团队协作中, 使用该工具对项目中的代码进行管理。
  • maven: 项目构建工具。
  • junit:单元测试工具,开发人员功能实现完毕后,需要通过junit对功能进行单元测试。
  • postman: 接口测工具,模拟用户发起的各类HTTP请求,获取对应的响应结果。

3. 开发环境搭建

在这里插入图片描述

3.1 前端环境搭建

  1. 前端工程基于 nginx
    在这里插入图片描述
  2. 启动nginx:双击 nginx.exe 即可启动 nginx 服务,访问端口号为 80
    在这里插入图片描述

3.2 后端环境搭建

3.2.1 熟悉项目结构

后端工程基于 maven 进行项目构建,并且进行分模块开发。
在这里插入图片描述

分析sky-common模块的每个包的作用:

名称说明
constant存放相关常量类
context存放上下文类
enumeration项目的枚举类存储
exception存放自定义异常类
json处理json转换的类
properties存放SpringBoot相关的配置属性类
result返回结果类的封装
utils常用工具类

分析sky-pojo模块的每个包的作用:

名称说明
Entity实体,通常和数据库中的表对应
DTO数据传输对象,通常用于程序中各层之间传递数据
VO视图对象,为前端展示数据提供的对象
POJO普通Java对象,只有属性和对应的getter和setter

分析sky-server模块的每个包的作用:

名称说明
config存放配置类
controller存放controller类
interceptor存放拦截器类
mapper存放mapper接口
service存放service类
SkyApplication启动类

3.2.2 Git版本控制

使用 Git 进行项目代码的版本控制,具体操作:

  1. 创建 Git 本地仓库
  2. 创建 Git 远程仓库
  3. 将本地文件推送到 Git 远程仓库

3.2.3 数据库环境搭建

在这里插入图片描述

3.2.4 前后端联调

在这里插入图片描述

3.2.5 nginx反向代理和负载均衡

nginx 反向代理,就是将前端发送的动态请求由 nginx 转发到后端服务器
在这里插入图片描述

  • 前端请求地址:http://localhost/api/employee/login
  • 后端接口地址:http://localhost:8080/admin/employee/login

在这里插入图片描述

nginx 反向代理的好处:

  • 提高访问速度
  • 进行负载均衡
  • 保证后端服务安全

所谓 负载均衡,就是把大量的请求按照我们指定的方式均衡的分配给集群中的每台服务器

nginx 反向代理的配置方式
在这里插入图片描述

nginx 负载均衡的配置方式
在这里插入图片描述

nginx 负载均衡策略

名称说明
轮询默认方式
weight权重方式,默认为1,权重越高,被分配的客户端请求就越多
ip_hash依据ip分配方式,这样每个访客可以固定访问一个后端服务
least_conn依据最少连接方式,把请求优先分配给连接数少的后端服务
url_hash依据url分配方式,这样相同的url会被分配到同一个后端服务
fair依据响应时间方式,响应时间短的服务将会被优先分配

具体配置方式

轮询:

upstream webservers{
    server 192.168.100.128:8080;
    server 192.168.100.129:8080;
}

weight:

upstream webservers{
    server 192.168.100.128:8080 weight=90;
    server 192.168.100.129:8080 weight=10;
}

ip_hash:

upstream webservers{
    ip_hash;
    server 192.168.100.128:8080;
    server 192.168.100.129:8080;
}

3.3 完善登录功能

问题: 员工表中的密码是明文存储,安全性太低。

解决思路:

  1. 将密码加密后存储,提高安全性
  2. 使用MD5加密方式对明文密码加密

实现步骤:

  1. 修改数据库中明文密码,改为MD5加密后的密文
  2. 修改Java代码,前端提交的密码进行MD5加密后再跟数据库中密码比对
password = DigestUtils.md5DigestAsHex(password.getBytes());

4. 导入接口文档

4.1 前后端分离开发流程

在这里插入图片描述

4.2 操作步骤

Apifox
https://app.apifox.com/main/teams/2420981?tab=project

5. Swagger

5.1 介绍

使用Swagger你只需要按照它的规范去定义接口及接口相关的信息,就可以做到生成接口文档,以及在线接口调试页面。

官网:https://swagger.io/

作用

  1. 使得前后端分离开发更加方便,有利于团队协作
  2. 接口的文档在线自动生成,降低后端开发人员编写接口文档的负担
  3. 功能测试

Spring已经将Swagger纳入自身的标准,建立了Spring-swagger项目,现在叫Springfox。通过在项目中引入Springfox ,即可非常简单快捷的使用Swagger。

Knife4j 是为Java MVC框架集成Swagger生成Api文档的增强解决方案。
在这里插入图片描述

5.2 使用步骤

  1. 导入 knife4j 的maven坐标
  2. 在配置类中加入 knife4j 相关配置
  3. 设置静态资源映射,否则接口文档页面无法访问
            <dependency>
                <groupId>com.github.xiaoymin</groupId>
                <artifactId>knife4j-spring-boot-starter</artifactId>
                <knife4j>3.0.2</knife4j>
            </dependency>

在这里插入图片描述
在这里插入图片描述

接口文档访问路径为: http://localhost:8080/doc.html

通过 Swagger 就可以生成接口文档,那么我们就不需要 Yapi 了?

  1. Yapi 是设计阶段使用的工具,管理和维护接口
  2. Swagger 在开发阶段使用的框架,帮助后端开发人员做后端的接口测试

5.3 常用注解

通过注解可以控制生成的接口文档,使接口文档拥有更好的可读性,常用注解如下:

注解说明
@Api用在类上,例如Controller,表示对类的说明
@ApiModel用在类上,例如entity、DTO、VO
@ApiModelProperty用在属性上,描述属性信息
@ApiOperation用在方法上,例如Controller的方法,说明方法的用途、作用

接下来,使用上述注解,生成可读性更好的接口文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1546795.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C#调用C++ (使用C++/CLI)

简介 C/CLI&#xff08;C Common Language Infrastructure&#xff09;是一种允许在 .NET 平台上创建托管代码&#xff08;managed code&#xff09;和非托管代码&#xff08;unmanaged code&#xff09;之间互操作的语言。其原理可以概括如下&#xff1a; 编译器支持: C/CLI 编…

msvcp140.dll是什么文件?msvcp140.dll丢失的多种解决方法详细解析

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中最常见的就是“缺少xxx.dll文件”。而最近&#xff0c;有用户反映他们的电脑出现了“msvcp140.dll丢失”的问题。那么&#xff0c;msvcp140.dll是什么&#xff1f;为什么电脑会出现msvcp140.dll丢失问…

Rust编程(二)语法和数据类型

编程规范 类C语法&#xff0c;函数需要定义&#xff0c;指令需要以&#xff1b;结尾。需要大括号{} 文件名&#xff0c;变量&#xff0c;函数命名使用snake case&#xff0c;eg&#xff1a;new_function() 结构体&#xff0c;特征命名&#xff0c;使用大驼峰命名&#xff0c;e…

各城市宗族文化姓氏占比数据

各城市宗族文化姓氏占比数据 1、指标&#xff1a;省份代码、所属省份、城市代码、所属城市、第1大姓氏、第2大姓氏、第3大姓氏、宗族文化强度 2、方法说明&#xff1a; 根据2005年全国1%的人口调查数据计算。其中第1大姓氏第一大姓人口数/总人口数&#xff0c;宗族文化强度(…

脏牛提权(靶机复现)

目录 一、脏牛漏洞概述 二、漏洞复现 1.nmap信息收集 1.1.查看当前IP地址 1.2.扫描当前网段&#xff0c;找出目标机器 1.3.快速扫描目标机全端口 三、访问收集到的资产 192.168.40.134:80 192.168.40.134:1898 四、msf攻击 1.查找对应exp 2.选择对应exp并配置相关设…

关于dell SC4020/SCv2000中的BBU电池的一些常见问题汇总

近期销售了一些DELL SC4020/SCv2000的BBU&#xff08;PN&#xff1a;0XJW8Y 或者 0C27CW&#xff09;电池&#xff0c;有一些共性的问题&#xff0c;这里汇总下&#xff0c;供朋友们参考。还有没有覆盖到的问题&#xff0c;可以加VX: StorageExpert继续讨论。 1. 两个PN是否通用…

2023年蓝桥杯省赛——数组分割

目录 题目链接&#xff1a;1.数组分割 - 蓝桥云课 (lanqiao.cn) 思路 数学问题解答 思路 代码实现 总结 题目链接&#xff1a;1.数组分割 - 蓝桥云课 (lanqiao.cn) 思路 众所周知&#xff0c;蓝桥杯又叫&#xff0c;数学杯&#xff0c;这道题其实就是一个数学问题&#x…

Web应用防火墙是什么?分享工作原理及部署建议

Web应用防火墙&#xff08;WAF&#xff09;诞生于互联网的早期时间&#xff0c;它通常会感知用户、会话和应用&#xff0c;了解其背后的Web应用及其提供的服务。正因如此&#xff0c;WAF可以看作是用户和应用之间的中介&#xff0c;并会提前对往来于两者之前的通信进行分析。那…

matlab实现神经网络检测手写数字

一、要求 1.计算sigmoid函数的梯度&#xff1b; 2&#xff0e;随机初始化网络权重&#xff1b; 3.编写网络的代价函数。 二、算法介绍 神经网络结构&#xff1a; 不正则化的神经网络的代价函数&#xff1a; 正则化&#xff1a; S型函数求导&#xff1a; 反向传播算法&…

蓝桥杯2023年第十四届省赛真题-买瓜|DFS+剪枝

题目链接&#xff1a; 0买瓜 - 蓝桥云课 (lanqiao.cn) 蓝桥杯2023年第十四届省赛真题-买瓜 - C语言网 (dotcpp.com) &#xff08;蓝桥官网的数据要求会高一些&#xff09; 说明&#xff1a; 这道题可以分析出&#xff1a;对一个瓜有三种选择&#xff1a; 不拿&#xff0c…

C语言笔记:重学输入和输出

ACM金牌带你零基础直达C语言精通-课程资料 本笔记属于船说系列课程之一&#xff0c;课程链接&#xff1a;ACM金牌带你零基础直达C语言精通https://www.bilibili.com/cheese/play/ep159068?csourceprivate_space_class_null&spm_id_from333.999.0.0 你也可以选择购买『船说…

AI论文速读 | 具有时间动态的路网语义增强表示学习

论文标题&#xff1a; Semantic-Enhanced Representation Learning for Road Networks with Temporal Dynamics 作者&#xff1a; Yile Chen&#xff08;陈亦乐&#xff09; ; Xiucheng Li&#xff08;李修成&#xff09;; Gao Cong&#xff08;丛高&#xff09; ; Zhifeng Ba…

深入探讨iOS开发:从创建第一个iOS程序到纯代码实现全面解析

iOS开发作为移动应用开发的重要领域之一&#xff0c;对于开发人员具有重要意义。本文将深入探讨iOS开发的各个方面&#xff0c;从创建第一个iOS程序到纯代码实现iOS开发&#xff0c;带领读者全面了解iOS应用程序的开发流程和技术要点。 &#x1f4f1; 第一个iOS程序 在创建第…

第1章 实时3D渲染流水线

前言 本书所剖析的Unity 3D内置着色器代码版本是2017.2.0f3&#xff0c;读者可以从Unity 3D官网下载这些着色器代码。这些代码以名为builtin_shaders-2017.2.0f3.zip的压缩包的形式提供&#xff0c;解压缩后&#xff0c;内有4个目录和1个license.txt文件。 目录CGIncludes存放了…

【系统架构师】-基础知识整理

1、面向对象设计得四种关系 关系类型概念特点例子关联关系表示不同类的对象之间有联系&#xff0c;但是一方并不完全拥有另一方&#xff0c;也不对其生命周期负责。关联关系可以是单向的也可以是双向的。耦合度高通常用来表示不同类的对象之间的联系&#xff0c;如“使用”或“…

Kafka消费者:监听模式VS主动拉取,哪种更适合你?

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 Kafka消费者&#xff1a;监听模式VS主动拉取&#xff0c;哪种更适合你&#xff1f; 前言监听模式的实现监听器&#xff08;Listener&#xff09;的概念和作用使用监听器实现 Kafka 消费者的步骤和方法…

DDoS攻击升级,解读防御DDoS攻击的几大有效方法

前不久&#xff0c;Gcore发布了2023年第三、四季度DDoS攻击趋势报告&#xff0c;报告中指出DDoS攻击的规模以及复杂性持续增长&#xff0c;且这种增长是触目惊心的。全球每天大约发生23000次DDoS攻击&#xff0c;每39秒就会发生一次新的网络攻击&#xff0c;电信公司、政府部门…

javaSwing连连看游戏

一、简介 基于java的连连看游戏设计和实现&#xff0c;基本功能包括&#xff1a;消除模块&#xff0c;重新开始模块&#xff0c;刷新模块&#xff0c;选择难度模块&#xff0c;计时模块。本系统结构如下&#xff1a; &#xff08;1&#xff09;消除模块&#xff1a; 完成连连…

【MATLAB源码-第13期】基于matlab的4ASK的误码率BER和误符号率SER理论和实际对比仿真。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 "4ASK" 是一种数字调制技术&#xff0c;代表4级振幅移移键控&#xff08;4-Level Amplitude Shift Keying&#xff09;调制。它是一种数字通信中常用的调制方式之一&#xff0c;用于将数字信号转换为模拟信号以便传…

map china not exists. the geojson of the map must be provided.

map china not exists. the geojson of the map must be provided. 场景&#xff1a;引入echarts地图报错map china not exists. the geojson of the map must be provided. 原因&#xff1a; echarts版本过高&#xff0c;ECharts 之前提供下载的矢量地图数据来自第三方&…