JavaSE-15 【异常】

news2024/10/6 6:50:20

文章目录

  • JavaSE-15 【异常】
  • 第一章 什么是异常
    • 1.1 异常的概念
    • 1.2 异常的体系
    • 1.3 异常的分类
    • 1.4 异常产生的过程
  • 第二章 异常的处理
    • 2.1 抛出异常throw
    • 2.2 声明异常throws
    • 2.3 捕获异常try...catch
    • 2.4 finally 代码块
    • 2.5 异常注意事项
  • 第三章 自定义异常
    • 3.1 自定义异常概述
    • 3.2 自定义异常案例

JavaSE-15 【异常】

第一章 什么是异常

1.1 异常的概念

异常:指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止

在Java中,异常本身就是一个类,产生异常就是创建一个异常对象并且抛出一个异常对象的过程

Java处理异常的方式是中断处理。

1.2 异常的体系

异常机制其实是帮助我们找到程序中的问题。

异常的根类是:java.lang.Throwable,其有两个子类,分别是

  • java.lang.error 错误
  • java.lang.exception 异常,平常所说的异常就是exception

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MZ7nat7g-1688111829375)(photo/JavaSE15_异常.assest/1671609959164.png)]

Throwable体系:

  • Error:错误,不需要处理
  • Exception: 需要进行处理的异常

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LxypUSmO-1688111829376)(photo/JavaSE15_异常.assest/src=http___img-blog.csdnimg.cn_20200116212251105.png&refer=http___img-blog.csdnimg.png)]

  • 异常处理的方式:
    • throws 抛出异常
    • try…catch 捕获异常

1.3 异常的分类

  • Exception分为两大类:
    • 运行时异常 [即程序运行时,发生的异常]。
    • 编译时异常 [即编程时编译器检查出的异常,Checked异常]。

所有的RuntimeException类及其子类的实例被称为Runtime异常;

不是RuntimeException类及其子类的异常实例则被称为Checked异常。

  • 案例
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Demo01_exception {
    /*
        Exception: 异常
            分为运行时异常和非运行时异常
            RuntimeException:运行期异常---编译期不检查,运行时出现问题,需要我们回来修改代码
            非RuntimeException:非运行期异常---编译器必须处理,否则程序编译不通过,无法运行
        Error:错误,不需要处理
     */
    //异常/错误案例
    public static void main(String[] args) throws ParseException {
        show1();//抛出异常
        show2();//捕获异常
        show3();//程序错误
    }

    private static void show3() throws ParseException {
        //异常1:编译其异常---抛出异常
        //格式化日期
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        //把字符串格式的日期转换成Date格式的日期
        Date date = format.parse("2022-12-12");
        System.out.println(date);
    }

    private static void show2() {
        //异常2:运行期异常---捕获异常
        int[] arr1 = {1, 2, 3};
        try {
            //可能会出现异常的代码
            System.out.println(arr1[3]);
        } catch (Exception e) {
            //异常的处理逻辑
            System.out.println(e);
        }
    }

    private static void show1() {
        //错误:内存溢出,出现错误:java.lang.OutOfMemoryError
        int[] arr2 = new int[1000 * 100000000];
        System.out.println(arr2);
    }
}
  • 抛出异常

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NFpFNJKq-1688111829376)(photo/JavaSE15_异常.assest/1671611994631.png)]

  • 捕获异常

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LtaNjCYO-1688111829377)(photo/JavaSE15_异常.assest/1671612037542.png)]

  • 程序错误

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PIG4GkQ0-1688111829377)(photo/JavaSE15_异常.assest/1671612089225.png)]

1.4 异常产生的过程

1、编译通过
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vjHk31VH-1688111829377)(photo/JavaSE15_异常.assest/1671613769234.png)]2、运行报错
]

3、异常过程
在这里插入图片描述

第二章 异常的处理

Java异常的处理包含五个关键字:try、catch、finally、throw、throws

2.1 抛出异常throw

throw关键字:

  • 作用:使用throw关键字在指定的方法中抛出指定的异常
  • 语法:throw new XXXException(“异常产生的原因”)

