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

【面试分享】面试题——redis

一、题目

  • Redis的数据持久化策略有哪些
  • 什么是缓存穿透,怎么解决
  • 什么是布隆过滤器
  • 什么是缓存击穿,怎么解决
  • 什么是缓存雪崩,怎么解决
  • redis双写问题
  • Redis分布式锁如何实现
  • Redis实现分布式锁如何合理的控制锁的有效时长
  • Redis的数据过期策略有哪些
  • Redis的数据淘汰策略有哪些
  • Redis集群有哪些方案, 知道嘛
  • 什么是 Redis 主从同步
  • 你们使用Redis是单点还是集群 ? 哪种集群
  • Redis分片集群中数据是怎么存储和读取的
  • redis集群脑裂
  • 怎么保证redis的高并发高可用
  • 你们用过Redis的事务吗 ? 事务的命令有哪些
  • Redis是单线程的,但是为什么还那么快?

二、答案

1、Redis的数据持久化策略有哪些

Redis的数据持久化策略主要有两种:

  • RDB(Redis Database)持久化:RDB持久化通过fork子进程将Redis在某个时间点的数据保存到磁盘上的快照文件中(通常为dump.rdb)。这种方式的好处是可以在磁盘上创建非常紧凑的数据文件,适用于备份和灾难恢复。但是,它可能会丢失最后一次快照之后的数据,且在恢复大量数据时可能会导致Redis的启动时间较长。
  • AOF(Append Only File)持久化:AOF持久化将Redis的每个写操作(包括写命令和删除命令)追加到一个文件中(AOF文件)。当Redis重启时,会重新执行AOF文件中的命令来恢复数据。这种方式的好处是可以保证数据的完整性和一致性,但缺点是日志文件通常比RDB文件大,且恢复数据时需要执行较多的命令,可能会导致恢复速度较慢。

为了充分利用持久化的优势,Redis也支持同时启用RDB和AOF持久化。

2、什么是缓存穿透,怎么解决

缓存穿透指的是恶意用户或攻击者通过请求不存在于缓存和后端存储中的数据来使得所有请求都落到后端存储上,导致系统瘫痪。

解决方案包括:

  • 使用布隆过滤器:将所有可能存在的数据哈希到一个足够大的bitmap中,一个不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。
  • 缓存空结果:如果一个查询返回的数据为空(不管是数据不存在,还是系统故障),仍然把这个空结果进行缓存,但它的过期时间会很短。
  • 使用黑白名单:通过维护一个黑白名单来过滤掉无效的请求。
  • 加入缓存预热机制:在系统启动或低峰时段,预先将一些热点数据加载到缓存中,以减少缓存穿透的发生。

3、什么是布隆过滤器

布隆过滤器(Bloom Filter)是1970年由布隆提出的,它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中,其优点是空间效率和查询时间都比一般的算法要好得多,但缺点是有一定的误识别率和删除困难。

4、什么是缓存击穿,怎么解决

缓存击穿指的是在高并发访问下,某个热点数据失效后,大量请求同时涌入后端存储,导致后端存储负载增大、响应时间变慢,甚至瘫痪。

解决方案包括:

  • 使用互斥锁或分布式锁:对热点数据的访问进行加锁控制,避免多个请求同时访问后端存储。
  • 热点数据预加载:提前将热点数据加载到缓存中,并在其失效时快速刷新缓存。
  • 设置合理的过期时间:避免大量热点数据的过期时间集中在同一时间段。

5、什么是缓存雪崩,怎么解决

缓存雪崩指的是因为某些原因导致缓存中大量的数据同时失效或过期,导致后续请求都落到后端存储上,从而引起系统负载暴增、性能下降甚至瘫痪。

解决方案包括:

  • 避免缓存集中失效:设置不同的过期时间,避免大量缓存同时失效。
  • 使用分布式缓存:通过分布式部署来分散缓存的访问压力。
  • 设置缓存预热和自动刷新机制:在系统启动或低峰时段,预先将一些热点数据加载到缓存中,并在缓存即将失效时自动刷新缓存。
  • 应用程序限流:对访问缓存的请求进行限流,避免过多的请求同时访问后端存储。

6、redis双写问题

在分布式系统中,双写问题通常是指数据在多个存储系统(例如数据库和缓存)中更新时出现的不一致性。在使用Redis作为缓存层时,双写问题尤为常见。具体来说,当数据在数据库和Redis缓存中存在副本时,任何对数据的更新操作都需要在两个地方进行,即“双写”。这可能导致以下问题:

  • 数据库更新成功,缓存更新失败。
  • 缓存更新成功,数据库更新失败。
  • 数据库和缓存的更新顺序不同步。

