JAVA实训第四天

news2025/1/31 2:51:27

目录

异常 

什么是异常?

 为什么要进行异常处理?

 方法的调用堆栈

 方法调用堆栈中异常对象的传递

 Java中的异常类

 常见的异常类

 常见的异常类及出现此异常的原因

•1、java.lang.NullpointerException(空指针异常)

•2、 java.lang.ClassNotFoundException(指定的类不存在)

•3、java.lang.ClassNotFoundExceptio(指定的类不存在)

•4、java.lang.IndexOutOfBoundsException(数组下标越界异常)

•5、java.lang.IllegalArgumentException(方法的参数错误)

•6、java.lang.IllegalAccessException(没有访问权限)

•7、java.lang.ArithmeticException(数学运算异常)

•8、java.lang.ClassCastException(数据类型转换异常)

•9、 java.lang.FileNotFoundException(文件未找到异常)

•10、java.lang.ArrayStoreException(数组存储异常)

•11、java.lang.NoSuchMethodException(方法不存在异常)

•12、 java.lang.EOFException(文件已结束异常)

•13、java.lang.InstantiationException(实例化异常)

•14、java.lang.InterruptedException(被中止异常)

•15、java.lang.CloneNotSupportedException (不支持克隆异常)

•16、java.lang.OutOfMemoryException (内存不足错误)

•17、java.lang.NoClassDefFoundException (未找到类定义错误)

 Error类

 常见的错误类

 检查异常与非检查异常

 异常处理的一般步骤

异常抛出

 Throw和Throws的区别

异常捕获

 finally

 Finally和final以及finalize的区别

 创建自己的异常类

异常处理

 作业


异常 

什么是异常?

 为什么要进行异常处理?

 方法的调用堆栈

 Java程序在执行的过程中,形成了一个先进后出的调用堆栈,各方法之间依照调用先后的不同,由先至后的进入调用堆栈,堆栈的最上层即是当前被调用执行的方法。该方法执行完毕后,会将处理器控制权交还给调用他的方法,依此类推。

 方法调用堆栈中异常对象的传递

 

 

 当某一方法中的一个语句抛出一个异常时,如果该方法中没有处理该异常的语句,那么该方法就会中止执行,并将这个异常传递给堆栈中的下一层方法直到某一方法中含有处理该异常的语句为止。如果该异常被传递至主方法,而主方法中仍然没处理该异常的语句,则异常将会被抛至JVM,程序中断

 Java中的异常类

 Java语言中,任何的异常对象都是Throwable类的直接子类或间接子类的实例Java的类库已经提供了一些常见的异常类,如果这些异常类不能够满足要求,用户也可以创建自己的异常类。

 常见的异常类

 常见的异常类及出现此异常的原因

1java.lang.NullpointerException(空指针异常)

原因:这个异常经常遇到,异常的原因是程序中有空指针,即程序中调用了未经初始化的对象或者是不存在的对象。经常出现在创建对象,调用数组这些代码中,比如对象未经初始化,或者图片创建时的路径错误等等。对数组代码中出现空指针,是把数组的初始化和数组元素的初始化搞混淆了。数组的初始化是对数组分配空间,而数组元素的初始化,是给数组中的元素赋初始值

2java.lang.ClassNotFoundException(指定的类不存在)

原因:当试图将一个 String 类型数据转换为指定的数字类型,但该字符串不满足数值型数据的要求时,就抛出这个异常。例如将String 类型的数据 "123456" 转换为数值型数据时,是可以转换的的。但是如果 String 类型的数据中包含了非数字型的字符,如123*56 ,此时转换为数值型时就会出现异常。系统就会捕捉到这个异常,并进行处理

3java.lang.ClassNotFoundExceptio(指定的类不存在)

原因:是因为类的名称和路径不正确,通常都是程序试图通过字符串来加载某个类的时候可能会引发异常。例如:
调用 Class.forName () 、或者调用 ClassLoad finaSystemClass () 、或者是 LoadClass () 时出现异常

4java.lang.IndexOutOfBoundsException(数组下标越界异常)

