Day_3

news2024/12/27 13:28:33

1. HttpClient

HttpClientApache的一个子项目,是高效的、功能丰富的支持HTTP协议的客户端编程工具包

作用:发送HTTP请求, 接受相应数据

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.13</version>
</dependency>

发送请求步骤

创建HttpClient对象

创建Http请求对象

调用HttpClientexecute方法发送请求

GET方式请求

POST方式请求 

封装

封装到 common 里的工具类 HttpClientUtil 


2. 微信登录

微信登录 官方手册

代码开发

配置微信登录配置项

为微信用户生成jwt令牌时使用的配置项

登录方法

wxLogin 接口思路:

  1. 获取当前微信用户的 openid (openid 在 user 表里是唯一索引)
  2. 判断 openid 是否在数据库里
  3. 如果不在,则创新新用户并保存到数据库
  4. 返回当前的用户信息

拦截用户端发送的请求并校验

编写拦截器JwtTokenUserInterceptor

注册拦截器 


3. 用户端商品查询

商品浏览查询

接口设计

  1. 查询分类
  2. 根据分类 id 查询菜品
  3. 根据分类 id 查询套餐
  4. 根据套餐 id 查询包含的菜品

代码开发

这里是选择导入提供的相应代码


4. 缓存(RedisTemplate)

查询的请求发的比较频繁,就考虑将查询的数据缓存在 redis 减少数据库的查询压力

实现思路 

  1. 每个分类下的菜品保存一份缓存数据
  2. 数据库里的菜品数据有变更时清理缓存数据

代码实现

存缓存

清理缓存 

在数据库发生变动的时候,要清楚当前有关联的缓存


5. 缓存(Spring Cache)

Spring Cache 是一个框架,实现了基于注解的缓存功能

只需要简单地加一个注解,就能实现缓存功能

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-cache</artifactId>      
    <version>2.7.3</version>
</dependency>

常用注解

注解

说明

@EnableCaching

开启缓存注解功能,通常加在启动类上

@Cacheable

在方法执行前先查询缓存中是否有数据,如果有数据,则直接返回缓存数据;如果没有缓存数据,调用方法并将方法返回值放到缓存中

@CachePut

将方法的返回值放到缓存中

@CacheEvict

将一条或多条数据从缓存中删除

实现思路

  • 导入Spring CacheRedis相关maven坐标
  • 启动类上加入@EnableCaching注解,开启缓存注解功能
  • 在用户端接口SetmealController list 方法上加入@Cacheable注解
  • 管理端接口SetmealControllersavedeleteupdatestartOrStop等方法上加入CacheEvict注解

代码开发

存缓存

在用户端接口SetmealController list 方法上加入@Cacheable注解

清理缓存

管理端接口SetmealControllersavedeleteupdate等方法上加入CacheEvict注解 

选择性删除缓存

全删缓存


6. 购物车 

添加购物车

实现目的

  1. 暂时存放所选商品的地方
  2. 选的什么商品
  3. 每个商品都买了几个
  4. 不同用户的购物车需要区分开

代码开发

代码比较常规

一条购物车信息 == 一个用户选择的菜品(或套餐)及对应数量

注意点:

在添加购物车的时候,进行条件查询,判断是否已经存在该条购物车信息

如果已经存在该购物车信息,则直接进行 数量 + 1,只有在不存在的时候才进行添加数据

其中添加购物车数据的时候,也需要进行判断加入的是套餐还是菜品

查看购物车

直接根据当前登录用户的 userId 去数据库查询,该数据库变化频繁,不建议采用缓存

代码开发

清空购物车

清空当前用户 userId 对应的数据库所有信息

删除购物车一条信息

实现思路

  1. 根据前端传入的 shoppingCartDTO 和当前登录用户的 userId 去数据库查询对应的数据
  2. 查到的一定是一条数据,否则是错误
  3. 判断查到的数据当前的 Number 是否为  1 
  4. 如果为 1 则直接删除该条信息
  5. 否则该条信息的 Number - 1

代码实现

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

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

相关文章

森林消防—高扬程水泵:守护绿色屏障的专业利器/恒峰智慧科技

