项目概述、开发环境搭建(day01)

软件开发整体介绍

软件开发流程

第1阶段: 需求分析

  • 需求规格说明书, 一般来说就是使用 Word 文档来描述当前项目的各个组成部分,如:系统定义、应用环境、功能规格、性能需求等,都会在文档中描述。
  • 产品原型,一般是通过网页(html)的形式展示当前的页面展示什么样的数据, 页面的布局是什么样子的,点击某个菜单,打开什么页面,点击某个按钮,出现什么效果,都可以通过产品原型看到。

第2阶段: 设计

  • UI设计:用户界面的设计,主要设计项目的页面效果,小到一个按钮,大到一个页面布局,还有人机交互逻辑的体现。
  • 数据库设计:需要设计当前项目中涉及到哪些数据库,每一个数据库里面包含哪些表,这些表结构之间的关系是什么样的,表结构中包含哪些字段。
  • 接口设计:通过分析原型图,首先,粗粒度地分析每个页面有多少接口,然后,再细粒度地分析每个接口的传入参数,返回值参数,同时明确接口路径及请求方式。

角色分工

软件环境

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

苍穹外卖项目介绍

项目介绍

定位:专门为餐饮企业(餐厅、饭店)定制的一款软件产品

功能架构:体现项目中的业务功能模块

产品原型

产品原型:用于展示项目的业务功能,一般由产品经理进行设计

技术选型

技术选型:展示项目中使用到的技术框架和中间件等

用户层

  • 本项目中在构建系统管理后台的前端页面,我们会用到 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 请求,获取对应的响应结果。

开发环境搭建

整体结构

前端环境搭建

前端工程基于 nginx 运行

 启动 nginx:双击 nginx.exe 即可启动 nginx 服务,访问端口号为 80

后端环境搭建

项目结构

后端工程基于 maven 进行项目构建,并且进行分模块开发。

用 IDEA 打开初始工程,了解项目的整体结构

sky-common 子模块中存放的是一些公共类,可以供其他模块使用

sky-pojo 子模块中存放的是一些 entityDTOVO


sky-server 子模块中存放的是 配置文件、配置类、拦截器、controllerservicemapper、启动类等

后端环境搭建 – 使用Git进行版本控制

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

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

 

创建远程仓库


后端环境搭建 – 数据库环境搭建

通过数据库建表语句创建数据库表结构:

后端环境搭建 – 前后端联调

后端的初始工程中已经实现了登录功能,直接进行前后端联调测试即可

:可以通过断点调试跟踪后端程序的执行过程

先编译一下:

启动程序 

nginx 反向代理和负载均衡

nginx_百度百科

nginx 反向代理,就是将前端发送的动态请求由 nginx 转发到后端服务器

nginx 反向代理的好处:

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

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

nginx 反向代理的配置方式

nginx 负载均衡的配置方式:

nginx 负载均衡策略

完善登录功能

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

解决思路:

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

实现步骤:

  1. 修改数据库中明文密码,改为MD5加密后的密文
  2. 修改Java代码,前端提交的密码进行MD5加密后再跟数据库中密码比对

password = DigestUtils.md5DigestAsHex(password.getBytes());

导入接口文档

前后端分离开发流程:

操作步骤

这里使用Apifox

Swagger

介绍

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

官网:API Documentation & Design Tools for Teams | Swagger

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

作用

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

Knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案。

使用方式

  1. 导入 knife4j 的 maven 坐标
  2. 在配置类中加入 knife4j 相关配置
  3. 设置静态资源映射,否则接口文档页面无法访问



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

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

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

常用注解

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

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

下一节:

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

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

相关文章

1Hive概览

1Hive概览 1hive简介2hive架构3hive与Hadoop的关系4hive与传统数据库对比5hive的数据存储 1hive简介 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。 其本质是将SQL转换为MapReduce/Spark的任务进…

Hive迁移,小表(10G以下的),分区快速修复批量脚本

hive迁移要迁移元数据(mysql),要迁移实际数据hdfs,迁移完后如果有分区,通常是不能访问的。 这里就要修复分区了,如果是大表,几十T这种,迁移可能花了24小时,那么你修复分…

Vulnhub DC-9靶机实战

前言 这里说一下这个靶机的难点 1.这次sql注入是两个库的,在不使用sqlmap的情况下很多人直接database()看数据库,另一个库反倒没关注 2.nmap的扫描方式如果用-sT的tcp连接扫端口的话是扫不到那些被防火墙过滤的端口的,直接nmap ip就可以 3…

快速、可靠且高性价比的定制IP模式提升芯片设计公司竞争力

作者:Karthik Gopal,SmartDV Technologies亚洲区总经理 智权半导体科技(厦门)有限公司总经理 无论是在出货量巨大的消费电子市场,还是针对特定应用的细分芯片市场,差异化芯片设计带来的定制化需求也在芯片…

【Git版本控制器--1】Git的基本操作--本地仓库

目录 初识git 本地仓库 认识工作区、暂存区、版本库 add操作与commit操作 master文件与commit id 修改文件 版本回退 撤销修改 删除文件 初识git Git 是一个分布式版本控制系统,主要用于跟踪文件的更改,特别是在软件开发中。 为什么要版本…