原因:查看程序中调用的数组或者字符串的下标值是不是超出了数组的范围,一般来说,显示调用数组不太容易出这样的错,但隐式调用就有可能出错了,还有一种情况,是程序中定义的数组的长度是通过某些特定方法决定的,不是事先声明的,这个时候可以先查看一下数组的length,以免出现这个异常

5java.lang.IllegalArgumentException(方法的参数错误)

例如 g.setColor ( int red,int green,int blue)这个方法中的三个值,如果有超过255的会出现这个异常,如果程序中存在这个异常,就要去检查一下方法调用中的参数传递或参数值是不是有错

6java.lang.IllegalAccessException(没有访问权限)

当程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。如果程序中用了 Package 的情况下有可能出现这个异常

7java.lang.ArithmeticException(数学运算异常)

当数学运算中出现了除以零这样的运算就会出这样的异常。

8java.lang.ClassCastException(数据类型转换异常)

当试图将对某个对象强制执行向下转换,但该对象又不可转换或又不可转换为其子类的实例时将出现该异常

9java.lang.FileNotFoundException(文件未找到异常)

当程序打开一个不存在的文件来进行读写时将会引发该异常。该异常由 FileInputStream,FileOutputStream ,RandomAccessFile的构造器声明抛出,即使被操作的文件存在,但是由于某些原因不可访问,比如打开一个只有只读权限的文件并向其中写入数据,以上构造方法依然会引发异常

10java.lang.ArrayStoreException(数组存储异常)

当试图将类型为不兼容类型的对象存入一个 Object[] 数组时将引发异常

11java.lang.NoSuchMethodException(方法不存在异常)

当程序试图通过反射来创建对象,访问 ( 修改或读取 ) 某个方法,但是该方法不存在就会引发异常。

12java.lang.EOFException(文件已结束异常)

当程序在输入的过程中遇到文件或流的结尾时,引发异常。因此该异常用于检查是否达到文件或流的结尾

13java.lang.InstantiationException(实例化异常)

当试图通过 Class newInstance () 方法创建某个类的实例 , 但程序无法通过该构造器来创建该对象时引发。
Class 对象表示一个抽象类,接口,数组类,基本类型 。该 Class 表示的类没有对应的构造器。

14java.lang.InterruptedException(被中止异常)

当某个线程处于长时间的等待、休眠或其他暂停状态,
而此时其他的线程通过 Thread interrupt 方法终止该线程时抛出该异常。

15java.lang.CloneNotSupportedException (不支持克隆异常)

当没有实现 Cloneable 接口或者不支持克隆方法时 , 调用其 clone() 方法则抛出该异常

16java.lang.OutOfMemoryException (内存不足错误)

当可用内存不足以让 Java 虚拟机分配给一个对象时抛出该错误

17java.lang.NoClassDefFoundException (未找到类定义错误)

当Java虚拟机或者类装载器试图实例化某个类,而找不到该类的定义时抛出该错误

package exception;

import org.junit.Test;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;

public class JunitDemo {

    @Test
    public void testException1(){

//        空指针异常
       /* String str  = null;
        System.out.println(str.length());*/
        String str  = null;
        if (str!=null) {
            System.out.println(str.length());
        }
    }


    /**
     * 数组下标越界异常:
     * java.lang.ArrayIndexOutOfBoundsException: 4
     */
    @Test
    public void testException2(){
        Integer[] arr = {1,4,5,6};
//        System.out.println(arr[4]);
        int index = 3;
        if(index<arr.length){
            System.out.println(arr[index]);
        }

    }


    /**
     * java.lang.NumberFormatException: For input string: "abc"
     */
    @Test
    public void testException3(){

//        数据转换异常
        String str = "123";
//        通过正则匹配看是否全都是数字
        boolean flg = str.matches("\\d{1,}");

        if (flg){
            int result = Integer.parseInt(str);
            System.out.println(result);
        }

    }

