【苍穹外卖 | 项目日记】第八天

news2024/11/19 2:38:16

前言:

        昨天晚上跑完步回来宿舍都快停电了,就没写项目日记,今天补上

目录

前言:

今日完结任务:

今日收获:

引入百度地图接口:

引入spring task ,定时处理异常订单:

引入websocket实现用户端催单和商家端的来单提醒:

杂项知识点:

总结:


今日完结任务:

  • 对用户订单进行优化,引入了百度地图接口,增加了配送范围的判断
  • 引入了spring task ,定时处理异常订单(异常未付款和异常未派送)
  • 引入了websocket,实现了用户端的催单功能和商家端的来单提醒功能

今日收获:

引入百度地图接口:

这个功能的思想很简单,就是提前存储商家位置,百度地图接口会根据该地址得到准确的经纬度,之后在用户点单的时候,再得到用户提供地址的经纬度,进行计算,判断距离是否超过限定值,如果超过则在后端抛出地址异常。这个唯一的缺点就是前端并没有给出相对应接收后端消息的代码,因此异常只会在后端被抛出,前端会卡顿

引入spring task ,定时处理异常订单:

这个功能确实很实用和常见,我们在日常生活中也经常遇见:CSDN的每周小结。这就是通过定时任务做的,而这个依赖很小,小到连自己的实体都没有,它属于是spring context中的一个附属依赖 

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>版本号</version>
</dependency>

而设置定时任务的基本代码设计很简单

设置定时

----------------------------------------------------

代码体

我们使用@Scheduled来设置定时,在括号里我们采用的是cron表达式,他从左到右分别为:秒 分 时 天 周 月 

而我们也不需要独立掌握cron表达式的书写,这种东西网上一大堆的转换器,这里我随便贴一个

在线Cron表达式生成器 (qqe2.com)

引入定时任务使得我们后端可以自动对异常订单进行处理,简化了我们的操作。但是需要注意定时任务虽然很好用,但是在设置定时的时候,还是不要太频繁,因为我们这里的定时任务中包括了对数据库的查询,就好比我贴出来的代码,他对用户超过15分钟的未付款超时订单进行处理,如果我们设置一秒一次,虽然可以,但是大量查询数据库会造成性能问题,因此定时任务的核心在于:如何高效率的设置任务

此外使用定时任务还需要在代码入口使用@EnableScheduling来开启spring task

引入websocket实现用户端催单和商家端的来单提醒:

websocket本质上和我们之前介绍的http一样,本质上还是一种通信协议,他和http的区别主要在于:websocket使得服务端有了能力向客户端推送数据。在我们http协议中,采用的是请求-响应的模式。

HTTP介绍:一文了解什么是HTTP_我是一盘牛肉的博客-CSDN博客

关于websocket的详细介绍我们放到杂项知识点中,现在我们先只谈它在本项目中的使用

应用场景为:当用户端下单之后,服务端需要接收消息返回给商家端,当用户催单的时候,也是如此

这里的核心问题就在于:如何使得服务端可以返回消息给前端。

其实我们可以发现:像这种后端发送数据的技术,我们之前还学过HttpCline这项技术

HttpClient广泛用于客户端与服务器之间的请求-响应通信,通常使用在HTTP API的调用、数据获取等场景。WebSocket适用于实时应用程序,如聊天应用、实时数据监控、多人协同编辑等场景,它可以实现实时双向通信。

并且httpCline是无状态协议,如果使用它来向前端返送数据,就要不断的连接-断开-连接。而websocket是长连接,这样就大大提高了效率。

这里简单的展示了用户下单之后利用websocket来对商家端进行提醒。

而他也需要一个注册类来注册一个websocket

并且需要我们前端设置接收器来接收后端发送的json类型的数据。

结果展示:
  

并且附带语音提示。

我没有写过聊天室,但是我感觉是否用户与商家的聊天也是这个思路,基于websocket,用户发送消息到服务器,服务器再使用websocket来转发给商家,商家给用户发送消息也是同样操作。

杂项知识点:

1.什么是websocket:

WebSocket是一种在客户端和服务器之间实现全双工通信的协议。它通过在客户端和服务器之间建立一个长久的连接,并且允许客户端和服务器之间实时地进行双向通信。

与传统的HTTP请求-响应模式不同,WebSocket允许服务器主动向客户端推送数据,而不需要客户端发送请求。这种实时通信的特性使得WebSocket在实时应用程序和实时数据传输方面非常有用。

WebSocket协议通过HTTP协议进行初始握手过程,然后转换为WebSocket连接。它使用了自定义的二进制或文本消息格式,可以在连接建立后直接发送和接收消息。通常使用ws://或wss://作为WebSocket连接的URL前缀。