解决双写问题的方法包括:

  • Cache Aside Pattern(旁路缓存模式):最常用的缓存策略。先从缓存中读取数据,如果缓存中没有数据,从数据库中读取数据,然后将数据写入缓存。更新数据库时,使缓存中的数据失效或更新缓存。
  • Write Through Cache(写通缓存):写操作直接更新缓存,缓存负责同步更新数据库。
  • Write Behind Cache(写回缓存):写操作更新缓存,由缓存异步地更新数据库。

7、Redis分布式锁如何实现

Redis实现分布式锁主要有以下几种方式:

  1. SETNX(SET if Not eXists)命令
    • 尝试将一个指定的键设置为某个值,只有当该键不存在时才能设置成功。可以将某个键作为锁的标识,多个客户端竞争将该键设置为某个值,设置成功的客户端获得了锁。
    • 优点:简单、易于理解和实现。
    • 缺点:无法处理锁的超时和释放问题。
  2. EXPIRE命令
    • 为锁设置一个过期时间,避免锁被永久持有。即使锁没有被有效释放,也能保证在一定时间后自动释放。
    • 优点:可以避免锁被永久持有,自动释放锁。
    • 缺点:无法处理锁的重入问题。
  3. GETSET命令
    • 原子性地获取锁的当前值并设置新的值。通过比较旧的值与自己的标识是否相同,如果相同则表示获取锁成功,否则表示获取锁失败。
    • 优点:可以实现锁的重入和安全释放。
    • 缺点:无法直接处理锁的超时问题,需要结合其他机制。
  4. Lua脚本
    • 利用Redis的Lua脚本功能,可以在Redis端执行一系列原子操作,保证分布式锁的正确性。通过编写Lua脚本,可以复杂地控制锁的获取、续期、释放等逻辑。
    • 优点:可以实现复杂的锁逻辑,保证操作的原子性。
    • 缺点:相对复杂,需要编写和维护Lua脚本。

8、Redis实现分布式锁如何合理的控制锁的有效时长

合理控制Redis分布式锁的有效时长,可以通过以下方式实现:

  1. 根据操作预期时间设置过期时间
    • 估算操作需要的时间,并加上一些缓冲时间,以应对网络延迟和其他不确定因素。
  2. 使用锁续命机制
    • 对于一些可能超过预期时间的长时间操作,可以在锁快要过期时,通过续命机制延长锁的有效时间。客户端可以定期检查锁是否仍然持有,并尝试续命。
  3. Watchdog机制
    • 在许多分布式锁实现中(如Apache Curator的分布式锁),Watchdog机制会自动续命直到客户端明确释放锁。获取锁时,启动Watchdog线程,该线程定期检查并续命。释放锁时,停止Watchdog线程。

9、Redis的数据过期策略有哪些

Redis的数据过期策略主要有以下几种:

  1. 定时删除策略
    • 在设置键的同时,设置键的过期时间,Redis通过定时任务删除过期键值对。
  2. 惰性删除策略
    • 在访问键时,如果发现键已经过期,Redis删除该键值对。
  3. 定期删除策略
    • 使用定期任务扫描数据库,删除过期键值对。
  4. 过期检查策略
    • 在执行某些命令时,Redis检查键是否过期,如果过期则删除。
  5. 定期删除和惰性删除结合策略
    • 结合定期删除策略和惰性删除策略,提高过期键的删除效率。
  6. 随机删除策略
    • 随机选择一定数量的键进行检查和删除,减少删除过期键的压力。

10、Redis的数据淘汰策略有哪些

Redis的数据淘汰策略主要有以下几种(这些策略在内存不足以容纳新写入数据时触发):

  1. Noeviction(默认)
    • 当内存不足以容纳新写入数据时,新写入操作会报错,表示写入失败。不会删除任何已有的key,也不会释放任何内存空间。
  2. Allkeys-lru
    • 从所有key中选择最近最少使用的key进行删除,以释放内存空间。
  3. Volatile-lru
    • 从设置了过期时间的key中选择最近最少使用的key进行删除,以释放内存空间。
  4. Allkeys-random
    • 从所有key中随机选择一个进行删除,以释放内存空间。
  5. Volatile-random
    • 从设置了过期时间的key中随机选择一个进行删除,以释放内存空间。
  6. Volatile-ttl
    • 从设置了过期时间的key中选择剩余生存时间最短的key进行删除,越早过期的键优先被淘汰。
  7. Volatile-lfu
    • 根据使用频率和剩余生存时间来决定淘汰顺序,使用频率低且剩余生存时间短的键优先被淘汰。
  8. Allkeys-lfu
    • 根据使用频率来决定淘汰顺序,使用频率低的键优先被淘汰。

