Java常用的API_02(正则表达式、爬虫)

news2024/11/13 5:46:35

Java正则表达式

  • 七、正则表达式
    • 7.1 格式
      • 7.1.1 字符类
        • 注意
        • 字符类示例代码1
        • 例2
      • 7.1.2 预定义字符
        • 预定义字符示例代码
        • 例2
      • 7.1.3 区别总结
    • 7.2 使用`Pattern`和`Matcher`类与直接使用`String`类的`matches`方法的区别。
      • (1) 使用`Pattern`和`Matcher`类
        • 示例代码
      • (2)直接使用`String`类的`matches`方法
        • 示例代码
      • (3)区别总结
      • (4)示例对比
          • 使用`Pattern`和`Matcher`类
        • 直接使用`String`类的`matches`方法
    • 7.3 数量词
    • 7.4这是一个正则表达式符号的总结表。
      • 7.4.1 各个符号
        • 解释
      • 7.4.2 量词总结表。
        • 解释
  • 八、爬虫
    • 8.1 条件爬取
      • 8.1.1 正向预查
      • 8.1.2 其他的
    • 8.2贪婪爬取
    • 8.3 正则表达式中的方法
    • 8.4 分组
      • 8.4.1 首尾相同单字符 abc123cba
      • 8.4.2 首尾相同多字符abc123abc
      • 8.4.3 开始的样式和结束的样式一样aaa12aaa

七、正则表达式

正则表达式是一种强大的文本匹配工具,用于在字符串中搜索和匹配特定模式的文本。
在Java中,正则表达式由java.util.regex包提供支持。它可以用于验证输入的格式、提取文本中的特定部分、替换文本等操作。

7.1 格式

7.1.1 字符类

字符类用于匹配一组字符中的任意一个字符。字符类用方括号[]括起来,表示在这些字符中匹配一个字符。

  • [abc]:匹配字符a、b或c。
  • [^abc]:匹配除a、b、c之外的任何字符。
  • [a-zA-Z]:匹配从a到z或从A到Z的任意一个字符。
  • [a-d[m-p]]:匹配a到d或m到p的任意一个字符。
  • [a-z&&[def]]:匹配a到z和def的交集,即d、e、f。
  • [a-z&&[^bc]]:匹配a到z并且不包括b和c的字符(即[ad-z])。
  • [a-z&&[^m-p]]:匹配a到z并且不包括m到p的字符(即[a-lq-z])。
注意
  • [a-z&&[def]]:匹配a到z和def的交集,即d、e、f。
  • 像这样的&&,必须是两个,如果是一个&,就只是说明其是一个‘&’字符符号
字符类示例代码1
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class CharClassExample {
    public static void main(String[] args) {
        // 匹配a、b或c中的任意一个字符
        String regex1 = "[abc]";
        String input1 = "apple";
        System.out.println(matchesPattern(regex1, input1)); // true

        // 匹配除a、b、c之外的任何字符
        String regex2 = "[^abc]";
        String input2 = "def";
        System.out.println(matchesPattern(regex2, input2)); // true

        // 匹配从a到z或从A到Z的任意一个字符
        String regex3 = "[a-zA-Z]";
        String input3 = "Hello";
        System.out.println(matchesPattern(regex3, input3)); // true

        // 匹配a到d或m到p的任意一个字符
        String regex4 = "[a-d[m-p]]";
        String input4 = "cat";
        System.out.println(matchesPattern(regex4, input4)); // true

        // 匹配a到z和def的交集,即d、e、f
        String regex5 = "[a-z&&[def]]";
        String input5 = "dog";
        System.out.println(matchesPattern(regex5, input5)); // true

        // 匹配a到z并且不包括b和c的字符
        String regex6 = "[a-z&&[^bc]]";
        String input6 = "apple";
        System.out.println(matchesPattern(regex6, input6)); // true

        // 匹配a到z并且不包括m到p的字符
        String regex7 = "[a-z&&[^m-p]]";
        String input7 = "hello";
        System.out.println(matchesPattern(regex7, input7)); // true
    }

    private static boolean matchesPattern(String regex, String input) {
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);
        return matcher.find();
    }
}
例2
public class CharClassExample {
    public static void main(String[] args) {
        // 只能是 a b c
        System.out.println("----------1----------");
        System.out.println("a".matches("[abc]")); // true
        System.out.println("k".matches("[abc]")); // false

        // 不能出现 a b c
        System.out.println("----------2----------");
        System.out.println("a".matches("[^abc]")); // false
        System.out.println("z".matches("[^abc]")); // true
        System.out.println("zz".matches("[^abc]")); // false
        System.out.println("zz".matches("[^abc][^abc]")); // true

        // a到z A到Z (包括头尾的范围)
        System.out.println("----------3----------");
        System.out.println("a".matches("[a-zA-Z]")); // true
        System.out.println("Z".matches("[a-zA-Z]")); // true
        System.out.println("aa".matches("[a-zA-Z]")); // false
        System.out.println("zz".matches("[a-zA-Z]")); // false
        System.out.println("0".matches("[a-zA-Z]")); // false
    }
}

