(day9) 自学Java——常用API

news2024/11/17 23:40:00

AIP就是Java已经写好的各种功能的java类

目录

1.Math

2.System

3.Runtime

4.Object

5.对象工具类Objects

6.BIgInteger

7.BigDecima

8.正则表达式

(1)爬虫

(2)带条件爬取,贪婪爬取和识别正则的两个方法

(3)捕获分组和非捕获分组

9.JDK7以前时间相关类

10.JDK8新增时间相关类

11.包装类

12.综合练习


1.Math

工具类:类名知其意,私有化构造方法,方法定义为静态。

Math是进行数学计算的工具类

Math的sqrt,开平方

Math的cbrt,开立方

Math的ceil(英语:天花板),是向上取整

Math的floor(英语:地板),是向下取整

Math的random的取值范围,0.0是闭区间(包括0.0),1.0是开区间(不包括1.0)

Math的abs有个bug,比如,int类型的取值范围是 -2147483648~2147483647,如果Math.abs(-2147483648)的结果还是 -2147483648,因为int的范围不包括正数2147483648。

如果用Math.absExact(-2147483648),超出范围会报错

 练习:判断一个数是否为质数

左边的因子小于等于平方根,右边的因子大于等于平方根。所以只用遍历平方根左边的因子即可

public class MathDemo {
    public static void main(String[] args) {
        System.out.println(getPrime(7));
    }

    public static boolean getPrime(int number) {
        for (int i = 2; i <=Math.sqrt(number); i++) {
            if (number%i==0){
                return false;
            }
        }
        return true;
    }
}

练习:自幂数,一个n位自然数等于自身各个数位上数字的n次幂之和

要求1:统计一共有多少个水仙花数。

要求2:证明没有两位的自幂数。

要求3:分别统计有多少个四叶玫瑰数和五角星数(答案都为3)

//要求1:统计一共有多少个水仙花数。
public class MathDemo {
    public static void main(String[] args) {
        int count=0;
        for (int i = 100; i <=999; i++) {
            int ge=i%10;
            int shi=i/10%10;
            int bai=i/100%10;
            double result=Math.pow(ge,3)+Math.pow(shi,3)+Math.pow(bai,3);
            if (i==result){
                count++;
                System.out.println(i);
            }
        }
        System.out.println(count+"个");
    }
}
//要求2:证明没有两位的自幂数。
public class MathDemo {
    public static void main(String[] args) {
        int count=0;
        for (int i = 10; i <=99; i++) {
            int ge=i%10;
            int shi=i/10%10;
            double result=Math.pow(ge,2)+Math.pow(shi,2);
            if (i==result){
                count++;
                System.out.println(i);
            }
        }
        System.out.println(count+"个");
    }
}
//要求3:分别统计有多少个四叶玫瑰数和五角星数(答案都为3)
public class MathDemo {
    public static void main(String[] args) {
        int count=0;
        for (int i = 1000; i <=9999; i++) {
            int ge=i%10;
            int shi=i/10%10;
            int bai=i/100%10;
            int qian=i/1000%10;
            double result=Math.pow(ge,4)+Math.pow(shi,4)+Math.pow(bai,4)+Math.pow(qian,4);
            if (i==result){
                count++;
                System.out.println(i);
            }
        }
        System.out.println(count+"个");
    }
}
//----------------------------------------------------------------
public class MathDemo {
    public static void main(String[] args) {
        int count=0;
        for (int i = 10000; i <=99999; i++) {
            int ge=i%10;
            int shi=i/10%10;
            int bai=i/100%10;
            int qian=i/1000%10;
            int wan=i/10000%10;
            double result=Math.pow(ge,5)+Math.pow(shi,5)+Math.pow(bai,5)+Math.pow(qian,5)+Math.pow(wan,5);
            if (i==result){
                count++;
                System.out.println(i);
            }
        }
        System.out.println(count+"个");
    }
}

2.System

System也是一个工具类,提供了一些与系统相关的方法

 

1.如果数据源数组和目的地数组都是基本数据类型,两者类型必须保持一致,否则会报错

2.拷贝的时候需要考虑数组长度,超出范围,也会报错

