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

Java基础-正则表达式

文章目录

    • 1.基本介绍
    • 2.正则底层实现
        • 1.matcher.find()完成的任务
        • 2.matcher.group(0)分析
          • 1.源代码
          • 2.解释(不分组)
          • 3.解释(分组)
        • 3.总结
    • 3.正则表达式语法
        • 1.基本介绍
        • 2.元字符的转义符号
          • 1.基本介绍
          • 2.代码实例
        • 3.字符匹配符
          • 1.基本介绍
          • 2.字符匹配案例一
          • 3.字符匹配案例二
        • 4.选择匹配符
          • 1.基本介绍
          • 2.代码实例
        • 5.正则限定符
          • 1.基本介绍
          • 2.代码实例
        • 6.正则定位符
          • 1.基本介绍
          • 2.代码实例
        • 7.捕获分组
          • 1.基本介绍
          • 2.代码实例
        • 8.非捕获分组
          • 1.基本介绍
          • 2.代码实例
        • 9.非贪婪匹配
          • 代码实例
    • 4.正则应用实例
        • 1.题目
          • 代码
        • 2.验证复杂URL
        • 3.注意事项
    • 5.正则表达式三个常用类
        • 1.Pattern类
          • 整体匹配
          • 代码实例
        • 2.Matcher类
          • 代码实例
    • 6.反向引用
        • 1.基本介绍
        • 2.反向引用案例
          • 案例一
          • 代码实例
          • 案例二——结巴去重
          • 代码实例
    • 7.String类型使用正则表达式替换
        • 题目一(replaceAll)
        • 题目二(matches)
        • 题目三(split)
          • 按照#、-、~或者数字来分割
    • 8.本章练习
        • 练习一
        • 练习二
        • 练习三
    • 9.正则表达式大全

1.基本介绍

image-20240120185017604

2.正则底层实现

1.matcher.find()完成的任务
  1. 根据特定的规则,找到满足要求的字符串
  2. 找到后将索引放到mather对象的属性int[] groups;
  3. 字符串的第一个字符的索引放到groups[0],最后一个字符的索引加一放到groups[1]
2.matcher.group(0)分析
1.源代码

image-20240120192748099

2.解释(不分组)
  1. 前面的都是做的验证,直接看最后一句话
  2. 传进的参数是0,所以返回的是groups[0 * 2]groups[0 * 2 + 1]也就是截取索引为groups[0]groups[1]的内容并转换成String类型
  3. 总结一下,group[0]就是返回截取到的整个字符串
3.解释(分组)
  1. String regStr = "(\\d\\d)(\\d\\d)";
  2. 上面的这种情况就是分组的情况
  3. 此时groups数组记录的情况看下图image-20240120192259354
  4. 总结一下,在分组的情况下,group[x]对应groups[y]的下标
    1. x = 0 : y = 0, 1
    2. x = 1 : y = 2, 3
    3. x = 2 : y = 4, 5
    4. 以此类推
3.总结
  1. matcher.find()就是查找匹配到的字符串
  2. group(0)就是返回整个查找到的字符串,group(1)、(2)…就是返回第一组、第二组…匹配的字符串

3.正则表达式语法

1.基本介绍

image-20240120195118911

2.元字符的转义符号
1.基本介绍

image-20240120195649048

image-20240120200757289