7.1.2 预定义字符

匹配一组字符中的任意一个字符,其用于简化正则表达式的书写。

  • .:匹配任意字符。
  • \d:匹配一个数字字符,相当于[0-9]
  • \D:匹配一个非数字字符,相当于[^0-9]
  • \s:匹配一个空白字符,包括空格、制表符、换行符等,相当于[\t\n\x0B\f\r]
  • \S:匹配一个非空白字符,相当于[^\s]
  • \w:匹配一个单词字符,包括字母、数字和下划线,相当于[a-zA-Z_0-9]
  • \W:匹配一个非单词字符,相当于[^\w]

通过使用这些字符类和预定义字符,可以构建出复杂的正则表达式来匹配特定的文本模式。

预定义字符示例代码
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PredefinedCharExample {
    public static void main(String[] args) {
        // 匹配任意字符
        String regex1 = ".";
        String input1 = "a";
        System.out.println(matchesPattern(regex1, input1)); // true

        // 匹配一个数字字符
        String regex2 = "\\d";
        String input2 = "5";
        System.out.println(matchesPattern(regex2, input2)); // true

        // 匹配一个非数字字符
        String regex3 = "\\D";
        String input3 = "a";
        System.out.println(matchesPattern(regex3, input3)); // true

        // 匹配一个空白字符
        String regex4 = "\\s";
        String input4 = " ";
        System.out.println(matchesPattern(regex4, input4)); // true

        // 匹配一个非空白字符
        String regex5 = "\\S";
        String input5 = "a";
        System.out.println(matchesPattern(regex5, input5)); // true

        // 匹配一个单词字符
        String regex6 = "\\w";
        String input6 = "a";
        System.out.println(matchesPattern(regex6, input6)); // true

        // 匹配一个非单词字符
        String regex7 = "\\W";
        String input7 = "!";
        System.out.println(matchesPattern(regex7, input7)); // true
    }

    private static boolean matchesPattern(String regex, String input) {
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);
        return matcher.find();
    }
}
例2
public class PredefinedCharExample {
    public static void main(String[] args) {
        // 匹配任意字符
        System.out.println("----------1----------");
        System.out.println("a".matches(".")); // true
        System.out.println("1".matches(".")); // true
        System.out.println(" ".matches(".")); // true
        System.out.println("\n".matches(".")); // false

        // 匹配一个数字字符
        System.out.println("----------2----------");
        System.out.println("5".matches("\\d")); // true
        System.out.println("a".matches("\\d")); // false

        // 匹配一个非数字字符
        System.out.println("----------3----------");
        System.out.println("a".matches("\\D")); // true
        System.out.println("5".matches("\\D")); // false

        // 匹配一个空白字符
        System.out.println("----------4----------");
        System.out.println(" ".matches("\\s")); // true
        System.out.println("\t".matches("\\s")); // true
        System.out.println("a".matches("\\s")); // false

        // 匹配一个非空白字符
        System.out.println("----------5----------");
        System.out.println("a".matches("\\S")); // true
        System.out.println(" ".matches("\\S")); // false

        // 匹配一个单词字符
        System.out.println("----------6----------");
        System.out.println("a".matches("\\w")); // true
        System.out.println("1".matches("\\w")); // true
        System.out.println("_".matches("\\w")); // true
        System.out.println("!".matches("\\w")); // false

        // 匹配一个非单词字符
        System.out.println("----------7----------");
        System.out.println("!".matches("\\W")); // true
        System.out.println("a".matches("\\W")); // false
    }
}

