当前位置: 首页 > news >正文

某讯一面,感觉问Redis的难度不是很大

前不久,有位朋友去某讯面试,他说被问到了很多关于 Redis 的问题,比如为什么用 Redis 作为 MySQL 的缓存?Redis 中大量 key 集中过期怎么办?如何保证缓存和数据库数据的一致性?我将它们整理出来,跟大家一起来探讨如何回答这些问题,希望对大家有所帮助。

Redis 为什么这么快?

为什么用 Redis 作为 MySQL 的缓存?

Redis 除了做缓存,还能做什么?

使用 redis 分布式锁,如何合理设置过期时间?

Redis 单线程模型了解吗?

Redis 中大量 key 集中过期怎么办?

如何保证缓存和数据库数据的一致性?

Redis 为什么这么快?

Redis 内部做了非常多的性能优化,比较重要的有下面几点:

  1. Redis 基于内存,内存的访问速度比磁盘快很多;
  2. Redis 基于 Reactor 模式设计开发了一套高效的事件处理模型,主要是单线程事件循环IO 多路复用
  3. Redis 内置了多种优化过后的数据类型/结构实现,性能非常高。
  4. Redis 通信协议实现简单且解析高效。

扩展:那既然都这么快了,为什么不直接用 Redis 当主数据库呢?

  • 主要是因为内存成本太高且 Redis 提供的数据持久化仍然有数据丢失的风险。

为什么用 Redis 作为 MySQL 的缓存?

主要是因为 Redis 具备高性能高并发两种特性。下面来详细介绍一个高性能和高并发。(这个问题是个开放题,我的答案仅供参考)

高性能

假如用户第一次访问 MySQL 中的某些数据。这个过程会比较慢,因为是从硬盘上读取的。将该用户访问的数据缓存在 Redis 中,这样下一次再访问这些数据的时候就可以直接从缓存中获取了,操作 Redis 缓存就是直接操作内存,所以速度相当快。

如果 MySQL 中的对应数据改变的之后,同步改变 Redis 缓存中相应的数据即可。

高并发

单台设备的 Redis 的 QPS(Query Per Second,每秒钟处理完请求的次数) 是 MySQL 的 10 倍,Redis 单机的 QPS 能轻松破 10w,而 MySQL 单机的 QPS 很难破 1w。

所以,直接访问 Redis 能够承受的请求是远远大于直接访问 MySQL 的,所以我们可以考虑把数据库中的部分数据转移到缓存中去,这样用户的一部分请求会直接到缓存这里而不用经过数据库。

Redis 除了做缓存,还能做什么?

  1. 分布式锁:通过 Redis 来做分布式锁是一种比较常见的方式。通常情况下,我们都是基于 Redisson 来实现分布式锁。
  2. 限流:一般是通过 Redis + Lua 脚本的方式来实现限流。如果不想自己写 Lua 脚本的话,也可以直接利用 Redisson 中的 RRateLimiter 来实现分布式限流,其底层实现就是基于 Lua 代码+令牌桶算法。
  3. 消息队列:Redis 自带的 List 数据结构可以作为一个简单的队列使用。Redis 5.0 中增加的 Stream 类型的数据结构更加适合用来做消息队列。它比较类似于 Kafka,有主题和消费组的概念,支持消息持久化以及 ACK 机制。
  4. 延时队列:Redisson 内置了延时队列(基于 Sorted Set 实现的)。
  5. 分布式 Session:利用 String 或者 Hash 数据类型保存 Session 数据,所有的服务器都可以访问。
  6. 复杂业务场景:通过 Redis 以及 Redis 扩展(比如 Redisson)提供的数据结构,我们可以很方便地完成很多复杂的业务场景比如通过 Bitmap 统计活跃用户、通过 Sorted Set 维护排行榜。

使用 redis 分布式锁,如何合理设置过期时间?

Redis 单线程模型了解吗?

