JavaSE期末复习速成笔记

面向对象

1. 面向对象的概念

  • 面向对象编程(OOP)是一种编程范式,它将现实世界的事物抽象为对象,通过类和对象来创建各种功能模块,以此来设计和开发软件。

2. 类与对象

  • 类:是对象的模板,定义了对象的属性和方法。
  • 对象:是类的实例,具有类的属性和方法。

3. 封装

  • 隐藏对象的属性和实现细节,仅对外提供公共的访问方式。

4. 继承

  • 一个类(子类)继承另一个类(父类)的属性和方法,并可以扩展自己的属性和方法。

5. 多态

  • 父类引用指向子类对象,运行时根据对象类型调用相应的方法。

6. 抽象类与接口

  • 抽象类:不能被实例化的类,可以包含抽象方法和非抽象方法。
  • 接口:全由抽象方法和常量组成的类,不能被实例化,实现类必须实现其所有方法。

7. 构造方法

  • 用于创建和初始化对象的方法,与类名相同,没有返回类型。

8. this关键字

  • 引用当前对象的属性和方法。

9. 访问控制修饰符

  • public、protected、default(无修饰符)、private。

常用类

1. String类

  • 字符串是不可变的,常用方法有charAt()、substring()、length()、equals()等。
package com.apex_legends.javaoop.string_demo;

import java.lang.reflect.Array;
import java.util.Arrays;

public class Stringtest {
    public static void main(String[] args) {
        String s = "abc";
        s = s + "lsk";
        s = s + "mbn";
        String ss = "abc";
        System.out.println(ss = s);
        System.out.println(s.equals(ss));
        System.out.println(s);
        String s2 = new String("NCY");
        String s3 = "=92";
        byte[] bytes = s3.getBytes();
        byte[] a = Arrays.copyOf(bytes,3);
        Arrays.sort(a);
        System.out.println(Arrays.toString(bytes));
        System.out.println(Arrays.toString(a));
        String s4 = new String(bytes);
        String s5 = new String(a);
        System.out.println(s4);
        System.out.println(s5);
        String n1 = new String("abcd");
        String n2 = new String("abcD");
        System.out.println(n1.equalsIgnoreCase(n2));//忽略大小写
        System.out.println(n1.contains("ab"));//判断有没有包含连续子串
        System.out.println(n1.isEmpty());//是否为空串""
        System.out.println(n1.startsWith("a"));//判断开头
        System.out.println(n1.endsWith("a"));//判断结尾
        System.out.println(s.charAt(4));//给一个位置,返回字符
        System.out.println(s.indexOf("c"));//给一个字符,返回首次位置
        System.out.println(s.lastIndexOf("c"));//从后向前查的indexof
        String x1 = s.substring(3);
        String x2 = s.substring(2,4);
        System.out.println(x1);
        System.out.println(x2);
        String x3 = "dadJIKH";
        System.out.println(x3.toLowerCase());
        System.out.println(x3.toUpperCase());//转变英文字母大小写,原字符串不
        String str = "133-2457-1685";
        String []strings = str.split("-");
        System.out.println(Arrays.toString(strings));//用符号分割字符串
        System.out.println(x3.replace("a", "o"));
        System.out.println(x3.replaceAll("d", "c"));
        System.out.println(x3.replaceFirst("c", "d"));
        //替换字符但是字符串还是不变
        String sss = " adad adad ";
        System.out.println(sss.trim());
        System.out.println(sss.trim().length());//去除两端空格
    }
}

2. StringBuilder和StringBuffer类

  • 可变字符串,StringBuilder非线程安全,StringBuffer线程安全。

StringBuilder

import java.util.Scanner;  
  