在Java中,使用正则表达式进行字符串匹配时,字符类和预定义字符的写法有一些区别。以下是两种写法的主要区别:

7.1.3 区别总结

  1. 字符类

    • 使用方括号[]定义。
    • 可以包含单个字符、字符范围或字符集的交集和补集。
    • 适用于需要匹配特定字符集合的情况。
  2. 预定义字符

    • 使用反斜杠\加特定字符定义。
    • 是常用字符类的简写形式。
    • 适用于匹配常见字符类型(如数字、字母、空白字符等)的情况。

7.2 使用PatternMatcher类与直接使用String类的matches方法的区别。

(1) 使用PatternMatcher

这种方法适用于需要多次复用同一个正则表达式的情况。通过编译正则表达式为Pattern对象,然后使用Matcher对象进行匹配,可以提高效率。

示例代码
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PatternMatcherExample {
    public static void main(String[] args) {
        String regex1 = "[abc]";
        String input1 = "apple";
        System.out.println(matchesPattern(regex1, input1)); // true
    }

    private static boolean matchesPattern(String regex, String input) {
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);
        return matcher.find();
    }
}

(2)直接使用String类的matches方法

这种方法适用于简单的、一次性的正则表达式匹配。String类的matches方法会在内部编译正则表达式并进行匹配,适合于不需要复用正则表达式的情况。

示例代码
public class StringMatchesExample {
    public static void main(String[] args) {
        // 只能是 a b c
        System.out.println("----------1----------");
        System.out.println("a".matches("[abc]")); // true
        System.out.println("k".matches("[abc]")); // false
    }
}

(3)区别总结

  1. 使用PatternMatcher

    • 适用于需要多次复用同一个正则表达式的情况。
    • 通过编译正则表达式为Pattern对象,然后使用Matcher对象进行匹配。
    • 提高了效率,特别是在需要多次匹配的情况下。
  2. 直接使用String类的matches方法

    • 适用于简单的、一次性的正则表达式匹配。
    • 每次调用matches方法时,都会编译正则表达式并进行匹配。
    • 适合于不需要复用正则表达式的情况。

(4)示例对比

使用PatternMatcher
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PatternMatcherExample {
    public static void main(String[] args) {
        String regex1 = "[abc]";
        String input1 = "apple";
        System.out.println(matchesPattern(regex1, input1)); // true
    }

    private static boolean matchesPattern(String regex, String input) {
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);
        return matcher.find();
    }
}
直接使用String类的matches方法
public class StringMatchesExample {
    public static void main(String[] args) {
        // 只能是 a b c
        System.out.println("----------1----------");
        System.out.println("a".matches("[abc]")); // true
        System.out.println("k".matches("[abc]")); // false
    }
}

7.3 数量词

  • X?:X,一次或0次
  • X*:X,零次或多次
  • X+:X,一次或多次
  • X{n}:X,正好n次
  • X{n,}:X,至少n次
  • X{n,m}:X,至少n但不超过m次

这些量词用于正则表达式中来指定字符或子模式的重复次数。

public class RegexExample {
    public static void main(String[] args) {
        // 示例1: X?
        System.out.println("aaab".matches("a?")); // false
        System.out.println("a".matches("a?"));    // true
        System.out.println("".matches("a?"));     // true

        // 示例2: X*
        System.out.println("aaab".matches("a*")); // false
        System.out.println("aaa".matches("a*"));  // true
        System.out.println("".matches("a*"));     // true

        // 示例3: X+
        System.out.println("aaab".matches("a+")); // false
        System.out.println("aaa".matches("a+"));  // true
        System.out.println("a".matches("a+"));    // true

        // 示例4: X{n}
        System.out.println("aaab".matches("a{2}")); // false
        System.out.println("aa".matches("a{2}"));   // true

        // 示例5: X{n,}
        System.out.println("aaab".matches("a{2,}")); // false
        System.out.println("aaa".matches("a{2,}"));  // true

        // 示例6: X{n,m}
        System.out.println("aaab".matches("a{1,2}")); // false
        System.out.println("aa".matches("a{1,2}"));   // true
        System.out.println("a".matches("a{1,2}"));    // true
    }
}