3.如果数据源数组和目的地数组都是引用数据类型,子类类型可以赋值给父类

3.Runtime

1.Runtime表示当前虚拟机的运行环境

2.这个类里的方法不是静态的,想要调用方法,就要获取Runtime的对象。

3.Runtime的对象不能直接new,要用getRuntime()

4.Object

在顶级父类中只有无参的构造方法,因为不可能有所有事物的共性,也就没有参数

 

1.如果打印一个对象,想要看到属性值,那就要重写toString方法。

2.在重写方法中,把对象的属性值进行拼接。

1.如果没有重写equals方法,那么默认使用Object中的方法进行比较,比较地址值是否相等。

2.一般地址值对于我们意义不大,所以会重写,重写之后比较的是对象内部的属性值。

 

 对象克隆,把A对象的属性值完全拷贝给B,也叫对象拷贝,对象复制

 字符串在串池中,复用。

5.对象工具类Objects

Objects是一个对象工具类,提供了一些操作对象的方法。

6.BIgInteger

 BIgInteger是个对象,不能直接加减乘除等计算,都要用方法来完成。

 

  将二进制数按规则(32位为一组)分割,然后存到数组中,数组中第二个是补码

7.BigDecima

 BigDecima作用:1.用于小数的精确运算。

                                 2.用来表示很大的小数

1.如果表示的数字不大,没有超出double的取值范围,建议使用静态方法。

2.如果表示的数字比较大,超出了double的取值范围,建议使用构造方法。

3.如果传递的是0~10的之间整数,包括0和10,那么方法会返回已经创建好的对象,不会重

   新new,(10.0就会使用new,因为10.0不是int类型)。

 存储方式:遍历每个字符,然后转换为ascii码,放到数组中存储。

8.正则表达式

作用:1.校验字符串是否满足规则

            2.在一段文本中查找满足要求的内容

类:pattern(在api文档查看)

1.正则表达式中,从左到右,一个一个匹配。

2.[ ] 方括号表示一个范围 ,在这个范围里只能匹配一个字符。

3.{ }大括号表示匹配字符个数。例:{6,}至少匹配6个字符,{4}只匹配4个字符。

4.如果要求两个范围的交集,要用&&,不能只写一个,一个&只是一个简单的符号。

5.” \d “等使用时,需要加个” \ “(转义)

6.( )小括号表示分组。

7.  (?i)问号和字符i组合,可以忽略它后面字符的大小写。a(?i)bc,这个就会忽略bc的大小  

    写,所以 aBC是true。

编写写正则表达式: 1.按照正确数据进行拆分

                                     2.找出每部分规律,并编写正则表达式,每部拼接起来就是完整表达式

                                     3.从左到右书写

练习:

用正则表达式验证用户输入的手机号码是否满足要求,13276898988,13245647587

用正则表达式验证用户输入的邮箱是否满足要求,2909378766@qq.com,zhangsan@itcast.cnn

用正则表达式验证用户输入的座机电话号码是否满足要求,020-2323343,0712-2425687

public class RegexDemo {
    public static void main(String[] args) {
        //匹配电话号码13276898988,15245647587
        //第一位一定是1,第二位在3~9之间,后面的数字随机
        String regex1="1[3-9]\\d{9}";
        System.out.println("13276898988".matches(regex1)); //true
        System.out.println("15245647587".matches(regex1)); //true
        System.out.println("-------------------------");

        //匹配邮箱是否满足要求,2909378766@qq.com,zhangsan@itcast.cnn,dlei0009@pci.com.cn
        //@前面部分:\w+
        String regex2="\\w+@[\\w&&[^_]]{2,6}(\\.[a-zA-Z]{2,3}){1,2}";
        System.out.println("2909378766@qq.com".matches(regex2));
        System.out.println("zhangsan@itcast.cnn".matches(regex2));
        System.out.println("dlei0009@pci.com.cn".matches(regex2));
        System.out.println("-------------------------");

        //匹配座机电话号码是否满足要求,020-2323343,0712-2425687,0212453424
        //?表示匹配-,0次或1次
        //-后面数字的第一位不能为0
        String regex3="0\\d{2,3}-?[1-9]\\d{4,9}";
        System.out.println("020-2323343".matches(regex3)); //true
        System.out.println("0712-2425687".matches(regex3)); //true
        System.out.println("0212453424".matches(regex3)); //true
        System.out.println("-------------------------");
    }
}

