苍穹外卖面试题准备(持续更新

苍穹外卖面试题准备

  • 讲讲 redis,它在你的项目中作用是什么?
  • 在你的项目中 redis 作为缓存, MySQL 的数据如何与 redis 进行同步呢?
  • 如何解决 Redis 的缓存穿透问题
  • redis 的淘汰机制是怎么样的?
  • redis 的 IO 多路复用是什么?
  • 商品超卖问题如何解决?
  • 讲讲什么是 Httpclient(DAY06微信登录模块
  • MD5加密
  • nginx反向代理与负载均衡(视频P10-P11
  • jwt token ThreadLocal 拦截器(还没理解

讲讲 redis,它在你的项目中作用是什么?

Redis 是高性能的基于键值对的写入缓存的 内存存储系统。它支持多种数据结构如字符串、哈希表、列表、集合、有序集合等,并提供了丰富的操作命令。项目中引入 Redis 的地方是:查询店铺营业状态 ,像这种店铺营业状态,本项目无非就两个状态:营业中/打样。而且它属于高频查询。只要用户浏览到这个店铺,前端就要自动发送请求到后端查询店铺状态。Redis 是基于键值对这种形式存储的,而且 Redis 也把将数据放到缓存中,而不是磁盘,有效缓解了这种高频查询给磁盘带来的压力。

在你的项目中 redis 作为缓存, MySQL 的数据如何与 redis 进行同步呢?

  苍穹外卖这个项目中用户在查看店铺状态时,需要让数据库与 redis 高度保持一致,因为如果店铺没有营业的话就不能点单了,所以它要求时效性比较高,所以采用的读写锁保证的强一致性。我们采用的是 redisson 实现的读写锁,在读的时候添加共享锁,可以保证读读不互斥,读写互斥。当我们更新数据的时候,添加排他锁,它是读写,读读都互斥,这样就能保证在写数据的同时是不会让其他线程读数据的,避免了脏数据。这里面需要注意的是读方法和写方法上需要使用同一把锁才行。

在这里插入图片描述
在这里插入图片描述

如何解决 Redis 的缓存穿透问题

  • 缓存穿透是指查询一个一定不存在的数据,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到 DB 去查询,可能导致 DB 挂掉。这种情况大概率是遭到了攻击。
  • 使用布隆过滤器来解决缓存穿透:主要是用于检索一个元素是否在一个集合中。我们当时使用的是 redisson 实现的布隆过滤器。它的底层主要是先去初始化一个比较大数组,里面存放的二进制 0 或 1。在一开始都是 0,当一个 key 来了之后经过 3 次 hash 计算,模于数组长度找到数据的下标然后把数组中原来的 0 改为 1,这样的话,三个数组的位置就能标明一个 key 的存在。查找的过程也是一样的。当然是有缺点的,布隆过滤器有可能会产生一定的误判,我们一般可以设置这个误判率,大概不会超过 5%,其实这个误判是必然存在的,要不就得增加数组的长度,其实已经算是很划分了,5%以内的误判率一般的项目也能接受,不至于高并发下压倒数据库。

redis 的淘汰机制是怎么样的?

  • 数据的淘汰策略:当 Redis 中的内存不够用时,此时在向 Redis 中添加新的 key,那么 Redis 就会按照某一种规则将内存中的数据删除掉,这种数据的删除规则被称之为内存的淘汰策略。
  • 这个在 redis 中提供了很多种,默认是 noeviction,不淘汰任何 key,但是内存满时不允许写入新数据。还有随机淘汰以及 LRU(最少最近使用)和 LFU(最少频率使用)等等。

redis 的 IO 多路复用是什么?

Redis 的 IO 多路复用是一种技术,允许 Redis 同时监听多个客户端连接,并在有数据到达时及时处理,提高了 IO 效率和性能。它通过一种机制来管理和处理多个连接,使得 Redis 能够高效地处理大量客户端请求。

商品超卖问题如何解决?

    1. 悲观锁: 在商品购买过程中,使用悲观锁(Pessimistic Locking)对库存进行加锁,确保同一时间只有一个用户可以执行减库存操作,避免并发冲突导致的超卖问题。例如,在数据库层面使用数据库行级锁或者事务进行控制。
  1. 乐观锁: 使用乐观锁(Optimistic Locking)进行并发控制。在购买商品时,先查询当前库存数量,然后在更新库存时进行版本号比对,如果版本号一致才执行更新操作,否则返回库存不足错误。这种方式适用于读多写少的场景。
  2. 分布式锁: 在分布式系统中,使用分布式锁对库存进行加锁,确保同一时间只有一个节点可以执行库存减少操作,避免多个节点之间的并发冲突。
    在这里插入图片描述

讲讲什么是 Httpclient(DAY06微信登录模块

Httpclient是一个服务器端进行 HTTP 通信的库,他使得后端可以发送各种 HTTP 请求和接收 HTTP 响应,使用 HTTPClient,可以轻松的发送 GET, POST, PUT, DELETE 等各种类型的的请求。
在我们的项目中,在进行微信登录开发时,后端在使用登录凭证校验接口的时候就需要发送指定请求到给定的 URL 中。因此我们使用 Httpclient 去完成该任务。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

MD5加密

在这里插入图片描述

nginx反向代理与负载均衡(视频P10-P11

在这里插入图片描述

  • 正向代理:
    正向代理是客户端发送请求后通过代理服务器访问目标服务器,代理服务器代表客户端发送请求并将响应返回给客户端。正向代理隐藏了客户端的真实身份和位置信息,为客户端提供代理访问互联网的功能。
  • 反向代理:
    反向代理是指代理服务器接收客户端的请求,然后将请求转发给后端服务器,并将后端服务器的响应返回给客户端。反向代理隐藏了服务器的真实身份和位置信息,客户端只知道与反向代理进行通信,而不知道真正的服务器。

jwt token ThreadLocal 拦截器(还没理解

(DAY01用户登录模块
(DAY06微信登录模块

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大屏可视化项目示例--基于Vue3+vite2+echart+mock+axios+dataV

图例: 项目环境: Vite、Echarts、Npm、Node、axios、mock、vue3、dataV。 项目地址: IofTV-Screen-Vue3: 🔥(IofTV-Screen Vue3版本)一个基于 vue3、vite、Echart 框架的物联网可视化(大屏展示)模板&…

docker导出导入镜像

docker导出镜像 查看要导出的镜像 docker images主要有两列 REPOSITORY TAG 导出命令 导出公式 docker save -o xxxx.tar REPOSITORY:TAG例子 docker save -o minio.tar minio/minio:latestminio/minio:latest可以使用image id代替,但是使用image id会导致导…

CSS之第一个CSS样式和CSS选择符

前端这些博客&#xff0c;我觉得都是固定的语法&#xff0c;故而不会以过多的文字进行描述&#xff0c;本系列博文均以实例和代码介绍的方式进行&#xff0c;主要按照代码进行。不会以过多的文字描述。 第一个CSS样式 <!DOCTYPE html> <html lang"en">…

百度地图 JavaScript API GL快速升级 和mapV的使用

一、百度地图 JavaScript API GL快速升级 JavaScript API GL升级指南 1、在原来的链接中添加type webgl 2、批量替换页面中的BMap直接替换为BMapGL 二、mapV的使用 MapVGL mapVGL的效率确实要快很多&#xff0c;一万个点基本实现秒现 1、加载mapvgl.min.js export const…

eclipse显示包层级设置

1、选择中右上角的倒三角 2、选中 Package Presentation -> Hierachical

【linux学习15】日志管理rsyslog、logrotate介绍

1.rsyslog 系统日志管理 什么程序产生什么日志&#xff0c;日志存放文件夹 rsyslogd&#xff1a;系统专职日志程序 httpd/nginx/mysql&#xff1a;各类应用程序&#xff0c;存放自己的日志查看rsyslogd程序 ps aux | grep rsyslogd//常见日志文件&#xff08;洗头膏、进程、应…

CTK插件框架学习-信号槽(05)

CTK插件框架学习-事件监听(04)https://mp.csdn.net/mp_blog/creation/editor/137171155 一、主要流程 信号发送者告诉服务要发送的信号信号发送者发送信号信号接收者告诉服务当触发某个订阅的主题时通知槽函数信号接收者处理槽函数信号槽参数类型必须为&#xff08;const ctk…

算法训练day57leetcode1143.最长公共子序列 1035.不相交的线 53最大子序和

part14 1143.最长公共子序列 1035.不相交的线 53最大子序和 动态规划 1143. 最长公共子序列 初始化动态规划数组 dp 动态规划数组 dp 是一个二维数组&#xff0c;其大小为 (text1.size() 1) x (text2.size() 1)&#xff0c;dp[i][j] 表示 text1 的前 i 个字符和 text2 的前…

对【AI技术创业】有哪些机会进行分析和引导

文章目录 方向一&#xff1a;行业解决方案,以下是一些常见的行业解决方案&#xff1a;方向二&#xff1a;智能产品和服务,以下是一些智能产品和服务的示例&#xff1a;方向三&#xff1a;教育和培训 1.智能客户服务&#xff1a; 利用自然语言处理&#xff08;NLP&#xff09;和…

通过SSH在苹果手机上查看系统文件:远程访问iOS文件系统的方法

​ 目录 引言 用户登录工具和连接设备 查看设备信息&#xff0c;电池信息 查看硬盘信息 硬件信息 查看 基带信息 销售信息 电脑可对手机应用程序批量操作 运行APP和查看APP日志 IPA包安装测试 注意事项 引言 苹果手机与安卓手机不同&#xff0c;无法直接访问系统文件…

【蓝牙协议栈】【BLE】【ATT】低功耗蓝牙之属性协议介绍

1. 精讲蓝牙协议栈&#xff08;Bluetooth Stack&#xff09;&#xff1a;SPP/A2DP/AVRCP/HFP/PBAP/IAP2/HID/MAP/OPP/PAN/GATTC/GATTS/HOGP等协议理论 2. 欢迎大家关注和订阅&#xff0c;【蓝牙协议栈】和【Android Bluetooth Stack】专栏会持续更新中.....敬请期待&#xff01…

zabbix 7.0 新增功能亮点(一)——T参数

概要&#xff1a; T参数是zabbix7.0新增的一项功能&#xff0c;它支持对配置文件进行可用性验证&#xff0c;即zabbix程序(server/proxy/agent等)修改配置文件后&#xff0c;支持-T或–test-config参数验证配置参数可用性。 T参数主要包含以下三个方面的应用场景&#xff1a; …

宁盾身份域管与Coremail邮件系统完成兼容互认证,持续深化信创布局

在信创国产化改造的背景下&#xff0c;企业邮箱的替换是许多党政、央国企、金融、制造企业面临的重要任务。为了满足企业对国产邮箱、OA等其他应用、终端实现统一身份认证&#xff0c;宁盾国产化身份域管与 Coremail XT 安全增强电子邮件系统 V5.0、V6.0 完成了产品兼容互认证&…

新能源汽车充电桩主板产业链解析

新能源汽车充电桩主控制板&#xff0c;简称汽车充电桩主板&#xff0c;是充电桩设施的核心部件&#xff0c;主要负责控制充电桩的整体运行和管理充电过程。了解汽车充电桩主板的整体产业链是非常重要的&#xff0c;这可以帮助您更好地了解供应链、采购渠道以及行业发展趋势。 产…

详细盘点Vue3项目中的各种组件文件夹(用于存放‘.vue’文件)

components 文件夹 存放通用的、可复用的组件&#xff1b; 通常用于构建页面中的具体功能模块。在项目中多次使用&#xff0c;并且不依赖于具体的业务逻辑。 比如&#xff1a;导航栏组件 navbar.vue layouts 文件夹 存放页面的整体布局组件 default.vue <script setup…

从零开始:如何进入IT行业

微信扫码体验我自己做的小程序&#xff08;很有意思哦&#xff5e;&#xff5e;【坏笑】&#xff09;&#xff1a; 随着科技的飞速发展&#xff0c;IT行业已经成为了许多人梦寐以求的职业之一。不过&#xff0c;对于那些没有任何相关经验或技能的人来说&#xff0c;进入这个领域…

WEB安全测试通常要考虑的测试点

1、问题&#xff1a;没有被验证的输入 测试方法&#xff1a; 数据类型&#xff08;字符串&#xff0c;整型&#xff0c;实数&#xff0c;等&#xff09; 允许的字符集 最小和最大的长度 是否允许空输入 参数是否是必须的 重复是否允许 数值范围 特定的值&#xff08;枚举型&a…

Ray Tracking 辐射度量学、渲染方程、全局光照

Basic radiometry (辐射度量学) Radiant flux Radiant energy Definition: Radiant energy is the energy of lectromagnetic radiation. It is measured in units of joules, and denoted by the symbol: \[Q [J Joule] \] Radiant flux (power) Definition: Radiant flux (p…

(模型蒸馏)MCC-KD: Multi-CoT Consistent Knowledge Distillation

论文链接&#xff1a;[2310.14747] MCC-KD: Multi-CoT Consistent Knowledge Distillation (arxiv.org) 背景 近年来&#xff0c;大型语言模型&#xff08;LLMs&#xff09;如GPT-3、BERT等在自然语言处理&#xff08;NLP&#xff09;领域取得了显著的进展。这些模型通过大规…

Windows搭建Lychee图片管理系统结合内网穿透实现公网访问本地图床

文章目录 1.前言2. Lychee网站搭建2.1. Lychee下载和安装2.2 Lychee网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 图床作为图片集中存放的服务网站&#xff0c;可以看做是云存储的一部分&#xff0c;既可…