在这里插入图片描述

  • (?i):这是一个正则表达式的模式修饰符,用于忽略大小写。
public class RegexExample {
    public static void main(String[] args) {
        // 忽略大小写的书写方式
        // 在匹配的时候忽略abc的大小写
        String regex = "a(?i)bc";
       
        System.out.println("----------------------------");
        System.out.println("abc".matches(regex)); // true
        System.out.println("ABC".matches(regex)); // true
        System.out.println("aBC".matches(regex)); // true
    }
}

同样的忽略
(X|x)与 [Xx]

注意()的使用
()立大功

public class RegexExample {
    public static void main(String[] args) {
        // 忽略大小写的书写方式
        // 在匹配的时候忽略b的大小写
        String regex = "a((?i)b)c";
        
        System.out.println("----------------------------");
        System.out.println("abc".matches(regex)); // true
        System.out.println("ABC".matches(regex)); // false
        System.out.println("aBc".matches(regex)); // true
    }
}

7.4这是一个正则表达式符号的总结表。

7.4.1 各个符号

符号含义示例
[]里面的内容出现一次[0-9] [a-zA-Z0-9]
()分组a(bc)+
^取反[^abc]
&&交集,不能写单个的&[a-z&&m-p]
``写在方括号外面表示并集
.任意字符\n 回车符号不匹配
\转义字符\\d
\d0-9\\d+
\D非0-9\\D+
\s空白字符[ \t\n\x0B\f\r]
\S非空白字符[^\\s]
\w单词字符[a-zA-Z_0-9]
\W非单词字符[^\\w]
解释
  • []:匹配方括号内的任意一个字符。例如,[0-9]匹配任何一个数字。
  • ():用于分组。例如,a(bc)+匹配a后面跟一个或多个bc
  • ^:在方括号内表示取反。例如,[^abc]匹配任何不是abc的字符。
  • &&:表示交集。例如,[a-z&&m-p]匹配mp之间的字符。
  • |:表示并集。例如,x|X匹配xX
  • .:匹配任意字符(除了换行符)。
  • \:转义字符,用于转义特殊字符。
  • \d:匹配任何一个数字(0-9)。
  • \D:匹配任何一个非数字字符。
  • \s:匹配任何一个空白字符(包括空格、制表符、换行符等)。
  • \S:匹配任何一个非空白字符。
  • \w:匹配任何一个单词字符(包括字母、数字和下划线)。
  • \W:匹配任何一个非单词字符。

这些符号和示例可以帮助你更好地理解和使用正则表达式。

7.4.2 量词总结表。

符号含义示例
?0次或1次\\d?
*0次或多次\\d* (abc)*
+1次或多次\\d+ (abc)+
{}具体次数a{7} \\d{7,19}
(?i)忽略后面字符的大小写(?i)abc
a((?i)b)c只忽略b的大小写a((?i)b)c
解释
  • ?:匹配前面的字符0次或1次。例如,\\d?匹配0个或1个数字。
  • *:匹配前面的字符0次或多次。例如,\\d*匹配0个或多个数字,(abc)*匹配0个或多个abc
  • +:匹配前面的字符1次或多次。例如,\\d+匹配1个或多个数字,(abc)+匹配1个或多个abc
  • {}:匹配前面的字符具体的次数。例如,a{7}匹配7个a\\d{7,19}匹配7到19个数字。
  • (?i):忽略后面字符的大小写。例如,(?i)abc匹配abcABCaBc等。
  • a((?i)b)c:只忽略b的大小写。例如,a((?i)b)c匹配abcaBc,但不匹配ABC

八、爬虫

8.1 条件爬取

8.1.1 正向预查

要匹配的内容后面加上一个正向预查,指定后面的数据需要存在但不包含在匹配结果中。

