Redis 列表操作实战(全)

目录

LINDEX 获取指定下标元素

LSET 指定下标添加元素

LPUSH 将元素插入列表头

LPUSHX

RPUSH 将元素插入列表尾

RPUSHX

LINSERT 将元素插入列表某位置之前

LLEN 列表长度

LPOP 取列表头元素

RPOP  取列表尾元素

BLPOP 阻塞式取列表头元素

BRPOP 阻塞式取列表尾元素

RPOPLPUSH 取尾元素插入头部

BRPOPPUSH 阻塞取尾元素插入头元素

LRANGE 返回指定区间元素

LREM 移除特定元素

LTRIM 保留特定区间元素


LINDEX 获取指定下标元素

LINDEX key index:返回列表 key 中,下标为 index 的元素。

  • index可以是正数:0为第一个,1为第二个,以此类推
  • index可以是负数:-1为最后一个,-2为倒数第二个元素,以此类推
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> lpush mylist apple
(integer) 1
127.0.0.1:6379> lpush mylist banana
(integer) 2
127.0.0.1:6379> lpush mylist orange
(integer) 3
127.0.0.1:6379> lpush mylist pear
(integer) 4# 0取第一个
127.0.0.1:6379> lindex mylist 0
"pear"# -1取最后一个
127.0.0.1:6379> lindex mylist -1
"apple"
127.0.0.1:6379> lindex mylist 20
(nil)

时间复杂订为O(N),N为下标index经过的元素数量。

返回值

  • 返回列表下标为index位置的值
  • 若index不在列表的区间范围内,返回nil

LSET 指定下标添加元素

LSET key index value:将列表 key 下标为 index 的元素的值设置为 value。

  • 当 index 参数超出范围,或对一个空列表( key 不存在)进行 LSET 时,返回一个错误
  • key必须存在
127.0.0.1:6379> flushdb
OK# key不存在
127.0.0.1:6379> lset mylist 0 apple
(error) ERR no such key# 初始化key 并插入值
127.0.0.1:6379> lpush mylist app
(integer) 1
127.0.0.1:6379> lindex mylist 0
"app"# 用lset
127.0.0.1:6379> lset mylist 0 apple
OK
127.0.0.1:6379> lindex mylist 0
"apple"

时间复杂度为O(N)

  • 表头和表尾,复杂度为O(1)
  • 其它情况为O(N),N为列表的长度

返回值

  • 成功返回OK,否则返回错误信息

LPUSH 将元素插入列表头

LPUSH key value [value ...]:将一个或多个值 value 插入到列表 key 的表头

  • 如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头
  • 如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作
  • 当 key 存在但不是列表类型时,返回一个错误
  • 允许重复插入
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> lpush mylist apple banana orange pear
(integer) 4# 重复插入
127.0.0.1:6379> lpush mylist apple banana orange pear 
(integer) 8# 查看列表数据
127.0.0.1:6379> lrange mylist 0 -1
1) "pear"
2) "orange"
3) "banana"
4) "apple"
5) "pear"
6) "orange"
7) "banana"
8) "apple"

时间复杂度为O(1)。

返回执行LPUSH后的列表长度。

LPUSHX

LPUSHX key value:将值 value 插入到列表 key 的表头,当且仅当 key 存在并且是一个列表。

  • 和 LPUSH相似, 不同的是,当 key 不存在时, LPUSHX 命令什么也不做
127.0.0.1:6379> flushdb
OK# mylist不存在
127.0.0.1:6379> lpushx mylist apple banana orange pear 
(integer) 0# 初始化mylist
127.0.0.1:6379> lpush mylist apple
(integer) 1# lpushx操作
127.0.0.1:6379> lpushx mylist apple banana orange pear 
(integer) 5# 查看mylist数据
127.0.0.1:6379> lrange mylist 0 -1
1) "pear"
2) "orange"
3) "banana"
4) "apple"
5) "apple"

时间复杂度为O(1)。

返回执行LPUSHX后的列表长度。

RPUSH 将元素插入列表尾

RPUSH key value [value ...]

  • 操作与LPUSH相似,只有一点不同是 RPUSH 是从尾部插入(LPUSH从头插入)