public class StringBuilderExample {  
    public static void main(String[] args) {  
        // 创建一个Scanner对象以接收用户输入  
        Scanner scanner = new Scanner(System.in);  
          
        // 创建一个StringBuilder对象  
        StringBuilder stringBuilder = new StringBuilder();  
          
        // 循环接收用户输入,直到输入"exit"为止  
        while (true) {  
            System.out.print("请输入一个字符串(输入'exit'退出): ");  
            String input = scanner.nextLine();  
              
            // 检查是否输入了'exit'  
            if ("exit".equalsIgnoreCase(input)) {  
                break;  
            }  
              
            // 将输入的字符串添加到StringBuilder中  
            stringBuilder.append(input);  
            stringBuilder.append(" ");   
        }  
          
        // 关闭Scanner对象(可选,但在实际应用中推荐这样做)  
        scanner.close();  
          
        // 将StringBuilder转换为String并打印结果  
        String result = stringBuilder.toString();  
        System.out.println("您输入的字符串是: " + result);  
    }  
}

StringBuffer

package com.apex_legends.javaoop.string_demo;

public class StringBuffer_test {
    public static void main(String[] args) {

        /*
            StringBuffer是内容可以改变的字符串
            char[] value;没有使用final修饰,每次添加内容都是对此数组进行操作
            不会创建新的字符串对象。
         */

        //StringBuffer s1 = new StringBuffer("abcd");//创建内容长度+16的char数组
        StringBuffer s1 = new StringBuffer(10);//直接指定空参的长度
        s1.append("efg");//默认向字符串末尾添加
        System.out.println(s1);
        s1.insert(1,"Q");//指定位置插入
        System.out.println(s1);
        s1.deleteCharAt(2);
        System.out.println(s1);
        s1.append("asdfghjkl;");
        s1.delete(3,6);
        System.out.println(s1);
        s1.replace(1,2,"孙笑川");//替换字符串
        System.out.println(s1);
        s1.reverse();//反转字符串
        System.out.println(s1);
    }
}

3. 包装类

  • 将基本数据类型封装为对象,如Integer、Bigdicimal等。

Integer

package com.apex_legends.javaoop.integer;

import java.math.BigInteger;

public class Integer_demo {
    public static void main(String[] args) {
        String a = "679876545670987656789987612345678912345678901234567891234567891234567890987654345678985678987644567890987656789876765434567898765434567898765434567898765";
        BigInteger bigInteger1 = new BigInteger(a);
        BigInteger bigInteger2 = new BigInteger("3231234567890123456789012345678991234567891212345678912345555454545578923456789023456789567898765456787654");
        System.out.println(bigInteger1.multiply(bigInteger2));
    }
}

Bigdicimal

package com.apex_legends.javaoop.bigdicmal;

import java.math.BigDecimal;
import java.math.BigInteger;

public class Decimailtest {
    public static void main(String[] args) {
        BigDecimal bigDecimal1 = new BigDecimal("0.12");
        BigDecimal bigDecimal2 = new BigDecimal("0.001");
        System.out.println(bigDecimal1.divide(bigDecimal2, 1,5));
    }
}

4. 日期类

  • Date类、Calendar类等。

Date

package com.apex_legends.javaoop.data_demo;

import java.util.Date;

public class Datetest {
    public static void main(String[] args) {
        Date date = new Date();
        System.out.println(date);
        System.out.println(date.getDate());
        System.out.println(date.getYear()+1900);
        System.out.println(date.getTime());
        //获取的是1970年1月1日 0:0:0,到程序运行时刻的毫秒值
        Date date1 = new Date();
        System.out.println(date1.getTime() - date.getTime());
        Date date2 = new Date(1708843601096L);
        //将指定的long类型的时间戳取出构造一个时间对象
        System.out.println(date2);
    }
}

Calendar

package com.apex_legends.javaoop.calendar_demo;

import java.util.Calendar;

public class Calendartest {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar);
        System.out.println(calendar.get(Calendar.YEAR));
        System.out.println(calendar.get(Calendar.MINUTE));
        System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
        System.out.println(calendar.getTimeInMillis());
    }
}

5. Math类

  • 提供数学运算的静态方法,如sqrt()、pow()等。
package com.apex_legends.javaoop.math_demo;

public class mathtest {
    public static void main(String[] args) {
        System.out.println(Math.PI);
        System.out.println(Math.abs(-3));
        System.out.println(Math.sqrt(9));
        System.out.println(Math.pow(2, 3));
    }
}