在广袤的森林中&#xff0c;火灾无疑是最具破坏性的灾难之一。为了及时应对森林火灾&#xff0c;保护珍贵的自然资源和生态平衡&#xff0c;高效的消防设备显得尤为重要。森林消防高扬程水泵便是其中一款专业设备&#xff0c;以其高效输送水源的能力&#xff0c;成为守护森林绿…

【服务治理中间件】consul介绍和基本原理

目录 一、CAP定理 二、服务注册中心产品比较 三、Consul概述 3.1 什么是Consul 3.2 Consul架构 3.3 Consul的使用场景 3.4 Consul健康检查 四、部署consul集群 4.1 服务器部署规划 4.2 下载解压 4.3 启动consul 五、服务注册到consul 一、CAP定理 CAP定理&#xff…

hexo 博客插入本地图片时遇到的坑

哈喽大家好&#xff0c;我是咸鱼。 最近一直在折腾博客的事&#xff0c;说是 hexo 极易上手&#xff0c;我觉得只仅限于在安装部署的时候&#xff0c;随着对 hexo 的深入使用&#xff0c;发现遇到的问题还是挺多的。 那今天来讲一下我在把本地图片插入到 hexo 博客文章中遇到…

网络安全之二层局域网封装及广域网封装详解

局域网封装&#xff1a;Ethernet2&#xff08;TCP/IP&#xff09;&#xff0c;IEEE802.3&#xff08;OSI&#xff09;&#xff08;前面文章中讲解了TCP、IP和OSI本文就不继续讲解&#xff1a;可以查看&#xff1a;网络安全之OSI七层模型详解-CSDN博客&#xff09; 广域网封装&…

SD-WAN大型企业异地组网与海外访问案例解析

随着大型企业不断扩张&#xff0c;其分公司遍布各地&#xff0c;但异地网络访问的瓶颈日益凸显。若企业还需依赖外网进行业务交流&#xff0c;那么合规、高效的SD-WAN组网方案便显得尤为重要。 客户概述&#xff1a; 该客户专注于无线通讯技术的研发与推广&#xff0c;拥有位于…

TL062CDR 贴片SOP-8 丝印TLO62C 双路通用运算放大器芯片

TL062CDR是一款非常通用的运算放大器&#xff0c;它可以被广泛应用在各种电子产品和系统中。以下是一些可能使用TL062CDR的具体产品类别和应用示例&#xff1a; 1. 模拟滤波器&#xff1a;在音频设备&#xff0c;如耳机放大器、音响系统和声音处理器中&#xff0c;TL062CDR可以…

对Windows超融合S2D的一些补充

先说一个不知道算不算BUG的例子&#xff0c;下面这个存储池是用两台服务器各2块10G建立的&#xff0c;除去系统保留的部分&#xff0c;显示还有13G可用。 但如果使用其新建虚拟磁盘会显示可用的空间为0 然后我又各增加了一块10G硬盘进池&#xff0c;变成了可用空间为30.5GB …

VM 安装Ubuntu20

1、VM 新建虚拟机 类型配置 - 典型 安装源选择 &#xff08;安装包获取&#xff1a;Ubuntu桌面系统 | Ubuntu&#xff09; 设置计算机名与用户账号密码 为虚拟机命一个名&#xff0c;设置虚拟机文件保存的位置 设置磁盘相关信息 最后一步&#xff0c;确定虚拟机的相关参数 设置…

ansible-3

目录 一、Templates 模块 1.1.先准备一个以 .j2 为后缀的 template 模板文件&#xff0c;设置引用的变量 1.2.修改主机清单文件&#xff0c;使用主机变量定义一个变量名相同&#xff0c;而值不同的变量 1.3.编写 playbook 二、tags 模块 三、Roles 模块 四、编写模块 4…

10、算数运算符(以 ‘/’、‘%’、‘++’为主去讲解)(Java超详细版本)

算数运算符 一、算数运算符二、“ / ”的使用三、“ % ”的使用四、“ ”的使用⭐ 一、算数运算符 算数运算符是对数值类型的变量进行运算的&#xff0c;在Java程序中使用的非常多的。 二、“ / ”的使用 1、Java中 “ / ” 的运算结果是省略小数部分的整数&#xff0c;不存…