RPUSHX

RPUSHX key value

  • 操作与LPUS X相似,只有一点不同是 RPUSHX 是从尾部插入(LPUSHX从头插入)

LINSERT 将元素插入列表某位置之前

LINSERT key BEFORE|AFTER pivot value:将值 value 插入到列表 key 当中,位于值 pivot 之前或之后。

  • 当 pivot 不存在于列表 key 时,不执行任何操作
  • 当 key 不存在时, key 被视为空列表,不执行任何操作
  • 如果 key 不是列表类型,返回一个错误
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> lpush mylist apple
(integer) 1# 插入到apple之前
127.0.0.1:6379> linsert mylist before apple banaba
(integer) 2
# 插入到apple
127.0.0.1:6379> linsert mylist after apple banaba
(integer) 3# pivot不存在
127.0.0.1:6379> linsert mylist after pear banaba
(integer) -1# 清空列表
127.0.0.1:6379> lpop mylist
"banaba"
127.0.0.1:6379> lpop mylist
"apple"
127.0.0.1:6379> lpop mylist
"banaba"
127.0.0.1:6379> lpop mylist
(nil)# key为空或key不存在
127.0.0.1:6379> linsert mylist before apple banana
(integer) 0
127.0.0.1:6379> linsert mylist1 before apple banana
(integer) 0

时间复杂度O(N), N 为寻找 pivot 过程中经过的元素数量

返回执行后的列表长度

  • 若没有找到 pivot ,返回 -1
  • 若key 不存在或为空列表,返回 0

LLEN 列表长度

LLEN key:返回列表长度。

  • 若 key 不存在,则 key 被解释为一个空列表,返回 0
  • 若 key 不是列表类型,返回一个错误
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> lpush mylist apple banana orange pear 
(integer) 4
127.0.0.1:6379> llen mylist
(integer) 4

时间复杂度O(1)。

返回列表 key 的长度。

LPOP 取列表头元素

LPOP key:移除并返回列表 key 的头元素。

  • 若列表为空,返回nil
  • 若key不存在,返回nil
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> lpush mylist apple banana orange pear 
(integer) 4
127.0.0.1:6379> llen mylist
(integer) 4
127.0.0.1:6379> lpop mylist
"pear"# 头元素已不存在
127.0.0.1:6379> lrange mylist 0 -1
1) "orange"
2) "banana"
3) "apple"127.0.0.1:6379> lpop mylist
"orange"
127.0.0.1:6379> lpop mylist
"banana"
127.0.0.1:6379> lpop mylist
"apple"# 列表为空 或 key不存在时
127.0.0.1:6379> lpop mylist
(nil)
127.0.0.1:6379> lpop mylist1
(nil)

时间复杂度为O(1)。

返回移除的头元素

  • 若列表为空 或 key不存在时,返回nil

RPOP  取列表尾元素

RPOP key:操作与LPOP相似

  • RPOP是从尾部移除,LPOP是从头部移除

BLPOP 阻塞式取列表头元素