注意事项:

  • throw关键字必须写在方法的内部、
  • throw关键字后面new的对象必须是Exception或者是其子类对象
  • throw关键字抛出指定的异常对象,我们必须处理
    • throw关键字后面new的是RuntimeException或者RuntimeException对象的子类,可以不做处理,交予JVM处理,打印异常,中断程序
    • throw关键字后面new的是编译检查异常,那必须处理这个异常,方式:throws或者try…catch

案例:

public class Demo03_Throw {
    /*
        throw关键字的使用
        案例:获取指定数组下标处的元素
            1、定义方法
            2、参数:int[] arr, int index
            3、对传递给方法的参数进行校验合法性
            4、如果参数不合法,使用抛出异常的方式,告知调用者,参数传递错误
     */
    public static void main(String[] args) {
        //1、创建数组
        int[] arr1 = null;
        int[] arr2 = {1, 2, 3};
        //2、赋值调用方法
        //参数(arr1,1)
        int element1 = getELement(arr1, 1);
        System.out.println(element1);
        //参数(arr2,2)
        int element2 = getELement(arr2, 2);
        System.out.println(element2);
    }

    //定义获取数组元素的方法
    private static int getELement(int[] arr, int index) {
        //1、判断传递的参数arr是否为null
        if (arr == null) {
            //空指针异常属于运行期异常,交给JVM处理,我们不需要处理
            throw new NullPointerException("传递的数组的值是空");
        }
        //2、判断index是否在数组的范围内
        if (index < 0 || index > arr.length - 1) {
            //抛出数组下标越界异常
            throw new IndexOutOfBoundsException("传递的下标越界");
        }
        int ele = arr[index];
        //方法的返回值
        return ele;
    }
}

在这里插入图片描述

2.2 声明异常throws

throws关键字:

  • 作用:运用于方法声明之上,用于表示当前方法不处理异常,而是提醒该方法的调用者来处理异常
  • 语法格式:修饰符 返回值类型 方法名(参数类型 参数名) throws 异常类型{ … }
  • 注意:如果方法中throw抛出了编译时异常,而没有捕获处理,那么就必须通过throws声明,交给调用者处理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gk8mCZPS-1688111829379)(photo/JavaSE15_异常.assest/1671617419606.png)]

案例:

import java.io.FileNotFoundException;
import java.io.IOException;

public class Demo04_Throws {
    /*
        throws关键字
            概念:异常处理的第一种方式:交给别人处理
            作用:可以使用throws关键字处理异常对象,会把异常对象声明抛出给方法的调用者处理,
                 自己不处理,别人处理,最终交给JVM处理---中断程序
            格式:在方法声明时使用
            注意事项:
                1、必须写在方法声明处
                2、throws关键字后面的异常必须是 Exception 或者是Exception的子类
                3、方法内部如果抛出多个异常对象,那么throws后边必须声明多个异常
                4、方发声明处可以使用Exception一个类,代替多个其子类异常
                5、throws抛出异常的两种处理方式
                    a、抛出的异常交给方法调用者处理,最终交给JVM处理
                    b、try...catch处理异常
     */
    //声明异常类型存在子父类关系,直接写父类即可
    //public static void main(String[] args) throws FileNotFoundException, IOException {
    //readFile("d:\\1.txt");
    //}
    public static void main(String[] args) throws IOException {
        readFile("d:\\1.txt");
    }

    /*
        定义方法:对传递的文件路径进行合法性判断
                如果路径不是d:\\1.txt,那么就抛出文件找不到异常,抛给方法的调用者
     */
    public static void readFile(String fileName) throws FileNotFoundException, IOException {
        //判断传入的文件名称是否是以.txt结尾的
        if (!fileName.endsWith(".txt")) {
            //抛出IO异常,编译检查型异常,需要throws抛出给方法的调用者或者try...catch捕获处理
            throw new IOException("文件后缀名错误");
        }
        //判断传入文件名称是否一致
        if (!fileName.equals("d:\\1.txt")) {
            //此异常是编译检查异常,需要处理异常,可以使用throws或者try...catch
            throw new FileNotFoundException("文件找不到");
        }
        //文件名称一致,上传成功
        System.out.println("路径正常,读取文件成功");
    }
}