练习:用正则完成以下需求

验证用户名是否满足要求:

        大小写字母,数字,下划线一共4-16位。

验证身份证号码是否满足要求:

        简单要求:18位,前17位任意数字,最后一位可以是数字,可以是大写或小写的x。

        复杂要求:按照身份证号码的格式严格要求。

public class RegexDemo {
    public static void main(String[] args) {
        //用户名校验
        //大小写字母,数字,下划线一共4-16位。
        String regex1="\\w{4,16}";
        System.out.println("zhangannn".matches(regex1)); //true
        System.out.println("xxxx_ssss".matches(regex1)); //true
        System.out.println("-----------------");
        //乱写的511364874323458473,51156497432345847x,51136987432645847X
        //18位,前17位任意数字,最后一位可以是数字,可以是大写或小写的x。
        String regex2="[1-9]{17}[\\dxX]";  //或者[1-9]{17}(\\d|x|X)或者[1-9]{17}(\\d|(?i)x)
        System.out.println("511364874323458473".matches(regex2));
        System.out.println("51156497432345847x".matches(regex2));
        System.out.println("51136987432645847X".matches(regex2));
        System.out.println("-----------------");
        //身份证号码严格校验
        //前面6位:省份,市区,派出所等信息,第一位不能为0,后面5位是任意数字   [1-9]\\d{5}
        //年份前半段:18,19,20     年份后半段:任意数字出现两次   (18|19|20)\\d{2}
        //月份:01~09 10 11 12   (0[1-9]|1[0-2])
        //日期:01~31   (0[1-9]|[12]\\d|3[01])
        //最后四位:任意数字出现3次,最后一位可以是数字也可以是大写或小写的x  \\d{3}(\\d|(?i)x)
        String regex3="[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}(\\d|(?i)x)";
        System.out.println("51156187405291747x".matches(regex3));//错误的身份证false
        System.out.println("51136197404202047X".matches(regex3));//错误的身份证false
        System.out.println("513723180111050521".matches(regex3));//正确的身份证true
    }
}

(1)爬虫

Pattern:表示正则表达式

Matcher:文本匹配器,作用是按照正则表达式的规则去读取字符串,从头开始读取

(在大串中去找符合匹配规则的子串)

1.获取正则表达式的对象

Pattern p=Pattern.compile("Java\\d{0,2}");

2.获取文本匹配器的对象

Matcher m=p.matcher(str);

3.查找匹配内容是否存在

m.find();

4.获取查找到的能匹配的内容

m.group();

练习
本地爬虫和网络爬虫
有如下文本,请按照要求爬取数据。
Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和ava11,因为这
两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台。
要求:找出里面所有的JavaXX

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexDemo {
    public static void main(String[] args) {
       String str="Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和Java11,因为这\n" +
               "两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台";
       Pattern p=Pattern.compile("Java\\d{0,2}");
       Matcher m=p.matcher(str);
       while (m.find()){
           System.out.println(m.group());
       }
    }
}

练习
需求:把下面文本中的电话,邮箱,手机号,热线都爬取出来。
来黑马程序员学习Java,
电话:18512516758,18512508907
或者联系邮箱:boniu@itcast.cn,
座机电话:01036517895,010-98951256
邮箱:bozai@itcast.cn,
热线电话:400-618-9090,400-618-4000,4006184000,4006189090

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexDemo {
    public static void main(String[] args) {
       String str="练习\n" +
               "需求:把下面文本中的电话,邮箱,手机号,热线都爬取出来。\n" +
               "来黑马程序员学习Java,\n" +
               "手机号:18512516758,18512508907\n" +
               "或者联系邮箱:boniu@itcast.cn,\n" +
               "座机电话:01036517895,010-98951256\n" +
               "邮箱:bozai@itcast.cn,\n" +
               "热线电话:400-618-9090,400-618-4000,4006184000,4006189090";
       //邮箱:\\w+@[\\w&&[^_]]{2,6}(\\.[a-zA-Z]{2,3}){1,2}
        //座机:010-?\\d{8}
        //手机:1[3-9]\d{9}
        //热线:400-?618-?[49]0[09]0
        String regex="\\w+@[\\w&&[^_]]{2,6}(\\.[a-zA-Z]{2,3}){1,2}|010-?\\d{8}|1[3-9]\\d{9}|400-?618-?[49]0[09]0";
       Pattern p=Pattern.compile(regex);
       Matcher m=p.matcher(str);
        while (m.find()){
            System.out.println(m.group());
        }
    }
}