Math类的方法太多,此处代码不一一举例

6. Random类

public class Randomtest {
    public static void main(String[] args) {
        Random random = new Random();
        System.out.println(random.nextBoolean());
        System.out.println(random.nextFloat());
        System.out.println(random.nextInt(100));//不超过这个范围,比如这里不能是100
        byte[] bytes = new byte[5];
        random.nextBytes(bytes);
        System.out.println(Arrays.toString(bytes));
    }
}

Arrays类

BinarySearch二分查找

package com.apex_legends.javaoop.binarysearch_demo;

import java.util.Arrays;

public class BinarySearch {
    public static void main(String[] args) {
        int[] a = {5,4,3,2,1};
        Arrays.sort(a,0,3);
        /*
            只排序两数之间
         */
        System.out.println(Arrays.toString(a));

        Arrays.sort(a);
        /*
            sort()  默认升序排序
         */

        System.out.println(Arrays.toString(a));

        System.out.println(Arrays.binarySearch(a, 5));
    }
}

CopyOf

package com.apex_legends.javaoop.copyof_demo;

import java.util.Arrays;

public class CoypOf1 {
    public static void main(String[] args) {
        int[] c= new int[3];
        c[0] = 1;
        c[1] = 2;
        c[2] = 3;
        int[] d = Arrays.copyOf(c,5);
        System.out.println(Arrays.toString(d));
        int[] e = {1,2,3,4,5};
        Arrays.fill(e,0);
        System.out.println(Arrays.toString(e));
    }
}

集合

1. 集合框架

  • Java提供了一套完整的集合框架,包含List、Set、Queue、Map等接口及其实现类。

2. List

  • 有序集合,允许元素重复,常见实现有ArrayList、LinkedList等。

ArrayList

import java.util.ArrayList;  
  
public class ArrayListExample {  
    public static void main(String[] args) {  
        // 创建一个新的ArrayList  
        ArrayList<String> list = new ArrayList<>();  
  
        // 向列表中添加元素  
        list.add("元素1");  
        list.add("元素2");  
        list.add("元素3");  
  
        // 访问列表中的元素  
        System.out.println("第一个元素: " + list.get(0));  
  
        // 遍历列表  
        for (String item : list) {  
            System.out.println(item);  
        }  
  
        // 修改列表中的元素  
        list.set(1, "修改后的元素2");  
  
        // 检查元素是否存在  
        System.out.println("元素2是否存在: " + list.contains("元素2")); // 输出 false  
        System.out.println("修改后的元素2是否存在: " + list.contains("修改后的元素2")); // 输出 true  
  
        // 移除元素  
        list.remove("修改后的元素2");  
  
        // 再次遍历列表  
        for (String item : list) {  
            System.out.println(item);  
        }  
  
        // 获取列表的大小  
        System.out.println("列表的大小: " + list.size());  
    }  
}

LinkedList

import java.util.LinkedList;  
  
public class LinkedListExample {  
    public static void main(String[] args) {  
        // 创建一个新的LinkedList  
        LinkedList<String> list = new LinkedList<>();  
  
        // 向列表的开头添加元素  
        list.addFirst("元素1");  
        list.addFirst("元素0");  
  
        // 向列表的结尾添加元素  
        list.addLast("元素2");  
  
        // 访问列表的开头和结尾元素  
        System.out.println("开头元素: " + list.getFirst());  
        System.out.println("结尾元素: " + list.getLast());  
  
        // 遍历列表  
        for (String item : list) {  
            System.out.println(item);  
        }  
  
        // 从开头移除元素  
        list.removeFirst();  
  
        // 从结尾移除元素  
        list.removeLast();  
  
        // 再次遍历列表  
        for (String item : list) {  
            System.out.println(item);  
        }  
  
        // 获取列表的大小  
        System.out.println("列表的大小: " + list.size());  
    }  
}

3. Set

  • 无序集合,不允许元素重复,常见实现有HashSet、TreeSet等。

