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

【oracle】正则表达式

文章目录

      • 1.介绍
        • 1.1 什么是正则表达式
        • 1.2 什么是Oracle正则表达式
      • 2. Oracle正则表达式的基础知识
        • 2.1 常用的元字符
        • 2.2 常用的转义序列
        • 2.3 常用的量词
      • 3. Oracle正则表达式的函数
        • 3.1 REGEXP_LIKE
        • 3.2 REGEXP_SUBSTR
        • 3.3 REGEXP_REPLACE
        • 3.4 REGEXP_INSTR
        • 3.5 REGEXP_COUNT
      • 4. Oracle正则表达式的应用实例
        • 4.1 使用REGEXP_LIKE进行模式匹配
        • 4.2 使用REGEXP_SUBSTR提取匹配的子串
        • 4.3 使用REGEXP_REPLACE替换匹配的子串
        • 4.4 使用REGEXP_INSTR找到匹配的位置
        • 4.5 使用REGEXP_COUNT计算匹配的次数
      • 5. Oracle正则表达式的性能优化
        • 5.1 正确使用元字符和量词
        • 5.2 使用预编译的正则表达式
        • 5.3 选择合适的正则表达式函数
      • 6. Oracle正则表达式的注意事项
        • 6.1 正则表达式的特殊字符处理
        • 6.2 正则表达式的贪婪匹配和懒惰匹配
      • 7. 实战案例
        • 提取字符串中的年份
        • 验证密码复杂性
        • 提取URL的协议、主机和路径
        • 验证IP地址
        • 提取字符串中的邮件地址
        • 替换HTML标签
        • 提取字符串中的电话号码
        • 匹配信用卡号
        • 提取字符串中的URL
        • 匹配社会安全号码

1.介绍

1.1 什么是正则表达式

正则表达式(Regular Expression),是一种用于处理字符串的强大工具。它主要用于两个方面:

  • 模式匹配:检查一个字符串是否包含某种特定的模式。例如,我们可以使用正则表达式来检查一个字符串是否包含特定的单词或者是否符合特定的格式(如邮件地址、电话号码等)。

  • 字符串操作:基于特定的模式来分割、替换或者提取字符串。例如,我们可以使用正则表达式来替换字符串中的某个单词,或者提取出字符串中符合特定格式的部分。

正则表达式的核心是一套定义模式的语法规则,通过这套规则,我们可以构造出各种复杂的模式。这套语法规则包括了一些特殊的元字符(如.*+等)、转义序列(如\d\w等)和量词(如*+?等)。

1.2 什么是Oracle正则表达式

Oracle正则表达式是Oracle数据库对正则表达式功能的实现。Oracle数据库提供了一组正则表达式函数,这些函数可以在SQL语句中使用,以便在处理字符串数据时使用正则表达式。

这些函数包括:

  • REGEXP_LIKE:检查一个字符串是否匹配一个正则表达式模式。
  • REGEXP_SUBSTR:从一个字符串中提取匹配一个正则表达式模式的子串。
  • REGEXP_REPLACE:替换一个字符串中匹配一个正则表达式模式的部分。
  • REGEXP_INSTR:返回一个字符串中匹配一个正则表达式模式的部分的位置。
  • REGEXP_COUNT:计算一个字符串中匹配一个正则表达式模式的部分的数量。

Oracle正则表达式的语法规则和通用的正则表达式大致相同,但也有一些Oracle特有的规则和特性。

2. Oracle正则表达式的基础知识

2.1 常用的元字符

元字符是正则表达式中具有特殊含义的字符。以下是一些常用的元字符:

  • .:匹配任何单个字符(除了换行符)。
  • ^:匹配输入字符串的开始位置。
  • $:匹配输入字符串的结束位置。
  • *:匹配前面的子表达式零次或多次。
  • +:匹配前面的子表达式一次或多次。
  • ?:匹配前面的子表达式零次或一次。
  • [...]:定义一个字符集,匹配其中任何一个字符。
  • [^...]:定义一个反向字符集,匹配不在其中的任何一个字符。
  • {n}:精确匹配n次。
  • {n,}:匹配n次或更多次。
  • {n,m}:匹配至少n次,但不超过m次。
