Day_3

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.mzph.cn/diannao/8316.shtml

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

相关文章

ES集群搭建、身份认证配置

虚机搭建 添加es用户 elasticsearch 默认不允许root用户启动&#xff0c;所以需要创建es用户 useradd elasticsearch passwd elasticsearch解压安装包 #解压es tar -xvzf elasticsearch-7.14.2-linux-x86_64.tar.gz将文件夹赋予es用户权限 #将文件夹赋予es用户权限 sudo c…

controlnet的preprocessor类型

GitHub - huggingface/controlnet_auxContribute to huggingface/controlnet_aux development by creating an account on GitHub.https://github.com/huggingface/controlnet_aux/https://huggingface.co/lllyasviel/sd_control_collection

js中日期Date的使用

日常搬砖过程中,凡事使用到Date总是一知半解,每次都要查阅资料,今天有时间把这里整理一下,希望今天储备的知识,够以后使用就不用查阅资料了哈,现在开始吧 new Date() 使用它可以创建一个日期实例,并返回代表当前时间的字符串 接收参数有5种形式 无参数,新创建的 Date 对象代…

Qt绘制箭头

Qt绘制箭头 接收两个点作为向量的两端&#xff0c;用来确定箭头方向&#xff0c;额外添加参数&#xff0c;确定箭头是否和向量一致 然后使用fillPath填充箭头 QPainterPath arrowPath(const QPointF& p1, const QPointF& p2, int direct 0, int endIndex 0, int ar…

智慧监控 高效运维

随着企业IT建设的不断深入和完善&#xff0c;IT管理的重要性逐渐被重视&#xff0c;打通数据割裂&#xff0c;使业务更加充分融合。亟需一套统一的平台来实现跨品牌跨设备类型的集中监控和管理。 LinkSLA带外监控平台&#xff0c;不仅适用于大规模或超大规模的运维场景&#x…

量化交易的优势和QMT、Ptrade开通流程

量化交易没有一个精确的定义&#xff0c;广义上可以认为&#xff0c;凡是借助于数学模型和计算机实现的交易方法都可以称为量化交易。 量化交易的基本原理是通过计算机方法对海量的股票市场历史数据进行分析&#xff0c;总结出一些能够带来持续收益的交易因子。根据这些因子编…

Tomcat添加服务以及设置开机自启

下载地址连接 Index of /dist/tomcat👓 注意点:不要出现中文路径 #环境变量CATALINA_HOME=D:\apache-tomcat-7.0.62 TOMCAT_HOME=D:\apache-tomcat-7.0.62 JAVA_HOME=D:\tool\jdk1.8.0_111 PATH=%CATALINA_HOME%\bin;%CATALINA_HOME%\lib;%CATALINA_HOME%\lib;D:\tool\jdk1.…

将数据结构和流程可视化——E-R图和DFD图

通过程序处理数据时&#xff0c;不仅可以将数据保存到文件&#xff0c;还可以将其保存到数据库中。在数据库中数据是以表格形式保存的&#xff0c;但并不是只有一个表格&#xff0c;而是多个表格进行保存&#xff0c;因此数据更易于管理&#xff0c;即使变更数据&#xff0c;也…

Spring MVC(一)

1 Spring MVC概述 我们在之前学习Servlet的时候&#xff0c;认识了在WEB开发中MVC设计模式&#xff0c;其最为经典的设计就是&#xff0c;通过控制器&#xff08;Controller&#xff09;分离模型&#xff08;Model&#xff09;和视图&#xff08;View&#xff09;。在具体的WEB…

Redis进阶学习

Redis进阶学习 一、Redis事务1.2 Redis监控1.3 Jedis连接1.4 SpringBoot整合1.5 自定义RedisTemple1.6 Redis.conf详解 二、 Redis持久化2.1 RDB2.2 AOF进程 三、Redis发布订阅3.1 Redis主从复制3.2 集群环境配置3.3、复制原理3.4、宕机后主动变为主机3.5、哨兵模式 四、Redis缓…

【ITK配准】第七期 尺度(Metric)-基匹配Metric

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享ITK中的基匹配Metric,即itk::MatchCardinalityImageToImageMetric ,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我…