    /**
     * 类型转换异常:
     * java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
     */
    @Test
    public void testException4(){

        /*List list = new ArrayList();
        list.add("hello");
        list.add(10);
        list.add(20);
        for (Object ele:list) {
            int num = (int)ele;
        }*/

        /*List<Integer> list = new ArrayList();
//        list.add("hello");
        list.add(10);
        list.add(20);
        for (Object ele:list) {
            int num = (int)ele;
        }*/

        List list = new ArrayList();
        list.add("hello");
        list.add(10);
        list.add(20);
        for (Object ele:list) {
            if (ele instanceof  Integer){
                int num = (int)ele;
                System.out.println("num:"+num);
            }else{
                System.out.println("不可转换"+ele);
            }


        }



    }


    /**
     * 并发修改异常:java.util.ConcurrentModificationException
     */
    @Test
    public void testException5(){
        List<Integer> list = new ArrayList();
        list.add(10);
        list.add(20);
        list.add(5);

        /*Iterator<Integer> its = list.iterator();
        while (its.hasNext()) {
            Integer element = its.next();
            if (element==10){
                list.remove(element);
            }
        }*/

        for (int i = 0; i < list.size(); i++) {
            Integer element = list.get(i);
            if (element==10){
                list.remove(element);
            }
        }
    }

    @Test
    public void testException6(){
        List<Integer> list = new ArrayList();
        list.add(10);
        list.add(20);
        list.add(5);
//        java.lang.IllegalStateException: stream has already been operated upon or closed
        Stream<Integer> stream = list.stream();
        stream.forEach(t-> System.out.println(t));

//        流只能被消费一次 再用时需要重新获取流对象
        stream = list.stream();
        long count = stream.distinct().count();
    }
}

 

package exception;

public class StringIndexOutOf {
    public static void main(String args[]) {
        System.out.println("字符串索引越界异常");

        try{
            String str = args[0];
            System.out.println("第四个字符为 " + str.charAt(3));
            int aa = Integer.parseInt(args[0]);
            System.out.println("平方为" + aa * aa);
        }catch (ArrayIndexOutOfBoundsException e){
            System.out.println("ArrayIndexOutOfBoundsException。。。。。。。");
        }catch (StringIndexOutOfBoundsException e){
            System.out.println("StringIndexOutOfBoundsException.....");
        }catch (NumberFormatException e){
            System.out.println("NumberFormatException");
        }

    }
} 

 Error

Error类表示Java运行时产生的系统内部错误或资源耗尽等严重错误

         这种错误通常是程序无法控制和解决的,如果发生这种错误,通常的做法是通知用户并中止程序的执行

 常见的错误类

NoClassDefFoundError
OutOfMemoryError
VirtualMachineError

 检查异常与非检查异常

 异常处理的一般步骤

异常抛出

 

 

 

package exceptiondemo.part1;

import javax.imageio.IIOException;
import java.io.EOFException;
import java.io.IOException;

/**
 * @date : 2022/11/24 10:30
 */
public class ExceptionDemo3_1 {

//    public static void main(String[] args) throws Exception {
    public static void main(String[] args) throws EOFException, IIOException {

//        调用method方法 、此时method方法中抛出了必检异常 当前调用method方法地方必须进行处理
//        继续往上抛---main -- jvm虚拟机
        method();
    }


//    因为当前方法通过throw抛出异常   ---》必检异常 不处理不能执行:当前这个method方法不进行处理 必须继续让方法网上抛  方法声明上通过throws
//   throws:写在方法声明上 抛出多个异常 中间用逗号隔开
    public static void  method() throws EOFException, IIOException {

//        java.lang.NumberFormatException: For input string: "abc"
//        Integer.parseInt("abc");

        String password = "12345";
        if (password.length()<6){
//            throw:抛出异常----必检异常
            throw new EOFException("密码长度至少要为6位...");
        }

        throw new IIOException("test.IIOException");

    }
}

 ThrowThrows的区别

 

异常捕获

 

package exceptiondemo.part2;

/**
 * @date : 2022/11/24 15:14
 */
public class ExceptionDemo {