2.代码实例
package regexp;import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** @author 孙显圣* @version 1.0*/
public class RegExp02 {public static void main(String[] args) {//内容String content = "abc$(abc(123(";//要匹配的样式String regStr = "\\("; //转义符\\//1.传入匹配的样式,创建模式对象Pattern compile = Pattern.compile(regStr);//2.传入要匹配的内容,创建匹配器对象Matcher matcher = compile.matcher(content);//3.开始匹配while (matcher.find()) {System.out.println("匹配到:" + matcher.group(0));}}
}
3.字符匹配符
1.基本介绍

image-20240120201158697

image-20240120201242068

2.字符匹配案例一

image-20240121091506517

package regexp;import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** @author 孙显圣* @version 1.0*/
public class RegExp03 {public static void main(String[] args) {String content = "a11c8aBC";
//        String regStr = "[a-z]"; //a到z
//        String regStr = "[A-Z]"; //A到Z
//        String regStr = "(?i)abc"; //匹配abc字符串不区分大小写
//        String regStr = "a((?i)bc)"; //匹配bc不区分大小写
//                String regStr = "abc";String regStr = "[^a-z]{2}"; //匹配非a到z的两个字符Pattern compile = Pattern.compile(regStr); //模式对象
//        Pattern compile = Pattern.compile(regStr, Pattern.CASE_INSENSITIVE); //匹配时不区分大小写Matcher matcher = compile.matcher(content);while (matcher.find()) {System.out.println("找到:" + matcher.group(0));}}
}
3.字符匹配案例二

image-20240121091538807

package regexp;import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** @author 孙显圣* @version 1.0*/
public class RegExp04 {public static void main(String[] args) {String content = "asdg";String regStr = "[abcd]"; //abcd任意一个字符String regStr1 = "[^abcd]"; //除了abcdString regStr2  = "[\\d]"; //任意数字String regStr3 = "[\\D]"; //任意非数字String regStr4 = "[\\w]"; //任意数字字母,下划线String regStr5 = "[\\W]"; //非数字字母,下划线String regStr6 = "[\\s]"; //匹配任意空白字符,空格制表符等String regStr7 = "[\\S]"; //匹配任意非空白字符String regStr8 = "[.]"; //匹配除了\n以外的任何字符,如果要匹配.则需要加\\//模式对象Pattern compile = Pattern.compile(regStr);//匹配对象Matcher matcher = compile.matcher(content);//开始匹配while (matcher.find()) {System.out.println("匹配到:" + matcher.group(0));}}
}
4.选择匹配符
1.基本介绍

image-20240121092601766

2.代码实例
package regexp;import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** @author 孙显圣* @version 1.0*/
public class RegExp05 {public static void main(String[] args) {String content = "hanshunping 韩顺平";String regStr = "han|韩"; //匹配到han或韩Pattern compile = Pattern.compile(regStr);Matcher matcher = compile.matcher(content);while (matcher.find()) {System.out.println("匹配到:" + matcher.group(0));}}
}
5.正则限定符
1.基本介绍

image-20240121093136953

image-20240121093316964

2.代码实例
package regexp;/*** @author 孙显圣* @version 1.0*/
public class RegExp06 {public static void main(String[] args) {String content = "aaaaaaa11111";String regStr = "a{3}"; //匹配三个aString regStr1 = "1{4}"; //匹配四个1String regStr2 = "(\\d){2}"; //匹配两个数字String regStr3 = "a{3, 4}"; //匹配三到四个a//java默认贪婪匹配,默认匹配多的String regStr4 = "1{4, 5}"; //匹配四到五个1String regStr5 = "\\d{2, 5}"; //匹配二到五个数字String regStr6 = "1+"; //匹配一个或多个1String regStr7 = "a*"; //匹配任意个aString regStr8 = "1?"; //匹配0个或一个1}
}
6.正则定位符
1.基本介绍

image-20240121094557124

2.代码实例
package regexp;/*** @author 孙显圣* @version 1.0*/
public class RegExp07 {public static void main(String[] args) {String str1 = "^[0-9]+[a-z]*"; //至少一个数字开头,任意个小写字母结尾String str2 = "^[0-9]\\-[a-z]+$"; //以一个数字开头后接一个“-”以至少一个小写字母结尾String str3 = "han\\b"; //匹配han的后边界,即han后面没东西,或者是空格String str5 = "han\\B"; //匹配han的前边界,即han前面没东西,或者是空格}
}
7.捕获分组
1.基本介绍

image-20240121100556620

2.代码实例
package regexp;import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** @author 孙显圣* @version 1.0*/
public class RegExp08 {public static void main(String[] args) {String content = "hanshunping s7789 nn1189han";String regStr = "(\\d\\d)(\\d\\d)"; //非命名分组String regStr1 = "(?<g1>\\d\\d)(?<g2>\\d\\d)"; //非命名分组//模式对象Pattern compile = Pattern.compile(regStr1);//匹配对象Matcher matcher = compile.matcher(content);while (matcher.find()) {
//            System.out.println(matcher.group(1)); //分组一
//            System.out.println(matcher.group(2)); //分组二//命名分组,可以使用编号或者名字System.out.println(matcher.group("g1")); //分组一System.out.println(matcher.group("g2")); //分组二}}
}
8.非捕获分组
1.基本介绍

image-20240121101406993

2.代码实例
package regexp;import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** @author 孙显圣* @version 1.0* 非捕获分组*/
public class RegExp09 {public static void main(String[] args) {String content = "hello韩顺平教育 jack韩顺平老师 韩顺平同学hello";//        String regStr = "韩顺平(?:教育|老师|同学)"; //匹配韩顺平教育韩顺平老师韩顺平同学
//        String regStr = "韩顺平(?=教育|老师|同学)"; //匹配韩顺平后面有教育|老师|同学的韩顺平,也就是三个String regStr = "韩顺平(?!教育|老师)"; //匹配韩顺平后面没有教育|老师的韩顺平,也就是只有一个Pattern compile = Pattern.compile(regStr);Matcher matcher = compile.matcher(content);while (matcher.find()) {System.out.println(matcher.group(0));}}
}
9.非贪婪匹配
代码实例
package regexp;import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** @author 孙显圣* @version 1.0*/
public class RegExp10 {public static void main(String[] args) {String content = "hello111111";String regStr ="\\d+?";//在限定符后面加?表示非贪婪匹配,这里每次就匹配一个1Pattern compile = Pattern.compile(regStr);Matcher matcher = compile.matcher(content);while (matcher.find()) {System.out.println(matcher.group(0));}}
}

4.正则应用实例

1.题目

image-20240121102950135

代码
package regexp;import org.junit.jupiter.api.Test;import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** @author 孙显圣* @version 1.0*/
public class RegExercise {//汉字public static void main(String[] args) {String content1 = "史蒂夫";String regStr1 = "^[\u3091-\uffe5]+$"; //匹配至少一个汉字,并规定了开头结尾为空Pattern compile = Pattern.compile(regStr1);Matcher matcher = compile.matcher(content1);if (matcher.find()) {System.out.println("匹配成功");}else {System.out.println("匹配失败");}}//邮政编码 1-9开头的一个六位数@Testpublic void find1() {String content1 = "123458";String regStr1 = "^[1-9]\\d{5}$"; //匹配1-9开头的一个六位数Pattern compile = Pattern.compile(regStr1);Matcher matcher = compile.matcher(content1);if (matcher.find()) {System.out.println("匹配成功");}else {System.out.println("匹配失败");}}//qq号码 1-9开头的一个(5位到10位数)@Testpublic void find2() {String content1 = "1721469477";String regStr1 = "^[1-9]\\d{4,9}$"; //匹配1-9开头的一个六位数Pattern compile = Pattern.compile(regStr1);Matcher matcher = compile.matcher(content1);if (matcher.find()) {System.out.println("匹配成功");}else {System.out.println("匹配失败");}}//手机号码 13,14,15,18开头的11位数@Testpublic void find3() {String content1 = "13604959178";String regStr1 = "^1(?:3|4|5|8)\\d{9}$"; //匹配1-9开头的一个六位数String regStr2 = "^1(3|4|5|8)\\d{9}$"; //匹配1-9开头的一个六位数Pattern compile = Pattern.compile(regStr2);Matcher matcher = compile.matcher(content1);if (matcher.find()) {System.out.println("匹配成功");}else {System.out.println("匹配失败");}}
}
2.验证复杂URL
package regexp;import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** @author 孙显圣* @version 1.0*/
public class RegUrl {public static void main(String[] args) {
//        String content = "https://www.bilibili.com/video/BV1fh411y7R8?p=894&vd_source=6ca8808c5ff14bd32a1acd1b4774a821";String content = "https://www.bilibili.com";String regStr = "^((http|https)://)([\\w-]+\\.)+[\\w-]+(\\/[\\w-?=&%.#]*)?$";//注意:在[.]指的是真的.Pattern compile = Pattern.compile(regStr);Matcher matcher = compile.matcher(content);if (matcher.find()) {System.out.println("匹配成功");}else {System.out.println("匹配失败");}}
}
3.注意事项

在使用常规方法验证的时候一定要加定位符^和$

5.正则表达式三个常用类

1.Pattern类
整体匹配

image-20240121134948084

代码实例
package regexp;import java.util.regex.Pattern;/*** @author 孙显圣* @version 1.0*/
public class RegExp11 {public static void main(String[] args) {//整体匹配,不需要添加定位符,直接匹配整体String content = "我是孙先生12321";String pattern = ".{5}\\d{5}";boolean matches = Pattern.matches(pattern, content);System.out.println(matches);}
}
2.Matcher类
代码实例
package regexp;import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** @author 孙显圣* @version 1.0*/
public class RegExp12 {public static void main(String[] args) {String content = "hello edu jack hello tom hspedu hspedu";String regStr = "hspedu";Pattern compile = Pattern.compile(regStr);Matcher matcher = compile.matcher(content);while (matcher.find()) {System.out.println("==================");//分别返回每次匹配到的起始索引和结束索引加一System.out.println(matcher.start());System.out.println(matcher.end());}//整体匹配方法System.out.println(matcher.matches());//把所有的hspedu替换成韩顺平教育,不是真的替换,因为String是不可变类型的,只能返回另一个String类型的对象String s = matcher.replaceAll("韩顺平教育");System.out.println(s);}
}

6.反向引用

1.基本介绍

image-20240121141412448

2.反向引用案例
案例一

image-20240121142003409

代码实例
package regexp;import org.junit.jupiter.api.Test;import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** @author 孙显圣* @version 1.0*/
public class RegExp13 {public static void main(String[] args) {String content = "1221 jack 5225 jack33 yyy xxx";String regStr = "(\\d)(\\d)\\2\\1"; //每次匹配过后数字都会被记录下来,在后面就可以引用Pattern compile = Pattern.compile(regStr);Matcher matcher = compile.matcher(content);while (matcher.find()) {System.out.println(matcher.group(0));}}//整体匹配检索编号 12321-333999111这样的号码@Testpublic void find1() {String content = "12321-333999111";String regStr = "\\d{5}-(\\d)\\1{2}(\\d)\\2{2}(\\d)\\3{2}";//获取模式对象Pattern compile = Pattern.compile(regStr);//获取匹配器Matcher matcher = compile.matcher(content);//整体匹配System.out.println(matcher.matches());}}
案例二——结巴去重

image-20240121143015380

代码实例
package regexp;import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** @author 孙显圣* @version 1.0*/
public class RegExp14 {public static void main(String[] args) {String content = "我...我我要....学学学学。。。编程java";String regStr = "(.)\\1+"; //匹配所有重复的字符Pattern compile = Pattern.compile(regStr); //获取模式Matcher matcher = compile.matcher(content); //获取匹配器//在外部反向引用使用$,去重String s = matcher.replaceAll("$1");System.out.println(s);}
}

7.String类型使用正则表达式替换

题目一(replaceAll)

image-20240121145023750

