Java常用API

一、实体JavaBean

接下来,我们学习一个面向对象编程中,经常写的一种类——叫实体JavaBean类。我们先来看什么是实体类?

1. 什么是实体类?

实体类就是一种特殊的类,它需要满足下面的要求:

接下来我们按照要求,写一个Student实体类;

写完实体类之后,我们看一看它有什么特点? 其实我们会发现实体类中除了有给对象存、取值的方法就没有提供其他方法了。所以实体类仅仅只是用来封装数据用的。

知道实体类有什么特点之后,接着我们看一下它有哪些应用场景?

2. 实体类的应用场景

在实际开发中,实体类仅仅只用来封装数据,而对数据的处理交给其他类来完成,以实现数据和数据业务处理相分离。如下图所示

在实际应用中,会将类作为一种数据类型使用。操作数据交给StudentOperator类来处理。

// 实体类
public class Student {// 成员变量必须使用private修饰private String name;private double chinese;private double math;
​// 为成员变量提供set\get方法public String getName() {return name;}
​public void setName(String name) {this.name = name;}
​public double getChinese() {return chinese;}
​public void setChinese(double chinese) {this.chinese = chinese;}
​public double getMath() {return math;}
​public void setMath(double math) {this.math = math;}
​// 必须要提供空参构造器public Student() {}
​
​
}
​
// 专门用来处理学生对象的数据
public class StudentOperator {// 处理学生对象的数据,打印总成绩public  void printTotalScore(Student s) {System.out.println(s.getName() + "同学的总成绩是:" + (s.getChinese() + s.getMath()));}
​// 处理学生对象的数据,打印平均成绩public  void printAvgScore(Student s) {System.out.println(s.getName() + "同学的平均成绩是:" + (s.getChinese() + s.getMath()) / 2.0);}
}
​

public class Test {public static void main(String[] args) {// 创建学生处理类对象StudentOperator so = new StudentOperator();
​// 创建学生对象Student s1 = new Student();// 存储数据---为s1对象的成员变量赋值s1.setName("播妞");s1.setChinese(100);s1.setMath(100);// 打印总成绩,平均分so.printTotalScore(s1);so.printAvgScore(s1);
​System.out.println("----------------");// 创建学生对象Student s2 = new Student();// 存储数据---为s2对象的成员变量赋值s2.setName("波仔");s2.setChinese(59);s2.setMath(99);// 打印总成绩,平均分so.printTotalScore(s2);so.printAvgScore(s2);
​}
​
​
}
​

到这里,我们已经学习了JavaBean实体类的是什么,以及它的应用场景,我们总结一下

1.JavaBean实体类是什么?有啥特点JavaBean实体类,是一种特殊的;它需要私有化成员变量,有空参数构造方法、同时提供     getXxx和setXxx方法;JavaBean实体类仅仅只用来封装数据,只提供对数据进行存和取的方法2.JavaBean的应用场景?JavaBean实体类,只负责封装数据,而把数据处理的操作放在其他类中,以实现数据和数     据处理相分离。

二、面向对象综合案例

学习完面向对象的语法知识之后。接下来,我们做一个面向对象的综合案例——模仿电影信息系统。

需求如下图所示

1. 想要展示系统中全部的电影信息(每部电影:编号、名称、价格)
  1. 允许用户根据电影的编号(id),查询出某个电影的详细信息。

运行程序时,能够根据用户的选择,执行不同的功能,如下图所示

按照下面的步骤来完成需求

1. 第一步:定义电影类

首先每一部电影,都包含这部电影的相关信息,比如:电影的编号(id)、电影的名称(name)、电影的价格(price)、电影的分数(score)、电影的导演(director)、电影的主演(actor)、电影的简介(info)。

为了去描述每一部电影,有哪些信息,我们可以设计一个电影类(Movie),电影类仅仅只是为了封装电影的信息,所以按照JavaBean类的标准写法来写就行。

