day01:项目概述,环境搭建

news2024/11/16 3:34:08

文章目录

  • 软件开发整体介绍
    • 软件开发流程
    • 角色分工
    • 软件环境
  • 外卖平台项目介绍
    • 项目介绍
      • 定位
      • 功能架构
    • 产品原型
    • 技术选型
  • 开发环境搭建
    • 整体结构:前后端分离开发
      • 前后端混合开发缺点
      • 前后端分离开发
    • 前端环境搭建
      • Nginx
    • 后端环境搭建
      • 熟悉项目结构
      • 使用Git进行版本控制
      • 数据库环境搭建
    • 登录功能
      • 分析代码特点
      • Nginx反向代理和负载均衡
      • 会话跟踪技术方案
      • JWT介绍
      • JWT生成测试
      • JWT校验测试
      • 应用jwt令牌登录和校验
      • 密码加密
  • 导入接口文档
    • 前后端开发流程
    • 操作步骤
  • Swagger
    • 介绍
    • 使用方式
    • 常用注解

软件开发整体介绍

软件开发流程

  • 需求分析:需求规格说明书、产品原型
  • 设计:UI设计、数据库设计、接口设计
  • 编码:项目代码、单元测试
  • 测试:测试用例、测试报告
  • 上线运维:软件环境安装、配置

角色分工

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

软件环境

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

外卖平台项目介绍

项目介绍

定位

专门为餐饮企业(餐厅、饭店)定制的一款软件产品
管理端–外卖商家使用
用户端–点餐用户使用

功能架构

体现项目中的业务功能模块
image.png

产品原型

用于展示项目的业务功能,一般由产品经理进行设计
管理端
image.png
用户端
image.png

技术选型

展示项目中使用到的技术框架和中间件等
image.png

开发环境搭建

整体结构:前后端分离开发

image.png

前后端混合开发缺点

  1. 沟通成本高
  2. 分工不明确
  3. 不便管理
  4. 不便维护扩展

前后端分离开发

当前最为主流的开发模式:前后端开发 分开部署运行
image.png
特点:解耦,便于管理、维护和扩展

前端环境搭建

前端工程基于Nginx运行

Nginx

介绍:Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。
特点:占有内存少,并发能力强,在各大型互联网公司都有非常广泛的使用
官网:https://nginx.org/
image.png
启动Nginx:双击nginx.exe即可启动nginx服务,访问端口号为80
注意事项

  • Nginx默认占用80端口号,如果80端口号被占用,可以在nginx.conf中修改默认端口号(netstat -ano | findStr 80)
  • 修改了nginx.conf配置文件,需要重启nginx服务器(关闭然后再开,可以通过kill nginx.bat结束nginx,然后再次双击nginx.exe)

后端环境搭建

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

熟悉项目结构

image.png

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

image.png

  1. sky-pojo子模块中存放的是一些entity、dto、vo

4.png
pojo:plain old java object

  1. sky-server子模块中存放的是 配置文件、配置类、拦截器、controller、service、mapper、启动类等

image.png

使用Git进行版本控制

  • 创建Git本地仓库
  • 创建Git远程仓库
  • 将本地文件推送到Git远程仓库

数据库环境搭建

通过数据库建表语句创建数据库表结构
image.png

登录功能

分析代码特点

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

  1. @Builder注解的作用

lombok提供的注解,给类提供了builder()链式构建对象方式
EmployeeVO.builder().id(employee.getId()).build();

  1. @Slf4j注解的作用

lombok提供的注解,用于输出日志,打印信息完整,包含时间、所在类完整名等
log.info(“输出info日志”);
log.error(“输出error错误日志”);

  1. 使用的是什么会话技术

session

Nginx反向代理和负载均衡

image.png
Nginx反向代理:就是将前端发送的动态请求由nginx转发到后端服务器
image.png
反向代理的好处

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

所谓负载均衡,就是把大量的请求按照我们指定的方式均衡的分配给集群中的每台服务器
nginx反向代理的配置方式
image.png
nginx负载均衡的配置方式
image.png
nginx负载均衡策略
image.png
默认是轮询方式;使用weight方式,需要在每个server 192.168.100.***:8080 加上weight = 数字;使用剩下4个策略,需要在server上面加载ip_hash;即可

会话跟踪技术方案

