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

正则表达式基础与应用

什么是正则表达式?

正则表达式(Regular Expression,简称regex)是一种用于描述字符串结构的语法规则。它定义了一个搜索模式,可以用来匹配、替换或提取文本中的子串。正则表达式广泛应用于文本处理、数据验证、查找和替换等场景。

正则表达式的语法规则

正则表达式由元字符(metacharacters)和文本字符(literal characters)两部分构成。元字符具有特殊的功能,而文本字符则是普通的字符。

元字符

  • ^:匹配行的开始位置。
  • $:匹配行的结束位置。
  • .:匹配除换行符之外的任何单个字符。
  • []:字符类,用于匹配某个范围内的字符。
  • |:选择符,表示“或”。
  • \:转义字符,用于转义元字符,或者表示一些预定义字符类。
  • () :分组和捕获。
  • {}:限定符,指定前面的字符重复出现的次数。

例子

/\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/   # 一个常见的邮箱匹配表达式

为了简化表达和更易阅读,后续我们省略掉定界符(/)部分,直接呈现正则表达式的核心内容。

常见元字符与用法

行定位符

  • ^:匹配字符串的开始。例如,^tm 会匹配行首的 tm
  • $:匹配字符串的结束。例如,tm$ 会匹配行尾的 tm

单词定界符

  • \b:匹配一个单词的边界,表示匹配完整的单词。例如,\btm\b 会匹配独立的 tm
  • \B:与 \b 相反,表示不匹配单词边界。

字符类

  • [abc]:匹配方括号中的任意单个字符,如 abc
  • [^abc]:匹配不在方括号中的字符,如除了 abc 外的任何字符。

预定义字符类

  • \d:匹配任意一个数字,等同于 [0-9]
  • \D:匹配非数字字符,等同于 [^0-9]
  • \w:匹配任意一个字母、数字或下划线,等同于 [a-zA-Z0-9_]
  • \W:匹配非字母、非数字和非下划线字符。
  • \s:匹配任意一个空白字符(包括空格、制表符、换行符等)。
  • \S:匹配非空白字符。

限定符

  • ?:匹配前面的字符零次或一次。例如,colou?r 可以匹配 colorcolour
  • +:匹配前面的字符一次或多次。例如,go+gle 可以匹配 goglegooggle 等。
  • *:匹配前面的字符零次或多次。例如,go*gle 可以匹配 glegooglegooggle 等。
  • {n}:匹配前面的字符恰好 n 次。例如,go{2}gle 只会匹配 google
  • {n,}:匹配前面的字符至少 n 次。例如,go{2,}gle 可以匹配 googlegooggle 等。
  • {n,m}:匹配前面的字符至少 n 次,最多 m 次。例如,employe{0,2} 可以匹配 employemployeemployee

选择字符(|)

  • |:表示“或”操作。例如,(T|t)(M|m) 可以匹配 TMTmtMtm

连字符(-)

  • -:表示字符范围。例如,[a-zA-Z] 可以匹配任何大小写字母。

括号字符(())

  • ():用于分组。例如,(thir|four)th 可以匹配 thirthfourth
  • 分组的作用不仅仅是捕获子表达式,还能影响其他操作符(如 *+ 等)的应用范围。
  • (?: ... ):非捕获组,用于分组,但不捕获匹配的内容,可以提高性能,并避免捕获组编号的混乱。

转义字符(\)

  • \:用来转义元字符,使其失去特殊意义。例如,\. 匹配字面上的点号 .
  • 反斜线还可以用于表示一些特殊字符或定义字符集:\d 表示数字,\s 表示空白字符等。

断言(环视)

断言用于匹配某些位置,不会消耗字符,但可以检查字符的上下文。

  • 顺序环视(前瞻)(?=...),表示匹配前面必须跟着某个子串。例如,\s(?=is) 匹配空格,后面紧跟着 is
  • 逆序环视(后顾)(?<=...),表示匹配前面有某个子串。例如,(?<=is)\s 匹配 is 后面的空格。

模式修饰符

模式修饰符用于修改正则表达式的行为。

  • i:忽略大小写。例如,/abc/i 可以匹配 abcABC 等。
  • m:多行模式,影响 ^$ 的行为,使其匹配每一行的开始和结束。
  • s:单行模式,使 . 能够匹配换行符。
  • x:忽略正则表达式中的空格,方便书写复杂的正则。