在这里插入图片描述

2.3 捕获异常try…catch

如果异常出现,会立即终止程序,所以需要我们处理异常,

  • 1、该方法不处理,而是声明抛出,由该方法的调用者来处理 ( throws )

  • 2、在方法中使用try-catch的语句来处理异常

try-catch的方式就是用于捕获异常

  • 作用:在Java中针对性的对某些语句进行捕获,可以对出现的异常进行指定方式的处理

  • 语法:

  • try {
        编写可能出现异常的代码;
    }catch(Exception e){
        处理异常的代码;
        打印异常、继续抛出异常;
    }
    

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ErqEmCWs-1688111829381)(photo/JavaSE15_异常.assest/1671626746308.png)]

案例:

import java.io.IOException;

public class Demo05_TryCatch {
    /*
        try-catch:异常处理的第二种方式:捕获异常自行处理
        作用:捕获产生的异常并处理
        语法:
            try{
                可能出现异常的代码;
            }catch(Exception e){
                异常处理的逻辑代码;
                记录日志,打印异常,继续抛出异常;
            }
        注意事项:
            1、try中可能抛出多个异常对象,那么可以使用多个catch捕获处理异常
            2、执行顺序:
                如果try产生异常,try---catch---继续执行catch之后的代码
                如果try没有差生异常,就不会执行catch中的代码,继续执行catch之后的代码
     */
    public static void main(String[] args) {
        //调用方法,并捕获处理异常
        try {
            //产生异常的代码
            readFule("d:\\1.tx");
        }catch (IOException e){
            //异常的处理逻辑
            System.out.println("文件名称后缀不匹配!!!");
        }
        System.out.println("后续执行的代码");
    }

    /*
        需求:
        1、定义读取文件的方法
        2、判断传递的文件名称后缀是否以.txt结尾
        3、不匹配抛出异常给方法的调用者,告知文件后缀名称不匹配
     */
    //定义方法
    public static void readFule(String fileName) throws IOException {
        if (!fileName.endsWith(".txt")){
            throw new IOException("出现异常,后缀不匹配!!!");
        }
        System.out.println("文件名匹配成功!!!");
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iDeMhIH9-1688111829381)(photo/JavaSE15_异常.assest/1671626757449.png)]

  • Throwable定义了获取异常信息的三个方法
    • 1、String getMessage(); 返回此Throwable的简短描述
    • 2、String toString(); 返回此Throwable的详细描述
    • 3、void printStackTrace(); JVM打印异常对象,默认调用此方法
import java.io.IOException;

public class Demo06_ThrowableMethods {
    /*
        Throwable定义了三个处理异常的方法
            1、String getMessage();
                返回此Throwable的简短描述
            2、String toString();
                返回此Throwable的详细描述
            3、void printStackTrace();
                JVM打印异常对象,默认调用此方法
     */
    public static void main(String[] args) {
        try {
            //出现异常的代码
            readFile("d:\\1.tx");
        } catch (IOException e) {
            System.out.println("文件名称不匹配!!!");
            /*
                1、String getMessage();
                    返回此Throwable的简短描述
                2、String toString();
                    返回此Throwable的详细描述
                3、void printStackTrace();
                    JVM打印异常对象,默认调用此方法
             */
            System.out.println("简短的信息描述是:" + e.getMessage());
            System.out.println("详细的信息描述是:" + e.toString());
            e.printStackTrace();
        }
        System.out.println("后续的代码");
    }

    private static void readFile(String fileName) throws IOException {
        if (!fileName.endsWith(".txt")) {
            throw new IOException("验证失败,不匹配");
        }
        System.out.println("文件后缀名匹配成功!!!");
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zvGmYSJY-1688111829382)(photo/JavaSE15_异常.assest/1671627495382.png)]

2.4 finally 代码块