String text = "前面的数据后面的数据";
String pattern = "前面的数据(?=后面的数据)";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(text);

if (m.find()) {
    System.out.println(m.group());
}

在这里插入图片描述

在这个示例中,正则表达式(?=后面的数据)表示匹配"前面的数据"后面紧跟着"后面的数据",但只返回"前面的数据"部分。

8.1.2 其他的

String text = "前面的数据后面的数据";
String pattern = "前面的数据(?:后面的数据)";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(text);

if (m.find()) {
    System.out.println(m.group());
}

在这里插入图片描述
非捕获分组不需要再用本组数据,仅仅把数据括起来,不占组号。
(?:)(?=)(?!)

符号含义
?:正则获取所有
?=正则获取前面
?! 正则 获取不是指定内容的前面的部分

8.2贪婪爬取

只写+或者·*·就是贪婪爬取
+?非贪婪爬取
*?非贪婪爬取
在这里插入图片描述

以下是使用贪婪匹配和非贪婪匹配的正则表达式示例:

  1. 使用贪婪匹配+
String text = "aaaaaab";
String pattern = "a+";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(text);

while (m.find()) {
    System.out.println("贪婪匹配结果:" + m.group());
}
  1. 使用非贪婪匹配+?
String text = "aaaaaab";
String pattern = "a+?";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(text);

while (m.find()) {
    System.out.println("非贪婪匹配结果:" + m.group());
}
  1. 使用贪婪匹配*
String text = "aaaaaab";
String pattern = "a*";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(text);

while (m.find()) {
    System.out.println("贪婪匹配结果:" + m.group());
}
  1. 使用非贪婪匹配*?
String text = "aaaaaab";
String pattern = "a*?";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(text);

while (m.find()) {
    System.out.println("非贪婪匹配结果:" + m.group());
}

这些示例演示了贪婪匹配和非贪婪匹配在正则表达式中的应用。

8.3 正则表达式中的方法

在Java中,正则表达式的常用方法包括matchesreplaceAllsplit。下面是它们的简要介绍:

  • matches:用于检查整个字符串是否匹配正则表达式。返回一个布尔值,表示是否完全匹配。
String text = "Hello, World!";
boolean isMatch = text.matches("Hello.*");
System.out.println(isMatch); // true
  • replaceAll:用于替换字符串中匹配正则表达式的部分。可以用指定的字符串替换匹配的部分。
String text = "apple, orange, banana";
String replacedText = text.replaceAll("\\b\\w+\\b", "fruit");
System.out.println(replacedText); // fruit, fruit, fruit
  • split:根据正则表达式将字符串拆分为子字符串数组。返回一个字符串数组,包含根据正则表达式拆分的子字符串。
String text = "apple,orange,banana";
String[] fruits = text.split("a");
for (String fruit : fruits) {
    System.out.println(fruit);
}
//pple,or
//nge,b
//n
//n

这些方法可以帮助你在Java中使用正则表达式进行匹配、替换和拆分字符串。

8.4 分组

在Java中,可以使用圆括号()来创建一个分组。

在正则表达式中,分组可以对匹配的部分进行逻辑分组,以便后续引用或操作。
组号是连续的,从1开始不间断的。以左括号为基准。
非捕获分组不需要再用本组数据,仅仅把数据括起来,不占组号。

(?:)(?=)(?!)
在这里插入图片描述

public class SimplifyString {
    public static void main(String[] args) {
        // 定义原始字符串
        String s = "aabbbbbbcccc";

        // 使用正则表达式替换重复的字符
        // (.) 捕获组匹配任意字符
        // \\1+ 量词匹配捕获组1的一次或多次出现
        // $1 引用捕获组1的内容(即匹配的单个字符)进行替换
        String simplified = s.replaceAll("(.)\\1+", "$1");

        // 输出简化后的字符串
        System.out.println(simplified);  // 输出: abc
    }
}

8.4.1 首尾相同单字符 abc123cba

\\组号意味着吧X组的东西在拿来用一次

String regex1="(.).+\\1";

在这里插入图片描述

8.4.2 首尾相同多字符abc123abc

String regex1="(.+).+\\1";