Redis 基于 Reactor 模式设计开发了一套高效的事件处理模型 ,这套事件处理模型对应的是 Redis 中的文件事件处理器(file event handler)。

由于文件事件处理器是单线程方式运行的,所以我们一般都说 Redis 是单线程模型。

面试官又问了一个小问题,感觉回答的不错

既然是单线程,那怎么监听大量的客户端连接呢?

Redis 通过 IO 多路复用程序 来监听来自客户端的大量连接(或者说是监听多个 socket),它会将感兴趣的事件及类型(读、写)注册到内核中并监听每个事件是否发生。

I/O 多路复用技术的使用让 Redis 不需要额外创建多余的线程来监听客户端的大量连接,降低了资源的消耗,这样使用的好处是非常明显的。

使用 redis 分布式锁,如何合理设置过期时间?

需要考虑如下几个因素:

  1. 任务执行时间:确保过期时间大于预期的最长执行时间,以免任务还在执行过程中锁就被自动释放,导致并发问题
  2. 锁自动续期:如果使用了支持锁自动续期的 Redis 客户端库(如 Redisson),在持有锁的线程还在执行任务期间,可以定期自动延长锁的有效期,这样可以减小因锁过期导致的并发问题。
  3. 锁竞争激烈程度:如果锁的竞争非常激烈,过期时间不宜设置得太短,否则可能会频繁触发锁的竞争,消耗更多资源。反之,如果锁的竞争不大,可以适当缩短过期时间,更快地回收锁资源。
  4. 死锁检测与处理:设定一个合理的最大等待时间,超过这个时间还没有释放的锁可以被认为是持有锁的客户端出现问题,可以通过监控和相应的逻辑来处理此类死锁。
  5. 网络延迟和异常恢复:考虑到网络不稳定等因素,过期时间还应该预留一部分用于处理网络延迟或客户端异常恢复的情况。过期时间太短可能导致客户端未能及时释放锁或重新获取锁。
  6. 锁释放的可靠性:使用 lua 脚本来保证解锁操作的原子性,同时结合 watch 命令或事务处理,以最大程度地确保锁在业务逻辑完成后能够正确释放,降低对过期时间依赖的程度。

Redis 中大量 key 集中过期怎么办?

首先回答 大量 key 集中过期可能出现的问题:

  • 请求延迟增加: Redis 在处理过期 key 时需要消耗 CPU 资源,如果过期 key 数量庞大,会导致 Redis 实例的 CPU 占用率升高,进而影响其他请求的处理速度,造成延迟增加。
  • 内存占用过高: 过期的 key 虽然已经失效,但在 Redis 真正删除它们之前,仍然会占用内存空间。如果过期 key 没有及时清理,可能会导致内存占用过高,甚至引发内存溢出。

之后再回答 可以采取的方案:

  • 1.尽量避免 key 集中过期: 在设置键的过期时间时尽量随机一点。
  • 2.开启 lazy free 机制: 修改 redis.conf 配置文件,将 lazyfree-lazy-expire 参数设置为 yes,即可开启 lazy free 机制。开启 lazy free 机制后,Redis 会在后台异步删除过期的 key,不会阻塞主线程的运行,从而降低对 Redis 性能的影响。

如何保证缓存和数据库数据的一致性?

其实感觉聊聊 Cache Aside 这个策略就可以了,细说的话没啥太大必要。

下面来说说 Cache Aside 策略:

Cache Aside 中遇到写请求是这样的,更新数据库,然后直接删除缓存。

但是必须是这两步都成功,才能解决缓存和数据库数据不一致的问题。

关于更新数据库成功,而删除缓存这一步失败的这种情况,是可能发生的,简单说有两个解决方案:

  • 缓存失效时间变短(不推荐,治标不治本):我们让缓存数据的过期时间变短,这样的话缓存就会从数据库中加载数据。用户会反馈在一段时间后,才能更新数据哦!!!

  • 增加缓存更新重试机制(常用):如果缓存服务当前不可用导致缓存删除失败的话,我们就隔一段时间进行重试,重试次数可以自己定。不过,这里更适合引入消息队列实现异步重试,将删除缓存重试的消息投递到消息队列,然后由专门的消费者来重试,直到成功。