HashSet

import java.util.HashSet;  
  
public class HashSetExample {  
    public static void main(String[] args) {  
        // 创建一个新的HashSet  
        HashSet<String> set = new HashSet<>();  
  
        // 向集合中添加元素  
        set.add("元素1");  
        set.add("元素2");  
        set.add("元素1"); // 重复添加,不会生效  
  
        // 遍历集合  
        for (String item : set) {  
            System.out.println(item);  
        }  
  
        // 检查元素是否存在  
        System.out.println("元素1是否存在: " + set.contains("元素1")); // 输出 true  
        System.out.println("元素3是否存在: " + set.contains("元素3")); // 输出 false  
  
        // 移除元素  
        set.remove("元素1");  
  
        // 再次遍历集合  
        for (String item : set) {  
            System.out.println(item);  
        }  
  
        // 获取集合的大小  
        System.out.println("集合的大小: " + set.size());  
    }  
}

TreeSet

import java.util.TreeSet;  
  
public class TreeSetExample {  
    public static void main(String[] args) {  
        // 创建一个新的TreeSet  
        TreeSet<Integer> set = new TreeSet<>();  
  
        // 向集合中添加元素  
        set.add(3);  
        set.add(1);  
        set.add(2);  
  
        // 遍历集合(元素将按升序排列)  
        for (Integer item : set) {  
            System.out.println(item);  
        }  
  
        // 检查元素是否存在  
        System.out.println("元素1是否存在: " + set.contains(1)); // 输出 true  
  
        // 移除元素  
        set.remove(2);  
  
        // 再次遍历集合  
        for (Integer item : set) {  
            System.out.println(item);  
        }  
  
        // 获取集合的大小  
        System.out.println("集合的大小: " + set.size());  
  
        // 使用自定义比较器  
        TreeSet<String> stringSet = new TreeSet<>((s1, s2) -> s2.compareTo(s1)); // 降序排列  
        stringSet.add("apple");  
        stringSet.add("banana");  
        stringSet.add("cherry");  
  
        // 遍历自定义排序的集合  
        for (String fruit : stringSet) {  
            System.out.println(fruit);  
        }  
    }  
}

4. Map

  • 键值对集合,键唯一,值可重复,常见实现有HashMap、TreeMap等。

HashMap

import java.util.HashMap;  
import java.util.Map;  
  
public class HashMapExample {  
    public static void main(String[] args) {  
        // 创建一个新的HashMap  
        Map<String, Integer> map = new HashMap<>();  
  
        // 向映射中添加键值对  
        map.put("apple", 1);  
        map.put("banana", 2);  
        map.put("cherry", 3);  
  
        // 通过键来获取值  
        Integer appleCount = map.get("apple");  
        System.out.println("Apple count: " + appleCount);  
  
        // 遍历映射  
        for (Map.Entry<String, Integer> entry : map.entrySet()) {  
            System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());  
        }  
  
        // 检查键是否存在  
        System.out.println("Does 'banana' exist? " + map.containsKey("banana"));  
  
        // 检查值是否存在(注意:HashMap不直接支持通过值来查找键)  
        boolean containsValue = false;  
        for (Integer value : map.values()) {  
            if (value == 2) {  
                containsValue = true;  
                break;  
            }  
        }  
        System.out.println("Does the value 2 exist? " + containsValue);  
  
        // 移除键值对  
        map.remove("banana");  
  
        // 再次遍历映射  
        for (Map.Entry<String, Integer> entry : map.entrySet()) {  
            System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());  
        }  
  
        // 获取映射的大小  
        System.out.println("Map size: " + map.size());  
    }  
}

HashMap结构图

TreeMap

import java.util.TreeMap;  
import java.util.Map;  
  
public class TreeMapExample {  
    public static void main(String[] args) {  
        // 创建一个新的TreeMap  
        Map<String, Integer> map = new TreeMap<>();  
  
        // 向映射中添加键值对  
        map.put("cherry", 3);  
        map.put("apple", 1);  
        map.put("banana", 2);  
  
        // 遍历映射(键将按升序排列)  
        for (Map.Entry<String, Integer> entry : map.entrySet()) {  
            System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());  
        }  
  
