Redis - 4 ( 9000 字 Redis 入门级教程 )

news2025/1/3 9:12:32

一: Zset 有序集合

1.1 常用命令

有序集合在 Redis 数据结构中相较于字符串、列表、哈希和集合稍显陌生。它继承了集合中元素不允许重复的特点,但与集合不同的是,有序集合的每个元素都关联一个唯一的浮点分数(score)。通过分数,有序集合中的元素可以按照分数大小进行排序,而不是通过下标。除此之外,有序集合还提供了根据分数或元素范围查找、计算成员排名等功能。合理利用有序集合,可以在实际开发中高效解决排序和排名相关的问题。

数据结构是否允许重复元素是否有序有序依据应用场景
列表索引下标时间轴、消息队列等
集合标签、社交等
有序集合分数排行榜系统、社交等

在这里插入图片描述

1.1.1 ZADD

ZADD 命令用于向有序集合中添加或更新指定元素及其关联的分数。分数需为 double 类型,正无穷(+inf)和负无穷(-inf)也被视为合法分数,返回值为本次添加成功元素的个数,ZADD 相关选项如下:

选项描述
XX仅用于更新已存在的元素,不会添加新元素。
NX仅用于添加新元素,不会更新已存在的元素。
CH默认情况下,ZADD 返回添加的元素个数;指定该选项后,同时返回更新的元素个数。
INCR将指定元素的分数增加指定值,类似 ZINCRBY 的效果;此时只能指定一个元素和对应分数。
ZADD key [NX | XX] [GT | LT] [CH] [INCR] score member [score member ...]
ZADD myzset 1 "one"
(integer) 1

ZADD myzset 1 "uno"
(integer) 1

ZADD myzset 2 "two" 3 "three"
(integer) 2

ZRANGE myzset 0 -1 WITHSCORES
1) "one"
2) "1"
3) "uno"
4) "1"
5) "two"
6) "2"
7) "three"
8) "3"

ZADD myzset 10 one 20 two 30 three
(integer) 0

ZRANGE myzset 0 -1 WITHSCORES
1) "uno"
2) "1"
3) "one"
4) "10"
5) "two"
6) "20"
7) "three"
8) "30"

ZADD myzset CH 100 one 200 two 300 three
(integer) 3

ZRANGE myzset 0 -1 WITHSCORES
1) "uno"
2) "1"
3) "one"
4) "100"
5) "two"
6) "200"
7) "three"
8) "300"

ZADD myzset XX 1 one 2 two 3 three 4 four 5 five
(integer) 0

ZRANGE myzset 0 -1 WITHSCORES
1) "one"
2) "1"
3) "uno"
4) "1"
5) "two"
6) "2"
7) "three"
8) "3"

ZADD myzset NX 100 one 200 two 300 three 400 four 500 five
(integer) 2

ZRANGE myzset 0 -1 WITHSCORES
1) "one"
2) "1"
3) "uno"
4) "1"
5) "two"
6) "2"
7) "three"
8) "3"
9) "four"
10) "400"
11) "five"
12) "500"

ZADD myzset INCR 10 one
"11"

ZRANGE myzset 0 -1 WITHSCORES
1) "uno"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
7) "one"
8) "11"
9) "four"
10) "400"
11) "five"
12) "500"

ZADD myzset -inf "negative infinity" +inf "positive infinity"
(integer) 2

ZRANGE myzset 0 -1 WITHSCORES
1) "negative infinity"
2) "-inf"
3) "uno"
4) "1"
5) "two"
6) "2"
7) "three"
8) "3"
9) "one"
10) "11"
11) "four"
12) "400"
13) "five"
14) "500"
15) "positive infinity"
16) "inf"

1.1.2 ZCARD

ZCARD 命令用于获取有序集合中元素的数量。返回值为有序集合中元素的个数。

ZCARD key
redis> ZADD myzset 1 "one"
(integer) 1

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

redis> ZCARD myzset
(integer) 2

1.1.3 ZCOUNT

