Java基础面试整理

news2024/12/23 20:37:14

Java基础面试

    • 摘要
      • 1. 数据类型和变量
      • 2. 控制流语句
      • 3. 面向对象编程
      • 4. 异常处理
      • 5. 集合框架
      • 6. 多线程
      • 7. 输入输出流
      • 8. 设计模式
      • 9. 字符串操作
      • 10. 数组
      • 11. 枚举(Enum)
      • 12. 包(Package)和导入(Import)
      • 13. 接口(Interface)
      • 14. 继承和多态
      • 15. Lambda表达式
      • 16. 泛型(Generics)
      • 17. 注解(Annotations)
      • 18. 文件操作
      • 19. 异常处理
      • 20. 多线程
      • 21. 集合框架(Collections Framework)
      • 22. 强制类型转换
      • 23. 枚举集合
      • 24. 正则表达式(Regular Expressions)
    • 总结
  • 文末送书

在这里插入图片描述

博主 默语带您 Go to New World.
个人主页—— 默语 的博客👦🏻
《java 面试题大全》
🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕🍭
《MYSQL从入门到精通》数据库是开发者必会基础之一~
🪁 吾期望此文有资助于尔,即使粗浅难及深广,亦备添少许微薄之助。苟未尽善尽美,敬请批评指正,以资改进。!💻⌨

在这里插入图片描述

摘要

本文深入探讨了Java基础面试所需的关键知识点,旨在帮助读者准备面试和加强对Java编程语言的理解。每个知识点都伴随着清晰的解释和示例代码,涵盖了继承、Lambda表达式、泛型、注解、文件操作、异常处理、多线程、集合框架、强制类型转换、枚举集合和正则表达式等多个重要概念。通过学习这些知识点,读者将能够更自信地应对Java基础面试,提升自己的编程技能水平。无论是初学者还是有经验的开发者,本文都提供了有益的学习资源,有助于深入探索Java编程的核心要点。

1. 数据类型和变量

Java有8种基本数据类型:byteshortintlongfloatdoublecharboolean。了解它们的范围和用途很重要。

public class DataTypesExample {
    public static void main(String[] args) {
        // 声明整数类型的变量
        int age = 30;
        
        // 声明浮点数类型的变量
        double price = 19.99;
        
        // 声明字符类型的变量
        char grade = 'A';
        
        // 声明布尔类型的变量
        boolean isJavaFun = true;
    }
}

2. 控制流语句

掌握条件语句(ifelseswitch)、循环语句(forwhiledo-while)以及跳转语句(breakcontinue)。

public class ControlFlowExample {
    public static void main(String[] args) {
        int x = 10;

        // 使用if-else语句
        if (x > 5) {
            System.out.println("x大于5");
        } else {
            System.out.println("x不大于5");
        }

        // 使用for循环
        for (int i = 0; i < 5; i++) {
            System.out.println("循环迭代:" + i);
        }

        // 使用while循环
        int j = 0;
        while (j < 5) {
            System.out.println("循环迭代:" + j);
            j++;
        }
    }
}

3. 面向对象编程

了解类和对象的概念,封装、继承、多态的原理和用法。

// 定义一个简单的汽车类
public class Car {
    private String brand;  // 品牌

    public Car(String brand) {
        this.brand = brand;
    }

    public void start() {
        System.out.println(brand + " 启动了。");
    }

    public static void main(String[] args) {
        Car myCar = new Car("Toyota");
        myCar.start();
    }
}

4. 异常处理

掌握异常的种类,使用 trycatchthrowthrows 处理异常。

public class ExceptionHandlingExample {
    public static void main(String[] args) {
        try {
            // 可能会引发异常的代码
            int result = 10 / 0; // 这里会抛出 ArithmeticException
        } catch (ArithmeticException e) {
            // 捕获并处理异常
            System.out.println("除以零错误:" + e.getMessage());
        }
    }
}

5. 集合框架

熟悉Java的集合框架,包括列表(List)、集合(Set)、映射(Map)等。了解如何遍历和操作集合。

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

