Java基础:String类、static关键字、Arrays类、Math类

news2024/9/28 7:17:16

第一章 String

1.1 String类概述

概述

java.lang.String类代表字符串。Java程序中所有的字符串文字(例如"abc")都可以被看作是实现此类的实例。

String中包括用于检查各个字符串的方法,比如用于比较字符串,搜索字符串,提取子字符串以及创建具有翻译为大写或小写的所有字符的字符串的副本。

特点

  • 字符串不变:字符串的值在创建后不能被更改。
public class String_Demo01 {
    public static void main(String[] args) {
        String s1 = "abc";
        //借助其他API来实现输出对象的地址。
        System.out.println("s1 => " + String.class.getName() + "@" + Integer.toHexString(System.identityHashCode(s1)));

        s1 += "d";
        System.out.println(s1); // "abcd"
        // 内存中有"abc","abcd"两个对象,s1从指向"abc",改变指向,指向了"abcd"。
        System.out.println("s1 => " + String.class.getName() + "@" + Integer.toHexString(System.identityHashCode(s1)));
    }
}

在这里插入图片描述

  • 因为String对象是不可变的,所以它们可以被共享。
public class String_Demo01 {
    public static void main(String[] args) {
        String s1 = "abc";
        String s2 = "abc";
        // 内存中只有一个"abc"对象被创建,同时被s1和s2共享。
        //当使用System.out.println()方法打印String类型对象时,会输出String对象代表的字符串,并不会输出对象的地址。
        //因此,我们必须借助其他API来实现该功能。
        System.out.println("s1 = " + s1);
        System.out.println("s1 => " + String.class.getName() + "@" + Integer.toHexString(System.identityHashCode(s1)));
        System.out.println("s2 = " + s2);
        System.out.println("s2 => " + String.class.getName() + "@" + Integer.toHexString(System.identityHashCode(s2)));
    }
}

在这里插入图片描述

  • "abc"等效于char[] data={ 'a' , 'b' , 'c' }
public class String_Demo01 {
    public static void main(String[] args) {
        String str = "abc";
        System.out.println(str); // "abc"

        //相当于:
        char[] data = {'a', 'b', 'c'};  
        String str2 = new String(data);  // String底层是靠字符数组实现的。
        System.out.println(str2); // "abc"
    }
}

在这里插入图片描述

1.2 使用步骤

查看类

  • java.lang.String:此类不需要导入。

查看构造方法

  • public String():初始化新创建的String对象,以使其表示空字符序列。

  • public String(char[] value):通过当前参数中的字符数组来构造新的String

  • public String(byte[] bytes):通过使用平台的默认字符集解码当前参数中的字节数组来构造新的String

构造举例,代码如下:

public class String_Demo01 {
    public static void main(String[] args) {
        // 无参构造
        String str = new String();
        System.out.println("str = " + str);
        // 通过字符数组构造
        char chars[] = {'a', 'b', 'c'};
        String str2 = new String(chars);
        System.out.println("str2 = " + str2);
        // 通过字节数组构造
        byte bytes[] = { 97, 98, 99 };
        String str3 = new String(bytes);
        System.out.println("str3 = " + str3);
    }
}

在这里插入图片描述

1.3 常用方法

判断功能的方法

  • public boolean equals (Object anObject):将此字符串与指定对象进行比较。

  • public boolean equalsIgnoreCase (String anotherString):将此字符串与指定对象进行比较,忽略大小写。

方法演示,代码如下:

public class String_Demo01 {
    public static void main(String[] args) {
        // 创建字符串对象
        String s1 = "hello";
        String s2 = "hello";
        String s3 = "HELLO";
        // boolean equals(Object obj):比较字符串的内容是否相同
        System.out.println(s1.equals(s2)); // true
        System.out.println(s1.equals(s3)); // false
        System.out.println("‐‐‐‐‐‐‐‐‐‐‐");
        //boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
        System.out.println(s1.equalsIgnoreCase(s2)); // true
        System.out.println(s1.equalsIgnoreCase(s3)); // true
        System.out.println("‐‐‐‐‐‐‐‐‐‐‐");
    }
} 

在这里插入图片描述

Object是” 对象”的意思,也是一种引用类型。作为参数类型,表示任意对象都可以传递到方法中。

