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

Redis 7.x 系列【10】数据类型之有序集合(ZSet)

有道无术,术尚可求,有术无道,止于术。

本系列Redis 版本 7.2.5

源码地址:https://gitee.com/pearl-organization/study-redis-demo

文章目录

    • 1. 概述
    • 2. 常用命令
      • 2.1 ZADD
      • 2.2 ZCARD
      • 2.3 ZSCORE
      • 2.4 ZRANGE
      • 2.5 ZREVRANGE
      • 2.6 ZRANK
      • 2.7 ZREM
      • 2.8 ZPOPMIN
      • 2.9 ZPOPMAX
      • 2.10 ZINCRBY
      • 2.11 集合运算
    • 3. 应用场景

1. 概述

ZSet 是一种有序集合类型,可以存储不重复的元素,并且给每个元素赋予一个 double 类型的排序权重值(score)。

2. 常用命令

ZSet 相关所有命令:

命名描述
BZMPOP按照指定的排序方式推出多个队列中指定数量的元素
BZPОPMAXZPOPMAX 的阻塞版本,作用相同,只是在目标集合中没有元素时会阻塞,timeout 参数指定了过期时间 (0 表示永不超时)
BZPOPMINZPOPMAX 一样,只是返回 score 最小的
ZADD向有序集合添加一个或多个成员,或者更新已存在成员的分数
ZCARD获取有序集合的成员数
ZCOUNT计算在有序集合中指定区间分数的成员数
ZDIFF返回集合之间的差集
ZDIFFSTORE返回集合之间的差集,并将结果存储在另一个新的有序集合中
ZINCRBY有序集合中对指定成员的分数加上增量 increment
ZINTER用于计算多个有序集合的交集
ZINTERCARD用于计算多个有序集合的交集,并返回成员个数
ZINTERSTORE计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key
ZLEXCOUNT计算有序集合中指定区间内成员的数量
ZMPOP弹出一个或多个成员
ZMSCORE从有序集合中获取多个成员的分数(score
ZPOPMAX用于删除并返回集合中分数(score)最高的一个或多个元素。如果集合为空,则命令不执行任何操作
ZPOPMIN用于删除并返回集合中分数(score)最低的一个或多个元素。如果集合为空,则命令不执行任何操作
ZRANDMEMBER随机获取一个或多个元素
ZRANGE获取指定范围内的成员
ZRANGEBYLEX根据成员名称的字典顺序来返回有序集合中指定区间的成员。注意是基于成员名称的字典顺序,而不是分数(score)的大小
ZRANGEBYSCORE返回有序集中指定分数区间内的成员,分数从高到低排序
ZRANGESTORE绍 返回集合中指定排名范围内的成员,并将结果存储到指定key
ZRANK返回有序集合中指定成员的索引
ZREM移除有序集合中的一个或多个成员
ZREMRANGEBYLEX移除有序集合中给定的字典区间的所有成员
ZREMRANGEBYRANK移除有序集合中给定的排名区间的所有成员
ZREMRANGEBYSCORE移除有序集合中给定的分数区间的所有成员
ZREVRANGE返回有序集中指定区间内的成员,通过索引,分数从高到底
ZREVRANGEBYLEX根据字典范围返回成员,返回的成员顺序是反向的,即从高到低的字典顺序
ZREVRANGEBYSCORE返回指定分数范围内的成员,并按照分数从高到低进行排序
ZREVRANK返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
ZSCAN迭代有序集合中的元素(包括元素成员和元素分值)
ZSCORE返回有序集中,成员的分数值
ZUNION计算一个或多个有序集的并集
ZUNIONSTORE计算一个或多个有序集的并集,并存储在新的 key

2.1 ZADD

ZADD 命令用于将一个或多个元素及其 score 值加入到有序集 key 中。

注意事项:

  • 如果某个 member 已经是有序集的成员,那么更新这个 memberscore 值,并通过重新插入这个 member 元素,来保证该 member 在正确的位置上。
  • 如果有序集合 key 不存在,则创建一个空的有序集并执行 ZADD 操作。
  • key 存在但不是有序集类型时,返回一个错误。
  • score 值可以是整数值或双精度浮点数,score 可为正也可以为负。
  • 获取一个成员当前的分数可以使用 ZSCORE 命令,也可以用它来验证成员是否存在。

基本语法:

ZADD key [NX|XX] [CH] [INCR] score member [score member …]

添加单个元素:

redis> ZADD page_rank 10 google.com
(integer) 1

添加多个元素:

redis> ZADD page_rank 9 baidu.com 8 redis.com.cn
(integer) 2redis> ZRANGE page_rank 0 -1 WITHSCORES
1) "redis.com.cn"
2) "8"
3) "baidu.com"
4) "9"
5) "google.com"
6) "10"