        // 通过键来获取值  
        Integer bananaCount = map.get("banana");  
        System.out.println("Banana count: " + bananaCount);  
  
        // 检查键是否存在  
        System.out.println("Does 'apple' exist? " + map.containsKey("apple"));  
  
        // 移除键值对  
        map.remove("apple");  
  
        // 再次遍历映射  
        for (Map.Entry<String, Integer> entry : map.entrySet()) {  
            System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());  
        }  
  
        // 获取映射的大小  
        System.out.println("Map size: " + map.size());  
  
        // 使用自定义比较器(按字符串长度排序)  
        TreeMap<String, Integer> lengthSortedMap = new TreeMap<>((s1, s2) -> Integer.compare(s1.length(), s2.length()));  
        lengthSortedMap.put("apple", 1);  
        lengthSortedMap.put("banana", 2);  
        lengthSortedMap.put("cherry", 3);  
  
        // 遍历自定义排序的映射  
        for (Map.Entry<String, Integer> entry : lengthSortedMap.entrySet()) {  
            System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());  
        }  
    }  
}

5. 迭代器

  • Iterator:用于遍历集合中的元素。它提供了基本的遍历操作,如hasNext()next()
Iterator<String> iterator = someCollection.iterator();  
while (iterator.hasNext()) {  
    String element = iterator.next();  
    System.out.println(element);  
}
  • ListIterator:是Iterator的子接口,专门用于遍历List。它提供了额外的操作,如添加、替换和获取列表中元素的索引。
ListIterator<String> listIterator = someList.iterator();  
while (listIterator.hasNext()) {  
    String element = listIterator.next();  
    System.out.println(element);  
}  
  
// 从后向前遍历  
while (listIterator.hasPrevious()) {  
    String previousElement = listIterator.previous();  
    System.out.println("Previous: " + previousElement);  
}  
  
// 假设我们处于某个元素之前,我们可以添加或设置元素  

// listIterator.add("newElement");  
// listIterator.set("replacedElement");

异常

1. 异常的概念

  • 程序执行过程中遇到的错误或异常情况。

2. 异常的处理

  • try-catch语句块捕获并处理异常。
  • throw关键字用于抛出异常。
  • throws关键字用于声明可能抛出的异常,由调用者处理。

3. 异常的分类

  • 运行时异常(RuntimeException):程序运行时发生的异常,如NullPointerException、ArrayIndexOutOfBoundsException等。
  • 检查型异常(Checked Exception):编译时必须处理的异常,如IOException、SQLException等。

4. 自定义异常

  • 继承自Exception或RuntimeException类,创建自定义异常类。

JDBC

1. JDBC的概念

  • Java Database Connectivity,Java数据库连接,用于Java程序与数据库进行交互。

2. JDBC API

  • DriverManager:管理JDBC驱动。
  • Connection:代表与数据库的连接。
  • Statement:执行静态SQL语句并返回结果。
  • PreparedStatement:执行预编译的SQL语句,效率更高,且支持参数化查询,防止SQL注入。
  • ResultSet:保存查询结果集。

3. JDBC编程步骤

  • 加载并注册JDBC驱动。
  • 建立数据库连接。
  • 创建Statement或PreparedStatement对象。
  • 执行SQL语句。
  • 处理ResultSet。
  • 关闭连接、Statement和ResultSet对象。

首先先新建一个lib目录并导入数据库MySql的jar包

import java.sql.*;

public class Demo {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.cj.jdbc.Driver");
        //DriverManager.registerDriver(new Driver());
        String url = "jdbc:mysql://127.0.0.1:3306/gra_stu?serverTimezone=Asia/Shanghai";
        String user = "root";
        String password = "root";
        Connection connection = DriverManager.getConnection(url,user,password);

        //发送sql
        Statement statement = connection.createStatement();
        statement.executeUpdate("INSERT INTO book(bname,state) VALUES ('书库西通','已借出')");
        statement.close();
        connection.close();
    }
}