(2)带条件爬取,贪婪爬取和识别正则的两个方法

贪婪爬取:尽可能多的爬取数据。

非贪婪爬取:尽可能少的爬取数据。

(Java中默认贪婪爬取)

(3)捕获分组和非捕获分组

分组就是一个()小括号

练习: 捕获分组就是把这一组的数据捕获出来,再用一次。
需求1:判断一个字符串的开始字符和结束字符是否一致?只考虑一个字符
举例: a123a    b456b    17891      &abc&
需求2:判断一个字符串的开始部分和结束部分是否一致?可以有多个字符
举例: abc123abc         b456b        123789123        &!@abc&!@
需求3:判断一个字符串的开始部分和结束部分是否一致?开始部分内部每个字符也需要一致
举例: aaa123aaa         bbb456bbb     111789111         &&abc&&

public class RegexDemo {
    public static void main(String[] args) {
//        需求1:判断一个字符串的开始字符和结束字符是否一致?只考虑一个字符
//        举例: a123a    b456b    17891      &abc&
//                需求2:判断一个字符串的开始部分和结束部分是否一致?可以有多个字符
//        举例: abc123abc         b456b        123789123        &!@abc&!@
//                需求3:判断一个字符串的开始部分和结束部分是否一致?开始部分内部每个字符也需要一致
//        举例: aaa123aaa         bbb456bbb     111789111         &&abc&&

        //需求1
        String regex="(.).+\\1";
        System.out.println("a123a".matches(regex));//true
        System.out.println("b456b".matches(regex));//true
        System.out.println("17891".matches(regex));//true
        System.out.println("&abc&".matches(regex));//true
        System.out.println("-------------------");
        //需求2
        String regex1="(.+).+\\1";
        System.out.println("abc123abc".matches(regex1));//true
        System.out.println("b456b".matches(regex1));//true
        System.out.println("123789123".matches(regex1));//true
        System.out.println("&!@abc&!@".matches(regex1));//true
        System.out.println("-------------------");
        //需求3
        //(.)表示一个任意字符,把它看成一组
        String regex2="((.)\\2*).+\\1";
        System.out.println("aaa123aaa".matches(regex2));//true
        System.out.println("bbb456bbb".matches(regex2));//true
        System.out.println("111789111".matches(regex2));//true
        System.out.println("&&abc&&".matches(regex2));//true
    }
}

练习:口吃替换

需求:将字符串:我要学学编编编编程程程程程

替换为:我要学编程

public class RegexDemo {
    public static void main(String[] args) {
        String str="我要学学编编编编程程程程程";
        String regex="(.)\\1+";
        String result=str.replaceAll(regex,"$1");
        System.out.println(result);
    }
}

9.JDK7以前时间相关类

 练习:将2000-11-11转换成2000年11月11日

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class RegexDemo {
    public static void main(String[] args) throws ParseException {
        String str="2000-11-11";
        //解析
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        Date d=sdf.parse(str);
        //格式化
        SimpleDateFormat sdf1=new SimpleDateFormat("yyyy年MM月dd日");
        String result=sdf1.format(d);
        System.out.println(result);
    }
}

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class RegexDemo {
    public static void main(String[] args) throws ParseException {
        String startTime="2023年11月11日 0:00:00";
        String endTime="2023年11月11日 0:10:00";
        String clickTimeJ="2023年11月11日 0:01:00";
        String clickTimeP="2023年11月11日 0:11:00";
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 H:mm:ss");
        Date start = sdf.parse(startTime);
        Date end = sdf.parse(endTime);
        Date xiaoJ = sdf.parse(clickTimeJ);
        Date xiaoP = sdf.parse(clickTimeP);
        method(start, end, xiaoJ);  //参加上了
        method(start, end, xiaoP);  //没参加上
    }

    public static void method(Date start, Date end, Date xiao) {
        if (start.getTime()<=xiao.getTime()&&end.getTime()>=xiao.getTime()){
            System.out.println("参加上了");
        }
        else{
            System.out.println("没参加上");
        }
    }
}

