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

Redis数据结构——list

目录

列表命令

lpush

lrange

lpushx

rpush 

rpushx 

lpop

rpop 

lindex

linsert

llen

lrem

ltrim

 lset

blpop / brpop

命令总结

编码方式


list相当于数组或者顺序表,但并不是简单的数组,更接近于C++中的"双端队列"(deque)。  

最左侧的下标是0,redis的下标支持负数下标。

从左侧删除叫lpop,右侧删除叫rpop,左侧插入叫lpush,右侧删除叫做rpush。

列表的特点

1.列表中的元素是有序的。

这里的有序指的是顺序很关键,而不是"升序"、"降序",如果把元素位置调换,那我们得到新的list和之前的list是不等价的。 

2.列表中的元素是允许重复的

hash这样的类型,field是不允许重复的,列表这里是可以重复的。

3.区分获取和删除的区别

lindex可以获取到元素的值,但不会将改值从列表中删除掉。

lrem也能返回被删除元素的值,但是该元素会从列表中删除。

4.列表的头和尾都能高效插入删除元素

因此,可以把List当做一个栈/队列来使用。

列表命令

lpush

头插,一次可以插入一个元素,也可以插入多个元素。如果写的是1 2 3 4,是先头插1在头插2、3、4,全都插入完毕后列表元素是4、3、2、1。

语法:

lpush key element [element ...]

时间复杂度:O(1)

返回值:list的长度

注意:命令必须和数据结构相匹配。

lrange

查看指定区间内的元素 ,此处的区间也是闭区间。这里的下标也是可以支持负数的。l是list的意思。

语法:

lrange key start end

如果要获取list所有元素,可以把start设成0,end设置成-1, -1可以理解成list的长度-1的下标。list长度的减去1刚好就是最后一个元素下标。

我们可以看到最后插入的8是第一个元素,此处这里前面的1)、2)是给结果集使用的序号,和下标没关系。

谈到下标,往往会关注超出范围的情况。

在C++中如果超出范围,一般可能会导致程序崩溃,也可能得到一个不合法的数据,也可能得到一个看起来合法,但是错误的数据,也有可能得到一个符合要求的数据.....。

redis中是如何处理超出范围的情况呢?如果是合法的区间,把数据拿到返回给你,如果给定区间非法,比如超出下标,会尽可能获取对应的内容。

key里面只有8个元素,合法的下标是0-7,但是我们给0-100, 虽然没有100个元素,但是你有多少元素我给你多少元素。就好比土匪拦路,土匪要100块钱,你没有100,那你就有多少钱给我多少钱。

 

lpushx

如果key存在,将一个或者多个元素头插到list中,不存在,直接返回

语法:

lpushx key element [element ...]

返回值:插入后list的长度

时间复杂度:O(1) 

上面我们已经设置了一个key,因此直接插入成功了。

key存在

key不存在

 现在不存在key3,因此返回的就是0,表示列表长度为0,我们使用lrange可以看到是空的列表,我们在用exists判断key3是否存在,结果是不存在。

rpush 

上述的lpush其实就是left push,这里的rpush就是right push。

rpush可以将一个或多个元素插入到list中。

语法:

rpush key element [element]

时间复杂度:O(1)

返回值:list的长度 

rpushx 

如果key存在进行尾插一个或者多个元素,不存在直接返回。

语法:

rpushx key element [element]

时间复杂度和返回值与lpush一样。

key存在

 

key不存在 

 

lpop

从list左侧取出元素(头删)。

语法:

lpop key 

时间复杂度:O(1)

返回值:取出的元素或者nil 

示例:

rpop 

从list右侧取出元素(尾删)。

语法:

rpop key 

时间复杂度:O(1)

返回值:取出的元素或者nil。

示例:

搭配使用rpush和lpop,就相当于一个队列。

搭配使用rpush和rpop,就相当于一个栈。

lindex

给定一个下标,获取到对应的元素。

语法:

lindex key index

返回值:下标对应的元素,如果下标非法,返回nil

下标是从0开始的,并且可以支持负数。

linsert

在某个元素前面或者后面插入一个元素