public class CollectionsExample {
    public static void main(String[] args) {
        // 创建一个字符串列表
        List<String> names = new ArrayList<>();
        names.add("Alice");
        names.add("Bob");

        // 遍历列表并打印每个元素
        for (String name : names) {
            System.out.println("姓名:" + name);
        }
    }
}

6. 多线程

理解多线程编程,创建线程、同步、线程池的使用。

public class ThreadExample {
    public static void main(String[] args) {
        // 创建一个线程对象
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                // 线程执行的逻辑
                System.out.println("线程正在运行。");
            }
        });

        // 启动线程
        thread.start();
    }
}

7. 输入输出流

掌握文件读写、字符流和字节流的概念,以及如何使用Java的输入输出流处理文件和网络数据。

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileIOExample {
    public static void main(String[] args) {
        try (FileInputStream input = new FileInputStream("file.txt");
             FileOutputStream output = new FileOutputStream("output.txt")) {
            int data;
            while ((data = input.read()) != -1) {
                output.write(data);
            }
        } catch (IOException e) {
            System.out.println("文件操作错误:" + e.getMessage());
        }
    }
}

8. 设计模式

了解常见的设计模式,如单例模式、工厂模式、观察者模式等,并知道何时使用它们。

// 单例模式
public class Singleton {
    private static Singleton instance;

    private Singleton() {}

    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

9. 字符串操作

掌握字符串的常见操作,如拼接、截取、查找和替换。

public class StringManipulationExample {
    public static void main(String[] args) {
        // 字符串拼接
        String firstName = "John";
        String lastName = "Doe";
        String fullName = firstName + " " + lastName;

        // 字符串长度
        int length = fullName.length();

        // 查找子字符串的位置
        int index = fullName.indexOf("Doe");

        // 字符串替换
        String replaced = fullName.replace("John", "Jane");

        // 输出结果
        System.out.println("全名:" + fullName);
        System.out.println("长度:" + length);
        System.out.println("Doe的位置:" + index);
        System.out.println("替换后的全名:" + replaced);
    }
}

10. 数组

了解数组的声明、初始化和操作,包括遍历和多维数组。

public class ArrayExample {
    public static void main(String[] args) {
        // 声明和初始化整数数组
        int[] numbers = {1, 2, 3, 4, 5};

        // 访问数组元素
        int firstNumber = numbers[0];

        // 遍历数组
        for (int i = 0; i < numbers.length; i++) {
            System.out.println("元素:" + numbers[i]);
        }

        // 声明和初始化二维数组
        int[][] matrix = {{1, 2, 3}, {4, 5, 6}};

        // 访问二维数组元素
        int value = matrix[1][2];

        System.out.println("第一个元素:" + firstNumber);
        System.out.println("二维数组中的值:" + value);
    }
}

概念解释

  • 数组是一种用于存储相同类型数据的数据结构。
  • 声明数组时需要指定数据类型和数组名,例如 int[] numbers 表示声明一个整数数组。
  • 初始化数组时,可以使用花括号 {} 来指定数组元素的初始值。
  • 数组元素可以通过索引来访问,索引从0开始。
  • 使用循环(如for循环)可以遍历数组中的元素。
  • 多维数组是数组的数组,例如 int[][] matrix 表示一个二维整数数组。
  • 多维数组可以通过多个索引来访问元素。

11. 枚举(Enum)

了解枚举的定义和用法,它可以帮助你创建有限的常量集合。

public class EnumExample {
    // 定义一个枚举类型
    enum Day {
        MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
    }

    public static void main(String[] args) {
        // 使用枚举常量
        Day today = Day.WEDNESDAY;

        switch (today) {
            case MONDAY:
                System.out.println("今天是星期一");
                break;
            case WEDNESDAY:
                System.out.println("今天是星期三");
                break;
            // 其他星期的情况...
        }
    }
}

概念解释

