Redis知识应用索引指南
Redis,全称为Remote Dictionary Server,是一个开源的高性能键值对数据库。它以其卓越的性能、丰富的数据结构和灵活的持久化机制,在现代应用中扮演着至关重要的角色
1 什么是redis
Redis是一个使用ANSI C语言编写的开源、跨平台的键值存储系统。它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等,因此也被称为数据结构服务器。Redis提供丰富的语言API,可以轻松集成到各种应用程序中。
2 Redis的应用场景
- 缓存: Redis最常见的应用场景之一是作为缓存系统,用于减少数据库的访问压力,提高应用的响应速度。将热点数据放到内存中,设置内存的最大使用量以及过期淘汰策略来保证缓存的命中率。
- 计数器与排行榜: Redis的有序集合非常适合实现排行榜功能,而其原子递增操作则适用于计数器场景,如社交网络中的点赞和评论数。
- 应用限流: 限制一个网站访问流量。
- 消息队列: 利用Redis的列表数据结构,可以实现一个简单的消息队列系统,用于处理异步任务和消息传递。使用 List 数据类型,它是双向链表。
- 交集运算: 使用 SET 类型,例如求两个用户的共同好友。
- 分布式Session: 多个应用服务器的 Session 都存储到 Redis 中来保证 Session 的一致性。
- 分布式锁: 在分布式系统中,Redis可以用于实现分布式锁,以保证操作的原子性和一致性。 除了可以使用 SETNX 实现分布式锁之外,还可以使用官方提供的 RedLock 分布式锁实现。
3 Redis的数据类型
Redis支持五种基本数据类型,每种类型都有其独特的操作命令:
- 字符串(String):简单的键值对,适合存储简单的数据。
- 哈希(Hash):键值对集合,适合存储对象。
- 列表(List):有序集合,支持从两端推入和弹出元素。
- 集合(Set):无序集合,自动去重。
- 有序集合(Sorted Set):与集合类似,但每个元素关联一个分数,可以进行范围查询
Redis 高级数据类型:BitMap、HyperLogLog、GEO
4. Redis 的优势
-
高速性能:Redis 基于内存操作,读写速度快,能够达到极高的吞吐量。支持数据的快速访问,通常可以达到每秒数十万次的读写操作。
-
数据持久化:支持 RDB(快照)和 AOF(追加文件)两种持久化方式,确保数据的安全性。RDB 通过创建数据快照来持久化数据,而 AOF 记录每次写操作,可以提供更好的数据恢复。
-
丰富的数据结构:支持字符串、列表、集合、有序集合、散列等多种数据结构。这些数据结构使得 Redis 可以灵活地用于缓存、消息队列、排行榜、实时分析等多种场景。
-
原子操作:Redis 支持原子性的单个操作,也支持事务,可以一次执行多个命令,保证操作的原子性。
-
主从复制:支持主从复制,可以实现数据的冗余和高可用性。从服务器可以提供读操作,分散主服务器的读请求压力。
-
高可用性:通过哨兵系统(Sentinel)或集群模式(Cluster),Redis 可以实现自动故障转移和数据分片。
-
横向扩展:Redis 支持集群模式,可以跨多个节点进行数据分片,实现水平扩展。
-
丰富的客户端库:支持多种编程语言的客户端库,如 Python、Java、C#、Node.js 等,方便开发者集成使用。
-
Lua 脚本:支持在服务器端执行 Lua 脚本,可以编写复杂的逻辑,减少网络往返,提高性能。
-
发布/订阅功能:支持发布/订阅模式,可以用于实现消息队列和事件通知。
-
灵活的内存管理:支持内存淘汰策略,如 LRU(最近最少使用)、LFU(最不频繁使用)等,以适应不同的应用场景。
-
易于管理:提供简单的配置和监控工具,使得 Redis 的部署和管理变得相对容易。
-
安全性:支持通过 SSL/TLS 加密数据传输,保护数据安全。
-
多用途:除了作为数据库使用,Redis 还可以作为缓存、消息代理、排行榜系统等多种用途。
5. Redis为什么快
Redis 单机 QPS 能达到 100000。
Redis 是单线程模型(Redis 6.0 已经支持多线程模型),为什么还能有这么高的并发?
- Redis 完全基于内存操作。
- Redis 数据结构简单。
- 采用单线程,避免线程上下文切换和竞争。
- 使用 I/O 多路复用模型(非阻塞 I/O)
I/O 多路复用
I/O 多路复用模型是利用 select、poll、epoll 可以同时监察多个流的 I/O 事件的能力,在空闲的时候,会把当前线程阻塞掉,当有一个或多个流有 I/O 事件时,就从阻塞态中唤醒,于是程序就会轮询一遍所有的流(epoll 是只轮询那些真正发出了事件的流),并且只依次顺序的处理就绪的流,这种做法就避免了大量的无用操作。
6. Redis 持久化
Redis的持久化机制是确保数据安全性和可靠性的关键特性,它允许将内存中的数据异步地保存到磁盘上,以便在Redis服务器重启后能够恢复数据。Redis提供了两种主要的持久化方式:RDB(快照)和AOF(追加文件),以及它们的混合持久化方式。
RDB持久化是通过创建数据的快照来实现的。在指定的时间间隔内,Redis会将内存中的数据集快照保存到磁盘上的二进制文件中。这个快照文件非常紧凑,适合用于数据备份和灾难恢复。
AOF持久化记录了所有的写操作命令,并以追加的方式保存到文件中。当Redis重启时,会重新执行这些命令来恢复数据。
Redis 4.0引入了混合持久化方式,它结合了RDB和AOF的优点。在这种模式下,AOF文件的开始部分是RDB数据的二进制dump,紧接着是追加的AOF命令。这样,即使在AOF文件中只有部分命令被执行,也可以通过RDB部分快速恢复数据,然后执行AOF部分的命令来恢复到最新状态。
总的来说,选择哪种持久化方式取决于你的具体需求,包括你对数据安全性的要求、性能考虑以及存储空间的可用性。
7 Redis内存淘汰机制
Redis的内存淘汰机制是其内存管理的重要组成部分,它能够在内存使用达到上限时,自动选择并删除一些数据以腾出空间。
7.1 过期时间
Redis 过期时间是一种重要的功能,它允许你为存储在 Redis 中的数据设置一个过期时间(Time To Live,TTL)。当数据过期后,Redis 会自动删除这些数据,从而释放内存空间。过期时间对于缓存实现、限制数据存活时间、实现计数器等功能非常有用
可以使用 EXPIRE 或 EXPIREAT,PEXPIRE 和 PEXPIREAT 来为 key 设置过期时间,查询键的剩余过期时间TTL与PTTL
当键被设置为过期时,Redis 不会立即删除该键,而是在某个时刻的定时任务中检查并删除。如果你尝试为一个已经设置了过期时间的键再次设置过期时间,Redis 会更新该键的过期时间
7.2 淘汰策略
内存淘汰只是 Redis 提供的一个功能,为了更好地实现这个功能,必须为不同的应用场景提供不同的策略,内存淘汰策略讲的是为实现内存淘汰我们具体怎么做,要解决的问题包括淘汰键空间如何选择?在键空间中淘汰键如何选择?
Redis 提供了下面几种内存淘汰策略供用户选:
- noeviction - 当内存使用达到阈值的时候,所有引起申请内存的命令会报错。这是 Redis 默认的策略。
- allkeys-lru - 在主键空间中,优先移除最近未使用的 key。
- allkeys-random - 在主键空间中,随机移除某个 key。
- volatile-lru - 在设置了过期时间的键空间中,优先移除最近未使用的 key。
- volatile-random - 在设置了过期时间的键空间中,随机移除某个 key。
- volatile-ttl - 在设置了过期时间的键空间中,具有更早过期时间的 key 优先移除。
选择淘汰策略
- 如果数据呈现幂等分布(存在热点数据,部分数据访问频率高,部分数据访问频率低),则使用 allkeys-lru。
- 如果数据呈现平等分布(数据访问频率大致相同),则使用 allkeys-random。
- 如果希望使用不同的 TTL 值向 Redis 提示哪些 key 更适合被淘汰,请使用 volatile-ttl。
- volatile-lru 和 volatile-random 适合既应用于缓存和又应用于持久化存储的场景,然而我们也可以通过使用两个 Redis 实例来达到相同的效果。
- 将 key 设置过期时间实际上会消耗更多的内存,因此建议使用 allkeys-lru 策略从而更有效率的使用内存。
8 Redis 事务
Redis 事务是一种用于将多个命令打包在一起执行的功能,它可以确保这些命令要么全部执行,要么全部不执行,从而维护数据的一致性。Redis 的事务是原子性的,但不是完全隔离的。这意味着在一个事务中的命令在执行过程中不会被其他客户端发送的命令插入,但其他客户端仍然可以读取事务执行期间的数据。
事务相关的命令:MULTI 、 EXEC 、 DISCARD 、WATCH。
9 Redis 管道
Redis 管道(Pipeline)是一种优化网络往返时间(Round-Trip Time, RTT)的技术,它允许客户端一次发送多个命令给 Redis 服务器,而不需要等待每个命令的响应。这样可以显著减少网络延迟带来的影响,提高操作效率。
在传统的请求/响应模型中,客户端向服务器发送一个命令,然后等待服务器的响应。如果客户端需要执行多个命令,它必须为每个命令重复这个过程,这会导致多次网络往返,从而增加延迟。使用管道时,客户端可以将多个命令打包在一起,然后一次性发送给服务器。服务器接收到这些命令后,会依次执行它们,并将所有响应一次性返回给客户端 。这种方式减少了网络请求的数量,从而降低了由于网络延迟带来的总体延迟
10 Redis 发布与订阅
Redis 的发布与订阅(Pub/Sub)是一种消息通信模式,允许客户端订阅频道以接收消息,或者发布消息到频道供其他客户端接收。这种模式非常适合实现消息队列、通知系统、实时通信等应用场景。
基本概念:
- 发布者(Publisher):发送消息到频道的客户端。
- 订阅者(Subscriber):监听频道并接收发布到该频道的消息的客户端。
- 频道(Channel):消息传递的目的地,可以有多个订阅者。
- 模式(Pattern):用于匹配多个频道的一种特殊字符,允许订阅者订阅多个频道
使用场景主要涉及实时通知系统,如聊天应用、新闻推送等。消息队列系统,用于任务分发和异步处理等
11 Redis 复制
Redis复制是一种强大的功能,它允许你将一个Redis服务器的数据自动复制到其他服务器。这不仅可以用于数据备份,还可以用于提高读取操作的可扩展性。
主服务器(Master):包含最新数据的服务器,处理写操作
从服务器(Slave):接收主服务器数据的服务器,通常用于处理读操作
其特点:Redis复制是异步的,这意味着主服务器在执行写操作后不会等待从服务器的确认响应。这有助于提高主服务器的性能;在大多数情况下,从服务器的数据最终会与主服务器保持一致。通过将读操作分配给从服务器,可以提高系统的读取吞吐量,同时主服务器专注于处理写操作
Redis复制是构建可扩展、高可用Redis系统的基础,通过合理的配置和管理,可以有效地提高系统的性能和可靠性
12 Redis 哨兵
Redis Sentinel 是 Redis 的高可用性解决方案,由一个或多个 Sentinel 实例组成,用于监控 Redis 主从复制系统的运行状态。
Sentinel 可以监控多个 Redis 节点,自动检测主节点是否下线,并在主节点下线时进行自动故障转移。Sentinel 还提供了客户端与 Redis 节点之间的服务发现和配置更新功能,客户端可以通过 Sentinel 来获取当前的主节点信息,从而实现无缝的故障转移。
Sentinel 的主要功能包括监控、提醒、自动故障转移和配置提供者。它通过执行定期的健康检查来确保 Redis 节点的正常运行,当主节点出现故障时,Sentinel 会通过一系列流程来选举新的主节点,并更新从节点的配置。
此外,Sentinel 还支持通过订阅频道来接收故障转移和其他重要事件的通知。为了确保高可用性,建议至少部署三个 Sentinel 实例,并且它们应该分布在不同的物理或虚拟机上。配置 Sentinel 时,需要修改 Redis 和 Sentinel 的配置文件,指定监控的主节点信息、端口设置等,并启动 Sentinel 实例。
在故障转移过程中,Sentinel 会负责更新客户端的配置,确保客户端能够连接到新的主节点。Redis Sentinel 的引入,为 Redis 提供了强大的高可用性和故障恢复能力,是构建稳定、可靠的 Redis 服务的关键组件。
13 Redis 集群
Redis 集群是 Redis 的分布式解决方案,旨在提供线性扩展和高可用性,通过将数据自动分割到多个节点来提供数据分片功能,同时利用复制和故障转移机制保证数据的安全性和可用性。
在 Redis 集群中,数据被分成了多个槽(slot),每个槽可以被分配到集群中的任意节点上,每个节点可以包含多个槽,但一个槽只能被分配给一个节点。集群中的每个节点负责处理一部分数据,当客户端请求到达时,集群会根据请求的键被哈希到哪个槽来决定将请求路由到哪个节点。
Redis 集群支持主从复制,每个主节点可以有一个或多个从节点,当主节点发生故障时,集群会自动进行故障转移,选举新的主节点来接管原主节点负责的槽。
Redis 集群还提供了数据持久化的选项,可以配置每个节点的 RDB 或 AOF 持久化策略,确保数据的安全性。
集群的高可用性是通过哨兵系统来实现的,哨兵会监控集群中的每个节点,当发现主节点下线时,会自动开始故障转移流程。
Redis 集群还支持在线重配置,可以在不停止服务的情况下添加或移除节点,重新分配槽,实现集群的动态调整。客户端可以通过集群模式的 Redis 客户端库来与集群交互,客户端库会自动处理请求的路由和故障转移,使得开发者可以像使用单节点 Redis 一样使用集群。
Redis 集群的引入,为处理大规模数据集和高并发访问提供了强大的支持,是构建高性能分布式系统的有力工具。
14 知识链接
Redis 主从复制_redis主从复制-CSDN博客文章浏览阅读1.7k次,点赞17次,收藏9次。从节点(slave)内部通过每秒运行的定时任务维护复制相关逻辑,当定时任务发现存在新的主节点后,会尝试与该节点建立网络连接,如果从节点无法建立连接,定时任务会无限重试直到连接成功或者执行 slaveof no one 取消复制,关于连接失败,可以在从节点执行 info replication 查看 master_link_down_since_seconds 指标,它会记录与主节点连接失败的系统时间。在命令传播阶段,主节点除了将写命令发送给从节点,还会发送一份给复制积压缓冲区,作为写命令的备份;_redis主从复制https://blog.csdn.net/ddf128/article/details/142312394Redis哨兵机制_redis 哨兵机智-CSDN博客文章浏览阅读1.1k次,点赞22次,收藏18次。哨兵,英文名 Sentinel,是一个分布式系统,用于对主从结构中的每一台服务器进行监控,当主节点出现故障后通过投票机制来挑选新的主节点,并且将所有的从节点连接到新的主节点上。Redis Sentinel 包含若干个 Sentinel 节点和 Redis 数据节点,每个 Sentinel 节点会对数据节点和其余 Sentinel 节点进行监控,当它发现节点不可达时,会对节点做下线标识。_redis 哨兵机智
https://blog.csdn.net/ddf128/article/details/142307215Redis集群知识及实战_redis集群实战-CSDN博客文章浏览阅读2.2k次,点赞43次,收藏17次。Redis 集群是一种提供自动数据分片、高可用性和线性扩展性的数据存储解决方案,可以将数据自动分配到多个节点上,这种分布式存储的方式称为分片(sharding)。这样可以使得数据存储的容量和处理能力随着节点的增加而扩展,如果某个节点发生故障,集群可以自动将请求重定向到健康的节点,从而保证服务的连续性和数据的可用性。Redis 集群支持读写分离,Redis 集群提供了自动化的节点管理功能,包括自动故障检测、自动故障转移和自动重新分片等,随着业务的增长,Redis 集群可以通过增加更多的节点来扩展其处理能力和存_redis集群实战
https://blog.csdn.net/ddf128/article/details/142368943
Redis基本命令详解_redis查询key的值命令-CSDN博客文章浏览阅读1.5k次,点赞10次,收藏19次。Redis(Remote Dictionary Server)是一个开源的高性能键值对(Key-Value)数据库。它通常用作数据结构服务器,因为除了基本的字符串键值对存储之外,它还支持列表、集合、有序集合、散列、位图、超日志和地理空间索引半径查询等复杂的数据结构。Redis 以其卓越的性能、高可靠性和灵活性而闻名,被广泛用于各种应用场景。笔记记录了redis的常见操作命令,以备以后查用。_redis查询key的值命令https://blog.csdn.net/ddf128/article/details/142395813
Redis配置文件详解_redis 配置文件详解-CSDN博客文章浏览阅读828次,点赞7次,收藏2次。Redis(Remote Dictionary Server)是一个开源的高性能键值对(Key-Value)数据库。它通常用作数据结构服务器,因为除了基本的字符串键值对存储之外,它还支持列表、集合、有序集合、散列、位图、超日志和地理空间索引半径查询等复杂的数据结构。Redis 以其卓越的性能、高可靠性和灵活性而闻名,被广泛用于各种应用场景。笔记记录了redis的常见操作命令,以备以后查用。_redis 配置文件详解https://blog.csdn.net/ddf128/article/details/142422344Redis发布和订阅_redis-py pubsub()只取最新的消息-CSDN博客文章浏览阅读912次,点赞20次,收藏13次。Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者(sub) 接收消息 可以实现进程间的消息传递。这种模式非常适用于实时消息传递、事件通知和消息分发等场景Redis可以实现消息中间件MQ的功能,通过发布订阅实现消息的引导和分流。但是目前不推荐使用该功能,专业的事情交给专业的中间件处理,redis就做好分布式缓存功能Redis 客户端可以订阅任意数量的频道_redis-py pubsub()只取最新的消息
https://blog.csdn.net/ddf128/article/details/142434774Redis事务总结-CSDN博客文章浏览阅读1k次,点赞23次,收藏17次。Redis 事务是一个用于将多个命令打包在一起执行的功能,它可以确保这些命令按照顺序执行,并且具有原子性。这意味着事务中的命令要么全部执行,要么全部不执行,这有助于保持数据的一致性。Redis 事务本质:一组命令的集合!一个事务中的所有命令都会被序列化,在事务执行过程的中,会按照顺序执行!一次性、顺序性、排他性!执行一些列的命令!Redis事务没有隔离级别的概念!所有的命令在事务中,并没有直接被执行!只有发起执行命令的时候才会执行!ExecRedis单条命令式保存原子性的,但是事务不保证原子性!Redis _redis事务
https://blog.csdn.net/ddf128/article/details/142466893Redis数据持久化总结笔记_数据库状态所需的最少命令集-CSDN博客文章浏览阅读841次,点赞31次,收藏13次。Redis数据持久化是确保Redis中数据不因服务器故障而丢失的重要机制。Redis提供了两种主要的数据持久化方法:RDB和AOF,以及它们的混合持久化。RDB持久化是通过创建数据快照的方式,将某一时刻的数据集保存到硬盘上的RDB文件中。AOF持久化则是记录每次写操作命令并追加到AOF文件中。混合持久化是Redis 4.0引入的新特性,它结合了RDB和AOF的优点。在数据恢复时可以先通过RDB文件快速恢复大部分数据,然后通过AOF文件恢复快照之后的数据变更,从而加快了数据恢复速度并减少了数据丢失的风险_数据库状态所需的最少命令集
https://blog.csdn.net/ddf128/article/details/142468573
15 最后
感谢大家,请大家多多支持!
相关文章:
Redis知识应用索引指南
Redis,全称为Remote Dictionary Server,是一个开源的高性能键值对数据库。它以其卓越的性能、丰富的数据结构和灵活的持久化机制,在现代应用中扮演着至关重要的角色 1 什么是redis Redis是一个使用ANSI C语言编写的开源、跨平台的键值存储系…...