2.2 常用的转义序列

转义序列是一种特殊的字符序列,用于匹配一类特定的字符。以下是一些常用的转义序列:

  • \d:匹配一个数字字符。等价于[0-9]
  • \D:匹配一个非数字字符。等价于[^0-9]
  • \w:匹配一个单词字符(字母、数字或下划线)。等价于[A-Za-z0-9_]
  • \W:匹配一个非单词字符。等价于[^A-Za-z0-9_]
  • \s:匹配一个空白字符(包括空格、制表符、换页符、换行符等)。
  • \S:匹配一个非空白字符。
2.3 常用的量词

量词用于指定一个字符或一组字符可以出现的次数。以下是一些常用的量词:

  • *:匹配前面的字符或组零次或多次。
  • +:匹配前面的字符或组一次或多次。
  • ?:匹配前面的字符或组零次或一次。
  • {n}:匹配前面的字符或组n次。
  • {n,}:匹配前面的字符或组n次或更多次。
  • {n,m}:匹配前面的字符或组至少n次,但不超过m次。

注意,Oracle正则表达式默认是贪婪匹配,也就是说,会尽可能多地匹配字符。如果要进行最小匹配(也称为懒惰匹配或非贪婪匹配),可以在量词后面添加?,如*?+???{n,m}?等。

3. Oracle正则表达式的函数

Oracle提供了一系列的正则表达式函数,这些函数可以用于在SQL语句中进行复杂的字符串处理。以下是这些函数的详细介绍:

3.1 REGEXP_LIKE

REGEXP_LIKE函数用于检查一个字符串是否匹配一个正则表达式模式。如果匹配,函数返回TRUE,否则返回FALSE

语法:

REGEXP_LIKE(source_string, pattern [, match_parameter])
  • source_string:源字符串,即需要进行匹配的字符串。
  • pattern:正则表达式模式。
  • match_parameter:匹配参数,用于指定匹配的模式。例如,'i'表示忽略大小写,'c'表示区分大小写,'n'表示允许使用.匹配换行符,'m'表示多行模式,'x'表示忽略空白字符和#之后的字符。
3.2 REGEXP_SUBSTR

REGEXP_SUBSTR函数用于从一个字符串中提取匹配一个正则表达式模式的子串。

语法:

REGEXP_SUBSTR(source_string, pattern [, position [, occurrence [, match_parameter [, sub_expression]]]])
  • source_string:源字符串。
  • pattern:正则表达式模式。
  • position:开始搜索的位置,如果省略,默认为1。
  • occurrence:匹配的次数,如果省略,默认为1。
  • match_parameter:匹配参数,同REGEXP_LIKE
  • sub_expression:子表达式的位置,用于提取括号中的子表达式。
3.3 REGEXP_REPLACE

REGEXP_REPLACE函数用于替换一个字符串中匹配一个正则表达式模式的部分。

语法:

REGEXP_REPLACE(source_string, pattern, replace_string [, position [, occurrence [, match_parameter]]])
  • source_string:源字符串。
  • pattern:正则表达式模式。
  • replace_string:替换字符串。
  • position:开始搜索的位置,如果省略,默认为1。
  • occurrence:匹配的次数,如果省略,默认为所有匹配的部分。
  • match_parameter:匹配参数,同REGEXP_LIKE
3.4 REGEXP_INSTR

REGEXP_INSTR函数返回一个字符串中匹配一个正则表达式模式的部分的位置。

语法:

REGEXP_INSTR(source_string, pattern [, position [, occurrence [, return_option [, match_parameter [, sub_expression]]]]])
  • source_string:源字符串。
  • pattern:正则表达式模式。
  • position:开始搜索的位置,如果省略,默认为1。
  • occurrence:匹配的次数,如果省略,默认为1。
  • return_option:返回选项,如果为0,返回匹配的开始位置,如果为1,返回匹配的结束位置,如果省略,默认为0。
  • match_parameter:匹配参数,同REGEXP_LIKE
  • sub_expression:子表达式的位置,用于提取括号中的子表达式。
3.5 REGEXP_COUNT

REGEXP_COUNT函数计算一个字符串中匹配一个正则表达式模式的部分的数量。

语法:

REGEXP_COUNT(source_string, pattern [, position [, match_parameter]])
  • source_string:源字符串。
  • pattern:正则表达式模式。
  • position:开始搜索的位置,如果省略,默认为1。
  • match_parameter:匹配参数,同REGEXP_LIKE

4. Oracle正则表达式的应用实例

以下是一些使用Oracle正则表达式函数的应用实例:

4.1 使用REGEXP_LIKE进行模式匹配

假设我们有一个员工表EMPLOYEES,我们想找出所有名字以字母"A"开头的员工:

SELECT first_name
FROM employees
WHERE REGEXP_LIKE(first_name, '^A');
4.2 使用REGEXP_SUBSTR提取匹配的子串

假设我们有一个字符串,我们想提取其中的数字:

SELECT REGEXP_SUBSTR('123 Main Street', '\d+') AS extracted_number
FROM dual;

这将返回’123’,这是字符串中的第一个数字序列。

4.3 使用REGEXP_REPLACE替换匹配的子串

假设我们有一个字符串,我们想将其中的所有数字替换为’X’:

SELECT REGEXP_REPLACE('123 Main Street', '\d', 'X') AS replaced_string
FROM dual;

这将返回’XXX Main Street’。

4.4 使用REGEXP_INSTR找到匹配的位置

假设我们有一个字符串,我们想找到第一个数字的位置:

SELECT REGEXP_INSTR('123 Main Street', '\d') AS position
FROM dual;

这将返回1,因为第一个数字在字符串的第一个位置。

4.5 使用REGEXP_COUNT计算匹配的次数

假设我们有一个字符串,我们想计算其中的数字的数量:

SELECT REGEXP_COUNT('123 Main Street', '\d') AS count
FROM dual;

这将返回3,因为字符串中有3个数字。

5. Oracle正则表达式的性能优化

使用正则表达式时,性能是一个重要的考虑因素。以下是一些优化Oracle正则表达式性能的建议:

5.1 正确使用元字符和量词

元字符和量词的使用可以大大影响正则表达式的性能。例如,贪婪量词(如*+)可能会导致大量的回溯,从而降低性能。如果可能,使用非贪婪量词(如*?+?),或者使用更具体的模式来减少匹配的可能性。

5.2 使用预编译的正则表达式

预编译的正则表达式可以提高性能,因为它们只需要编译一次,然后可以被多次使用。在Oracle中,可以使用DBMS_SQL包中的REGEXP_LIKE函数来预编译正则表达式。

5.3 选择合适的正则表达式函数

Oracle提供了多种正则表达式函数,每种函数都有其特定的用途。选择最适合你需要的函数可以提高性能。例如,如果你只需要检查一个字符串是否匹配一个模式,而不需要提取或替换匹配的部分,那么REGEXP_LIKE可能是最好的选择。如果你需要提取匹配的部分,那么REGEXP_SUBSTR可能是最好的选择。如果你需要替换匹配的部分,那么REGEXP_REPLACE可能是最好的选择。

此外,如果你的查询涉及到大量的数据,考虑在可能的情况下,使用正则表达式的索引,这可以大大提高查询性能。

6. Oracle正则表达式的注意事项

在使用Oracle正则表达式时,有一些重要的注意事项需要考虑:

6.1 正则表达式的特殊字符处理

