正则表达式实战指南:原理、口诀与高频场景案例
正则表达式实战指南:原理、口诀与高频场景案例
正则表达式(Regular Expression)是程序员处理文本的瑞士军刀,被广泛应用于数据验证、日志分析、爬虫开发等领域。本文将从原理讲解、口诀速查到高频实战案例,带你系统掌握正则表达式的核心知识与实用技巧。
一、原理简述:正则表达式的本质
正则表达式是一种用特定符号(元字符)描述字符串匹配规则的“公式”。本质上,它是用简洁的符号组合,描述哪些字符串是你要的。
- 每个元字符代表一种规则或条件,如“数字”、“字母”、“开头结尾”等。
- 通过组合元字符,可以拼出复杂的筛选条件。
- 正则表达式引擎会逐字符扫描目标文本,按规则查找或验证。
转义符 \ 的作用:
遇到如 .
、*
等特殊含义的元字符,需用 \
进行转义,如 \.
匹配真实的小数点,\\
匹配反斜杠本身。
二、元字符速查表与记忆口诀
常用元字符及口诀
元字符 | 含义 | 口诀 | 示例 |
---|---|---|---|
. | 任意单字符(除换行) | 小点能代啥都行 | a.b 匹配 a1b |
* | 前项0次或多次 | 星号零多随你挑 | ab* 匹配 a、ab、abb |
+ | 前项1次或多次 | 加号一多不能少 | ab+ 匹配 ab、abb |
? | 前项0次或1次 | 问号可有可无 | ab? 匹配 a、ab |
[] | 括号内任一字符 | 方括任选一个 | [abc] 匹配 a,b,c |
{n} | 前项精确n次 | 花括定次数 | \d{3} 匹配 123 |
{n,m} | 前项n到m次 | 量词范围花括定 | \d{2,4} 匹配12、1234 |
\d | 一位数字 | d是digit数字 | \d\d 匹配 12 |
\w | 字母/数字/下划线 | w是word单词成员 | \w\w 匹配 a1 |
\s | 空白符(空格/制表/换行) | s是space空白符 | \s+ 匹配空格 |
^ | 字符串开头 | 脱字符锁开头 | ^abc 匹配abc开头 |
$ | 字符串结尾 | 美元符定结尾 | abc$ 匹配abc结尾 |
() | 分组/整体应用 | 小括号成团结队 | (ab)+ 匹配 abab |
| | 或者分支 | 竖线二选一 | a|b 匹配a或b |
[^abc] | 非括号内任意字符 | 方括脱字符排除 | [^a] 匹配非a字符 |
口诀记忆法
- 点星加问方,花括次数量。
- 转义反斜杠,符号真实样。
- 脱字符开头,美元符结尾,方括内排除,分组小括忙。
- 竖线是或,\d数字,\w词,\s空。
当然可以!下面是对正则表达式相关口诀的详细解释说明,帮助你理解每句口诀背后的含义和用法。
正则表达式口诀解释说明
1. 点星加问方,花括次数量。
- 点(.):匹配任意一个字符(除了换行符)。
例:a.b
能匹配acb
、a1b
、a-b
等。 - 星号(*):表示前面的内容出现0次或多次。
例:ab*
能匹配a
、ab
、abb
、abbb
等。 - 加号(+):表示前面的内容出现1次或多次。
例:ab+
能匹配ab
、abb
,但不匹配a
。 - 问号(?):前面的内容出现0次或1次。
例:ab?
能匹配a
或ab
。 - 方括号([]):括号内任意一个字符都能匹配。
例:[abc]
匹配a
、b
或c
。 - 花括号({n}、{n,m}):指定前面内容出现的次数或范围。
例:\d{3}
匹配3位数字,\d{2,4}
匹配2到4位数字。
口诀含义:这一句总结了正则表达式最常用的匹配次数和内容描述符号,写正则时灵活组合,可以覆盖大多数基础场景。
2. 转义反斜杠,符号真实样。
- 反斜杠(\):用于转义,让特殊符号变成普通字符,或者让普通字符有特殊含义。
例:\.
匹配“.”本身,而不是“任意字符”;\d
匹配数字;\\
匹配反斜杠本身。 - 符号真实样:如果你要匹配的就是一个特殊符号(如点、星号、加号等),一定要加反斜杠“逃逸”一下,才能按字面意义识别。
口诀含义:提醒你遇到特殊符号要注意用反斜杠转义,否则表达的意思就会变。
3. 脱字符开头,美元符结尾,方括内排除,分组小括忙。
- 脱字符(^):在正则最前面表示“字符串开头”。
例:^abc
匹配以abc
开头的字符串。 - 美元符($):在正则最后面表示“字符串结尾”。
例:abc$
匹配以abc
结尾的字符串。 - 方括号内^([^…]):在方括号第一个位置表示“排除”,匹配不在括号内的字符。
例:[^a]
匹配任何非a
的字符。 - 小括号(()):用于分组,一是整体应用量词,二是捕获分组内容,方便后续引用。
例:(ab)+
匹配ab
、abab
;\1
可以引用第一个分组的内容。
口诀含义:总结了正则中“定位”、“排除”和“分组”相关的用法,是写复杂表达式时的核心工具。
4. 竖线是或,\d数字,\w词,\s空。
- 竖线(|):表示“或者”分支,可以实现多选。
例:cat|dog
匹配cat
或dog
。 - \d:匹配一位数字(0-9),等价于
[0-9]
。 - \w:匹配字母、数字、下划线,等价于
[A-Za-z0-9_]
。 - \s:匹配空白字符,包括空格、制表符、换行等。
口诀含义:把常用的“或分支”和“快捷字符集”记下来,写正则更高效。
四、高频场景案例与解析
1. 手机号精准匹配(中国)
^1[3-9]\d{9}$
^1
:以1开头;[3-9]
:第二位为3-9;\d{9}
:后九位数字;$
:结尾。
场景:注册、绑定手机
2. 邮箱格式验证(支持多级域名)
^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$
- 用户名可含字母、数字、下划线、点、短横线
- 支持多级域名
- 顶级域名2-6位字母
场景:注册、邮件校验
3. 强密码校验(8-20位,含数字、大小写字母、特殊符号)
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*]).{8,20}$
- 多个正向预查,分别要求至少出现1个数字、小写、大写、特殊符号
场景:注册、改密
4. IPv4地址匹配
^((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$
- 精确限制每段0~255
场景:网络、日志
5. 中文姓名(含“·”间隔符)
^[\u4e00-\u9fa5]{2,8}(·[\u4e00-\u9fa5]{1,8})?$
- 支持少数民族姓名的“·”分隔
场景:实名认证、表单校验
6. 日期格式(YYYY-MM-DD)
^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$
- 年月日格式,简单合法性校验
场景:数据录入、表单校验
7. 提取HTML标签内容(非贪婪)
<([a-z][a-z0-9]*)\b[^>]*>(.*?)</\1>
- 捕获标签名与内容,非贪婪避免跨标签
场景:网页爬虫、文本提取
8. 删除多余空格
\s{2,}
- 匹配2个及以上空白字符,替换为单个空格
场景:文本清洗
9. 匹配十六进制颜色值
^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
- 支持#FFF和#FFFFFF
场景:前端开发、样式校验
10. 匹配信用卡号(16位数字,4位分隔)
^\d{4}(-\d{4}){3}$
- 或纯数字版:
^\d{16}$
场景:支付、金融
11. 匹配连续重复单词
\b(\w+)\b\s+\1\b
- 检查如 “is is”、“the the”
场景:拼写检查
12. 提取URL中的域名
^(?:https?://)?([^/?#]+)
- 提取主域名部分
场景:日志、SEO
四、实用细节与优化建议
- 贪婪与非贪婪:
.*
默认贪婪,.*?
非贪婪,提取内容时优先用非贪婪。 - 特殊字符位置:如
^
在[]内表示取反,在外表示开头。 - 性能问题:避免嵌套量词(如
(a+)+
),防止回溯爆炸;复杂需求建议分步处理。 - 调试工具:推荐 regex101.com、RegExr Debuggex(可视化正则引擎流程)
五、总结与建议
- 本质:正则=用特殊符号组合描述字符串“筛选条件”
- 口诀:点星加问方,组合灵活用;脱字符开头,美金符结尾;斜杠d是数字,斜杠w是字母;竖线是或者,分支随你挑。
- 实战:速查元字符表+高频案例,遇到复杂需求先用自然语言描述,再逐步拆解为正则。
收藏本博客,查找正则表达式再也不犯难!如需定制场景,欢迎留言交流。
相关文章:
正则表达式实战指南:原理、口诀与高频场景案例
正则表达式实战指南:原理、口诀与高频场景案例 正则表达式(Regular Expression)是程序员处理文本的瑞士军刀,被广泛应用于数据验证、日志分析、爬虫开发等领域。本文将从原理讲解、口诀速查到高频实战案例,带你系统掌…...
Spark缓存--persist方法
1. 功能本质 persist:这是一个通用的持久化方法,能够指定多种不同的存储级别。存储级别决定了数据的存储位置(如内存、磁盘)以及存储形式(如是否序列化)。 2. 存储级别指定 persist:可以通过传入…...
【LeetCode 热题 100】二叉树 系列
📁 104. 二叉树的最大深度 深度就是树的高度,即只要左右子树其中有一个不为空,就继续往下递归,知道节点为空,向上返回。 int maxDepth(TreeNode* root) {if(root nullptr)return 0;return max(maxDepth(root->lef…...
CTF之常见的文件头和文件尾
1、图片 JPEG 文件头:FF D8 FF 文件尾:FF D9TGA 未压缩的前4字节 00 00 02 00 RLE压缩的前5字节 00 00 10 00 00PNG 文件头:89 50 4E 47 0D 0A 1A 0A 文件尾:AE 42 60 82GIF 文件头:47 49 46 38 39(37) 61 文件尾&…...
软件设计师教程——第一章 计算机系统知识(上)
前言 在竞争激烈的就业市场中,证书是大学生求职的重要加分项。中级软件设计师证书专业性强、认可度高,是计算机相关专业学生考证的热门选择,既能检验专业知识,又有助于职业发展。本教程将聚焦核心重点,以点带面构建知…...
KRaft (Kafka 4.0) 集群配置指南(超简单,脱离 ZooKeeper 集群)还包含了简化测试指令的脚本!!!
docker-compose方式部署kafka集群 Kafka 4.0 引入了 KRaft 模式(Kafka Raft Metadata Mode),它使 Kafka 集群不再依赖 ZooKeeper 进行元数据管理。KRaft 模式简化了 Kafka 部署和管理,不需要额外配置 ZooKeeper 服务,…...
安全月演讲比赛活动讲话稿
同志们:在公司上下万众一心创建“无违章企业”的大形势下,由公司工会、团委举办的“安全与我”演讲比赛,经过紧张激烈的预赛,今天进行正式决赛。 从预赛的38名选手中脱颖而出的10名选手,今天将再次登台献技,…...
实时操作系统:航空电子系统的安全基石还是创新枷锁?
引言:航空电子系统的进化论 在航空电子技术的漫长发展历程中,飞行器控制系统实现从机械仪表到数字计算机的跨越,这一进步具有深远意义。现代战机以超过 2 马赫的速度突破音障,无人机群在复杂电磁环境下完成自主编队,这…...
windows 部署 Kafka3.x KRaft 模式 不依赖 ZooKeeper
1.下载 https://archive.apache.org/dist/kafka/3.9.0/kafka_2.12-3.9.0.tgz2.配置使用 KRaft 模式 2.1 修改 Kafka 的配置文件 cd D:\data\bigdata\kafka_2.12-3.9.0\config\kraft 修改 server.properties # 设置 Kafka 数据日志存储目录 log.dirsD:\\data\\bigdata\\kaf…...
SEMI E40-0200 STANDARD FOR PROCESSING MANAGEMENT(加工管理标准)-(一)
1 目的 物料(例如晶圆)加工在设备中的自动化管理与控制是实现工厂自动化的关键要素。本标准针对半导体制造环境中与设备内部物料处理相关的通信需求进行了规范。本标准规定了在加工单元接收到的指定材料所应适用的加工方法(例如Etch腔室需要Run哪支Recipe)。它阐述了物料加工的…...
Web 架构之高可用基础
文章目录 引言一、无状态服务设计(Session 托管至 Redis 集群)1. 概念与原理2. 代码示例(Python Flask 应用)3. 常见问题及解决办法 二、数据库读写分离(MySQL 主从 ProxySQL 流量分发)1. 概念与原理2. 配…...
巧用python之--模仿PLC(PLC模拟器)
工作中用到了VM(VisionMaster4.3)有时候需要和PLC打交道,但是PLC毕竟是别人的,不方便修改别人的程序,这时候需要一个灵活的PLC模拟器是多么好呀! 先说背景: PLC型号 汇川Easy521: Modbus TCP 192.168.1.10:502 在汇川Easy521中Modbus保持寄存器D寄存器 ,在modbus协议中 0-4区…...
Nginx +Nginx-http-flv-module 推流拉流
这两天为了利用云服务器实现 Nginx 进行OBS Rtmp推流,Flv拉流时发生了诸多情况,记录实现过程。 环境 OS:阿里云CentOS 7.9 64位Nginx:nginx-1.28.0Nginx-http-flv-module:nginx-http-flv-module-1.2.12 安装Nginx编…...
DRF+Vue项目线上部署:腾讯云+Centos7.6
1.服务器选购和配置 1.1.服务器选购 1.2.防火墙/安全组配置 80是HTTP的端口,443是HTTPS的端口,22是远程连接的端口,3306是mysql的端口。 1.3.远程连接软件(tabby)配置 下载:https://github.com/Eugeny/ta…...
大疆无人机(全系列,包括mini)拉流至电脑,实现直播
参考视频 【保姆级教程】大疆无人机rtmp推流直播教程_哔哩哔哩_bilibili VLC使用教程: VLC工具使用指南-CSDN博客 目录 实现效果: 电脑端 编辑 编辑 无人机端 VLC拉流 分析 实现效果: (实验机型:大疆mini4kRC-N2遥控器、大…...
Spring普通配置类 vs 自动配置类-笔记
1.简要版 Configuration和Bean,既可以用于普通配置类,也可以用于自动配置类。二者的区别和联系是什么呢? 区别: Configuration和Bean是Spring框架本身的注解,用于定义配置类和生成Bean。而自动配置通常是Spring Boo…...
解决Ceph 14.2.22 Nautilus版本监视器慢操作问题的实践指南
解决Ceph Nautilus版本监视器慢操作问题的实践指南 问题背景问题现象问题分析1. 确认监视器状态2. 检查慢操作详情3. 深入分析操作状态 问题原因解决方案立即解决方法 总结 在生产环境中执行任何操作前,请确保已备份重要数据,并在测试环境中验证解决方案…...
Go使用Gin写一个对MySQL的增删改查服务
首先用SQL创建一个包含id、name属性的users表 create table users (id int auto_incrementprimary key,name varchar(255) null );查询所有用户信息: func queryData(db *sql.DB, w http.ResponseWriter) {rows, err : db.Query("SELECT * FROM users"…...
数字孪生医疗:构建患者特异性数字孪生体路径探析
引言 数字孪生技术正逐渐成为医疗健康领域的一场革命性力量,它通过创建人体器官和系统的数字复制品,为疾病预测、诊断和个性化治疗开辟了前所未有的可能性。在心血管疾病领域,数字孪生技术的应用尤为引人注目,特别是对于扩张型心肌病(Dilated Cardiomyopathy,DCM)这一常…...
rust程序静态编译的两种方法总结
1. 概述 经过我的探索,总结了两种rust程序静态编译的方法,理论上两种方法都适用于windows、mac os和linux(mac os未验证),实测方法一性能比方法二好,现总结如下,希望能够帮到你. 2.方法一 2.1 添加配置文件 在项目的同级文件夹下新…...
threejs 添加css3d标签 vue3
如图所示,给收费站标注标签。步骤如下: 一、引入 import {CSS3DRenderer,CSS3DObject, } from "three/examples/jsm/renderers/CSS3DRenderer"; 二、 //一、申明css3渲染器 const label3DRenderer ref()//二、创建css3d渲染器--将渲染器加…...
【git】git fsmonitor
git fsmonitor 是 Git 提供的一个特性,用于提高 Git 的性能,尤其是在处理文件状态检查(git status)时。它通过文件系统监控服务(如 Windows 上的 FileSystemWatcher 或 Linux 上的 inotify)来跟踪文件系统的…...
开源照片管理系统PhotoPrism的容器化部署与远程管理配置
文章目录 前言1.关于PhotoPrism2.本地部署PhotoPrism3.PhotoPrism简单使用4. 安装内网穿透5.配置PhotoPrism公网地址6. 配置固定公网地址 前言 你是不是用手机拍照片的时候无所谓拍了多少张,但在整理的时候却要占用超多时间?别怕,今天给大家…...
macOS Python 环境配置指南
1. 检查现有 Python 环境 python3 --version # 检查 Python 3 版本 pip3 --version # 检查 pip 版本 2. 安装 pyenv(Python 版本管理工具) # 使用 Homebrew 安装 pyenvbrew install pyenv# 配置 pyenv 环境变量(添加到 ~/.zshrc&#…...
如何阅读、学习 Git 核心源代码 ?
学习 Git 核心源代码是一个深入理解版本控制系统底层原理的绝佳方式。以下是分阶段的系统性建议,结合了实践经验和学习路径设计: 一、前置知识储备 C语言进阶 重点掌握指针操作(尤其是二级指针和函数指针)结构体嵌套与内存对齐…...
学习黑客 MAC 地址深入了解
在江湖之中,每位少侠既有“门派”加身,也需持有“令牌”通行。MAC地址便是我被师门铁订在骨血里的“先天武功心法”,铸于出厂之时,终身不变,只有破阵高手才能暗度陈仓才能改写;而IP地址则是我行走江湖的“后…...
长事务:数据库中的“隐形炸弹“——金仓数据库运维避坑指南
引言:凌晨三点的告警 "张工!生产库又告警了!"凌晨三点的电话铃声总是格外刺耳。运维团队发现数据库频繁进入单用户模式,排查发现某核心表的年龄值(Age)已突破20亿大关。经过一夜奋战,…...
WTK6900C-48L:离线语音芯片重构玩具DNA,从“按键操控”到“声控陪伴”的交互跃迁
一:开发背景 随着消费升级和AI技术进步,传统玩具的机械式互动已难以满足市场需求。语音控制芯片的引入使玩具实现了从被动玩耍到智能交互的跨越式发展。通过集成高性价比的语音识别芯片,现代智能玩具不仅能精准响应儿童指令,还能实…...
一文读懂Python之requests模块(36)
一、requests模块简介 requests模块是python中原生的一款基于网络请求的模块,功能强大,简单便捷且高效 ,该模块可以模拟浏览器发送请求,主要包括指定url、发起请求、获取响应数据和持久化存储,包括 GET、POST、PUT、…...
Java 异常
Java 异常的体系结构 java.lang.Throwable ├── Error(严重错误,程序无法处理) │ ├── OutOfMemoryError │ ├── StackOverflowError │ └── ... └── Exception(程序可以处理的异常)├── Check…...
智能外呼机器人的核心优势
随着人工智能技术的快速发展,智能外呼机器人已成为企业降本增效的重要工具。其通过整合语音识别(ASR)、自然语言处理(NLP)、语音合成(TTS)等技术,不仅替代了大量重复性人工劳动&…...
n8n - 开放灵活的智能自动化工作流平台
n8n - 开放灵活的智能自动化工作流平台 在当今数字化转型的大潮中,自动化已成为众多企业提升效率、优化流程的关键手段。而在众多自动化工具中,n8n以其开放灵活且强大的功能脱颖而出,成为技术团队的可靠选择。今天,我们将深入了解n8n这个开源自动化工作流平台,探索其广泛…...
window 显示驱动开发-处理内存段(二)
KMD 不需要在其内存段中指定 GPU 可用的所有视频内存资源。 但是,KMD 必须指定 VidMm 在系统上运行的所有进程中管理的所有内存资源。 例如: 实现固定函数管道的顶点着色器微代码可以驻留在 GPU 地址空间中,但在 VidMm 管理的内存之外&#x…...
RSS 2025|斯坦福提出「统一视频行动模型UVA」:实现机器人高精度动作推理
导读 在机器人领域,让机器人像人类一样理解视觉信息并做出精准行动,一直是科研人员努力的方向。今天,我们要探讨的统一视频行动模型(Unified Video Action Model,UVA),就像给机器人装上了一个“…...
代码随想录算法训练营第60期第三十天打卡
大家好,今天我们要走进一个全新的章节,这一章叫做贪心算法,前面我们讲的是回溯算法,那究竟什么是贪心算法呢?我们一起走进今天的内容。 第一部分贪心的理论基础 其实大家看这个名字估计也会有一定了解,贪心…...
腾讯云:数字世界的“量子熔炉”与硅基文明引擎
一、算力拓扑学:重新定义空间的计算密度 腾讯云的算力网络正在突破经典物理限制,其分布式架构通过“量子化”资源调度实现超维计算: 虚拟化跃迁:基于KVM的轻量级虚拟化技术,将单台物理服务器切割为百…...
Python Cookbook-7.7 通过 shelve 修改对象
任务 你正在使用标准库模块shelve。你用shelve处理过的一些值是易变的对象(mutableobjects),而且你需要修改这些对象。 解决方案 shelve 模块提供了一种持久的字典——在强大的关系型数据库和简洁的 marshal、pickledbm 以及类似的文件格式之间,它有着…...
Baklib构建AI就绪知识管理体系
Baklib构建AI就绪知识体系 在数字化转型加速的背景下,Baklib通过其AI就绪知识管理体系,为企业提供了从数据整合到智能应用的完整解决方案。该平台以知识中台为核心架构,依托自然语言处理与机器学习技术,对分散在企业文档系统、协…...
嵌入式开发学习日志Day16
一、指针函数 函数的返回值为指针的函数; 注意:不能返回局部变量的地址; 可以返回静态变量的地址; 可以返回全局变量的地址; 1、动态内存分配 void *malloc(size_t size); //申请空间的函数 void free(*ptr); …...
SLAM文献之KernelGPA: A Globally Optimal Solution to Deformable SLAM in Closed-form
KernelGPA: A Globally Optimal Solution to Deformable SLAM in Closed-form 提出了一种在非刚性变形环境下求解 SLAM 问题的闭式全局最优解方法。下面是对其算法原理和核心推导过程的系统解析。 一、算法背景与目标 问题描述: 传统 SLAM 主要假设环境为刚性&am…...
C++之“继承”
继续开始关于C相关的内容。C作为面向对象的语言,有三大特性:封装,继承,多态。 这篇文章我们开始学习:继承。 一、继承的概念和定义 1. 继承的概念 什么是继承呢? 字面意思理解来看:继承就是…...
java集成telegram机器人
java集成telegram机器人 最近项目需要集成telegram机器人,来实现消息推送功能,以此记录下。 1.创建telegram账号 没有账号的可以去某宝上买一个,千万不要用自己的手机号86去注册,你懂得。 2. 打开BotFather对话创建机器人获取…...
从代码学习深度学习 - 单发多框检测(SSD)PyTorch版
文章目录 前言工具函数数据处理工具 (`utils_for_data.py`)训练工具 (`utils_for_train.py`)检测相关工具 (`utils_for_detection.py`)可视化工具 (`utils_for_huitu.py`)模型类别预测层边界框预测层连接多尺度预测高和宽减半块基础网络块完整的模型训练模型读取数据集和初始化…...
因子分析——数学原理及R语言代码
这里写自定义目录标题 因子分析参数估计方法主成分法主因子法 因子旋转 代码实现Reference 因子分析 FactorAnalysis的目的是从多个高度相关的观测变量中提取出少数几个LatentFactor,这些因子代表了变量背后的共通结构,从而实现降维并提升可解释性。 假…...
CSS3 过渡与动画
在现代网页设计中,平滑的过渡和生动的动画效果已成为提升用户体验不可或缺的元素。CSS3 为我们提供了强大的 transition 和 animation 属性,让开发者能够轻松实现各种视觉效果。本文将深入探讨这两大功能的特性和应用场景。 一、CSS3 过渡(T…...
【JAVA】【重试间隔】多线程中两种常见的重试间隔
一、前言 报!! 小南啊,今日有个小任务交给你去办。就是程序中有个数据处理,总是会出错,不知道是什么原因,你去处理一下! 二、主题 围绕数据处理问题去看,从中发现,是因为…...
在现代Web应用中集成 PDF.js (pdfjs-dist 5.2 ESM): 通过 jsdelivr 实现动态加载与批注功能的思考
PDF 文档在现代 Web 应用中越来越常见,无论是作为文档预览、报告展示还是在线编辑的载体。Mozilla 的 PDF.js 是一个功能强大的 JavaScript 库,它使得在浏览器端渲染和显示 PDF 文件成为可能,无需依赖原生插件。 本文将深入探讨如何在你的项…...
android ViewModel liveData无法监听之多线程下activityViewModels不安全
我们一般的,会遇到liveData无法监听到结果,可能存在主要2种可能: liveData没有正确注册;liveData连续多次设置值,中间的值,会被丢弃,但最后一次是能监听到的。 但是我们容易忽略一种case&…...
【即插即用涨点模块】DSConv动态蛇形卷积:自适应聚焦细长弯曲的局部结构特征,助力分割高效提点【附源码+注释】
《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...
守护数字家园:个人博客安全防护指南
前言 在之前的文章《WordPress个人博客搭建(一)》《WordPress个人博客搭建(二)》《WordPress个人博客搭建(三)》中,我们已经在非凡云云服务器上,借助1Panel搭建起属于自己的数字庭院…...