finally:有一些特定的代码。无论异常发生与否,都需要执行。同时,因为异常导致程序跳转,导致有些代码无法被执行到,而finally就是解决这个问题的,在finally中存放的代码无论无核是会被执行的

  • 什么时候的代码必须最终执行
    • 当在try语句块中执行了一些物理的如:磁盘文件,网络连接,数据库连接等之后,我们必须在使用完毕之后关闭资源,所以finally此时配上了用处

finally语法:

		try {
            //可能出现异常的代码
        }catch (Exception e){
            //异常的处理逻辑以及错误信息的处理
        }finally {
            //释放资源
        }

finally的注意事项:

  • finally并且不能单独使用
  • finally一般用于资源释放,无论程序是否出现异常,最终都要释放资源

案例:

import java.io.IOException;

public class Demo07_Finally {
    /*
        finally的使用:
            不管是否出现异常,都会被执行
            不能单独使用
            一般用于关闭或者释放资源
     */
    public static void main(String[] args) {
        try {
            //可能出现异常的代码
            readFile("d:\\1.txt");
        } catch (IOException e) {
            //异常处理逻辑
            e.printStackTrace();
        } finally {
            //无论是否出现异常都会被执行
            System.out.println("释放资源");
        }
    }

    private static void readFile(String fileName) throws IOException {
        if (!fileName.endsWith(".txt")) {
            throw new IOException("验证失败,不匹配");
        }
        System.out.println("文件后缀名匹配成功!!!");
    }
}

在这里插入图片描述

2.5 异常注意事项

  • 多个异常捕获之后的处理方式
    • 1、多个异常分别处理
    • 2、多个异常一次捕获,多次处理
    • 3、多个异常一次捕获,一次处理

一般使用一次捕获,多次处理的方式,格式如下

try{
    可能出现异常的代码
}catch(异常类型A e){
    处理异常的代码
    //记录日志,打印异常信息,继抛出异常
}catch(异常类型B e){
    出现异常的代码
    //记录日志,打印异常信息,继抛出异常
}
  • 注意事项:
    • 这种异常处理方式,要求多个catch中的异常不能相同,并且如果catch中的多个异常之间有父子关系,那么子类异常要求在上面的catch中处理,父类异常要求在下面的catch中处理
    • 运行时异常被抛出可以不处理。
    • 如果父类抛出多个异常,子类覆盖父类方法时,只能抛出相同的异常或者其他的子类
    • 父类方法没有抛出异常,子类覆盖该方法不可能抛出异常,子类只能捕获处理
    • 在try-catch后面追加finally代码,其中的代码一定会执行,通常用于资源的释放
    • 如果finally中有return语句,永远返回finally中的结果,但是要避免这种情况的发生

案例:方式一:多个异常分别处理

import java.util.ArrayList;
import java.util.List;

public class Demo8_MoreCatch {
    /*
        多个异常的捕获方式
            1、多个异常分别处理
            2、多个异常一次捕获,多次处理
            3、多个异常一次捕获,一次处理
     */
    public static void main(String[] args) {
        //方式一:多个异常分别处理
        try {
            int[] arr = {1, 2, 3};
            //ArrayIndexOutOfBoundsException
            System.out.println(arr[3]);
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println(e);
        }

        try {
            List<Integer> list = new ArrayList<>();
            list.add(1);
            list.add(2);
            list.add(3);
            //IndexOutOfBoundsException
            System.out.println(list.get(3));
        } catch (IndexOutOfBoundsException e) {
            System.out.println(e);
        }
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4Rd5Plpc-1688111829383)(photo/JavaSE15_异常.assest/1671629809348.png)]

案例:方式二:多个异常一次捕获多次处理

import java.util.ArrayList;
import java.util.List;