// 电影类---实体类
public class Movie {// 成员变量---电影的数据信息// 电影编号(id)private int id;// 电影名称(name)private String name;// 电影价格(price)private double price;// 电影分数(score)private double score;// 电影导演(director)private String director;// 电影主演(actor)private String actor;// 电影简介(info)private String info;
​// set\getpublic int getId() {return id;}
​public void setId(int id) {this.id = id;}
​public String getName() {return name;}
​public void setName(String name) {this.name = name;}
​public double getPrice() {return price;}
​public void setPrice(double price) {this.price = price;}
​public double getScore() {return score;}
​public void setScore(double score) {this.score = score;}
​public String getDirector() {return director;}
​public void setDirector(String director) {this.director = director;}
​public String getActor() {return actor;}
​public void setActor(String actor) {this.actor = actor;}
​public String getInfo() {return info;}
​public void setInfo(String info) {this.info = info;}
​// 无参构造器public Movie() {}
​// 建议满参构造器public Movie(int id, String name, double price, double score, String director, String actor, String info) {this.id = id;this.name = name;this.price = price;this.score = score;this.director = director;this.actor = actor;this.info = info;}
}
​

2. 第二步:定义电影操作类

前面我们定义的Movie类,仅仅只是用来封装每一部电影的信息。为了让电影数据和电影数据的操作相分离,我们还得有一个电影操作类(MovieOperator)。

因为系统中有多部电影,所以电影操作类中MovieOperator,需要有一个Movie[] movies; 用来存储多部电影对象;

同时在MovieOperator类中,提供对外提供,对电影数组进行操作的方法。如printAllMovies()用于打印数组中所有的电影信息,searchMovieById(int id)方法根据id查找一个电影的信息并打印。

import java.util.Scanner;
​
public class MovieOperator {
​// 定义一个方法,用于显示操作界面public  void start(Movie[] arr){// 电影系统的操作界面while (true) {System.out.println("-----------------电影信息系统-----------------");System.out.println("1.查询全部电影信息:");System.out.println("2.根据电影id查询电影详情:");Scanner sc = new Scanner(System.in);System.out.println("请您选择您要操作的功能:");int option = sc.nextInt();
​// 判断switch (option){case 1:// 调用展示系统中的全部电影的方法showAllMovies(arr);break;case 2:// 让用户输入电影编号System.out.println("请输入您要查询的电影编号:");int id = sc.nextInt();
​// 根据id查询电影信息showMovieById(arr,id);break;default:System.out.println("您选择功能序号有误,请重新选择!");break;}}}
​// 定义一个方法,展示系统中的全部电影(每部电影展示:编号,名称,价格)。public  void showAllMovies(Movie[] movies){// 循环遍历Movie数组中的所有电影信息for (int i = 0; i < movies.length; i++) {// 获取遍历出来的电影对象Movie movie = movies[i];// 获取遍历出来的电影对象的信息System.out.println("电影的编号:"+movie.getId());System.out.println("电影的名称:"+movie.getName());System.out.println("电影的价格:"+movie.getPrice());System.out.println("电影的分数:"+movie.getScore());System.out.println("电影的导演:"+movie.getDirector());System.out.println("电影的主演:"+movie.getActor());System.out.println("电影的简介:"+movie.getInfo());System.out.println("------------------------");}}
​// 定义一个方法,允许用户根据电影编号(id)查询出某个电影的详细信息public  void showMovieById(Movie[] movies, int id){// 循环遍历数组中所有元素for (int i = 0; i < movies.length; i++) {// 获取遍历出来的电影对象Movie movie = movies[i];// 判断遍历出来的movie对象的id是否和传入的id一致if (movie.getId() == id){// 如果一致,显示当前遍历出来的电影对象的所有信息System.out.println("电影的编号:"+movie.getId());System.out.println("电影的名称:"+movie.getName());System.out.println("电影的价格:"+movie.getPrice());System.out.println("电影的分数:"+movie.getScore());System.out.println("电影的导演:"+movie.getDirector());System.out.println("电影的主演:"+movie.getActor());System.out.println("电影的简介:"+movie.getInfo());}}}
}
​

