当前位置: 首页 > news >正文

[苍穹外卖] 1-项目介绍及环境搭建

项目介绍

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

功能架构:

管理端 - 外卖商家使用

用户端 - 点餐用户使用

技术栈:

开发环境的搭建

整体结构:

前端环境

前端工程基于 nginx 运行

 - Nginx目录必须放在没有中文的目录中才能正常运行!!!
 - 当前Nginx的配置文件中已经配置了反向代理,通过此配置可以将前端请求转发到后端服务

【Nginx】Nginx详解及应用指南-CSDN博客

Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3代理服务器。

反向代理:客户端只与代理服务器通信,代理服务器转发请求到多个后端服务器。常用于负载均衡和安全性增强。客户端和代理服务器的通信
正向代理:客户端通过代理服务器访问互联网,代理服务器代表客户端发起请求,常用于隐私保护和访问控制。代理服务器和互联网的通信

后端环境

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

超级详细的 Maven 教程(基础+高级)_maven教程-CSDN博客

Maven 是 Apache 软件基金会组织维护的一款专门为 Java 项目提供构建和依赖管理支持的工具。

一个 Maven 工程有约定的目录结构,约定的目录结构对于 Maven 实现自动化构建而言是必不可少的一环,就拿自动编译来说,Maven 必须 能找到 Java 源文件,下一步才能编译,而编译之后也必须有一个准确的位置保持编译得到的字节码文件。 我们在开发中如果需要让第三方工具或框架知道我们自己创建的资源在哪

项目结构

序号

名称

说明

1

sky-take-out

maven父工程,统一管理依赖版本,聚合其他子模块

2

sky-common

子模块,存放公共类,例如:工具类、常量类、异常类等

3

sky-pojo

子模块,存放实体类、VODTO

4

sky-server

子模块,后端服务,存放配置文件、ControllerServiceMapper

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

sky-pojo 子模块中存放的是一些 entity、DTO、VO

名称

说明

Entity

实体,通常和数据库中的表对应

DTO

数据传输对象,通常用于程序中各层之间传递数据

VO

视图对象,为前端展示数据提供的对象

POJO

普通Java对象,只有属性和对应的gettersetter

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

 使用Git进行版本控制 

[Git] Git下载及使用 从入门到精通 详解(附下载链接)_git从入门到精通pdf下载-CSDN博客

Git是一个分布式版本控制工具,主要用于管理开发过程中的源代码文件(java类、xml文件、html页面等) 

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

创建Git本地仓库

创建Git远程仓库

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

数据库环境搭建

前端发送的请求,是如何请求到后端服务的?

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

nginx 反向代理的好处:

提高访问速度

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

保证后端服务安全

nginx 反向代理的配置方式:

server{listen 80;server_name localhost;location /api/ {proxy_pass   http://localhost:8080/admin/;  #反向代理}}

nginx 负载均衡的配置方式:

upstream webservers{server 192.168.100.128:8080;server 192.168.100.129:8080;
}server{listen 80;server_name localhost;location /api/ {proxy_pass   http://webservers/admin/;  #负载均衡}}

nginx 负载均衡策略:

名称

说明

轮询

默认方式

weight

权重方式,默认为1,权重越高,被分配的客户端请求就越多

ip_hash

依据ip分配方式,这样每个访客可以固定访问一个后端服务

least_conn

依据最少连接方式,把请求优先分配给连接数少的后端服务

url_hash

依据url分配方式,这样相同的url会被分配到同一个后端服务

fair

依据响应时间方式,响应时间短的服务将会被优先分配

Swagger

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

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

Swagger-的使用(详细教程)_swagger使用-CSDN博客

使用方式

导入 knife4j 的maven坐标

在配置类中加入 knife4j 相关配置

设置静态资源映射,否则接口文档页面无法访问

依赖:

<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.2</version>
</dependency>

WebMvcConfiguration 

/*** 设置静态资源映射* @param registry*/
protected void addResourceHandlers(ResourceHandlerRegistry registry) {log.info(“开始设置静态资源映射...");registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
@Bean
public Docket docket(){ApiInfo apiInfo = new ApiInfoBuilder().title(“苍穹外卖项目接口文档”).version(“2.0”).description(“苍穹外卖项目接口文档").build();Docket docket = new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo).select()//指定生成接口需要扫描的包.apis(RequestHandlerSelectors.basePackage("com.sky.controller")).paths(PathSelectors.any()).build();return docket;
}

接口文档访问路径为 http://ip:port/doc.html

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

1、Yapi 是设计阶段使用的工具,管理和维护接口

2、Swagger 在开发阶段使用的框架,帮助后端开发人员做后端的接口测试

Swagger常用注解

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

注解

说明

@Api

用在类上,例如Controller,表示对类的说明

@ApiModel

用在类上,例如entityDTOVO

@ApiModelProperty

用在属性上,描述属性信息

@ApiOperation

用在方法上,例如Controller的方法,说明方法的用途、作用

相关文章:

[苍穹外卖] 1-项目介绍及环境搭建

项目介绍 定位&#xff1a;专门为餐饮企业&#xff08;餐厅、饭店&#xff09;定制的一款软件产品 功能架构&#xff1a; 管理端 - 外卖商家使用 用户端 - 点餐用户使用 技术栈&#xff1a; 开发环境的搭建 整体结构&#xff1a; 前端环境 前端工程基于 nginx 运行 - Ngi…...

人物一致性训练测评数据集

1.Pulid 训练:由1.5M张从互联网收集的高质量人类图像组成,图像标题由blip2自动生成。 测试:从互联网上收集了一个多样化的肖像测试集,该数据集涵盖了多种肤色、年龄和性别,共计120张图像,我们称之为DivID-120,作为补充资源,还使用了最近开源的测试集Unsplash-50,包含…...

AI的出现,是否能替代IT从业者?

AI的出现&#xff0c;是否能替代IT从业者&#xff1f; AI在IT领域中的应用已成趋势&#xff0c;IT 从业者们站在这风暴之眼&#xff0c;面临着一个尖锐问题&#xff1a;AI 是否会成为 “职业终结者”&#xff1f;有人担忧 AI 将取代 IT 行业的大部分工作&#xff0c;也有人坚信…...

乘联会:1月汽车零售预计175万辆 环比暴跌33.6%

快科技1月18日消息&#xff0c;据乘联会的初步推算&#xff0c;2025年1月狭义乘用车零售总市场规模预计将达到约175万辆左右。与去年同期相比&#xff0c;这一数据呈现了-14.6%的同比下降态势&#xff1b;而相较于上个月&#xff0c;则出现了-33.6%的环比暴跌情况。 为了更清晰…...

LLM - 大模型 ScallingLaws 的 CLM 和 MLM 中不同系数(PLM) 教程(2)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/145188660 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 Scalin…...

开发神器之cursor

文章目录 cursor简介主要特点 下载cursor页面的简单介绍切换大模型指定ai学习的文件指定特定的代码喂给ai创建项目框架文件 cursor简介 Cursor 是一款专为开发者设计的智能代码编辑器&#xff0c;集成了先进的 AI 技术&#xff0c;旨在提升编程效率。以下是其主要特点和功能&a…...

使用 Ansys Motor-CAD 的自适应模板加速创新

应对现代电机设计挑战 电机设计不断发展&#xff0c;Ansys 正在通过创新解决方案引领潮流&#xff0c;不断突破可能的界限。随着电动汽车、工业自动化和可再生能源系统的快速增长&#xff0c;对优化电机的需求从未如此之高。工程师面临着越来越大的压力&#xff0c;他们需要开发…...

RabbitMQ前置概念

文章目录 1.AMQP协议是什么&#xff1f;2.rabbitmq端口介绍3.消息队列的作用和使用场景4.rabbitmq工作原理5.整体架构核心概念6.使用7.消费者消息推送限制&#xff08;work模型&#xff09;8.fanout交换机9.Direct交换机10.Topic交换机&#xff08;推荐&#xff09;11.声明队列…...

http转化为https生成自签名证书

背景 项目开发阶段前后交互采用http协议&#xff0c;演示环境采用htttps协议 &#xff0c;此处为个人demo案例 组件 后端&#xff1a;springBoot 前端&#xff1a;vue web 服务&#xff1a;tomcat 部署环境&#xff1a;linux 生成自签名证书 创建目录 存储证书位置 # mkdir -p…...

《贪心算法:原理剖析与典型例题精解》

必刷的贪心算法典型例题&#xff01; 算法竞赛&#xff08;蓝桥杯&#xff09;贪心算法1——数塔问题-CSDN博客 算法竞赛&#xff08;蓝桥杯&#xff09;贪心算法2——需要安排几位师傅加工零件-CSDN博客 算法&#xff08;蓝桥杯&#xff09;贪心算法3——二维数组排序与贪心算…...

【网络协议】【http】【https】RSA+AES-TLS1.2

【网络协议】【http】【https】RSAAES-TLS1.2 https并不是一个协议 而是在传输层之间添加了SSL/TLS协议 TLS 协议用于应用层协议&#xff08;如 HTTP&#xff09;和传输层&#xff08;如 TCP&#xff09;之间&#xff0c;增加了一层安全性来解决 HTTP 存在的问题&#xff0c;H…...

【数据库】MySQL数据库之约束与多表查询

约束 1.概述 概念&#xff1a;约束是作用于表中字段上的规则&#xff0c;用于限制存储在表中的数据目的&#xff1a;保证数据库中数据的正确性、有效性&#xff0c;完整性和一致性分类&#xff1a; 注意&#xff1a;约束是作用于表中字段上的&#xff0c;可以在创建表/修改表…...

【Pandas】pandas Series dot

Pandas2.2 Series Binary operator functions 方法描述Series.add()用于对两个 Series 进行逐元素加法运算Series.sub()用于对两个 Series 进行逐元素减法运算Series.mul()用于对两个 Series 进行逐元素乘法运算Series.div()用于对两个 Series 进行逐元素除法运算Series.true…...

02UML图(D2_行为图)

目录 学习前言 ---------------------------------- 讲解一&#xff1a;活动图 ---------------------------------- 讲解二&#xff1a;用例图 ---------------------------------- 讲解三&#xff1a;状态机图 ---------------------------------- 讲解四&#xff1a…...

Kali环境变量技巧(The Environment Variable Technique Used by Kali

Kali环境变量技巧 朋友们好&#xff0c;我们今天继续更新《黑客视角下的Kali Linux的基础与网络管理》中的管理用户环境变量。为了充分利用我们的黑客操作系统Kali Linux&#xff0c;我们需要理解和善于使用环境变量&#xff0c;这样会使我们的工具更具便利&#xff0c;甚至具…...

【C++】如何从源代码编译红色警戒2地图编辑器

【C】如何从源代码编译红色警戒2地图编辑器 操作视频视频中的代码不需要下载三方库&#xff0c;已经包含三方库。 一、运行效果&#xff1a;二、源代码来源及编程语言&#xff1a;三、环境搭建&#xff1a;安装红警2安装VS2022下载代码&#xff0c;源代码其实不太多&#xff0c…...

安路FPGA开发工具TD:问题解决办法 及 Tips 总结

安路科技&#xff08;Anlogic&#xff09;是一家专注于高性能、低功耗可编程逻辑器件&#xff08;FPGA&#xff09;设计和生产的公司。其提供的开发工具TD&#xff08;TangDynasty&#xff09;是专门为安路FPGA系列产品设计的集成开发环境&#xff08;IDE&#xff09;。以下是对…...

【Django开发】django美多商城项目完整开发4.0第12篇:商品部分,表结构【附代码文档】

本教程的知识点为&#xff1a; 项目准备 项目准备 配置 1. 修改settings/dev.py 文件中的路径信息 2. INSTALLED_APPS 3. 数据库 用户部分 图片 1. 后端接口设计&#xff1a; 视图原型 2. 具体视图实现 用户部分 使用Celery完成发送 判断帐号是否存在 1. 判断用户名是否存在 后…...

IDEA2023版中TODO的使用

介绍&#xff1a;TODO其实本质上还是注释&#xff0c;只不过加上了TODO这几个字符&#xff0c;可以让使用者快速找到。 注意&#xff1a;在类、接口等文件中&#xff0c;注释是使用// 即&#xff1a;// TODO 注释内容 在配置文件中&#xff0c;注释是使用# 即&#xff1a;# TO…...

windows 搭建flutter环境,开发windows程序

环境安装配置&#xff1a; 下载flutter sdk https://docs.flutter.dev/get-started/install/windows 下载到本地后&#xff0c;随便找个地方解压&#xff0c;然后配置下系统环境变量 编译windows程序本地需要安装vs2019或更新的开发环境 主要就这2步安装后就可以了&#xff0…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...