    public static void main(String[] args) {String content = "2000年5月,JDK1.3、JDK1.4和J2SE1.3相继发布,几周后其获得了Apple公司Mac OS X的工业标准的支持。2001年9月24日,J2EE1.3发布。2002年2月26日,J2SE1.4发布。自此Java的计算能力有了大幅提升,与J2SE1.3相比,其多了近62%的类和接口。在这些新特性当中,还提供了广泛的XML支持、安全套接字(Socket)支持(通过SSL与TLS协议)、全新的I/OAPI、正则表达式、日志与断言。2004年9月30日,J2SE1.5发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE 1.5更名为Java SE 5.0(内部版本号1.5.0),代号为“Tiger”,Tiger包含了从1996年发布1.0版本以来的最重大的更新,其中包括泛型支持、基本类型的自动装箱、改进的循环、枚举类型、格式化I/O及可变参数。";//使用正则表达式将jdk1.3和1.4替换成jdkString s = content.replaceAll("JDK1\\.3|JDK1\\.4", "JDK");System.out.println(s);}
题目二(matches)

image-20240121145835354

    public static void main(String[] args) {//验证这个手机号是否是138,139开头的String content = "13888889999";boolean matches = content.matches("^(138|139)\\d{8}");System.out.println(matches);}
题目三(split)
按照#、-、~或者数字来分割
package regexp;/*** @author 孙显圣* @version 1.0*/
public class Regexp15 {public static void main(String[] args) {String content = "hello#abc-jack12smith~北京";//按照指定符号分割String[] split = content.split("[#\\-~]");for (String s : split) {System.out.println(s);}}
}

8.本章练习

练习一

image-20240121150850628

package regexp;import java.util.regex.Pattern;/*** @author 孙显圣* @version 1.0*/
public class HomeWork01 {public static void main(String[] args) {String content = "1-721469477@qq.com";String regStr = "[\\w-]+@([a-zA-Z]+\\.)+[a-zA-Z]+";//整体匹配boolean matches = Pattern.matches(regStr, content);System.out.println(matches);}
}
练习二

image-20240121152315100

package regexp;/*** @author 孙显圣* @version 1.0*/
public class HomeWork02 {public static void main(String[] args) {String content1 = "1223";String content2 = "-1223";String content3 = "12.23";String content4 = "+1223";String content5 = "0.89";//匹配整数或小数String regStr = "[-+]?([1-9]\\d*|0)(\\.\\d+)?";boolean matches = content5.matches(regStr);System.out.println(matches);}
}
练习三

image-20240121155901112

package regexp;import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** @author 孙显圣* @version 1.0*/
public class HomeWorrk03 {public static void main(String[] args) {String url = "http://www.sohu.com:8080/abc/dfs/df/index.htm";//分组解析String regStr = "^([a-zA-Z]+)://([a-zA-Z.]+):(\\d+)[/\\w-]*/([a-zA-Z.]+)$";Pattern compile = Pattern.compile(regStr);Matcher matcher = compile.matcher(url);if (matcher.matches()) {System.out.println("协议:" + matcher.group(1));System.out.println("域名:" + matcher.group(2));System.out.println("端口:" + matcher.group(3));System.out.println("文件:" + matcher.group(4));}else {System.out.println("匹配失败");}}
}

9.正则表达式大全

java正则表达式大全(参考).zip

相关文章:

Java基础-正则表达式

文章目录 1.基本介绍2.正则底层实现1.matcher.find()完成的任务2.matcher.group(0)分析1.源代码2.解释&#xff08;不分组&#xff09;3.解释&#xff08;分组&#xff09; 3.总结 3.正则表达式语法1.基本介绍2.元字符的转义符号1.基本介绍2.代码实例 3.字符匹配符1.基本介绍2.…...

构建Pytorch虚拟环境教程

构建PyTorch虚拟环境通常涉及使用诸如Anaconda或venv等工具来管理Python环境&#xff0c;以便在一个独立的空间中安装PyTorch和其他依赖项。以下是使用Anaconda创建PyTorch虚拟环境的步骤&#xff08;适用于不同操作系统&#xff0c;包括Windows、Linux和MacOS&#xff09;&…...

uniapp页面嵌套其他页面的实现

功能: 类似于一个drawer&#xff0c;当主页面加载的时候会一并加载url对应的组件&#xff0c;当点击后以drawer形式显示组件里面的内容&#xff0c;可动画。 <navigator url"/pages/my/components/personalMessage" slot"right"><view><di…...

XUbuntu22.04之安装Plantuml(二百二十三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…...

第四周刷题小结

第一天 P1068 [NOIP2009 普及组] 分数线划定 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路&#xff1a; 这个题感觉不难&#xff0c;主要是用到了结构体cmp的自定义排序&#xff0c;但是还是错了一次&#xff0c;就是没注意到题目给的条件。 #include<iostream&g…...

基于Java中的SSM框架实现考研指导平台系统项目【项目源码+论文说明】

基于Java中的SSM框架实现考研指导平台系统演示 摘要 应对考研的学生&#xff0c;为了更好的使校园考研有一个更好的环境好好的学习&#xff0c;建议一个好的校园网站&#xff0c;是非常有必要的。提供学生的学习提供一个交流的空间。帮助同学们在学习高数、学习设计、学习统计…...

项目2-用户登录

1.创建项目 2.引入前端代码并检查是否有误 3.定义接口 需求分析 对于后端开发⼈员⽽⾔, 不涉及前端⻚⾯的展⽰, 只需要提供两个功能 1. 登录⻚⾯: 通过账号和密码, 校验输⼊的账号密码是否正确, 并告知前端 2. ⾸⻚: 告知前端当前登录⽤⼾. 如果当前已有⽤⼾登录, 返回登录的账…...

网易web安全工程师进阶版课程

课程介绍 《Web安全工程师&#xff08;进阶&#xff09;》是由“ i春秋学院联合网易安全部”出品&#xff0c;资深讲师团队通过精炼的教学内容、丰富的实际场景及综合项目实战&#xff0c;帮助学员纵向提升技能&#xff0c;横向拓宽视野&#xff0c;牢靠掌握Web安全工程师核心…...

【Postman】工具使用介绍

一、postman工具介绍 1.什么是postman postman是谷歌开发的一款网页调试和接口测试工具&#xff0c;能够发送任何请求类型的http请求&#xff0c;支持GET/POST/PUT/DELETE等方法。postman简单易用&#xff0c;可以直接填写URL&#xff0c;header&#xff0c;body就可以发送一…...

【vue核心技术实战精讲】1.3 - 1.6 VUE 指令 (上)

前言 上节,我们学习了 Vue的起步 和 插值表达式 本节内容 Vue指令之v-text 和 v-htmlVue指令之v-if 和 v-showVue指令之v-bind绑定Vue指令之v-on事件处理 1、v-text 和 v-html {{}} 和v-text的作用是一样的 都是插入值,直接渲染 ≈ innerTextv-html既能插入值 又能插入标签…...

vscode使用Runner插件将.exe文件统一放到一个目录下

找到右下角管理&#xff0c;点击扩展。 找到Code Runner插件&#xff0c;打开扩展设置。 向下翻&#xff0c;找到Executor Map&#xff0c;点击在settings.json中编辑。 在c和c的配置命令栏中增加\\\output\\即可。&#xff08;增加的目录不能自动创建&#xff0c;需要手动创建…...

[commonjs--resolver] Missing “./jsx-runtime.js“ specifier in “react“ package

修复vite构建时错误 vite打包,第三方包引用的react版本不一致问题修复(不是最优解) // vite.config.js import { defineConfig } from vite; import react from vitejs/plugin-react; import path from path;export default defineConfig({plugins: [react(), // 如果使用Rea…...

ETH Gas 之 Base Fee Priority Fee

前情回顾 ETH网络 之 Gas EIP-1559 EIP-1559 EIP-1559是以太坊改进提案&#xff08;Ethereum Improvement Proposal&#xff09;&#xff0c;旨在改进以太坊的交易费用机制。该提案引入了一种新的交易费用模型&#xff0c;以提高交易费用的可预测性和网络的效率。我们本文各…...

【小白入门篇1】GPT到底是怎样练成?

由于具有代表性的OpenAI公司GPT模型并没有开源&#xff0c;所以本章节是参考一些开源和现有课程&#xff08;李宏毅&#xff09;讲解ChatGPT原理。本章没有涉及到很多数学运算&#xff0c;比较适合小白了解GPT到底是怎么练成。GPT的三个英文字母分别代表Generative(生成式)&…...

Django——forms组件

Django——forms组件 forms组件&#xff1a;通过后端在Django中定义forms类&#xff0c;可以在 html 中动态的生成一个表单&#xff1b;检验用户提交的数据。 在应用中创建一个名为 &#xff1a;forms 的py文件 # 导入 forms 组件 from django import forms# 自定义 forms …...

利用K8S Statefulset搭建Etcd集群 - PVC存储

概述 在测试过程中发现&#xff0c;直接使用本地存储&#xff0c;当节点机器损坏了&#xff0c;对应机器的etcd数据也丢失了&#xff0c;故而做了利用K8S PV&#xff0c;PVC以及NFS来存储数据的尝试&#xff0c;经过一番折腾&#xff0c;测试成功&#xff0c;博文记录&#xf…...

手撕算法-接雨水

描述 分析 i位置能积累的雨水量&#xff0c;等于其左右两边最大高度的最小值。为了能获取i位置左右两边的最大高度。使用动态规划。两个dp数组&#xff1a; leftMaxrightMax 其中 leftMax[i] 代表i位置左边的最大高度rightMax[i] 代表i位置右边的最大高度 初始状态&#x…...

探索AI大模型学习:理论基础、技术突破与未来挑战

在当今技术飞速发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;大模型学习无疑是推动科技进步和创新的关键力量。AI大模型学习的核心在于通过训练大规模的数据集来提升模型的性能&#xff0c;使之能够更准确、更高效地完成各种任务&#xff0c;从而在多个领域中实现…...

Linux:点命令source

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 source命令用于读取一个文件的内容并在当前Shell环境&#xff08;包括交互式Shell或是非交互式Shell&#xff09;执行里面的命令。它被称为点命令是因为命令名source也可…...

iOS开发 - 转源码 - __weak问题解决

iOS开发 - 转源码 - __weak问题解决 在使用clang转换OC为C代码时&#xff0c;可能会遇到以下问题 cannot create __weak reference in file using manual reference 原因 __weak弱引用是需要runtime支持的&#xff0c;如果我们还只是使用静态编译&#xff0c;是无法正常转换的…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...