拓展:正则表达式引擎

正则表达式引擎(Regular Expression Engine)是用于执行正则表达式匹配和替换操作的软件组件。它接收正则表达式和输入文本作为输入,输出是否匹配的结果,或者返回匹配的部分内容。不同的编程语言和工具提供了不同类型的正则表达式引擎,它们根据底层实现的不同,可能在性能和特性上有所差异。

常见术语

  1. grep:最初是 Unix 系统中的一个命令,用于在文件中搜索特定的内容。后来它成为一个独立的工具,用于处理文本数据。
  2. egrep:是 grep 命令的扩展版本,增强了正则表达式的能力,支持更复杂的模式匹配。
  3. POSIX:是可移植操作系统接口的标准,它并不是最终的标准,而是为确保操作系统之间的可移植性提供的参考。
  4. Perl:是实际抽取与汇报语言,POSIX 标准之后的另一种正则表达式标准。
  5. PCRE:即兼容 Perl 正则表达式的正则引擎,支持更强大的功能,并可以整合到 PHP 等其他语言中。

正则表达式引擎的主要类型

  1. NFA(Non-deterministic Finite Automaton)
    非确定性有限自动机(NFA)是一种较为常见的正则表达式引擎实现方式。NFA 引擎根据状态转移图的概念工作,并且可以有效地处理很多常见的正则表达式操作。NFA 引擎的工作原理是:它尝试将输入字符串与正则表达式从左到右进行匹配,使用状态机的方式进行尝试。

    • 优点:NFA 引擎具有灵活性,能够轻松处理多种复杂的正则表达式。
    • 缺点:在处理某些复杂或不常见的正则表达式时,可能导致性能较差,特别是在匹配非常长的文本时。
  2. DFA(Deterministic Finite Automaton)
    确定性有限自动机(DFA)与 NFA 相对,它的状态转移图更为简单和明确,每个状态只有一个唯一的后续状态。DFA 引擎的实现通常比 NFA 更为高效,尤其是在文本匹配时。

    • 优点:DFA 引擎通常能够提供较高的匹配速度,因为它在匹配时只有一个确定的路径。
    • 缺点:DFA 引擎的设计通常要求更多的内存,特别是当正则表达式的模式非常复杂时。
  3. 回溯(Backtracking)
    回溯引擎是一种常见的正则表达式引擎实现方式,尤其在如 PCRE(Perl Compatible Regular Expressions)等工具中得到了广泛应用。回溯引擎通过递归地尝试各种匹配路径来寻找符合正则表达式模式的子串。它会从开始状态尝试每一种可能的匹配路径,直到找到匹配或确认没有匹配。

    • 优点:回溯引擎灵活,能够处理复杂的正则表达式模式。
    • 缺点:在某些情况下,回溯引擎可能会导致性能下降,特别是在处理复杂的表达式时,可能出现所谓的“灾难性回溯”问题(例如,正则表达式包含多个可能的匹配路径,导致大量的无效计算)。
  4. 正则表达式虚拟机(REVM)
    正则表达式虚拟机是某些正则表达式引擎使用的另一种技术。它将正则表达式转化为一种类似于程序代码的格式,然后执行该代码进行匹配。REVM 主要通过编译将正则表达式转换为某种中间代码,再通过虚拟机解释执行该中间代码。

    • 优点:这种方法可以结合编译和解释的优点,可能在某些情况下提高匹配速度。
    • 缺点:这种方法的实现较为复杂,需要在引擎中进行更多的计算和转换。