正则表达式中的一些字符具有特殊的含义,例如*, +, ?, ., ^, $, |, (), [], {}, \等。如果你想在正则表达式中使用这些字符的字面值,你需要使用\进行转义。例如,如果你想匹配字符串10.00,你需要写成10\.00,否则.将匹配任何字符。

6.2 正则表达式的贪婪匹配和懒惰匹配

正则表达式中的量词默认是贪婪的,这意味着它们会尽可能多地匹配字符。例如,正则表达式a.*b将匹配从第一个a到最后一个b之间的所有字符。

如果你想进行懒惰匹配(即尽可能少地匹配字符),你可以使用?来修改量词。例如,正则表达式a.*?b将匹配从第一个a到第一个b之间的所有字符。

在使用贪婪匹配和懒惰匹配时,需要注意可能的性能影响。贪婪匹配可能会导致大量的回溯,从而降低性能。如果可能,尽量使用更具体的模式来减少匹配的可能性。

7. 实战案例

提取字符串中的年份
  • 如果你想从一个包含日期的字符串中提取年份,你可以使用REGEXP_SUBSTR函数。例如:

    SELECT REGEXP_SUBSTR('The event will happen on 2024-10-29.', '(\d{4})') AS year FROM dual;
    

    这将返回2024

验证密码复杂性
  • 可以使用REGEXP_LIKE函数来验证密码是否包含至少一个大写字母,一个小写字母,一个数字和一个特殊字符。例如:

    SELECT password FROM users WHERE REGEXP_LIKE(password, '(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_])');
    
提取URL的协议、主机和路径
  • 可以使用REGEXP_SUBSTR函数来提取URL的协议、主机和路径。例如:

    SELECT REGEXP_SUBSTR('https://www.example.com/page', '(https?|ftp)://') AS protocol,REGEXP_SUBSTR('https://www.example.com/page', '(https?|ftp)://([^/]+)/') AS host,REGEXP_SUBSTR('https://www.example.com/page', '(https?|ftp)://[^/]+(/.+)') AS path
    FROM dual;
    

    这将返回https://www.example.com/page

验证IP地址
  • 可以使用REGEXP_LIKE函数来验证IP地址。例如:

    SELECT ip FROM ips WHERE REGEXP_LIKE(ip, '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$');
    
提取字符串中的邮件地址
  • 可以使用REGEXP_SUBSTR函数来提取字符串中的邮件地址。例如:

    SELECT REGEXP_SUBSTR('My email is john.doe@example.com.', '([A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})') AS email FROM dual;
    

    这将返回john.doe@example.com

替换HTML标签
  • 可以使用REGEXP_REPLACE函数来替换HTML标签。例如:

    SELECT REGEXP_REPLACE('<p>Hello World</p>', '<[^>]+>', '') FROM dual;
    

    这将返回Hello World

提取字符串中的电话号码
  • 可以使用REGEXP_SUBSTR函数来提取字符串中的电话号码。例如:

    SELECT REGEXP_SUBSTR('My phone number is (123) 456-7890.', '\((\d{3})\)\s*(\d{3})-(\d{4})') AS phone FROM dual;
    

    这将返回(123) 456-7890

匹配信用卡号
  • 可以使用REGEXP_LIKE函数来匹配信用卡号。例如:

    SELECT card FROM cards WHERE REGEXP_LIKE(card, '^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$');
    
提取字符串中的URL
  • 可以使用REGEXP_SUBSTR函数来提取字符串中的URL。例如:

    SELECT REGEXP_SUBSTR('Check out https://www.example.com.', '(https?|ftp)://[^\s/$.?#].[^\s]*') AS url FROM dual;
    

    这将返回https://www.example.com

匹配社会安全号码
  • 可以使用REGEXP_LIKE函数来匹配社会安全号码。例如:

    SELECT ssn FROM ssns WHERE REGEXP_LIKE(ssn, '^\d{3}-\d{2}-\d{4}$');
    

以上的每个案例都展示了正则表达式在实际应用中的使用,包括提取、替换、验证和匹配等多种场景。