2025宝塔API一键建站系统PHP源码

源码介绍 2025宝塔API一键建站系统PHP源码,对接自己的支付,虚拟主机也能搭建,小白式建站系统,基于宝塔面板搭建的建站系统,功能丰富,多款模板,每日更新 上传源码到服务器,浏览器访问…

在IDEA上运行Java项目

新建一个项目,下面创建模块,然后在src下新建包名,最后见类(class) 设置主题 settings>apparence 设置字体 Editor> Font 设置注释 Editor>Color Scheme>Language Defaults>Comments 设置自动导包 …

2025年01月13日Github流行趋势

1. 项目名称:Jobs_Applier_AI_Agent 项目地址url:https://github.com/feder-cr/Jobs_Applier_AI_Agent项目语言:Python历史star数:25929今日star数:401项目维护者:surapuramakhil, feder-cr, cjbbb, sarob…

DHCP、MSTP+VRRP总结实验

R1即使服务器(给予dhcp的地址的) [LSW1]int Eth-Trunk 12 [LSW1-Eth-Trunk12]mode manual load-balance //配置链路聚合模式为手工负载分担模式 [LSW1-Eth-Trunk12]load-balance src-dst-mac //配置基于源目IP的负载分担模式[LSW1-Eth-Trunk12]trunk p…

【ArcGIS初学】产生随机点计算混淆矩阵

混淆矩阵:用于比较分类结果和地表真实信息 总体精度(overall accuracy) :指对角线上所有样本的像元数(正确分类的像元数)除以所有像元数。 生产者精度(producers accuracy) :某类中正确分类的像元数除以参考数据中该类的像元数(列方向),又称…

有一台服务器可以做哪些很酷的事情

有一台服务器可以做哪些很酷的事情 今天我也来简单分享一下,这几年来,我用云服务器做了哪些有趣的事情。 服务器推荐 1. 个人博客 拥有个人服务器,你可以完全掌控自己的网站或博客。 与使用第三方托管平台相比,你能自由选择网站…

科研绘图系列:R语言绘制Y轴截断分组柱状图(y-axis break bar plot)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍特点意义加载R包数据下载导入数据数据预处理画图输出总结系统信息介绍 Y轴截断分组柱状图是一种特殊的柱状图,其特点是Y轴的刻度被截断,即在某个范围内省略了部分刻度。这种图表…

pytest+request+yaml+allure搭建低编码调试门槛的接口自动化框架

接口自动化非常简单,大致分为以下几步: 准备入参调用接口拿到2中response,继续组装入参,调用下一个接口重复步骤3校验结果是否符合预期 一个优秀接口自动化框架的特点: 【编码门槛低】,又【能让新手学到…

三轴云台之RTSP流分辨率

三轴云台是一种能够在三个轴向上(通常是俯仰、偏航和滚动轴)准确、稳定地控制其负载(如相机、传感器等)位置和姿态的设备。而RTSP(Real Time Streaming Protocol)是一种网络控制协议,用于控制媒…

Facebook 隐私变革之路:回顾与展望

在数字时代,个人隐私的保护一直是社交平台面临的重大挑战之一。作为全球最大的社交网络平台,Facebook(现为Meta)在处理用户隐私方面的变革,历经了多次调整与完善。本文将回顾Facebook在隐私保护方面的历程,…

STM32 USB组合设备 MSC CDC

STM32 USB组合设备 MSC CDC实现 教程 教程请看大佬niu_88 手把手教你使用USB的CDCMSC复合设备(基于stm32f407) 大佬的教程很好,很详细,我调出来了,代码请见我绑定的资源 注意事项 值得注意的是: 1、 cu…

【C盘清理】C盘清理工具、Unity缓存文件转移

链接: https://pan.baidu.com/s/1yE_7qF741o4NmBIsrd3XzA?pwdbwnn CCleaner 用于清理磁盘垃圾 勾选你要分析的选项,点击分析,分析完毕后,点击清理。 主要别清错东西了。(可以不要勾选网络缓存、网络记录相关的选项&#xff0…

用户注册模块用户校验(头条项目-05)

1 用户注册后端逻辑 1.1 接收参数 username request.POST.get(username) password request.POST.get(password) phone request.POST.get(phone) 1.2 校验参数 前端校验过的后端也要校验,后端的校验和前端的校验是⼀致的 # 判断参数是否⻬全 # 判断⽤户名是否…

Sui Move:基本概览一

Module (模块) Move 代码被组织成模块, 可以把一个模块看成是区块链上的一个智能合约 可以通过调用这些模块中的函数来与模块进行交互,可以通过事务或其他 Move 代码来实现, 事务将被发送到并由Sui区块链进行处理,一旦执行完成,结果的更改将…

matlab的绘图的标题中(title)添加标量以及格式化输出

有时候我们需要在matlab绘制的图像的标题中添加一些变量,这样在修改某些参数后,标题会跟着一块儿变。可以采用如下的方法: x -10:0.1:10; %x轴的范围 mu 0; %均值 sigma 1; %标准差 y normpdf(x,mu,sigma); %使用normpdf函数生成高斯函数…