image.png
跨域:跨域区分三个维度:协议、IP/域名、端口

JWT介绍

全称:JSON Web Token
官网https://jwt.io/
介绍:定义了一种简洁的、自包含的格式,用于在通信双方以json数据格式安全的传输信息。由于数字签名的存在,这些信息是可靠的
组成

  • 第一部分:Header(头),记录令牌类型、签名算法等
  • 第二部分:Payload(有效载荷),携带一些自定义信息、默认信息等
  • 第三部分:Signature(签名),放置Token被篡改,确保安全性。将header、payload,并加入指定密钥,通过指定签名算法计算而来

image.png
场景登录验证

  1. 登录成功后,生成令牌,并返回给前端
  2. 后续每个请求,都要携带JWT令牌,系统在每次请求处理之前,先校验令牌,通过后,再处理

image.png

JWT生成测试

image.png

JWT校验测试

image.png
注意事项

  • jwt校验时使用的签名密钥,必须和生成jwt令牌时使用的密钥是配套的
  • 如果jwt令牌解析校验时报错,则说明jwt令牌被篡改失效了,令牌非法

应用jwt令牌登录和校验

生成jwt
image.png
校验jwt
image.png

密码加密

问题:员工表中的密码是明文存储,安全性太低
方法:使用MD5加密方式对明文密码加密
image.png

导入接口文档

前后端开发流程

image.png

操作步骤

使用YApi

Swagger

介绍

使用Swagger你只需要按照它的规范去定义接口及接口相关信息,就可以做到生成接口文档,以及在线接口调试页面
官网:https://swagger.io/
Knife4是为Java MVC框架集成Swagger生成Api文档的增强解决方案

使用方式

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

image.png
image.pngimage.png
接口文档访问路径为localhost:8080/doc.html
问题:通过Swagger就可以生成接口文档,那么就不需要YApi了?

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

常用注解

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

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

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

相关文章

Day06-01-lvs

Day06-01-lvs 0. 核心内容1.负载均衡项目 选择故障: 2.lvs 预备姿势-arp3.lvs 概述4. lvs工作模式4.1 预备姿势4.2 lvs-dr模式4.3 lvs-nat模式4.4 小结 5. lvs-dr模式5.1 环境准备5.2 lvs-dr模式配置流程1) lvs服务端配置2) web服务器 RS服务端配置3) 小结4) 调试 5.3 抓包查看…

电脑清理软件用哪个好?这款工具有些饱受争议

电脑清理软件用哪个好?电脑作为我们工作和娱乐的重要工具,其运行速度和安全性直接影响着我们的生活质量。然而,随着时间的推移,电脑系统会积累大量垃圾文件、注册表错误、恶意软件等,导致电脑运行缓慢甚至崩溃。 这时&#xff0c…

el-tree 获取当前勾选节点的选中状态以及选中值对象 触发check-change多次事件问题原因

1.需求 现在需要一个树状结构的资产树 但是现在需求是 获取当前选中的值的状态是选中还是取消选中 然后再用当前选中 or 取消选中的值 进行 选中 or 取消选中的操作 一开始使用的是 check-change 方法 接收参数如图 但是我勾选父节点 或者 子节点后 他会打印一堆数据 是因…

基于Java+SpringMvc+Vue技术的智慧校园系统设计与实现

博主介绍:硕士研究生,专注于信息化技术领域开发与管理,会使用java、标准c/c等开发语言,以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年,拥有近12年的管理工作经验,拥有较丰富的技术架…

昇思25天学习打卡营第11天 | LLM原理和实践:基于MindSpore实现BERT对话情绪识别

1. 基于MindSpore实现BERT对话情绪识别 1.1 环境配置 # 实验环境已经预装了mindspore2.2.14,如需更换mindspore版本,可更改下面mindspore的版本号 !pip uninstall mindspore -y !pip install -i https://pypi.mirrors.ustc.edu.cn/simple mindspore2.2…

geospy.AI 根据图片定位地理位置

文章目录 简介场景标志性建筑平凡的商店名标志性的物品标志性的地理位置标志性的街道难以分辨的古建筑不出名的山水 简介 GeoSpy.ai 作为一个地理空间情报平台,可以在以下场景中使用: 农业:监控农作物生长情况,预测产量&#xf…