相关文章:

【oracle】正则表达式

文章目录 1.介绍1.1 什么是正则表达式1.2 什么是Oracle正则表达式 2. Oracle正则表达式的基础知识2.1 常用的元字符2.2 常用的转义序列2.3 常用的量词 3. Oracle正则表达式的函数3.1 REGEXP_LIKE3.2 REGEXP_SUBSTR3.3 REGEXP_REPLACE3.4 REGEXP_INSTR3.5 REGEXP_COUNT 4. Oracl…...

如何找到网上爆款内容,快速复制扩大品牌声量

社媒内容爆款复制是现代营销中的一个重要策略&#xff0c;它对于提升品牌声量、曝光度和知名度具有显著效果。 首先什么是爆款&#xff1f; 爆款内容指的是在社交媒体或其他在线平台上迅速获得大量关注、分享和讨论的内容。 准确、及时找到这部分品牌相关的爆款内容&#xf…...

补齐:相交链表:扣160

梦重新开始的地方 – 相交链表 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。图示两个链表在节点 c1 开始相交&#xff1a; 示例&#xff1a; 何解&#xff1f; 暴力&…...

Java项目实战II基于Java+Spring Boot+MySQL的智能推荐的卫生健康系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 基于Java、…...

NET Core的AOP实施方法1 DispatchProxy

NET Core的AOP实施方法1 DispatchProxy NET Framework的AOP实施方法1 ContextBoundObject NET Framework的AOP实施方法2 RealProxy 源码见Github DispatchProxy NET Core DispatchProxy 是一个在 .NET 框架中引入的概念&#xff0c;特别是在 C# 语言中。它是一种特殊类型的代…...

AIGC生成式人工智能——泼天的富贵(三)

人工智能作为第四次工业革命的标志性技术&#xff0c;正在深刻地改变着全球经济、社会结构和人类生活方式。 今天的人工智能&#xff0c;就像当年的房地产经济&#xff0c;未来至少会有十年的红利期。 一、人工智能&#xff0c;给我带来了第二桶金 你永远赚不到你认知以外的…...

GetX的一些高级API

目录 前言 一、一些常用的API 二、局部状态组件 1.可选的全局设置和手动配置 2.局部状态组件 1.ValueBuilder 1.特点 2.基本用法 2.ObxValue 1.特点 2.基本用法 前言 这篇文章主要讲解GetX的一些高级API和一些有用的小组件。 一、一些常用的API GetX提供了一些高级…...

【笔面试常见题:三门问题】用条件概率、全概率和贝叶斯推导

1. 问题介绍 三门问题&#xff0c;又叫蒙提霍尔问题&#xff08;Monty Hall problem&#xff09;&#xff0c;以下是蒙提霍尔问题的一个著名的叙述&#xff0c;来自Craig F. Whitaker于1990年寄给《展示杂志》&#xff08;Parade Magazine&#xff09;玛丽莲沃斯莎凡特&#x…...

刘艳兵-DBA011-应用使用Oracle数据库,必须启动哪些服务?

应用使用Oracle数据库&#xff0c;必须启动哪些服务&#xff08; &#xff09; A OracleServiceSID B OracleJobSchedulerSID C OracleMTSRecoveryService D OracleHOME_NAMETNSListener 答&#xff1a; A OracleServiceSID D OracleHOME_NAMETNSListener…...

注释多行代码的vim插件

编写vim 插件代码 add_comments.vim function! AddComment()let l:comment #if &filetype cpplet l:comment //elseif &filetype clet l:comment //endiflet [l:start, l:end][ line("<"), line(">") ]let l:commented_lines []for …...

Docker 安装HomeAssistant智能家居系统

HomeAssistant 介绍 简介 Home Assistant是一个自由开源的智能家居自动化平台&#xff0c;它可以控制并监测各种智能家居设备、传感器和其他物联网设备。Home Assistant可以运行在树莓派、NVIDIA Jetson Nano等低功耗设备上&#xff0c;使用户可以快速搭建自己的智能家居系统。…...