ZCOUNT 命令用于返回分数在指定范围内(min 和 max)的元素个数。默认情况下,min 和 max 是包含边界的,可通过 ( 设置为排除边界。返回值为满足条件的元素个数。

ZCOUNT key min max
redis> ZADD myzset 1 "one"
(integer) 1

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

redis> ZADD myzset 3 "three"
(integer) 1

redis> ZCOUNT myzset -inf +inf
(integer) 3

redis> ZCOUNT myzset 1 3
(integer) 3

redis> ZCOUNT myzset (1 3
(integer) 2

redis> ZCOUNT myzset (1 (3
(integer) 1

1.1.4 ZRANGE

ZRANGE 命令用于返回指定区间内的元素,按分数升序排列。通过添加 WITHSCORES 参数,可以同时返回元素及其分数。返回值为区间内的元素列表。

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 WITHSCORES
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"

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"

1.1.5 ZREVRANGE

ZREVRANGE 命令用于返回指定区间内的元素,按分数降序排列。通过添加 WITHSCORES 参数,可以同时返回元素及其分数。返回值为区间内的元素列表。

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 WITHSCORES
1) "three"
2) "3"
3) "two"
4) "2"
5) "one"
6) "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"

1.1.6 ZRANGEBYSCORE

ZRANGEBYSCORE 命令用于返回分数在指定范围内(min 和 max)的元素。默认情况下,min 和 max 是包含边界的,可通过 ( 设置为排除边界。注意:此命令可能在 Redis 6.2.0 之后被废弃,其功能已合并到 ZRANGE 命令中。返回值为区间内的元素列表。

ZRANGEBYSCORE key min max [WITHSCORES]
redis> ZADD myzset 1 "one"
(integer) 1

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

redis> ZADD myzset 3 "three"
(integer) 1

redis> ZRANGEBYSCORE myzset -inf +inf
1) "one"
2) "two"
3) "three"

redis> ZRANGEBYSCORE myzset 1 2
1) "one"
2) "two"

redis> ZRANGEBYSCORE myzset (1 2
1) "two"

redis> ZRANGEBYSCORE myzset (1 (2
(empty array)

1.1.7 ZPOPMAX

ZPOPMAX 命令用于删除并返回有序集合中分数最高的 count 个元素。返回值为包含元素及其分数的列表。

ZPOPMAX key [count]
ZADD myzset 1 "one"
(integer) 1

ZADD myzset 2 "two"
(integer) 1

ZADD myzset 3 "three"
(integer) 1

ZPOPMAX myzset
1) "three"
2) "3"

1.1.8 BZPOPMAX

BZPOPMAX 命令是 ZPOPMAX 的阻塞版本,用于删除并返回有序集合中分数最高的元素。返回值为包含元素及其分数的列表。

BZPOPMAX key [key ...] timeout
redis> DEL zset1 zset2
(integer) 0

redis> ZADD zset1 0 a 1 b 2 c
(integer) 3

redis> BZPOPMAX zset1 zset2 0
1) "zset1"
2) "c"
3) "2"

1.1.9 ZPOPMIN

ZPOPMIN 命令用于删除并返回有序集合中分数最低的 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"

1.1.10 BZPOPMIN

BZPOPMIN 命令是 ZPOPMIN 的阻塞版本,用于删除并返回有序集合中分数最低的元素。返回值为包含元素及其分数的列表。

BZPOPMIN key [key ...] timeout
redis> DEL zset1 zset2
(integer) 0

redis> ZADD zset1 0 a 1 b 2 c
(integer) 3

redis> BZPOPMIN zset1 zset2 0
1) "zset1"
2) "a"
3) "0"

1.1.11 ZRANK

ZRANK 命令用于返回指定元素在有序集合中的排名(按分数升序排列)。返回值为该元素的排名。

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)

1.1.12 ZREVRANK

ZREVRANK 命令用于返回指定元素在有序集合中的排名(按分数降序排列)。返回值为该元素的排名。

ZREVRANK key member
redis> ZADD myzset 1 "one"
(integer) 1

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

redis> ZADD myzset 3 "three"
(integer) 1

redis> ZREVRANK myzset "one"
(integer) 2