ES6扩展运算符
1.介绍: ... 扩展运算符能将数组转换为逗号分隔的参数序列; 扩展运算符(spread)也是三个点(...)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的 参数序列,对数组进…...

【树莓派 5B】Python 版本切换
【树莓派 5B】Python 版本切换 前言整体思路具体步骤常见问题Python 无法建立与 Python3 的软连接 前言 本文基于树莓派5B 32-bit 树莓派OS,以 Python-3.11.2 降级到 3.9.2 为例,总结了在树莓派上切换 Python 版本的步骤,帮助大家轻松完成 P…...

windows C++-有效使用PPL(五)
如果可能,避免错误共享 当在不同处理器上运行的多个并发任务写入位于同一高速缓存行上的变量时,会发生错误共享。 当一个任务写入一个变量时,这两个变量的缓存行将会失效。 每当缓存行失效时,每个处理器必须重新加载缓存行。 因此…...

【排序】——1.冒泡排序法(含优化)
冒泡排序 1.原理 左边大于右边交换一趟排下来最大的交换到右边来(接下来所以文章用升序举例) 从左到右,相邻元素进行比较。 每次比较一轮,就会找到序列中最大的一个(最小的一个——降序)。这个数就会从序列的最右边冒出来。 以…...

在MySQL中创建数据库和表
在MySQL中,创建数据库和表是数据库管理的基础操作。下面我将详细解释如何先创建一个数据库,然后在该数据库中创建一个或多个表。 ### 1. 创建数据库 首先,你需要登录到MySQL服务器。然后,使用CREATE DATABASE语句来创建一个新的…...