public class Demo8_MoreCatch {
    /*
        多个异常的捕获方式
            1、多个异常分别处理
            2、多个异常一次捕获,多次处理
            3、多个异常一次捕获,一次处理
     */
    public static void main(String[] args) {
        /*
            方式二:多个异常一次捕获多次处理
            注意事项:
                catch里面定义的异常变量,如果有子父类观系,
                那么子类的异常变量必须写在上面,父类的写在下面
         */
        try {
            //数组下标越界
            int[] arr = {1, 2, 3};
            //ArrayIndexOutOfBoundsException
            System.out.println(arr[3]);
            //下标越界
            List<Integer> list = new ArrayList<>();
            list.add(1);
            list.add(2);
            list.add(3);
            //IndexOutOfBoundsException
            System.out.println(list.get(3));
        } catch (ArrayIndexOutOfBoundsException e) {//子类 在上
            System.out.println(e);
        } catch (IndexOutOfBoundsException e) {//父类 在下
            System.out.println(e);
        }
        System.out.println("后续代码");
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gfjWVHZ6-1688111829383)(photo/JavaSE15_异常.assest/1671630184122.png)]

案例:方式三:多个异常多个异常一次捕获,一次处理

import java.util.ArrayList;
import java.util.List;

public class Demo8_MoreCatch {
    /*
        多个异常的捕获方式
            1、多个异常分别处理
            2、多个异常一次捕获,多次处理
            3、多个异常一次捕获,一次处理
     */
    public static void main(String[] args) {
        /*
            方式二:多个异常一次捕获,一次处理
         */
        try {
            //数组下标越界
            int[] arr = {1, 2, 3};
            //ArrayIndexOutOfBoundsException
            System.out.println(arr[3]);
            //下标越界
            List<Integer> list = new ArrayList<>();
            list.add(1);
            list.add(2);
            list.add(3);
            //IndexOutOfBoundsException
            System.out.println(list.get(3));
        } catch (IndexOutOfBoundsException e) {
            System.out.println(e);
        }
        System.out.println("后续代码");
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XyFYwbCU-1688111829384)(photo/JavaSE15_异常.assest/1671630305759.png)]

第三章 自定义异常

3.1 自定义异常概述

什么是自定义异常:

  • 在Java开发的过程中,会有一些异常是JDK未定义的,此时我们需要根据业务的异常情况来自定义异常

如何自定义异常:

  • 自定义一个编译期异常,自定义类,并且继承java.lang.Exception
  • 自定义一个运行期异常,自定义类,并且继承java.lang.RuntimeException

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UVIEeoWO-1688111829384)(photo/JavaSE15_异常.assest/1671634532806.png)]

3.2 自定义异常案例

  • 需求:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2yCoLJgI-1688111829385)(photo/JavaSE15_异常.assest/1671634707667.png)]

  • 创建自定义异常类
public class Demo09_RegisterException extends Exception{
    /*
        自定义异常:
            语法格式:
                public class XXXException extends Exception/RuntimeException {
                    添加一个空参数的构造方法
                    添加一个带异常信息的构造方法
                }
            注意:
                1、自定义异常类一般都是以Exception结尾,说明该类是一个异常类
                2、自定义异常类:必须继承Exception或RuntimeException
                    a、继承Exception,那么定义的异常类是以个编译期异常类,
                        如果方法内部抛出了编译期异常,那么必须处理这个异常
                        要么抛出异常,要么try-catch捕获异常
                    b、继承RuntimeException。那么自定义的异常类就是运行期异常
                        运行期异常无需处理,交给JVM虚拟机处理---终端处理
     */
    //添加无参构造
    public Demo09_RegisterException() {
        super();
    }
    /*
        添加一个带异常信息的构造方法
     */
    public Demo09_RegisterException(String message) {
        super(message);
    }
}
  • 创建测试类
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class Demo09_TestRegister {
    /*
        需求:模拟注册操作,如果用户名存在,则抛出异常,提示用户名已存在
        步骤:
            1、使用集合保存已经注册的用户名信息
            2、使用Scanner获取用户输入的注册的用户名信息
            3、定义一个方法,对用户输入的用户名进行判断
            4、遍历集合中存储的已经注册的用户名
            5、使用输入的用户名和遍历的用户名进行比对
            6、如果是true。说明用户名已经存在,抛出自定义异常,告知用户名已经存在
            7、如果是false。继续遍历
            8、如果循环比对结束了,还没有找到重复的用户名,提示用户注册成功
     */
    //1、定义集合存放已经注册的用户名
    public static List<String> list = new ArrayList<>();

    public static void main(String[] args) throws Demo09_RegisterException {
        list.add("tom");
        list.add("tony");
        list.add("jack");
        list.add("anny");
        for (int i = 0; i < 5; i++) {
            //2、使用Scanner获取用户输入的用户名
            System.out.println("请输入您要注册的用户名");
            String username = new Scanner(System.in).nextLine();
            //3。调用方法
            checkArray(username);
            //4、打印集合
            System.out.println(list);
        }
    }

    //3、定义方法---抛出异常
    public static void checkArray(String name) throws Demo09_RegisterException {
        //遍历集合中已经存在的用户名
        for (String item : list) {
            if (item.equals(name)) {
                //true:说明用户名已经存在,抛出自定义异常,告知用户名已经存在
                throw new Demo09_RegisterException("用户名已经存在,请重新注册");
            }
        }
        //如果循环比对结束了,还没有找到重复的用户名,提示用户注册成功
        System.out.println("恭喜您注册成功");
        //添加用户名到集合中
        list.add(name);
    }
}
  • 运行结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AzdDG3iK-1688111829385)(photo/JavaSE15_异常.assest/1671634619260.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kPxeZ2ep-1688111829386)(photo/JavaSE15_异常.assest/1671634655921.png)]

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

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

