当前位置: 首页 > news >正文

Redis的阻塞

Redis的阻塞

Redis的阻塞问题主要分为内在原因外在原因两大类,以下从这两个维度展开分析:


一、内在原因

1. 不合理使用API或数据结构
  • Redis 慢查询

    • Redis 慢查询的界定

      • 定义:Redis 慢查询指命令执行时间超过预设阈值(默认 10ms)的操作,仅统计命令执行阶段耗时
      • slowlog-log-slower-than​:阈值(单位微秒),默认 10000(10ms),建议调整为 1000(1ms)
      • slowlog-max-len​:慢查询日志队列长度,默认 128,建议提升至 1000+ 避免日志覆盖。
    • 典型慢查询命令及风险场景

      • 高时间复杂度命令(O(N)及以上)

        • 全量遍历类

          • KEYS *​:遍历所有键(复杂度 O(n)),可能引发长时间阻塞。
          • SMEMBERS​:获取集合全部元素(O(n)),百万级数据时耗时显著。
        • 聚合计算类

          • SORT​:排序操作(O(n log n)),大列表排序时性能骤降。
          • ZUNIONSTORE​/SUNION​:多集合交并操作(O(n)),数据量越大耗时越长。
        • 大范围查询类

          • HGETALL​:获取哈希所有字段(O(n)),10MB+ 的 Hash 操作延迟显著。
          • LRANGE 0 -1​:获取列表全部元素(O(n)),可能占用主线程数秒。
        1. BigKey 操作
        • 定义:存储大量数据的 Key(如 10MB Hash、百万元素 List)

        • 典型风险命令

          • DEL​:删除 BigKey 时触发内存回收阻塞(单线程模型下耗时极长)。
          • GET​/SET​:序列化/反序列化大 Value 时耗时增加(如 AOF 重写阶段)。
          • EXPIRE​:对大 Key 设置过期时间可能引发后续淘汰阻塞。
      • 非显式高耗时操作

        • Pipeline 不当使用:一次性发送过多命令导致单次执行时间超过阈值。
        • Lua 脚本阻塞:执行复杂脚本(如循环遍历大数据)时未分批次处理。
        • 事务(MULTI/EXEC) :事务中包含多个高耗时命令时整体被视为慢查询。
    • 排查与优化建议

      • 查看日志

        SLOWLOG GET [n]  # 获取最近 n 条慢查询记录(含命令、耗时、客户端 IP)
        SLOWLOG LEN       # 统计当前日志数量
        

      • 日志字段解析

        • id​:唯一标识
        • timestamp​:执行时间戳
        • duration​:耗时(微秒)
        • command​:完整命令及参数。
      • 优化策略

        • 拆分 BigKey

          • 将大 Hash 拆分为多个子 Key,通过分片降低单次操作负载。
          • 使用 LPOP​/RPOP​ 分批次删除大 List,避免 DEL​ 阻塞。
        • 配置调优

          • 动态调整阈值:CONFIG SET slowlog-log-slower-than 1000​。
          • 禁用高风险命令:通过 rename-command​ 屏蔽 KEYS​。
        • 替换高复杂度命令

          • SCAN​ 替代 KEYS​,HSCAN​ 替代 HGETALL​。
          • 对排序需求改用 ZRANGE​ 或客户端计算。
      • 监控与预警

        • 工具

          • redis-cli --bigkeys​:扫描内存中的 BigKey。
          • Prometheus + Grafana:可视化监控慢查询频率及耗时分布。
        • 告警规则

          • 单命令耗时 > 5ms 时触发告警。
          • 慢查询日志长度连续增长时排查潜在性能瓶颈。

    • 总结:慢查询命令速查表

      命令类型典型命令风险场景优化方案
      全量遍历KEYS *​、SMEMBERS键数量多、集合元素量大改用SCAN​、分片存储
      聚合计算SORT​、ZUNIONSTORE数据量大、多集合操作客户端计算、预聚合
      大范围查询HGETALL​、LRANGE 0 -1Hash/List 体积大分批次获取、压缩存储格式
      BigKey 操作DEL​、GET​(大 Value)内存回收、序列化开销渐进式删除、拆分 Key