语法:

linsert key before | after pivot element

 before和after只能出现一个,before是往基准元素(pivot)的前面插入一个元素element。

往基准元素前插入一个元素

往基准元素后插入一个元素: 

如果给一个不存在的基准值会发生什么情况?会返回-1,表示插入失败。 

下面例子中明明不存在77,非要往77前面插入99,当然失败了。

如果基准值存在多个,怎么处理呢?很简单,插入操作相当于遍历列表,如果找到了第一次出现的基准元素那就插入在它的前/后面。

返回值:插入后的列表元素个数

llen

返回列表元素个数,如果列表不存在返回0

语法:

llen key

lrem

rem =>  remov,删除的意思。

我们用lrem对下面这组数据进行操作。下面的列表中就是插入了4组1、2、3、4。

语法:

lrem key count element

count:要删除的个数。

element:要删除的值。 

如果count大于0,从左往右删除element,删除count个。

下面图我们可以看到头部的1没了,第二组的1也没了。lrem  key 2 1的意思是删除2个元素1,从左往右删。

如果count小于0,从右往左删除element,删除count个。

我们使用flushall命令清除所有的key,然后在rpush四组1、2、3、4,恢复一下数据。

此时我们使用lrem key -2 1命令,意思是删除元素1,删除2个,从右往左删。

如果count等于0,删除所有的element。

下面尾插四组1234,然后lrem key 0  1,表示列表中所有的1都被删了。

返回值:删除了多少个元素

ltrim

保留start到stop之间内的元素,区间外面两边的都被删了。区间也是闭区间。start和stop是下标。

语法:

ltrim key start stop

可以看到,下标2-5之间的元素多存在,其它的元素都没了。 

 

 lset

根据下标修改元素。

语法:

lset key index element

下面是将下标为2的元素5修改为99。 

 

此处如果给的index超出范围,会直接越界报错。 

blpop / brpop

阻塞:当前线程不走了,代码不继续执行了,会在满足一定的条件之后,被唤醒。

blpop和brpop的b就是block阻塞。

redis中的list的阻塞,只支持"队列为空"的情况。

阻塞的特性

  • 如果list中存在元素,blpop和brpop就和lpop以及rpop作用相同。
  • 但如果list中元素为空,blpop和brpop就会产生阻塞,一直阻塞到list不空为止。
  • 在使用blpop和brpop的时候,是可以显示设置阻塞时间的,不一定是无休止的等待。
  • 阻塞期间redis可以执行其它的命令。 
  • blpop和brpop可以同时尝试获取多个key列表的元素,多个key对应的多个list,这多个list哪个有元素了,就会返回哪个元素。
  • 如果多个客户端同时对一个key执行pop,则最先执行命令的客户端会得到返回的结果。

语法:

blpop key [key ...] timeout

此处可以指定一个key或者多个key,每个key都对应一个list,如果这些list有任意一个非空,那么blpop都能把这里的元素给获取到从而立即返回,如果这些list都是空,那么就阻塞等待,等待其它客户端往这些list中插入元素。此处可以指定超时时间,这里timeout的超时时间单位是秒。reids6中允许设定成小数,redis5中,超时时间只能是整数。

1)针对非列表进行操作

返回的结果相当于一个pair(二元组),一方面是告诉我们当前的数据来自哪个key,一方面告诉我们取到的数据是什么。lpop本来就是头删,因此返回1。

2)针对空列表进行操作 

我使用del将key清除了,然后在对key进行lpop操作。

我们可以看到被阻塞了。这里阻塞时间设置了100秒。

此时我们在开启一个客户端,当我右边的客户端往key里插入数据一敲回车之后,左边客户端立刻返回了结果,告诉我们得到的结果1来自于key,它等待了96.99秒。

 3)针对多个key进行操作,只要任意一个key有数据就立刻返回。

brpop和blpop效果完全一致 ,此处就不介绍了,只不过一个是头删一个是尾删。

这两组命令有啥用呢?此处这两阻塞命令用途主要是用来作为"消息队列"。但是实际用到的场景几乎很少,了解它们的作用用途即可。