3. 第三步:定义测试类

最后,我们需要在测试类中,准备好所有的电影数据,并用一个数组保存起来。每一部电影的数据可以封装成一个对象。然后把对象用数组存起来即可。

public class Test {public static void main(String[] args) {// 定义一个长度为5的Movie类型数组,用于存储系统中的所有电影Movie[] arr = new Movie[5];
​// 创建5个电影对象,存储对应的电影信息Movie m1 = new Movie(1,"出拳吧,妈妈",45.5,7.9,"唐晓白","谭卓","致敬女性力量");Movie m2 = new Movie(2,"一点就到家",45.5,8.7,"许宏宇","刘昊然","电商新时代");Movie m3 = new Movie(3,"月球陨落",45.5,7.9,"罗兰","哈莉","脑洞大开");Movie m4 = new Movie(4,"小美人鱼的奇幻冒险",45.5,7.9,"思明","无","无");Movie m5 = new Movie(5,"长津湖之水门桥",45.5,9.6,"徐克","吴京","抗战神剧");}
}

准备好测试数据之后,接下来就需要对电影数据进行操作。我们已经把对电影操作先关的功能写到了MovieOperator类中,所以接下来,创建MovieOperator类对象,调用方法就可以完成相关功能。

继续再main方法中,接着写下面的代码。

public class Test {public static void main(String[] args) {// 定义一个长度为5的Movie类型数组,用于存储系统中的所有电影Movie[] arr = new Movie[5];
​// 创建5个电影对象,存储对应的电影信息Movie m1 = new Movie(1,"出拳吧,妈妈",45.5,7.9,"唐晓白","谭卓","致敬女性力量");Movie m2 = new Movie(2,"一点就到家",45.5,8.7,"许宏宇","刘昊然","电商新时代");Movie m3 = new Movie(3,"月球陨落",45.5,7.9,"罗兰","哈莉","脑洞大开");Movie m4 = new Movie(4,"小美人鱼的奇幻冒险",45.5,7.9,"思明","无","无");Movie m5 = new Movie(5,"长津湖之水门桥",45.5,9.6,"徐克","吴京","抗战神剧");
​// 把5个电影对象存储到数组中arr[0] = m1;arr[1] = m2;arr[2] = m3;arr[3] = m4;arr[4] = m5;
​
​// 启动程序,显示操作界面MovieOperator mo = new MovieOperator();mo.start(arr);
​
​
​}
​
​
}
​

到这里,电影信息系统就完成了。 小伙伴们,自己尝试写一下吧!!

三、成员变量和局部变量的区别

各位同学,面向对象的基础内容咱们已经学习完了。同学们在面向对象代码时,经常会把成员变量和局部变量搞混。所以现在我们讲一讲他们的区别。

如下图所示,成员变量在类中方法外,而局部变量在方法中。


到这里,我们关于面向对象的基础知识就学习完了。面向对象的核心点就是封装,将数据和数据的处理方式,都封装到对象中; 至于对象要封装哪些数据?对数据进行怎样的处理? 需要通过类来设计。

需要注意的是,不同的人,对同一个对象进行设计,对象封装那些数据,提供哪些方法,可能会有所不同;只要能够完成需求,符合设计规范,都是合理的设计。

四、API概述

各位同学,我们前面已经学习了面向对象编程,使用面向对象编程这个套路,我们需要自己写类,然后创建对象来解决问题。但是在以后的实际开发中,更多的时候,我们是利用面向编程这种套路,使用别人已经写好的类来编程的。

这就是我们今天要学习的内容——常用API(全称是Application Program Interface 应用程序接口),说人话就是:别人写好的一些程序,给咱们程序员直接拿去调用。

Java官方其实已经给我们写好了很多很多类,每一个类中又提供了一系列方法来解决与这个类相关的问题。