1.Calendar是一个抽象类,不能直接new,而是通过一个静态方法获取到子类对象。

2.底层原理:会根据系统的不同时区来获取不同的日历对象,默认表示当前时间。

                    会把时间中的纪元,年,月,日,时,分,秒,星期,等等放到一个数组中。   

10.JDK8新增时间相关类

 

Instant.now()获取对象

上面两个是静态的,要用类名来调用;下面的要用对象来调用。

11.包装类

包装类:基本数据类型对应的引用类型

(简言说,就是将基本数据类型变成一个对象

 

 

 

 

 键盘输入用nextLine(),然后进行类型转换。

12.综合练习

练习1:键盘录入一些1~100的整数,并添加到集合中,直到集合内数据和超过200为止。

import java.util.ArrayList;
import java.util.Scanner;

public class Test {
    public static void main(String[] args){
        //创建集合
        ArrayList<Integer> al=new ArrayList<>();
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.print("请输入1~100的数字:");
            String line = sc.nextLine();
            Integer num = Integer.parseInt(line);
            if (num<1||num>100){
                System.out.println("不符合要求");
                continue;
            }
            al.add(num);
            int sum=0;
            for (int i = 0; i < al.size(); i++) {
                sum=sum+al.get(i);
            }
            if (sum>=200){
                System.out.println(sum);
                return;
            }
        }
    }
}

练习2:自己实现parseInt方法的效果,将字符串形式的数据转成整数。

要求:字符串里只能是数字,不能有其他字符

            最少一位,最多十位

           0不能开头

public class Test {
    public static void main(String[] args){
        String str="12345";
        String regex="[1-9]\\d{0,9}";
        if(!str.matches(regex)){
            System.out.println("数据错误");
        }else{
            int result=0;
            for (int i = 0; i < str.length(); i++) {
                int num=str.charAt(i)-'0';
                result=result*10+num;
            }
            System.out.println(result+1);//可以进行运算,所以已经转换成int类型了
        }
    }
}

练习3:

定义一个方法自己实现toBinaryString方法的效果,将一个十进制整数转成字符串表示的二进制。

public class Test {
    public static void main(String[] args){
        int num=8;
        String str=toBinaryString(num);
        System.out.println(str);
    }

    private static String toBinaryString(int num) {
        StringBuilder sb=new StringBuilder();
        while (num!=0){
            int remiandar=num%2;
            //倒着拼接数据
            sb.insert(0,remiandar);
            num=num/2;
        }
        String result=sb.toString();
        return result;
    }
}

练习4:使用代码实现计算你活了多少天,用JDK7和JDK8的两种方式完成

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {
    public static void main(String[] args) throws ParseException {
        //JDK7计算要用毫秒值
        //出生日期的毫秒值
        String birthday="2001-12-05";
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        Date birthTime = sdf.parse(birthday);
        long time=birthTime.getTime();
        //当前日期的毫秒值
        long time2=System.currentTimeMillis();
        //当前日期-出生日期
        long result=time2-time;
        result=result/1000/60/60/24;
        System.out.println(result);

        //JDK8
        LocalDate ld1=new LocalDate.of(2001,12,05);
        LocalDate ld2=new LocalDate.now();
        long days=ChronoUnit.DAYS.between(ld1,ld2);
        System.out.println(days);
    }
}

练习5:判断任意的一个年份是闰年还是平年。

要求:用JDK7和JDK8的两种方式完成

提示:二月有29天是闰年,一年366天是闰年

import java.text.ParseException;
import java.time.LocalDate;
import java.util.Calendar;