命令总结

操作类型命令时间复杂度
添加rpush key value [value...]O(k),k是元素个数
lpush key value [value...]       O(k),k是元素个数
linsert key before | after pivot valueO(n), n是pivot距离头尾的距离
查找lrange key start endO(s + n),s是start偏移量 n是start到end
lindex key indexO(n), n是索引的偏移量
len keyO(1)
删除lpop keyO(1)
rpop keyO(1)
lrem key count valueO(k),k是元素个数
ltrim key start endO(k),k是元素个数
修改lset key index valueO(n), n是索引的偏移量
阻塞操作blpop brpopO(1)

编码方式

ziplist(压缩列表):把数据按照更紧凑的压缩形式进行表示的,节省空间,当元素个数多了,操作起来效率会降低。

linkedlist(链表):如果元素多了会使用链表来应对数据多的时候,虽然空间比ziplist开销更多,但效率更高。

quicklist:相当于是链表和压缩链表的结合,整体还是一个链表,链表的每个节点是一个压缩列表,每个压缩列表都不让它太大,同时再把多个压缩列表通过链式结果连起来。

redis3之后都是用的quicklist,而之前的版本使用的是ziplist和linkedlist。

object encoding 可以查看key的编码方式。

相关文章:

Redis数据结构——list

目录 列表命令 lpush lrange lpushx rpush rpushx lpop rpop lindex linsert llen lrem ltrim lset blpop / brpop 命令总结 编码方式 list相当于数组或者顺序表,但并不是简单的数组,更接近于C中的"双端队列"(deque)。 最左侧的下标…...

World of Warcraft [CLASSIC] BigFoot BiaoGe

World of Warcraft [CLASSIC] BigFoot BiaoGe 金团表格插件 设置60秒拍卖装备时间 ALT 鼠标左键,点击装备,弹出对话框,填写 1)拍卖时间默认60秒,起拍价, 2)点击【开始拍卖】 团队所有安装了…...

CentOS Docker 安装指南

CentOS Docker 安装指南 引言 Docker 是一个开源的应用容器引擎,它允许开发者打包他们的应用以及应用的依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。Docker 容器是完全使用沙箱机制,相互之…...

PHP:phpstudy无法启动MySQL服务问题解决

文章目录 一、问题说明二、解决问题 一、问题说明 我的Windows10系统,之前安装过MySQL5.7的版本。 然后,用phpstudy安装MySQL8,并启动MySQL8。 发生无法启动的情况。 二、解决问题 1、删除本地MySQL7的服务 net stop MySQL //这里的服务名…...

【电控笔记z29】扰动估测器DOB估测惯量J-摩擦系数B

基本原理 扰动估测器的核心思想是通过向电机系统施加特定的扰动信号,观察系统响应的变化,然后利用系统的动态模型和控制理论来估计未知参数,如惯量和摩擦系数 。一般基于电机的运动方程建立数学模型,结合观测到的电机实际运行数据…...

STM32-I2C通信外设

目录 一:I2C外设简介 二:I2C外设数据收发 三:I2C的复用端口 四:主机发送和接收 五:硬件I2C读写MPU6050 相关函数: 1.I2C_ GenerateSTART 2.I2C_ GenerateSTOP 3.I2C_ AcknowledgeConfig 4.I2C…...

计算机二级MS之PPT

声明:跟着大猫和小黑学习随便记下一些笔记供大家参考,二级考试之前将持续更新,希望大家二级都能轻轻松松过啦,过了二级的大神也可以在评论区留言给点建议,感谢大家!! 文章目录 考题难点1cm25px…...

Spring Boot 3 整合 MinIO 实现分布式文件存储

引言 文件存储已成为一个做任何应用都不可回避的需求。传统的单机文件存储方案在面对大规模数据和高并发访问时往往力不从心,而分布式文件存储系统则提供了更好的解决方案。本篇文章我将基于Spring Boot 3 为大家讲解如何基于MinIO来实现分布式文件存储。 分布式存…...

C++ Primer 交换操作

欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...

分布式中间件:Redis介绍