    public static void main(String[] args) {

        System.out.println("1111");


//        针对于可能发生异常代码进行捕获
//        执行流程:一旦try块中发生异常  将会匹配对应catch块:
//                                            1)如果匹配上就会走进对应catch块
//                                            2)如果没有匹配上 等于没有对这个异常进行处理  直接抛出

//        注意事项:
//          1)如果try中没有发生异常 不匹配代码块
//          2)catch语句的排列顺序应该是从子类到父类
        try{
//            Integer.parseInt("abc");
            Integer.parseInt("123");
            System.out.println("-------------");
            System.out.println(5/1);

            String str = null;
            System.out.println(str.length());

        }catch (NumberFormatException e){
//            e.printStackTrace();
            System.out.println("数据类型转换异常"+e.getMessage());
        }catch (ArithmeticException e){
            System.out.println("除数不能为0");
        }catch (NullPointerException e){
            System.out.println("发生空指针异常");
        }catch (Exception e){
            System.out.println("发生异常。。。。。。。。。。。");
        }




    }
}

 

 finally

        当一个方法的某条语句抛出异常后,该方法剩余的语句将无法继续执行。这种情况下,方法往往无法将其 占用的资源进行释放
 解决方法:
在每个 catch 子句的异常处理代码中也加上资源释放的代码,但这种方法非常麻烦;
Java 语言的异常处理机制中提供了一个更好的方案-程序员可以 使用 finally 子句来统一进行资源释放之类的工作。

 

不论 try 块中的代码是否抛出异常及异常是否被捕获, finally 子句 中的代码 一定会被执行
如果 try 块中没有抛出任何异常,当 try 块中的代码执行结束后, finally 中的代码将会被执行;
如果 try 块中抛出了一个异常且该异常被 catch 正常捕获,那么 try 块中自抛出异常的代码之后的所有代码将会被跳过,程序接着执行与抛出异常类型匹配的 catch 子句中的代码,最后执行 finally 子句中的代码。

如果try块中抛出了一个不能被任何catch子句捕获(匹配)的异常,try块中剩下的代码将会被跳过,程序接着执行finally

package exceptiondemo.part2;

import java.sql.SQLException;

/**
 * @date : 2022/11/24 15:41
 */
public class FinallyDemo {


    public static void main(String[] args) {


//        连接数据库时  比较耗费资源   最终想到数据资源释放
        try{
            System.out.println("连接数据库操作。。。。。。。。");
            if(1==2){
                throw new SQLException();
            }

        }catch (SQLException e){
            System.out.println("数据库断开。。。。");

//       finally作用:主要用于释放资源。
        }finally {
            System.out.println("资源释放。。。。。。。。。。");
        }


    }
}

 

package exceptiondemo.part2;

/**
 * @date : 2022/11/24 15:48
 */
public class FinallyDemo2 {

    public static void main(String[] args) {
        int result = method(); // 3
        System.out.println(result);
    }


    public static int method() {
        try {
            System.out.println(111111111);
//            强制中断程序
//            System.exit(0);
            return 1;
        } catch (NullPointerException e) {
            return 2;
        } finally {
            return 3;
        }
    }
}

 Finallyfinal以及finalize的区别

package exceptiondemo.part1;

import javax.imageio.IIOException;
import java.io.EOFException;

/**
 *
 *
 * Throw和Throws的区别
 *    throw:手动抛出异常  写在方法内部  如果当前方法中没有处理 可以通过throws往上抛
 *    throws:写在方法声明上 向上抛 ,  throws后面可以抛出多个异常  中间需要用逗号隔开
 *
 *
 * @date : 2022/11/24 10:30
 */