public class Test {
    public static void main(String[] args) throws ParseException {
        //JDK7
        Calendar c=Calendar.getInstance();
        c.set(2000,2,1);//表示3月1号
        //把日历往前减一天,如果前一天是29就是闰年
        c.add(Calendar.DAY_OF_MONTH,-1);
        int days=c.get(Calendar.DAY_OF_MONTH);
        if (days==29){
            System.out.println("闰年");
        }
        //JDK8
        LocalDate ld=LocalDate.of(2000,3,1);
        LocalDate days1 = ld.minusDays(1);
        int days2=days1.getDayOfMonth();
        //System.out.println(days2);
        if (days2==29){
            System.out.println("闰年");
        }
    }
}

 

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

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

相关文章

一起自学SLAM算法:12.3 autoware导航系统

连载文章&#xff0c;长期更新&#xff0c;欢迎关注&#xff1a; 上面介绍的ros-navigation和riskrrt导航系统主要都是用于机器人的低速导航&#xff0c;并且大多基于2D地图。而autoware导航系统主要用于无人驾驶汽车的高速导航&#xff0c;并且基于3D地图。除了所导航速度高一…

软件工程(一)——软件开发模型和方法

目录 &#xff08;一&#xff09;软件开发方法 &#xff08;二&#xff09;瀑布模型 &#xff08;三&#xff09;原型模型 &#xff08;四&#xff09;螺旋模型与增量模型 &#xff08;五&#xff09;V模型、喷泉模型、RAD模型 (六) 统一过程&#xff08;RUP&#xff09; …

idea 中 connot run program “svn“ 系统找不到文件

idea 中 connot run program “svn“ 系统找不到文件1. idea中svn的问题1.1 idea connot run program "svn"1.1.1 解决办法-重装svn1.2 idea中check out灰色不可用1.2.1 解决办法—装插件1. idea中svn的问题 1.1 idea connot run program “svn” 如图&#xff1a;…

2023年机床工具行业研究报告

第一章 行业概况 生产和销售机床工具的行业。机床是指制造机器的机器&#xff0c;亦称工作母机或工具机&#xff0c;习惯上简称机床。一般分为金属切削机床、锻压机床和木工机床等。现代机械制造中加工机械零件的方法很多&#xff1a;除切削加工外&#xff0c;还有铸造、锻造、…

【ES实战】索引生命周期管理(一)

索引生命周期管理IL&#xff2d;&#xff08;index lifecycle management&#xff09; 文章目录索引生命周期管理IL&#xff2d;&#xff08;index lifecycle management&#xff09;概述版本矩阵主要概念索引生命周期阶段的过渡阶段的执行生命周期中的操作生命周期策略索引翻滚…

AzureRT:一款能够实现各种Azure红队技战术的PowerShell模块

关于AzureRT AzureRT是一款能够实现各种Azure红队技战术的PowerShell模块&#xff0c;在AzureRT的帮助下&#xff0c;广大研究人员可以从攻击者的角度来与Azure和Azure AD进行交互&#xff0c;以此来测试目标环境的安全性。 AzureRT可以帮助广大研究人员测试和处理基于访问令…

【工具】操作PDF推荐的java依赖

Apache PDFBox |一个 Java PDF 库 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox-app</artifactId><version>2.0.27</version></dependency> Apache PDFBox - A Java PDF Library Apache PDFBox 库…

超详解线段树(浅显易懂)

一&#xff0c;什么是线段树&#xff1f;线段树是怎样的树形结构?线段树是一种二叉搜索树&#xff0c;而二叉搜索树&#xff0c;首先满足二叉树&#xff0c;即每个结点最多有两颗子树&#xff0c;并且是一颗搜索树&#xff0c;我们要知道&#xff0c;线段树的每个结点都存储了…

用于在过程工业中参数化配置现场设备的移动式解决方案

EndressHauser提供了一个组合套件&#xff08;包含Field Xpert和Softing的mobiLink通信工具&#xff09;&#xff0c;可用于参数化配置和现场调试。 &#xff08;将Softing的mobiLink通信工具与EndressHauser的Field Xpert SMT70或SMT77平板电脑相结合使用&#xff0c;可为用户…

再见 Matplotlib 和 Seaborn ,Python 画图建议用这个