目录 Redis 概述 Redis 的特点 高性能 丰富的数据结构 持久化 分布式特性 简单易用 Redis 的数据结构 字符串(String) 哈希(Hash) 列表(List) 集合(Set) 有序集合&…...

软件测试的基础入门(二)

文章目录 一、软件(开发)的生命周期什么是生命周期软件(开发)的生命周期需求分析计划设计编码测试运行维护 二、常见的开发模型瀑布模型流程优点缺点适应的场景 螺旋模型流程优点缺点适应的场景 增量模型和迭代模型流程适应的场景…...

学之思社区版考试系统docker-compose部署

参考 开源项目-Docker部署学之思管理系统 安装docker sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Bas…...

深度优先搜索(DFS)和广度优先搜索(BFS)——c#实现

一、深度优先搜索(DFS) 原理: 沿着分支尽可能深入,直到到达叶子节点,然后回溯探索其他分支 类似走迷宫时优先选择一条路走到黑,碰壁再回退 数据结构:栈(Stack)或递归实…...

什么是hive

Apache Hive 是一个基于 Hadoop 生态系统构建的数据仓库工具,主要用于处理和分析大规模的结构化数据。它允许用户通过类似 SQL 的查询语言(HiveQL)进行数据操作,而无需直接编写复杂的 MapReduce 程序。以下是 Hive 的核心特点和应…...

JVM详解

目录 一.JVM的概念 1. 什么是JVM? 2.JVM用来干什么? 二JVM运行流程 JVM执⾏流程 2.1类加载机制 2.2类加载机制带来了哪些好处? 2.3类加载的过程是什么? 2.3.1加载 2.3.2验证 2.3.3准备阶段 2.3.4解析阶段 符号引⽤ 直接引⽤ 2.3.5初始化阶段 2.4类加载器 什么…...

PCA(主成分分析)核心原理

一、PCA(主成分分析)核心原理 即主成分分析技术,又称主分量分析技术,旨在利用降维的思想,把多指标转化为少数几个综合指标。在统计学中,主成分分析PCA是一种简化数据集的技术。它是一个线性变换。这个变换…...

DeepSeek私有化部署6:openEuler 24.03-LTS-SP1安装Open WebUI

Open WebUI是一个 Open WebUI 是一个可扩展的、功能丰富、用户友好的自托管 AI 平台,专为完全离线运行而设计。 它支持多种 LLM 运行环境,包括 Ollama 和 OpenAI 兼容的 API,并内置了用于 RAG 的推理引擎,是一个强大的 AI 部署解决…...

【一文学会 HTML5】

目录 HTML概述基本概念HTML 发展历程HTML 基本结构 网页基本标签标题标签&#xff08;<h1> - <h6>&#xff09;段落标签&#xff08;<p>&#xff09;换行标签&#xff08;<br>&#xff09;水平线标签&#xff08;<hr>&#xff09;注释&#xff0…...

前端题目类型

HTMLCSS常见面试题 HTML标签有哪些行内元素 img、picture、span、input、textarea、select、label 说说你对元素语义化的理解 元素语义化就是用正确的元素做正确的事情。虽然理论上所有html元素都可通过css样式实现相同效果&#xff0c;但这样会使事情复杂化&#xff0c;所以需…...

nodejs学习——nodejs和npm安装与系统环境变量配置及国内加速

nodejs和npm安装与系统环境变量配置及国内加速 下载node-v22.14.0-x64.msi 建议修改为非C盘文件夹 其它步骤&#xff0c;下一步&#xff0c;下一步&#xff0c;完成。 打开CMD窗口查看安装详情 $ node -v v22.14.0 $ npm -v 10.9.2$ npm config list创建node_global和node_c…...

[视频编码]rkmpp 实现硬件编码

mpi_enc_test的命令参数描述说明 命令参数的描述说明如下&#xff1a; 命令参数 描述说明 -i 输入的图像文件。 -o 输出的码流文件。 -w 图像宽度&#xff0c;单位为像素。 -h 图像高度&#xff0c;单位为像素。 -hstride 垂直方向相邻两行之间的距离&#xff0c;单…...

