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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/768833.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML_CSS学习:表格、表单、框架标签

一、表格_跨行与跨列 1.相关代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>表格_跨行与跨列</title> </head> <body><table border"1" cellspacing"0&qu…

学员分享丨学习华为认证,为什么建议报班学习

我一直对计算机科学有着浓厚的兴趣&#xff0c;但在我遇见誉天教育之前&#xff0c;我只是独自摸索&#xff0c;没有明确的方向和方法。然而&#xff0c;在誉天教育&#xff0c;我找到了一个真正为学生着想的地方。这里有一支专业且热情的教师队伍&#xff0c;他们不仅在课堂上…

毕业设计:日志记录编写(3/17起更新中)

目录 3/171.配置阿里云python加速镜像&#xff1a;2. 安装python3.9版本3. 爬虫技术选择4. 数据抓取和整理5. 难点和挑战 3/241.数据库建表信息2.后续进度安排3. 数据处理和分析 3/17 当前周期目标&#xff1a;构建基本的python环境&#xff1a;运行爬虫程序 1.配置阿里云pytho…

【Postman】工具使用介绍

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

训练自己的声音模型,效果超级逼真,最牛的开源声音克隆项目 GPT-SoVITS

GPT-SoVITS 是一个开源的声音克隆项目&#xff0c;可以训练自己的声音模型。 效果非常好&#xff0c;使用超级简单。 如果你有声音克隆的需求&#xff0c;必须要试试这个项目。 不说废话&#xff0c;直接看怎么训练自己的声音模型。 1. 安装 我的是Windows系统&#xff0c…

Linux中的常用基础操作

ls 列出当前目录下的子目录和文件 ls -a 列出当前目录下的所有内容&#xff08;包括以.开头的隐藏文件&#xff09; ls [目录名] 列出指定目录下的子目录和文件 ls -l 或 ll 以列表的形式列出当前目录下子目录和文件的详细信息 pwd 显示当前所在目录的路径 ctrll 清屏 cd…

c 语言 三元搜索 - 迭代与递归(Ternary Search)

计算机系统使用不同的方法来查找特定数据。有多种搜索算法&#xff0c;每种算法更适合特定情况。例如&#xff0c;二分搜索将信息分为两部分&#xff0c;而三元搜索则执行相同的操作&#xff0c;但分为三个相等的部分。值得注意的是&#xff0c;三元搜索仅对排序数据有效。在本…

SOC 子模块---中断控制器

中断控制器对soc 中的各个外设进行中断管理&#xff0c;进行优先权排队&#xff0c;并送出IQR信号给CPU&#xff1b; 中断控制器在整个系统中的结构&#xff1a; IRQ<n>来源于不同的中断源&#xff0c;比如&#xff1a;I2C,SPI等&#xff0c;INTC收集这些中断&#xff0…

HTTP状态码(3)

HTTP 状态码负责表示客户端 HTTP 请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作 状态码告知从服务器端返回的请求结果 状态码的职责是当客户端向服务器端发送请求时&#xff0c;描述返回的请求结果。借助状态码&#xff0c;用户可以知道服务器端是正常…

AIGC实战——Transformer模型

AIGC实战——Transformer模型 0. 前言1. T52. GPT-3 和 GPT-43. ChatGPT小结系列链接 0. 前言 我们在 GPT (Generative Pre-trained Transformer) 一节所构建的 GPT 模型是一个解码器 Transformer&#xff0c;它逐字符地生成文本字符串&#xff0c;并使用因果掩码只关注输入字…

面试问题——redis——缓存穿透、击穿、雪崩

HR&#xff1a;你在项目中的那些场景用到了redis&#xff1f; 1. 缓存穿透问题 &#xff08;项目中使用的方法&#xff09; 2. 缓存击穿 解决办法1&#xff1a;加互斥锁。大量并发时&#xff0c;先让一个人去查&#xff0c;其他人等着。这样剩下人就可在缓存直接获取值。&#…

Web实现名言生成器:JavaScript DOM基础与实例教程

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

Linux-安装redis

安装指令 sudo apt-get install redis-server 启动服务 sudo systemctl start redis 查找redis路径 find / -name "filename" linux redis修改密码 sudo nano /etc/redis/redis.conf 找到 "requirepass" 这一行&#xff0c;取消注释并设置新的密码&…

跳蚱蜢(蓝桥杯)

文章目录 跳蚱蜢题目描述答案&#xff1a;20bfs 跳蚱蜢 题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 如下图所示&#xff1a; 有 9 只盘子&#xff0c;排成 1 个圆圈。 其中 8 只盘子内装着 8 只蚱蜢&#xff…

包含多个段的程序

文章目录 包含多个段的程序在代码段中使用数据在代码段中使用栈将数据、代码、栈放入不同的段 包含多个段的程序 在代码段中使用数据 考虑这样一个问题&#xff0c;编程计算以下8个数据的和&#xff0c;结果存在ax 寄存器中&#xff1a;0123H&#xff0c;0456H&#xff0c;07…

ctfshow web入门 反序列化

254 分析代码&#xff1a; 如果用户名和密码参数都存在&#xff0c;脚本会创建一个 ctfShowUser 类的实例 $user。 接着&#xff0c;调用 $user->login($username, $password) 方法尝试登录。如果登录成功&#xff08;即用户名和密码与类中的默认值匹配&#xff09;&#…

详解机器学习概念、算法

目录 前言 一、常见的机器学习算法 二、监督学习和非监督学习 三、常见的机器学习概念解释 四、深度学习与机器学习的区别 基于Python 和 TensorFlow 深度学习框架实现简单的多层感知机&#xff08;MLP&#xff09;神经网络的示例代码&#xff1a; 欢迎三连哦&#xff01; 前言…

Spark Map 和 FlatMap 的比较

Spark Map 和 FlatMap 的比较 本节将介绍Spark中map(func)和flatMap(func)两个函数的区别和基本使用。 函数原型 map(func) 将原数据的每个元素传给函数func进行格式化&#xff0c;返回一个新的分布式数据集。 flatMap(func) 跟map(func)类似&#xff0c;但是每个输入项和…

JUC(二)

1、wait notify Owner 线程发现条件不满足&#xff0c;调用 wait 方法&#xff0c;即可进入 WaitSet 变为 WAITING 状态 BLOCKED 和 WAITING 的线程都处于阻塞状态&#xff0c;不占用 CPU 时间片 BLOCKED 线程会在 Owner 线程释放锁时唤醒 WAITING 线程会在 Owner 线程调用 …

Gelato Network的创始人HILMAR ORTH确认出席HackSummit2024区块链开发者大会

随着Web3技术的日新月异&#xff0c;区块链领域正以前所未有的速度席卷全球。在这一变革的浪潮中&#xff0c;备受瞩目的区块链盛会——Hack.Summit() 2024区块链开发者大会&#xff0c;将于2024年4月9日至10日&#xff0c;在香港数码港隆重登场。这一里程碑式的大会不仅标志着…