2. CPU饱和
  • CPU饱和的定义 :

    • CPU饱和指Redis单核CPU使用率长期接近或达到100%的临界状态。由于Redis采用单线程模型,所有请求由主线程顺序处理,一旦CPU满载会导致命令队列积压、响应延迟暴增,甚至引发服务雪崩。这种现象在高并发或复杂操作场景下尤为危险
  • 判断并发量是否达极限

    • redis-cli --stat​命令分析 每秒输出一次统计信息,重点关注requests​字段(即OPS,每秒操作数)

      redis-cli --stat
      # 典型CPU饱和时的输出特征:
      # 1. 每秒处理请求量持续在5万+(普通服务器极限约8-10万OPS)
      # 2. 客户端连接数(clients)持续高位且无明显波动
      

    • top​命令监控 直接观察Redis进程的CPU使用率

      top -p $(pgrep redis-server)
      # 当CPU使用率≥95%且持续不降时,可判定为饱和状态
      
    • INFO commandstats​分析命令耗时 观察高频命令的usec_per_call​(单次调用微秒数

      cmdstat_hset:calls=198757512,usec=27021957243,usec_per_call=135.95
      # 正常O(1)命令应≤10微秒,若值异常高(如135μs)可能存在配置或数据结构问题
      
  • 问题根源分析

    • 高算法复杂度命令

    • 过度内存优化

      • 修改hash-max-ziplist-entries​等参数过度压缩数据结构,导致操作复杂度从O(1)退化为O(n)
    • 持久化操作竞争

      • Fork阻塞
      • AOF刷盘
    • 连接数过载 : 短连接频繁创建或maxclients​设置过低,导致TCP握手/断连消耗CPU资源

3. 持久化阻塞
  • RDB生成BGSAVE​触发fork操作时,若内存过大(如10GB),复制页表可能导致主线程暂停(典型耗时约20ms/GB)。

  • AOF重写BGREWRITEAOF​期间,主线程需将缓冲区数据追加到新AOF文件,可能因磁盘压力大而阻塞。

    • 优化方案

      • 调整RDB触发频率,避免高峰期执行。
      • 使用appendfsync everysec​替代always​,降低磁盘I/O压力。
      • 关闭透明大页(THP),避免内存页复制效率降低。

二、外在原因

1. CPU竞争
  • Redis部署在多核服务器时,若与其他进程竞争CPU资源,或父子进程(如RDB/AOF重写)绑定同一核心,会导致性能下降。

    • 优化方案

      • 将Redis部署在专用服务器,避免资源争抢。

      • 调整进程绑定策略(如父进程与子进程绑定不同核心)。

        • 错误的现象 :

          flowchart TDsubgraph CPU核心1A[Redis主线程\n(父进程)]B[RDB/AOF子进程]endA -->|fork| BA -->|处理客户端请求\n(高优先级)| C[CPU时间片]B -->|生成快照/重写AOF\n(低优先级)| CC -->|资源抢占| D[响应延迟增加]
          
        • 正确的现象

          flowchart TDsubgraph 物理CPUsubgraph 核心0-3A[Redis主线程\n(绑定核心0-3)]endsubgraph 核心4-7B[RDB/AOF子进程\n(绑定核心4-7)]endendA -->|fork| BA -->|独占核心0-3| C[高效处理请求]B -->|独占核心4-7| D[无干扰持久化]
          
2. 内存交换(Swap)
  • 内存交换是操作系统的内存管理机制,当物理内存不足时,系统会将部分内存中的冷数据(长时间未被访问)移动到磁盘的 Swap 分区,以腾出内存空间给其他进程使用。
    对 Redis 而言,数据原本应完全驻留内存以实现高性能(微秒级响应)。若发生 Swap,访问被换出的数据需经历磁盘 I/O(毫秒级),响应延迟骤增 5~10 万倍

  • 内存交换流程图

    flowchart TDsubgraph 物理内存A[Redis 热点数据\n(高频访问)]B[Redis 冷数据\n(长时间未访问)]C[其他进程占用的内存]endsubgraph 磁盘Swap分区D[被换出的冷数据]endA -->|持续活跃| E[正常响应(微秒级)]B -->|内存不足触发交换| F[Swap Out操作]F -->|数据写入磁盘| DC -->|占用内存增加| FD -->|再次被访问| G[Swap In操作]G -->|数据加载回内存| H[高延迟响应(毫秒级)]
    
    • 流程关键点

      • 触发条件(内存不足)

        • Redis 自身内存超限(如未设置 maxmemory​)
        • 同一服务器运行其他内存密集型进程(如大数据处理、文件 I/O)
      • Swap Out

        操作系统将冷数据从内存迁移到 Swap 分区,释放物理内存空间。

      • Swap In

        Redis 需访问已换出的数据时,触发磁盘读取和数据回迁,导致延迟暴增。

      • 性能影响

        单次 Swap 操作可能引入数毫秒延迟,若高频触发则整体吞吐量断崖式下跌

  • 内存交换的核心原因

    • Redis 内存超限

      • 未配置 maxmemory​:Redis 默认无内存限制,可能无限增长直至触发 Swap。
      • BigKey 或内存碎片:大对象(如 10MB Hash)或碎片化内存占用超出预期
    • 操作系统资源竞争

      • 多进程共存:同一服务器运行 MySQL、Hadoop 等内存密集型服务,挤占 Redis 可用内存。
      • Swap 配置不合理:Linux 默认 vm.swappiness=60​,内存压力大时激进换出数据。
    • 硬件限制

      • 物理内存不足:服务器内存容量无法支撑 Redis 数据集规模
      • 磁盘性能差:机械硬盘的 Swap 操作延迟远高于 SSD(如 10ms vs 0.1ms)。
  • 监控与诊断工具

    • 检查 Swap 使用量

      # 查看 Redis 进程 Swap 情况
      redis-cli info | grep process_id  # 获取 PID
      cat /proc/<PID>/smaps | grep -i swap
      
    • 性能分析工具

      • redis-cli --latency​:检测 Redis 响应延迟波动。
      • vmstat ​:监控系统级 Swap I/O 频率(si/so​ 列)
3. 网络问题
  • 连接数过多:短连接频繁创建或maxclients​设置过低,导致TCP连接处理消耗CPU资源。

  • 带宽不足:高吞吐场景下网络打满,或使用MONITOR​命令记录所有请求。

    • 优化方案

      • 使用连接池管理长连接,设置timeout​自动关闭空闲连接。
      • 禁用MONITOR​,通过Pipeline​批量请求减少网络往返。

三、总结与优化策略

阻塞类型关键表现优先级解决方案
大Key操作单命令执行时间过长拆分Key、改用分片或压缩结构
持久化fork延迟latest_fork_usec​值高降低RDB频率、优化内存页管理
CPU竞争服务器整体CPU饱和隔离部署、绑定CPU核心
内存交换used_memory_rss​异常高紧急禁用Swap、增加物理内存

综合建议

  • 监控工具:使用SLOWLOG​、INFO commandstats​分析慢查询,redis-cli --bigkeys​扫描大Key。
  • 架构设计:采用读写分离、集群分片(Redis Cluster)分散负载。
  • 配置调优:调整maxmemory​、repl-backlog-size​,优化淘汰策略(如volatile-lru​)。

通过上述措施,可显著降低Redis阻塞风险,提升系统稳定性。

相关文章:

Redis的阻塞

Redis的阻塞 Redis的阻塞问题主要分为内在原因和外在原因两大类&#xff0c;以下从这两个维度展开分析&#xff1a; 一、内在原因 1. 不合理使用API或数据结构 Redis 慢查询 Redis 慢查询的界定 定义&#xff1a;Redis 慢查询指命令执行时间超过预设阈值&#xff08;默认 10m…...

OkHttp源码梳理

目录 一、基本使用 1 创建 OkHttpClient 2 构建请求 Request 3 创建和执行 Call 二、OkHttp请求整体流程 1. 用户调用入口 2. RealCall执行逻辑 2.1 同步请求&#xff1a;RealCall.execute() 2.2 异步请求&#xff1a;RealCall.enqueue(Callback) 3. Dispatcher调度请…...

【第三十三周】BLIP论文阅读笔记

BLIP 摘要Abstract文章信息引言方法MED预训练CapFilt 关键代码实验结果总结 摘要 本博客介绍了BLIP&#xff08;Bootstrapping Language-Image Pre-training&#xff09;&#xff0c;这是一种创新的视觉-语言预训练框架&#xff0c;旨在通过统一模型架构和高效数据增强策略&am…...

如何配置osg编译使支持png图标加载显示

步骤如下&#xff1a; 1.下载osg代码 git clone https://github.com/openscenegraph/OpenSceneGraph.git cd OpenSceneGraph 2.开始配置编译 mkdir build cd build cmake … -DBUILD_OSG_PLUGINS_BY_DEFAULT1 -DBUILD_OSG_PLUGIN_PNG1 3.编译与安装 make make install 4.在安装…...

234. 回文链表(java)

个人理解&#xff1a; 1.先找到链表的中间节点&#xff0c;将链表分为前后两部分 方法&#xff1a;设置快慢指针&#xff0c;初始都指向头节点&#xff0c;慢指针每次走一步&#xff0c;快指针每次走两步。循环结束条件为&#xff1a;快指针后两个元素不为空&#xff0c;此时慢…...

面试:结构体默认是对齐的嘛?如何禁止对齐?

是的。 结构体默认是对齐的‌。结构体对齐是为了优化内存访问速度和减少CPU访问内存时的延迟。结构体对齐的规则如下&#xff1a; 某数据类型的变量存放的地址需要按有效对齐字节剩下的字节数可以被该数据类型所占字节数整除&#xff0c;char可以放在任意位置&#xff0c;int存…...

Leetcode837.新21点

目录 题目算法标签: 数学, 概率, 动态规划思路代码 题目 837. 新 21 点 算法标签: 数学, 概率, 动态规划 思路 定义状态表示为 f [ i ] f[i] f[i], 表示分数达到 i i i的时候的概率, 分析状态计算, 假设当前的分数是 i i i, 抽取到的牌得分数是 x x x, 那么当前状态就会转移…...

【C到Java的深度跃迁:从指针到对象,从过程到生态】第四模块·Java特性专精 —— 第十五章 泛型:类型系统的元编程革命

一、从C的void*到Java类型安全 1.1 C泛型的原始实现 C语言通过void*和宏模拟泛型&#xff0c;存在严重安全隐患&#xff1a; 典型泛型栈实现&#xff1a; #define DECLARE_STACK(type) \ struct stack_##type { \ type* data; \ int top; \ int capacity; \ }; #de…...

纯净无噪,智见未来——MAGI-1本地部署教程,自回归重塑数据本质

一、MAGI-1简介 MAGI-1 是一种逐块生成视频的自回归去噪模型&#xff0c;而非一次性生成完整视频。每个视频块&#xff08;含 24 帧&#xff09;通过整体去噪处理&#xff0c;当前块达到特定去噪阈值后&#xff0c;立即启动下一块的生成。这种流水线设计支持 最多 4 个块的并发…...

BG开发者日志0427:故事的起点

1、4月26日晚上&#xff0c;BG项目的gameplay部分开发完毕&#xff0c;后续是细节以及试玩版优化。 开发重心转移到story部分&#xff0c;目前刚开始&#xff0c; 确切地说以前是长期搁置状态&#xff0c;因为过去的四个月中gameplay部分优先开发。 --- 2、BG这个项目的起点…...

直播预告|TinyVue 组件库高级用法:定制你的企业级UI体系

TinyVue 是一个跨端跨框架的企业级 UI 组件库&#xff0c;基于 renderless 无渲染组件设计架构&#xff0c;实现了一套代码同时支持 Vue2 和 Vue3&#xff0c;支持 PC 和移动端&#xff0c;包含 100 多个功能丰富的精美组件&#xff0c;可帮助开发者高效开发 Web 应用。 4 月 …...

基于Jamba模型的天气预测实战

深入探索Mamba模型架构与应用 - 商品搜索 - 京东 DeepSeek大模型高性能核心技术与多模态融合开发 - 商品搜索 - 京东 由于大气运动极为复杂&#xff0c;影响天气的因素较多&#xff0c;而人们认识大气本身运动的能力极为有限&#xff0c;因此以前天气预报水平较低 。预报员在预…...

Customizing Materials Management with SAP ERP Operations

Customizing Materials Management with SAP ERP Operations...

使用 NServiceBus 在 .NET 中构建分布式系统

在 .NET 中&#xff0c;NServiceBus 依然是构建可靠、可扩展、异步消息驱动架构的强大工具。本文将为你讲解如何在 .NET 环境下集成 NServiceBus&#xff0c;帮助你理解其核心概念及配置方法&#xff0c;并快速上手构建基于消息的系统。 一、NServiceBus 简介 NServiceBus …...

【Linux网络与网络编程】13.五种 IO 模型

前言 在前面的学习中&#xff0c;有一个问题一直没有展开来说&#xff0c;即 IO 问题。 IO 到底有多少种方式呢&#xff1f;什么是高效的 IO 呢&#xff1f; IO 本质上就是 INPUT 和 OUTPUT 。在网络中 INPUT 就是从网卡中获取数据&#xff0c;而 OUTPUT 就是向网卡中发送数据…...

Java后端开发day37--源码解析:TreeMap可变参数--集合工具类:Collections

&#xff08;以下内容全部来自上述课程&#xff09; 1. TreeMap 1.1 须知 1.1.1 Entry 节点初始为黑色&#xff1a;提高代码阅读性 1.1.2 TreeMap中的成员变量 comparator&#xff1a;比较规则root&#xff1a;红黑树根节点的地址值size&#xff1a;集合的长度和红黑树…...

海关 瑞数 后缀分析 rs

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 逆向过程 部分python代码 cp execj…...

【合新通信】---Mini单路光模块(Mini SFF/USOT)

产品特性 l 高可靠、全金属外壳、抗振动设计 l 紧凑的结构设计, 超小模块尺寸 l 可插拔标准LC单模光纤连接器接口&#xff0c;方便动态和灵活的配置数据连接 l 每通道工作速率可达1.25Gbps&#xff0c;速率可向下兼容 l 单路发射光纤通道&#xff0c;内置1310nm波长光发射…...

Java详解LeetCode 热题 100(02):LeetCode 49. 字母异位词分组(Group Anagrams)详解

文章目录 1. 题目描述2. 理解题目3. 解法一:排序法3.1 思路3.2 Java代码实现3.3 代码详解3.4 复杂度分析3.5 适用场景4. 解法二:计数法4.1 思路4.2 Java代码实现4.3 代码详解4.4 复杂度分析4.5 适用场景5. 解法三:字符串哈希法5.1 思路5.2 Java代码实现5.3 代码详解5.4 复杂…...

【每日随笔】文化属性 ① ( 天机 | 强势文化与弱势文化 | 文化属性的形成与改变 | 强势文化 具备的特点 )

文章目录 一、文化属性1、天机2、文化属性的强势文化与弱势文化强势文化弱势文化 二、文化属性的形成与改变1、文化属性形成2、文化属性改变3、文化知识的阶层 三、强势文化 具备的 特点 一、文化属性 1、天机 如果想要 了解这个世界的 底层架构 , 就需要掌握 洞察事物本质 的能…...

Java + Seleium4.X + TestNG自动化技术

系列文章目录 文章目录 系列文章目录前言一、 Java版Selenium自动化测试框架介绍和原理1.1 什么是Seleium1.2 特点1.3 注意点 二、安装SeleiumChrome环境 创建Maven项目2.1 安装Seleium Chrome环境2.2 Maven环境 三、Selenium4.X UI元素定位实战3.1 ID选择器3.2 Name选择器3.…...

Spark SQL核心概念与编程实战:从DataFrame到DataSet的结构化数据处理

一、Spark-SQL是什么 Spark SQL 是 Spark 用于结构化数据(structured data)处理的 Spark 模块。 二、Hive and SparkSQL SparkSQL 的前身是 Shark&#xff0c;Shark是给熟悉 RDBMS 但又不理解 MapReduce 的技术人员提供的快速上手的工具。 Hive 是早期唯一运行在 Hadoop 上的 S…...

electron-vite 应用打包自定义图标不显示问题

// 修改electron-builder.yml ... win:executableName: xxx //可执行文件名称icon: build/icon.ico //你的图标路径 ...打包后&#xff0c;自定义图标不显示原因: 1 cannot execute causeexit status 2&#xff0c;安装包无法生成 用管理员身份运行&#xff0c;win11右击开始…...

AI中Token的理解与使用总结

AI中Token的理解与使用总结 什么是Token 在AI领域,特别是自然语言处理(NLP)中,Token是指将文本分割成的最小处理单元。Tokenization(分词)是将原始文本分解为Token的过程。 Token的几种形式 单词级Token:以单词为基本单位 示例:“Hello world” → [“Hello”, “world”…...

C++/SDL 进阶游戏开发 —— 双人塔防(代号:村庄保卫战 14)

&#x1f381;个人主页&#xff1a;工藤新一 &#x1f50d;系列专栏&#xff1a;C面向对象&#xff08;类和对象篇&#xff09; &#x1f31f;心中的天空之城&#xff0c;终会照亮我前方的路 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 文章目录 二…...

全栈量子跃迁:当Shor算法破解RSA时,我们如何用晶格密码重构数字世界的信任基岩?

一、量子威胁的降维打击 1. Shor算法的毁灭性力量 # Shor算法量子电路简化示例&#xff08;Qiskit实现&#xff09; from qiskit import QuantumCircuit from qiskit.circuit.library import QFTdef shor_circuit(n: int, a: int) -> QuantumCircuit:qc QuantumCircuit(2…...

python实战项目65:drissionpage采集boss直聘数据

python实战项目65:drissionpage采集boss直聘数据 一、需求简介二、流程分析三、完整代码一、需求简介 boss直聘网站近期改版,改版之后代码需要做相应的升级维护。drissionpage采集网页数据是一种不错的方式,笔者认为比Selenium好用,使用方法大家可以自行查阅资料。boss直聘…...

常用的性能提升手段--提纲

上一篇文章里,介绍了提升性能的一种优化手段:池化。 这篇文章来归纳整理一下其他的常见的提升性能的手段 1. 缓存 (Caching) 缓存可以说是计算机领域的万金油了,它无处不在。 举个最简单的例子,CPU -> L1,L2,L3 Cache -> 内存 。 CPU的处理速度要比内存快几个数量…...

天梯——现代战争

第一次做的时候&#xff0c;直接暴力&#xff0c;显然最后超时。 暴力代码如下&#xff1a; #include<bits/stdc.h> using namespace std; const int N10005; bool mark1[N]{0},mark2[N]{0}; int p[N][N]; int main(){int n,m,k,a,b;cin>>n>>m>>k;fo…...

Codeforces Round 1021 (Div. 2) D. Baggage Claim(建图)

每周五篇博客&#xff1a;&#xff08;4/5&#xff09; https://codeforces.com/contest/2098/problem/D 题意 每个机场都有一个行李索赔区&#xff0c;巴尔贝索沃机场也不例外。在某个时候&#xff0c;Sheremetyevo的一位管理员提出了一个不寻常的想法&#xff1a;将行李索…...

常用第三方库:shared_preferences数据持久化

常用第三方库&#xff1a;shared_preferences数据持久化 前言 shared_preferences是Flutter中最常用的轻量级数据持久化解决方案&#xff0c;它提供了一个简单的key-value存储机制&#xff0c;适合存储用户配置、应用设置等小型数据。本文将从实战角度深入讲解shared_prefere…...

项目驱动 CAN-bus现场总线基础教程》随笔

阅读&#xff1a;《项目驱动 CAN-bus现场总线基础教程》 仲裁段的实现 有感而发 感觉出人意外之处 感觉出人意外之处 最近在阅读入门的CAN相关书籍时&#xff0c;在介绍仲裁段是如何实现各节点之间&#xff0c;通讯仲裁功能的章节中&#xff0c;有如下一段描述&#xff1a; …...

WPF之XAML基础

文章目录 XAML基础&#xff1a;深入理解WPF和UWP应用开发的核心语言1. XAML简介XAML与XML的关系 2. XAML语法基础元素语法属性语法集合语法附加属性 3. XAML命名空间命名空间映射关系 4. XAML标记扩展静态资源引用数据绑定相对资源引用常见标记扩展对比 5. XAML与代码的关系XAM…...

测试基础笔记第十四天

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、字符串1.字符串2.字符串切片3.查找find&#xff08;&#xff09;4.去除两端空白字符 strip5.字符串转换大小写 lower、upper5.拆分 split()6.字符串的其他常见方…...

Java详解LeetCode 热题 100(01):LeetCode 1. 两数之和(Two Sum)详解

文章目录 1. 题目描述2. 理解题目3. 解法一&#xff1a;暴力枚举法3.1 思路3.2 Java代码实现3.3 代码详解3.4 复杂度分析3.5 适用场景 4. 解法二&#xff1a;哈希表法4.1 思路4.2 Java代码实现4.3 代码详解4.4 复杂度分析4.5 适用场景 5. 解法三&#xff1a;两遍哈希表法5.1 思…...

机器学习之三:归纳学习

正如人们有各种各样的学习方法一样&#xff0c;机器学习也有多种学习方法。若按学习时所用的方法进行分类&#xff0c;则机器学习可分为机械式学习、指导式学习、示例学习、类比学习、解释学习等。这是温斯顿在1977年提出的一种分类方法。 有关机器学习的基本概念&#xff0c;…...

AI声像融合守护幼儿安全——打骂/异常声音报警系统的智慧防护

幼儿园是孩子们快乐成长的摇篮&#xff0c;但打骂、哭闹或尖叫等异常事件可能打破这份宁静&#xff0c;威胁幼儿的身心安全。打骂/异常声音报警系统&#xff0c;依托尖端的AI声像融合技术&#xff0c;结合语音识别、情绪分析与视频行为检测&#xff0c;为幼儿园筑起一道智能安全…...

2024ICPC网络赛第二场题解

文章目录 F. Tourist(签到)I. Strange Binary(思维)J. Stacking of Goods(思维)A. Gambling on Choosing Regionals(签到)G. Game(数学)L. 502 Bad Gateway(数学)E. Escape(BFS)C. Prefix of Suffixes(kmp结论)K. match(01trie分治多项式乘法组合数) 题目链接 F. Tourist(签到…...

风控策略引擎架构设计全解析:构建智能实时决策系统

摘要 本文深入探讨现代风控策略引擎的核心架构设计,结合金融反欺诈、电商交易风控等典型场景,详细解析实时决策、规则引擎、特征计算等关键技术模块的实现方案。通过分层架构设计、分布式计算优化、策略动态编排等创新方法,展示如何构建支撑每秒万级决策的高可用风控系统。…...

TensorFlow 安装全攻略

选择 TensorFlow 的原因&#xff1a; TensorFlow 是一个端到端平台&#xff0c;它提供多个抽象级别&#xff0c;因此您可以根据自己的需求选择合适的级别。您可以使用高阶 Keras API 构建和训练模型&#xff0c;该 API 让您能够轻松地开始使用 TensorFlow 和机器学习。如果您需…...

Dijkstra 算法代码步骤[leetcode.743网络延迟时间]

有 n 个网络节点&#xff0c;标记为 1 到 n。 给你一个列表 times&#xff0c;表示信号经过 有向 边的传递时间。 times[i] (ui, vi, wi)&#xff0c;其中 ui 是源节点&#xff0c;vi 是目标节点&#xff0c; wi 是一个信号从源节点传递到目标节点的时间。 现在&#xff0c;…...

Ubuntu22.04/24.04 P104-100 安装驱动和 CUDA Toolkit

硬件环境 使用一块技嘉 B85m-DS3H 安装 P104-100, CPU是带集成显卡的i5-4690. 先在BIOS中设置好显示设备优先使用集成显卡(IGX). 然后安装P104-100开机. 登入Ubuntu 后查看硬件信息, 检查P104-100是否已经被检测到 # PCI设备 lspci -v | grep -i nvidia lspci | grep NVIDIA …...

Golang 学习指南

目录 变量与常量数据类型与控制结构常用数据结构函数与错误处理指针与并发Gin 框架与 go mod小结与参考资料 1. 变量与常量 变量&#xff08;var&#xff09; 用于定义可变的值。可以指定类型&#xff0c;也可以自动推断类型。示例&#xff1a;var name string "Golang…...

Ubuntu 磁盘空间占用清理(宝塔)

目录 前言1. 基本知识2. 实战 前言 &#x1f91f; 找工作&#xff0c;来万码优才&#xff1a;&#x1f449; #小程序://万码优才/r6rqmzDaXpYkJZF 爬虫神器&#xff0c;无代码爬取&#xff0c;就来&#xff1a;bright.cn 本身自搭建了一个宝塔&#xff0c;突然一下子多了好些空…...

AntBio: 2025 AACR Meeting - Charting New Oncology Frontiers Together

AntBio cordially invites you to attend the 2025 AACR Annual Meeting and jointly chart a new course in oncology research! The global benchmark for cancer research and therapeutics—the 2025 American Association for Cancer Research (AACR) Annual Meeting—wi…...

数模学习:二,MATLAB的基本语法使用

注释代码&#xff1a; (1)在每行语句后面加上分号&#xff0c;则不显示该行代码的运算结果。 在每行代码前加%&#xff0c;则该行代码会被注释掉 (2) 多行注释&#xff1a; 选中要注释的多行语句&#xff0c;按快捷键Ctrl R (3) 取消注释&#xff1a; 选中要注释的多行语句…...

【Webpack \ Vite】多环境配置

环境变量脚本命令 如何通过不同的环境变量或不同的配置文件进行项目区分&#xff0c;动态加载配置。通常&#xff0c;使用环境变量是最简单且灵活的方法&#xff0c;因为它不需要改变构建命令或创建多个配置文件 环境变量 在根目录下创建 .env.xxx 文件&#xff0c;为不同的环…...

已知漏洞打补丁

. 打补丁 根据MS漏洞编号或者CVE漏洞编号都可以找到对应的HotfixID。 1.根据MS漏洞编号可以使用&#xff1a;https://learn.microsoft.com/zh-cn/security-updates/securitybulletins/securitybulletins 即可找到KB编号。 2.根据CVE漏洞编号可以使用&#xff1a;https://cve…...

WGS84(GPS)、火星坐标系(GCJ02)、百度地图(BD09)坐标系转换Java代码

在做基于百度地图、高德地图等电子地图做为地图服务的二次开发时&#xff0c;通常需要将具有WGS84等坐标的矢量数据&#xff08;如行政区划、地名、河流、道路等GIS地理空间数据&#xff09;添加到地图上面。 然而&#xff0c;在线地图大多使用的是火星坐标系&#xff0c;需要…...

R语言操作n

1.加载安装vegan包 2.查看data(varechem)和data(varespec),探索其维度和结构 3.基于varespec构建物种互作网络&#xff0c;输出gml文件并采用gephi可视化为图片&#xff0c;输出pdf&#xff0c;阈值为r>0.6&#xff0c;p<0.05 4.基于varespec和varechem构建物种-环境互作…...