Vue3实战学习(Vue3的基础语法学习与使用(超详细))(3)

目录 &#xff08;1&#xff09;Vue3工程环境准备、项目基础脚手架搭建详细教程。(博客链接) &#xff08;2&#xff09;Vue3的基础语法学习与使用。 &#xff08;1&#xff09;"{{}}"绑定数据。 <1>ref()函数定义变量——绑定数据。 <2>reactive({...})…...

基于multisim的花样彩灯循环控制电路设计与仿真

1 课程设计的任务与要求 &#xff08;一&#xff09;、设计内容&#xff1a; 设计一个8路移存型彩灯控制器&#xff0c;基本要求&#xff1a; 1. 8路彩灯能演示至少三种花型&#xff08;花型自拟&#xff09;&#xff1b; 2. 彩灯用发光二极管LED模拟&#xff1b; 3. 选做…...

EasyRTC嵌入式视频通话SDK的跨平台适配,构建web浏览器、Linux、ARM、安卓等终端的低延迟音视频通信

1、技术背景 WebRTC是一项开源项目&#xff0c;旨在通过简单的API为浏览器和移动应用程序提供实时通信&#xff08;RTC&#xff09;功能。它允许在无需安装插件或软件的情况下&#xff0c;实现点对点的音频、视频和数据传输。 WebRTC由三个核心组件构成&#xff1a; GetUserM…...

【CSS】gap 属性详解

文章目录 一、什么是 gap 属性1. 定义2. 语法3. 默认值 二、gap 属性的基本用法1. 网格布局中的应用2. 弹性布局中的应用3. 单值和双值的区别 三、gap 属性的实际应用场景1. 表单布局优化2. 图片网格布局 四、gap 的注意事项1. 浏览器兼容性2. 替代 margin 的场景3. 不同布局的…...

【招聘精英】

我们公司是一个位于石家庄的一个科技型新型技术公司。主要做人力资源、用工、科技等方面。 有意向回石家庄的或者已经在石家庄的技术大咖、软件大牛、产品大佬、UI大神可以来了解一下。 现在招聘 高级前端开发 高级java开发 其他岗位也可以联系。 有意向的朋友可以私信我。 -…...

qt 操作多个sqlite文件

qt 操作多个sqlite文件 Chapter1 qt 操作多个sqlite文件1. 引入必要的头文件2. 创建并连接多个SQLite数据库3. 代码说明4. 注意事项 Chapter2 qt 多线程操作sqlite多文件1. 引入必要的头文件2. 创建数据库操作的工作线程类3. 在主线程中创建并启动多个工作线程4. 代码说明5. 运…...

【自学笔记】Numpy基础知识点总览-持续更新

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Numpy基础知识点总览目录1. 简介Numpy是什么为什么使用Numpy 2. 数组对象&#xff08;ndarray&#xff09;创建数组数组的属性数组的形状操作 3. 数组的基本操作数组…...

DP 问题 -- LQR中的DP问题

深入地介绍线性二次调节问题&#xff08;Linear Quadratic Regulator, LQR&#xff09;&#xff0c;并详细说明它作为动态规划&#xff08;DP&#xff09;的一个经典应用问题的求解过程。 &#x1f4cc; 一、LQR问题定义&#xff08;最优控制视角&#xff09; LQR 问题是一种特…...

Win7重装不翻车!ISO镜像安全下载渠道+BIOS设置避雷手册

一、写在前面&#xff1a;为什么你需要这份教程&#xff1f; 当电脑频繁蓝屏、系统崩溃甚至无法开机时&#xff0c;重装系统可能是最后的救命稻草。但市面上的教程往往存在三大痛点&#xff1a; ⚠️ 镜像来源不明导致系统被植入后门 ⚠️ 启动盘制作失败反复折腾 ⚠️ 操作失…...

CEF在MFC上的示例工程

CEF 在 MFC 中的使用 工程配置 1、首先创建一个MFC对话框工程 创建完运行测试效果如下 2、MFC工程引入CEF库 将 CEF 目录下的 cef子目录下载解压后放到MFC工程中&#xff1a; 然后在VS中对工程右键 -> 属性 -> C/C -> 常规 -> 附加包含目录&#xff0c;添加“.\…...