redis> ZREVRANK myzset "four"
(nil)

1.1.13 ZSCORE

ZSCORE 命令用于获取指定元素在有序集合中的分数。返回值为该元素的分数。

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

redis> ZSCORE myzset "one"
"1"

1.1.14 ZREM

ZREM 命令用于删除有序集合中指定的元素。返回值为成功删除的元素个数。

ZREM key member [member ...]
ZADD myzset 1 "one"
(integer) 1

ZADD myzset 2 "two"
(integer) 1

ZADD myzset 3 "three"
(integer) 1

ZREM myzset "two"
(integer) 1

ZRANGE myzset 0 -1 WITHSCORES
1) "one"
2) "1"
3) "three"
4) "3"

1.1.15 ZREMRANGEBYRANK

ZREMRANGEBYRANK 命令按分数升序排序,删除指定范围内的元素(左闭右闭)。返回值为成功删除的元素个数。

ZREMRANGEBYRANK key start stop
redis> ZADD myzset 1 "one"
(integer) 1

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

redis> ZADD myzset 3 "three"
(integer) 1

redis> ZREMRANGEBYRANK myzset 0 1
(integer) 2

redis> ZRANGE myzset 0 -1 WITHSCORES
1) "three"
2) "3"

1.1.16 ZREMRANGEBYSCORE

ZREMRANGEBYSCORE 命令用于删除分数在指定范围内的元素(左闭右闭)。返回值为成功删除的元素个数。

ZREMRANGEBYSCORE key min max
redis> ZADD myzset 1 "one"
(integer) 1

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

redis> ZADD myzset 3 "three"
(integer) 1

redis> ZREMRANGEBYSCORE myzset -inf (2
(integer) 1

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

1.1.17 ZINCRBY

ZINCRBY 命令用于为指定元素的分数增加指定的值。返回值为元素更新后的分数。

ZINCRBY key increment member
ZADD myzset 1 "one"
(integer) 1

ZADD myzset 2 "two"
(integer) 1

ZINCRBY myzset 2 "one"
"3"

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

1.1.18 集合间操作

在这里插入图片描述

在这里插入图片描述

1.1.19 ZINTERSTORE

ZINTERSTORE 命令用于计算指定有序集合的交集,并将结果存储到目标有序集合中。交集的分数通过指定的聚合方式和权重计算得出。返回值为目标集合中的元素个数。

ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE <SUM | MIN | MAX>]
redis> ZADD zset1 1 "one"
(integer) 1

redis> ZADD zset1 2 "two"
(integer) 1

redis> ZADD zset2 1 "one"
(integer) 1

redis> ZADD zset2 2 "two"
(integer) 1

redis> ZADD zset2 3 "three"
(integer) 1

redis> ZINTERSTORE out 2 zset1 zset2 WEIGHTS 2 3
(integer) 2

redis> ZRANGE out 0 -1 WITHSCORES
1) "one"
2) "5"
3) "two"
4) "10"

1.1.20 ZUNIONSTORE

ZUNIONSTORE 命令用于计算指定有序集合的并集,并将结果存储到目标有序集合中。并集的分数通过指定的聚合方式和权重计算得出。返回值为目标集合中的元素个数。

ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE <SUM | MIN | MAX>]
redis> ZADD zset1 1 "one"
(integer) 1

redis> ZADD zset1 2 "two"
(integer) 1

redis> ZADD zset2 1 "one"
(integer) 1

redis> ZADD zset2 2 "two"
(integer) 1

redis> ZADD zset2 3 "three"
(integer) 1

redis> ZUNIONSTORE out 2 zset1 zset2 WEIGHTS 2 3
(integer) 3

redis> ZRANGE out 0 -1 WITHSCORES
1) "one"
2) "5"
3) "three"
4) "9"
5) "two"
6) "10"

1.1.21 命令小结