在这里插入图片描述

8.4.3 开始的样式和结束的样式一样aaa12aaa

(.)是把字母看做一组
\\2是把首字母重复
*是把\\2, ——— 0次或者多次

String regex1="((.)\\2*).+\\1";

在这里插入图片描述

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

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

相关文章

JVM 之对象的结构与创建

1.对象的创建 1.1类加载 当Java 虚拟机遇到一条字节码 new 指令时,首先将去检查这个指令的参数是否能在常量池中定位到 一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那 必须先执行相应的类加载过…

昇思MindSpore学习总结十五 ——基于Mindspore 实现BERT对话情绪识别

1、环境配置 根据实际情况,选择合适版本。 %%capture captured_output # 实验环境已经预装了mindspore2.2.14,如需更换mindspore版本,可更改下面mindspore的版本号 !pip uninstall mindspore -y !pip install -i https://pypi.mirrors.ustc…

用node.js写一个简单的图书管理界面——功能:添加,删除,修改数据

涉及到的模块: var fs require(‘fs’)——内置模块 var ejs require(‘ejs’)——第三方模块 var mysql require(‘mysql’)——第三方模块 var express require(‘express’)——第三方模块 var bodyParser require(‘body-parser’)——第三方中间件 需要…

华为HCIP Datacom H12-821 卷38

1.多选题 下面关于 BGP中的公认属性的描述,正确的是 A、公认必遵属性是所有BGP路由器都识别,且必须存在于Updata消息中心 B、BGP必须识别所有公认属性 C、公认属性分为公认必遵和可选过渡两种 D、公认任意属性是所有BGP造由器都可以识别&#xff0c…

217.贪心算法:加油站(力扣)