本文主要介绍 Python 中用来替代 Matplotlib 和 Seaborn 的可视化工具 plotly&#xff0c;并结合实例讲解了 plotly 的优点和用法&#xff0c;满足了可视化绘图的交互需求。 数据可视化是人脑有效理解各种信息的最舒适、最直观的方式。对于需要处理数据的人来说&#xff0c;能…

谈思生物直播课|辛格迪副总裁“细胞治疗数字化解决方案”

近年来&#xff0c;细胞基因治疗在全球范围内得到了快速的发展。因为细胞基因治疗药物的特殊性&#xff08;从人体中采得活细胞&#xff0c;经过特别的处理技术后再输入人体&#xff09;&#xff0c;其安全性也被监管机构和药企高度关注&#xff1b;同时&#xff0c;也由于其制…

Laravel笔记-使用composer搭建Laravel环境(开发工具phpStorm)

以前写过一个&#xff0c;但没这个composer直接搭建的方便。在此记录下。 使用国内的 Composer 加速镜像 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 新建一个名为MyRestfulTest的项目&#xff1a; composer create-project larave…

测试go test

目录go test工具单元测试测试代码go test -run跳过某些测试用例子测试表格驱动测试并行测试报告方法测试覆盖率基准测试demo性能比较函数计时方法并行测试TestMainSetup与Teardownhttptest简单的 Web 应用测试Go 语言从开发初期就注意了测试用例的编写。特别是静态语言&#xf…

【java入门系列六】java基础-面向对象进阶**

学习记录&#x1f914;IDE快捷键包访问修饰符封装结合构造器进行封装继承-代码的复用性继承的构造器继承的本质super关键字方法的重写override多态**难点多态trickinstanceof动态绑定**多态数组多态参数object类trickObject类创建对象流程讨论总结谢谢点赞交流&#xff01;(❁◡…

MDK的格式化代码工具及添加快捷方式

文章目录Astyle介绍插件安装参数设置格式化整个工程参数说明快捷键设置参考Astyle介绍 Astyle 即Artistic Style&#xff0c;是一个可用于C, C, C/CLI, Objective‑C, C# 和Java编程语言格式化开源工具。 官网&#xff1a;Artistic Style - Index 插件安装 不用安装&#xf…

年前花2个月面过阿里测开岗,拿个27K也不过分吧?

背景介绍 美本计算机专业&#xff0c;代码能力一般&#xff0c;之前有过两段实习以及一个学校项目经历。第一份实习是大二暑期在深圳的一家互联网公司做前端开发&#xff0c;第二份实习由于大三暑假回国的时间比较短&#xff08;小于两个月&#xff09;&#xff0c;于是找的实…

23.1.29 make menuconfig执行过程

1、将uboot源码拷贝ubuntu中 1.在家目录创建一 -个demo文件夹 2.将en. SOURCES - stm32mp1- openstlinux-5.10- dunfell- mp1-21- 11-17_ tar_ v3.1.0. xz文件夹拷贝到~/ demo文件夹下面 3.进入~/demo目录下&#xff0c;对en . SOURCES- stm32mp1 - openstlinux-5. 10- dunfell…

第02天-Java数据结构和算法

目录 021_单链表新浪面试题 单链表面试题&#xff08;新浪、百度、腾讯&#xff09; 代码实现 022_单链表腾讯面试题 图解 代码实现 023_单链表百度面试题 图解 代码实现 024_双向链表增删改查分析图解 双向链表应用实例 图解 代码实现 026_双向链表功能测试和小结 …

10个方法教你解决虚幻4运行崩溃问题

“多年来我一直在我的电脑上使用不同版本的虚幻引擎 4&#xff0c;但最近它突然在启动时崩溃。我最初认为这是一个项目相关的问题&#xff0c;但后来注意到即使是从桌面图标或 Epic Games Launcher执行Unreal Engine 4&#xff0c;也是闪了几秒就直接闪退了。这个问题真是让我很…

Nginx从入门到精通(从安装到实践,持续更新中)

一&#xff0c;安装从官网下载相应的tar包http://nginx.org/通过命令tar zxvf tar包名 -c 解压路径 解压到指定的目录下在解压的nginx包下有一个confuture文件&#xff0c;可通过./confuture判断是否符合安装条件&#xff08;./configure --prefix/usr/local/nginx即可指定一会…