  • 枚举(Enum)是一种特殊的数据类型,用于表示一组有限的常量值。
  • 在枚举中,可以列举出所有可能的值,这些值被称为枚举常量。
  • 枚举常量在枚举内部被定义,用逗号分隔。
  • 枚举可以用于增强代码的可读性,尤其在需要表示一组相关的常量时非常有用。

12. 包(Package)和导入(Import)

了解如何组织Java代码,使用包来管理类,并使用import语句导入其他包中的类。

// 定义在不同包中的两个类
package com.example.package1;

public class Class1 {
    // 类的内容
}

package com.example.package2;

public class Class2 {
    // 类的内容
}
// 导入其他包中的类
import com.example.package1.Class1;

public class ImportExample {
    public static void main(String[] args) {
        Class1 obj = new Class1();
        // 使用Class1对象...
    }
}

概念解释

  • 包(Package)是一种用于组织Java类的命名空间。它可以帮助组织和管理大型项目中的类文件。
  • 包的声明通常是在Java类的开头,使用package关键字。
  • 使用import语句可以引入其他包中的类,以便在当前类中使用它们。
  • 包的命名应该遵循反域名(Reverse Domain Name)的约定,以确保唯一性。

13. 接口(Interface)

了解接口的定义和用法,接口是一种约定,用于定义类必须实现的方法。

// 定义一个接口
interface Shape {
    double area();  // 计算面积的方法
    double perimeter();  // 计算周长的方法
}

// 实现接口的类
class Circle implements Shape {
    private double radius;

    public Circle(double radius) {
        this.radius = radius;
    }

    @Override
    public double area() {
        return Math.PI * radius * radius;
    }

    @Override
    public double perimeter() {
        return 2 * Math.PI * radius;
    }
}

概念解释

  • 接口(Interface)是一种抽象数据类型,用于定义一组抽象方法的集合。
  • 接口可以被类实现,实现类必须提供接口中定义的所有方法的具体实现。
  • 接口通常用于定义类的契约,以确保实现类遵循特定的方法签名。
  • Java中一个类可以实现多个接口,但只能继承一个类。

14. 继承和多态

理解继承和多态的概念,如何创建子类、覆盖方法,以及如何实现多态性。

// 基类(父类)
class Animal {
    void speak() {
        System.out.println("动物发出声音");
    }
}

// 派生类(子类)
class Dog extends Animal {
    @Override
    void speak() {
        System.out.println("狗发出汪汪声");
    }
}

public class InheritanceExample {
    public static void main(String[] args) {
        Animal myAnimal = new Dog(); // 使用多态
        myAnimal.speak(); // 调用子类的方法
    }
}

概念解释

  • 继承是面向对象编程中的一个重要概念,它允许一个类(子类/派生类)继承另一个类(父类/基类)的属性和方法。
  • 子类可以覆盖(重写)父类的方法,以改变或扩展其行为。
  • 多态性是指同一个方法调用可以根据对象的不同而具有不同的行为。在示例中,myAnimal.speak() 调用的方法取决于实际对象的类型。

15. Lambda表达式

了解Lambda表达式的基本语法和用法,它简化了匿名内部类的编写。

interface MathOperation {
    int operate(int a, int b);
}

public class LambdaExample {
    public static void main(String[] args) {
        // 使用Lambda表达式定义一个加法操作
        MathOperation addition = (int a, int b) -> a + b;

        // 使用Lambda表达式定义一个乘法操作
        MathOperation multiplication = (int a, int b) -> a * b;

        int result1 = operate(5, 3, addition);
        int result2 = operate(5, 3, multiplication);

        System.out.println("加法结果:" + result1);
        System.out.println("乘法结果:" + result2);
    }

    private static int operate(int a, int b, MathOperation operation) {
        return operation.operate(a, b);
    }
}

概念解释

  • Lambda表达式是一种匿名函数,它可以用于简化函数式接口的实现。
  • Lambda表达式的语法包括参数列表、箭头符号(->)和表达式主体。
  • 在示例中,我们定义了两个Lambda表达式分别表示加法和乘法操作,并在operate方法中使用它们。

16. 泛型(Generics)

了解泛型的概念,如何创建泛型类和方法,以及它们的优势。

// 泛型类示例
class Box<T> {
    private T content;

    public Box(T content) {
        this.content = content;
    }