【人工智能】博弈搜索(极小极大值、α-β剪枝)

1. 极小极大值算法 人工智能中 “博弈” 通常专指博弈论专家们称为有完整信息的、确定性的、轮流行动的、两个游戏者的零和游戏&#xff08;如国际象棋)。术语中&#xff0c;这是指在确定的、完全可观察的环境中两个 Agent必须轮流行动&#xff0c;在游戏结束时效用值总是相等并…

MCP3008-I/SL 模数转换器ADC SPI接口 模拟信号采集

MCP3008-I/SL 模数转换器ADC 贴片SOIC16 MCP3008-I/SL 是一款模数转换器&#xff08;ADC&#xff09;&#xff0c;属于 SAR&#xff08;逐次逼近寄存器&#xff09;架构的 ADC。它具有以下特点&#xff1a; 8 通道单 ADC 最大采样率&#xff1a;200ksps&#xff08;千样点每秒…

MySQL-ELK基础

1&#xff1a;什么是 ELK ELK是由一家elastic公司开发的三个开源项目的首字母缩写&#xff0c;这三个项目分别是&#xff1a;Elasticsearch、Logstash 和 Kibana。三个项目各有不同的功能&#xff0c;之后又增加了许多新项目, 于是 从5.X版本后改名为Elastic Stack Elastic S…

STM32CubeMX学习笔记32---FreeRTOS资源管理

一、CPU利用率简介 1 基本概念 CPU 使用率其实就是系统运行的程序占用的 CPU 资源&#xff0c;表示机器在某段时间程序运行的情况&#xff0c;如果这段时间中&#xff0c;程序一直在占用 CPU 的使用权&#xff0c;那么可以人为 CPU 的利用率是 100%。CPU 的利用率越高&#xf…

C语言:__attribute__((packed))

一、简介 在使用结构体的时候&#xff0c;经常要根据结构体的长度来进行相关判断。但是按照C语言的规则&#xff0c;会对不同类型的数据类型进行自动对齐。有时候就会造成一些问题&#xff0c;如果不需要使用自动对齐的功能&#xff0c;就需要使用到本章的关键字。 二、自动对…

CFETS系统介绍

CSTP服务是什么 CSTP&#xff08;CFETS Straight Through Process&#xff09;是交易中心为外汇市场提供的数据直通式处理接口服务。用户通过标准式接口将本方交易数据直接从交易中心的服务器接收下来&#xff0c;根据需要对数据进行处理并导入到中、后台系统。其基本功能包括…

【JUC】并发编程 Synchronized 锁升级原理

Synchronized如何实现同步/互斥的效果&#xff1f; monitorenter&#xff1a; 将锁对象对象头中Mark Word的前30bit替换成指向操作系统中与其关联的monitor对象&#xff0c;将锁记录位状态改为10 monitorexit&#xff1a; 将锁对象对象头中Mark Word进行重置&#xff0c;重新恢…

活动预告 | 5月16日 Streaming Lakehouse Meetup · Online 与你相约!

随着 Apache Flink 技术社区的不断成熟和发展&#xff0c;越来越多企业开始利用 Flink 进行流式数据处理&#xff0c;从而提升数据时效性价值&#xff0c;获取业务实时化效果。与此同时&#xff0c;在大数据领域数据湖架构也日益成为新的技术趋势&#xff0c;越来越多企业开始采…

从谚语:“一手交钱,一手交货来”谈谈什么是数据库事务

事务与交易 一手交钱&#xff0c;一手交货 一手交钱&#xff0c;一手交货&#xff0c;谚语&#xff0c;意思是指钱和货当场相交&#xff0c;互不拖欠。出自明朝施耐庵《水浒传》第二一回。 Transaction 意思 我们先来看一下来自于剑桥英-英词典的解释&#xff1a; transac…

手游广告归因新选择:Xinstall助力精准衡量投放效果

在手游市场竞争日益激烈的今天&#xff0c;广告主们面临着如何精准衡量广告投放效果的难题。手游广告归因平台的出现&#xff0c;为广告主们提供了一种全新的解决方案。而Xinstall&#xff0c;作为其中的佼佼者&#xff0c;正以其独特的优势&#xff0c;助力广告主们破解这一难…