Hadoop 安装教程——单节点模式和分布式模式配置
文章目录 一、预备知识1.1 Hadoop 发行版本1.2 部署方式 二、预备条件2.1 环境准备2.2 创建新用户(可选)2.3 配置 SSH 无密码登录2.4 下载 Hadoop2.5 编辑 hadoop-env.sh 脚本2.6 编辑 dfs 和 yarn 脚本 三、单节点模式部署3.1 官方使用案例3.2 查看运行结果 四、伪分布模式部署…...

给c++小白的教程10:一维数组
好久不见!我又来更教程了。 升到初二,由于学业原因,更新速度减慢了,十分抱歉! 以后将恢复到一周一次的频率 作者只是个普通学生,做的教程多有不足,希望大家批评指正! 赫炎今天在一…...

【排序】3.希尔排序法
希尔排序(直接插入排序的优化) 1.分组思想 上图中gap为5,说明要分成5组。 这5组分别用了五种颜色的线条连接起来了。 第1组:9、4 第2组:1、8 第3组:2、6 第4组:5、3 第5组:7、5 2.缩…...

商品详情数据API接口概述(json数据格式返回参考)
商品详情数据API接口是指一种编程接口(API,Application Programming Interface),它允许开发者或系统以编程方式获取商品的详细信息。这些信息包括但不限于SKU的详细信息、商品图片、商品属性、价格、库存状态、用户评价等。当调用…...