    public T getContent() {
        return content;
    }
}

public class GenericsExample {
    public static void main(String[] args) {
        // 创建一个存储整数的泛型对象
        Box<Integer> intBox = new Box<>(42);

        // 创建一个存储字符串的泛型对象
        Box<String> strBox = new Box<>("Hello, Generics!");

        int intValue = intBox.getContent();
        String strValue = strBox.getContent();

        System.out.println("整数值:" + intValue);
        System.out.println("字符串值:" + strValue);
    }
}

概念解释

  • 泛型是Java中的一种强类型约束,允许你在编译时指定类或方法的数据类型。
  • 泛型类和方法可以用于处理不同类型的数据,提高了代码的重用性和类型安全性。
  • 在示例中,我们定义了一个泛型类Box<T>,它可以存储不同类型的数据。

17. 注解(Annotations)

了解注解的定义和使用,它可以用于代码注释、配置和元数据处理。

// 自定义注解
@interface MyAnnotation {
    String value() default "默认值";
}

// 使用注解
@MyAnnotation("自定义注解示例")
public class AnnotationExample {
    public static void main(String[] args) {
        // 获取注解信息
        MyAnnotation annotation = AnnotationExample.class.getAnnotation(MyAnnotation.class);
        System.out.println("注解值:" + annotation.value());
    }
}

概念解释