WebSocket的优势包括:

  1. 实时性:WebSocket提供了实时双向通信的能力,允许服务器主动向客户端推送数据,实现实时的消息传输和更新。

  2. 效率和性能:WebSocket协议相比于HTTP请求,具有更低的开销和更高的性能,因为它避免了重复的请求头和无效的响应。

  3. 跨域支持:WebSocket能够轻松处理跨域请求,因为它是一种单一源的通信协议,主要受到服务器的限制。

  4. 广泛的浏览器支持:现代浏览器几乎都支持WebSocket协议,并且提供了一些用于创建WebSocket连接和处理消息的JavaScript API。

WebSocket在各种领域都有广泛的应用,包括在线聊天、实时数据监控、多人游戏、协同编辑等。它为开发

总结:

        今天的收获还算不错,学习了spring task和 websocket这两个比较常用的知识点。

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!

69e9169c980f43e0aad31ff9ada88a9c.png

 

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

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

相关文章

ssm+vue的软考系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频&#xff1a; ssmvue的软考系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;ssm vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff…

【RNA structures】RNA-seq Part2: RNA转录的重构和前沿测序技术

文章目录 RNA转录重建1 先简单介绍一下测序相关技术2 Map to Genome Methods2.1 Step1 Mapping reads to the genome2.2 Step2 Deal with spliced reads2.3 Step 3 Resolve individual transcripts and their expression levels 3 Align-de-novo approaches3.1 Step 1: Generat…

你还不会DeBug?太low了吧

编程时调试是不可缺少的&#xff0c;Unity中用于调试的方法均在Debug类中。 浅试一下 新建一个物体和脚本&#xff0c;并把脚本挂载到物体上&#xff01; using System.Collections; using System.Collections.Generic; using UnityEngine;public class DeBugTest : MonoBeh…

JavaSE入门---掌握面向对象三大特性:封装、继承和多态

文章目录 封装什么是封装&#xff1f;如何实现封装&#xff1f; 继承什么是继承&#xff1f;继承的语法父类成员访问子类访问父类的成员变量子类访问父类的成员方法 认识super关键字认识final关键字子类的构造方法super VS this在继承关系中各代码块的执行顺序是怎样的&#xf…

AAPCS:最新的ARM子程序调用规则

AAPCS是arm公司发布的ARM架构应用程序二进制&#xff08;ABI&#xff09;程序调用接口&#xff0c;该文档由多个版本&#xff0c;博主第一次ARM程序调用规则是在《ARM体系与结构编程》&#xff0c;但书中描述的是ATPCS&#xff0c;AAPCS是ATPCS的升级版。后面去ARM官网看到了AA…

冯诺依曼体结构 - 为什么要有操作系统

冯诺依曼体系结构 基础 概念认识 我们现在常见的 计算机&#xff0c;如 笔记本电脑&#xff0c;或者是不常见的 计算机&#xff0c;如服务器&#xff0c;大部分都遵循一个体系结构 -- 冯诺依曼体系结构。计算机的基本构成 就是由 冯诺依曼体系结构 来构成计算机的基本单元的。…

机械设备经营小程序商城的作用是什么

由于机械设备厂商品牌需要各地招商代理&#xff0c;因此在管理方面也需要工具进行高效管理。如今各个行业都在开展数字化转型解决行业所遇难题或通过线上销售解决传统三公里难题及品牌扩张难题、用户消费渠道少等难题&#xff0c;构建会员体系精细化管理&#xff0c;同时还需要…

轻松快速搭建一个本地的语音合成服务

前言 本文将介绍一个可以快速搭建本地语音合成的服务&#xff0c;模型和代码已全部提供&#xff0c;不需要联网运行。项目使用的是VITS模型结构&#xff0c;能够很轻松地启动服务。 安装环境 安装Pytorch。 # 安装CPU版本的Pytorch conda install pytorch torchvision torc…

【了解一下,Elastic Search的检索】

文章目录 **1.1.ES**1.1.1.elasticsearch的作用**1.1.2.ELK栈****2.索引库操作****2.1.mapping映射属性****2.2.索引库的CRUD** **3. 文档操作** **基于IDEA操作ES****索引操作****文档操作** DSL查询文档**1.1.DSL查询分类****1.2. 全文检索查询****1.3. 精准查询****1.4. 地理…

消息订阅与发布pubsub