#UVM# 关于 config_db 机制中的直线非直线设置和获取讲解

在 UVM 验证环境中,uvm_config_db 是一种强大的机制,用于在不同组件之间传递配置参数。实际应用中,我们经常使用直线和非直线的设置与获取。今天,着重回忆一下这些内容,希望实际中更加方便的使用。 UVM 树结构示例 假设 UVM 树结构如下: uvm_test_top ├── env │ …...

[PWNME 2025] PWN 复现

这种比赛得0也不容易&#xff0c;前边暖声还是能作的。 GOT 指针前溢出&#xff0c;可以溢出到GOT表&#xff0c;然后把后门写上就行 Einstein 这个拿到WP也没复现成&#xff0c;最后自己改了一下。 int __cdecl handle() {int offset; // [rsp8h] [rbp-38h] BYREFunsigne…...

Java网络编程,多线程,IO流综合项目一一ChatBoxes

Java网络编程&#xff0c;多线程&#xff0c;IO流综合小项目一一ChatBoxes 作者&#xff1a;blue 时间&#xff1a;2025.3.7 文章目录 Java网络编程&#xff0c;多线程&#xff0c;IO流综合小项目一一ChatBoxes1.项目介绍2.项目源码剖析2.1客户端源码2.2客户端Sender线程Runn…...

大数据、人工智能、云计算、物联网、区块链序言【大数据导论】

这里是阿川的博客&#xff0c;祝您变得更强 ✨ 个人主页&#xff1a;在线OJ的阿川 &#x1f496;文章专栏&#xff1a;大数据入门到进阶 &#x1f30f;代码仓库&#xff1a; 写在开头 现在您看到的是我的结论或想法&#xff0c;但在这背后凝结了大量的思考、经验和讨论 这是目…...

【算法 C/C++】一维前缀和

2025 - 03 - 08 - 第 68 篇 Author: 郑龙浩 / 仟濹 【一维前缀和】 文章目录 前缀和与差分 - 我的博客1 大体介绍2 计算某些区间的和( 不使用前缀和 )3 计算某些区间的和( 使用前缀和 ) 前缀和与差分 - 我的博客 一维前缀和 【算法 C/C】一维前缀和 一维差分 【算法 C/C】一维…...

【C++】:STL详解 —— 红黑树

目录 平衡二叉查找树 红黑树的概念 红黑树的五大性质 红黑树的效率 红黑树和AVL树的比较 插入与删除操作 内存与实现复杂度 经典性能数据对比 总结 对旋转的基本理解 旋转的作用 左旋&#xff08;Left Rotation&#xff09; 右旋&#xff08;Right Rotation&#xf…...

【A2DP】SBC 编解码器互操作性要求详解

目录 一、SBC编解码器互操作性概述 二、编解码器特定信息元素(Codec Specific Information Elements) 2.1 采样频率(Sampling Frequency) 2.2 声道模式(Channel Mode) 2.3 块长度(Block Length) 2.4 子带数量(Subbands) 2.5 分配方法(Allocation Method) 2…...

Mysql的卸载安装配置以及简单使用

MySQL其它问题已经更新在&#xff1a;MySQL完善配置---可视化-CSDN博客 一、卸载 ①控制面板卸载 ②C盘隐藏项目>ProgramData>mysql相关文件夹&#xff0c;还有Program file下的MySQL文件夹 ③开始菜单栏搜索>服务&#xff0c;找到MySQL相关服务删除&#xff0c;如果再…...

Ubuntu 下 nginx-1.24.0 源码分析 (1)