恭喜你,面试通过!!!

就业陪跑训练营学员投稿

欢迎关注 ❤

我们搞了一个免费的面试真题共享群,互通有无,一起刷题进步。

没准能让你能刷到自己意向公司的最新面试题呢。

感兴趣的朋友们可以私信我,备注:面试群。

相关文章:

某讯一面,感觉问Redis的难度不是很大

前不久,有位朋友去某讯面试,他说被问到了很多关于 Redis 的问题,比如为什么用 Redis 作为 MySQL 的缓存?Redis 中大量 key 集中过期怎么办?如何保证缓存和数据库数据的一致性?我将它们整理出来,…...

【json_object】mysql中json_object函数过长,显示不全

问题:json只显示部分 解决: SET GLOBAL group_concat_max_len 1000000; -- 设置为1MB,根据需要调整如果当前在navicat上修改,只有效本次连接和后续会话,重新连接还是会恢复默认值1024 在my.ini配置文件中新增或者修…...

【KOA框架】koa框架基础入门

koa是express的一层封装,语法比express更加简洁。所以有必要了解下koa的相关开发方法。 代码实现 package.json {"name": "koapp","version": "1.0.0","main": "index.js","scripts": {&…...

kubernetes 集群 YAML 文件详解

Kubernetes 是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。在 Kubernetes 中,YAML 文件扮演着至关重要的角色,因为它们是用来定义资源对象(如 Pods、Deployments、Services 等)的配置文件。正确…...

【STM32G4xx的CAN驱动记录】

STM32G4xx的CAN驱动记录 CAN说明CAN的波特率计算数据测试总结 本文主要记录了基于STM32G4xx的CAN接口解析某型号雷达数据遇到的问题及规避方法,CAN总线波特率500Kbps,采样点要求80%附近。 注意CAN总线同步段的时间!!! …...

VSCode下EIDE插件开发STM32

VSCode下STM32开发环境搭建 本STM32教程使用vscode的EIDE插件的开发环境,完全免费,有管理代码文件的界面,不需要其它IDE。 视频教程见本人的 VSCodeEIDE开发STM32 安装EIDE插件 Embedded IDE 嵌入式IDE 这个插件可以帮我们管理代码文件&am…...

HTML之拜年/跨年APP(改进版)

目录: 一:目录 二:效果 三:页面分析/开发逻辑 1.页面详细分析: 2.开发逻辑: 四:完整代码(不多废话) index.html部分 app.json部分 二:效果 三:页面…...

解决 WSL 2 中 Ubuntu 22.04 安装 Docker 后无法启动的问题

问题场景 安装Docker后,执行sudo service docker start启动Docker,提示启动成功 rootDev:~# sudo service docker start * Starting Docker: docker [ OK ]执行su…...

Chrome 132 版本新特性

Chrome 132 版本新特性 一、Chrome 132 版本浏览器更新 1. 在 iOS 上使用 Google Lens 搜索 在 Chrome 132 版本中,开始在所有平台上推出这一功能。 1.1. 更新版本: Chrome 126 在 ChromeOS、Linux、Mac、Windows 上:在 1% 的稳定版用户…...

《贪心算法:原理剖析与典型例题精解》

必刷的贪心算法典型例题! 算法竞赛(蓝桥杯)贪心算法1——数塔问题-CSDN博客 算法竞赛(蓝桥杯)贪心算法2——需要安排几位师傅加工零件-CSDN博客 算法(蓝桥杯)贪心算法3——二维数组排序与贪心算…...

CSS笔记基础篇02——浮动、标准流、定位、CSS精灵、字体图标

黑马程序员视频地址: 前端Web开发HTML5CSS3移动web视频教程https://www.bilibili.com/video/BV1kM4y127Li?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes&p70https://www.bilibili.com/video/BV1kM4y127Li?vd_source…...

Golang Gin系列-6:Gin 高级路由及URL参数

在本章中,我们将深入研究使用Gin框架的高级路由和URL参数。我们将介绍如何创建和使用路由组、应用中间件、提取路径参数、处理查询字符串、处理静态文件以及使用HTML模板。 路由分组 为什么要使用路由组? 使用路由组有助于保持代码结构整洁有序。当路由…...

重温STM32之环境安装

缩写 CMSIS:common microcontroller software interface standard 1,keil mdk安装 链接 Keil Product Downloads 安装好后,开始安装平台软件支持包(keil 5后不在默认支持所有的平台软件开发包,需要自行下载&#…...

web应用引入cookie机制的用途和cookie技术主要包括的内容

web应用引入cookie机制,用于用户跟踪。 (1)HTTP响应报文中的Cookie头行:set-Cookie (2)用户浏览器在本地存储、维护和管理的Cookie文件 (3)HTTP请求报文中的Cookie头行:…...

Visual Studio Code + Stm32 (IAR)

记录一下, 以前看别人在 vsc 下配置 stm32 工程非常麻烦。 最近,突然发现, iar 官方出了两个插件, iar build 、 iar C-Spy 安装之后,配置一下 iar 软件路径。 然后,直接打开工程目录,编译…...

小程序获取微信运动步数

1、用户点击按钮&#xff0c;在小程序中触发getuserinfo方法&#xff0c;获取用户信息 <scroll-view class"scrollarea" scroll-y type"list"><view class"container"><button bind:tap"getLogin">获取</button&…...

嵌入式Linux驱动开发之platform

关键词&#xff1a;rk3399 嵌入式驱动 Linux platform 前言 前面的嵌入式Linux驱动都是描述从特定的SOC与特定设备之间的直接两两通信。而Linux不是为单一某一SOC结构而设计的操作系统&#xff0c;它可以运行在X86、ARM等多种架构多种SOC平台上&#xff0c;如果驱动程序按照S…...

【蓝桥杯】43693.日期问题

题目描述 小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在 1960 年 1 月 1 日至 2059 年 12 月 31 日。令小明头疼的是&#xff0c;这些日期采用的格式非常不统一&#xff0c;有采用年/月/日的&#xff0c;有采用月/日/年的&#xff0c;还有采用…...

opengrok_windows_多工程的同步

多工程的目录 工程代码下载和log配置 工程代码下载 在每个工程的src目录下&#xff0c;下载工程代码&#xff0c;以下载pulseaudio的代码为例。 git clone gitgithub.com:pulseaudio/pulseaudio.git log配置文件 拷贝D:\opengrok\opengrok-…...

Redis的安装和使用--Windows系统

Redis下载地址&#xff1a; windows版本readis下载&#xff08;GitHub&#xff09;&#xff1a; https://github.com/tporadowski/redis/releases &#xff08;推荐使用&#xff09; https://github.com/MicrosoftArchive/redis/releases 官网下载&#xff08;无Windows版本…...

【odbc】odbc连接kerberos认证的 hive和spark thriftserver

hive odbc驱动&#xff0c;以下两种都可以 教程&#xff1a;使用 ODBC 和 PowerShell 查询 Apache HiveHive ODBC Connector 2.8.0 for Cloudera Enterprise spark thriftserver本质就是披着hiveserver的外壳的spark server 完成kerberos认证: &#xff08;1&#xff09;可以…...

亚博microros小车-原生ubuntu支持系列:1 键盘控制

背景&#xff1a;电脑配置不太行&#xff0c;我在ubuntu再运行vmware&#xff0c;里面运行亚博官方的虚拟机镜像ubuntu&#xff0c;系统很卡。基本上8G内存给打满了。还是想把亚博官方的代码迁移出来&#xff0c;之前售后就说除了官方镜像虚拟机&#xff0c;需要自己摸索迁移。…...

【Linux】利用‘shell脚本’快速查看服务的运行情况

一、脚本目的 为了方便查看服务的运行情况&#xff0c;特此写了一个shell脚本&#xff0c;这样就很方便获取&#xff0c;查看如nginx、mysql等服务的运行状态、监听端口状态、防火墙、端口开放状态等。 二、shell脚本源代码 #!/bin/bash SCRIPTPATH$(cd "$(dirname $0)…...

[2025分类时序异常检测指标R-AUC与VUS]

梳理了一下分类中常见的指标&#xff0c;这些指标与时序异常检测中新提出的A-RUC与VUS之间的关系 真正例(True Positive,TP): 被正确识别为正样本的数量。真负例(True Negative,TN): 被正确识别为负样本的数量。假正例(False Positive ,FP): 被错误识为正样本数量假负例(Fals…...

设计模式之结构型模式

在软件开发的世界里&#xff0c;设计模式是前辈们智慧的结晶&#xff0c;它们为我们提供了通用的解决方案来应对各种常见的软件设计问题。今天&#xff0c;我们深入探讨设计模式中的结构型模式&#xff0c;并用 Java 语言来实现它们。 什么是结构型模式 结构型模式主要关注如…...

Spring Boot中的404错误:原因、影响及处理策略

Spring Boot中的404错误&#xff1a;原因、影响及处理策略 在Web开发过程中&#xff0c;404错误是一个常见的HTTP状态码&#xff0c;表示“未找到”资源。在Spring Boot项目中&#xff0c;尽管它以其简化的配置和快速的开发速度著称&#xff0c;但开发者仍可能遇到404错误。本…...

网络协议如何确保数据的安全传输?

网络协议作为计算机网络通信的基石&#xff0c;其设计不仅旨在实现数据的有效传输&#xff0c;更在于确保数据在传输过程中的安全性。对于网络协议如何保障数据安全传输&#xff0c;是很多企业和网络IT部门的重点&#xff0c;本文将从多方面概述相关方法。 加密与解密机制 1. …...

Python绘制数据地图-MovingPandas

MovingPandas 是一个用于时空数据分析的 Python 库&#xff0c;它扩展了 Pandas 和 GeoPandas&#xff0c;使得处理和分析带有时间戳的地理数据变得更加方便。虽然 MovingPandas 本身不直接提供数据可视化功能&#xff0c;但你可以结合其他库如 matplotlib、folium 或 plotly 来…...

鸿蒙子组件根据数据,刷新item Ui的规范

鸿蒙 子组件列表中&#xff0c;有多个isSelect&#xff0c;父组件只用一个state类型的isSelect&#xff0c;就可以将它们关联起来&#xff0c;如下&#xff1a; isLike:item1.isPraise?!this.isLike:this.isLike, 子组件想要数据变化&#xff0c;UI随着更新&#xff0c;就得…...

使用 Flask 构建视频转 GIF 工具

使用 Flask 构建视频转 GIF 工具 在前几日的文章当中&#xff0c;我介绍了如何使用 Python 脚本将视频转化为 GIF 动画&#xff0c;为了更好、更方便的进行操作&#xff0c;在这篇博客中&#xff0c;我将介绍使用 Flask 框架创建一个简单的 Web 应用程序&#xff0c;该应用程序…...

基于SpringBoot+Vue的智慧动物园管理系统的设计与实现

获取源码&#xff1a;基于SpringBootVue智慧动物园系统设计与实现: 后台和用户前台。后台包括首页、员工管理、考勤管理、部门管理、角色管理、审核管理、动物管理、演出管理、园区管理、园区设施维修、饲养管理、行为观察管理、疫苗管理、看护管理、个人中心、票务管理、收入管…...

“深入浅出”系列之数通篇:(5)TCP的三次握手和四次挥手

TCP&#xff08;传输控制协议&#xff09;的三次握手和四次挥手是TCP连接建立和释放的过程。 一、TCP三次握手 TCP三次握手是为了建立可靠的连接&#xff0c;确保客户端和服务器之间的通信能力。具体过程如下&#xff1a; 第一次握手&#xff1a;客户端向服务器发送一个带有…...

【初阶数据结构】探索数据的多米诺链:单链表

文章目录 1.链表1.1 概念及结构1.2 分类 2.单链表接口实现2.1 单链表节点创建2.2 单链表打印2.3 单链表尾插2.4 单链表头插2.5 单链表尾删2.6 单链表头删2.7单链表查找2.8 单链表在pos位置插入x2.8.1 pos前2.8.2 pos后 2.9单链表在pos位置删除x2.9.1 pos前2.9.2 pos后 2.2.10 单…...

我的创作纪念日——我与CSDN一起走过的365天

目录 一、机缘&#xff1a;旅程的开始 二、收获&#xff1a;沿路的花朵 三、日常&#xff1a;不断前行中 四、成就&#xff1a;一点小确幸 五、憧憬&#xff1a;梦中的重点 一、机缘&#xff1a;旅程的开始 最开始开始写博客是在今年一二月份的时候&#xff0c;也就是上一…...

w-form-select 组件中 分析 自定义属性 和 el-select 自带属性 的对比表格

以下是该组件中 自定义属性 和 el-select 自带属性 的对比表格&#xff1a; 属性/功能自定义el-select 自带说明label✔️❌自定义属性&#xff0c;用于设置表单项的标签。prop✔️❌自定义属性&#xff0c;用于表单验证时的字段名。labelWidth✔️❌自定义属性&#xff0c;用…...

【蓝桥杯选拔赛真题63】C++奇数 第十四届蓝桥杯青少年创意编程大赛 算法思维 C++编程选拔赛真题解

目录 C++奇数 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、运行结果 五、考点分析 七、推荐资料 C++奇数 第十四届蓝桥杯青少年创意编程大赛C++选拔赛真题 一、题目要求 1、编程实现 给定两个正整数N和M(10≤N<M≤10000),请找出N到M…...

Android 存储进化:分区存储

} 在写入存储之前&#xff0c;需要知道设备有多少空间可用&#xff0c;不够的话会抛出异常。不过现在的智能设备内存也是比较大的&#xff0c;这部分可以参考Google 查询可用空间 2.1 内部存储空间 打开Android studio的 Device File Explorer时&#xff0c;可以看到应用的内部…...

NPM 与 Node.js 版本兼容问题:npm warn cli npm does not support Node.js

问题描述与处理策略 1、问题描述 npm warn cli npm v10.9.2 does not support Node.js v18.16.1. This version of npm supports the following node versions: ^18.17.0 || >20.5.0. You can find the latest version at https://nodejs.org/.# 翻译 npm warn cli npm v1…...

docker离线安装及部署各类中间件(x86系统架构)

前言&#xff1a;此文主要针对需要在x86内网服务器搭建系统的情况 一、docker离线安装 1、下载docker镜像 https://download.docker.com/linux/static/stable/x86_64/ 版本&#xff1a;docker-23.0.6.tgz 2、将docker-23.0.6.tgz 文件上传到服务器上面&#xff0c;这里放在…...

redis 分布式方案

文章目录 前言一、主从复制1、主从配置2、建立连接3、数据同步3.1、全量同步3.2、全量同步配置3.3、 增量同步3.4、 增量同步配置 二、redis sentinel1、主要功能2、sentinel配置3、高可用3.1、故障发现3.2、故障转移3.2.1、选举sentinel进行故障转移3.2.2、选举从节点升级成主…...

# [0114] Task01 《数学建模导论》P1 解析几何与方程模型

链接&#xff1a;https://www.datawhale.cn/activity/124 整理的相关代码库 GitHub 页面链接 绪论 姜启源&#xff1a;“数学建模就是建立数学模型解决实际问题” 本质还是解应用题&#xff0c;只是曾经的“小明买糖”变成了如今的“嫦娥探月”。 SEIR 模型&#xff0c;也…...

PCM5142集成32位384kHz PCM音频立体声114dB差分输出DAC编解码芯片

目录 PCM5142 简介PCM5142功能框图PCM5142特性 参考原理图 PCM5142 简介 PCM514x 属于单片 CMOS 集成电路系列&#xff0c;由立体声数模转换器 (DAC) 和采用薄型小外形尺寸 (TSSOP) 封装的附加支持电路组成。PCM514x 使用 TI 最新一代高级分段 DAC 架构产品&#xff0c;可实现…...

【HarmonyOS NEXT】碰一碰开发分享

关键词&#xff1a;鸿蒙、碰一碰、systemShare、harmonyShare、Share Kit 华为分享新推出碰一碰分享&#xff0c;支持用户通过手机碰一碰发起跨端分享&#xff0c;可实现传输图片、共享wifi等。我们只需调用系统 api 传入所需参数拉起对应分享卡片模板即可&#xff0c;无需对 U…...

pytest+playwright落地实战大纲

前言 很久没有更新博客&#xff0c;是因为在梳理制作Playwright测试框架实战相关的课程内容。现在课程已经完结&#xff0c;开个帖子介绍下这门课程&#xff08;硬广, o(〃&#xff3e;▽&#xff3e;〃)o&#xff09; 课程放在CSDN学习频道&#xff0c; 欢迎关注~ PyTestPl…...

HTML<center>标签

HTML5不支持。 <center>标签在HTML4中用于使文本居中对齐。 用什么来代替呢&#xff1f; 例子 居中对齐文本&#xff08;使用 CSS&#xff09;&#xff1a; <html> <head> <style> h1 {text-align: center;} p {text-align: center;} div {text-a…...

【部署】将项目部署到云服务器

目录 1.获得服务器 2.连接到云服务器 3.配置环境 3.1.Java&#xff08;运行后端所需&#xff09; 3.2.MySQL数据库 3.3.Nginx&#xff08;运行前端所需&#xff09; 3.4. Node.js&#xff08;构建前端所需&#xff09; 4.打包项目 4.1.打包后端项目 4.2.打包前端项目…...

微软宣布Win11 24H2进入新阶段!设备将自动下载更新

快科技1月19日消息&#xff0c;微软于1月16日更新了支持文档&#xff0c;宣布Windows 11 24H2进入新阶段。 24H2更新于2024年10月1日发布&#xff0c;此前为可选升级&#xff0c;如今微软开始在兼容的Windows 11设备上自动下载并安装24H2版本。 微软表示&#xff1a;“运行Wi…...

傅里叶变换在语音识别中的关键作用

在语音识别中&#xff0c;傅里叶变换起着至关重要的作用&#xff0c;主要体现在以下几个方面&#xff1a; 一、时域到频域的转换 语音信号的特点 语音信号是一种时域信号&#xff0c;它随时间变化。例如&#xff0c;当我们说话时&#xff0c;声带的振动产生声波&#xff0c;这…...

面试-业务逻辑2

应用 给定2个数组a、b&#xff0c;若a[i] b[j]&#xff0c;则记(i,j)为一个二元数组&#xff0c;求具体的二元数组及其个数。 实现 a input("请输入数组a的元素个数&#xff1a;") # print(a) a_list list(map(int, input("请输入数组a的元素&#xff0c;…...

【20】Word:小许-质量管理-论文❗

目录 题目​ NO1.2.3.4.5 NO6.7 NO8 NO9 NO10.11 题目 NO1.2.3.4.5 另存为“Word.docx”文件在考生文件夹下&#xff0c;F12Fn是另存为的作用布局→页面设置对话框→纸张&#xff1a;大小A4→页边距&#xff1a;上下左右不连续ctrl选择除表格外的所有内容→开始→字体对…...