常见正则表达式引擎

  1. PCRE(Perl Compatible Regular Expressions)
    PCRE 是一种流行的正则表达式引擎,它与 Perl 语言的正则表达式兼容,广泛用于 PHP、Apache、NGINX 等开源项目。PCRE 引擎使用回溯算法,支持丰富的正则语法。

  2. RE2
    RE2 是 Google 提供的一个正则表达式引擎,设计目标是提供一个高效且没有回溯的正则匹配功能。RE2 引擎通常能够避免性能陷阱,适合处理大规模数据集。

  3. JavaScript 引擎(如 V8 引擎)
    JavaScript 引擎(例如 V8)实现了正则表达式的支持,通常使用回溯算法。它是现代浏览器中常见的正则表达式引擎。

  4. Python 正则表达式(re 模块)
    Python 的 re 模块使用回溯算法来实现正则匹配。它支持 Perl 风格的正则语法,灵活且易用。

  5. .NET 正则表达式引擎
    .NET 提供了强大的正则表达式支持,内置于 System.Text.RegularExpressions 类库中,采用回溯引擎。它支持多种正则表达式功能,并且优化了性能,适合 .NET 平台使用。

  6. POSIX 正则表达式
    POSIX 标准为 Unix-like 系统提供了一个正则表达式的标准。与其他正则表达式引擎相比,POSIX 更注重跨平台的兼容性,但在性能和特性上相对较弱。

例如,在 PHP 中,正则表达式支持两种格式:POSIXPCRE。其中,PCRE(Perl Compatible Regular Expressions)兼容 Perl 风格的正则表达式,是 PHP 中最常用的正则引擎。

小结

正则表达式是强大的文本处理工具,通过掌握其基本语法规则,可以方便地对字符串进行匹配、查找和替换等操作。掌握元字符、限定符、断言等功能,能够帮助我们构建更精确和高效的正则表达式。

正则表达式的学习需要耐心,理解每个元字符的含义以及如何组合它们来构建复杂的匹配模式是掌握正则的关键。

相关文章:

正则表达式基础与应用

什么是正则表达式&#xff1f; 正则表达式&#xff08;Regular Expression&#xff0c;简称regex&#xff09;是一种用于描述字符串结构的语法规则。它定义了一个搜索模式&#xff0c;可以用来匹配、替换或提取文本中的子串。正则表达式广泛应用于文本处理、数据验证、查找和替…...

微信小程序使用上拉加载onReachBottom。页面拖不动。一直无法触发上拉的事件。

1&#xff0c;可能是原因是你使用了scroll-view的标签&#xff0c;用onReachBottom触发加载事件。这两个是有冲突的。没办法一起使用。如果页面的样式是滚动的是无法去触发页面的onReachBottom的函数的。因此&#xff0c;你使用overflow:auto.来使用页面的某些元素滚动&#xf…...

9. 神经网络(一.神经元模型)

首先&#xff0c;先看一个简化的生物神经元结构&#xff1a; 生物神经元有多种类型&#xff0c;内部也有复杂的结构&#xff0c;但是可以把单个神经元简化为3部分组成&#xff1a; 树突&#xff1a;一个神经元往往有多个树突&#xff0c;用于接收传入的信息。轴突&#xff1a;…...

Mysql安装,mysql-installer-community-8.0.41.0

“windowR"键弹出运行框&#xff0c;输入”cmd"进入window命令提示符&#xff0c;输入“mysql -uroot -p"按下回车&#xff0c;再输入密码&#xff0c;按下回车&#xff0c;出现下面界面则是配置成功。 默认会在 C:\Program Files\MySQL\MySQL Server 8.0\bin …...

吴恩达深度学习——神经网络介绍

文章内容来自BV11H4y1F7uH&#xff0c;仅为个人学习所用。 文章目录 什么是神经网络引入神经网络神经元激活函数ReLU隐藏单元 用神经网络进行监督学习监督学习与无监督学习举例 什么是神经网络 引入 已经有六个房子的数据集&#xff0c;横轴为房子大小&#xff0c;纵轴为房子…...

【SpringBoot】SpringBoot中分页插件(PageHelper)的使用

目录 1.分页概念 2.原生写法 3.PageHelper插件分页查询 3.1 介绍 3.2?使用 3.3 Page对象和PageInf对象 1.分页概念 用户查询的数据不可能一次性全部展示给用户&#xff08;如果用户有一万条数据呢&#xff09;&#xff0c;而是分页展示给用户&#xff0c;这就是分页查询…...

JavaScript DOM 操作与事件处理

Hi&#xff0c;我是布兰妮甜 &#xff01;在现代Web开发中&#xff0c;JavaScript不仅是用来增强用户体验的工具&#xff0c;它更是创建动态、交互式网页的关键。通过操作文档对象模型&#xff08;DOM&#xff09;和处理用户事件&#xff0c;开发者能够构建出响应迅速且功能丰富…...

rstrip 方法是 Python 字符串的一个内置方法,用于 删除字符串右边(末尾)的指定字符