代码解决 class Solution { public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {int curtotol 0; // 当前累积油量int tatol 0; // 总的油量减去总的花费油量int start 0; // 起始加油站的索引// 遍历所有加油站for (int i 0; i &…

【Android面试八股文】你说ARouter采用APT技术,那么谈一下你对APT技术的理解,还有那些框架是采用APT技术呀?JavaPoet

一、谈一下你对APT技术的理解 1.1 对APT技术的理解 APT(Annotation Processing Tool)是一种在编译期间处理注解的技术,它允许开发者在编译时扫描和处理 Java 源代码中的注解信息,生成额外的源代码、资源文件或者其他文件。以下是对APT技术的一些理解和应用场景: 工作原理…

期货量化交易客户端开源教学第九节——新用户注册

一、新用户注册界面设计&#xff1a; 注册时采用手机号注册&#xff0c;客户端发送新号注册申请由后台做审核&#xff0c;后台审核通过后向注册的手机号发送注册成功的消息。注册过的手机号不能再二次注册。 界面验证代码 private{ Private declarations }FVerf: AnsiString; …

【React Native】做了一个简约的雷达图组件

本文目录 【React Native】做了一个简约的雷达图组件获取组件实现思路用法示例简易用法自定义美化 结语 【React Native】做了一个简约的雷达图组件 最近在使用 react-native 中需要绘制雷达图&#xff0c;没有找到合适的小组件&#xff08;大的图表库未直接提供&#xff0c;需…

【活动预告】Apache IoTDB TsFile 智慧能源应用“上会”啦!

2024 年&#xff0c;站在中国数字经济产业升级和数据要素市场化建设的时代交汇点上&#xff0c;为进一步推动全球数据库产业进步&#xff0c;由中国通信标准化协会、大数据技术标准推进委员会主办的“2024 可信数据库发展大会”将于 2024 年 7 月 16-17 日&#xff0c;在北京朝…

Mac M1安装配置Hadoop+Flink SQL环境

Flink 1.18.1 Hadoop 3.4.0 一、准备工作 系统&#xff1a;Mac M1 (MacOS Sonoma 14.3.1) JDK&#xff1a;jdk1.8.0_381 &#xff08;注意&#xff1a;尽量一定要用JDK8&#xff0c;少用高版本&#xff09; Scala&#xff1a;2.12 JDK安装在本机的/opt/jdk1.8.0_381.jdk/C…

海外ASO:iOS与谷歌优化的相同点和区别

海外ASO是针对iOS的App Store和谷歌的Google Play这两个主要海外应用商店进行的优化过程&#xff0c;两个不同的平台需要采取不同的优化策略&#xff0c;以下是对iOS优化和谷歌优化的详细解析&#xff1a; 一、iOS优化&#xff08;App Store&#xff09; 1、关键词覆盖 选择关…

【公益案例展】中国电信安全大模型——锻造安全行业能量转化的高性能引擎...

‍ 电信安全公益案例 本项目案例由电信安全投递并参与数据猿与上海大数据联盟联合推出的 #榜样的力量# 《2024中国数智产业最具社会责任感企业》榜单/奖项评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 以GPT系列为代表的大模型技术&#xff0c;展现了人工智能技术与应…

Macos 远程登录 Ubuntu22.04 桌面

这里使用的桌面程序为 xfce, 而 gnome 桌面则测试失败。 1,安装 在ubuntu上&#xff0c;安装 vnc server与桌面程序xfce sudo apt install xfce4 xfce4-goodies tightvncserver 2&#xff0c;第一次启动和配置 $ tightvncserver :1 设置密码。 然后修改配置&#xff1a…

3d为什么删掉模型不能返回?---模大狮模型网

在展览3D模型设计行业中&#xff0c;设计师们经常面临一个关键问题&#xff1a;一旦删除了模型的某些部分&#xff0c;为什么很难或者无法恢复原始状态?这不仅是技术上的挑战&#xff0c;更是设计过程中需要深思熟虑的重要考量。本文将探讨这一问题的原因及其在实际工作中的影…

传输层协议之UDP

1、端口号 我们在应用层创建的套接字&#xff0c;是需要通过bind()接口绑定我们的IP地址与端口号的&#xff0c;这是因为数据从传输层向上交付到应用层时&#xff0c;需要用端口号来查找特定的服务进程。一般在网络通信时&#xff0c;用IP地址标识一台主机&#xff0c;用端口号…

查找PPT中某种字体的全部对应文字

本文章的目的是找到某种字体的文字&#xff0c;而不是替换某种字体的文字&#xff0c;也不是将某种字体全部替换为另外一种文字。 第一步&#xff1a;在PPT中按下ALTF11 出现以下窗口 第二步&#xff1a;点击插入->模块 第三步&#xff1a;将以下代码输入到窗体中 Sub F…

【备战秋招】——算法题目训练和总结day4

【备战秋招】——算法题目训练和总结day4&#x1f60e; 前言&#x1f64c;Fibonacci数列我的题解思路分享代码分享 单词搜索我的题解思路分享代码分享 杨辉三角我的题解思路分享代码分享 总结撒花&#x1f49e; &#x1f60e;博客昵称&#xff1a;博客小梦 &#x1f60a;最喜欢…

C++的缺省参数、函数重载和引用

缺省参数 缺省参数是声明或定义函数时为函数的参数指定⼀个缺省值。在调⽤该函数时&#xff0c;如果没有指定实参 则采⽤该形参的缺省值&#xff0c;否则使⽤指定的实参&#xff0c;缺省参数分为全缺省和半缺省参数。(有些地⽅把 缺省参数也叫默认参数)&#xff0c;要注意的是…

相对位移(鼠标)和绝对位移(触摸屏)

引言 EV_REL 表示相对位移(比如鼠标)&#xff0c; EV_ABS 表 示绝对位置(比如触摸屏) 为什么鼠标是相对位移&#xff0c;触摸屏绝对位置? 总结 在Linux操作系统中&#xff0c;输入设备如鼠标和触摸屏通过事件设备接口(Event Device Interface)来与系统交互。这个接口定义了一…

java《字符串基础篇》--字符串全套知识点总结及其配套习题逐语句分析(附带全套源代码)

一、前言 从今天开始就要学习字符串了&#xff0c;java中的字符串和其他编程语言的有些许不同&#xff0c;不过大家也不必担心&#xff0c;基本的原理都是相同的&#xff0c;只是代码的实现有些许差异&#xff0c;问题不大。对于字符串习题方面都是些最基础的题目&#xff0c;…