11、Redis集群有哪些方案

Redis集群方案主要有三种:

  1. 主从同步:主节点负责写数据,从节点负责读数据,实现读写分离,提高并发能力。
  2. 哨兵模式:在主从复制的基础上,增加了一个或多个哨兵节点来监视主节点和从节点的状态。当主节点出现故障时,哨兵节点可以自动将一个从节点升级为新的主节点,从而保证系统的高可用性。
  3. 分片集群(Redis Cluster):将数据分散到多个节点中,每个节点都存储部分数据,实现数据的水平扩展。Redis Cluster使用哈希槽(Hash Slot)进行数据分片,并通过Gossip协议进行节点间的通信和故障检测。

12、什么是 Redis 主从同步

Redis主从同步是一种数据复制方式,用于实现读写分离和提高系统的可用性。在主从同步中,有一个主节点(master)和多个从节点(slave)。主节点负责处理客户端的写请求,并将数据变更同步到从节点。从节点则负责处理读请求,通过复制主节点的数据来保持数据的一致性。主从同步可以配置为全量同步或增量同步,具体取决于从节点是否已有主节点的数据副本以及数据变更的情况。

13、你们使用Redis是单点还是集群?哪种集群

这个问题需要针对具体的组织或项目来回答。一般来说,为了保证高可用性和数据的一致性,大多数生产环境都会使用Redis集群而不是单点部署。至于使用哪种集群方案,则取决于具体的需求和场景。例如,如果需要实现数据的水平扩展和高并发读写,可能会选择Redis Cluster;如果主要关注高可用性和故障自动转移,可能会选择哨兵模式。

14、Redis分片集群中数据是怎么存储和读取的

在Redis分片集群中,数据按照一定规则(如一致性哈希算法)分配到多个节点上进行存储。每个节点只负责部分数据的存储和处理,这样可以提高系统的吞吐量和可扩展性。当客户端发送写入请求时,Redis分片集群会根据键的哈希值确定数据应该存储在哪个节点上,并将写入请求发送到对应的节点。同样地,当客户端发送读取请求时,Redis分片集群也会根据键的哈希值确定数据所在的节点,并将读取请求发送到对应的节点。

15、redis集群脑裂

Redis集群脑裂是一个在分布式系统中可能发生的严重问题。在网络分区或其他故障的情况下,Redis集群的多个节点之间失去通信,导致它们各自形成独立的、都认为自己是主节点的分区。这时,每个分区都可以接受写请求,从而可能导致数据不一致和冲突。为了解决这个问题,可以采取一些措施,如使用Redis Cluster的原生支持、合理配置Sentinel参数、进行网络隔离与恢复、定期进行节点健康检查以及数据备份与恢复等。

16、怎么保证redis的高并发高可用

保证Redis的高并发和高可用性通常涉及以下几个方面:

  1. 集群部署:通过主从复制、哨兵模式或Redis Cluster等集群方案来实现数据的冗余和故障自动转移。
  2. 负载均衡:使用负载均衡器将客户端请求分发到多个Redis节点上,以平衡各节点的负载。
  3. 资源优化:合理配置Redis服务器的硬件资源(如CPU、内存、网络带宽等)以及Redis的配置参数(如最大连接数、内存限制等),以优化Redis的性能和吞吐量。
  4. 数据持久化:通过AOF(Append Only File)或RDB(Redis Database)等持久化机制来确保数据在Redis服务器故障时不会丢失。
  5. 监控和告警:实时监控Redis服务器的性能指标和状态信息,并在发现异常时及时告警和处理。

17. 你们用过Redis的事务吗?事务的命令有哪些?

是的,Redis支持事务。Redis中的事务是通过一组命令的集合实现的,这些命令将按顺序执行并原子地提交或回滚。Redis事务主要使用的命令包括:

  • MULTI:用于标记事务的开始。在执行MULTI命令后,所有后续的命令都将被认为是事务的一部分,放入事务队列中等待执行。
  • EXEC:用于执行之前标记的事务。Redis将按顺序执行事务中的所有命令,并以原子方式提交。
  • DISCARD:用于取消事务,清空事务队列,并释放与事务关联的任何资源。
  • WATCH:用于监视一个或多个键,以便在事务执行期间检测到键的变化。如果在EXEC执行之前被监视的键发生了变化,事务将被取消。

18. Redis是单线程的,但是为什么还那么快?