相关文章

工业物联网解决方案:远程组态监控管理系统

如何高效的采集和集中工业设备PLC运行数据、工艺参数、产品质量等生产数据&#xff0c;通过数据分析反馈在制造工艺、生产流程、质量管理、设备维护和能耗管理的智能应用&#xff0c;这是工业远程组态监控管理系统可以解决的问题&#xff0c;也是众多工厂企业关注的重点。 工…

动态规划--输出路径06.25

https://www.cnblogs.com/jbelial/articles/2116074.html 博客参考 https://www.cnblogs.com/jbelial/articles/2116074.html 12. 背包问题求具体方案 - AcWing题库 由于需要求解最小字典序&#xff0c;尝试输入数据时逆序输入&#xff0c;其他不改变&#xff0c;状态含义不变…

奇安信浏览器调用JM9硬件解码操作教程

本文讲述如何通过奇安信浏览器调用景嘉微JM9系列显卡的硬件解码。 判断硬件解码是否打开方法 1.检查奇安信浏览器版本。dpkg -l | grep qaxbrowser&#xff0c;我这里是1.0.45209.2-1版本。要大于等于这个版本的奇安信浏览器才支持硬件解码。 2.打开奇安信浏览器&#xff…

海思平台OSD的实现

目录 1.海思平台OSD理论学习 1.1、OSD概述 1.2、海思OSD的4种类型 1.3、海思OSD的几个重要概念 1.4、海思平台OSD使用方法 1.5、海思平台OSD的API和关键数据结构 2.使用海思接口实现OSD---代码框架 2.1、函数调用层次 2.2、前\背景透明度、背景颜色 3.使用字库字符实现…

Jmeter远程服务模式运行时引用csv文件的路径配置

目录 前言&#xff1a; 问题 解决方法 前言&#xff1a; 在JMeter远程服务模式下运行时&#xff0c;你可以通过配置CSV文件的路径来引用该文件。CSV文件经常用于存储测试数据&#xff0c;可以在测试中进行参数化。 问题 在使用jmeter过程中&#xff0c;本机的内存等配置不…

掌握GDB调试工具,轻松排除bug!

一、什么是GDB gdb是GNU debugger的缩写&#xff0c;是编程调试工具。 GDB官网&#xff1a; https://www.gnu.org/software/gdb/GDB适用的编程语言&#xff1a; Ada / C / C / objective-c / Pascal 等。GDB的工作方式&#xff1a; 本地调试和远程调试。 目前release的最新版…

RRT* 算法研究(附 MATLAB 和 Python 实现)