public class ExceptionDemo3_2 {

//    public static void main(String[] args) throws Exception {
    public static void main(String[] args) throws Exception {

//        调用method方法 、此时method方法中抛出了必检异常 当前调用method方法地方必须进行处理
//        继续往上抛---main -- jvm虚拟机
        method();
    }


//    因为当前方法通过throw抛出异常   ---》必检异常 不处理不能执行:当前这个method方法不进行处理 必须继续让方法网上抛  方法声明上通过throws
//   throws:写在方法声明上 抛出多个异常 中间用逗号隔开
//          方法声明上抛出异常时:  如果抛出的异常有父子关系时  直接写最大异常就可以了。(实际工作中  异常处理尽可能具体化)

//    public static void  method() throws EOFException, Exception {
    public static void  method() throws Exception {

//        java.lang.NumberFormatException: For input string: "abc"
//        Integer.parseInt("abc");

        String password = "12345";
        if (password.length()<6){
//            throw:抛出异常----必检异常
            throw new EOFException("密码长度至少要为6位...");
        }

        throw new Exception("test.IIOException");

    }


//    如果在子类中覆盖了父类的某一方法,那么该子类方法不可以比被其覆盖的父类方法抛出更多检查异常(但可以更少)。所以,如果被覆盖父类的方法没有抛出任何的“检查异常”,那么子类方法绝不可能抛出“必检异常”

}

 

 创建自己的异常类

 

 

异常处理

        方法也可以不对异常进行捕获而直接将其抛出,并在方法声明中进行说明,那么对方法产生的异常到底是应该直接进行捕获还是应该将其进行传递呢?
        一般来说,对于方法的 最终调用者 而言,他必须捕获并处理该方法抛出的异常。而对于 抛出异常的方法 而言,应该对方法可能产生的异常进行区分,尽量避免一些异常的产生,捕获并处理那些你知道如何处理的异常,而对那些你不知道方法的调用者会如何处理的异常,最好将它们留给方法的调用者进行处理,这样会增加程序的灵活性。

         需要特别指出的是,虽然异常处理机制为程序员提供了非常大的方便,但是作为一个好的程序员要尽量避免异常的过度使用这是因为:异常对象的实例化和其后续处理工作是非常消耗资源的,过度的使用异常会明显影响程序的执行速度。所以,在使用异常处理时应该仔细考虑,只对有必要的异常情况使用异常,而不可以将异常泛化。

package exceptiondemo.part1;

import java.io.IOException;
import java.sql.SQLException;

/**
 * @date : 2022/11/24 10:30
 */
public class ExceptionDemo3 {

//    public static void main(String[] args) throws Exception {
    public static void main(String[] args) throws IOException {

//        调用method方法 、此时method方法中抛出了必检异常 当前调用method方法地方必须进行处理
//        继续往上抛---main -- jvm虚拟机
        method();
    }


//    因为当前方法通过throw抛出异常   ---》必检异常 不处理不能执行:当前这个method方法不进行处理 必须继续让方法网上抛  方法声明上通过throws
    public static void  method() throws IOException {

//        java.lang.NumberFormatException: For input string: "abc"
//        Integer.parseInt("abc");

        String password = "12345";
        if (password.length()<6){
//            throw:抛出异常----必检异常
            throw new IOException("密码长度至少要为6位...");
        }


    }
}

 作业

造异常

package housework;

public class test241 {
    public static void main(String[] args) {
//        1、空指针异常
//        NullPointerException

        try{
            String str = null;
            System.out.println(str.length());
        }catch (NullPointerException e){
            System.out.println("空指针异常");
        }

//        2、数学运算异常
//        ArithmeticException
        try{
            System.out.println(5/0);
        }catch (ArithmeticException e){
            System.out.println("数学运算异常");
        }

//        3、数组下标越界异常
//        ArrayIndexOutOfBoundsException
        try{
            String[] arr = {"1", "hello"};
            System.out.println(arr[arr.length]);
        }catch (ArrayIndexOutOfBoundsException e){
            System.out.println("数组下标越界异常");
        }
//        4.字符串转换数字异常
//        NumberFormatException
        try {
            String s = "123*";
            int f = Integer.parseInt(s);
            System.out.println(f);
        }catch (NumberFormatException e){
            System.out.println("字符串转换数字异常");
        }




//        5.类强制转换异常
//        ClassCastException
        try{
            Object a = new Integer(0);
            System.out.println((String)a);
        }catch (ClassCastException e){
            System.out.println("类强制转换异常");
        }

    }
}

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

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