Redis虽然是单线程的,但其性能却非常高,这主要得益于以下几个方面的设计:

  1. 基于内存操作:Redis将数据存储在内存中,内存的读写速度远快于磁盘。因此,Redis的数据访问速度非常快。
  2. 非阻塞I/O模型:Redis使用了事件驱动的非阻塞I/O机制。它通过一个事件循环来处理来自客户端的请求,在等待数据I/O时并不会阻塞主线程,而是继续处理其他请求。这种非阻塞I/O模型允许Redis以高效的方式处理大量的并发连接,提供高吞吐量和低延迟的性能。
  3. 高效的数据结构和算法:Redis内置了多种高效的数据结构,如字符串、哈希表、列表、集合和有序集合等。这些数据结构经过优化,能够在单线程下提供高效的数据操作。同时,Redis还使用了一些高效的算法,如快速列表、跳跃表和布隆过滤器等,以提高查询和存储的效率。
  4. 优化系统调用和线程切换:Redis对系统调用进行了优化,减少了频繁的系统调用开销。由于Redis主要使用单线程模型,避免了多线程带来的线程切换开销,从而提高了整体性能。
  5. 并发控制和事务支持:虽然Redis是单线程的,但它通过使用乐观锁和CAS(Compare and Swap)操作来实现并发控制。这种并发控制机制使得多个客户端的请求可以并行执行,而不会相互干扰。同时,Redis还提供了简单的事务支持,允许将多个命令作为一个原子操作进行执行,保证了数据的一致性和完整性。
  6. 基于Reactor模式的网络事件处理器:Redis基于Reactor模式开发了自己的网络事件处理器——文件事件处理器。这个文件事件处理器使用I/O多路复用程序来同时监听多个socket,并根据socket目前执行的任务来为socket关联不同的事件处理器。这种设计使得Redis能够高效地处理大量的并发连接,提高了整体性能。

相关文章:

【面试分享】面试题——redis

一、题目 Redis的数据持久化策略有哪些什么是缓存穿透,怎么解决什么是布隆过滤器什么是缓存击穿,怎么解决什么是缓存雪崩,怎么解决redis双写问题Redis分布式锁如何实现Redis实现分布式锁如何合理的控制锁的有效时长Redis的数据过期策略有哪些…...

GLSL教程 第十三章:综合项目:创建一个完整的渲染场景(一更)

目录 13.1 项目规划和设计 13.1.1 项目目标 13.1.2 设计要求 13.2 实现场景中的光照、材质和纹理 13.2.1 创建基础场景 13.2.2 应用材质和纹理 13.3 集成高级渲染效果和后期处理 13.3.1 阴影映射(Shadow Mapping) 13.3.2 环境光遮蔽(AO) 13.3.3 简单的景深效果(…...

pgvector: 30 倍构建向量嵌入索引

使用 pgvector 为 HNSW 并行构建索引 Postgres 最受欢迎的向量搜索扩展 pgvector 最近实现了并行索引构建功能,这将分层可导航小世界 (HNSW) 索引构建时间显著提高了 30 倍。 祝贺 Andrew Kane 和 pgvector 的贡献者发布此版本,这巩固了 Postgres 作为最…...

GNSS形变监测系统

TH-WY1 GNSS形变监测系统采用扼流圈设计有以下几个优势: 高精度测量:扼流圈是一种高精度的传感器,可以提供非常精确的测量结果。这使得GNSS形变监测系统能够准确地测量结构物的形变变化。 高稳定性:扼流圈设计使得传感器具有良好…...

每天一个数据分析题(四百五十三)- 随机抽样

在进行随机抽样时由于某些原因会产生抽样误差,以下关于抽样误差的说法,正确的是 A. 抽样误差是随机抽样调查中偶然发生的代表性误差 B. 抽样误差的大小同样本单位数成正比关系 C. 简单随机抽样比分层抽样误差大 D. 重复抽样比不重复抽样误差小 数据…...

Python爬虫知识体系-----Selenium

数据科学、数据分析、人工智能必备知识汇总-----Python爬虫-----持续更新:https://blog.csdn.net/grd_java/article/details/140574349 文章目录 一、安装和基本使用二、元素定位三、访问元素信息四、自动化交互五、PhantomJS六、Chrome headless 一、安装和基本使用…...

springboot+webSocket对接chatgpt

webSocket对接参考 话不多说直接上代码 WebSocket package com.student.config;import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import lombok.extern.slf4j.Slf4j; import org.springframework.http.MediaType; import org.springfram…...

【ROS2】 默认的DDS通信中间件替换为Eclipse Cyclone_DDS (DDS配置方法)

ROS2替换中间件为Cyclone_DDS 1.一些介绍:)2.不同DDS的RMW实现3.默认的FastDDS替换为Cyclone DDSi.安装依赖ii.编译 cyclone-dds 4.配置网络 1.一些介绍:) 上一篇我们探讨了ros1和ros2编写launch的区别 【ROS2】launch启动文件编…...