rstrip 方法是 Python 字符串的一个内置方法&#xff0c;用于 删除字符串右边&#xff08;末尾&#xff09;的指定字符。 语法&#xff1a; string.rstrip([chars])string&#xff1a;原始字符串。chars&#xff1a;可选参数&#xff0c;指定要删除的字符。默认为 None&#…...

【Elasticsearch】腾讯云安装Elasticsearch

Elasticsearch 认识Elasticsearch安装Elasticsearch安装Kibana安装IK分词器分词器的作用是什么&#xff1f;IK分词器有几种模式&#xff1f;IK分词器如何拓展词条&#xff1f;如何停用词条&#xff1f; 认识Elasticsearch Elasticsearch的官方网站如下 Elasticsearch官网 Ela…...

rsync结合inotify实现文件实时同步

rsync 1.复制工具 本地复制 远程复制 cp dd 跨主机传递文件 rz sz ftp scp rsync nfs samba drdb 2.rsync作用 实现文件的备份&#xff0c;可以是当前主机&#xff0c;也可以是远程主机&#xff1b;可以完全备份&#xff0c;也可以是增量备份 2.1功能 类似于cp的复制功能…...

浅谈 PID 控制算法

PID 控制算法概念 在我们的生活中可能大家都没有听说过 PID 控制算法&#xff0c;但它可以说是无处不在&#xff0c;小到空调的温度控制、无人机的精准悬停、机器人运作系统&#xff0c;大到飞机和火箭的飞行姿态控制都有 PID 的身影。 PID 控制算法&#xff0c;即比例 - 积分…...

react中hooks之useId用法总结以及与useRef用法区别

React useId Hook 使用指南 概述 useId 是 React 18 引入的新 Hook&#xff0c;用于生成唯一的 ID&#xff0c;主要用于可访问性&#xff08;accessibility&#xff09;属性。它在服务端和客户端渲染时都能保持一致性。 useId vs useRef useId: 生成稳定的唯一标识符&#…...

Spring Boot AOP实现动态数据脱敏