  • 注解(Annotations)是Java中的元数据,它可以为类、方法、字段等元素添加元信息。
  • 注解以@符号开头,后跟注解的名称。注解可以包含元素,可以是默认值。
  • 自定义注解允许程序员创建自己的元数据,用于标记或配置代码。
  • 在示例中,我们定义了一个名为MyAnnotation的自定义注解,并在类上应用它。

18. 文件操作

了解如何在Java中进行文件的读取和写入操作,以及如何处理文件异常。

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FileIOExample {
    public static void main(String[] args) {
        try {
            // 读取文件
            BufferedReader reader = new BufferedReader(new FileReader("input.txt"));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            reader.close();

            // 写入文件
            BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"));
            writer.write("写入文件的内容");
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

概念解释

  • Java提供了用于文件操作的标准I/O库,包括FileReaderFileWriterBufferedReaderBufferedWriter等类。
  • 使用try-catch块来处理文件操作中可能出现的异常,如IOException
  • 在示例中,我们演示了如何读取文件内容并将数据写入文件。

19. 异常处理

了解如何处理异常,包括捕获异常、抛出异常和自定义异常。

public class ExceptionHandlingExample {
    public static void main(String[] args) {
        try {
            int result = divide(10, 0);
            System.out.println("结果:" + result);
        } catch (ArithmeticException e) {
            System.err.println("除零异常:" + e.getMessage());
        }
    }

    private static int divide(int a, int b) {
        if (b == 0) {
            throw new ArithmeticException("除数不能为零");
        }
        return a / b;
    }
}

概念解释

  • 异常(Exception)是程序运行时可能遇到的问题,它可以中断正常的程序流程。
  • 使用try-catch块来捕获和处理异常,以确保程序不会崩溃。
  • 可以使用throw语句来抛出自定义异常,以便在特定情况下中断程序。
  • 在示例中,我们演示了如何捕获除零异常,并抛出自定义异常。

20. 多线程

了解多线程的概念和创建线程的方法。

public class MultithreadingExample {
    public static void main(String[] args) {
        // 创建线程对象
        Thread thread1 = new MyThread();
        Thread thread2 = new Thread(new MyRunnable());

        // 启动线程
        thread1.start();
        thread2.start();
    }
}

class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println("线程1运行中");
    }
}

class MyRunnable implements Runnable {
    @Override
    public void run() {
        System.out.println("线程2运行中");
    }
}

概念解释

  • 多线程允许程序同时执行多个任务,提高了程序的效率。
  • 在Java中,可以通过继承Thread类或实现Runnable接口来创建线程。
  • 使用start()方法来启动线程执行run()方法中的代码。
  • 在示例中,我们演示了两种创建线程的方法,并启动了两个线程。

21. 集合框架(Collections Framework)

了解集合框架的常见接口和类,如ListSetMap,以及它们的用法。

import java.util.*;

public class CollectionsExample {
    public static void main(String[] args) {
        // List集合示例
        List<String> list = new ArrayList<>();
        list.add("苹果");
        list.add("香蕉");
        list.add("橙子");

        // Set集合示例
        Set<Integer> set = new HashSet<>();
        set.add(1);
        set.add(2);
        set.add(3);

        // Map集合示例
        Map<String, Integer> map = new HashMap<>();
        map.put("Java", 1);
        map.put("Python", 2);
        map.put("C++", 3);

        System.out.println("List集合:" + list);
        System.out.println("Set集合:" + set);
        System.out.println("Map集合:" + map);
    }
}

概念解释

  • 集合框架提供了一组用于存储和操作数据的接口和类。
  • List接口表示有序的列表,允许重复元素。ArrayListList的常见实现。
  • Set接口表示不允许重复元素的集合。HashSetSet的常见实现。
  • Map接口表示键值对的映射。HashMapMap的常见实现。

22. 强制类型转换

了解如何进行强制类型转换,将一个数据类型转换为另一个数据类型。

public class TypeCastingExample {
    public static void main(String[] args) {
        double doubleValue = 10.5;
        int intValue = (int) doubleValue; // 强制类型转换

        System.out.println("双精度值:" + doubleValue);
        System.out.println("整数值:" + intValue);
    }
}

概念解释

  • 强制类型转换是将一个数据类型的值转换为另一个数据类型的值的过程。
  • 在示例中,我们将双精度浮点数转换为整数,通过(int)语法进行强制类型转换。

23. 枚举集合

了解如何使用EnumSetEnumMap来处理枚举类型的集合和映射。

import java.util.EnumSet;
import java.util.EnumMap;

enum Day {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY
}

public class EnumCollectionExample {
    public static void main(String[] args) {
        // 创建EnumSet
        EnumSet<Day> days = EnumSet.of(Day.MONDAY, Day.WEDNESDAY, Day.FRIDAY);

        // 创建EnumMap
        EnumMap<Day, String> dayActivities = new EnumMap<>(Day.class);
        dayActivities.put(Day.MONDAY, "工作");
        dayActivities.put(Day.WEDNESDAY, "学习");
        dayActivities.put(Day.FRIDAY, "休息");

        System.out.println("EnumSet:" + days);
        System.out.println("EnumMap:" + dayActivities);
    }
}

概念解释

  • EnumSet是专门用于枚举类型的集合,它提供高效的集合操作。
  • EnumMap是专门用于枚举类型的映射,它将枚举常量映射到特定的值。
  • 在示例中,我们演示了如何创建和使用EnumSetEnumMap来处理枚举类型的数据。

24. 正则表达式(Regular Expressions)

了解正则表达式的基本语法和用法,用于匹配和搜索文本模式。




import java.util.regex.*;

public class RegularExpressionExample {
    public static void main(String[] args) {
        String text = "Java 8 is the latest version of Java.";

        // 使用正则表达式查找匹配的字符串
        Pattern pattern = Pattern.compile("\\bJava\\b");
        Matcher matcher = pattern.matcher(text);

        while (matcher.find()) {
            System.out.println("找到匹配:" + matcher.group());
        }
    }
}

概念解释

  • 正则表达式是一种强大的文本处理工具,用于匹配和搜索文本模式。
  • 正则表达式可以包含特殊字符和元字符,用于定义模式。
  • PatternMatcher类用于在Java中使用正则表达式。

总结

本文详细介绍了Java基础面试的关键知识点,每个知识点都附有示例代码和解释。这些知识点包括继承、Lambda表达式、泛型、注解、文件操作、异常处理、多线程、集合框架、强制类型转换、枚举集合和正则表达式。通过深入理解这些概念和示例,读者可以更好地准备Java基础面试,提高编程技能。


文末送书

清华社【秋日阅读企划】领券立享优惠

IT好书 5折叠加10元 无门槛优惠券:https://u.jd.com/Yqsd9wj

活动时间:9月4日-9月17日,先到先得,快快来抢
在这里插入图片描述

赠书活动第十二期

  参与方式:

在本博客下方评论区发表评论,即可参与抽奖; 抽奖方式:我们将随机抽取3位幸运伙伴,并允许每位伙伴最多发表5条评论,增加获奖机会;

🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🍁🐥

如对本文内容有任何疑问、建议或意见,请联系作者,作者将尽力回复并改进📓;(联系微信:Solitudemind )

点击下方名片,加入IT技术核心学习团队。一起探索科技的未来,共同成长。

在这里插入图片描述

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

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

相关文章

飞行动力学 - 第22节-动稳定性与运动方程 之 基础点摘要

飞行动力学 - 第22节-动稳定性与运动方程 之 基础点摘要 1. 稳定性定义2. 动稳定性示意图3. 数值仿真结构框图4. 运动响应类型5. 参考资料 1. 稳定性定义 飞机在平衡状态&#xff08;静止或匀速运动&#xff09;受到扰动&#xff1a; 有回到初始状态的趋势&#xff1b;静稳定…

网页录屏方法推荐,满足你的各种录制需求

“网页可以录屏吗&#xff1f;在浏览器观看了一篇教程&#xff0c;但是不能保存&#xff0c;就想用录屏的方法录制下来&#xff0c;可是不知道网页怎么录屏&#xff0c;家人们帮帮忙&#xff0c;非常感谢&#xff01;” 网页录制是将浏览器中的内容录制成视频的过程&#xff0…

算法分析与设计23.9.12晚第一节

23.9.12晚第一节&#xff1a; 解决问题 问题结构 解决问题思路1&#xff1a;(常规思路) Q0: The simplest case. 先找到最简单的情况。 Q1: Decomposed.(INPUT DS, OUTPUT DS) 观察输入输出的数据结构&#xff0c;尝试分解问题。 Q2: Solution neighborhood. 尝试邻域解的变…

机器学习技术(八)——朴素贝叶斯算法实操

机器学习技术&#xff08;八&#xff09;——朴素贝叶斯算法实操 文章目录 机器学习技术&#xff08;八&#xff09;——朴素贝叶斯算法实操一、引言二、导入相关依赖库三、读取并查看数据四、数据预处理五、构建两种模型进行比较1、只考虑Dayofweek以及District2、加入犯罪时间…

MySQL日常使用记录

1.时间 1.1.时间格式化 yyyy-MM-dd HH:mm:ss格式&#xff0c;如下&#xff1a; select date_format(now(), %Y-%m-%d %H:%i:%s) from dual;date_format函数是将date类型按照指定的格式转换成varchar类型 1.2.日期加减 当前天 1 天 select date_format(now(), %Y-%m-%d), …

【LeetCode-简单题】383. 赎金信

文章目录 题目方法一&#xff1a;数组方法二&#xff1a;哈希表 题目 方法一&#xff1a;数组 先将magazine中的字符转换为26大小的数组中字符的数量然后再遍历ransomNote中的字符&#xff0c;每遍历一个就让字符数量- 1&#xff0c;若字符数量<0 了 &#xff0c;说明magaz…

9.12号

实现一个图形类&#xff08;Shape&#xff09;&#xff0c;包含受保护成员属性&#xff1a;周长、面积&#xff0c; 公共成员函数&#xff1a;特殊成员函数书写 定义一个圆形类&#xff08;Circle&#xff09;&#xff0c;继承自图形类&#xff0c;包含私有属性&#xff1a;半…

java.lang.NoClassDefFoundError: com/sun/jna/Callback

添加依赖 <dependency><groupId>net.java.dev.jna</groupId><artifactId>jna</artifactId><version>5.13.0</version></dependency> 其他版本查看 https://mvnrepository.com/artifact/net.java.dev.jna/jna

leetcode 第454题.四数相加II

给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 < i, j, k, l < nnums1[i] nums2[j] nums3[k] nums4[l] 0 454. 四数相加 II - 力扣&#xff08;LeetCode&#xf…

荣23转债上市价格预测

荣23转债113676 基本信息 转债名称&#xff1a;荣23转债&#xff0c;评级&#xff1a;AA-&#xff0c;发行规模&#xff1a;5.76亿元。 正股名称&#xff1a;荣晟环保&#xff0c;今日收盘价&#xff1a;15.64元&#xff0c;转股价格&#xff1a;15.74元。 当前转股价值 转债面…

Redis 缓存过期淘汰策略

面试题&#xff1a; 生产上你们的redis内存设置多少&#xff1f;如何配置、修改redis的内存大小如果内存满了你怎么办redis清理内存的方式&#xff1f;定期出测除和惰性曲除了解过吗redis缓存淘太策略有哪些&#xff1f;分别是什么&#xff1f;你用那个&#xff1f;redis的LRU…

阿里云CDN架构接入WAF应用防火墙案例实践

文章目录 1.网站架构变化2.配置WAF应用防火墙2.1.配置网站接入WAF防火墙2.2.WAF防火墙生成CNAME地址2.3.配置WAF防火墙HTTPS证书2.4.WAF防火墙开启HTTP回源SLB 3.配置CDN加速器回源WAF防火墙4.将域名DNS解析指向CDN的域名5.测试网站是否能正常访问6.模拟攻击观察WAF的作用7.解除…

4.5 指针与数组的转换

typedef struct {unsigned char head_first; //包头首字节unsigned char head_last; //包头末字节unsigned char ad[5][96][2];unsigned char end_first; //包尾首字节unsigned char end_last; //包尾末字节 …

python-爬虫-urllib3

导入模块 import urllib3urllib3&#xff1a;功能强大、条理清晰、用于HTTP客户端的python网络请求库 重要特征 1.线程安全 2.连接池 3.客户端SSL/TLS验证 4.使用分段编码长传文件 5.重试请求和处理HTTP复位的助手 6.支持gzip和deflate编码 7.HTTP和SOCKS的代理支持 8.100%的…

【送书活动】借助ChatGPT和Python,轻松实现办公自动化✨

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…

群晖(Synology)NAS 后台安装 Docker 后配置 Activemq Artemis

因最近需要在本地调试消息策略。 如果搞个服务器装就太辛苦了&#xff0c;所以就想到了 NAS&#xff0c;我们的 NAS 上已经装了 Docker&#xff0c;我们直接运行一个 Activemq Artemis 的镜像不就好了。 下载镜像 在进入 NAS 的容器管理后&#xff0c;访问 Registry。 然后…

弱引用回调引发的坑

在开发中&#xff0c;常常会用到回调模型&#xff0c;为了避免回调监听未被主动释放&#xff0c;导致内存泄露&#xff0c;我们会用到 WeakReference 来存放回调引用&#xff0c;然而要注意的是回调类被回收的坑。本文记录笔者开发中遇到弱引用回调被回收的坑及思考。 奇怪的现…

删除的快捷键ctrl加什么?快捷键删除的文件怎么恢复

在许多情况下&#xff0c;我们可以利用电脑的快捷键&#xff0c;即键盘上的组合按键&#xff0c;来执行特定的操作&#xff0c;例如使用组合键删除文件。当我们熟练掌握这些快捷键时&#xff0c;能够显著提升工作效率。那么&#xff0c;你知道ctrl哪个键可以删除文件吗&#xf…

花西子口碑下降,国产化妆品应该如何增加自己的品牌曝光

过去几天&#xff0c;因为花西子一支眉笔克重单价比大牌还贵&#xff0c;而某直播间的主播在面对消费者的质疑时&#xff0c;没有选择解答用户的疑惑&#xff0c;而是质疑消费者的工作能力等等&#xff0c;导致花西子的口碑下降&#xff0c;而主播的印象也逐渐负面&#xff0c;…

【四】3D Object Model之创建Creation——read_object_model_3d()算子

&#x1f60a;&#x1f60a;&#x1f60a;欢迎来到本博客&#x1f60a;&#x1f60a;&#x1f60a; &#x1f31f;&#x1f31f;&#x1f31f; Halcon算子太多&#xff0c;学习查找都没有系统的学习查找路径&#xff0c;本专栏主要分享Halcon各类算子含义及用法&#xff0c;有…