相关文章

rocketmq源码-broker接收消息

前言 这篇笔记&#xff0c;主要记录producer在通过netty发送了请求之后&#xff0c;在broker这边是如何处理的消息的 org.apache.rocketmq.remoting.netty.NettyRemotingServer.NettyServerHandler#channelRead0 这里是broker的nettyServer端接收客户端发送消息的入口&#x…

Android中GRPC的使用-4种通信模式

GRPC的通信模式 GRPC四种基础通信模式&#xff1a;一元RPC、服务器端流RPC、客户端流RPC以及双向流RPC。下面分别四种模式进行介绍&#xff0c;并在Android环境中来实现服务和客户端。 一元RPC 一元RPC模式也被称为简单RPC模式。在该模式中&#xff0c;当客户端调用服务端的远程…

破记录!国产数据库KunDB 单节点TPC-C事务性能超180万tpmC

近日&#xff0c;星环科技KunDB在TPC-C事务性能测试中&#xff0c;采用常规国产服务器&#xff0c;实现了单节点tpmC超180万&#xff0c;体现其世界级领先的事务处理能力。 TPC-C是全球 OLTP 数据库最权威的性能测试基准&#xff0c;由TPC组织&#xff08;国际事务性能委员会&…

【数字IC基础】TestBench功能

文章目录 一、TestBench的目的?二、TestBench的功能?三、TestBench(验证)的四要素?一、TestBench的目的? 对使用硬件描述语言(HDL)设计的电路(DUT)进行仿真验证,测试设计电路的功能、部分性能是否符合预期二、TestBench的功能? TestBench和DUT的关系是一个马蹄形结…

React - 项目初始化设置

React - 项目初始化设置一. 页面零边距二. 路径别名配置三. 安装使用 scss四. 安装 router一. 页面零边距 可以手写 css 重置页面样式&#xff0c;也可使用 reset-css 自动配置 手写样式不多说&#xff0c;这里使用 reset-css 安装依赖 yarn add reset-css src/App.js 文件中引…

阿里技术人分享的三本书豆瓣评分8.5分,让你的架构思维略窥门径

又逢“金九银十”&#xff0c;年轻的毕业生们满怀希望与忐忑&#xff0c;去寻找、竞争一个工作机会。已经在职的开发同学&#xff0c;也想通过社会招聘或者内推的时机争取到更好的待遇、更大的平台。 然而&#xff0c;面试人群众多&#xff0c;技术市场却相对冷淡&#xff0c;…

ssm+Vue计算机毕业设计校园疫情管理系统(程序+LW文档)

ssmVue计算机毕业设计校园疫情管理系统&#xff08;程序LW文档&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技…

我用了几行代码就实现了界面变灰效果

前言 前段时间,各个大厂的 App 首页都变成了灰色,网上还有不少人问界面变灰怎么做到的。有人说是后台换了图片,这个回答显然是不懂技术了,对于个性化推荐系统来说,使用的图片那么多张,怎么可能一一替换。还有一种说法是说后台将图片处理后再返回给前端的,这个显然也不太…

$ORACLE_BASE和$ORACLE_HOME下xml文件误删

问题描述&#xff1a; 某项目安装环境grid管理的oracle&#xff0c;环境已经搭建好许久&#xff0c;执行上线检查PSU版本时发现opatch lsinventory报错 但实例的sqlpatch显示已经应用成功且oracle client版本也显示为19.13 怀疑是Central Inventory&#xff08;/oracle/oraInv…

【知识图谱】(task4)知识图谱的抽取和构建

note CRF条件随机场是全局最优&#xff08;判别式模型&#xff09;&#xff0c;HMM是局部最优&#xff08;生成式模型&#xff09;实体关系抽取方法概览&#xff1a; 事件抽取主要分为事件的发现和分类和事件要素抽取两部分&#xff0c;又可以细分为触发词识别与事件分类和要素…

第13部分 VLAN,Trunk 和VTP