Jmeter简介
基础介绍 Jmeter录制脚本的原始是配置一个HTTP代理,然后浏览器通过这个代理访问测试页面从而完成脚本录制。 一、下载安装 jmeter本身不需要安装,需要配置环境变量JDK,然后打开bin文件夹中的jmeter.vbs即可。建议jdk 1.7及以上版本。 基本祖…...

网页前端开发之HTML入门篇:标题标签 heading
标题标签 heading <h1>-<h6>是HTML的标题标签,其标签内容会呈现六个不同级别的字号, <h1>字号最大,<h6>字号最小。 示例 <html><body><h1>一级标题</h1><h2>二级标题</h2>&l…...

医院信息化与智能化系统(3)
医院信息化与智能化系统(3) 这里只描述对应过程,和可能遇到的问题及解决办法以及对应的参考链接,并不会直接每一步详细配置 如果你想通过文字描述或代码画流程图,可以试试PlantUML,告诉GPT你的文件结构,让他给你对应的…...

数据结构(线性表)
1线性表的定义与操作 1.1线性表的定义 线性表是一种基础的数据结构,其主要特点是:数据元素之间存在一种线性关系(一对一)。线性表的每一个数据元素都有一个唯一的前驱和后继,除了第一个元素没有前驱,最后…...

ArcGIS Pro SDK (十八)栅格
ArcGIS Pro SDK (十八)栅格 环境:Visual Studio 2022 + .NET6 + ArcGIS Pro SDK 3.0 栅格 1 在文件夹中打开栅格数据集 // 使用文件夹路径创建 FileSystemConnectionPath 对象。 FileSystemConnectionPath connectionPath = new FileSystemConnectionPath(new System...