获取功能的方法

  • public int length ():返回此字符串的长度。

  • public String concat (String str):将指定的字符串连接到该字符串的末尾。

  • public char charAt (int index):返回指定索引处的char值。

  • public int indexOf (String str):返回指定子字符串第一次出现在该字符串内的索引。

  • public String substring (int beginIndex):返回一个子字符串,从beginIndex开始截取字符串到字符串结尾。

  • public String substring (int beginIndex, int endIndex):返回一个子字符串,从beginIndexendIndex截取字符串。含beginIndex,不含endIndex

方法演示,代码如下:

package com.dcxuexi.java09;

/***
 * @Title String_Demo02
 * @Description TOTD
 * @Auter DongChuang
 * @Date 2022/11/30 20:52
 * @Version 1.0.0
 */
public class String_Demo02 {
    public static void main(String[] args) {
        //创建字符串对象
        String str = "helloworld";
        // int length():获取字符串的长度,其实也就是字符个数
        System.out.println(str.length());
        System.out.println("‐‐‐‐‐‐‐‐");

        // String concat (String str):将将指定的字符串连接到该字符串的末尾.
        String str2 = str.concat(" && hello dcxuexi");
        System.out.println(str2);// helloworld && hello dcxuexi

        // char charAt(int index):获取指定索引处的字符
        System.out.println(str.charAt(0));
        System.out.println(str.charAt(1));
        System.out.println("‐‐‐‐‐‐‐‐");

        // int indexOf(String str):获取str在字符串对象中第一次出现的索引,没有返回‐1
        System.out.println(str.indexOf("l"));
        System.out.println(str.indexOf("owo"));
        System.out.println(str.indexOf("ak"));
        System.out.println("‐‐‐‐‐‐‐‐");

        // String substring(int start):从start开始截取字符串到字符串结尾
        System.out.println(str.substring(0));
        System.out.println(str.substring(5));
        System.out.println("‐‐‐‐‐‐‐‐");

        // String substring(int start,int end):从start到end截取字符串。含start,不含end。
        System.out.println(str.substring(0, str.length()));
        System.out.println(str.substring(3,8));
    }
}

在这里插入图片描述

转换功能的方法

  • public char[] toCharArray ():将此字符串转换为新的字符数组。

  • public byte[] getBytes ():使用平台的默认字符集将该String编码转换为新的字节数组。

  • public String replace (CharSequence target, CharSequence replacement):将与target匹配的字符串使用replacement字符串替换。

方法演示,代码如下:

package com.dcxuexi.java09;

/***
 * @Title String_Demo03
 * @Description TOTD
 * @Auter DongChuang
 * @Date 2022/11/30 20:58
 * @Version 1.0.0
 */
public class String_Demo03 {
    public static void main(String[] args) {
        //创建字符串对象
        String s = "abcde";
        // char[] toCharArray():把字符串转换为字符数组
        char[] chs = s.toCharArray();
        for(int x = 0; x < chs.length; x++) {
            System.out.println(chs[x]);
        }
        System.out.println("‐‐‐‐‐‐‐‐‐‐‐");
        // byte[] getBytes ():把字符串转换为字节数组
        byte[] bytes = s.getBytes();
        for(int x = 0; x < bytes.length; x++) {
            System.out.println(bytes[x]);
        }
        System.out.println("‐‐‐‐‐‐‐‐‐‐‐");
        // 替换字母dc为大写DC
        String str = "helle dcxuexi";
        String replace = str.replace("dc", "DC");
        System.out.println(replace); // helle DCxuexi
        System.out.println("‐‐‐‐‐‐‐‐‐‐‐");
    }
}

在这里插入图片描述

CharSequence是一个接口,也是一种引用类型。作为参数类型,可以把String对象传递到方法中。

分割功能的方法

  • public String[] split(String regex):将此字符串按照给定的regex(规则)拆分为字符串数组。

方法演示,代码如下:

package com.dcxuexi.java09;

/***
 * @Title String_Demo04
 * @Description TOTD
 * @Auter DongChuang
 * @Date 2022/11/30 21:01
 * @Version 1.0.0
 */
public class String_Demo04 {
    public static void main(String[] args) {
        //创建字符串对象
        String s = "BeiJing&ShangHai&Tianjin&Chongqing";
        String[] strArray = s.split("&"); // ["BeiJing","ShangHai","Tianjin","Chongqing"]
        for(int x = 0; x < strArray.length; x++) {
            System.out.println(strArray[x]); // BeiJing ShangHai Tianjin Chongqing
        }
    }
}

