Java常用正则表达式及使用方法
在 Java 中,Pattern
和 Matcher
类是 java.util.regex
包的核心,用于处理正则表达式。
Pattern
类
Pattern
类表示编译后的正则表达式,它提供了一种将正则表达式字符串编译成可执行对象的方式,以便后续用于匹配操作。
常用方法
compile(String regex)
:这是一个静态方法,用于将给定的正则表达式字符串编译为Pattern
对象。matcher(CharSequence input)
:创建一个Matcher
对象,该对象将使用编译好的正则表达式对指定的输入字符串进行匹配操作。split(CharSequence input)
:根据正则表达式将输入的字符串分割成字符串数组。
示例代码
import java.util.regex.Pattern;public class PatternExample {public static void main(String[] args) {// 编译正则表达式Pattern pattern = Pattern.compile("\\d+");// 使用 split 方法分割字符串String input = "abc123def456ghi";String[] parts = pattern.split(input);for (String part : parts) {System.out.println(part);}}
}
在上述代码中,首先使用 Pattern.compile("\\d+")
编译了一个匹配一个或多个数字的正则表达式。然后使用 split
方法将输入字符串按照数字进行分割,最后打印分割后的结果。
Matcher
类
Matcher
类用于对输入字符串执行匹配操作,它提供了多种方法来查找、替换和提取匹配的子字符串。
常用方法
find()
:尝试在输入字符串中查找下一个匹配的子字符串,如果找到则返回true
,否则返回false
。matches()
:尝试将整个输入字符串与正则表达式进行匹配,如果完全匹配则返回true
,否则返回false
。group()
:返回上一次匹配操作所匹配的子字符串。replaceAll(String replacement)
:将输入字符串中所有匹配的子字符串替换为指定的字符串。
示例代码
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class MatcherExample {public static void main(String[] args) {// 编译正则表达式Pattern pattern = Pattern.compile("\\d+");// 创建 Matcher 对象Matcher matcher = pattern.matcher("abc123def456ghi");// 使用 find 方法查找匹配的子字符串while (matcher.find()) {System.out.println("找到匹配项: " + matcher.group());}// 使用 replaceAll 方法替换匹配的子字符串String result = matcher.replaceAll("X");System.out.println("替换后的字符串: " + result);}
}
在上述代码中,首先编译了一个匹配一个或多个数字的正则表达式,并创建了一个 Matcher
对象。然后使用 find
方法在输入字符串中查找所有匹配的数字,并打印出来。最后使用 replaceAll
方法将所有匹配的数字替换为字符 X
,并打印替换后的字符串。
相关网站
- 正则表达式在线测试工具:Regex101,可以在线测试和调试正则表达式,同时支持多种编程语言的语法。
正则表达式
正则表达式是用于匹配、查找和替换文本模式的强大工具,在许多编程语言和文本处理工具中都有广泛应用。以下是一些常用的正则表达式及其用途:
1. 匹配数字
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class DigitMatching {public static void main(String[] args) {String input = "abc123";// 匹配单个数字Pattern singleDigitPattern = Pattern.compile("\\d");Matcher singleDigitMatcher = singleDigitPattern.matcher(input);while (singleDigitMatcher.find()) {System.out.println("单个数字匹配结果: " + singleDigitMatcher.group());}// 匹配多个数字Pattern multipleDigitPattern = Pattern.compile("\\d+");Matcher multipleDigitMatcher = multipleDigitPattern.matcher(input);while (multipleDigitMatcher.find()) {System.out.println("多个数字匹配结果: " + multipleDigitMatcher.group());}}
}
2. 匹配字母
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class LetterMatching {public static void main(String[] args) {String input = "ABCabc";// 匹配单个小写字母Pattern lowerCasePattern = Pattern.compile("[a-z]");Matcher lowerCaseMatcher = lowerCasePattern.matcher(input);while (lowerCaseMatcher.find()) {System.out.println("单个小写字母匹配结果: " + lowerCaseMatcher.group());}// 匹配单个大写字母Pattern upperCasePattern = Pattern.compile("[A-Z]");Matcher upperCaseMatcher = upperCasePattern.matcher(input);while (upperTypeCaseMatcher.find()) {System.out.println("单个大写字母匹配结果: " + upperCaseMatcher.group());}// 匹配单个字母(不区分大小写)Pattern anyCasePattern = Pattern.compile("[a-zA-Z]");Matcher anyCaseMatcher = anyCasePattern.matcher(input);while (anyCaseMatcher.find()) {System.out.println("单个字母(不区分大小写)匹配结果: " + anyCaseMatcher.group());}}
}
3. 匹配字母和数字
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class AlphanumericMatching {public static void main(String[] args) {String input = "abc123@#$";// 匹配单个字母或数字Pattern singleAlphanumericPattern = Pattern.compile("[a-zA-Z0-9]");Matcher singleAlphanumericMatcher = singleAlphanumericPattern.matcher(input);while (singleAlphanumericMatcher.find()) {System.out.println("单个字母或数字匹配结果: " + singleAlphanumericMatcher.group());}// 匹配多个字母或数字Pattern multipleAlphanumericPattern = Pattern.compile("[a-zA-Z0-9]+");Matcher multipleAlphanumericMatcher = multipleAlphanumericPattern.matcher(input);while (multipleAlphanumericMatcher.find()) {System.out.println("多个字母或数字匹配结果: " + multipleAlphanumericMatcher.group());}}
}
4. 匹配空白字符
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class WhitespaceMatching {public static void main(String[] args) {String input = "abc 123";// 匹配单个空白字符Pattern singleWhitespacePattern = Pattern.compile("\\s");Matcher singleWhitespaceMatcher = singleWhitespacePattern.matcher(input);while (singleWhitespaceMatcher.find()) {System.out.println("单个空白字符匹配结果: " + singleWhitespaceMatcher.group());}// 匹配多个空白字符Pattern multipleWhitespacePattern = Pattern.compile("\\s+");Matcher multipleWhitespaceMatcher = multipleWhitespacePattern.matcher(input);while (multipleWhitespaceMatcher.find()) {System.out.println("多个空白字符匹配结果: " + multipleWhitespaceMatcher.group());}}
}
5. 匹配邮箱地址
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class EmailMatching {public static void main(String[] args) {String email = "test@example.com";String patternStr = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$";Pattern pattern = Pattern.compile(patternStr);Matcher matcher = pattern.matcher(email);if (matcher.matches()) {System.out.println("有效邮箱地址");} else {System.out.println("无效邮箱地址");}}
}
6. 匹配手机号码
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class PhoneNumberMatching {public static void main(String[] args) {String phone = "13800138000";String patternStr = "^1[3-9]\\d{9}$";Pattern pattern = Pattern.compile(patternStr);Matcher matcher = pattern.matcher(phone);if (matcher.matches()) {System.out.println("有效手机号码");} else {System.out.println("无效手机号码");}}
}
关于匹配邮箱详解:
"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$";符号的含义
1. 定界符
^
:表示匹配字符串的开始位置。在该正则表达式中,它确保匹配是从字符串的起始处开始的,即邮箱地址的起始部分必须符合后续的规则。$
:表示匹配字符串的结束位置。意味着整个字符串必须完全匹配正则表达式所定义的模式,直到字符串结束。结合^
和$
使用,能保证整个字符串是一个完整的邮箱地址,而不是包含在其他文本中的部分邮箱地址。
2. 用户名部分:[a-zA-Z0-9._%+-]+
[a-zA-Z0-9._%+-]
:这是一个字符类,它定义了一组允许的字符。a-zA-Z
:表示所有的大小写英文字母,即A
到Z
和a
到z
。0-9
:表示所有的数字,即0
到9
。.
、_
、%
、+
、-
:这些是特定的符号,在邮箱用户名中是允许出现的。
+
:是一个量词,表示前面的字符类(即[a-zA-Z0-9._%+-]
)必须出现一次或多次。也就是说,邮箱用户名至少要有一个字符,并且只能由上述定义的字符组成。
3. @
:
这是邮箱地址中用于分隔用户名和域名的固定符号,在正则表达式中直接使用该字符来匹配实际邮箱地址中的 @
符号。
4. 域名部分:[a-zA-Z0-9.-]+
[a-zA-Z0-9.-]
:同样是一个字符类,允许的字符包括大小写英文字母、数字、点号.
和连字符-
。在域名中,这些字符是常见的组成部分。+
:表示前面的字符类必须出现一次或多次,即域名部分至少要有一个字符,且由上述定义的字符组成。
5. \\.
:
- 点号
.
在正则表达式中有特殊含义,表示匹配任意单个字符。为了匹配实际的点号(即邮箱地址中的域名分隔符),需要使用反斜杠\
进行转义。由于在 Java 字符串中,反斜杠本身也需要转义,所以写成\\.
。
6. 顶级域名部分:[a-zA-Z]{2,}
[a-zA-Z]
:表示所有的大小写英文字母。{2,}
:是一个量词,表示前面的字符类(即[a-zA-Z]
)必须出现至少 2 次。这是因为常见的顶级域名(如.com
、.org
、.cn
等)通常至少由两个字母组成。
相关文章:
Java常用正则表达式及使用方法
在 Java 中,Pattern 和 Matcher 类是 java.util.regex 包的核心,用于处理正则表达式。 Pattern 类 Pattern 类表示编译后的正则表达式,它提供了一种将正则表达式字符串编译成可执行对象的方式,以便后续用于匹配操作。 常用方法…...
新零售行业时代:如何用科技驱动传统零售的转型升级
新零售行业时代:如何用科技驱动传统零售的转型升级 “在变化的世界中,唯一不变的是变化本身。” 一、传统零售的困局:当“生存”成为一场鏖战 街角的便利店老板老王,每天凌晨4点起床进货,却在月…...
DeepSeek和Excel结合生成动态图表
文章目录 一、前言二、3D柱状图案例2.1、pyecharts可视化官网2.2、Bar3d-Bar3d_puch_card2.3、Deepseek2.4、WPS2.5、动态调整数据 一、前言 最近在找一些比较炫酷的动态图表,用于日常汇报,于是找到了 DeepseekExcel王牌组合,其等同于动态图…...
大模型学习笔记------Llama 3模型架构之分组查询注意力(GQA)
大模型学习笔记------Llama 3模型架构之分组查询注意力(GQA) 1、分组查询注意力(GQA)的动机2、 多头注意力(Multi-Head Attention, MHA)3、 多查询注意力 (Multi-Query Attention,MQA)4、 分组查…...
WordPress 只能访问html文件,不能访问php
部署WordPress 遇到的问题 说来惭愧,尝试了多次流程,输入ip能够访问到配置路径下面的html文件,但就是无法访问php文件,查来查去,最后在AI工具的逐一梳理下,是PHP-FPM配置下面出的问题,默认账号…...
Python 之 pyecharts 使用
要说绘制动态图表,echarts 肯定是有一席之地的,特别是像 flask 这种轻量级的 web 框架,在 html 中动态嵌入生成 echarts 无疑是很优的选择。pyecharts 简单来说就是以 python 的方式来生成对应的 echarts 图表。 安装 pip install pyechart…...
【第九章 Python学习之函数Ⅱ】
【2025】Python最新最完整教程,零基础看这一个就够了 第九章 Python学习之函数Ⅱ 文章目录 【2025】Python最新最完整教程,零基础看这一个就够了前言一、说两句二、定义函数函数定义规则函数的参数参数的类型及用途1. 必需参数(位置参数)2. 关键字参数3. 默认参数4. 可变参…...
传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。此 RPC 请求中提供了过多的参数。最多应为 2100。
### Error updating database. Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。此 RPC 请求中提供了过多的参数。最多应为 2100。 这是因为集合数据量过大,需要对集合进行拆分操作࿰…...
IDEA热加载
翻译:"你运行的应用程序 BfApplication 启动之后,它的一些类文件(通常是你修改过的 .java 文件被重新编译了)发生了变化。你想现在就重新加载这些更改过的类吗?" 解释: 热重载: 这是一种开发时非常有用的技术。当你…...
常用第三方库:dio网络库使用与封装
常用第三方库:dio网络库使用与封装 前言 dio是Flutter生态中最受欢迎的网络请求库之一,它提供了强大的功能和灵活的配置选项。本文将从实战角度深入介绍dio的使用技巧和最佳实践。 基础知识 1. dio简介 dio是一个强大的Dart Http请求库,…...
解决IntelliJ IDEA配置文件(application.properties)中文注释变成乱码的问题
文章目录 1. 问题呈现2. 问题产生的原因3. 解决方法 更多 IntelliJ IDEA 的使用技巧可查看 IntelliJ IDEA 专栏中的文章:IntelliJ IDEA 1. 问题呈现 在 IntelliJ IDEA 中打开配置文件(application.properties)时,文件中的中文注…...
linux基础14--dns和web+dns
DNS:域名系统(Domain Name System) DNS协议是用来将域名转换为IP地址或将IP地址转换为相应的域名 DNS使用TCP和UDP端口53,给用户提供解析时一般使用UDP53 对于每一级域名长度的限制是63个字符,域名总长度则不能超过2…...
Java 静态内部类面试题与高质量答案合集
本文整理了关于 Java 静态内部类(Static Nested Class)在面试中的高频问题及标准答案,帮助你理解其底层原理、内存表现以及实际应用。 1. 什么是静态内部类?和普通内部类有什么区别? 答: 静态内部类是定义…...
React.cloneElement的用法详解
React.cloneElement的用法详解 React.cloneElement 是 React 提供的一个 API,用于克隆现有的 React 元素,并在克隆的基础上添加或覆盖属性,同时保留原有的子元素。 语法 React.cloneElement(element: ReactElement, props?: Partial<P…...
【数学建模】孤立森林算法:异常检测的高效利器
孤立森林算法:异常检测的高效利器 文章目录 孤立森林算法:异常检测的高效利器1 引言2 孤立森林算法原理2.1 核心思想2.2 算法流程步骤一:构建孤立树(iTree)步骤二:构建孤立森林(iForest)步骤三:计算异常分数 3 代码实现…...
3.1 WPF使用MaterialDesign的介绍1
MaterialDesignInXAML Toolkit 是一个流行的开源 C# WPF 控件库,它实现了 Google 的 Material Design 规范,让开发者可以轻松创建现代化的 WPF 应用程序界面 Material Design 是一个流行的设计语言,由 Google 开发,旨在帮助开发者构建美观且一致的 UI 界面。对于使用 C# 的…...
多路转接select服务器
目录 select函数原型 select服务器 select的缺点 前面介绍过多路转接就是能同时等待多个文件描述符,这篇文章介绍一下多路转接方案中的select的使用 select函数原型 #include <sys/select.h> int select(int nfds, fd_set *readfds, fd_set *writefds, f…...
【算法】BFS-解决FloodFill问题
目录 FloodFill问题 图像渲染 岛屿数量 岛屿的最大面积 被围绕的区域 FloodFill问题 FloodFill就是洪水灌溉的意思,假设有下面的一块田地,负数代表是凹地,正数代表是凸地,数字的大小表示凹或者凸的程度。现在下一场大雨&…...
二叉树层序遍历技术解析与面试指南
文章目录 一、二叉树层序遍历技术解析1. 问题描述2. 层序遍历核心思想3. Java实现代码(带详细注释)4. 算法关键点解析5. 复杂度分析 二、资深后端面试深度指南1. 高频面试问题集Q1: 如何实现Z字形层序遍历(锯齿形遍历)?…...
软考软件设计师考试情况与大纲概述
文章目录 **一、考试科目与形式****二、考试大纲与核心知识点****科目1:计算机与软件工程知识****科目2:软件设计** **三、备考建议****四、参考资料** 这是一个系列文章的开篇 本文对2025年软考软件设计师考试的大纲及核心内容进行了整理,并…...
一款丰富的工作流自动化平台 | N8N 83.6K ⭐
N8N 介绍 N8N 是一个工作流自动化平台,为技术团队提供代码的灵活性和无代码的速度。n8n 具有 400 集成、原生 AI 功能和公平代码许可证,可让您构建强大的自动化功能,同时保持对数据和部署的完全控制。 🚢 项目地址 Github: https…...
Apache PDFBox
Apache PDFBox 是一个用于处理 PDF 文档的开源 Java 库,由 Apache 软件基金会开发和维护。它提供了丰富的功能,允许开发者在 Java 应用程序中创建、读取、修改和提取 PDF 文件中的信息。以下是关于 PDFBox 的详细介绍: 主要功能 创建 PDF 文…...
如何批量为多个 Word 文档添加水印保护
在日常办公中,Word文档添加水印是一项重要的操作,特别是在需要保护文件内容的安全性和版权时。虽然Office自带了添加水印的功能,但当需要一次性给多个Word文档添加水印时,手动操作显得非常繁琐且低效。为了提高效率,可…...
【MySQL】005.MySQL表的约束(上)
文章目录 表的约束1. 约束概念2. 空属性2.1 基本语法2.2 使用示例 3. 默认值3.1 基本概念3.2 使用示例 4. 列描述4.1 基本概念4.2 使用示例 5. zerofill5.1 基本功能5.2 使用示例5.3 注意事项 6. 主键6.1 基本概念6.2 使用示例 表的约束 1. 约束概念 真正约束字段的是数据类型…...
力扣刷题Day 27:环形链表(141)
1.题目描述 2.思路 创建一个结点集合,遍历链表,如果遇到已经加进集合的结点就说明链表有环。 3.代码(Python3) class Solution:def hasCycle(self, head: Optional[ListNode]) -> bool:node headnode_set set()while node…...
window上 elasticsearch v9.0 与 jmeter5.6.3版本 冲突,造成es 启动失败
[2025-04-22T11:00:22,508][ERROR][o.e.b.Elasticsearch ] [AIRUY] fatal exception while booting Elasticsearchjava.nio.file.NoSuchFileException: D:\Program Files\apache-jmeter-5.6.3\lib\logkit-2.0.jar 解决方案: 降低 es安装版本 ,选择…...
PDF转换Word深度评测 - ComPDFKit Conversion SDK V3.0
ComPDFKit PDF 转换 SDK 在V3.0 中有以下几个新功能: 使用百万级文档训练数据集对 PPYoloE AI 模型进行微调 全场景布局分析算法及下一代表格识别算法 重构数据结构、转换流程、PDF解析和输出模块 混合布局:将流式布局与固定布局相结合,以保持原始布局…...
Laravel 对接阿里云 OSS 说明文档
Laravel 对接阿里云 OSS 说明文档 一、 简介 将 Laravel 应用与阿里云对象存储服务 (OSS) 对接,可以利用 OSS 提供的高可用、高可靠、可扩展的存储能力来管理应用中的文件,例如用户上传的图片、视频、文档等。这有助于减轻应用服务器的存储压力&#x…...
嘻游电玩三端客户端部署实战:PC + Android + iOS 环境全覆盖教程
本篇文章将针对“网狐系列嘻游电玩组件”的三端客户端(PC端、安卓端、iOS端)进行详细部署实操讲解。文章将以实测部署为核心,提供资源结构说明、平台适配调整、打包配置、常见问题修复,并辅以必要的关键配置代码。 一、客户端资源…...
mockMvc构建web单元测试学习笔记
web应用本来需要依靠tomcat这个环境运行 现在用mockMvc是为了模拟这个web环境,简化测试 什么是mock(模拟) 模拟对象---mock object是以可控方式模拟真实对象行为的假对象,通过模拟输入数据,验证程序达到预期结果 为什么使用mock对象 因为…...
ffmpeg av_buffer_unref的逻辑实现; av_freep 和 av_freep函数的区别
av_buffer_unref 是 FFmpeg 中用于管理引用计数和内存释放的核心函数,其内部实现机制如下: 一、核心流程 引用计数递减 函数首先对 AVBufferRef 的 buffer->refcount 进行原子递减操作(通过 atomic_fetch_add_explicit 等机制保证…...
Flutter IOS 真机 Widget 错误。Widget 安装后系统中没有
错误信息: SendProcessControlEvent:toPid: encountered an error: Error Domaincom.apple.dt.deviceprocesscontrolservice Code8 "Failed to show Widget com.xxx.xxx.ServerStatus error: Error DomainFBSOpenApplicationServiceErrorDomain Code1 "T…...
Jenkins plugin 的用法和示例
今天介绍一下比较常见的Jenkins plugin 的使用方法 1. 通过AWS s3 upload 插件上传文件到AWS S3 存储桶 前提条件: 安装AWS pipeline step插件在Jenkins 中创建credentials,包含access_key_id和secret_key_id创建S3 存储桶 脚本: pipeli…...
利用java语言,怎样开发和利用各种开源库和内部/自定义框架,实现“提取-转换-加载”(ETL)流程的自动化
一、ETL 架构设计的核心要素 在企业级数据处理场景中,ETL(Extract-Transform-Load)流程自动化是数据仓库、数据湖建设的核心环节。基于 Java 生态的技术栈,我们可以构建分层解耦的 ETL 架构,主要包含以下四层结构&am…...
人工智能在PET-CT中的应用方向探析
人工智能(AI)在正电子发射断层扫描-计算机断层扫描(PET-CT)中的应用正逐步改变医学影像诊断的格局,其核心价值体现在提升诊断效率、优化成像质量、促进精准医疗等方面。近年来,随着深度学习、计算机视觉以及多模态数据融合技术的迅猛发展,AI技术在PET-CT全流程中的渗透愈…...
pod 创建私有库指南
步骤 参考:iOS Pod 私有库创建指南-百度开发者中心 下面主要是对参考链接里面的解释: 创建两个仓库: 一个叫podframe.git,用来存放自定义的framework,比如TestPodFrame.framework一个叫podspec.git,用来…...
操作系统之shell实现(下)
🌟 各位看官好,我是maomi_9526! 🌍 种一棵树最好是十年前,其次是现在! 🚀 今天来学习C语言的相关知识。 👍 如果觉得这篇文章有帮助,欢迎您一键三连,分享给更…...
【设计模式】深入解析代理模式(委托模式):代理模式思想、静态模式和动态模式定义与区别、静态代理模式代码实现
代理模式 代理模式,也叫委托模式。 Spring AOP 是基于动态代理来实现 AOP 的 定义 为其他对象提供一种代理 以控制对这个对象的访问。它的作用就是通过提供一个代理类,让我们在调用目标方法的时候,不再是直接对目标方法进行调用,而…...
Element Plus表格组件深度解析:构建高性能企业级数据视图
一、架构设计与核心能力 Element Plus的表格组件(el-table)基于Vue 3的响应式系统构建,通过声明式配置实现复杂数据渲染。其核心设计理念体现在三个层级: 数据驱动:通过data属性绑定数据源,支持动态更新与…...
Mongodb分布式文件存储数据库
文章目录 一、MongoDB 简介基本信息特点内部组件 二、MongoDB 部署1. 安装依赖2. 解压部署并配置环境变量3. 修改配置文件以及启动服务4.数据库权限管理 三、MongoDB 管理1. 角色权限2. 操作命令用户管理命令常用命令(Mongo4.2.8)数据库相关用户相关集合…...
UML 通信图对象协作:共享汽车系统交互脉络
目录 一、通信图的定义与特点 二、通信图的构成要素 三、通信图的优势 四、通信图的实践应用 五、以共享汽车系统通信图为例 (一)参与者及交互起点 (二)预订环节交互 (三)支付流程交互 ࿰…...
安宝特分享|AR智能装备赋能企业效率跃升
AR装备开启智能培训新时代 在智能制造与数字化转型浪潮下,传统培训体系正面临深度重构。安宝特基于工业级AR智能终端打造的培训系统,可助力企业构建智慧培训新生态。 AR技术在不同领域的助力 01远程指导方面 相较于传统视频教学的单向输出模式&#x…...
中间系统-基础
OSI七层模型,TCP/IP四层模型。 在OSI模型中我们将具有报文转发的网络节点叫做IS,即中间系统的意思,类似于TCP/IP模型中的路由器。 在OSI模型中我们将没有路由能力或者转发能力的设备叫做ES,即端系统的意思,类似于TCP/I…...
【Linux】用户权限
shell命令 1. Linux本质上是一个操作系统,但是一般的用户不能直接使用它,而是需要通过外壳程序shell,来与Linux内核进行沟通。 2. shell的简单定义:命令行解释器。主要包含以下作用: 将使用者的命令翻译给核心处理。将…...
晶振详解:原理、作用、种类、应用与选型要点
一、晶振的基本定义 晶振(Crystal Oscillator) 是利用石英晶体的压电效应产生稳定频率的电子元件,其核心功能是为数字系统提供高精度时钟信号。 核心公式: 串联谐振频率(fs) 1 / (2π√(L1C1)) ÿ…...
【数字图像处理】立体视觉基础(2)
相机标定 【1】相机标定的概念 相机参数:相机成像的几何模型的参数 相机标定:求解参数的过程 【2】相机标定的作用 (1)求出相机的内、外参数,以及畸变参数 (2)校正镜头畸变影响,…...
智能座舱测试内容与步骤
智能座舱的测试步骤通常包括以下环节: 1.测试环境搭建与准备 • 硬件需求分析:准备测试车辆、服务器与工作站、网络设备以及传感器和执行器模拟器等硬件设备。 • 软件需求分析:选择测试管理软件、自动化测试工具、模拟软件和开发调试工具等。…...
每日算法-250422
每日算法 - 250422 1561. 你可以获得的最大硬币数目 题目 思路 贪心 解题过程 根据题意,我们想要获得最大的硬币数目。每次选择时,有三堆硬币:最大的一堆会被 Alice 拿走,最小的一堆会被 Bob 拿走,剩下的一堆…...
XSS的应用
免责声明,本博客只是用来自身学习记录,不要运用里面的代码去进行违法犯罪行为。 XSS 首先需要知道的是xss误区,就是在不确定是否有XSS的情况下,不应该是直接上攻击payload,例如<script>alert(123)</script&…...
FastAPI WebSocket 聊天应用详细教程
项目简介 这是一个基于 FastAPI 和 WebSocket 实现的实时聊天应用,支持一对一聊天、离线消息存储等功能。 技术栈 后端:FastAPI (Python)前端:HTML、JavaScript、CSS通信:WebSocket认证:简单的 token 认证 项目结构…...