4. JDBC的修改插入和删除

import java.sql.*;

public class Demo1 {
    public static void main(String[] args) {
        Demo1 demo1 = new Demo1();
/*        try {
            demo1.save("蔡徐坤","2004-07-28",180, 60, "全能", 1);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }*/
        Foundation1 foundation1 = new Foundation1();
        /*try {
            foundation1.save("马嘉祺","2004-01-28",175, 50, "全能", 1);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }*/
        try {
            demo1.delate("科比布莱恩特");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }

    public void save(String player_name,String birth,int height,int weight,String postioning,int team) throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.cj.jdbc.Driver");
        String url = "jdbc:mysql://127.0.0.1:3306/gra_stu?serverTimezone=Asia/Shanghai";
        String user = "root";
        String password = "root";
        Connection connection = DriverManager.getConnection(url,user,password);
        Statement statement = connection.createStatement();
        statement.executeUpdate("INSERT INTO player (player_name,birth,height,weight,postioning,team)" + "VALUE('"+player_name+"','"+birth+"',"+height+","+weight+",'"+postioning+"',"+team+")");
        statement.close();
        connection.close();
    }

    public void update(int team,String player_name) throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.cj.jdbc.Driver");
        String url = "jdbc:mysql://127.0.0.1:3306/gra_stu?serverTimezone=Asia/Shanghai";
        String user = "root";
        String password = "root";
        Connection connection = DriverManager.getConnection(url,user,password);
        Statement statement = connection.createStatement();
        statement.executeUpdate("UPDATE player SET team = "+team+"WHERE player_name = '"+player_name+"'");
        statement.close();
        connection.close();
    }

    public void delate(String player_name) throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.cj.jdbc.Driver");
        String url = "jdbc:mysql://127.0.0.1:3306/gra_stu?serverTimezone=Asia/Shanghai";
        String user = "root";
        String password = "root";
        Connection connection = DriverManager.getConnection(url,user,password);
        Statement statement = connection.createStatement();
        statement.executeUpdate("DELETE FROM player WHERE player_name = '"+player_name+"' OR 1=1");
        statement.close();
        connection.close();
    }
}

5. JDBC查询

import sun.net.sdp.SdpSupport;

import java.sql.*;
import java.util.ArrayList;