消息订阅与发布 订阅消息&#xff1a;消息名发布消息&#xff1a;消息内容 A组件想使用C组件里面的东西&#xff0c;A需要数据&#xff0c;C是提供者。 在A组件里面订阅一个消息&#xff0c;假设订阅的消息名叫做Demo&#xff0c;指定回调函数叫test&#xff1b;C发布消息&…

ARM映像文件组成

引言 ARM编译器将各种源文件&#xff08;汇编文件、C语言程序文件、C语言程序文件&#xff09;编译生成ELF格式的目标文件&#xff08;后缀为.o文件&#xff0c;以下将目标文件简称为.o文件&#xff09;&#xff0c;.o文件经过连接器&#xff0c;和C/C运行时库一起编译生成ELF格…

Kafka学习(最新版3.6.0)

文章目录 一、初识MQ1.1 什么是MQ1.2 同步和异步通讯1.1.1 同步通讯1.1.2 异步通讯 1.3 技术对比1.4 MQ的两种模式 二、初识Kafka2.1 Kafka的使用场景2.2 Kafka基本概念2.3 Topic与Partition 三、Kafka基本使用3.1 部署前的准备3.2 启动kafka服务器3.3 Kafka核心概念之Topic3.4…

Qt扫盲-QPen 理论使用总结

QPen 理论使用总结 一、概述二、Pen Style 画笔风格三、Cap Style 帽风格四、Join Style 连接处样式 一、概述 QPen 是Qt绘图控件里面的一个重要的组件&#xff0c;和QColor 一样也是类似的一个属性类。这个类就是描述一个画笔具有的属性。 一个画笔 Pen 有style()&#xff0…

032-第三代软件开发-Popup弹窗

第三代软件开发-Popup弹窗 文章目录 第三代软件开发-Popup弹窗项目介绍Popup弹窗官方示例项目中的代码 之前写过一个Popup抄抄别人的dimvisible 和 Open 区别 与 Dialog有啥区别其他总结一下 关键字&#xff1a; Qt、 Qml、 Popup、 弹窗、 modal 项目介绍 欢迎来到我们的…

外网nat+nat server,内网做路由过滤,以及ppp CHAR认证 企业网搭建

作业 网络拓扑图如下所示&#xff1a; 要求&#xff1a;做适当的截图&#xff0c;表示完成相应的操作。 按照网络拓扑要求搭建网络结构&#xff0c;按照个人学号配置每个节点的IP地址&#xff0c;其中X为班级号&#xff0c;Y为学号末尾2位&#xff1b;Y1为学号末尾2位1&#…

kubernetes 多集群管理和联邦集群将是下一波运维浪潮

问题 调研一下国内外K8s平台软件&#xff0c;哪个具有创建标准的K8s集群的功能&#xff1f; 背景 随着云原生技术在越来越多的企业和组织中的大规模落地&#xff0c;如何高效、可靠地管理大规模资源池以应对不断增长的业务挑战成为了当下云原生技术的关键挑战。在过去的很长…

第三章 内存管理 十四、页面分配策略

目录 一、驻留集 1、定义&#xff1a; 2、注意事项 3、分配策略 固定分配: 可变分配: 4、置换策略 局部置换: 全局置换: 5、置换分配策略 5.1、固定分配局部置换: 这种策略的缺点是: 5.2、可变分配全局置换: 5.3、可变分配局部置换: 注意&#xff1a; 6、何时调…

周立功ZCANPRO简介和使用

ZCANPRO目录 周立功ZCANPRO简介一、软件安装ZCANPRO官网链接&#xff1a;驱动官网链接 二、ZCANPRO使用1.设备管理2.选择CAN、CANFD波特率计算器使用方法&#xff08;可选&#xff09; 3.新建视图CAN视图DBC视图 4.发送数据普通发送DBC发送 三、高级功能UDS诊断 周立功ZCANPRO简…

分布式缓存Spring Cache

一、缓存里的数据如何和数据库的数据保持一致&#xff1f; 缓存数据一致性1)、双写模式2)、失效模式1、缓存数据一致性-双写模式 2、 缓存数据一致性-失效模式 我们系统的一致性解决方案: 1、缓存的所有数据都有过期时间&#xff0c;数据过期下一次查询触发主动更新 2、读写数据…

基于PyQt5和OpenCV库的简单的文档对齐扫描应用程序

计算机视觉-作业1 作业要求简介说明 安装运行功能使用待完善代码相关 作业要求 拍一张A4纸文稿的图片&#xff0c;利用角点检测、边缘检测等&#xff0c;再通过投影变换完成对文档的对齐扫描 简介 使用python语言&#xff0c;基于PyQt5和OpenCV库的简单的文档对齐扫描应用程…