目录 13.1 VLAN&#xff0c;Trunk 和VTP 简介 13.1.1 VLAN 13.1.2 Trunk 13.1.3 VTP 13.1.4 EtherChannel 13.2 实验1&#xff1a;划分VLAN 1.实验目的 2.实验拓扑 3.实验步骤 4.实验调试 13.3 实验2&#xff1a;Trunk 配置 1.实验目的 2.实验拓扑 3.实验步骤 1…

SpringBoot整合Graylog做日志收集

日志收集折腾过程 ELK 之前整合过ELK做日志采集&#xff0c;就是Elasticsearch Logstash Kibana&#xff1a; Elasticsearch&#xff1a;存储引擎&#xff0c;存放日志内容&#xff0c;利于全文检索Logstash&#xff1a;数据传输管道&#xff0c;将日志内容传输到Elastics…

无法在Anaconda环境中使用pre-commit run --all-files:缺少匹配版本的ruamel.yaml

参考来源&#xff1a;https://stackoverflow.com/questions/68794749/unable-to-run-pre-commit-in-anaconda-environment 问题 与电脑两地隔离了半个月&#xff0c;今天开机commit的时候忽然弹出了下面的错误&#xff08;自己图忘存了&#xff0c;图源置顶链接&#xff09;&…

b站黑马的Vue快速入门案例代码——小黑记事本

目录 目标效果&#xff1a; 重点原理&#xff1a; &#xff08;1&#xff09;push&#xff08;&#xff09;方法——向数组末尾&#xff0c;添加新元素&#xff0c;并返回新长度 &#xff08;2&#xff09;v-on可以传递自定义参数&#xff0c;v-on:click”...“的简写是clic…

jdk11新特性——标准Java异步HTTP客户端

目录一、概述二、HTTP Client 同步发送请求使用示例2.1、创建简单的服务端2.2、创建HTTP Client 同步代码三、HTTP Client 异步发送请求使用示例3.1、创建简单的服务端&#xff08;参考2.1&#xff09;3.2、创建HTTP Client 异步代码一、概述 Java 9 开始引入的一个处理 HTTP …

浅谈ioremap,vmalloc,mmap三者之间的脉络

前言 系统mmu开启后, 程序对内存的访问都是虚拟地址, 之后mmu会自动将虚拟地址变为实际的物理地址&#xff08;硬件行为&#xff09;, 所以我们的程序如果要访问物理地址的话&#xff0c;必须要通过mmu建立虚拟地址与物理地址之间的映射关系。对于虚拟地址映射到物理地址的操作…

非零基础自学Golang 第7章 函数 7.6 延迟执行语句 7.7 小结

非零基础自学Golang 文章目录非零基础自学Golang第7章 函数7.6 延迟执行语句7.7 小结第7章 函数 7.6 延迟执行语句 Go语言中存在一种延迟执行的语句&#xff0c;由defer关键字标识&#xff0c;格式如下&#xff1a; defer 任意语句defer后的语句不会被马上执行&#xff0c;在…

Redis持久化详解

一、概述 在Redis中&#xff0c;实现高可用的技术主要包括持久化、复制、哨兵和集群&#xff0c;下面分别说明它们的作用&#xff0c;以及解决了什么样的问题。 持久化&#xff1a;持久化是最简单的高可用方法(有时甚至不被归为高可用的手段)&#xff0c;主要作用是数据备份…

springboot整合系列之如何选择版本及项目搭建

特别说明&#xff1a;本次项目整合基于idea进行的&#xff0c;如果使用Eclipse可能会略有不同。因为我很久没用过eclipse了&#xff0c;所以也没有办法给出两个版本。如果不一致的地方就自行google解决吧~~ springboot整合之如何选择版本及项目搭建 springboot整合mybatis-pl…

ADI Blackfin DSP处理器-BF533的开发详解52:图像处理专题-CMOS摄像头采集图像(含源码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 板卡上设计了一个摄像头接口&#xff0c;可以连接与板卡匹配的 ADSP-EDU-CMOS 子卡板。摄像头接口采用 20PIN 插针接入&#xff0c;将插…