day01:项目概述,环境搭建

文章目录

  • 软件开发整体介绍
    • 软件开发流程
    • 角色分工
    • 软件环境
  • 外卖平台项目介绍
    • 项目介绍
      • 定位
      • 功能架构
    • 产品原型
    • 技术选型
  • 开发环境搭建
    • 整体结构:前后端分离开发
      • 前后端混合开发缺点
      • 前后端分离开发
    • 前端环境搭建
      • 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.xdnf.cn/news/1474630.html

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

相关文章

记录问题:解决vscode找不到Python自定义模块,报错No module named ‘xxx‘

1. 背景 我非要用vscode,不用pycharm,哼! 2. 问题 由于 import xx 自定义的模块, python run 的时候会报错 No module named ‘xxx‘ 报错信息: Traceback (most recent call last):File "d:\work\sf_financ…

90元搭建渗透/攻防利器盒子!【硬件篇】

前言 以下内容请自行思考后进行实践。 使用场景 在某些情况下开软件进行IP代理很麻烦,并不能实现真正全局,而且还老容易忘记,那么为了在实景工作中,防止蓝队猴子封IP,此文正现。 正文 先说一下实验效果&#xff1…

【JavaEE】多线程进阶

🤡🤡🤡个人主页🤡🤡🤡 🤡🤡🤡JavaEE专栏🤡🤡🤡 文章目录 1.锁策略1.1悲观锁和乐观锁1.2重量级锁和轻量级锁1.3自旋锁和挂起等待锁1.4可…

【讲解下iOS语言基础】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

昇思25天学习打卡营第14天|Pix2Pix实现图像转换

Pix2Pix是基于条件生成对抗网络(cGAN, Condition Generative Adversarial Networks )实现的一种深度学习图像转换模型,该模型是由Phillip Isola等作者在2017年CVPR上提出的,可以实现语义/标签到真实图片、灰度图到彩色图、航空图到…

git简介以及git操作软件下载以及安装教程,git基础指令介绍,持续更新中~

什么是Git? 最近在学一些git的基础指令,仔细地了解了一下git,发现了他的强大功能,分享一下: Git是一个强大的工具,它在软件开发中扮演着至关重要的角色。 Git是一个开源的分布式版本控制系统,…

使用RAID与LVM磁盘阵列技术

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 目录 一、RAID磁盘冗余阵列 1、部署磁盘整列 2、损坏磁盘阵列及修复 3、磁盘阵列备份盘 4、删除磁盘阵列 二、LVM逻辑卷管理器 致谢 一、RAID…

1958.力扣每日一题7/7 Java(100%解)

博客主页:音符犹如代码系列专栏:算法练习关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 目录 思路 解题方法 时间复杂度 空间复杂度 Code 思路 首先将指定位…

反编译kasada

继续研究反编译 这次的网站是 一个航司网站 他有 akamai和 kasada 两种防护 akamai 没啥好说的 结构分析 最开始有个长字符串 处理成 一个十几万的数组 通过 r.W[0] 走什么分支 还有数据的存取 M是一个98个函数组成的数组 代表不同的执行逻辑 这里给他转成了 switch case…

Python3极简教程(一小时学完)中

异常 在这个实验我们学习 Python 的异常以及如何在你的代码中处理它们。 知识点 NameErrorTypeError异常处理(try..except)异常抛出(raise)finally 子句 异常 在程序执行过程中发生的任何错误都是异常。每个异常显示一些相关…

【持续集成_03课_Jenkins生成Allure报告及Sonar静态扫描】

1、 一、构建之后的配置 1、安装allure插件 安装好之后,可以在这里搜到已经安装的 2、配置allure的allure-commandline 正常配置,是要么在工具里配置,要么在系统里配置 allure-commandline是在工具里进行配置 两种方式进行配置 1&#xff…

动手RAG: ocr调研

对于rag应用来说,文档是第一步,对于部分扫描件的文件来讲,主要就需要OCR. OCR tesseractppocrmmocr 还有诸如 chineseocr_litedarknet-ocrhttps://blog.csdn.net/CHYabc123456hh/article/details/107846268easyocr OCR包含几类&#x…

【Unity小技巧】Unity字典序列化

字典序列化 在 Unity 中&#xff0c;标准的 C# 字典&#xff08;Dictionary<TKey, TValue>&#xff09;是不能直接序列化的&#xff0c;因为 Unity 的序列化系统不支持非 Unity 序列化的集合类型。可以通过手写字典实现 效果&#xff1a; 实现步骤&#xff1a; 继承ISe…

基于AOP的数据字典实现:实现前端下拉框的可配置更新

作者&#xff1a;后端小肥肠 创作不易&#xff0c;未经允许严禁转载。 目录 1. 前言 2. 数据字典 2.1. 数据字典简介 2.2. 数据字典如何管理各模块的下拉框 3. 数据字典核心内容解读 3.1. 表结构 3.2. 核心代码 3.2.1. 根据实体类名称获取下属数据字典 3.2.2. 数据字…

HackTheBox----Editorial

Editorial 测试过程 1 信息收集 NMAP端口扫描 nmap -sC -sV 10.10.11.20服务器开启了 22、80 端口 80 端口测试 服务器只开启了 22 和 80 端口&#xff0c;先从 80 端口开始进行测试 echo "10.10.11.20 editorial.htb" | sudo tee -a /etc/hostspublish with us…

电源纹波相关

什么是纹波&#xff1f;什么是噪声&#xff1f; 这种叠加在直流稳定量上的交流分量就称为纹波。 纹波的危害 电源纹波能影响设备性能和稳定性 纹波会导致电器上产生谐波&#xff0c;降低电源的使用效率&#xff1b; 高频电源纹波可能会产生浪涌电压或电流&#xff0c;影响设…

WAWA鱼曲折的大学四年回忆录

声明&#xff1a;本文内容纯属个人主观臆断&#xff0c;如与事实不符&#xff0c;请参考事实 前言&#xff1a; 早想写一下大学四年的总结了&#xff0c;但总是感觉无从下手&#xff0c;不知道从哪里开始写&#xff0c;通过这篇文章主要想做一个记录&#xff0c;并从现在的认…

thingsboard v3.7 win编译相关问题记录

遇到的问题总结 node\yarn 相关版本问题 3.7 开始需要 JDK17 ui-ngx 模块 yarn 相关问题报错 报错信息 [INFO] Downloading https://github.com/yarnpkg/yarn/releases/download/v1.22.10/yarn-v1.22.10.tar.gz to D:\soft\maven\com\github\eirslett\yarn\1.22.10\yarn-1.2…

STM32基础篇:GPIO

GPIO简介 GPIO&#xff1a;即General Purpose Input/Output&#xff0c;通用目的输入/输出。就是一种片上外设&#xff08;内部模块&#xff09;。 对于STM32的芯片来说&#xff0c;周围有一圈引脚&#xff0c;有时需要对引脚进行读写&#xff08;读&#xff1a;从外部输入一…

SLF4J的介绍与使用(有logback和log4j2的具体实现案例)

目录 1.日志门面的介绍 常见的日志门面 &#xff1a; 常见的日志实现&#xff1a; 日志门面和日志实现的关系&#xff1a; 2.SLF4J 的介绍 业务场景&#xff08;问题&#xff09;&#xff1a; SLF4J的作用 SLF4J 的基本介绍 日志框架的绑定&#xff08;重点&#xff09…