Redis日常维护流程及技巧:确保稳定性与性能
目录
一、监控和报警设置
1.实时监控:洞察Redis的脉搏
(1). 资源使用监控
(2). 数据访问模式监控
(3). 持久化监控
(4). 客户端连接
2.报警机制:快速响应的哨兵
(1). 设置报警阈值
(2). 报警方式
(3). 报警策略
(4). 报警测试
3.监控工具的选择
(1). 内置监控工具
(2). 第三方监控工具
二、备份与恢复
1.备份策略:铸就数据安全的基石
(1). 定期全量备份
(2). 增量备份
(3). 备份存储
(4). 备份验证
2.恢复策略:数据重生的艺术
(1). 基于RDB的恢复
(2). 基于AOF的恢复
(3). 混合恢复
(4). 灾难恢复计划
3.备份工具的选择
(1). Redis自带工具
(2). 第三方备份工具
三、性能优化
1.内存优化:高效利用每一寸空间
(1). 数据结构选择
(2). 内存碎片整理
(3). 过期键管理
2.持久化优化:平衡速度与安全
(1). RDB与AOF的选择
(2). AOF优化
3.网络优化:减少延迟,提升吞吐
(1). 连接管理
(2). 管道与批量操作
4.硬件与操作系统优化:底层支撑的力量
(1). 硬件选择
(2). 操作系统参数调整
5.应用层优化:智能调用,高效协作
(1). 缓存策略
(2). 命令优化
四、数据安全与访问控制
1.数据加密:安全的基石
(1). 启用TLS加密
(2). 客户端证书认证
2.访问控制:精细的权限管理
(1). 密码认证
(2). ACL(访问控制列表)
3.审计日志:跟踪访问与操作
(1). 开启审计日志
4.数据持久化与备份:双重保障
(1). 定期备份
(2). 持久化策略
5.总结
五、日志管理
1.日志级别:精细调控的洞察力
(1). 配置日志级别
(2). 动态调整日志级别
2.日志输出:记录每一刻的变迁
(1). 配置日志输出
(2). 自定义日志格式
3.日志轮转:有序的记忆整理
(1). 启用日志轮转
(2). 日志压缩与归档
4.日志分析:洞察系统的心跳
(1). 实时日志监控
(2). 日志聚合与分析
5.安全审计:守护数据的金钥匙
(1). 审计日志记录
(2). 定期审计日志审查
6.总结
六、redis常用命令
Redis作为一个高性能的键值对数据库,广泛应用于缓存、会话存储、排行榜等场景。然而,随着数据量的增长和访问量的提升,定期的维护工作对于确保其稳定性和高性能至关重要。本文将介绍Redis的日常维护流程及技巧,帮助你更好地管理和维护你的Redis服务器。
一、监控和报警设置
在Redis的运维世界中,监控和报警设置犹如一双锐利的眼睛,时刻注视着系统的健康状况。它们是预防和快速响应潜在问题的关键。以下是关于如何有效实施监控和报警设置的详细指南。
1.实时监控:洞察Redis的脉搏
(1). 资源使用监控
- 内存使用:使用
info memory
命令可以获取内存使用的详细信息,包括已使用内存、峰值内存等。 - CPU使用:通过
info stats
命令可以查看CPU的使用情况,包括用户时间和系统时间。 - 网络流量:监控网络带宽使用,可以通过
info stats
中的total_net_input_bytes
和total_net_output_bytes
来了解。
(2). 数据访问模式监控
- 热点key分析:使用
redis-cli --hotkeys
可以找出占用内存最多的key,从而识别出热点key。 - 命令统计:通过
info commandstats
可以查看各个命令的执行次数、总耗时等,帮助分析系统瓶颈。
(3). 持久化监控
- RDB和AOF状态:定期检查
info persistence
中的RDB和AOF状态,确保持久化过程正常进行。
(4). 客户端连接
- 连接数监控:使用
info clients
可以查看当前连接数,以及是否有阻塞的客户端。
2.报警机制:快速响应的哨兵
(1). 设置报警阈值
- 内存使用率:当内存使用率达到预设阈值(如80%)时,触发报警。
- CPU使用率:当CPU使用率持续过高时,及时报警。
- 网络带宽:当网络带宽使用超过正常水平时,发出警告。
(2). 报警方式
- 邮件通知:配置邮件报警,确保关键人员能够及时收到通知。
- 短信通知:对于更紧急的情况,可以设置短信报警。
- 集成第三方服务:如Slack、PagerDuty等,提供更灵活的报警方式。
(3). 报警策略
- 分级报警:根据问题的严重程度设置不同的报警级别,如警告、严重、紧急等。
- 报警抑制:避免在短时间内重复报警,可以设置报警抑制机制。
(4). 报警测试
- 定期测试:定期进行报警测试,确保报警系统正常工作。
3.监控工具的选择
(1). 内置监控工具
- Redis自带的
MONITOR
命令:可以实时查看服务器处理的命令。 SLOWLOG
命令:用于记录执行时间较长的命令。
(2). 第三方监控工具
- RedisInsight:提供直观的图形界面,方便监控和管理Redis实例。
- Prometheus:结合Grafana可以构建强大的监控和报警系统。
- Datadog:提供全面的监控服务,支持多种数据源。
通过上述监控和报警设置的实施,你将能够实时掌握Redis的运行状态,并在问题发生时迅速做出反应。这不仅能够保障系统的稳定运行,还能够提升运维效率,确保业务的连续性和可靠性。记住,监控和报警是Redis运维的守护神,它们的存在让问题无处遁形,让维护工作事半功倍。
二、备份与恢复
在Redis的世界里,数据是王道,而备份与恢复则是守护这份王道的坚固盾牌。无论是应对硬件故障、软件错误,还是人为操作失误,一个完善的备份与恢复策略都是确保数据安全不可或缺的一环。以下是关于如何实施高效备份与恢复策略的详细指南。
1.备份策略:铸就数据安全的基石
(1). 定期全量备份
- RDB备份:通过配置
save
指令,可以设置Redis在指定时间间隔内,如果满足指定数量的写操作,则自动触发RDB快照备份。 - AOF备份:开启AOF持久化,Redis会将每个写命令追加到AOF文件中,可以设置不同的同步策略(如每秒同步、每次操作同步)来平衡性能与数据安全性。
(2). 增量备份
- AOF重写:定期执行
BGREWRITEAOF
命令,生成一个新的AOF文件,只包含当前数据库状态所需的写命令,从而减少文件大小。
(3). 备份存储
- 本地备份:将备份文件存储在本地磁盘,便于快速访问,但需注意单点故障风险。
- 远程备份:将备份文件同步至远程服务器或云存储,提高数据的安全性。
(4). 备份验证
- 定期验证:定期从备份中恢复数据,验证备份的完整性和可用性。
2.恢复策略:数据重生的艺术
(1). 基于RDB的恢复
- 直接恢复:将RDB文件复制到Redis数据目录,重启Redis服务,数据将自动从RDB文件中恢复。
(2). 基于AOF的恢复
- AOF文件恢复:将AOF文件复制到Redis数据目录,重启Redis服务,Redis会重新执行AOF文件中的命令来恢复数据。
(3). 混合恢复
- RDB+AOF:在某些情况下,可以同时使用RDB和AOF进行恢复,首先使用RDB快速恢复大部分数据,然后通过AOF补充恢复剩余的写操作。
(4). 灾难恢复计划
- 备份策略调整:在发生灾难性事件后,根据实际情况调整备份策略,如增加备份频率、改进备份存储方案等。
- 恢复演练:定期进行恢复演练,确保在真正需要时能够快速有效地恢复数据。
3.备份工具的选择
(1). Redis自带工具
SAVE
和BGSAVE
命令:手动触发RDB备份。BGREWRITEAOF
命令:手动触发AOF重写。
(2). 第三方备份工具
- RedisDump/Redis-Dump:用于导出和导入Redis数据的工具,支持JSON格式。
- Redis-CLI:除了基本的命令行操作,还可以用于数据的导出和导入。
通过上述备份与恢复策略的实施,你将能够为Redis数据安全铸就一道坚不可摧的防线。备份是预防措施,恢复是应对措施,两者相辅相成,共同确保数据的完整性和业务的连续性。记住,数据的价值在于它的可用性,而备份与恢复正是保障这一点的关键。在数据的世界里,备份与恢复不仅是技术操作,更是一种对数据负责的态度和承诺。
三、性能优化
在Redis的王国里,性能是衡量一切的黄金标准。一个优化的Redis实例,就像一匹矫健的骏马,能够在数据处理的赛道上飞驰。性能优化不仅关乎速度,更关乎资源的合理利用和系统的稳定性。以下是一些关键的性能优化策略,它们将帮助你的Redis实例达到最佳状态。
1.内存优化:高效利用每一寸空间
(1). 数据结构选择
- 合理选择:根据数据访问模式选择最合适的数据结构,如使用
SET
存储唯一值,HASH
存储对象等。 - 压缩列表:对于小数据量的列表、集合、有序集合,启用压缩列表(ziplist)可以显著减少内存占用。
(2). 内存碎片整理
- 自动内存碎片整理:启用
activedefrag
配置,让Redis自动进行内存碎片整理。 - 手动内存碎片整理:使用
MEMORY PURGE
命令手动触发内存碎片整理。
(3). 过期键管理
- 惰性删除:设置合理的过期策略,如
volatile-lru
或allkeys-lru
,让Redis在键过期时惰性删除,减少CPU压力。
2.持久化优化:平衡速度与安全
(1). RDB与AOF的选择
- RDB:适合数据集较大,且对恢复时间要求不高的场景。
- AOF:适合对数据完整性要求极高的场景,但需注意AOF文件大小和同步策略。
(2). AOF优化
- AOF重写:定期执行
BGREWRITEAOF
,减少AOF文件大小,提高恢复速度。 - AOF同步策略:选择合适的同步策略(如
everysec
),平衡数据安全和性能。
3.网络优化:减少延迟,提升吞吐
(1). 连接管理
- 最大连接数:根据实际需求调整
maxclients
配置,避免过多连接导致资源浪费。 - 连接池:使用连接池技术,复用连接,减少频繁创建和销毁连接的开销。
(2). 管道与批量操作
- 管道(Pipeline):通过管道技术,一次性发送多个命令,减少网络往返次数。
- 批量操作(MSET/MGET):使用批量操作命令,一次性处理多个键值对,提高效率。
4.硬件与操作系统优化:底层支撑的力量
(1). 硬件选择
- 内存:选择高速内存,确保Redis能够快速读写数据。
- 磁盘:如果使用磁盘持久化,选择SSD可以大幅提升I/O性能。
(2). 操作系统参数调整
- 文件描述符限制:增加
ulimit -n
的值,以支持更多的并发连接。 - TCP缓冲区大小:调整
net.core.rmem_max
和net.core.wmem_max
,优化网络吞吐。
5.应用层优化:智能调用,高效协作
(1). 缓存策略
- 缓存穿透:使用布隆过滤器(Bloom Filter)避免缓存穿透。
- 缓存雪崩:设置不同的过期时间,避免大量缓存同时失效。
(2). 命令优化
- 避免复杂操作:减少使用复杂度高的命令,如
SORT
、SUNION
等。 - 合理使用事务:在需要原子操作时使用事务,但避免在事务中执行过多命令。
通过上述性能优化策略的实施,你的Redis实例将能够在数据处理的道路上更加游刃有余。性能优化是一个持续的过程,需要不断地监控、分析和调整。记住,每一个微小的优化都可能带来显著的性能提升。在Redis的世界里,性能优不仅是一种技术实践,更是一种对极致追求的态度。让我们一起,让Redis的速度与效率飞跃新的高度。
四、数据安全与访问控制
在Redis的应用中,数据不仅需要高速访问,同时也需确保其安全性和访问的合理控制。这不仅涉及到数据本身的安全,同时也包括如何有效地控制谁可以访问数据,访问哪些数据,以及以什么方式访问数据。在这一部分,我们将深入探讨Redis的数据安全与访问控制机制,确保你的数据既快速又安全。
1.数据加密:安全的基石
虽然Redis本身不提供内置的数据加密功能,但通过网络层面的加密(如TLS/SSL)可以保证数据在传输中的安全性。确保所有的数据传输通过加密通道进行,能有效抵御窃听和中间人攻击。
(1). 启用TLS加密
- 配置Redis以启用TLS,保证数据在客户端和服务器之间传输的加密。
(2). 客户端证书认证
- 使用客户端证书认证,增加一层身份验证,确保只有持有有效证书的客户端才能连接。
2.访问控制:精细的权限管理
Redis提供了基于角色的访问控制(RBAC)模型,通过定义角色和权限来细粒度地控制访问权限。
(1). 密码认证
- 使用
requirepass
配置为Redis实例设置密码,任何访问都需要先通过AUTH
命令进行身份验证。
(2). ACL(访问控制列表)
- 通过配置ACL,可以具体到命令级别或数据键级别的访问控制,为不同的用户分配不同的权限。
- 创建具有特定权限的用户,例如只读用户、只能访问特定键的用户等。
3.审计日志:跟踪访问与操作
启用Redis的审计日志功能,可以记录谁在什么时候执行了什么命令。这对于后期的安全审计、异常检测和故障排除至关重要。
(1). 开启审计日志
- 通过配置开启审计日志,记录所有重要的访问和操作事件。
4.数据持久化与备份:双重保障
虽然数据持久化与备份不直接属于访问控制范畴,但它们是数据安全的重要组成部分。通过定期备份和合理配置数据持久化策略,可以保证数据在面临系统故障时的安全和完整性。
(1). 定期备份
- 定期执行
BGSAVE
命令,将数据从内存持久化到磁盘,同步到安全位置。
(2). 持久化策略
- 根据业务需求和数据重要性,合理配置RDB和AOF持久化策略,确保数据安全。
5.总结
在数字世界中,数据是宝贵的资产。尤其对于Redis这样的高性能数据库,确保数据的安全性和访问控制的有效性是维护数据价值的关键。通过上述的数据加密、访问控制、审计日志、数据持久化和备份等措施,可以建立起一道坚固的防线,保护Redis数据库中的数据安全,防止未授权访问和潜在的数据泄露风险。记住,强大的访问控制和数据安全机制,是保障Redis数据库持久稳定运行的基石。
五、日志管理
在Redis的运维世界中,日志管理扮演着至关重要的角色。它不仅是故障排查的得力助手,也是性能监控、安全审计和合规性检查的智慧之眼。通过细致入微的日志记录,我们能够洞察系统的运行状态,及时发现潜在的问题,并采取相应的措施。在这一部分,我们将深入探讨Redis的日志管理策略,确保你的Redis实例运行在最佳状态。
1.日志级别:精细调控的洞察力
Redis提供了多种日志级别,从最详细的调试信息到最简洁的警告信息,允许管理员根据实际需要调整日志的详细程度。
(1). 配置日志级别
- 通过
loglevel
配置选项设置日志级别,如debug
、verbose
、notice
和warning
。 - 选择合适的日志级别,平衡日志的详细程度和系统性能。
(2). 动态调整日志级别
- 在运行时使用
CONFIG SET loglevel
命令动态调整日志级别,以适应不同的运维场景。
2.日志输出:记录每一刻的变迁
日志的输出位置和格式对于日志管理同样重要。Redis允许你将日志输出到不同的位置,并自定义日志格式。
(1). 配置日志输出
- 使用
logfile
配置选项指定日志文件的位置,或者配置为输出到标准输出(stdout)。
(2). 自定义日志格式
- 虽然Redis不直接支持自定义日志格式,但可以通过日志轮转工具和日志分析工具来处理和格式化日志。
3.日志轮转:有序的记忆整理
随着时间的推移,日志文件会不断增长,为了防止日志文件过大,需要进行日志轮转。
(1). 启用日志轮转
- 配置日志轮转工具(如
logrotate
)来自动管理日志文件的大小和数量。 - 设置日志文件的最大大小和保留的日志文件数量。
(2). 日志压缩与归档
- 对轮转后的日志文件进行压缩,减少存储空间的占用。
- 将压缩后的日志文件归档,便于长期存储和历史查询。
4.日志分析:洞察系统的心跳
日志分析是日志管理的核心,通过分析日志,可以获取系统性能、用户行为和潜在安全威胁的宝贵信息。
(1). 实时日志监控
- 使用实时日志监控工具(如
ELK Stack
、Graylog
)来监控日志流,及时发现异常。
(2). 日志聚合与分析
- 将多个Redis实例的日志聚合到中央日志服务器,进行统一分析。
- 利用日志分析工具进行趋势分析、异常检测和模式识别。
5.安全审计:守护数据的金钥匙
日志记录对于安全审计至关重要,它可以帮助我们追踪和分析潜在的安全威胁。
(1). 审计日志记录
- 确保所有关键操作(如认证失败、权限变更)都被记录在审计日志中。
(2). 定期审计日志审查
- 定期审查审计日志,检查是否有异常行为或未授权的访问尝试。
6.总结
日志管理是Redis运维中不可或缺的一环。通过合理配置日志级别、输出、轮转和分析,我们可以确保Redis实例的健康运行,及时发现并解决问题。同时,日志管理也是安全审计的重要组成部分,帮助我们守护数据的安全。记住,日志不仅是记录,更是洞察系统运行状态的智慧之眼,是保障Redis高效、稳定、安全运行的关键
六、redis常用命令
1. SET
功能:设置指定键的值。
用法:SET key value [EX seconds] [PX milliseconds] [NX|XX]
示例:SET mykey "HelloRedis" EX 102. GET
功能:获取指定键的值。
用法:GET key
示例:GET mykey3. DEL
功能:删除一个或多个键。
用法:DEL key [key ...]
示例:DEL mykey1 mykey24. EXISTS
功能:检查键是否存在。
用法:EXISTS key
示例:EXISTS mykey5. INCR
功能:将键的整数值增加1。
用法:INCR key
示例:INCR counter6. DECR
功能:将键的整数值减少1。
用法:DECR key
示例:DECR counter7. INCRBY
功能:将键的整数值增加指定数量。
用法:INCRBY key increment
示例:INCRBY counter 58. DECRBY
功能:将键的整数值减少指定数量。
用法:DECRBY key decrement
示例:DECRBY counter 39. APPEND
功能:将指定值追加到键的值的末尾。
用法:APPEND key value
示例:APPEND mykey " World"10. STRLEN
功能:获取键值的字符串长度。
用法:STRLEN key
示例:STRLEN mykey11. LPUSH
功能:将一个或多个值插入到列表头部。
用法:LPUSH key value [value ...]
示例:LPUSH mylist "world"12. RPUSH
功能:将一个或多个值插入到列表尾部。
用法:RPUSH key value [value ...]
示例:RPUSH mylist "hello"13. LPOP
功能:移除并获取列表的第一个元素。
用法:LPOP key
示例:LPOP mylist14. RPOP
功能:移除并获取列表的最后一个元素。
用法:RPOP key
示例:RPOP mylist15. LRANGE
功能:获取列表指定范围内的元素。
用法:LRANGE key start stop
示例:LRANGE mylist 0 -116. SADD
功能:向集合添加一个或多个成员。
用法:SADD key member [member ...]
示例:SADD myset "member1"17. SMEMBERS
功能:获取集合的所有成员。
用法:SMEMBERS key
示例:SMEMBERS myset18. ZADD
功能:向有序集合添加一个或多个成员,或者更新已存在成员的分数。
用法:ZADD key score member [score member ...]
示例:ZADD myzset 1 "member1"19. ZRANGE
功能:通过索引区间返回有序集合指定区间内的成员。
用法:ZRANGE key start stop [WITHSCORES]
示例:ZRANGE myzset 0 -1 WITHSCORES20. HSET
功能:将哈希表key中的字段field的值设为value。
用法:HSET key field value
示例:HSET myhash field1 "Hello"
通过上述维护流程及技巧,你可以有效地管理和维护Redis服务器,确保其稳定性和高性能。日常的维护工作虽然需要一定的时间和精力,但对于保障系统的稳定运行和提升用户体验来说,是非常必要的。希望本文能够对你在Redis的日常维护工作中提供帮助。
相关文章:
Redis日常维护流程及技巧:确保稳定性与性能
目录 一、监控和报警设置 1.实时监控:洞察Redis的脉搏 (1). 资源使用监控 (2). 数据访问模式监控 (3). 持久化监控 (4). 客户端连接 2.报警机制:快速响…...
牛客华为机试题——难度:入门(python实现)
HJ7 取近似值 HJ9 提取不重复的整数 HJ46 截取字符串 HJ58 输入n个整数,输出其中最小的k个 HJ101 输入整型数组和排序标识,对其元素按照升序或降序进行排序 HJ7 取近似值 描述:写出一个程序,接受一个正浮点数值,输…...
数据结构与算法学习笔记之线性表五---循环链表的表示和实现(C++)
目录 前言 1.双向链表的定义 2.双向链表的表示和实现 1.定义 2.初始化 3.销毁 4.清空 5.表长 6.获取数据元素 7.前驱节点 8.后继节点 9.插入 10.删除 11.遍历 12.完整代码 前言 记录下双向链表的表示和实现。 1.循环链表的定义 循环链表(circular linked list)…...
微信小程序生命周期揭秘:从启动到消亡的全过程剖析【附代码】
微信小程序生命周期揭秘:从启动到消亡的全过程剖析 一、小程序生命周期概览核心生命周期函数 二、深入理解生命周期回调2.1 onLoad: 首次亮相的准备2.2 onShow: 重登舞台的瞬间2.3 onReady: 舞台就绪,静待表演2.4 onHide & onUnload: 谨慎离场&#…...
Linux 下载 miniconda
https://repo.anaconda.com/miniconda/ 下载对应版本: wget -c https://repo.anaconda.com/miniconda/Miniconda3-py310_24.3.0-0-Linux-x86_64.sh给下载的文件添加可执行权限 chmod x Miniconda3-py310_24.3.0-0-Linux-x86_64.sh安装 ./Miniconda3-py310_24.3.…...