在这里插入图片描述

1.4 String类的练习

拼接字符串

定义一个方法,把数组{1,2,3}按照指定个格式拼接成一个字符串。格式参照如下:[word1#word2#word3]。

package com.dcxuexi.java09;

/***
 * @Title String_Test01
 * @Description TOTD
 * @Auter DongChuang
 * @Date 2022/11/30 21:05
 * @Version 1.0.0
 */
public class String_Test01 {
    public static void main(String[] args) {
        //定义一个int类型的数组
        int[] arr = {1, 2, 3};
        //调用方法
        String s = arrayToString(arr);
        //输出结果
        System.out.println("s:" + s);
    }
    /*
     * 写方法实现把数组中的元素按照指定的格式拼接成一个字符串
     * 两个明确:
     * 返回值类型:String
     * 参数列表:int[] arr
     */
    public static String arrayToString(int[] arr) {
        // 创建字符串s
        String s = new String("[");
        // 遍历数组,并拼接字符串
        for (int x = 0; x < arr.length; x++) {
            if (x == arr.length - 1) {
                s = s.concat(arr[x] + "]");
            } else {
                s = s.concat(arr[x] + "#");
            }
        }
        return s;
    }
}

在这里插入图片描述

统计字符个数

键盘录入一个字符,统计字符串中大小写字母及数字字符个数

package com.dcxuexi.java09;

import java.util.Scanner;

/***
 * @Title String_Test02
 * @Description TOTD
 * @Auter DongChuang
 * @Date 2022/11/30 21:07
 * @Version 1.0.0
 */
public class String_Test02 {
    public static void main(String[] args) {
        //键盘录入一个字符串数据
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串数据:");
        String s = sc.nextLine();
        //定义三个统计变量,初始化值都是0
        int bigCount = 0;
        int smallCount = 0;
        int numberCount = 0;
        //遍历字符串,得到每一个字符
        for(int x=0; x<s.length(); x++) {
            char ch = s.charAt(x);
            //拿字符进行判断
            if(ch>='A'&&ch<='Z') {
                bigCount++;
            }else if(ch>='a'&&ch<='z') {
                smallCount++;
            }else if(ch>='0'&&ch<='9') {
                numberCount++;
            }else {
                System.out.println("该字符"+ch+"非法");
            }
        }
        //输出结果
        System.out.println("大写字符:"+bigCount+"个");
        System.out.println("小写字符:"+smallCount+"个");
        System.out.println("数字字符:"+numberCount+"个");
    }
}

在这里插入图片描述

第二章 static关键字

2.1 概述

关于static关键字的使用,它可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属于某个对象的。也就是说,既然属于类,就可以不靠创建对象来调用了。

2.2 定义和使用格式

类变量

static修饰成员变量时,该变量称为类变量。该类的每个对象都共享同一个类变量的值。任何对象都可以更改该类变量的值,但也可以在不创建该类的对象的情况下对类变量进行操作。

  • 类变量:使用static关键字修饰的成员变量。

定义格式:

static 数据类型 变量名;

举例:

static int numberID;

比如说,基础班新班开班,学员报到。现在想为每一位新来报到的同学编学号(sid),从第一名同学开始,sid为 1,以此类推。学号必须是唯一的,连续的,并且与班级的人数相符,这样以便知道,要分配给下一名新同学的学号是多少。这样我们就需要一个变量,与单独的每一个学生对象无关,而是与整个班级同学数量有关。所以,我们可以这样定义一个静态变量numberOfStudent,代码如下:

package com.dcxuexi.java09;

/***
 * @Title Student
 * @Description TOTD
 * @Auter DongChuang
 * @Date 2022/11/30 21:30
 * @Version 1.0.0
 */
public class Student {
    private String name;
    private int age;
    // 学生的id
    private int sid;
    // 类变量,记录学生数量,分配学号
    public static int numberOfStudent = 0;
    
    public Student(String name, int age){
        this.name = name;
        this.age = age;
        // 通过 numberOfStudent 给学生分配学号
        this.sid = ++numberOfStudent;
    }
    // 打印属性值
    public void show() {
        System.out.println("Student : name=" + name + ", age=" + age + ", sid=" + sid );
    }
}
package com.dcxuexi.java09;

/***
 * @Title Student_Demo
 * @Description TOTD
 * @Auter DongChuang
 * @Date 2022/11/30 21:30
 * @Version 1.0.0
 */
public class Student_Demo {
    public static void main(String[] args) {
        Student s1 = new Student("刘德华", 26);
        Student s2 = new Student("张学友", 28);
        Student s3 = new Student("郭富城", 24);
        Student s4 = new Student("黎明", 27);
        s1.show(); // Student : name=刘德华, age=26, sid=1
        s2.show(); // Student : name=张学友, age=28, sid=2
        s3.show(); // Student : name=郭富城, age=24, sid=3
        s4.show(); // Student : name=黎明, age=27, sid=4
    }
}

在这里插入图片描述

静态方法

static修饰成员方法时,该方法称为类方法 。静态方法在声明中有static,建议使用类名来调用,而不需要创建类的对象。调用方式非常简单。

  • 类方法:使用static关键字修饰的成员方法,习惯称为静态方法。

定义格式:

修饰符 static 返回值类型 方法名 (参数列表){ 
    // 执行语句 
}

举例:在Student类中定义静态方法

public static void showNum() { 
    System.out.println("num:" + numberOfStudent); 
} 

静态方法调用的注意事项:

  • 静态方法可以直接访问类变量和静态方法。

  • 静态方法不能直接访问普通成员变量或成员方法。反之,成员方法可以直接访问类变量或静态方法。

  • 静态方法中,不能使用this关键字。

小贴士:静态方法只能访问静态成员。

调用格式

static修饰的成员可以并且建议通过类名直接访问。虽然也可以通过对象名访问静态成员,原因即多个对象均属于一个类,共享使用同一个静态成员,但是不建议,会出现警告信息。

格式:

// 访问类变量 
类名.类变量名; 
// 调用静态方法 
类名.静态方法名(参数);

调用演示,代码如下:

public class Student_Demo {
    public static void main(String[] args) {
        Student s1 = new Student("刘德华", 26);
        Student s2 = new Student("张学友", 28);
        Student s3 = new Student("郭富城", 24);
        Student s4 = new Student("黎明", 27);
        s1.show(); // Student : name=刘德华, age=26, sid=1
        s2.show(); // Student : name=张学友, age=28, sid=2
        s3.show(); // Student : name=郭富城, age=24, sid=3
        s4.show(); // Student : name=黎明, age=27, sid=4

        // 访问类变量
        System.out.println(Student.numberOfStudent);
        // 调用静态方法
        Student.showNum();
    }
}

在这里插入图片描述

2.3 静态原理图解

static修饰的内容:

  • 是随着类的加载而加载的,且只加载一次。

  • 存储于一块固定的内存区域(静态区),所以,可以直接被类名调用。

  • 它优先于对象存在,所以,可以被所有对象共享。

在这里插入图片描述

2.4 静态代码块

静态代码块:定义在成员位置,使用static修饰的代码块{ }。

  • 位置:类中方法外。

  • 执行:随着类的加载而执行且执行一次,优先于main方法和构造方法的执行。

格式:

public class ClassName{ 
    static { 
        // 执行语句 
    } 
}

作用:给类变量进行初始化赋值。用法演示,代码如下:

public class Game { 
    public static int number; 
    public static ArrayList<String> list; 
    static { 
        // 给类变量赋值 
        number = 2; 
        list = new ArrayList<String>(); 
        // 添加元素到集合中 
        list.add("张三"); 
        list.add("李四"); 
    } 
}

小贴士:

static关键字,可以修饰变量、方法和代码块。在使用的过程中,其主要目的还是想在不创建对象的情况下,去调用方法。下面将介绍两个工具类,来体现static方法的便利。

第三章 Arrays

3.1 概述

java.util.Arrays此类包含用来操作数组的各种方法,比如排序和搜索等。其所有方法均为静态方法,调用起来非常简单。

3.2 操作数组的方法

  • public static String toString(int[] a):返回指定数组内容的字符串表示形式。
package com.dcxuexi.java09;

import java.util.Arrays;

/***
 * @Title Arrays_Demo01
 * @Description TOTD
 * @Auter DongChuang
 * @Date 2022/11/30 21:43
 * @Version 1.0.0
 */
public class Arrays_Demo01 {
    public static void main(String[] args) {
        // 定义int 数组
        int[] arr = {2,34,35,4,657,8,69,9};
        // 打印数组,输出地址值
        System.out.println(arr); // [I@1b6d3586
        // 数组内容转为字符串
        String s = Arrays.toString(arr);
        // 打印字符串,输出内容
        System.out.println(s); // [2, 34, 35, 4, 657, 8, 69, 9]
    }
}

在这里插入图片描述

  • public static void sort(int[] a):对指定的int型数组按数字升序进行排序。
package com.dcxuexi.java09;

import java.util.Arrays;

/***
 * @Title Arrays_Demo02
 * @Description TOTD
 * @Auter DongChuang
 * @Date 2022/11/30 21:45
 * @Version 1.0.0
 */
public class Arrays_Demo02 {
    public static void main(String[] args) {
        // 定义int 数组
        int[] arr = {24, 7, 5, 48, 4, 46, 35, 11, 6, 2};
        System.out.println("排序前:"+ Arrays.toString(arr)); // 排序前:[24, 7, 5, 48, 4, 46, 35, 11, 6, 2]

        // 升序排序
        Arrays.sort(arr);
        System.out.println("排序后:"+ Arrays.toString(arr));// 排序后:[2, 4, 5, 6, 7, 11, 24, 35, 46, 48]
        
    }
}

在这里插入图片描述

3.3 练习

请使用Arrays相关的API,将一个随机字符串中的所有字符升序排列,并倒序打印。

package com.dcxuexi.java09;

import java.util.Arrays;

/***
 * @Title Arrays_Test01
 * @Description TOTD
 * @Auter DongChuang
 * @Date 2022/11/30 21:47
 * @Version 1.0.0
 */
public class Arrays_Test01 {
    public static void main(String[] args) {
        // 定义随机的字符串
        String str = "QWertyIOPdjkflhASzxMNbvC";
        // 转换为字符数组
        char[] chars = str.toCharArray();
        // 升序排序
        Arrays.sort(chars);
        // 反向遍历打印
        for (int i = chars.length-1; i >= 0 ; i--) {
            System.out.print(chars[i]+" "); // z y x v t r l k j h f e d b W S Q P O N M I C A
        }
    }
}

在这里插入图片描述

第四章 Math

4.1 概述

java.lang.Math类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。类似这样的工具类,其所有方法均为静态方法,并且不会创建对象,调用起来非常简单。

4.2 基本运算的方法

  • public static double abs(double a):返回double值的绝对值。
public class Math_Demo01 {
    public static void main(String[] args) {
        double d1 = Math.abs(-5); //d1的值为5.0
        double d2 = Math.abs(5); //d2的值为5.0
        System.out.println("d1 = " + d1);
        System.out.println("d2 = " + d2);
    }
}

在这里插入图片描述

  • public static double ceil(double a) :返回大于等于参数的最小的整数。
public class Math_Demo01 {
    public static void main(String[] args) {
        double d1 = Math.ceil(3.3); //d1的值为 4.0
        double d2 = Math.ceil(-3.3); //d2的值为 ‐3.0
        double d3 = Math.ceil(5.1); //d3的值为 6.0
        System.out.println("d1 = " + d1);
        System.out.println("d2 = " + d2);
        System.out.println("d3 = " + d3);
    }
}

在这里插入图片描述

  • public static double floor(double a):返回小于等于参数最大的整数。
public class Math_Demo01 {
    public static void main(String[] args) {
        double d1 = Math.floor(3.3); //d1的值为3.0
        double d2 = Math.floor(-3.3); //d2的值为‐4.0
        double d3 = Math.floor(5.1); //d3的值为 5.0
        System.out.println("d1 = " + d1);
        System.out.println("d2 = " + d2);
        System.out.println("d3 = " + d3);
    }
}

在这里插入图片描述

  • public static long round(double a):返回最接近参数的long。(相当于四舍五入方法)
public class Math_Demo01 {
    public static void main(String[] args) {
        long d1 = Math.round(5.5); //d1的值为6.0
        long d2 = Math.round(5.4); //d2的值为5.0
        System.out.println("d1 = " + d1);
        System.out.println("d2 = " + d2);
    }
}

在这里插入图片描述

4.3 练习

请使用Math相关的API,计算在 -10.8 到 5.9 之间,绝对值大于 6 或者小于 2.1 的整数有多少个?

public class Math_Test01 {
    public static void main(String[] args) {
        // 定义最小值
        double min = -10.8;
        // 定义最大值
        double max = 5.9;
        // 定义变量计数
        int count = 0;
        // 范围内循环
        for (double i = Math.ceil(min); i <= max; i++) {
            // 获取绝对值并判断
            if (Math.abs(i) > 6 || Math.abs(i) < 2.1) {
                // 计数
                count    ++  ;
            }
        }
        System.out.println("个数为: " + count + " 个");
    }
}

在这里插入图片描述

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

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

相关文章

[附源码]计算机毕业设计JAVA新冠疫苗线上预约系统

[附源码]计算机毕业设计JAVA新冠疫苗线上预约系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM my…

Web3.0 DApp(去中心化应用程序)设计架构

先来回顾下 Web2.0 应用程序架构&#xff0c;一图胜千言&#xff1a; 图示是对大多数 Web 2.0 应用程序如何工作的一个很好的抽象总结。以一个博客平台为例&#xff1a; 首先&#xff0c;必须有一个地方来存储基本数据&#xff0c;也就是数据库&#xff1b; 其次&#xff0c;…

快速串联 RNN / LSTM / Attention / transformer / BERT / GPT(未完待续)

参考&#xff1a; 李宏毅2021/2022春机器学习课程王树森 RNN & Transformer 教程 文章目录0. 背景&#xff1a;序列数据及相关任务1. 早期序列模型1.1 循环神经网络 RNN1.2 长短期记忆网络 LSTM1.3 改善 RNN/LSTM 的三个技巧1.3.1 通过堆叠扩展为深度模型1.3.2 使用双向模…

使用学校的服务器跑深度学习

&#x1f31e;欢迎来到深度学习的世界 &#x1f308;博客主页&#xff1a;卿云阁 &#x1f48c;欢迎关注&#x1f389;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f31f;本文由卿云阁原创&#xff01; &#x1f320;本阶段属于练气阶段&#xff0c;希望各位仙友顺利完…

原型工具与代码实现的差距及改进设想

背景 最近经常根据墨刀设计的原型开发微信小程序页面&#xff0c;使用的多了总感觉原型只能参考&#xff0c;原型跟代码实现总差一小步。原型中提供的CSS并不能直接复制到代码中&#xff0c;导致编码人员复刻原型设计时总有差距。本文先列举出一些原型和实现的差距&#xff0c;…

RS232/RS485信号转12路模拟信号 隔离D/A转换器YL34

特点&#xff1a; ● RS-485/232接口&#xff0c;隔离转换成12路标准模拟信号输出 ● 可选型输出4-20mA或0-10V控制其他设备 ● 模拟信号输出精度优于 0.2% ● 可以程控校准模块输出精度 ● 信号输出 / 通讯接口之间隔离耐压3000VDC ● 宽电源供电范围&#xff1a;10 ~ 3…

信息收集的工具简介和常见操作

目录 前言 域名信息 工具 子域名信息 工具 域名DNS解析信息 工具 ip信息 工具 CDN绕过 方法 工具 端口服务信息 常见端口总结 基本概念 扫描工具 指纹识别 识别对象 cms指纹识别 识别思路 工具 其他工具 cdn识别 常用工具 waf识别 触发 工具 Google…

营业利润里首次突破两位数,瑞幸能否延续神话?

近期&#xff0c;瑞幸咖啡公布了Q3财报&#xff0c;三季度继续延续了上半年良好的增长势能。总净收入39亿元&#xff0c;同比增长65.7%&#xff0c;营业利润率首次突破双位数达到了15%。 门店数量增长&#xff1a;Q3新增651家&#xff0c;达到7846家门店。从开店节奏看&#…

RCNN算法思想简单讲解概述————(究极简单的讲述和理解)

学习的过程中发现一个问题&#xff0c;如果不能大概的了解一下一个算法的思想直接去看他的论文&#xff0c;或者去看他算法的讲解就很痛苦&#xff0c;看不懂&#xff0c;学的效率也非常低&#xff0c;类似我之前发的RCNN论文精度的博客。RCNN目标检测算法内容详解&#xff08;…

FreeIPA 统一身份认证实现

1、FreeIPA 简介 FreeIPA是一个用于Linux/Unix环境开源的身份管理系统,提供集中式帐户管理和身份验证,与Windows Active Directory或LDAP的作用类似。FreeIPA集成了389目录服务器、MIT Kerberos、Apache HTTP服务器、NTP、DNS、Dogtag(证书系统)和SSSD,使其成为标识管理、…

使用Flink的各种技术实现WordCount逻辑

使用Flink的各种技术实现WordCount逻辑 在大数据程序中&#xff0c;WordCount程序实现了统计词频的作用&#xff0c;这个WordCount程序也往往在大数据分析处理中一直占着非常重要的地位。统计一天内某网站的访问次数&#xff0c;需要对网站排序后求其词频&#xff0c;统计一段…

【智能电网随机调度】智能电网的双层模型时间尺度随机优化调度(Matlab代码实现)

目录 1 概述 2 数学模型 3 运行结果 4 结论 5 参考文献 6 Matlab代码实现 1 概述 随着可再生能源发电量的增加&#xff0c;配电网的能源管理正成为一项计算上具有挑战性的任务。来自光伏&#xff08;PV&#xff09;装置的太阳能可以在一分钟内发生显着变化。可以命令光伏…

MongoDB安装Mac M1

1、下载安装包&#xff1a; axInstall MongoDB Community Edition on macOS — MongoDB Manualhttps://www.mongodb.com/docs/v6.0/tutorial/install-mongodb-on-os-x/下载解压&#xff0c;重命名为mongodb 放到 /usr/local 目录下 2、配置文件打开配置文件 open -e .bash_p…

java计算机毕业设计ssm某大学校园竞赛管理系统07494(附源码、数据库)

java计算机毕业设计ssm某大学校园竞赛管理系统07494&#xff08;附源码、数据库&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&…

阿里云企业用户12月活动:c7/g7/r7系列产品报价出炉

阿里云企业用户12月优惠活动开始了&#xff0c;阿里云超企业用户热销产品&#xff0c;c7/g7/r7系列&#xff0c;4折起&#xff0c;性能优异&#xff0c;助您数智化转型。通过芯片快速路径加速&#xff0c;实现存储、网络性能以及计算稳定性的大幅提升。下方卡片显示价格为企业新…

一文读懂 HTTP/2 特性

HTTP/2 是 HTTP 协议自 1999 年 HTTP 1.1 发布后的首个更新&#xff0c;主要基于 SPDY 协议。由互联网工程任务组&#xff08;IETF&#xff09;的 Hypertext Transfer Protocol Bis&#xff08;httpbis&#xff09;工作小组进行开发。该组织于2014年12月将HTTP/2标准提议递交至…

Redis专题(六):Redis主从复制、哨兵搭建以及原理

安装redis&#xff1a;Rdis专题目录 搭建步骤 复制 redis.conf文件 > redis-6380.conf 。将上述复制的文件修改如下配置&#xff1a; a. 端口号&#xff1a;port 6380 b. pidfile /var/run/redis_6380.pid #吧pid进程号写入pidfile配置的文件 c. logfile “6380.log” d. d…

JUC系列(七) ForkJion任务拆分与异步回调

&#x1f4e3; &#x1f4e3; &#x1f4e3; &#x1f4e2;&#x1f4e2;&#x1f4e2; ☀️☀️你好啊&#xff01;小伙伴&#xff0c;我是小冷。是一个兴趣驱动自学练习两年半的的Java工程师。 &#x1f4d2; 一位十分喜欢将知识分享出来的Java博主⭐️⭐️⭐️&#xff0c;擅…

【OPENCV_系列电子PDF图书连载】计算机视觉从入门到精通完整学习路线专栏

OPENCV_PDF图书连载之— 图像的几何变换 一、图像几何变换_a:图像坐标仿射 仿射自定义代码展示&#xff1a; warpAffine.pointsAffine【自定义包】 from img_pakage.ocv import warpAffineimg_path f../img/three_angle.png warpAffine.pointsAffine(img_path,0,0,24,217,…

python数据容器——元组、字符串

目录 一.思考 二.元组 元组定义 元组不可修改 注意事项 三.元组的操作 1.嵌套使用 2. .index方法 3. .count方法 4. len&#xff08;元组&#xff09;方法 四.字符串 1.字符串的下标 2.字符串的常用操作 字符串.index(字符串) 查找特定字符串的下标索引值 ​编辑…