迈向数智金融:机器学习金融科技新纪元的新风采

个人名片: 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️…...

Nginx+PHP+CI框架实现,访问静态文件带权限验证

1、访问来源验证配置nginx #文件访问来源校验 如路径:https://ys.test.com/test/api/uploads/test.png #不是该允许域名的将返回403页面 location /test/api/uploads/ {valid_referers ys.test.com ys.test2.com;if ($invalid_referer) {return 403;} }2、拦截访问…...

javascript 第二天

正则表达式 a/正则表达式内容/ a.test(“需要检测的内容”) 焦点事件 onfocus 获得焦点 onblur 失去焦点 他们都是事件,和onclick一样 onchange 内容改变 失去焦点时生效,多了内容检测,如果内容不变不触发,内容改变才触发 onk…...

unity2D游戏开发17战斗精灵

导入 将PlayerFight32x32.png拖Player文件夹进去 设置属性 创建动画剪辑 选中前四帧,右键Create|Animation,将动画命名为player-ire-east 其他几个动画也创建好后,将其拖到Animations|Animations文件夹 选中PlayerController,再点击Animator 创建新的Blend Tree Graph,并重…...

kafka架构+原理+源码

1.安装jdk17 sudo yum -y update sudo wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm sudo yum -y install ./jdk-17_linux-x64_bin.rpm sudo java -version 2.安装kafka How to easily install kafka without zookeeper | Aditya’s Blog 1.…...

实力共鉴!微风企斩获2024年浙江省专精特新中小企业

日前,微风企斩获2024年浙江省专精特新中小企业荣誉,这是继获得“国家高新技术企业”“浙江省科技中小企业”“杭州市雏鹰计划企业”等权威性认证后,微风企荣获的又一重磅殊荣。 “专精特新中小企业”是国家对具有“专业化、精细化、特色化、新…...

C#:枚举及位标志周边知识详解(小白入门)

文章目录 枚举为什么要有枚举?枚举的性质设置默认类型和显式设置成员的值 位标志(重要)位标记是什么及作用位标志周边知识HasFlag判断是否有该功能枚举前面加Flags的好处 关于枚举的更多知识using static简化代码获取枚举成员的字面量 枚举 为什么要有枚举? 为了增加代码的…...

这本vue3编译原理开源电子书,初中级前端竟然都能看懂

前言 众所周知vue提供了很多黑魔法,比如单文件组件(SFC)、指令、宏函数、css scoped等。这些都是vue提供的开箱即用的功能,大家平时用这些黑魔法的时候有没有疑惑过一些疑问呢。 我们每天写的vue代码一般都是写在*.vue文件中,但是浏览器却只…...

小白如何安装WNO(小波神经算子),需要安装python3.8,torch,ptwt,pywt等

下载项目 WNO在github上面的项目地址如下: https://github.com/csccm-iitd/WNO/tree/main 下载下来后,里面的数据集需要用matlab代码生成,也可以到里面提到的google云盘里面下载数据集 安装环境 然后需要安装环境 注意python版本一定要…...

Java HashMap 源码解读笔记(一)--xunznux

文章目录 HashMap介绍实现说明:源码解读静态常量和内部节点类 Node静态工具方法属性字段 Fields未完待续。。。 HashMap 本文主要是用于记录我在阅读Java1.8的 HashMap 源码所做的笔记。对于源码中的注释会进行翻译下来,并且会对其中部分源码进行注释。 这一篇文章…...

“等保测评下的数据加密与隐私保护“

在当今数字化时代,数据已成为企业最宝贵的资产之一。然而,数据泄露、隐私侵犯等事件频发,不仅给企业带来经济损失,更严重损害了公众信任。等保测评,作为国家信息安全等级保护制度的重要组成部分,对数据加密…...

Oat++ 后端实现跨域

这里记录在官方的例子中,加入跨域。Oat Example-CRUD 在官方的例子中,加入跨域。 Oat Example-CRUD 修改AppComponent.hpp文件中的代码,如下: #include "AppComponent.hpp"#include "controller/UserController…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 ​ 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...

<6>-MySQL表的增删查改

目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表&#xf…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...

Android15默认授权浮窗权限

我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...