第十五篇:全面防护:构建不容侵犯的数据库安全策略与实战指南
全面防护:构建不容侵犯的数据库安全策略与实战指南 1. 引言:数据库安全的现代战略 1.1 简介:数据库安全在当今的数字化时代中的重要性 在数字化的浪潮中,数据已成为企业乃至国家的核心资产,其价值不亚于实体世界的黄…...

电脑快速搜索文件及文件夹软件——Everything
一、前言 Everything是一款由voidtools开发的文件搜索工具,主要运行于Windows操作系统上。它的主要功能是快速、高效地搜索电脑上的文件和文件夹名称。Everything通过利用NTFS文件系统的MFT(主文件表)来索引文件,从而实现几乎实时…...
02-登录页面、动态路由、权限等模块开发
权限模块开发流程 前端login页面开发后端SpringSecurity配置后端login接口开发前端页面框架搭建前端路由守卫,状态管理开发前后端完成认证流程 开发Login页面 创建Login页面创建router,可以跳转到Login页面 Login页面 使用element-plus开发 认证功…...

万物生长大会 | 创邻科技再登杭州准独角兽榜单
近日,由民建中央、中国科协指导,民建浙江省委会、中国投资发展促进会联合办的第八届万物生长大会在杭州举办。 在这场创新创业领域一年一度的盛会上,杭州市创业投资协会联合微链共同发布《2024杭州独角兽&准独角兽企业榜单》。榜单显示&…...
(六)Linux的Shell编程(上)
一.Shell Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Ken Thompson 的 sh 是第一种 Unix Shell,Windows …...