c++ 对象作用域
在 C 中,对象的作用域(scope)指的是对象的生命周期以及对象在程序中可以访问的范围。作用域影响对象的创建、使用和销毁,主要有以下几种类型: 1. 局部作用域(Local Scope) 局部作用域的对象是…...

【无标题】海尔AI英语面试
1.自我介绍 Good morning. I am delighted to have this English interview. My name is fu guilin. I graduated from CDUT with a degree in Information engineering. During my university years, I have laid a solid foundation in my professional knowledge. I posses…...

软件设计模式------概述
一:简述 目的:为了可重用代码,代码更容易被他人理解,提高代码的可靠性。 定义:是一套被反复使用,多数人知晓,经过分类编目的,代码设计经验的总结。 (通俗来说…...

刷题/学习网站推荐
前言: 最近没怎么学习,荒芜生活,学不进去,太累了,就喜欢翻翻网站有没有好用的东西分享给大家,正好看到一些刷题的网站(其实也是学习的网站吧),相比学程序的很多都是力扣…...

OQE-OPTICAL AND QUANTUM ELECTRONICS
文章目录 一、征稿简介二、重要信息三、服务简述四、投稿须知五、联系咨询 一、征稿简介 二、重要信息 期刊官网:https://ais.cn/u/3eEJNv 三、服务简述 四、投稿须知 1.在线投稿:由艾思科蓝支持在线投稿,请将文章全文投稿至艾思科蓝投稿系…...

在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处?
大家好,我是锋哥。今天分享关于【在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处?】面试题?希望对大家有帮助; 在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处? 1000道 互联网大厂Java工程师 精选…...

Chromium html<textarea>c++接口定义
<textarea>:文本区域元素 <textarea> HTML 元素是一个多行纯文本编辑控件,适用于允许用户输入大量自由格式文本的场景。 例子: <!DOCTYPE html> <html> <head> <meta charset"utf-8"> &l…...

OpenCV高级图形用户界面(13)选择图像中的一个矩形区域的函数selectROI()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 允许用户在给定的图像上选择一个感兴趣区域(ROI)。 该功能创建一个窗口,并允许用户使用鼠标来选择一个 ROI。…...

《计算机视觉》—— 基于dlib库的人检检测
文章目录 一、dlib库的安装1. 通过PyCharm的Settings安装2. 通过Anaconda安装(适用于Windows等操作系统)3. 通过命令行安装4.懒人安装 二、基于dlib库的人检测1.对图像进行人脸检测2.打开电脑摄像头,检测人脸 一、dlib库的安装 在PyCharm中&…...

分布式数据库安全可靠测评名录之平凯数据库(TiDB企业版)
作者: 数据源的TiDB学习之路 原文来源: https://tidb.net/blog/d052ee0b 2024 年 9 月 30 日,中国信息安全测评中心公布安全可靠测评结果公告(2024年第2号),其中包含 6 款集中式数据库和 11 款分布式数据…...

动态规划之打家劫舍
大纲 题目思路第一步:确定下标含义第二步:确定递推公式第二步:dp数组如何初始化第三步:确定遍历顺序第四步:举例推导dp数组 总结 最近有人询问我 LeetCode 「打家劫舍」系列问题(英文版叫 House Robber&…...

嵌入式入门学习——8基于Protues仿真Arduino+SSD1306液晶显示数字时钟
0 系列文章入口 嵌入式入门学习——0快速入门,Let‘s Do It! SSD1306 1 Protues查找SSD1306器件并放置在画布,画好电气连接(这里VCC和GND画反了,后面仿真出错我才看见,要是现实硬件估计就烧毁了…...

盘点现代浏览器的各种神奇能力,功能令人惊讶
盘点现代浏览器的各种神奇能力,功能令人惊讶😮 浏览器的进化 一个运行在浏览器里面的操作系统。一个炫酷的量子纠缠网页。内嵌在浏览器里面的AI大模型。 随着web技术的迅猛发展,现代浏览器已经不仅仅是一个浏览网页的工具了。它的功能早已进…...

人工智能停滞:人工智能投资与人工智能采用之间的差距
关注公众号网络研究观获取更多内容。 人工智能继续影响着云战略,但人工智能的实施速度比大多数人预测的要慢。这让在人工智能上押下重注的技术提供商感到沮丧。到底发生了什么? Censuswide 代表 Red Hat 近期开展了一项调查,调查对象为英国…...

高效容器化技术(3)---docker镜像仓库
1.镜像仓库 Docker镜像仓库是存储和管理Docker镜像的地方。它允许用户上传、下载和共享Docker镜像,从而方便在不同的主机上部署和运行应用程序。 常见的Docker镜像仓库包括: Docker Hub:官方的Docker镜像仓库,包含了大量的公共镜…...