BLPOP key [key ...] timeout:列表的阻塞式(blocking)弹出原语

  • timeout单位为秒,若为0 表示无限阻塞
  • 它是 LPOP 命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被 BLPOP 命令阻塞,直到等待超时或发现可弹出元素为止
  • 当给定多个 key 参数至少有一个不为空列表,按参数 key 的先后顺序依次检查各个列表,弹出第一个非空列表的头元素
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> lpush mylist apple # 初始化列表并添加一个元素
(integer) 1
127.0.0.1:6379> blpop mylist 10
1) "mylist"
2) "apple"
127.0.0.1:6379> blpop mylist 10
(nil)
(10.05s)    # 超时秒数,未取出数据退出
127.0.0.1:6379> lpush mylist apple # 添加一个元素
(integer) 1# 而mylist2不存在 跳过;mylist存在且不为空,紧接着 command 列表的第一个元素被弹
127.0.0.1:6379> blpop mylist2 mylist 10
1) "mylist" # 弹出元素所属的列表
2) "apple"  # 弹出元素所属的值
  • 所给的key为空 或不存在,命令将阻塞连接
    • 直到等到超时退出
    • 或直到任何一个key有值为止

  • 多客户端执行相同命令时,多个客户端先后放到同一个阻塞队列中,某个key有数据时,先放入阻塞队列的客户端先获取元素

  • 在MULTI/EXEC事务的BLPOP中
    • 事务行为为了保证事务的原子性,是阻止对key进行push操作的,所以在MULTI/EXEC事务中BLPOP与LPOP一样不会阻塞,对空列表返回nil,对非空列表返回头元素
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> multi       # 开启个事务
OK
127.0.0.1:6379(TX)> blpop mylist mylist2 1000    # 对不存在key进行blpop
QUEUED
127.0.0.1:6379(TX)> exec    # 提交事务
1) (nil)                    # 不阻塞立即返回
127.0.0.1:6379> lpush mylist apple               # 创建mylist并初始化一个元素
(integer) 1
127.0.0.1:6379> multi       # 开启个事务
OK
127.0.0.1:6379(TX)> blpop mylist mylist2 1000    # 对非空列表进行blpop
QUEUED
127.0.0.1:6379(TX)> exec    # 提交事务
1) 1) "mylist"              # 返回元素所在的列表2) "apple"               # 返回元素
127.0.0.1:6379> multi       # 开启个事务
OK
127.0.0.1:6379(TX)> blpop mylist mylist2 1000    # 对空列表进行blpop
QUEUED
127.0.0.1:6379(TX)> exec    # 提交事务 
1) (nil)                    # 不阻塞直接返回nil

时间复杂度为o(1)。

返回

  • 返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值
  • 如果列表为空,返回一个 nil

BRPOP 阻塞式取列表尾元素

BRPOP key [key ...] timeout:操作与BLPOP相似

  • 不同点:BRPOP是取第一个非空列表的尾部元素;BLPOP是取第一个非空列表的头部元素。

RPOPLPUSH 取尾元素插入头部

RPOPLPUSH source destination:在一个原子时间内,执行以下两个动作

  • 取出source尾元素,并返回给客户端
  • 从source取出的元素插入到destination列表的头部
127.0.0.1:6379> flushdb
OK# source和dectination均不存在
127.0.0.1:6379> rpoplpush mylist mylist2
(nil)# 初始化一个列表 添加一个元素
127.0.0.1:6379> lpush mylist banana
(integer) 1
127.0.0.1:6379> rpoplpush mylist mylist2
"banana"
127.0.0.1:6379> lrange mylist2 0 -1    # 从mylist中出放入到了mylist2
1) "banana"
127.0.0.1:6379> lrange mylist 0 -1     # 已取出,mylist为空列表
(empty array)127.0.0.1:6379> lpush mylist apple     # mylist再插入元素
(integer) 1
127.0.0.1:6379> rpoplpush mylist mylist2 # 再执行一次rpoplpush
"apple"
127.0.0.1:6379> lrange mylist2 0 -1    # 打印mylist2 证实是插入到表头
1) "apple"
2) "banana"127.0.0.1:6379> rpoplpush mylist mylist2 # mylist为空时执行 rpoplpush 返回nil
(nil)
127.0.0.1:6379> set age 22
OK
127.0.0.1:6379> rpoplpush mylist age    # mylist为空,不管destination是什么数据结构,返回nil
(nil)127.0.0.1:6379> lpush mylist apple
(integer) 1
127.0.0.1:6379> rpoplpush mylist age    # mylist非空,destination是字符串,报错
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> rpoplpush age mylist2   # age非队列,报错
(error) WRONGTYPE Operation against a key holding the wrong kind of value

时间复杂度O(1)。

返回:(RPOPLPUSH是先rpop 再 lpush)

  • source为空队列或source不存在时,返回nil(只执行rpop,不执行lpush)
  • source为非空队列,且destination不存在或为队列,返回source的尾元素,并插入到destination中(destination不存在就创建一个队列,执行rpop和lpush)
  • source存在且不是队列 或 source非空队列且destination不是队列,报错(对非队列key执行rpop)

BRPOPPUSH 阻塞取尾元素插入头元素