public class Search extends Foundation1{
    public static void main(String[] args) {
        Player player = new Player();
        Foundation1 foundation1 = new Foundation1();
        try {
            player = foundation1.findPlayerByNum(31);
            System.out.println(player.toString());
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }

        Search search = new Search();
        ArrayList<Player> arrayList = new ArrayList<>();
        try {
            arrayList = search.findPlayerByNum("后卫");
            System.out.println(arrayList.toString());
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }

    public ArrayList<Player> findPlayerByNum(String postioning) throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.cj.jdbc.Driver");
        String url = "jdbc:mysql://127.0.0.1:3306/gra_stu?serverTimezone=Asia/Shanghai";
        String user = "root";
        String password = "root";
        Connection connection = DriverManager.getConnection(url,user,password);
        PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM player WHERE postioning = ?");
        preparedStatement.setObject(1, postioning);

        ArrayList<Player> arrayList = new ArrayList<Player>();
        ResultSet resultSet = preparedStatement.executeQuery();
        while (resultSet.next()){
            Player player = new Player();
            player.setNum(resultSet.getInt("num"));
            player.setPlayer_name(resultSet.getString("player_name"));
            player.setBirth(resultSet.getString("birth"));
            player.setHeight(resultSet.getInt("height"));
            player.setWeight(resultSet.getInt("weight"));
            player.setTeam(resultSet.getInt("team"));
            arrayList.add(player);
        }
        resultSet.close();
        preparedStatement.close();
        connection.close();
        return arrayList;
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ros2学习中的话题通信-自定义接口消息:在VScode中不能补全的问题

在学习ros2的过程中&#xff0c;当学习到话题通信-自定义接口消息时&#xff0c;当消息的具体类型并未指定时&#xff0c;常见的操作是在base_interfaces_demo下创建msg文件夹及文件。同理&#xff0c;在动作通信等其他类型的通信中也需要这么做&#xff0c;只是创建的文件夹的…

KV260视觉AI套件--开箱报告

目录 1. 简介 2. 与 Zynq 的渊源 3. 官方的入门步骤 4. 总结 1. 简介 传统的ARMFPGA或DSPFPGA控制方案在软件、逻辑、硬件以及系统工程的协同调试中&#xff0c;往往需要团队成员之间严格按照预定计划和接口规范进行分工合作&#xff0c;这不仅增加了测试过程的复杂性&…

【ElementPlus源码】Container 布局容器

文章目录 index.tsContainerheaderutilswithInstallwithNoopInstall hooksuseNamespace 单元测试 看源码时候做的笔记。如有错误请指出&#xff01; 关于路径的省略&#xff0c;详见button&#xff1a;【ElementPlus源码】Button按钮-CSDN博客 index.ts 导入一堆组件&#xff…

Centos7配置支持ftp文件传输功能

报错信息 适用于不支持ftp协议的centos7的系统。 报错信息&#xff1a;An error occurred while executing the action Connect. Details: No connection could be made because the target machine actively refused it. 解决办法 安装及启动等命令 # 安装vsftpd sudo yum…

Spark SQL 的总体工作流程

Spark SQL 是 Apache Spark 的一个模块,它提供了处理结构化和半结构化数据的能力。通过 Spark SQL,用户可以使用 SQL 语言或 DataFrame API 来执行数据查询和分析。这个模块允许开发者将 SQL 查询与 Spark 的数据处理能力结合起来,实现高效、优化的数据处理。下面是 Spark S…

高级运维工程师讲述银河麒麟V10SP1服务器加固收回权限/tmp命令引起生产mysql数据库事故实战

高级运维工程师讲述银河麒麟V10SP1服务器加固收回权限/tmp命令引起生产MySql数据库事故实战 一、前言 作为运维工程师经常会对生产服务器进行安全漏洞加固&#xff0c;一般服务厂商、或者甲方信息安全中心提供一些安全的shell脚本&#xff0c;一般这种shell脚本都是收回权限&…

C++实现简化版Qt信号槽机制(2):增加内存安全保障

在上一篇文章中《C实现一个简单的Qt信号槽机制》&#xff0c;我们基于前面的反射代码实现了信号槽的功能。 但是上一篇的代码中没有对象生命周期管理的机制&#xff0c;如果在对象的生命周期结束后还存在未断开的信号和槽连接&#xff0c;那么信号触发时可能会尝试访问已经被析…

Redis 7.x 系列【11】数据类型之位图(Bitmap)

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 基本命令2.1 SETBIT2.2 GETBIT2.3 BITCOUNT2.4 BITPOS2.5 BITFIELD2.6 BITF…

【产品经理】订单处理10-分配快递策略

本次主要讲解下在订单处理过程中分配快递的策略以及分配快递中需要用到的设置。 一、建立快递档案 在ERP系统中&#xff0c;需要建立快递档案&#xff0c;设置所属快递、快递的服务类型、支持的打印模版以及快递在各个平台的电子面单支持情况。 二、仓库绑定快递 仓库需要设…

【动态规划】279.完全平方数

279. 完全平方数 难度&#xff1a;中等 力扣地址&#xff1a;https://leetcode.cn/problems/perfect-squares/ 没有刷过的小伙伴们请一定要先去刷一次&#xff0c;然后如果感兴趣的话再阅读以下内容&#xff0c;便于交流 ~ 多谢支持 ~ 问题描述 给你一个整数 n &#xff0c;返…

C# 入门—基本语法

一、数据类型 C# 语言中内置了一些基本的数据类型&#xff0c;数据类型用来指定程序中变量可以存储的数据的类型&#xff0c;C# 中的数据类型可以大致分为三类&#xff1a; 值类型&#xff08;Value types&#xff09;&#xff1b;引用类型&#xff08;References types&…

[推荐]有安全一点的网贷大数据信用查询网站吗?

在互联网金融日益发展的今天&#xff0c;网贷大数据查询网站成为了许多人申贷前的必备工具。随着使用这些网站的人群越来越多&#xff0c;安全问题也逐渐浮出水面。最近&#xff0c;就有许多用户反馈自己的个人信息在网贷大数据查询网站上被泄露。为了解决这一问题&#xff0c;…

Spring Cloud Gateway3.x自定义Spring Cloud Loadbalancer负载均衡策略以及实现动态负载均衡策略的方案

目录 前言 1.原理分析 1.1 ReactiveLoadBalancerClientFilter源码分析 1.2 LoadBalancerClientFactory源码分析 2.代码实现 2.1 扩展原生RoundRobinLoadBalancer轮询策略 2.1.1 自定义实现RoundRobinLoadBalancer 2.1.2 配置自定义的RoundRobinLoadBalan…

idea2024使用springboot3.x系列新建java项目,使用jdk17,启动项目报错

身为一名开发人员&#xff0c;敲代码无数&#xff0c;竟被一个小小启动给我卡了大半天&#xff0c;太丢脸了 报错一&#xff1a;Field infoSysRepository in com.erectile.Impl.PersonalInfoServiceImpl required a bean of type ‘com.erectile.jpa.repository.InfoSysReposit…

前端vue使用onlyoffice控件实现word在线编辑、预览(仅列出前端部分需要做的工作,不包含后端部分)

简介 ONLYOFFICE 文档 是一个开源办公套件&#xff0c;包括文本文档、电子表格、演示文稿和可填写表单的编辑器。 它提供以下功能&#xff1a; 创建、编辑和查看文本文档、电子表格、演示文稿和可填写表单&#xff1b; 与其他队友实时协作处理文件。 基于这个控件&#xff0c;…

微信小程序根据蓝牙RSSI信号强度测试设备距离

背景 在做小程序连接蓝牙设备的时候&#xff0c;有需求表明在搜索到0.5米之内的设备时自动连接 问题&#xff1a; 蓝牙模组只提供了RSSI信号强度&#xff0c;那又该如何计算蓝牙设备距离小程序的距离呢&#xff1f; 解决方案 通过以下公式做大量测试&#xff1a;求 A、n 的平均…

【深度学习】卷积神经网络CNN

李宏毅深度学习笔记 图像分类 图像可以描述为三维张量&#xff08;张量可以想成维度大于 2 的矩阵&#xff09;。一张图像是一个三维的张量&#xff0c;其中一维代表图像的宽&#xff0c;另外一维代表图像的高&#xff0c;还有一维代表图像的通道&#xff08;channel&#xff…

【LeetCode】四、栈相关:有效的括号 + 下一个更大的元素

文章目录 1、栈结构2、Java中的栈3、leetcode20&#xff1a;有效的括号4、leetcode496&#xff1a;下一个更大元素 1、栈结构 和队列相反&#xff0c;栈先进后出 时间复杂度&#xff1a;访问、插入、删除都在栈顶进行操作&#xff0c;时间复杂度为O(1)&#xff0c;搜索需要遍…

技术分享:分布式数据库DNS服务器的架构思路

DNS是企业数字化转型的基石。伴随微服务或单元化部署的推广&#xff0c;许多用户也开始采用分布式数据库将原来的单体数据库集群服务架构拆分为大量分布式子服务集群&#xff0c;对应不同的微服务或服务单元。本文将从分布式数据库DNS服务器的架构需求、架构分析两方面入手&…

2.用BGP对等体发送路由

2.用BGP对等体发送路由 实验拓扑&#xff1a; 实验要求&#xff1a;用BGP对等体发送路由信息 实验步骤&#xff1a; 1.完成基本配置&#xff08;略&#xff09; 2.建立BGP对等体&#xff08;略&#xff09; 3.创建路由信息&#xff08;用创建一个loop back接口就能产生一个直连…