【算法刷题day45】卡码网:70. 爬楼梯(进阶版);Leetcode:322. 零钱兑换、279. 完全平方数

文章目录 Leetcode 70. 爬楼梯&#xff08;进阶版&#xff09;解题思路代码总结 Leetcode 322. 零钱兑换解题思路代码总结 Leetcode 279. 完全平方数解题思路代码总结 草稿图网站 java的Deque Leetcode 70. 爬楼梯&#xff08;进阶版&#xff09; 题目&#xff1a;70. 爬楼梯&…

2024年大数据与艺术设计国际学术会议(ICBDAD 2024)

2024年大数据与艺术设计国际学术会议(ICBDAD 2024) 2024 International Conference on Big Data and Art Design 一、【会议简介】 2024年大数据与艺术设计国际学术会议&#xff0c;听起来好像两个完全不相关的领域&#xff0c;却意外地融合在了一起。 在这个会议上&#xff0c…

力士乐触摸屏维修VCP11.2DWN-003-NN-NN-PW工业液晶屏幕电脑主机深圳捷达工控维修

扩展的性能、高系统可用性和多种配置选项 借助 lndraControl 系列工业 PC 和显示器&#xff0c;实现高性能和高灵活性。 lndraControl PR 性能分级盒采用最新的 Intel ATOM 和 Core-i 处理器&#xff0c;可与 lndraControl DR 多点触控显示屏集成&#xff0c;连接距离可达 100M…

el-carousel走马灯页数回到第一页

我的走马灯是在一个弹窗里,包裹着一些button,切换到下一页时 关闭弹窗再打开弹窗还显示的是上次第二页位置 领导很不满意 1. 2.写在你打开弹窗或者关闭弹窗的位置 this.$refs.carousel && (this.$refs.carousel.activeIndex 0); 解释一下: this.$refs.carousel: thi…

开源数据可视化大屏对接表单数据实践!

如果你需要一个表单系统&#xff0c;进行数据收集&#xff1b;可以使用tduck填鸭进行私有化部署&#xff0c;进行表单制作&#xff0c;完成数据收集。 在实际业务中&#xff0c;往往需要将收集的数据进行展示或分析&#xff1b;此时就可以使用表单数据推送到TReport中&#xf…

华为eNSP中型企业局域网网络规划设计(下)

→b站传送门&#xff0c;感谢大佬← →华为eNSP中型企业局域网网络规划设计&#xff08;上&#xff09;← →拓扑图传送门&#xff0c;可以自己配置着玩← 配置ospf AR3 [AR3]ospf 1 router-id 3.3.3.3 //出口默认路由 [AR3-ospf-1]default-route-advertise always #area…

R语言数据探索与分析-中国GDP回归分析与预测

首先读取数据&#xff1a; 将GDP列转换为常规数字格式 # 可视化GDP数据 # 查看数据结构 # 确保数据类型是正确的 第一张图片展示了中国2002年到2021年间的GDP增长趋势&#xff0c;这是一个时间序列图&#xff0c;其中横轴表示年份&#xff0c;纵轴表示GDP&#xff08;单位未…

OpenAI 高管:一年后,你会觉得现在的 ChatGPT 像笑话一样糟糕|TodayAI

OpenAI 的首席运营官 Brad Lightcap 表示&#xff0c;一年后&#xff0c;你会觉得现在的 ChatGPT 像笑话一样糟糕。未来的 ChatGPT 版本将会有重大升级。他还讨论了 AI 取代人类工作和对电网的压力的可能性。 虽然我们不知道 OpenAI 何时会推出 GPT-5&#xff0c;但公司高管已…

三年软件测试经验遭遇求职困境?揭秘求职市场的隐藏陷阱

1.个人背景 小李&#xff0c;我的一位朋友&#xff0c;拥有三年多的软件测试工作经验。他本科毕业后便投身于测试行业&#xff0c;熟练掌握Python编程&#xff0c;能够编写自动化测试脚本&#xff0c;并且熟悉Selenium和性能测试。然而&#xff0c;尽管他具备这些技能和经验&am…