BRPOPLPUSH source destination timeout:是 RPOPLPUSH 的阻塞版本

  • 若source为空,则阻塞,直到超时
  • timeout以秒为单位,0表示无限超时
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> brpoplpush mylist mylist2 10 # source不存在或空队列,阻塞超时
(nil)
(10.09s)
127.0.0.1:6379> lpush mylist apple
(integer) 1
127.0.0.1:6379> brpoplpush mylist mylist2 10 # source为非空队列,取出并lpush到mylist2中
"apple"
127.0.0.1:6379> set age 22
OK
127.0.0.1:6379> brpoplpush age mylist mylist2 10    # source不是队列
(error) ERR wrong number of arguments for 'brpoplpush' command
127.0.0.1:6379> brpoplpush mylist2 age 10           # source非空队列,dectination不是队列
(error) WRONGTYPE Operation against a key holding the wrong kind of value
  • 阻塞期间有别的客户端插入元素

时间复杂度O(1)。

返回:

  • source为空队列或source不存在时阻塞,直到超时返回nil 和 超时时间(只执行rpop,不执行lpush);或者有别的客户端向source 插入数据才返回元素 和 等待时间(执行rpop 和 lpush)
  • source为非空队列,且destination不存在或为队列,返回source的尾元素,并插入到destination中(destination不存在就创建一个队列,执行rpop和lpush)
  • source存在且不是队列 或 source非空队列且destination不是队列,报错(对非队列key执行rpop)

LRANGE 返回指定区间元素

LRANGE key start stop:返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定

  • 0表示第一个元素,1表示第二个元素,以此类推
  • -1表示最后一个元素,-2表示倒数第二个元素,以此类推
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> brpoplpush mylist mylist2 0
"banana"
(12.53s)
127.0.0.1:6379> lrange mylist2 0 -1
1) "banana"
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> lpush mylist apple banana orange pear
(integer) 4
127.0.0.1:6379> lrange mylist 0 1
1) "pear"
2) "orange"
127.0.0.1:6379> lrange mylist -2 -1
1) "banana"
2) "apple"
127.0.0.1:6379> lrange mylist 1 0    # start 大于 stop 
(empty array)
127.0.0.1:6379> lrange mylist -1 -2  # start 大于 stop 
(empty array)
127.0.0.1:6379> lrange mylist 100 110 # start 大于列表长度
(empty array)

时间复杂度为O(S+N),S为偏移量 start , N 为指定区间内元素的数量。

返回:

  • 若start 小于等于 stop,返回[start, stop] 区间的元素
  • 若start 大于 stop,返回空列表

LREM 移除特定元素

LREM key count value:根据参数 count 的值,移除列表中与参数 value 相等的元素

  • count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count
  • count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值
  • count = 0 : 移除表中所有与 value 相等的值
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> lrem mylist 0 apple
(integer) 0
127.0.0.1:6379> lpush mylist apple banana apple orange apple pear apple #插入4个apple
(integer) 7
127.0.0.1:6379> lrem mylist 2 apple    # 移除2个apple
(integer) 2
127.0.0.1:6379> lrange mylist 0 -1     # 还剩2个apple
1) "pear"
2) "orange"
3) "apple"
4) "banana"
5) "apple"
127.0.0.1:6379> lrem mylist 0 apple    # 移除所有apple
(integer) 2
127.0.0.1:6379> lrange mylist 0 -1     # 剩0 个apple
1) "pear"
2) "orange"
3) "banana"
127.0.0.1:6379> set age 22
OK
127.0.0.1:6379> lrem age 0 apple       # 对非队列执行lrem
(error) WRONGTYPE Operation against a key holding the wrong kind of value

时间复杂度O(N), N 为列表的长度

返回:

  • 被移除元素的数量
  • 若key不存在,则key视为空列表,返回0
  • 若key存在且不为列表,对非列表执行lrem报错

LTRIM 保留特定区间元素

LTRIM key start stop:只保留指定区间 [start, stop] 内的元素,不在指定区间之内的元素都将被删除