依赖&配置 <!-- Spring Boot AOP起步依赖 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency>/*** Author: 说淑人* Date: 2025/1/18 23:03* Desc…...

AutoGen入门——快速实现多角色、多用户、多智能体对话系统

1.前言 如https://github.com/microsoft/autogen所述&#xff0c;autogen是一多智能体的框架&#xff0c;属于微软旗下的产品。 依靠AutoGen我们可以快速构建出一个多智能体应用&#xff0c;以满足我们各种业务场景。 本文将以几个示例场景&#xff0c;使用AutoGen快速构建出…...

.NET Framework

.NET Framework 是微软推出的一个软件开发平台&#xff0c;主要用于构建和运行 Windows 应用程序。它是 .NET 生态系统的早期版本&#xff0c;专注于 Windows 平台&#xff0c;并提供了丰富的类库和运行时环境。 注意事项 跨平台限制&#xff1a;.NET Framework 主要适用于 W…...

算法中的移动窗帘——C++滑动窗口算法详解

1. 滑动窗口简介 滑动窗口是一种在算法中常用的技巧&#xff0c;主要用来处理具有连续性的子数组或子序列问题。通过滑动窗口&#xff0c;可以在一维数组或字符串上维护一个固定或可变长度的窗口&#xff0c;逐步移动窗口&#xff0c;避免重复计算&#xff0c;从而提升效率。常…...

DuckDB:Golang操作DuckDB实战案例

DuckDB是一个嵌入式SQL数据库引擎。它与众所周知的SQLite非常相似&#xff0c;但它是为olap风格的工作负载设计的。DuckDB支持各种数据类型和SQL特性。凭借其在以内存为中心的环境中处理高速分析的能力&#xff0c;它迅速受到数据科学家和分析师的欢迎。在这篇博文中&#xff0…...

C++通过输入3D相机像素点集{u、v、z}和机械手世界坐标点集{X、Y、Z}求得变换矩阵RT(眼在手外)

👑主页:吾名招财 👓简介:工科学硕,研究方向机器视觉,爱好较广泛… ​💫签名:面朝大海,春暖花开! C++通过输入3D相机像素点集{u、v、z}和机械手世界坐标点集{X、Y、Z}求得变换矩阵RT(眼在手外) 引言原理简介点集数据(含像素坐标、世界坐标及求解后的变换矩阵)配…...

手机怎么远程操控电脑?

远程看看是一款免费使用的远程控制软件&#xff0c;兼容 Windows、iOS 和 Android 系统&#xff0c;用户可以通过电脑或移动设备轻松远程控制电脑。不仅如此&#xff0c;远程看看还提供了文件传输、在线聊天和隐私屏等实用功能。如果您需要在远程操作时隐藏被控电脑的操作界面&…...

【Golang/gRPC/Nacos】在golang中将gRPC和Nacos结合使用

Nacos与gRPC 前言 关于这部分&#xff0c;前段时间我在看文档以及视频教程的时候&#xff0c;怎么都想不明白&#xff0c;到底为什么要用gRPC是什么&#xff0c;他在项目中应该充当什么样的角色&#xff1f;Nacos又是如何和他结合的&#xff1f; 于是我就决定去看看一些小项…...

数据库-多表关系

项目开发中&#xff0c;在进行数据库表结构设计时&#xff0c;会根据业务需求及业务模块之间的关系&#xff0c;分析并设计表结构。由于业务之间相互关联&#xff0c;所以各个表结构之间也存在着各种联系。 多表关系&#xff1a; 一对多(多对一) 一对一 多对多 多表关系 一对…...

回归算法、聚类算法、决策树、随机森林、神经网络

这也太全了&#xff01;回归算法、聚类算法、决策树、随机森林、神经网络、贝叶斯算法、支持向量机等十大机器学习算法一口气学完&#xff01;_哔哩哔哩_bilibili 【线性回归、代价函数、损失函数】动画讲解_哔哩哔哩_bilibili 14分钟详解所有机器学习算法&#xff1a;…...

RabbitMQ1-消息队列

目录 MQ的相关概念 什么是MQ 为什么要用MQ MQ的分类 MQ的选择 RabbitMQ RabbitMQ的概念 四大核心概念 RabbitMQ的核心部分 各个名词介绍 MQ的相关概念 什么是MQ MQ(message queue)&#xff0c;从字面意思上看&#xff0c;本质是个队列&#xff0c;FIFO 先入先出&am…...

第17章:Python TDD回顾与总结货币类开发

写在前面 这本书是我们老板推荐过的&#xff0c;我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后&#xff0c;我突然思考&#xff0c;对于测试开发工程师来说&#xff0c;什么才更有价值呢&#xff1f;如何让 AI 工具更好地辅助自己写代码&#xff0c;或许…...

7、数组知识点汇总

一、 数组基本概念 程序算法数据结构 算法&#xff1a;解决程序的流程步骤数据结构&#xff1a;将数据按照某种特定的结构来存储设计良好的数据结构会导致良好的算法。ArrayList、LinkedList 数组是最简单的数据结构。 1、数组&#xff1a; 数组&#xff1a;存放同一种类型…...

蓝桥杯c/c++需要掌握的基础语法总结

1、#include<bits/stdc.h> 万能头文件 2、using namespace std&#xff1b; 3、输出 cout<<""<<end1; (换行) printf(""); 4、int x3&#xff1b;整数 double d3.14&#xff1b;小数 char ch’A‘;字符 char s[]"Hell…...

学习第七十四行

qt调用信号与槽机制&#xff1a; MOC查找头文件中的signal与slots&#xff0c;标记出信号槽。将信号槽信息储存到类静态变量staticMetaObject中&#xff0c;并按照声明的顺序进行存放&#xff0c;建立索引。connect链接&#xff0c;将信号槽的索引信息放到一个双向链表中&…...

《罗宾逊-旅途VR》Build2108907官方学习版

《罗宾逊-旅途VR》官方版 https://pan.xunlei.com/s/VODiY5gn_fNxKREdVRdwVboCA1?pwdsh3f# 从第一人称的角度进行探索&#xff0c;玩家将遇到一系列恐龙和生物&#xff0c;这些恐龙和生物会对它们在泰森三世生态系统中的存在做出反应。强调与周围环境的互动&#xff0c;鼓励玩…...

详解共享WiFi小程序怎么弄!

在数字化时代&#xff0c;共享WiFi项目​正逐渐成为公共场所的新标配&#xff0c;它不仅为用户提供了便捷的上网方式&#xff0c;还为商家带来了额外的收入来源。那么共享wifi怎么弄&#xff0c;如何搭建并运营一个成功的共享WiFi项目呢&#xff1f; 共享WiFi项目通过在公共场所…...

Glide加载gif遇到的几个坑

Glide本身支持gif格式的动画加载&#xff0c;但是大多数情况下我们用Glide都是去加载一些静态图片&#xff0c;加载gif动态图的需求不是很多&#xff0c;因此这次使用Glide加载gif就遇到了一些令人匪夷所思的问题 问题一&#xff1a;加载gif图片会有明显的卡顿 通常情况下我们…...

mybatis(19/134)

大致了解了一下工具类&#xff0c;自己手敲了一边&#xff0c;java的封装还是真的省去了很多麻烦&#xff0c;封装成一个工具类就可以不用写很多重复的步骤&#xff0c;一个工厂对应一个数据库一个environment就好了。 mybatis中调用sql中的delete占位符里面需要有字符&#xf…...

部分“古董机”编程读取文件时出现文件损坏的简易处理办法(简单粗暴) - 随笔

在部分老旧计算机&#xff08;通常被戏称为“古董机”&#xff09;上编程&#xff0c;读取文件时可能会遇到文件损坏的问题。这通常是由于硬件性能限制或操作系统的文件处理机制导致的。本文将介绍几种简易的处理办法&#xff0c;以解决或绕过这一问题。 方法1. 调整磁盘关闭时…...

StarRocks 3.4 发布--AI 场景新支点,Lakehouse 能力再升级

自 StarRocks 3.0 起&#xff0c;社区明确了以 Lakehouse 为核心的发展方向。Lakehouse 的价值在于融合数据湖与数据仓库的优势&#xff0c;能有效应对大数据量增长带来的存储成本压力&#xff0c;做到 single source of truth 的同时继续拥有极速的查询性能&#xff0c;同时也…...

强化学习入门--基本概念

强化学习基本概念 grid-world example 这个指的是一个小机器人&#xff08;agent&#xff09;在一个网格区域&#xff08;存在边界&#xff09;&#xff0c;网格中存在需要躲避的格子和目标格子&#xff0c;我们的目的就是找到到达目标格子的最短路径 state 表示智能体相对…...

Oracle 创建并使用外部表

目录 一. 什么是外部表二. 创建外部表所在的文件夹对象三. 授予访问外部表文件夹的权限3.1 DBA用户授予普通用户访问外部表文件夹的权限3.2 授予Win10上的Oracle用户访问桌面文件夹的权限 四. 普通用户创建外部表五. 查询六. 删除 一. 什么是外部表 在 Oracle 数据库中&#x…...

深度学习python基础(第三节) 函数、列表

本节主要介绍函数、列表的基本语法格式。 函数 与c语言的函数差不多&#xff0c;就是语法基本格式不同。 name "loveyou" length len(name) print("字符串的长度为&#xff1a;%d" % length) # 自定义函数 def countstr(data):count 0for i in da…...

基于Python的多元医疗知识图谱构建与应用研究(上)

一、引言 1.1 研究背景与意义 在当今数智化时代,医疗数据呈爆发式增长,如何高效管理和利用这些数据,成为提升医疗服务质量的关键。传统医疗数据管理方式存在数据孤岛、信息整合困难等问题,难以满足现代医疗对精准诊断和个性化治疗的需求。知识图谱作为一种知识表示和管理…...

Spring Boot 快速创建项目

目录 一. 创建项目 ​编辑 二. 项目目录 三. 运行项目 (1) 启动项目 (2) 输出HelloWorld 一. 创建项目 我们以idea专业版为例创建Spring项目: 步骤: (1) File --> New --> Project (2) 配置项目基本信息 (3) 依赖: 需要什么就勾选什么. 我们这里就只勾选一个Spri…...

MySQL预编译语句过多告警排查

业务背景 在使用Spring Cloud Alibaba搭建的微服务架构中&#xff0c;项目采用ShardingSphere进行分库分表&#xff0c;MyBatis-Plus作为持久层。线上环境突发大量预编译语句过多的数据库告警&#xff0c;导致系统性能下降。 排查过程 1. 初步排查&#xff1a;联系云数据库厂…...

在centos上编译安装opensips【初级-默认安装】

环境&#xff1a;centos9 last opensips3.2 dnf update -y dnf install -y gcc make git automake libtool pcre-devel libxml2-devel \libcurl-devel postgresql-devel \bzip2-devel zlib-devel ncurses-devel libuuid-devel \libpcap-devel # 有报错的直接删除cd /usr/lo…...

偏序关系.

一、偏序&#xff08;半序&#xff09;关系 偏序关系 自反反对称传递性 二、全序&#xff08;线序、链&#xff09;关系 三、偏序集中的重要元素 1. 极大元与极小元 极大元找所在集合的一个或几个最高点&#xff1b; 极小元找所在集合的一个或几个最低点。 2. 最大元与最小…...

Node.js接收文件分片数据并进行合并处理

前言&#xff1a;上一篇文章讲了如何进行文件的分片&#xff1a;Vue3使用多线程处理文件分片任务&#xff0c;那么本篇文章主要看一下后端怎么接收前端上传来的分片并进行合并处理。 目录&#xff1a; 一、文件结构二、主要依赖1. express2. multer3. fs (文件系统模块)4. pat…...

设计模式概述 - 设计模式的重要性

引言 设计模式是软件工程中用于解决常见设计问题的经典解决方案。它们提供了一种标准化的方式来组织和设计代码&#xff0c;使得代码更易于理解、维护和扩展。在C编程中&#xff0c;设计模式尤为重要&#xff0c;因为它们可以帮助开发者应对复杂的系统设计&#xff0c;提高代码…...

OSI5GWIFI自组网协议层次对比

目录 5G网络5G与其他协议栈各层映射 5G网络 物理层 (PHY) 是 5G 基站协议架构的最底层&#xff0c;负责将数字数据转换为适合无线传输的信号&#xff0c;并将接收到的无线信号转换为数字数据。实现数据的编码、调制、多天线处理、资源映射等操作。涉及使用新的频段&#xff08…...

网络安全(渗透)

目录 名词解释 2、相互关系 3. 安全影响 名词解释 1、poc、exp、payload与shellcode POC&#xff08;Proof of Concept&#xff09;&#xff1a; 是一种概念验证代码或演示程序&#xff0c;用于证明漏洞的存在。 主要目的是通过简单的代码或操作向安全研究人员、开发人员…...

Whisper-GPT:混合表征音频大语言模型

Whisper-GPT:混合表征音频大语言模型 当下,利用从神经压缩算法(例如#Encodec#​)派生的离散音频标记的生成式音频、语音以及音乐模型数量激增。然而,这种方法的主要缺陷之一在于对上下文长度的处理。如果必须考虑所有不同频率的音频内容才能进行下一个标记预测,那么高保…...

科技重塑未来:前沿技术趋势、跨领域融合与社会影响深度洞察

目录 科技重塑未来&#xff1a;前沿技术趋势、跨领域融合与社会影响深度洞察引言一、前沿技术趋势洞察与分析1. 人工智能与自动化1.1 趋势分析1.2 挑战分析 2. 区块链技术2.1 趋势分析2.2 挑战分析 3. 量子计算3.1 趋势分析3.2 挑战分析 二、跨领域技术融合与创新实践1. AI与大…...

深度学习:大模型Decoding+MindSpore NLP分布式推理详解

大模型推理流程 1. 用户输入提示词&#xff08;Prompt&#xff09; 假设用户输入为&#xff1a;“从前&#xff0c;有一只小猫&#xff0c;它喜欢……” 我们的目标是让模型生成一段完整的故事。 2. 模型处理用户输入 2.1 分词&#xff1a;输入提示被分词为模型可以理解的…...

GESP6级语法知识(二):动态规划算法(二)

最小路径和; //最小路径和 #include<iostream> using namespace std; const int N100; int dp[N][N],value[N][N]; int n,m; int main() {cin>>n>>m;for(int i1;i<n;i) //录入初始数字矩阵 for(int j1;j<m;j)cin>>value[i][j];for(int i1;i…...

数据结构与算法之递归: LeetCode 79. 单词搜索 (Ts 版)

单词搜索 https://leetcode.cn/problems/word-search/description/ 描述 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 单词必须按照字母顺序&#xff0c;通过相邻的单…...