CANopen总线_CANOpen开源协议栈
CANopen是自动化中使用的嵌入式系统的通信协议栈和设备配置文件规范。就OSI 模型而言,CANopen 实现了以上各层,包括网络层。 CANopen 标准由一个寻址方案、几个小型通信协议和一个由设备配置文件定义的应用层组成。通信协议支持网络管理、设备监控和节点…...
Rust 语言不支持 goto 语句
一、Rust 不提供 goto 语句 Rust 语言并没有提供 goto 语句。goto 语句在很多现代编程语言中已经不再被推荐使用,因为它可能导致代码的流程变得难以跟踪和理解,特别是在复杂的程序中。Rust 语言设计者选择了更加结构化和可预测的控制流语句,…...

uniapp日期区间选择器
uniapp日期区间选择器 在 uniapp 中创建一个简单的自定义日期范围的日期区间选择器: - 限制有效日期范围开始日期为 2024-01-01,结束日期为当日; - 默认日期区间为当日向前计算的7日区间; - 选择开始时间后,判断不可大…...

k8s job
ReplicaSet 和 DaemonSet 会持续运行任务,永远达不到完成态。但在一个可完成的任务中,其进程终止后,不应该再重新启动。 Job 允许你运行一种 pod,该 pod 在内部进程成功结束时,不重启容器,一旦任务完成&…...