127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> ltrim mylist 0 5    # 不存在的key似为空列表
OK
127.0.0.1:6379> lpush mylist 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
(integer) 15
127.0.0.1:6379> ltrim mylist 0 5    # 保存区间 [0, 5] 的元素
OK
127.0.0.1:6379> lrange mylist 0 -1  # 查看列表元素
1) "15"
2) "14"
3) "13"
4) "12"
5) "11"
6) "10"
127.0.0.1:6379> set age 22           # 对非列表执行ltrim
OK
127.0.0.1:6379> ltrim age 0 5        # 对非列表执行ltrim
(error) WRONGTYPE Operation against a key holding the wrong kind of value

时间复杂度为O(N),N 为被移除的元素的数量

返回:

  • 对列表或不存在key执行ltrim,返回OK
  • 对非列表执行ltrim,报错

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视频监控系统/视频汇聚平台EasyCVR平台页面展示优化

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

企望制造ERP存在远程命令执行漏洞 附POC

文章目录 企望制造ERP存在远程命令执行漏洞 附POC1. 企望制造ERP简介2.漏洞描述3.影响版本4.fofa查询语句5.漏洞复现6.POC&EXP7.整改意见8.往期回顾 企望制造ERP存在远程命令执行漏洞 附POC 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播…

C# OpenCvSharp 图片模糊检测(拉普拉斯算子)

效果 项目 代码 using OpenCvSharp; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Windows.Forms.VisualStyl…

python+django学习资料在线分享系统vue

本站是一个B/S模式系统&#xff0c;采用vue框架作为开发技术&#xff0c;MYSQL数据库设计开发&#xff0c;充分保证系统的稳定性。系统具有界面清晰、操作简单&#xff0c;功能齐全的特点&#xff0c;使得校园资料分享平台管理工作系统化、规范化。技术栈 后端&#xff1a;pyth…

零基础学前端(四)1. 重点讲解 CSS:盒子模型、样式选择器

1. 该篇适用于从零基础学习前端的小白 2. 初学者不懂代码得含义也要坚持模仿逐行敲代码&#xff0c;以身体感悟带动头脑去理解新知识 3. 初学者切忌&#xff0c;不要眼花缭乱&#xff0c;不要四处找其它文档&#xff0c;要坚定一个教授者的方式&#xff0c;将其学通透&#xff…

RK3568平台开发系列讲解(驱动篇)RK3568 I2C总线介绍

🚀返回专栏总目录 文章目录 一、I2C 简介1.1、起始位1.2、停止位1.3、数据传输1.4、应答信号1.5、I2C 写时序1.6、I2C 读时序1.7、I2C 多字节读写时序二、RK3568 I2C 总线介绍沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将讲解RK3568 I2C总线特性。 一、…

使用 K 均值聚类进行颜色分割

介绍 颜色分割是计算机视觉中使用的一种技术,用于根据颜色识别和区分图像中的不同对象或区域。聚类算法可以自动将相似的颜色分组在一起,而不需要为每种颜色指定阈值。当处理具有大范围颜色的图像时,或者当事先不知道确切的阈值时,这非常有用。 在本教程中,我们将探讨如何…

Zipping

Zipping 信息收集端口扫描目录扫描webbanner信息收集 漏洞利用空字节绕过---->失败sqlI-preg_match bypass反弹shell 稳定维持 提权-共享库漏洞 参考&#xff1a;https://rouvin.gitbook.io/ibreakstuff/writeups/htb-season-2/zipping#sudo-privileges-greater-than-stock-…

【ComfyUI】RuntimeError: CUDA error: operation not supported

文章目录 前言解决办法方式一&#xff1a;黑名单策略方式二&#xff1a;启动时添加--disable-cuda-malloc 前言 最近好不容易&#xff0c;安装好ComfyUI后&#xff0c;启动也OK&#xff0c;点击生成图片时&#xff0c;报错了 got prompt model_type EPS adm 0 making attenti…

Postman应用——Collection、Folder和Request

文章目录 Collection新建CollectionCollection重命名保存Request到Collection在Collection下创建Request删除Collection Folder新建FolderFolder重命名保存Request到Folder在Folder下创建Request在Folder下创建Folder删除Folder Request创建临时RequestRequest重命名删除Reques…

【AAAI2023】Spatial-Spectral Transformer for Hyperspectral Image Denoising