添加已存在元素,且 score 值不变:

redis> ZADD page_rank 10 google.com
(integer) 0redis> ZRANGE page_rank 0 -1 WITHSCORES  # 没有改变
1) "redis.com.cn"
2) "8"
3) "baidu.com"
4) "9"
5) "google.com"
6) "10"

添加已存在元素,但是改变 score 值:

redis> ZADD page_rank 6 redis.com.cn
(integer) 0redis> ZRANGE page_rank 0 -1 WITHSCORES  # redis.com.cn 元素的 score 值被改变
1) "redis.com.cn"
2) "6"
3) "baidu.com"
4) "9"
5) "google.com"
6) "10"

ZADD 命令支持参数,参数位于 key 名字和第一个 score 参数之间(GTLTNX 三者互斥不能同时使用):

  • XX: 仅更新存在的成员,不添加新成员。
  • NX:不更新存在的成员,只添加新成员。
  • LT: 更新新的分值比当前分值小的成员,不存在则新增。
  • GT: 更新新的分值比当前分值大的成员,不存在则新增。
  • CH:返回变更成员的数量。变更的成员是指新增成员 和 score 值更新的成员,命令指明的和之前 score 值相同的成员不计在内。 在通常情况下,`ZADD 返回值只计算新添加成员的数量。
  • INCRZADD 使用该参数与 ZINCRBY 功能一样。一次只能操作一个 score-element 对。

Redis 有序集合的分数使用双精度 64 位浮点数表示。在 Redis 所支持的平台上,称为 IEEE 754 floating point number,它能包括的整数范围是-(2^53) +(2^53)。或者说是-90071992547409929007199254740992。更大的整数在内部用指数形式表示,所以,如果为分数设置一个非常大的整数,你得到的是一个近似的十进制数。

有序集合按照分数以递增的方式进行排序。相同的成员(member)只存在一次,有序集合不允许存在重复的成员。 分数可以通过 ZADD 命令进行更新或者也可以通过 ZINCRBY 命令递增来修改之前的值,相应的他们的排序位置也会随着分数变化而改变。

有序集合里面的成员是不能重复的都是唯一的,但是,不同成员间有可能有相同的分数。当多个成员有相同的分数时,他们将是按字典排序(ordered lexicographically)(仍由分数作为第一排序条件,然后,相同分数的成员按照字典序排序)。

字典顺序排序用的是二进制,它比较的是字符串的字节数组。如果用户将所有元素设置相同分数(例如 0 ),有序集合里面的所有元素将按照字典顺序进行排序,范围查询元素可以使用 ZRANGEBYLEX 命令(注:范围查询分数可以使用ZRANGEBYSCORE 命令)。

2.2 ZCARD

ZCARD 命令用于返回有序集的成员个数,当 key 不存在时,返回 0 。

基本语法:

ZCARD key 

示例:

redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZCARD myzset
(integer) 2

2.3 ZSCORE

ZSCORE 命令用于返回有序集 key.中成员 member 的分数,返回值为字符串格式的双精度浮点数。如果有不存在的 member ,或者 key 不存在,返回 nil

基本语法:

ZSCORE key member

示例:

redis> ZADD myzset 1 "one"
(integer) 1
redis> ZSCORE myzset "one"
"1"

2.4 ZRANGE

ZRANGE 命令返回有序集中指定区间内的成员,其中成员的按分数值递增(从小到大)来排序,具有相同分数值的成员按字典序排列。

注意事项:

  • 如果你需要成员按值递减来排列,请使用 ZREVRANGE命令。
  • 下标参数 startstop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。
  • 也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
  • startstop 都是包含在内的区间,因此例如 ZRANGE myzset 0 1 将会返回有序集合的第一个和第二个元素。
  • 超出范围的索引不会产生错误。 如果 start 参数的值大于有序集合中的最大索引,或者 start > stop ,将会返回一个空列表。 如果 stop 的值大于有序集合的末尾,会将其视为有序集合的最后一个元素。
  • 可以传递 WITHSCORES 选项,以便将元素的分数与元素一起返回。这样返回的列表将包含 value1,score1,...,valueN,scoreN ,而不是 value1,...,valueN 。 客户端类库可以自由地返回更合适的数据类型(建议:具有值和得分的数组或元组)。

基本语法:

ZRANGE key start stop [WITHSCORES]

简单示例:

redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZADD myzset 3 "three"
(integer) 1
redis> ZRANGE myzset 0 -1
1) "one"
2) "two"
3) "three"
redis> ZRANGE myzset 2 3
1) "three"
redis> ZRANGE myzset -2 -1
1) "two"
2) "three"

WITHSCORES 示例:

redis> ZRANGE myzset 0 1 WITHSCORES
1) "one"
2) "1"
3) "two"
4) "2"

2.5 ZREVRANGE

ZREVRANGE 命令返回有序集中,指定区间内的成员。其中成员的位置按 score 值递减(从高到低)来排列。除了成员排序相反外,其他方面和 ZRANGE 命令一样。

基本语法:

ZREVRANGE key start stop [WITHSCORES]

示例:

redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZADD myzset 3 "three"
(integer) 1
redis> ZREVRANGE myzset 0 -1
1) "three"
2) "two"
3) "one"
redis> ZREVRANGE myzset 2 3
1) "one"
redis> ZREVRANGE myzset -2 -1
1) "two"
2) "one"

2.6 ZRANK

ZRANK 命令返回有序集中成员的排名,其中有序集成员按 score 值从低到高排列。排名从 0 开始,也就是说,分值最低的成员排名为 0

基本语法:

ZRANK key member

示例:

redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZADD myzset 3 "three"
(integer) 1
redis> ZRANK myzset "three"
(integer) 2
redis> ZRANK myzset "four"
(nil)

2.7 ZREM

ZREM 命令用于从有序集合中删除指定的成员,如果 member 不存在则被忽略。当 key 存在,但是不是有序集合类型时,返回类型错误。

基本语法:

ZREM key member [member ...]

示例:

redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZADD myzset 3 "three"
(integer) 1
redis> ZREM myzset "two"
(integer) 1
redis> ZRANGE myzset 0 -1 WITHSCORES
1) "one"
2) "1"
3) "three"
4) "3"

2.8 ZPOPMIN

ZPOPMIN 删除并返回最多 count 个有序集合 key 中最低得分的成员。返回值为删除的元素和分数列表。

注意事项:

  • 如未指定,count 的默认值为 1
  • 指定一个大于有序集合的候选总数的 count 不会产生错误。
  • 当返回多个元素时候,得分最低的元素将是第一个元素,然后是分数较高的元素。

基本语法:

ZPOPMIN key [count]

示例:

redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZADD myzset 3 "three"
(integer) 1
redis> ZPOPMIN myzset
1) "one"
2) "1"

2.9 ZPOPMAX

ZPOPMAX 删除并返回最多 count 个有序集合 key 中的最高得分的成员。返回值为删除的元素和分数列表。

注意事项:

  • 如未指定,count 的默认值为 1
  • 指定一个大于有序集合的候选总数的 count 不会产生错误。
  • 当返回多个元素时候,得分最高的元素将是第一个元素,然后是分数较低的元素。

基本语法:

ZPOPMAX key [count]

示例:

redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZADD myzset 3 "three"
(integer) 1
redis> ZPOPMAX myzset
1) "three"
2) "3"

2.10 ZINCRBY

ZINCRBY 为有序集 key 的成员 memberscore 值加上增量 increment 。返回值为以字符串形式表示的成员的新 score 值(双精度浮点数)。

注意事项:

  • key 不存在,或 member 不是 key 的成员时, ZINCRBY key increment member 等同于 ZADD key increment member
  • key 不是有序集类型时,返回"ERR WRONGTYPE Operation against a key holding the wrong kind of value"
  • score 值可以是字符串形式表示的整数值或双精度浮点数。
  • 可以通过传递一个负数值 increment ,让 score 减去相应的值,比如 ZINCRBY key -2 member ,就是让 memberscore 值减去 2

基本语法:

ZINCRBY key increment member

示例:

redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZINCRBY myzset 2 "one"
"3"
redis> ZRANGE myzset 0 -1 WITHSCORES
1) "two"
2) "2"
3) "one"
4) "3"

2.11 集合运算

Set 一样,也支持集合运算:

    • ZINTER
    • ZINTERCARD
    • ZINTERSTORE
    • ZUNION
    • ZUNIONSTORE
    • ZDIFF
    • ZDIFFSTORE

3. 应用场景

ZSetSet 的基础上增加了分值排序,常用于排行榜场景,比如热搜、成绩排名等。
在这里插入图片描述

例如,添加搜索消息,并初始化访问值为 1

localhost:0>ZADD msg_rank 1 msg_1
"1"
localhost:0>ZADD msg_rank 1 msg_2
"1"
localhost:0>ZADD msg_rank 1 msg_3
"1"

用户点击消息时,增加访问次数:

"1"
localhost:0>ZINCRBY msg_rank 1 msg_2
"1"
localhost:0>ZINCRBY msg_rank 1 msg_3
"2"
localhost:0>ZINCRBY msg_rank 1 msg_3
"3"

显示热搜前十排行榜:

localhost:0>ZREVRANGE msg_rank 0 9 WITHSCORES1)  "msg_3"2)  "3"3)  "msg_2"4)  "1"5)  "msg_1"6)  "1"

相关文章:

Redis 7.x 系列【10】数据类型之有序集合(ZSet)

有道无术,术尚可求,有术无道,止于术。 本系列Redis 版本 7.2.5 源码地址:https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 常用命令2.1 ZADD2.2 ZCARD2.3 ZSCORE2.4 ZRANGE2.5 ZREVRANGE2.6 ZRANK2.7…...

操作系统-文件的物理结构(文件分配方式)

文章目录 总览文件块和磁盘块连续分配顺序访问直接访问(随机访问)为什么连续分配同时支持这两种访问模式? 链接分配隐式链接显示链接小结索引分配链接方案多层索引混合索引小结 总结 总览 文件数据存放在外存中 文件块和磁盘块 文件内通过逻…...

Spring Boot集成jsoup实现html解析

1.什么是jsoup jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据,可操作 HTML 元素、属性、文本。 JSo…...

[240629] 阿里云揭秘其数据中心设计和自研网络,用于大语言模型训练 | Jina AI 发布最新的神经网络重排序模型

目录 阿里云揭秘其数据中心设计和自研网络,用于大语言模型训练Jina AI 发布最新的神经网络重排序模型 阿里云揭秘其数据中心设计和自研网络,用于大语言模型训练 阿里云近日公布了其专为大型语言模型 (LLM) 训练流量而设计的基于以太网的网络设计&#x…...

【Docker0】网络更改

目录 1. 停止docker服务 2. 关闭docker默认桥接网络接口 3. 从系统删除docker0接口 4. 创建一个名为bridge0的新接口 5. 添加ip地址和子网掩码 6. 启用bridge0接口 7. (如果没起来就执行该句) 8. 查看ip 1. 停止docker服务 sudo service docker…...

IDEA中导入Maven项目

IDEA中导入Maven项目 方式1:使用Maven面板,快速导入项目 打开IDEA,选择右侧Maven面板,点击 号,选中对应项目的pom.xml文件,双击即可 说明:如果没有Maven面板,选择 View > Appe…...

px、em、rem、rpx 作用和用法详解

px px像素(Pixel)。相对长度单位。像素px是相对于显示器屏幕分辨率而言的。 PX特点 IE无法调整那些使用px作为单位的字体大小; 国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位; Firefox能够调整px和em&#xff…...

Linux 常用命令 - dd 【复制及转换文件内容】

简介 dd 命令源自于磁盘复制(disk dump)的缩写,是 Linux 和 Unix 系统中用于转换和复制文件的一个强大工具。它可以在复制过程中进行格式转换,支持不同的块大小,能够直接对硬盘设备进行操作,非常适合进行备…...

全网唯一免费无水印AI视频工具!

最近Morph Studio开始免费公测!支持高清画质,可以上传语音,同步口型,最重要的是生成的视频没有水印! Morph Studio国内就可以访问,可以使用国内邮箱注册(我用的163邮箱),…...

kafka(四)消息类型

一、同步消息 1、生产者 同步发送的意思就是,一条消息发送之后,会阻塞当前线程,直至返回 ack。 由于 send 方法返回的是一个 Future 对象,根据 Futrue 对象的特点,我们也可以实现同 步发送的效果,只需在调…...

Emacs之显示blame插件:blamer、git-messenger(一百四十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…...

【10分钟速通webpack,全流程打包,编译,发包,全干货,附代码 】

需求 后端有个nodejs 基础库,用typescript编写,需要发包到代码仓库上,被其它业务引入。这其中就涉及了: 编译, 打包,发包。 工作流速览 前提依赖 webpack主体 npm install --save-dev webpack webpack…...

设计模式深入解析与实例应用

目录 工厂模式1.简单工厂模式2.工厂方法模式3.抽象工厂模式 策略模式责任链模式概述模板方法模式概述单例模式概述 工厂模式 工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳实践,旨在将对象的创建过程与使用过程分离,以提高代码的…...

服务器数据恢复—异常断电导致RAID6阵列中磁盘出现坏扇区的数据恢复案例

服务器存储数据恢复环境: 一台存储中有一组由12块SAS硬盘组建的RAID6磁盘阵列,划分为一个卷,分配给几台Vmware ESXI主机做共享存储。该卷中存放了大量Windows虚拟机,这些虚拟机系统盘是统一大小,数据盘大小不确定&…...

前端工程化08-新的包管理工具pnpm

1、历史原因解读 pnpm这个东西发布的时间是比较早的,但是在最近一两年的时候才开始流行,甚至是可以说非常的盛行,那么这个包到底是个什么东西的,那么我们先说下,原来的包管理工具到底有那些问题?比如说我们…...

章十九、JavaVUE —— 框架、指令、声明周期、Vue-cli、组件路由、Element

目录 一、 框架 ● vue.js 框架 ● 特点 ● Vue 安装 二、 第一个vue程序 ● 创建项目 ​编辑 ● 导入 vue.js ● 创建vue对象,设置属性,使用模版渲染到页面 介绍 — Vue.js (vuejs.org) 三、 vue指令 ● v-text ● v-html ● v-…...

正则表达式阅读理解

这段正则表达式可以匹配什么呢? 超级复杂的一段正则表达式。 ((max|min)\\s*\\([^\\)]*(,[^\\)]*)*\\)|[a-zA-Z][a-zA-Z0-9]*(_[a-zA-Z][a-zA-Z0-9]*)?(\\*||%)?|[0-9](\\.[0-9])?|\\([^\\)]*(,[^\\)]*)*\\))(\\s*[-*/%]\\s*([a-zA-Z][a-zA-Z0-9]*(_[a-zA-Z][…...

Apache Calcite Linq4j学习

Lin4j简介 Linq4j是Apache Calcite项目中的一个模块,它提供了类似于LINQ(Language-Integrated Query)的功能,用于在Java中进行数据查询和操作。Linq4j可以将逻辑查询转换为物理查询,支持对集合进行筛选、映射、分组等…...

FPGA SATA高速存储设计

今天来讲一篇如何在fpga上实现sata ip,然后利用sata ip实现读写sata 盘的目的,如果需要再速度和容量上增加,那么仅仅需要增加sata ip个数就能够实现增加sata盘,如果仅仅实现data的读写整体来说sata ip设计比较简单,下面…...

MySQL----为什么选择使用MySQL

在我们日常做项目的过程中,不论是个人还是企业,大多数会选择使用MySQL数据库作为后端数据库存储,它到底有什么优势,能够做到如此广为流传呢? 优点 稳定性:MySQL具有良好的稳定性和可靠性,能够保…...

01.音视频小白系统入门(新专栏)

目录 一、基础知识 二、音频 三、视频 四、流媒体服务器 五、收获 音视频技术在远程办公、在线教育、远程医疗等领域的应用广泛。 学习音视频技术有助于提升职业竞争力,满足市场需求。 掌握音视频基础知识对未来发展至关重要,基础不牢会导致后续学习…...

C++:enum枚举共用体union

enum枚举 C继承C的枚举用法 (1)典型枚举类型定义,枚举变量定义和使用 (2)枚举类型中的枚举值常量不能和其他外部常量名称冲突: 举例1宏定义,举例2另一个枚举 // 定义一个名为Color的枚举类型 enum Color {RED, // 红色,默认值…...

动手学深度学习(Pytorch版)代码实践 -计算机视觉-47转置卷积

47转置卷积 import torch from torch import nn from d2l import torch as d2l# 输入矩阵X和卷积核矩阵K实现基本的转置卷积运算 def trans_conv(X, K):h, w K.shapeY torch.zeros((X.shape[0] h - 1, X.shape[1] w - 1))for i in range(X.shape[0]):for j in range(X.shap…...

LinkedIn被封原因和解封方法

对于初识领英和对领英生态规则不熟悉的人来说,很容易造成领英账号被封号(被限制登录)的情况,那么如何才能避免和解决领英帐号被封号(被限制登录)的难题呢? 领英帐号被封号或被限制登录主要会有两类情况。 首先要搞清楚, Linkedi…...

redis sentinel 部署

安装Redis 建议版本不要太低 > 6.2,我这里是redis 7.2.5 curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg echo "deb [signed-by/usr/share/keyrings/redis-archive-keyring.gpg] http…...

spring boot (shiro)+ websocket测试连接不上的简单检测处理

1、用前端连接测试的demo一切正常,但是到了项目中连接不上了 一开始以为是地址错,但是换了apifox测试也是不可以。 2、考虑是shiro进行了拦截了,所以就访问不到了地址,那么就放行。 3、再次用apifox测试,成功了。 当然…...

Jenkins - Python 虚拟环境

Jenkins - Python 虚拟环境 引言Python 虚拟环境创建 Python 虚拟环境安装 virtualenv(可选)创建虚拟环境激活虚拟环境安装依赖包退出虚拟环境(可选)注意 Python 虚拟环境实践 引言 Automation 脚本通常会部署到 Jenkins 上运行&…...

每日一道算法题 面试题 08.08. 有重复字符串的排列组合

题目 面试题 08.08. 有重复字符串的排列组合 - 力扣(LeetCode) Python class Solution:def permutation(self, S: str) -> List[str]:# 以索引记录字符是否用过lelen(S)idx[_ for _ in range(le) ]# 组合得到的字符串combine[]*leans[]# 递归def fu…...

Apache Kylin资源管理全指南:优化你的大数据架构

标题:Apache Kylin资源管理全指南:优化你的大数据架构 摘要 Apache Kylin是一个开源的分布式分析引擎,旨在为大规模数据集提供高性能的SQL查询能力。在Kylin中进行有效的资源管理对于确保查询性能和系统稳定性至关重要。本文将详细介绍如何…...

计算机网络微课堂(湖科大教书匠)TCP部分

计算机网络微课堂(湖科大教书匠)TCP部分 【计算机网络微课堂(有字幕无背景音乐版)】 TCP的流量控制 一般来说,我们希望数据传输得更快一些。但如果发送方把数据发送得过快,接收方就可能来不及接收&#…...

C++ 字符串介绍

在C编程中,字符串是非常重要的数据类型之一。字符串用于表示文本信息,处理字符串是许多程序的基本需求。C提供了多种方式来处理字符串,包括C风格的字符串(C-strings)和C标准库中的std::string类。本文将介绍这两种字符…...

[Cloud Networking] BGP

1. AS (Autonomous System) 由于互联网规模庞大,所以网络会被分为许多 自治系统(AS-Autonomous system)。 所属类型ASN名称IPv4 数量IPv6数量运营商ISPAS3356LEVEL3 - Level 3 Parent, LLC, US29,798,83273,301,954,048互联网企业AS15169GO…...

Typora failed to export as pdf. undefined

变换版本并没有用,调整图片大小没有用 我看到一个博客后尝试出方案 我的方法 解决:从上图中的A4,变为其他,然后变回A4 然后到处成功,Amazing! 参考: Typora 导出PDF 报错 failed to export…...

windows 10 安装tcping 使用教程

1 官网下载:tcping下载 2 复制tcping 到win10系统目录C:\Windows\System32 3 tcping 网址测试,可以指定端口 4 tcping 测试端口联通 5 tcping http模式...

[leetcode hot 150]第一百二十二题,买卖股票的最佳时机Ⅱ

题目: 给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。 在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。 返回 你能获得的 最大…...

openstack Y版在ubuntu22.04上不能创建超过8个cpu的虚拟机问题解决

环境 openstack 版本: Y版25.2.1 操作系统:ubuntu22.04 问题 创建16 vcpu的虚拟机,报错: Failed to build and run instance: libvirt.libvirtError: error from service: GDBus.Error:org.freedesktop.DBus.Error.InvalidArgs…...

全国31省细分产品出口数据集(2002-2022年)

数据简介:整理全国31个省直辖市自治区按hs码分的22类细分产品的出口数据,只包含22类的细分,不包含更细的类目。可用来计算出口产品质量,出口产品技术复杂度等指标,数据区间为2002-2022年。 数据名称:31省细…...

1,Windows-本地Linux 系统(WSL)

目录 第一步电脑设置 第二步安装Ubuntu 第三文件传递 开发人员可以在 Windows 计算机上同时访问 Windows 和 Linux 的强大功能。 通过适用于 Linux 的 Windows 子系统 (WSL),开发人员可以安装 Linux 发行版(例如 Ubuntu、OpenSUSE、Kali、Debian、Arc…...

K8S 角色/组件及部署方式的简单概述

1.宏观架构图 2.角色详情 2.1 Master(Controller Plane) 早期是叫 Master 节点,后期改名为 Controller Plane,负责整个集群的控制和管理 Master 不会干活的(当然你让它干也是会干的,涉及到污点容忍),而是起到访问入口&#xff…...

堆【模板】小根堆堆【模板】大根堆(回)

目录 堆【模板】小根堆 题目描述1 输入1 输出1 样例输入 1 样例输出 1 提示1 代码1 堆【模板】大根堆 题目描述2 输入 输出 样例输入2 样例输出2 提示2 代码2 堆【模板】小根堆 题目描述1 初始小根堆为空,我们需要支持以下3种操作: 操作…...

【JavaScript】JavaScript简介

希望文章能给到你启发和灵感~ 如果觉得文章对你有帮助的话,点赞 关注 收藏 支持一下博主吧~ 阅读指南 JavaScript入门(1)————JavaScript简介开篇说明一、什么是JavaScript二、JavaScript的使用2.1 开发工具的选择…...

pg_rman:备份和恢复管理工具#postgresql培训

pg_rman 是 PostgreSQL 的在线备份和恢复工具。 pg_rman 项目的目标是提供一种与 pg_dump 一样简单的在线备份和 PITR 方法。此外,它还为每个数据库集群维护一个备份目录。用户只需一个命令即可维护包括存档日志在内的旧备份。 #PG培训#PG考试#postgresql考试#pos…...

【小学期】常用基于Swing的七个静态界面

示例1:基本的带按钮和标签的界面 import javax.swing.*; import java.awt.*;public class SimpleSwingApp1 {public static void main(String[] args) {JFrame frame new JFrame("Simple Swing App 1");frame.setDefaultCloseOperation(JFrame.EXIT_ON_C…...

JavaScript高级程序设计(第四版)--学习记录之迭代器与生成器(上)

什么是迭代? 迭代的意思是按照顺序反复多次执行一段程序。循环是迭代机制的基础,因为它可以指定迭代的次数,以及每次迭代要执行的操作。 迭代器模式 迭代器模式描述了一个方案,可以把有些结构称为“可迭代对象” ,这些…...

51单片机第9步_结构和联合

本章重点学习结构和联合。 //结构和联合应用举例 #include <REG51.h> //包含头文件REG51.h,使能51内部寄存器; #include <stdio.h> //包含头文件stdio.h //_getkey();从串口读入一个字符; //putchar();向串口发送一个字节; //printf();向串口发送一串字节; /…...

lua5.3.4的Linux的库文件下载地址

从这个链接选lua5.3.4 Lua Binaries (sourceforge.net) 进入-> 这个页面 LuaBinaries - Browse /5.3.4/Linux Libraries at SourceForge.net 之后就可以下载了。...

网盘挂载系统-知识资源系统-私域内容展示系统

系统介绍&#xff1a; 存储&#xff1a;一共支持约30款云盘存储&#xff0c;其中包括主流的&#xff08;百度网盘、阿里云盘、夸克云盘、迅雷云盘、蓝奏云、天翼云盘&#xff09;&#xff0c;部分展示 以及特别的&#xff08;一刻相册、对象存储、又拍云存储、SFTP、MEGA 网盘…...

水位自动监测摄像机

随着科技的不断进步&#xff0c;水位自动监测摄像机作为现代智能监控技术的重要应用&#xff0c;正在广泛应用于水利工程、防洪管理和环境监测等领域&#xff0c;显著提升了监测效率和数据准确性。水位自动监测摄像机利用高精度摄像头和先进的图像处理技术&#xff0c;能够实时…...

基于SSM+Jsp的疫情居家办公OA系统

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…...

phpstorm2024代码总是提示“no usages”或者“无用法”解决办法

问题&#xff1a;phpstorm2024使用时&#xff0c;总是会提示无用法&#xff0c;如果没有安装中文语言包的情况下会提示&#xff1a;no usages&#xff0c;如果想关闭怎么办&#xff1f; 编译器右上角点击齿轮进入设置&#xff0c;按照下图的方法点击即可关闭。或者在编译器的“…...

自动驾驶水泥搅拌车在梁场的应用(下)

自动驾驶水泥搅拌车在梁场的应用&#xff08;下&#xff09; 北京渡众机器人科技有限公司的自动驾驶水泥搅拌车在梁场&#xff08;也称为预制梁场&#xff09;的应用可以带来多方面的优势和效益&#xff1a; 1. 自动化搅拌和运输 在梁场中&#xff0c;通常需要大量的混凝土搅…...

Pseudo-Label : The Simple and Efficient Semi-Supervised Learning Method--论文笔记

论文笔记 资料 1.代码地址 https://github.com/iBelieveCJM/pseudo_label-pytorch 2.论文地址 3.数据集地址 论文摘要的翻译 本文提出了一种简单有效的深度神经网络半监督学习方法。基本上&#xff0c;所提出的网络是以有监督的方式同时使用标记数据和未标记数据来训练的…...

网络基础:IS-IS协议

IS-IS&#xff08;Intermediate System to Intermediate System&#xff09;是一种链路状态路由协议&#xff0c;最初由 ISO&#xff08;International Organization for Standardization&#xff09;为 CLNS&#xff08;Connectionless Network Service&#xff09;网络设计。…...

源代码防泄漏之反向沙箱方案的经验分享

反向沙箱&#xff08;Reverse Sandbox&#xff09;是一种安全技术&#xff0c;主要用于检测和分析恶意软件的行为。与传统沙箱不同&#xff0c;反向沙箱的重点在于模拟恶意软件的预期运行环境&#xff0c;以诱导恶意软件展示其真实行为。这种技术可以帮助安全专家更深入地理解恶…...

短视频文案提取神器怎么提取抖音视频文案!

很多编导以及视频内容创作者为了提高自己的工作效率还会使用视频转文字提取神器&#xff0c;我们都清楚短视频领域每个平台人群熟悉都有所不同&#xff0c;在分发内容的时候也会调整内容已符合平台属性。 短视频文案提取神器怎么提取抖音视频文案 短视频常见的平台有抖音、西瓜…...

计算机大方向的选择

选专业要了解自己的兴趣所在。 即想要学习什么样的专业&#xff0c;如果有明确的专业意向&#xff0c;就可以有针对性地选择那些专业实力较强的院校。 2.如果没有明确的专业意向&#xff0c;可以优先考虑一下院校。 确定一下自己想要选择综合性院校还是理工类院校或是像财经或者…...

领克07EM-P,一款以豪华舒适为核心理念的汽车,好车值得买

领克07EM-P,一款以豪华舒适为核心理念的汽车,将百万豪车的享受带入了每一个驾驶者的生活。领克07不仅拥有豪华的座椅,真皮包装,还具有加热、通风、按摩等功能,让你在驾驶的过程中享受到无与伦比的舒适感。首先,领克07EM-P的座椅设计充满了人性化的考量。豪华的真皮包装,…...

威兰达卖15.38万元,2.0L/2.5L,油耗5.7L

念寒记得不久前,有好几位车友问过我关于丰田威兰达的问题,其中最关心的就是这款车会不会降价促销,毕竟现在的合资燃油车确实不太好卖,所以我估计还有很多车友都是这样的一个想法。这不,千等万等降价终于被你们给等到了。近日,广汽丰田专门针对对威兰达推出了一项重磅优惠…...

采用Java+ SpringBoot+ IntelliJ+idea开发的ADR药物不良反应监测系统源码

采用Java SpringBoot IntelliJidea开发的ADR药物不良反应监测系统源码 ADR药物不良反应监测系统有哪些应用场景&#xff1f; ADR药物不良反应监测系统有哪些应用场景&#xff1f; ADR药物不良反应监测系统具有广泛的应用场景&#xff0c;以下是一些主要的应用场景&#xff1a…...

全局配置-案例:配置tabBar

一、需求&#xff1a;实现如图所示的tabBar效果 二、实现步骤&#xff1a; 1.拷贝图标资源 把image文件夹拷贝到小程序项目根目录中 图片中包含-active的是选中之后的图标 图片中不包含-active的是默认图标 2.新建3个对应的tab页面 3.配置tabBar选项 &#xff08;1&#xf…...

Java中的ORM框架——myBatis

一、什么是ORM ORM 的全称是 Object Relational Mapping。Object代表应用程序中的对象&#xff0c;Relational表示的是关系型数据库&#xff0c;Mapping即是映射。结合起来就是在程序中的对象和关系型数据库之间建立映射关系&#xff0c;这样就可以用面向对象的方式&#xff0c…...

vs code中编写c++基本使用以及问题总结

vs code基本使用以及总结 launch.json作用 这个文件配置了调试器的设置&#xff0c;允许你定义如何启动和调试你的程序。这包括配置执行路径、传递给程序的参数、环境变量以及特定语言或框架的调试器选项。 常用配置 "version": "0.2.0": 这是配置文件…...