  • 比如String类,表示字符串,提供的方法全都是对字符串操作的。

  • 比如ArrayList类,表示一个容器,提供的方法都是对容器中的数据进行操作的。

像这样的类还有很多,Java把这些类是干什么用的、类中的每一个方法是什么含义,编写成了文档,我们把这个文档称之为API文档。

1. 我们为什么要学习别人写好的程序呢?

在行业中有这么一句话:“不要重复造轮子”。这里所说的轮子就是别人已经写过的程序。意思就是不要写重复的程序,因为程序是用来解决问题的,如果这个问题别人已经解决过,并且这个解决方案也得到了市场认可,那就不用再自己重复写这个程序了。

Java已经发展了20多年,在这20多年里,已经积累类了很多问题的解决方案,基本上现在我们遇到的问题,在这20多年里,早就有人解决过。

所以我们把面向对象的高级知识学习完之后,Java语言的语法知识就已经学习完了。剩下的所有内容都是是学习一个一个的API,通过调用API提供的方法来解决实际问题。

2. 我们要学习哪些API

Java的API文档中,有那么多的类,是所有的类都要学习吗?并不是 ,虽然Java提供了很多个类,但是并不是所有类都得到了市场认可,我们只学习一些在工作中常用的就行。

除了Java官方提供的API,还一些第三方的公司或者组织也会提供一些API,甚至比Java官方提供的API更好用,在需要的时候我们也会告诉大家怎么用。

3. 今天我们主要学习两个类,一个是String类、还有一个是ArrayList类。

字符串的应用场景是非常多的,可以说是无处不在。

比如,在用户登录时,需要对用户名和密码进行校验,这里的用户名和密码都是String

再比如,在和网友聊天时,其实输入的文字就是一个一个字符串

再比如,在百度上搜索时,搜素的关键词,也是字符串

学习完String类之后,还会学习一个类ArrayList

大家知道数组是一个容器,有数组干嘛还要集合呢? 因为数字的长度是固定的,一旦创建不可改变。

比如数组的长度为3,想要存储第4个元素就存不进去了。

使用集合就可以解决上面的问题,集合可以根据需要想存多少个元素就存多少个元素。

五、包

1. 什么是包

在学习API类之前,我们先要学习包。因为Java官方提供的类有很多,为了对这些类进行分门别类的管理,别人把写好的类都是放在不同的包里的。

包其实类似于文件夹,一个包中可以放多个类文件。如下图所示

建包的语法格式:

//类文件的第一行定义包
package com.itheima.javabean;
​
public class 类名{}

2. 在自己的程序中,调用其他包中的程序,需要注意下面一个问题

  • 如果当前程序中,要调用自己所在包下的其他程序,可以直接调用。(同一个包下的类,互相可以直接调用)

  • 如果当前程序中,要调用其他包下的程序,则必须在当前程序中导包, 才可以访问!

    导包格式:import 包名.类名

  • 如果当前程序中,要调用Java.lang包下的程序,不需要我们导包的,可以直接使用。

  • 如果当前程序中,要调用多个不同包下的程序,而这些程序名正好一样,此时默认只能导入一个程序,另一个程序必须带包名访问。

六、String类

1. String类概述

各位同学,接下来我们学习String这个类,也就是学对字符串进行处理。为什么要学习字符串处理呢?因为在开发中对于字符串的处理还是非常常见的。

比如:在用户登录时,用户输入的用户名和密码送到后台,需要和正确的用户名和密码进行校验,这就需要用到String类提供的比较功能。

再比如:同学们在直播留言时,有些小伙伴可能不太文明说了一些脏话,后台检测到你输入的是脏话,就会用***把脏话屏蔽掉。这也需要用到String类提供的替换功能

Java为了方便我们处理字符串,所以给我们提供了一个String类来代表字符串,这个类就是java.lang包下。

按照面向对象的编程思想,对于字符串的操作,只需要创建字符串对象,用字符串对象封装字符串数据,然后调用String类的方法就可以了。


2. String创建对象

接下来我们打开String类的API,看一下String类的对象如何创建。如下图所示

String类的API中,有这么一句话:“Java程序中的所有字符串字面值(如"abc")都是字符串的实例实现”。这里所说的实例实现,其实指的就是字符串对象。

意思就是:所有Java的字符串字面值,都是字符串对象。