Python---NumPy万字总结【此篇文章内容难度较大,线性代数模块】(3)
NumPy的应用(3) 向量 向量(vector)也叫矢量,是一个同时具有大小和方向,且满足平行四边形法则的几何对象。与向量相对的概念叫标量或数量,标量只有大小,绝大多数情况下没有方向。我们…...

【面试经典题】环形链表
个人主页:一代… 个人专栏:数据结构 在面试中我们经常会遇到有关链表的相关题目,面试官通常会对题目给出拓展 下面我就两个leetcode上的一个双指针的题目为例,并对其进行拓展 题目链接:环形链表 题目描述…...

【联合索引】最左匹配原则是什么?
什么是联合索引 联合索引(Composite Index)是一种索引类型,它由多个列组成。 MySQL的联合索引(也称为复合索引)是建立在多个字段上的索引。这种索引类型允许数据库在查询时同时考虑多个列的值,从而提高查询…...

LeetCode 700.二叉搜索树中的搜索
LeetCode 700.二叉搜索树中的搜索 1、题目 题目链接:700. 二叉搜索树中的搜索 给定二叉搜索树(BST)的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则…...
程序设计实践-课程设计任务布置(麦当劳) (price 200)(不包含文档)
WX: help-assignment code price 200(不包含文档!不包含文档!不包含文档!) 课题任务-概述 2023年5月,麦当劳在北邮开业。大量的学生去那里订餐。正因为如此,麦当劳的在线点餐系统经常关闭以避…...
leetcode 918.环形子数组的最大和
思路:DP 其实和昨天做的哪个重复数组差不多,按顺序来说先做这个题目其实更好。 这里需要分两种情况:第一个,就是数组不越界的时候,这个时候最大子数组和就是leetcode 53题的题解。 如果说越界了,我们还需…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...

vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...

Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...

【Linux】自动化构建-Make/Makefile
前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具:make/makfile 1.背景 在一个工程中源文件不计其数,其按类型、功能、模块分别放在若干个目录中,mak…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
云原生周刊:k0s 成为 CNCF 沙箱项目
开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...