论文&#xff1a;https://readpaper.com/paper/4694783227240398849 代码&#xff1a;https://github.com/MyuLi/SST 1、总体介绍 高光谱图像&#xff08;HSI&#xff09;去噪是后续HSI应用的关键预处理过程&#xff0c;但是基于CNN的方法需要在计算效率与非局部特征建模能力之…

如何快速走出网站沙盒期(关于优化百度SEO提升排名)

网站沙盒期是指新建立的网站在百度搜索引擎中无法获得好的排名&#xff0c;甚至被完全忽略的现象。这个现象往往发生在新建立的网站上&#xff0c;因为百度需要时间来评估网站的质量和内容。蘑菇号www.mooogu.cn 为了快速走出网站沙盒期&#xff0c;需要优化百度SEO。以下是5个…

【Linux】【网络】应用层协议:HTTPS

文章目录 HTTPS1. 加密方式2. 数据摘要 \ 数据指纹3. 数字签名 HTTPS 的 工作过程HTTPS 工作过程中的密钥 HTTP HTTPS HTTP&#xff08;HyperText Transfer Protocol&#xff09;&#xff1a; 是客户端浏览器或其他程序与 Web 服务器之间的应用层通信协议。 HTTPS&#xff0…

Mysql002:(库和表)操作SQL语句

目录&#xff1a; 》SQL通用规则说明 SQL分类&#xff1a; 》DDL&#xff08;数据定义&#xff1a;用于操作数据库、表、字段&#xff09; 》DML&#xff08;数据编辑&#xff1a;用于对表中的数据进行增删改&#xff09; 》DQL&#xff08;数据查询&#xff1a;用于对表中的数…

FFMpeg zoompan 镜头聚焦和移动走位

案例 原始图片 # 输出帧数&#xff0c;默认25帧/秒&#xff0c;25*4 代表4秒 # s1280x80 # 输出视频比例&#xff0c;可以设置和输入图片大小一致 # zoom0.002 表示每帧放大的倍数&#xff0c;下面代码是25帧/每秒 * 4秒&#xff0c;共1000帧 # 最终是 0.002*25*4 0.2&…

Cesium 生成点位坐标

文章目录 需求分析1. 点击坐标点实现2. 输入坐标实现 需求 用 Cesium 生成点位坐标&#xff0c;并明显标识 分析 以下是我的两种实现方式 第一种是坐标点击实现 第二种是输入坐标实现 1. 点击坐标点实现 //点位坐标getLocation() {this.hoverIndex 0;let that this;this.view…

VR全景需要加盟吗?简述VR全景加盟的意义

对于一个刚开始了解VR全景行业的新人来说&#xff0c;VR全景不是有软件、有设备、会拍摄就行了吗&#xff1f;为什么还要找全景平台进行加盟呢&#xff1f;VR全景加盟的作用又是什么呢&#xff1f;那么&#xff0c;我们就不得不多问几个问题了&#xff0c;例如不加盟的话&#…

马蹄集 oj赛(第十一次)

目录 除法2 tax 约数个数 约数之和 全部相同 石头剪刀布 模数 余数之和 数树 除法 除法2 黄金时间限制:1秒占用内存: 128 M难度: 给定n&#xff0c;求 ”i*[n/]&#xff0c;[] 表示对 取下整 格式 一个正整数n。输入格式: 输出格式:一个数表示答案 样例1 输入:4 输出…

软件测试-基本概念

软件测试-基本概念 1.什么是软件测试 测试指的是对我们生产出来的产品特性进行一些校验&#xff0c;例如对传感器、手机等的测试&#xff0c;而软件测试是对我们开发出的软件进行校验是否存在问题&#xff0c;测试软件特性是否符合用户需求。 2.软件测试的基本概念 软件测试…

sudo+vim+g++/gcc+makefile+进度条

目录 一、信任表中加入指定的普通用户&#xff08;使其能使用sudo&#xff09; 二、vim的使用 &#xff08;一&#xff09;基本概念 1. 正常/普通/命令模式(Normal mode) 2. 插入模式(Insert mode) 3. 末行模式(last line mode) &#xff08;二&#xff09;vim正常模式…