  • 所以创建String对象的第一种方式就有了

String s1 = "abc"; //这里"abc"就是一个字符串对象,用s1变量接收
​
String s2 = "黑马程序员"; //这里的“黑马程序员”也是一个字符串对象,用s2变量接收
  • 创建String对象还有第二种方式,就是利用String类的构造方法创建String类的对象。

我们前面学习过类的构造方法,执行构造方法需要用到new关键字。new String(参数)就是在执行String类的构造方法。

下面我们演示通过String类的构造方法,创建String类的对象

// 1、直接双引号得到字符串对象,封装字符串数据
String name = "黑马666";
System.out.println(name);
​
// 2、new String创建字符串对象,并调用构造器初始化字符串
String rs1 = new String();
System.out.println(rs1); // ""
​
String rs2 = new String("itheima");
System.out.println(rs2);
​
char[] chars = {'a', '黑', '马'};
String rs3 = new String(chars);
System.out.println(rs3);
​
byte[] bytes = {97, 98, 99};
String rs4 = new String(bytes);
System.out.println(rs4);

关于String类是用来干什么的,以及String类对象的创建我们就学习到这里。最后总结一下

1. String是什么,可以做什么?答:String代表字符串,可以用来创建对象封装字符串数据,并对其进行处理。
​
2.String类创建对象封装字符串数据的方式有几种?方式一: 直接使用双引号“...” 。方式二:new String类,调用构造器初始化字符串对象。

3. String类的常用方法

各位同学,在上一节课中,我们学习了如何通过字符串对象封装数据,接下来我们学习调用String类的方法对象字符串数据进行处理。

这里已经将String类的常用方法,给同学们挑出来了,我们先快速的认识一下。为什么是快速认识一下呢?因为API真正的作用是来解决业务需求的,如果不解决业务需求,只是记API是很难记住的。

所以API的正确打开方式是,先找到这个类,把这个类中的方法先用代码快速过一遍,有一个大概印象就行。然后再具体的案例中,选择你需要的方法来用就行。

下面我们就把String类中的方法,按照方法的调用规则,先快速过一遍。(注意:第一次调用API方法,都是看着API方法来调用用的,不是背的)

public class StringDemo2 {public static void main(String[] args) {//目标:快速熟悉String提供的处理字符串的常用方法。String s = "黑马Java";// 1、获取字符串的长度System.out.println(s.length());
​// 2、提取字符串中某个索引位置处的字符char c = s.charAt(1);System.out.println(c);
​// 字符串的遍历for (int i = 0; i < s.length(); i++) {// i = 0 1 2 3 4 5char ch = s.charAt(i);System.out.println(ch);}
​System.out.println("-------------------");
​// 3、把字符串转换成字符数组,再进行遍历char[] chars = s.toCharArray();for (int i = 0; i < chars.length; i++) {System.out.println(chars[i]);}
​// 4、判断字符串内容,内容一样就返回trueString s1 = new String("黑马");String s2 = new String("黑马");System.out.println(s1 == s2); // falseSystem.out.println(s1.equals(s2)); // true
​// 5、忽略大小写比较字符串内容String c1 = "34AeFG";String c2 = "34aEfg";System.out.println(c1.equals(c2)); // falseSystem.out.println(c1.equalsIgnoreCase(c2)); // true
​// 6、截取字符串内容 (包前不包后的)String s3 = "Java是最好的编程语言之一";String rs = s3.substring(0, 8);System.out.println(rs);
​// 7、从当前索引位置一直截取到字符串的末尾String rs2 = s3.substring(5);System.out.println(rs2);
​// 8、把字符串中的某个内容替换成新内容,并返回新的字符串对象给我们String info = "这个电影简直是个垃圾,垃圾电影!!";String rs3 = info.replace("垃圾", "**");System.out.println(rs3);
​// 9、判断字符串中是否包含某个关键字String info2 = "Java是最好的编程语言之一,我爱Java,Java不爱我!";System.out.println(info2.contains("Java"));System.out.println(info2.contains("java"));System.out.println(info2.contains("Java2"));
​// 10、判断字符串是否以某个字符串开头。String rs4 = "张三丰";System.out.println(rs4.startsWith("张"));System.out.println(rs4.startsWith("张三"));System.out.println(rs4.startsWith("张三2"));
​// 11、把字符串按照某个指定内容分割成多个字符串,放到一个字符串数组中返回给我们String rs5 = "张无忌,周芷若,殷素素,赵敏";String[] names = rs5.split(",");for (int i = 0; i < names.length; i++) {System.out.println(names[i]);}}
}

演示完String类的这些方法之后,我们对字符串有哪些方法,就已经有一个大致印象了。至少知道String字符串能干哪些事情。

至于String类的这些方法是否都记住了,这个还需要通过一些案例训练,在用的过程中去找哪个方法能够解决你的实际需求,就用哪个方法。同一个方法用的次数多个,自然就记住了。

4. String案例:随机产生验证码

接下来学习一个在工作中也比较常见的案例,使用String来开发验证码。需求如下:

根据需求分析,步骤如下:1.首先,设计一个方法,该方法接收一个整型参数,最终要返回对应位数的随机验证码。2.方法内定义2个字符串变量:1个用来记住生成的验证码,1个用来记住要用到的全部字符。3.定义for循环控制生成多少位随机字符4.每次得到一个字符范围内的随机索引5.根据索引提取该字符,把该字符交给code变量连接起6.循环结束后,在循环外返回code即可。7.在主方法中调用生成验证码的方法

根据步骤完成代码

import java.util.Random;
/**目标:完成随机产生验证码,验证码的每位可能是数字、大写字母、小写字母*/
public class StringTest5 {public static void main(String[] args) {System.out.println(createCode(4));System.out.println(createCode(6));}/**1、设计一个方法,返回指定位数的验证码*/public static String createCode(int n){// 2、定义2个变量 //一个是记住最终产生的随机验证码 //一个是记住可能用到的全部字符String code = "";String data = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
​Random r = new Random();// 3、开始定义一个循环产生每位随机字符for (int i = 0; i < n; i++) {// 4、随机一个字符范围内的索引。int index = r.nextInt(data.length());// 5、根据索引去全部字符中提取该字符code += data.charAt(index); // code = code + 字符}// 6、返回code即可return code;}
}

关于String的案例,我们先练习到这里。以后遇到对字符串进行操作的需求,优先找String类有没有提供对应的方法。

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

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

相关文章

burpsuite 爆破

靶场搭建:phpstudy的安装与靶场搭建 - junlin623 - 博客园 (cnblogs.com) 账号字典:XXTK: 一些弱口令、fuzz字典 (gitee.com) 网盘链接:https://pan.baidu.com/s/1v5pAwaTwoeCnJgkUXf3iLQ?pwd=mllm 提取码:mllm --来自百度网盘超级会员V2的分享 一、暴力破解 - 基于…

将Django项目从本地上传至宝塔服务器(踩坑记录)

文章目录 写在前面配置本地文件配置宝塔面板解决遇到问题展示运行结果热门文章 自我介绍 ⭐2022年度CSDN 社区之星 Top6 ⭐2023年度CSDN 博客之星 Top16 ⭐2023年度CSDN 城市之星 Top2&#xff08;苏州&#xff09; ⭐CSDN Python领域 优质创作者 ⭐CSDN 内容合伙人 推荐热门…

jmeter下载及安装配置

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;软件测试面试题分享&#xff1a; 1000道软件测试面试题及答案&#x1f4e2;软件测试实战项目分享&#xff1a; 纯接口项目-完…

lvs+keepalived+nginx实现四层负载+七层负载

目录 一、lvs配置 二、nginx配置 三、测试 3.1 keepalived负载均衡 3.2 lvskeepalived高可用 3.3 nginx高可用 主机IPlvs01-33 11.0.1.33 lvs02-3411.0.1.34nginx0111.0.1.31nginx0211.0.1.32VIP11.0.1.30 4台主机主机添加host [rootnginx01 sbin]# cat /etc/hosts 127.0.0.…

【力扣每日一题】力扣2478从链表中移除节点

题目来源 2478.从链表中移除节点 题目描述 给你一个链表的头节点 head 。 移除每个右侧有一个更大数值的节点。 返回修改后链表的头节点 head 。 示例 示例1&#xff1a; 输入&#xff1a;head [5,2,13,3,8] 输出&#xff1a;[13,8] 解释&#xff1a;需要移除的节点是 5 …

针对CSP-J/S的冲刺练习:Day 4 提高题

一、审题 时间限制&#xff1a;1000ms 内存限制&#xff1a;256MB 平均AC率&#xff1a;7.89% 题目描述 输出一个n*n大小的螺旋矩阵。 螺旋矩阵的样子&#xff1a; 输入描述 共一行&#xff0c;一个正整数n&#xff0c;表示矩阵变长的长度 输出描…

【电路笔记】-电感器

电感器 文章目录 电感器1、概述2、电感器的时间常数3、电感器示例1 电感器是一种由线圈组成的无源电气元件&#xff0c;其设计目的是利用电流通过线圈而产生的磁力和电力之间的关系。 1、概述 在本中&#xff0c;我们将看到电感器是一种电子元件&#xff0c;用于将电感引入到电…

使用Apache Commons Chain实现命令模式

第1章&#xff1a;引言 大家好&#xff0c;我是小黑。今天咱们来聊聊一个挺有意思的话题&#xff1a;如何用Apache Commons Chain实现命令模式。首先&#xff0c;得先搞明白什么是命令模式&#xff0c;对吧&#xff1f;命令模式&#xff0c;它其实是一种设计模式&#xff0c;主…

嵌入式科普(9)vscode无法跳转和恢复默认配置

一、目的/概述 二、解决办法 2.1 使能Intelli Sense Engine 2.2 vscode恢复默认配置 2.3 c/c与clangd冲突 嵌入式科普(9)vscode无法跳转和恢复默认配置 一、目的/概述 1、2024年的第一天突然vscode无法跳转,莫名其妙 2、尝试了各种设置和插件都无效&#xff0c;卸…

快递物流怎么寄最便宜?你一定要知道的5个方法 !

家人们&#xff0c;临近年关&#xff0c;大家的钱包是不是鼓鼓的了&#xff0c;难免的亲戚朋友之间会相互寄送一些东西&#xff0c;所以最近因为需要经常寄快递物流&#xff0c;小编所以特地整理了5个我们平时个人寄快递便宜的方法攻略&#xff0c;推荐第五个&#xff0c;实用干…

【Java集合篇】HashMap 在 get 和 put 时经过哪些步骤

HashMap在get和put时经过哪些步骤? ✔️ 典型解析✔️get方法✔️put方法✔️ 拓展知识仓✔️ HashMap如何定位key✔️ HashMap定位tablelndex的骚操作作✔️HashMap的key为null时&#xff0c;没有hashCode是如何存储的?✔️ HashMap的value可以为null吗? 有什么优缺点讷? …

群太多,有什么办法可以定时、批量、标签分类群发的吗?

你或许会遇到微信群组过多而导致管理困难等问题吗&#xff1f;对于如何高效地管理众多微信群组&#xff0c;实现分类管理同样具有不可忽视的重要性。 实际上&#xff0c;对此问题小编收到了部分朋友的疑问&#xff1a;“既然可以为微信好友添加标签&#xff0c;那为何不能为微…

torch.meshgrid和np.meshgrid的区别

numpy中meshgrid&#xff1a; 把数组a当作一行&#xff0c;再根据数组b的长度扩充行。 把数组b当作一列&#xff0c;再根据数组a的长度扩充列。 torch中meshgrid&#xff1a; 把数组a当作一列&#xff0c;再根据数组b的长度扩充列。 把数组b当作一行&#xff0c;再根据数组a的…

CAVER: Cross-Modal View-Mixed Transformer for Bi-Modal Salient Object Detection

目录 一、论文阅读笔记&#xff1a; 1、摘要&#xff1a; 2、主要贡献点&#xff1a; 3、方法&#xff1a; 3.1 网络的总体框架图&#xff1a; 3.2 Transformer-based Information Propagation Path (TIPP) 3.3 Intra-Modal/Cross-Scale Self-Attention (IMSA/CSSA) Q1…

onxxruntime使用cuda以及tensorrt进行加速

1、版本匹配 版本需要匹配&#xff0c;不然运行会报错 2、onnxruntime之tensorrt加速 方式一&#xff1a; OrtTensorRTProviderOptions trt_options{}; trt_options.trt_max_workspace_size 2147483648; trt_options.trt_max_partition_iterations 10; trt_options.trt_m…

kali-Linux安装ARL灯塔教程以及timeout of 20000ms exceeded 的解决方法

FLAG&#xff1a;别和妈妈诉苦&#xff0c;她帮不上&#xff0c;也睡不着。 专研方向: docker&#xff0c;ARL资产灯塔系统 每日emo&#xff1a;天冷了&#xff0c;你还在坚持吗&#xff1f; 欢迎各位与我这个菜鸟交流学习 kali安装ARL灯塔教程 1.安装docker环境&#xff0c;…

【MySQL】orderby/groupby出现Using filesort根因分析及优化

序 在日常的数据库运维中&#xff0c;我们可能会遇到一些看似难以理解的现象。比如两个SQL查询语句&#xff0c;仅仅在ORDER BY子句上略有不同&#xff0c;却造成了性能的天壤之别——一个飞速完成&#xff0c;一个则让数据库崩溃。今天就让我们围绕这个问题&#xff0c;深入剖…

Mysql的安装配置教程(非常详细)从零基础入门到精通,看完这一篇就够了

首先简单概述分为几个步骤&#xff1a; 一、下载Mysql 二、安装Mysql 三、验证Mysql安装是否成功 四、 配置环境变量 五、验证配置环境变量是否成功 一、下载Mysql 要在Windows或Mac上安装MySQL&#xff0c;首先从MySQL官方网站下载最新的MySQL Community Server版本&am…

QCharView使用

QChart是 QGraphicsWidget的子类。 QCharView是QGraphicsView的子类 QCharView概念:title、系列、图标Chart、视图 说明: 需要添加Qt组件charts 在使用QChart或者QChartView之前需要添加宏定义QT_CHARTS_USE_NAMESPACE &#xff08;其实是使用了命名空间&#xff09;&#xff…

Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现相机图像转换为Mat图像格式(C++)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机掉线自动重连&#xff08;C&#xff09; Baumer工业相机Baumer工业相机的图像转换为OpenCV的Mat图像的技术背景在NEOAPI SDK里实现相机图像转换为Mat图像格式联合OpenCV实现相机图像转换为Mat图像格式测试演示图 工业相机…