main 函数在 src\core\nginx.c int ngx_cdecl main(int argc, char *const *argv) {ngx_buf_t *b;ngx_log_t *log;ngx_uint_t i;ngx_cycle_t *cycle, init_cycle;ngx_conf_dump_t *cd;ngx_core_conf_t *ccf;ngx_debug_init(); 进入 main 函数 最…...

驱动开发系列43 - Linux 显卡KMD驱动代码分析(四)- DRM设备操作

一:概述 DRM(Direct Rendering Manager)是Linux内核中的一个子系统,主要负责图形硬件的管理与图形渲染的加速。它为图形驱动提供了一个统一的接口,可以使用户空间程序与图形硬件进行直接交互,而无需通过X服务器或Wayland等显示管理器。DRM不仅用于管理显卡,还处理视频输…...

PAT乙级真题(2014·冬)

大纲 1031、查验身份证-&#xff08;解析&#xff09;-简单题 1032、挖掘机技术哪家强-&#xff08;解析&#xff09;-细节题(┬┬﹏┬┬)&#xff0c;太抠细节了 1033、旧键盘打字-&#xff08;解析&#xff09;-输入格式&#xff01;这才是重点(┬┬﹏┬┬)&#xff0c;让…...

快速使用MASR V3版不能语音识别框架

前言 本文章主要介绍如何快速使用MASR语音识别框架训练和推理&#xff0c;本文将致力于最简单的方式去介绍使用&#xff0c;如果使用更进阶功能&#xff0c;还需要从源码去看文档。仅需三行代码即可实现训练和推理。 源码地址&#xff1a;https://github.com/yeyupiaoling/MA…...

学习笔记:Python网络编程初探之基本概念(一)

一、网络目的 让你设备上的数据和其他设备上进行共享&#xff0c;使用网络能够把多方链接在一起&#xff0c;然后可以进行数据传递。 网络编程就是&#xff0c;让在不同的电脑上的软件能够进行数据传递&#xff0c;即进程之间的通信。 二、IP地址的作用 用来标记唯一一台电脑…...

硬件基础(4):(2)认识ADC参考电压

文章目录 1. **ADC参考电压的定义**2. **如何影响采样值**3. **参考电压的选择**4. **如何选择参考电压**5. **总结** **ADC参考电压&#xff08;Vref&#xff09;**是用于定义ADC采样范围的一个重要参数&#xff0c;以下是对 ADC 参考电压的详细解释&#xff1a; 1. ADC参考电…...

项目中同时使用Redis(lettuce)和Redisson的报错

温馨提示&#xff1a;图片有点小&#xff0c;可以放大页面进行查看... 问题1&#xff1a;版本冲突 直接上图&#xff0c;这个错表示依赖版本不匹配问题&#xff0c;我本地SpringBoot用的是2.7&#xff0c;但是Redisson版本用的3.32.5。 我们通过点击 artifactId跟进去 发现它…...

工程化与框架系列(25)--低代码平台开发

低代码平台开发 &#x1f527; 引言 低代码开发平台是一种通过可视化配置和少量代码实现应用开发的技术方案。本文将深入探讨低代码平台的设计与实现&#xff0c;包括可视化编辑器、组件系统、数据流管理等关键主题&#xff0c;帮助开发者构建高效的低代码开发平台。 低代码…...

在CentOS系统上安装Conda的详细指南

前言 Conda 是一个开源的包管理系统和环境管理系统&#xff0c;广泛应用于数据科学和机器学习领域。本文将详细介绍如何在 CentOS 系统上安装 Conda&#xff0c;帮助您快速搭建开发环境。 准备工作 在开始安装之前&#xff0c;请确保您的 CentOS 系统已经满足以下条件&#x…...

系统思考—组织诊断

“未经过诊断的行动是盲目的。” — 托马斯爱迪生 最近和一家教育培训机构沟通时&#xff0c;发现他们面临一个有意思的问题&#xff1a;每年招生都挺不错&#xff0c;但教师的整体绩效一直提升缓慢&#xff0c;导致师生之间存在长期的不匹配。管理层试了很多办法&#xff0c;…...

项目实战--网页五子棋(对战功能)(9)

上期我们完成了websocket建立连接后的数据初始化&#xff0c;今天我们完成落子交互的具体代码&#xff1a; 这里我们先复习一下&#xff0c;之前约定好的落子请求与响应包含的字段&#xff1a; 1. 发送落子请求 我们在script.js文件中找到落子的相关方法&#xff0c;增加发送请…...