命令时间复杂度描述
zadd key score member [score member …]O(k * log(n)),k 是添加成员的个数,n 是当前有序集合的元素个数添加一个或多个成员到有序集合,并设置分数
zcard keyO(1)获取有序集合中的成员数量
zscore key memberO(1)获取指定成员的分数
zrank key member / zrevrank key memberO(log(n)),n 是当前有序集合的元素个数获取指定成员的排名(升序或降序)
zrem key member [member …]O(k * log(n)),k 是删除成员的个数,n 是当前有序集合的元素个数删除一个或多个指定成员
zincrby key increment memberO(log(n)),n 是当前有序集合的元素个数增加指定成员的分数
zrange key start end [withscores]O(k + log(n)),k 是获取成员的个数,n 是当前有序集合的元素个数获取指定区间内的成员,按分数升序排序
zrevrange key start end [withscores]O(k + log(n)),k 是获取成员的个数,n 是当前有序集合的元素个数获取指定区间内的成员,按分数降序排序
zrangebyscore key min max [withscores]O(k + log(n)),k 是获取成员的个数,n 是当前有序集合的元素个数获取指定分数范围内的成员,按分数升序排序
zrevrangebyscore key max min [withscores]O(k + log(n)),k 是获取成员的个数,n 是当前有序集合的元素个数获取指定分数范围内的成员,按分数降序排序
zcount key min maxO(log(n)),n 是当前有序集合的元素个数获取指定分数范围内的成员数量
zremrangebyrank key start endO(k + log(n)),k 是获取成员的个数,n 是当前有序集合的元素个数删除指定排名范围内的成员
zremrangebyscore key min maxO(k + log(n)),k 是获取成员的个数,n 是当前有序集合的元素个数删除指定分数范围内的成员
zinterstore destination numkeys key [key…]O(n * k) + O(m * log(m)),n 是输入集合最小的元素个数,k 是集合个数,m 是目标集合的元素个数计算多个有序集合的交集并存储到目标有序集合
zunionstore destination numkeys key [key…]O(n) + O(m * log(m)),n 是输入集合总元素个数,m 是目标集合的元素个数计算多个有序集合的并集并存储到目标有序集合

1.2 内部编码

有序集合类型的内部编码有两种:

内部编码类型使用条件描述
ziplist当有序集合的元素个数小于 zset-max-ziplist-entries(默认 128 个),且每个元素的值小于 zset-max-ziplist-value(默认 64 字节)时使用。使用压缩列表结构,能够有效减少内存使用。
skiplist当不满足 ziplist 的条件时使用。使用跳表结构,提供更高的操作效率。
  1. 当元素个数较少且每个元素较小时,内部编码为 ziplist:
127.0.0.1:6379> zadd zsetkey 50 e1 60 e2 30 e3
(integer) 3

127.0.0.1:6379> object encoding zsetkey
"ziplist"
  1. 当元素个数超过 128 个,内部编码 skiplist:
127.0.0.1:6379> zadd zsetkey 50 e1 60 e2 30 e3 ... 省略 ... 82 e129
(integer) 129

127.0.0.1:6379> object encoding zsetkey
"skiplist"
  1. 当某个元素大于 64 字节时,内部编码 skiplist:
127.0.0.1:6379> zadd zsetkey 50 "one string bigger than 64 bytes ... 省略 ..."
(integer) 1

127.0.0.1:6379> object encoding zsetkey
"skiplist"

1.3 使用场景

有序集合的典型应用场景是排行榜系统,例如网站上的热门榜单信息。榜单可以基于多种维度进行排序,例如时间、阅读量或点赞量。在本例中,我们以点赞数为维度,来维护每天的热榜。

  1. 添加用户赞数

例如用户 james 发布了⼀篇文章,并获得 3 个赞,可以使用有序集合的 zadd 和 zincrby 功能:

zadd user:ranking:2022-03-15 3 james

之后如果再获得赞,可以使⽤ zincrby:

zincrby user:ranking:2022-03-15 1 james
  1. 取消用户赞数
zrem user:ranking:2022-03-15 tom
  1. 展示获取赞数最多的 10 个用户
zrevrangebyrank user:ranking:2022-03-15 0 9
  1. 展示用户信息以及用户分数
hgetall user:info:tom
zscore user:ranking:2022-03-15 mike
zrank user:ranking:2022-03-15 mike

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ubuntu 使用samba与windows共享文件[注意权限配置]

