黑马程序员2023最新Java项目实战《苍穹外卖》--完结随笔

💡

ps以下是一些碎碎念:终于把苍穹外卖给敲完啦!前后历时了一个月。比预计中的拖拉了许多,当然也是因为中途有一些事情,导致没有每天能在线。所以这篇就来做个随笔笔记吧!本人菜鸟,轻喷哈哈!

概念明晰

1、角色分工

刚开始当然是得明确一下团队分工的职责(虽然只有一个人),但是假想是一个团队还是很必要的🤓 以下是一些常见的角色分工。

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

而一个项目的开发过程又大致包含如下阶段:

2、开发环境

  • 开发环境(development):开发人员在开发阶段使用的环境,一般外部用户无法访问。即我们平常在电脑开发,使用mysql、Idea等软件开发的环境。
  • 测试环境(testing):专门给测试人员使用的环境,用于测试项目,一般外部用户无法访问
  • 生产环境(production):即线上环境,正式提供对外服务的环境

苍穹外卖

👋

终于进入正题了!我们来看看逐一苍穹外卖的各个方面。

介绍:

其是专门为餐饮企业(餐厅、饭店)定制的一款软件产品,旨在为餐厅的商家接单、派送等的管理、用户的下单功能进行服务。

管理端 - 外卖商家使用

用户端 - 点餐用户使用

在技术选型方面:

在技术方面,几乎把之前学的的技术都用上了。而且各个结构也非常清楚,让人一目了然。

前后端开发的准备工作

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

既然是前后端开发,那肯定得有接口文档。而前后端开发我们这里用到了YApi来对要开发的接口进行管理和查看接口开发的规范

YApi:YApi Pro-高效、易用、功能强大的可视化接口管理平台

开发后
  1. Swagger在开发阶段使用的框架,帮助后端开发人员做后端的接口测试。用Swagger来生成接口文档,而且其还可以对开发好的接口进行测试。

注意:由于开发阶段前端和后端是并行开发的,后端完成某个功能后,此时前端对应的功能可能还没有开发完成,导致无法进行前后端联调测试。所以在开发阶段,后端测试主要以接口文档测试为主。

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

后端环境搭建:

后端的开发基于 maven 进行项目构建,并且进行分模块开发,进行了代码的解耦。

使用Git进行版本控制

每一次的业务功能的开发,我们都提交到Git上面去,这使得我们在开发过程中更容易对开发进度可见,在出现问题时,也可以很方便的回溯到上一次的提交。强烈推荐养成使用Git进行版本控制的习惯。

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

•创建Git本地仓库

•创建Git远程仓库

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

数据库环境搭建

传统的数据存储,我们使用MySQL来进行存储。通过建表语句,把数据存储到其中。

但是传统数据库的存储模式,这就使得我们需要数据时就得去数据库中不断的读取数据。而我们很多时候需要读取的数据都是重复的,所以引进了redis,其相当于我们电脑的内存,在我们读取数据时先去redis里面逛一圈,看看有没有我们需要的数据,有就在其中读取,无则去MySQL中读取。这样一来就大大的减少了我们读取数据时耗费的时间,加快了我们的响应速度。

前后端联调

在我们初步开完 发一个接口后,我们就需要进行前后端联调来验证我们开发的接口是否正确。而在这个过程,我们不得不来思考一个问题:前端发送的请求,是如何请求到后端服务的?

到这里我们就得请出nginx来作为中间的桥梁了:

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

nginx 反向代理的好处:

提高访问速度

进行负载均衡

保证后端服务安全

技术要点

MD5

密码加密存储:

直接将登录密码存储到数据库中?不!安全性太低了。我们来使用MD5来对密码进行加密,这样就算被别有用心的人获得了我们的管理员账号意图来获得用户密码,也增加了难度。提高安全性。

### 黑马苍穹外卖 IT项目的源码、开发文档及运维部署 #### 源码结构与模块划分 黑马苍穹外卖作为一个完整的Web应用,其源码涵盖了从前端页面设计到后端服务接口实现等多个方面。为了便于管理和维护,项目通常按照功能模块进行划分,比如用户管理、订单处理、商品展示等。每个模块都有独立的代码文件夹,并遵循统一的技术栈标准[^1]。 ```java // 示例:Spring Boot控制器类定义 @RestController @RequestMapping("/orders") public class OrderController { @Autowired private IOrderService orderService; @GetMapping("/{id}") public ResponseEntity<Order> getOrderById(@PathVariable Long id){ Optional<Order> result = orderService.findById(id); return result.map(ResponseEntity::ok).orElseGet(() -> ResponseEntity.notFound().build()); } } ``` #### 开发文档概览 针对该项目,详细的开发指南被记录下来以便团队成员之间交流以及后续迭代升级之需。这些资料不仅包含了如何设置本地开发环境的具体步骤,还包括了API说明、数据库表结构描述等内容。特别是对于初学者来说,在开始编码之前阅读这部分内容是非常有帮助的[^2]。 - **技术选型**:选择了适合微服务架构下的主流框架和技术组件; - **Maven依赖配置**:引入了一些第三方库来增强应用程序的功能特性,例如用于生成API文档插件`knife4j-spring-boot-starter`版本号为3.0.2; ```xml <dependencies> <!-- Knife4J Swagger UI --> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>3.0.2</version> </dependency> </dependencies> ``` #### 运维部署方案 当整个系统的构建完成后,将其打包并通过容器化工具如Docker发布至云端实例成为了一种高效的方式。这样做不仅可以简化日常操作流程,而且能够确保不同环境中的一致性和稳定性。具体而言,就是先创建好镜像再上传至仓库最后拉取运行于目标机器之上。 ```bash # 构建并推送 Docker 镜像 docker build -t chengqiumw . docker tag chengqiumw registry.cn-hangzhou.aliyuncs.com/your-repo/chengqiumw:latest docker push registry.cn-hangzhou.aliyuncs.com/your-repo/chengqiumw:latest ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值