RRT* 算法研究 参考 机器人路径规划、轨迹优化课程-第六讲-RRT*算法原理和代码讲解 路径规划 | 随机采样算法&#xff1a;PRM、RRT、RRT-Connect、RRT* 基于采样的运动规划算法-RRT(Rapidly-exploring Random Trees) 《改进RRT算法在移动机器人路径规划中的应用研究》 理论基础…

全网超全,pytest自动化测试框架pytest.ini配置文件详细(实战)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 pytest配置文件可…

Java 实现word、excel、ppt、txt等办公文件在线预览功能!

如何用 Java 实现word、excel、ppt、txt等办公文件在线预览功能&#xff1f;本文告诉你答案&#xff01; java 实现办公文件在线预览功能是一个大家在工作中也许会遇到的需求&#xff0c;网上些公司专门提供这样的服务&#xff0c;不过需要收费。 如果想要免费的&#xff0c;…

【ISO26262】汽车功能安全:以汽车安全完整性等级为导向和以安全为导向的分析

关于 ASIL剪裁的要求分解 表 A.1 以汽车安全完整性等级为导向和以安全为导向的分析的概览

Android Binder通信原理(五):Java 端的service 注册和获取

源码基于&#xff1a;Android R 0. 前言 在阐述相关的知识点&#xff0c;先整理个框架图&#xff0c;后面带着框架图来分析过程&#xff1a; Java 端对于binder 使用大致分为&#xff1a; Java client Java serviceJava client native service Java 端service 的注册使用 Se…

前端如何进行页面优化_如何优化前端页面

优化前端页面 1 .前期准备 1.1 首页命名为index.html / index.htm / index.php等。 1.2 需要制作404页面。 1.3 文件夹结构合理。 1.4 命名使用英文且有语义性的单词&#xff0c;并提供参考文档。 2 .结构 2.1 文件头部分 2.1.1 需要提供文档声明 2.1.2 设置utf-8的编…

虚拟机创建linux系统并使用SSH工具连接

安装VMware Workstation 创建新的虚拟机或从别人那里拷贝虚拟机文件&#xff0c;下面是我从别人那里拷贝的 虚拟机存在后&#xff0c;点击播放按钮启动虚拟机 启动成功后&#xff0c;长这个样子 虚拟机启动成功后&#xff0c;不想用linux指令操作&#xff0c;而是用windows的可…

报错:Information:java: javacTask: 源发行版 8 需要目标发行版 1.8

1.背景 编译项目或启动项目报错 2.解决方法 设置为对应的版本 3.完美

DOM编程实现动态时钟

文章目录 第一种&#xff1a;第二种&#xff1a;第三种&#xff1a; 以下是一个使用 JavaScript 和 DOM 编程实现的动态实时的时钟应用&#xff1a; 第一种&#xff1a; HTML&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"…

想知道PDF转高清图片软件哪个好?

张琳是一名设计师&#xff0c;她经常需要将自己的设计作品整理成PDF文档&#xff0c;以便向客户展示和交付。然而&#xff0c;有时客户需要对设计进行更详细的审查&#xff0c;而PDF格式的文件并不方便进行缩放和查看细节。这一问题让张琳感到非常困扰&#xff0c;她希望能够找…

HttpWatch用于界面单页性能测试

HttpWatch是强大的网页数据分析工具&#xff0c;作为插件可集成在IE工具栏&#xff0c;包括网页摘要、Cookies管理、缓存管理、消息头发送/接受、字符查询、POST 数据和目录管理功能、以及报告的输出。今天笔者就介绍HttpWatch的安装及使用。一、HttpWatch的安装 1、在百度下载…

UNI-APP前端项目开发实战

一、创建项目 1.创建项目分为通过HBuilderX可视化界面和vue-cli命令行两种方式创建 2.官方推荐使用HBuilderX可视化界面方式创建,主要是编译器跟随开发工具升级,vue-cli是跟在项目中的,需要手动通过 npx @dcloudio/uvm 命令升级。 3.使用HBuilderX有一个弊端就是无…

【雕爷学编程】Arduino动手做(135)---W5100 网络扩展板模块

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…