21 Docker容器集群网络架构:四、Docker集群网络验证

文章目录 Docker容器集群网络架构:四、Docker集群网络验证4.1 创建网络4.2 查看创建的网络4.2.1 查看节点1创建的网络4.2.2 查看节点2创建的网络4.2.3 查看节点3创建的网络4.3 运行容器并查看4.3.1 运行容器4.3.2 节点1查看4.3.3 节点2查看4.3.4 节点3查看Docker容器集群网络架…...

【Kaggle | Pandas】练习5:数据类型和缺失值

文章目录 1. 获取列数据类型.dtype / .dypes2. 转换数据类型.astype()3. 获取数据为空的列 .isnull()4. 将缺少值替换并且排序.fillna()&#xff0c;.sort_values() 1. 获取列数据类型.dtype / .dypes 数据集中points列的数据类型是什么&#xff1f; # Your code here dtype …...

《YOLO 目标检测》—— YOLO v4 详细介绍

文章目录 一、整体网络结构1. YOLO v4 网络结构图2.对之前版本改进创新的概括 二、对改进创新部分的具体介绍1. 输入端创新2. Backbone主干网络创新CSPDarknet53Mish激活函数Dropblock正则化 3. 特征融合创新SPP模块PAN结构 4. Prediction输出层创新&#xff08;未写完&#xf…...

Ubuntu:通过ssh链接另外一台Ubuntu

本文将介绍通过ssh链接另外一台Ubuntu的方法。 一、安装openssh-server sudo apt update sudo apt install openssh-server二、查看SSH是否运行 sudo systemctl status ssh三、链接 ssh usernameremote_ip_address四、复制A电脑的文件到本地 scp usernameremote_ip_addres…...

黄山谷捷提交创业板IPO注册,募资扩产提升综合竞争力

近日&#xff0c;黄山谷捷股份有限公司&#xff08;下文称“黄山谷捷”&#xff09;申请深交所创业板IPO审核状态变更为“提交注册”。据悉&#xff0c;本次IPO黄山谷捷拟募资50,201.19万元&#xff0c;分别用于功率半导体模块散热基板智能制造及产能提升项目&#xff0c;研发中…...

(python)如何进行加密

代码效果是将输入的四个数字每个加上7&#xff0c;然后除以10的余数&#xff0c;接着再将第一个数字和第三个数字对调&#xff0c;第二个数字和第四个数字对调 # 获取用户输入的四位数字符串 list1 input("请输入你四位数密码&#xff1a;") # 初始化一个空列表来存…...

夸克网盘免费扩容 20T 福利,无限次叠加,亲测有效

新用户用夸克 APP 存资源可得 1T 永久存储空间 &#x1f6a8;此方法仅试用于新用户&#xff0c;并且只能在手机上打开夸克 APP 中去领取&#xff01;pc&#xff0c;ipad 都不行&#xff01;&#xff01;&#xff01; 使用手机打开夸克 APP&#xff0c;保存以下资源可获取 1T …...

开源协议类型及长安链开源协议介绍

截至目前&#xff0c;我国参与国际开源社区协作的开发者数量排名全球第二并推出了众多社区活跃度较高的高质量开源项目&#xff0c;是全球开源生态的重要贡献力量&#xff0c;但在开源治理方面我国还处于发展初期&#xff0c;大部分开发者对开源的印象还限于开放代码、免费使用…...

SQL Server 可观测最佳实践

SQL Server 简介 SQL Server 是微软公司开发的一款关系数据库管理系统&#xff0c;支持企业 IT 环境中的各种事务处理、商业智能和分析应用程序。它支持多种操作系统平台&#xff0c;而无论是物理还是虚拟形式&#xff0c;自建部署环境还是在云环境中&#xff0c;运行的操作系…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...