课设:二手车交易管理系统(Java+MySQL)

简易数据库课程设计~分享 技术栈 本项目使用以下技术栈构建: Java: 作为主要编程语言,负责业务逻辑的实现。MySQL: 用于数据存储,管理用户、车辆和订单信息。JDBC: 用于Java与MySQL数据库之间的连接和操作。Swing GUI: 提供用户图形界面&am…

数据库课设---酒店管理系统(MySQL、VBNet)

目录 一. 知识技术 二. 需求分析 2.1 功能需求 2.2 数据需求 三. 数据流图与数据字典 3.1 数据流图 3.1.1 业务流图 3.1.2 数据流图 3.1.3 关系图 3.2 数据字典 四. 数据库设计 4.1 概念模型设计 4.2 逻辑模型设计 4.3 数据库实现 …

【LSB图像低位隐写】字符串隐写

按照自己的理解写了一个简单的字符串隐藏在图像中的python代码 前言 脱胎于内容安全的大作业~ 目前第一阶段,只完成了字符串隐藏在图像中 步过图像隐藏在图像应该异曲同工,之后实现~ 一、代码 图像的output路径和input路径写死了,这个需要…

【SpringBoot】IDEA查看spring bean的依赖关系

前因:研究springcloud config组件时,我发现config-server包下的EnvironmentController不在扫描的包路径下却可以响应客户端的请求,这引起了我的注意,我的问题是:EnvironmentController是怎么被添加进bean工厂的。本章就…

联系表单提交Contact Form自动发送邮件源码

联系表单Contact Form提交后自动发送邮件源码构建指南? 无论是商业网站、博客还是个人主页,几乎每个网站都会有一个联系表单,用于收集用户的反馈、询问或建议。AokSend将探讨联系表单在网站中的重要性,以及如何通过源码实现自动发…

新加坡工作和生活指北:工作篇

文章首发于公众号:Keegan小钢 一年多以前(2022 年 8 月初),那时我过来新加坡才 4 个多月,就写了篇文章分享了当时在新加坡的生活和工作体验。文章得到的反响不错,但也反馈出了一些新的问题,比如…

【数据结构】栈的实现(含详细代码)

文章目录 1.栈1.1 栈的概念及结构1.2 栈的实现1.3 代码实现 1.栈 1.1 栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守先进后…

如何监控和优化 PostgreSQL 中的连接池使用?

文章目录 一、连接池的基本概念二、监控 PostgreSQL 连接池使用的重要性(一)性能优化(二)资源管理(三)故障排查 三、PostgreSQL 连接池监控指标(一)活跃连接数(二&#x…

下一代 CSS 框架:Mojo CSS

前言 Tailwind CSS 推出即受到广大开发者的欢迎,当前 Github star 数已达 77.8k。它是一个功能类优先(utility-first)的 CSS 框架,它提供了一系列功能类,让开发者可以在 HTML 中通过组合这些功能类(原子类…

阶段三:项目开发---大数据开发运行环境搭建:任务3:安装配置Hadoop集群

任务描述 知识点:安装配置Hadoop 重 点: 安装配置Hadoop 难 点:无 内 容: Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威…

Flink 提交作业的方式

参考: Flink运行方式及对比-腾讯云开发者社区-腾讯云

前端程序员如何转大模型?收藏这一篇就够了(非常详细)

最近各行各业都不容易啊,那个中金女员工跳楼事件频繁上热点,引起广泛的关注,本质上还是经济下行,我们互联网行业也是如此,特别是程序员,本来就有35岁危机,加上行业不景气,大厂都在裁…

C语言中的数组:掌握数据的有序集合【一维数组,二维数组,字符串数组,直方图打印,计算全排列,字符数组常用函数】

目录 C语言中的数组:掌握数据的有序集合【一维数组,二维数组,字符串数组】一维数组一维数组的创建数组的七种初始化完全初始化:部分初始化:字符数组的初始化:自动初始化为0:使用memset函数初始化…

C语言求10进制转2进制(除2取余法)

1.思路:除2取余法,也就是说用除以2取余来将10进制数转换为二进制 2.两种代码实现,这里用了两,一个递归一个非递归。 递归是一种编程技术,其中一个函数直接或间接地调用自己。递归通常用于解决那些可以被分解为更小的、…