在Ubuntu上使用Samba服务与Windows系统共享文件&#xff0c;需要正确配置Samba服务以及相应的权限。以下是详细的步骤&#xff1a; 安装Samba 首先&#xff0c;确保你的Ubuntu系统上安装了Samba服务。 sudo apt update sudo apt install samba配置Samba 安装完成后&#xff0c…

打印进度条

文章目录 1.Python语言实现(1)黑白色(2)彩色&#xff1a;蓝色 2.C语言实现(1)黑白颜色(2)彩色版&#xff1a;红绿色 1.Python语言实现 (1)黑白色 import sys import timedef progress_bar(percentage, width50):"""打印进度条:param percentage: 当前进度百分比…

深度解析 LDA 与聚类结合的文本主题分析实战

🌟作者简介:热爱数据分析,学习Python、Stata、SPSS等统计语言的小高同学~🍊个人主页:小高要坚强的博客🍓当前专栏:《Python之文本分析》🍎本文内容:深度解析 LDA 与聚类结合的文本主题分析实战🌸作者“三要”格言:要坚强、要努力、要学习 目录 引言 技术框架…

点跟踪基准最早的论文学习解读:TAP-Vid: A Benchmark for Tracking Any Point in a Video—前置基础

TAP-Vid: A Benchmark for Tracking Any Point in a Video— TAP-Vid&#xff1a;跟踪视频中任意点的基准、 学习这一篇文章的本来的目的是为了学习一下TAP-NET便于理解后面用到的TAPIR方法的使用。 文章目录 TAP-Vid: A Benchmark for Tracking Any Point in a Video— TAP-V…

C进阶-字符串与内存函数介绍(另加2道典型面试题)

满意的话&#xff0c;记得一键三连哦&#xff01; 我们先看2道面试题 第一道&#xff1a; 我们画图理解&#xff1a; pa&#xff0c;先使用再&#xff0c;pa开始指向a【0】&#xff0c;之后pa向下移动一位&#xff0c;再解引用&#xff0c;指向a【1】&#xff0c;a【1】又指向…

PH47代码框架 24241231 重要更新

仪式感一下&#xff1a;2024年最后一天&#xff0c;发布 PH47 代码框架的一次重要更新。当然这并不是有意的&#xff0c;而是直到现在才把更新的所有工作全部做完&#xff08;希望确实如此&#xff09;。 本次更新要点&#xff1a; 1、加入多IMU支持。本次更新正式加入对 MPU65…

idea报错:There is not enough memory to perform the requested operation.

文章目录 一、问题描述二、先解决三、后原因&#xff08;了解&#xff09; 一、问题描述 就是在使用 IDEA 写代码时&#xff0c;IDEA 可能会弹一个窗&#xff0c;大概提示你目前使用的 IDEA 内存不足&#xff0c;其实就是提醒你 JVM 的内存不够了&#xff0c;需要重新分配。弹…

Python用K-Means均值聚类、LRFMC模型对航空公司客户数据价值可视化分析指标应用|数据分享...

全文链接&#xff1a;https://tecdat.cn/?p38708 分析师&#xff1a;Yuling Fang 信息时代的来临使得企业营销焦点从产品中心转向客户中心&#xff0c;客户关系管理成为企业的核心问题&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 客户关系管理的关键是客…

Linux umami网站统计工具自定义API开发

Linux umami网站统计工具自定义API开发 一、src/queries/analytics/下添加调用sql查询文件&#xff1a;二、src/queries/index.js文件中增加导出模块内容&#xff1a;三、src/pages/api/下根据目录添加接口方法文件&#xff1a;四、构建项目&#xff0c;启动。1、到umami目录&a…

基于SpringBoot的实验室信息管理系统【源码+文档+部署讲解】

系统介绍 视频演示 基于SpringBootVue实现的实验室信息管理系统采用前后端分离的架构方式&#xff0c;系统分为管理员、老师、用户三种角色&#xff0c;实现了用户管理、设备管理、实验室查询、公告、课程、实验室耗材管理、我的等功能 技术选型 开发工具&#xff1a;idea2…

