redis数据类型:list
数据结构
- 源码版本:7.2.2
- 路径:
src/adlist.h
关于list的 头文件中涉及到的这三个结构体如下
/* Node, List, and Iterator are the only data structures used currently. */
# 节点
typedef struct listNode {struct listNode *prev; # 前元素的指针struct listNode *next; # 后元素的指针void *value; # 节点的值
} listNode;
# 遍历
typedef struct listIter {listNode *next; 相邻节点的指针int direction; # 遍历方向
} listIter;
# list
typedef struct list {listNode *head; # 链表的头指针listNode *tail; # 链表的尾指针void *(*dup)(void *ptr); # Duplicate .void (*free)(void *ptr); # 释放资源int (*match)(void *ptr, void *key); # 匹配unsigned long len; # list 的长度
} list;
简介
Redis lists are linked lists of string values. Redis lists are frequently used to:
- Implement stacks and queues.
- Build queue management for background worker systems.
list 结构示意图,可参考 python 中的 list,特别是范围查找逻辑
list 类型支持双向查找:
- 正序查找:如 0 到 5,从头开始算起,
- 负序查找:如 0 到 -5,
通常用于实现栈和队列:
- 栈:先进后出,使用 list 的 lpush 可以实现栈的功能,依次向前插入数据,按正序索引取值的时候,可以实现栈的功能。
- 队列:先进先出,使用 rpush可以实现队列的功能,依次向后插入数据,按正序索引取值的时候,可以实现队列的功能。
The max length of a Redis list is 2 32 − 1 2^{32} - 1 232−1 (4,294,967,295) elements.
list 的相关命令配合使用的应用场景:
- 栈和队列:插入和弹出命令的配合,亦可实现栈和队列的功能
实现哪种数据结构,取决于插入和弹出
命令的配合,如 左插右出
或右插左出
:这两种种方式实现先进先出的数据结构,即异侧配合
可以实现队列结构。左插左出
或者右插右出
:这两种方式可以实现先进后出的数据结构,即同侧配合
可以实现栈结构。- 消息队列:实现
发布与订阅
模型。- 生产者使用尾部插入命令
RPUSH
将消息插入 list; 消费者使用LPOP
命令从 list 的左边消费消息 - 生产者使用尾部插入命令
LPUSH
将消息插入 list; 消费者使用RPOP
命令从 list 的左边消费消息
- 生产者使用尾部插入命令
- 限流:
- 每次请求时向 List 添加时间戳,通过检查 List 长度来决定是否允许新的请求,实现 API 请求频率控制。
- 缓存记录:聊天记录、文章推送,热点数据等。
命令
插入元素
- 头部插入:
LPUSH
adds a new element to the head of a list;
LPUSH key element [element ...]
该命令会向list 的头部依次插入给定的元素,在读取该命令插入数据的时候,就像在使用栈一样,元素先进后出。
- 逐次插入元素示意图,这种方式可以将 list 当栈来使用
127.0.0.1:6379> lpush block jj1
(integer) 1
127.0.0.1:6379> lindex block 0
"jj1"
127.0.0.1:6379> lpush block jj2
(integer) 2
127.0.0.1:6379> lindex block 0
"jj2"
127.0.0.1:6379>
- 批量插入元示意图,取出元素的时候,可以发现符合栈的结构特点:先进后出。
127.0.0.1:6379> lpush block jj1 jj2 jj3 jj4 jj5
(integer) 5
上述命令执行逻辑是,元素依次入栈。jj1
将位于栈低,jj5
将位于栈顶。
127.0.0.1:6379> lrange block 0 5
1) "jj5"
2) "jj4"
3) "jj3"
4) "jj2"
5) "jj1"
上述命令执行结果存储示意图
- 尾部插入:
RPUSH
adds to the tail.
RPUSH key element [element ...]
该命令会向list 的尾部依次插入给定的元素,在读取该命令插入数据的时候,就像在使用队列一样,元素先进先出。
127.0.0.1:6379> rpush block1 jj1 jj2 jj3 jj4 jj5
(integer) 5
127.0.0.1:6379> lindex block1 0
"jj1"
127.0.0.1:6379>
查找元素的索引
LPOS key element [RANK rank] [COUNT num-matches] [MAXLEN len]
RANK rank
: 排名,次序- 假设 list 中有多个 a,则
rank 2
表示查找 第二个 a 出现的位置,可参考案例 rank
:可以是赋值,表示倒数第一个,rank -1
表示倒数第一个
- 假设 list 中有多个 a,则
The command returns the index of matching elements inside a Redis list. By default, when no options are given, it will scan the list from head to tail, looking for the first match of “element”. If the element is found, its index (the zero-based position in the list) is returned. Otherwise, if no match is found,
nil
is returned.
- 该命令返回 Redis 列表中匹配元素的索引。
- 默认情况下,如果没有给出任何选项,它将从头到尾扫描列表,寻找第一个匹配的“元素”。
- 如果找到元素,则返回其索引(列表中从零开始的位置)。否则,如果未找到匹配项,则返回 nil。
- 查看现有数据
127.0.0.1:6379> lrange block 0 8
1) "jj5"
2) "a"
3) "jj4"
4) "a"
5) "a"
6) "jj3"
7) "jj2"
8) "jj1"
127.0.0.1:6379>
- 查找第一个 a 所在的索引(位置): rank n 表示第一个,
- n为正序:表示正数第几个
- n为负数:表示倒数第几个:
127.0.0.1:6379> lpos block a
(integer) 1
127.0.0.1:6379> lpos block a rank 1
(integer) 1
127.0.0.1:6379> lpos block a rank -1 # 倒数第1个 a的位置
(integer) 4
127.0.0.1:6379> lpos block a rank -2 # 倒数第2个 a的位置
(integer) 3
127.0.0.1:6379>
- 返回前n 个 指定元素所在的位置,如返回 list 中前两个 a 的位置:
127.0.0.1:6379> lpos block a count 2 # 前2 个所在的位置
1) (integer) 1
2) (integer) 3
127.0.0.1:6379>
元素的个数
LLEN
returns the length of a list.
Returns the length of the list stored at
key
. Ifkey
does not exist, it is interpreted as an empty list and0
is returned. An error is returned when the value stored atkey
is not a list.
返回按键存储的列表的长度。
- 如果键不存在,则将其解释为空列表并返回0。
- 如果键上存储的值不是列表,则返回错误。
- 查看 block元素的个数
127.0.0.1:6379> llen block
(integer) 5
127.0.0.1:6379>
- 查看所有的键
127.0.0.1:6379> keys *
1) "coinmarketapikey"
2) "block"
3) "exchangerate"
4) "apikeyexceeded"
5) "mysite"
127.0.0.1:6379>
- 查看不存在的键的元素个数,返回 0
127.0.0.1:6379> llen block1
(integer) 0
127.0.0.1:6379>
- 使用此命令查看 hash 类型:命令错误的使用方式
127.0.0.1:6379> llen mysite
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379>
删除元素
- 头部移除:
LPOP
removes and returns an element from the head of a list;
Removes and returns the first elements of the list stored at
key
.By default, the command pops a single element from the beginning of the list. When provided with the optional
count
argument, the reply will consist of up tocount
elements, depending on the list’s length.
- 移除并返回 list 的第一个元素。
- 如果给定了个数 count,则会从 list前面移除指定个数的元素。
LPOP key [count]
- 尾部移除:
RPOP
does the same but from the tails of a list.
LPOP key [count]
Removes and returns the last elements of the list stored at
key
.By default, the command pops a single element from the end of the list. When provided with the optional
count
argument, the reply will consist of up tocount
elements, depending on the list’s length.
- 移除并返回 list 的最后一个元素。
- 如果给定了个数 count,则会从 list后面移除指定个数的元素。
移走元素
LMOVE
atomically moves elements from one list to another.
LMOVE source destination <LEFT | RIGHT> <LEFT | RIGHT>
<LEFT | RIGHT>
- 第一个选项,指要移出位于source 的
头部|尾部
的元素 - 第二个选项,从source 移除的元素要插入 destination 的位置
头部|尾部
- 第一个选项,指要移出位于source 的
Atomically returns and removes the first/last element (head/tail depending on the
wherefrom
argument) of the list stored atsource
, and pushes the element at the first/last element (head/tail depending on thewhereto
argument) of the list stored atdestination
.
原子地返回并删除存储在源中的列表的第一个/最后一个元素(head/tail 取决于 where 参数) ,并将元素推送到存储在目的地的列表的第一个/最后一个元素(head/tail 取决于 where 参数)。
For example: consider
source
holding the lista,b,c
, anddestination
holding the listx,y,z
. ExecutingLMOVE source destination RIGHT LEFT
results insource
holdinga,b
anddestination
holdingc,x,y,z
.
举例说明:假设现有两个 list:
- key 为 source 值为
a,b,c
, - key 为 destination 值为
x,y,z
执行移走命令:
LMOVE source destination RIGHT LEFT
结果为:
- source 值为
a,b
, - destination 值为
c,x,y,z
获取元素
按下表(索引)检索
LINDEX key index
Returns the element at index
index
in the list stored atkey
. The index is zero-based, so0
means the first element,1
the second element and so on. Negative indices can be used to designate elements starting at the tail of the list. Here,-1
means the last element,-2
means the penultimate and so forth.When the value at
key
is not a list, an error is returned.
- 返回键存储的列表中索引位置的元素。
- 索引是从零开始的,所以0表示第一个元素,1表示第二个元素,依此类推。
- 负索引可用于指定从列表尾部开始的元素。在这里,-1表示最后一个元素,-2表示倒数第二个元素,依此类推。
- 当 key 值不是列表时,将返回错误。
按范围检索
可参考 python 中的 list
if __name__ == '__main__':list_ = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]print(list_[0:-1])print(list_[-5:-3])
LRANGE
extracts a range of elements from a list,与 python 中的 list 有着同样的结构。
LRANGE key start stop
- start:包含此位置的元素
- stop:包含此位置的元素
Returns the specified elements of the list stored at
key
. The offsetsstart
andstop
are zero-based indexes, with0
being the first element of the list (the head of the list),1
being the next element and so on.These offsets can also be negative numbers indicating offsets starting at the end of the list. For example,
-1
is the last element of the list,-2
the penultimate, and so on.Out of range indexes will not produce an error. If
start
is larger than the end of the list, an empty list is returned. Ifstop
is larger than the actual end of the list, Redis will treat it like the last element of the list.
- 返回按键存储的列表的指定元素。
- 偏移量 start 和 stop 是从零开始的索引,0是列表的第一个元素(列表的头) ,1是下一个元素,依此类推。
- 这些偏移量也可以是负数,表示从列表末尾开始的偏移量。例如,-1是列表的最后一个元素,-2是倒数第二个元素,依此类推。
- 索引越界:不存在这种异常,redis 会自动处理
127.0.0.1:6379> lrange block -8 -3
1) "jj5"
2) "a"
3) "jj4"
4) "a"
5) "a"
6) "jj3"
127.0.0.1:6379>
插入元素
LINSERT key <BEFORE | AFTER> pivot element
<BEFORE | AFTER>
:要在指定值pivot
前|后
插入element
element
:要插入的元素pivot
:list 中已存在的数据
Inserts
element
in the list stored atkey
either before or after the reference valuepivot
.When
key
does not exist, it is considered an empty list and no operation is performed.An error is returned when
key
exists but does not hold a list value.
- 在引用值 pivot 之前或之后按键存储的列表中插入元素。
- 如果键不存在,则将其视为空列表,不执行任何操作。
- 如果键存在但不包含列表值,则返回错误。
- 插入一个元素
127.0.0.1:6379> linsert block before jj3 a
(integer) 6
127.0.0.1:6379> lrange block 0 8
1) "jj5"
2) "jj4"
3) "a"
4) "jj3"
5) "jj2"
6) "jj1"
127.0.0.1:6379>
- 在不存在的值前后插入元素
127.0.0.1:6379> linsert block before love me
(integer) -1
127.0.0.1:6379>
减少元素
LTRIM
reduces a list to the specified range of elements.
Trim an existing list so that it will contain only the specified range of elements specified. Both
start
andstop
are zero-based indexes, where0
is the first element of the list (the head),1
the next element and so on.For example:
LTRIM foobar 0 2
will modify the list stored atfoobar
so that only the first three elements of the list will remain.
start
andend
can also be negative numbers indicating offsets from the end of the list, where-1
is the last element of the list,-2
the penultimate element and so on.Out of range indexes will not produce an error: if
start
is larger than the end of the list, orstart > end
, the result will be an empty list (which causeskey
to be removed). Ifend
is larger than the end of the list, Redis will treat it like the last element of the list.
- 修剪现有列表,使其仅包含指定的元素范围。
- Start 和 stop 都是从零开始的索引,其中0是列表的第一个元素(head) ,1是下一个元素,依此类推。
- 例如: LTRIM foobar 02将修改存储在 foobar 中的列表,以便只保留列表的前三个元素。
- Start 和 end 也可以是负数,表示从列表末尾开始的偏移量,其中 -1是列表的最后一个元素,-2是倒数第二个元素,依此类推。
- 超出范围的索引不会产生错误:
- 如果 start 大于列表的末尾,或 start > end,结果将是一个空列表(这将导致删除键)。
- 如果 end 大于列表的末尾,Redis 会将其视为列表的最后一个元素。
127.0.0.1:6379> lrange block 0 100
1) "jj5" # 0
2) "a" # 1
3) "jj4" # 2
4) "a"
5) "a"
6) "jj3" # -3
7) "jj2" #-2
8) "jj1" #-1
127.0.0.1:6379> ltrim block 2 -3
OK
127.0.0.1:6379> lrange block 0 100
1) "jj4"
2) "a"
3) "a"
4) "jj3"
127.0.0.1:6379>
相关文章:
redis数据类型:list
数据结构 源码版本:7.2.2路径:src/adlist.h 关于list的 头文件中涉及到的这三个结构体如下 /* Node, List, and Iterator are the only data structures used currently. */ # 节点 typedef struct listNode {struct listNode *prev; # 前元素的指针s…...
聚类之轮廓系数
Silhouette Score(轮廓系数)是用于评估聚类质量的指标之一。它衡量了数据点与同簇内其他点的相似度以及与最近簇的相似度之间的对比。 公式 对于一个数据点 i: a(i): 数据点 i 到同簇内其他点的平均距离(簇内不相似度ÿ…...
时钟芯片入门指南:从原理到实践
DS1302时钟 实时时钟芯片,精度高、 DS1302芯片可以对年、月、日、周、时、分、秒进行计时,并且具有闰年补偿等多种功能。 采用三线接口与CPU进行同步通信(采用串行数据传送方式简单SPI 3线接口),并可采用突发方式一次传送多个字节的时钟信号…...
【Java笔记】第十七章:反射
一、反射 1. 反射(Reflection): 允许在程序运行状态中,可以获取任意类中的属性和方法,并且可以操作任意对象内部的属性和方法,这种动态获取类的信息及动态操作对象的属性和方法对应的机制称为反射机制。 2. 类对象 和 类的对象(实…...
Vue:实现输入框不能输负数功能
1、使用v-model指令 <input type"number" v-model"value" min"0" input"checkInput"> checkInput() {this.value Math.max(0, parseInt(this.value)); } 2、使用计算属性 <template><div><input type"…...
GamePlay UE网络同步
基本同步方式: ①未复制:函数仅在本机运行,不对任何人造成影响 ②在服务器上运行:当函数在客户端上调用时才能生效。客户端会通知服务器:“请在服务器上执行这个事件”,事件的具体内容会被在服务器上执行。 ③组播(多播,Multicast):当函数在服务器上调用时才能生效…...
iLoveIMG:强大的在线图片编辑工具分享
在数字化时代,图片处理已成为日常工作中不可或缺的一部分。无论是优化网页图片、调整尺寸、压缩处理还是格式转换,高效且免费的工具总是令人向往。今天,我要为大家介绍一个非常实用的在线图片编辑工具——iLoveIMG。它不仅功能强大࿰…...
重温设计模式--工厂模式(简单、工厂、抽象)
文章目录 工厂模式定义工厂模式通常可以细分为以下几种类型1、简单工厂模式(Simple Factory Pattern)2、工厂方法模式(Factory Method Pattern)3、抽象工厂模式(Abstract Factory Pattern) UML 图1、简单工厂模式UML2、…...
人工智能ACA(六)--计算机视觉基础
一、计算机视觉概述 1. 计算机视觉定义 人工智能(AI)的一个重要分支旨在使计算机和系统能够从图像或多维数据中“理解”和“解释”视觉世界通过模拟人类视觉系统,计算机视觉技术能够自动执行诸如识别、分类、检测和跟踪等任务。 2. 计算机…...
WPF+MVVM案例实战与特效(四十六)- 打造动态背景时钟控件,轻松提升界面美感
文章目录 1、引言2、案例效果2、时钟控件封装1、创建用户控件2、依赖属性3、代码解释4、时钟图片资源3、控件使用4、源代码获取5、总结1、引言 在开发WPF应用程序时,创建一个美观且功能丰富的用户控件可以大大提升用户体验。今天,我们将深入探讨如何构建一个好看的时钟控件,…...
【读书笔记】《论语别裁》爱与罪
一、内容摘要 《论语别裁》第01章讨论了孔子关于孝悌的思想,以及其在中国文化中的重要性和复杂性。文中引用了有子的观点,强调孝弟是为人之本。然而,随着历史的发展,孔子的思想也被误解或被用作维护专制统治的工具。通过司马迁的…...
Log4j2漏洞
输入systemctl start docker启动docker 进入到CVE-2021-44228 输入docker-compose up -d开启环境 输入docker ps查看开启环境的端口 去访问靶场 打开dnslog平台,获取一个域名来监控我们所获得的内容 访问http://8.155.8.255:8983/solr/admin/cores?action${jndi:ld…...
ds刷题DAY1|66.加一、485. 最大连续 1 的个数
66. 加一 - 力扣(LeetCode) 从数组尾部开始遍历,遇到不是9的直接加一并返回;遇到等于9的变成0,并且继续判断下一位。如果全部为9,创建一个新数组,长度为原长度加一,首位为1ÿ…...
合合信息:探索视觉内容安全新前沿
2024年12月13日-15日,中国图象图形学学会在杭州召开。大会期间,来自合合信息的图像算法研发总监郭丰俊进行了主题为“视觉内容安全技术的前沿进展与应用”的演讲,介绍了视觉内容安全问题,并总结了现今的技术发展,对我很…...
C++23新特性解析:[[assume]]属性
1. 引言 在C的发展历程中,性能优化一直是一个核心主题。C23引入的[[assume]]属性为开发者提供了一个强大的工具,允许我们直接向编译器传达程序的不变量(invariant),从而实现更好的代码优化。 1.1 为什么需要assume&a…...
航电系统电子罗盘的作用
一、基本功能与原理 电子罗盘,又称数字罗盘,是利用地磁场来定北极的一种方法。它结合了电子技术和晶体技术,通过灵敏的线圈、控制电路及读出系统来探测特定磁场,从而确定方向。电子罗盘可以测量磁场强度、方向、大小及旋转角度&am…...
从 $PGDATA 到文件组:深入解析 PostgreSQL 与 SQL Server 的存储策略
在数据库领域,数据存储和管理的效率与可靠性是决定系统性能、可扩展性和易于管理的关键因素。PostgreSQL 和 SQL Server 在数据存储方面采取了略有不同的方式。 PostgreSQL 中一个数据库管理员经常遇到的关键概念是 $PGDATA 文件夹。在这里,我们将探讨 $PGDATA 文件夹是什么…...
IDEA无法打开插件市场的解决
1.版本 我的IDEA版本号为2020.1.4 大家可以从IDEA的help->about进行版本号的查看 2.解决 我们直接到jetbrains官网搜索你想要下载的插件 直接下载即可自动导入...
PPO算法基础(一)
PPO近端策略优化算法 我们今天还是主要来理解PPO算法的数学原理。PPO是一种策略梯度方法,简单的策略梯度对每个样本(或者一组样本)进行一次梯度更新,对单个样本执行多个梯度步骤会导致一些问题,因为梯度偏差太大&…...
Docker部署seata 最详细版
1.docker安装 我采用的系统是ubuntu 22 1.1 更新系统 首先,打开终端并更新你的系统包: sudo apt update sudo apt upgrade -y 1.2. 安装必要的依赖 安装一些必要的工具,用于允许 apt 使用 HTTPS: sudo apt install apt-t…...
Debian 12 安装配置 fail2ban 保护 SSH 访问
背景介绍 双十一的时候薅羊毛租了台腾讯云的虚机, 是真便宜, 只是没想到才跑了一个月, 系统里面就收集到了巨多的 SSH 恶意登录失败记录. 只能说, 互联网真的是太不安全了. 之前有用过 fail2ban 在 CentOS 7 上面做过防护, 不过那已经是好久好久之前的故事了, 好多方法已经不…...
C++之“流”-第5课.三军联动:流 +操作符+函数重载
如何针对特定函数类型重载流输出操作符?这样做有什么用处?C语言中,“流”、“操作符”、“函数重载” 这三大军团如何配合作战? 前言 C中,“流” 的日常运用,最基本的就是在你的代码里使用 << 和 &g…...
Mysql高级部分总结(二)
MySQL的内部日志 binlog记载的是update/delete/insert这样的SQL语句,而redo log记载的是物理修改的内容(xxxx页修改了xxx)。 binlog无论MySQL用什么引擎,都会有,而redo log是MySQL的InnoDB引擎所产生的。 redo log事务开始的时候,就开始记录每次的变更信息,而binlog是在…...
Linux服务器端自动挂载存储设备(U盘、移动硬盘)
前言 Linux服务器挂载存储设备需要使用mount,因为服务器的存储通常是固定的,很少存在频繁的插拔USB存储设备的现象 ,使用Linux系统本身是没有较为简单的自动挂载存储设备的方法的。 涉及知识点 udev udev可以监测USB设备的插入、拔出事件,并且Linux系统支持通过/etc/ude…...
动态规划<四> 回文串问题(含对应LeetcodeOJ题)
目录 引例 其余经典OJ题 1.第一题 2.第二题 3.第三题 4.第四题 5.第五题 引例 OJ 传送门Leetcode<647>回文子串 画图分析: 使用动态规划解决 原理:能够将所有子串是否是回文的信息保存在dp表中 在使用暴力方法枚举出所有子串,是…...
计算机毕业设计PySpark+Hadoop中国城市交通分析与预测 Python交通预测 Python交通可视化 客流量预测 交通大数据 机器学习 深度学习
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
多边形内角问题@三角形的基本性质@平面镶嵌问题
文章目录 abstract符号说明多边形正多边形正 n n n边形正多边形中心角 多边形内角和外角多边形内角和定理证明证法一证法二证法三 多边形外角 多边形的对角线平面镶嵌👺全等多边形平面镶嵌拓展正多边形镶嵌平面用一种正多边形镶嵌用两种正多边形镶嵌 使用三种正多边…...
【vue】圆环呼吸灯闪烁效果(模拟扭蛋机出口处灯光)
效果图先发: 页面部分: <div ref"round" class"round"><div class"light" ref"light"/><div class"box"></div></div>js部分(控制圆环生成); setRound…...
Ftp目录整个下载
最近有个需求是要下载ftp接近十个T的数据,在调研过多个工具后发现还是lftp的mirror最省事 mirror参数 Mirror specified source directory to local target directory. If target directory ends with a slash, the source base name is appended to target direc…...
实践KDTS-WEB从mysql迁移到kingbasev9
数据库国产化替代数据迁移是一个复杂且关键的过程。这涉及到将原有数据库中的数据准确、完整地迁移到新的国产数据库中,同时确保数据的完整性和一致性。人大金仓提供了强大的数据库迁移工具(KDTS)对同构、异构数据库数据迁移; 数…...
【贪吃蛇小游戏 - JavaIDEA】基于Java实现的贪吃蛇小游戏导入IDEA教程
有问题请留言或私信 步骤 下载项目源码:项目源码 解压项目源码到本地 打开IDEA 左上角:文件 → 新建 → 来自现有源代码的项目 找到解压在本地的项目源代码文件,点击确定 选择“从现有项目创建项目”。点击“下一步” 点击下一步&a…...
STM32CUBEMX+STM32H743ZIT6+IAP+UART在线升级初始化和代码解析
1、STM32H7带的ITCM,DTCM,AXI SRAM,SRAM1,SRAM2,SRAM3,SRAM4和备份SRAM五块。 其中, ①TCM区包括ITCM和DTCM,这两个是直连CPU的。 速率与CPU一致,最高能到480MHz。 DTCM地…...
vue-axios+springboot实现文件流下载
前端vue代码: <template><div class"app-container documentation-container"><div><el-button type"primary" click"downloadFile(test.xlsx)">下载test.xlsx</el-button></div></div> …...
vue预览和下载 pdf、ppt、word、excel文档,文件类型为链接或者base64格式或者文件流,
** 方法1:word、xls、ppt、pdf 这些文件, 如果预览的文件是链接可以直接打开,可用微软官方的预览地址 ** <iframe width"100%" :src"textVisibleURl " id"myFramePPT" style"border: none;backgroun…...
GIS 文件格式 及 常规应用总结
文章目录 GIS 中常见的文件格式 以及 再次打开注意事项资源网站应用地图瓦片数据地形数据倾斜模型 QGS 应用矢量数据格式栅格数据格式数据库格式更改图层样式更改图层范围导出为不同分辨率图片导出矢量文件直接保存图层通过打印布局导出使用插件导出 tiff 图片前端处理方式 GIS…...
《Pytorch框架CV开发-从入门到实战》
目录 1.环境部署2.自动梯度计算张量 tensor3.线性回归4.逻辑回归6.人工神经网络的基本概念6.1 感知器6.2 激活函数6.3多层感知器6.4 反向传播算法——前向传播6.5 反向传播算法——反向传播6.6 反向传播算法——训练方法7.Pytorch基础数据集8.手写数字识别人工神经网络训练8.1 …...
element-ui的el-select多选同时获取label与value值
直接上代码: <!DOCTYPE html> <html><head><meta charset"utf-8"><!-- 引入 Element UI 的 CSS --><link rel"stylesheet" href"https://unpkg.com/element-ui/lib/theme-chalk/index.css"><…...
跨站请求伪造之基本介绍
一.基本概念 1.定义 跨站请求伪造(Cross - Site Request Forgery,缩写为 CSRF)漏洞是一种网络安全漏洞。它是指攻击者通过诱导用户访问一个恶意网站,利用用户在被信任网站(如银行网站、社交网站等)的登录状…...
干部大数据分析系统如何助力构建选人用人的逻辑框架
在当今信息化快速发展的时代,干部大数据分析系统作为一种创新的管理工具,正在逐步改变传统的选人用人方式。这一系统融合了大数据、人工智能等现代信息技术,为组织部门提供了一个强大的辅助决策工具,有助于构建更加科学、准确和公…...
今天最新早上好问候语精选大全,每天问候,相互牵挂,彼此祝福
1、朋友相伴,友谊真诚永不变!彼此扶持绿树荫,共度快乐雨后天!一同分享的表情,愿我们友情长存,一生相伴永相连! 2、人生几十年,苦累伴酸甜,风华不再茂,雄心非当…...
Android开发环境搭建和编译系统
1 工具使用 1.1 将dos格式的文件转换为unix格式文件 直接执行 dos2unix file 例如: dos2unix InotifyMon/AndroidManifest.xml 1.2 Linux Shell FTP使用 ftp <IP addr> 输入ID和password prompt off // 下载文件到本地 mget * 1.3 Linux sed 1.3.1 Linux命令之…...
autMan奥特曼机器人-autMan的PHP环境
直装版请自行安装php环境。 docker版本预置了php环境,如下图: 如果使用插件"test php"测试环境时,实时日志有报错如下: 可进入终端,输入两条命令 apk add curl apk add php-curl...
路径规划之启发式算法之二十:麻雀搜索算法(Sparrow Search Algorithm,SSA)
麻雀搜索算法(Sparrow Search Algorithm,SSA)是一种受麻雀觅食和反捕食行为启发的新型的群智能优化算法,它模拟了麻雀种群的觅食行为和反捕食行为的生物学群体特征。该算法由薛建凯在2020年首次提出,旨在解决全局优化问题,具有求解精度高、效率高等特点。 一、算法原理 S…...
Vue+element 回车查询页面刷新
问题描述: form 表单出查询条件需要实现 input 输入完成后键盘回车查询:keyup.enter“handleQuery”,如果 form 里只有一个input,回车没有触发事件,而是刷新页面,放两个input就没问题 问题原因࿱…...
为何页面搜索应避免左模糊和全模糊查询???
前言 在构建高效且可扩展的Web应用程序时,数据库查询的性能是影响用户体验的关键因素之一。特别是对于涉及大量数据的页面搜索功能,选择正确的查询方式不仅可以提升应用的速度,还能显著改善用户交互体验。 B-Tree索引与最左前缀匹配特性 1…...
源码分析之Openlayers中ZoomSlider滑块缩放控件
概述 ZoomSlider滑块缩放控件就是Zoom缩放控件的异形体,通过滑块的拖动或者点击滑槽,实现地图的缩放;另外其他方式控制地图缩放时,也会引起滑块在滑槽中的位置改变;即ZoomSlider滑块缩放控件会监听地图的缩放级别&…...
Cherno C++学习笔记 P46 箭头运算符
这一篇文章我们讲一下箭头运算符的使用。在之前的一些场景下,我们已经使用到了箭头运算符,这次我们可以更深入的聊一下箭头运算符应该如何使用,以及我们如何实现自己的箭头指针。 我们还是以一个最简单的Entity类举例: class En…...
项目转换微服务架构
文章目录 1.sun-dependencies引入SpringCloud的版本2. 创建sun-cloud-home微服务1.创建maven项目2.目录概览3.pom.xml4.application.yml5.application-prod.yml6.HomeApplicaion.java7.HomeController.java8.测试访问9.打包测试 3.创建sun-cloud-sku微服务1.磁盘将这个sun-clou…...
WebRTC搭建与应用(五)-Coturn踩坑记
WebRTC搭建与应用(五)-Coturn踩坑记 近期由于项目需要在研究前端WebGL渲染转为云渲染,借此机会对WebRTC等有了初步了解,在此记录一下,以防遗忘。 第五章 WebRTC搭建与应用(五)-Coturn踩坑记 文章目录 WebRTC搭建与应用(五)-Coturn踩坑记前…...
Uniapp 手机基座调试App 打包成Apk文件,并上传到应用商店
1.Uniapp手机基座调试App。 1.1 以下是我另一篇文章 讲解 uniapp连接手机基座调试App、 Hbuildx使用SUB运行到手机基座测试_hbuilder基座-CSDN博客 2.打包本地的uniapp项目为apk文件。 打包的方式有很多种,我们可以选择本地打包和远程云端打包两种方式。 我们在打包…...