【openGauss】正则表达式次数符号“{}“在ORACLE和openGauss中的差异

一、前言 正则作为一种常用的字符串处理方式&#xff0c;在各种开发语言&#xff0c;甚至数据库中&#xff0c;都有自带的正则函数。但是正则函数有很多标准&#xff0c;不同标准对正则表达式的解析方式不一样&#xff0c;本次在迁移一个ORACLE数据库到openGauss时发现了一个关…

SSM-Spring-IOC/DI对应的配置开发

目录 一、IOC 控制反转 1.什么是控制反转呢 2. Spring和IOC之间的关系是什么呢? 3.IOC容器的作用以及内部存放的是什么? 4.当IOC容器中创建好service和dao对象后&#xff0c;程序能正确执行么? 5.Spring 容器管理什么内容&#xff1f; 6.如何将需要管理的对象交给 …

docker中使用nginx

宿主机和docker中nginx做映射 宿主机中nginx 映射目录 /root/myDockerData/devnginx 在容器中相关位置分别是&#xff1a; 配置文件位置&#xff1a;/etc/nginx/ 日志位置&#xff1a;/var/log/nginx/ 项目位置&#xff1a;/usr/share/nginx/html 如下配置启动命令行&#x…

Rocky Linux下安装meld

背景介绍&#xff1a; meld是一款Linux系统下的用于 文件夹和文件的比对软件&#xff0c;非常常用&#xff1b; 故障现象&#xff1a; 输入安装命令后&#xff0c;sudo yum install meld&#xff0c;报错。 12-31 22:12:17 ~]$ sudo yum install meld Last metadata expirat…

Python中PDF转Word的技术

Python PDF转Word技术概述 在日常办公和数据处理中&#xff0c;经常需要将PDF文档转换为Word文档&#xff0c;以便进行编辑、修改或格式调整。Python作为一种强大的编程语言&#xff0c;提供了多种库和工具来实现这一功能。以下是对Python中PDF转Word技术的详细介绍。 一、技…

混合并行训练框架性能对比

混合并行训练框架性能对比 1. 框架类型 DeepSpeed、Megatron - LM、Colossal - AI、SageMaker、Merak、FasterMoE、Tutel、Whale、Alpa、DAPPLE、Mesh - TensorFlow 2. 可用并行性(Available parallelisms) DNN framework(深度神经网络框架)DP(数据并行,Data Parallelis…

python24-常用的第三方库02:openpyxl模块、pdfplumber模块

一、openpyxl模块 openpyxl 是一个用于读取和写入 Excel 2010 xlsx/xlsm/xltx/xltm 文件的 Python 库。 它允许你以编程方式操作 Excel 文件&#xff0c;包括创建新的工作簿、修改现有的工作簿、添加或删除工作表、读写单元格数据等。 1-1、安装openpyxl模块 验证&#xff1a…

npm ERR! ECONNRESET 解决方法

问题&#xff1a;npm 命令遇到的错误是 ECONNRESET&#xff0c;这通常与网络连接问题相关。设置代理解决问题。 一、查看当前代理设置 npm config get proxy npm config get https-proxy二、设置代理 npm config set proxy http://your-proxy-address:port npm config set h…

单元测试3.0+ @RunWith(JMockit.class)+mock+Expectations

Jmockit使用笔记_基本功能使用Tested_Injectable_Mocked_Expectations_jmockit.class-CSDN博客 测试框架Jmockit集合junit使用 RunWith(JMockit.class) 写在测试案例类上的注解 Tested 在测试案例中,写在我们要测试的类上面, 一般用实现类 Injectable 在测试案例中声明…

网络渗透测试实验二:网络嗅探与身份认证

1.实验目的和要求 1、通过使用Wireshark软件掌握Sniffer&#xff08;嗅探器&#xff09;工具的使用方法&#xff0c;实现捕捉HTTP等协议的数据包&#xff0c;以理解TCP/IP协议中多种协议的数据结构、通过实验了解HTTP等协议明文传输的特性。 2、研究交换环境下的网络嗅探实现…