java1
在继承中,创建子类对象,访问成员方法的规则:
创建的对象是谁,就优先用谁,没有再向上找
注意:无论是成员变量还是成员方法,
如果没有都是向上找父类,不会向下找子类
继承的特点:子类可以拥有父类的内容,此处子类还可以拥有自己独有的内容(成员变量和方法)
定义继承的格式:(至少需要三个类:父类、子类、主类)
父类的格式:(普通的类定义) 子类的格式:
public class 父类名{ public class 子类名 extends 父类名{
//属性: //继承的父类的属性和方法
//方法; //自己独有的属性和方法
} }
java继承三大特性:
1.一个父类可以有多个子类
2.一个子类只能有一个父类
3.Java中的继承可以是多级继承
父类对象只能访问父美里的属性和方法不能访问于类里独有的属性和方法。
于类对象既能访问火类里的属性和万法,也能访问于关里独有的属性和方法。
若父类和子类里的成员变量重名,则创建子类对象时,访问有两种方式:
直接通过子类对象访问成员变量:优先子类内容,没有就向上找
间接通过成员方法访问成员变量:方法属于谁就优先用谁,没有就向上找
继承中,父类、子类构造方法的访问特点:
1.子类构造方法中有一个默认的super() 方法,
所以创建子类对象时先要调用父类的构造方法,再调用子类的构造方法
2.子类的构造方法可以通过super关键字来调用父类重载的构造方法。
3.super的父类构造方法调用时必须是子类构造方法的第一句,
不能一个子类构造方法同时调用多个super语句
方法的重写:发生在继承关系中,方法名称一样,参数列表也一样
重写:override 方法名称一样,参数列表【也一样】。覆盖、覆写
重载:overload 方法名称一样,参数列表【不一样】
注:
1.父子类之间的方法名相同,参数列表相同;
2.为了检测是不是有效的重载。可以在重写的方法前写上:@Override
3.子类重写的方法的返回值类型<=父类方法的返回值类型
4.子类重写的方法的访问权限>=父类方法的访问权限
public>protect>default(什么也不写)>private
super的三种用法:(跟父类相关)
1.在子类的成员方法中访问父类的成员变量;
区分局部变量、本类成员变量、父类成员变量重名时的使用:
局部变量:直接写变量名 num
本类的成员变量:this.变量名
父类的成员变量:super.变量名
2.在子类的成员方法中访问父类的成员方法;
3.在子类的构造方法中访问父类的构造方法
final关键字的几种用法:
1.修饰方法:不能被覆盖重写 public final void speak(){}
2.修饰类:不能被继承,不能有子类。(很少使用) public final class A{}
3.修饰成员变量:需赋值,且不可改变——常量。final double a = 2.14;
4.修饰接口
抽象方法:不确定具体地实现细节的时候,就可以用抽象方法。
在方法前加上abstract关键字,去掉花括号,分号结束。
抽象类:抽象方法的类必须是一个抽象类。即在class之前加上abstract
如何使用抽象类和抽象方法:
1.不能直接创建(new)抽象类的对象;
2.必须要有一个子类来继承此抽象的父类;
3.子类必须重写抽象父类中的抽象方法。
重写:去掉abstract关键字,补上方法体的{},写上方法体的内容(具体的实现细节)
4.创建子类对象来调用。
抽象类的特点:
1.和普通的类相比,abstract类里可以有abstract方法。也可以没有。
但是abstract方法所在的类必须是abstract类。
2.对于abstract类,不能使用new运算符创建该类的对象,只能产生其子类,由子类创建对象。
3.如果一个非abstract是abstract类的子类,它必须具体实现父类的所有的abstract方法,
重写的时候去掉abstract关键字,并给出方法体;
4.如果一个abstract类是abstract类的子类,那么他可以重写父类的abstract方法,
也可以继承父类的abstract方法。
5.对于abstract方法,不允许使用final修饰abstract方法,
也不允许使用static和priva
面向过程:当需要实现一个功能的时候,强调具体的实现细节和步骤,第一步干什么,第二步在干什么。
//面向过程:强调的是具体的实现细节,第一步。。。
System.out.print("[");
面向对象:当需要实现一个功能的时候,不关心具体的实现细节,而是找一个已经有该功能的东西来替我完成。
System.out.println(Arrays.toString(array));
定义一个类,用来模拟学生事物
属性(静态的,状态信息)
姓名,年龄
行为(动态的,能做什么)
吃
睡
学习
对应到Java里
成员变量(属性):
String name;
int age;
成员方法(行为):无static
public void eat(){}
public void sleep(){}
public void study(){}
注:
1.成员变量直接定义在类当中,方法外
2.成员方法不要写static关键字,调用必须实例化(创建对象,由对象来调用)
3.普通方法要有static关键字,调用有三种方式(单独调用,打印调用,赋值调用)
如果两个对象具有相同的引用/地址,那么这两个对象就完全相同,
一个发生改变,另一个也会发生相应的改变,
类和数组一样,都是属于引用型的数据类型。
使用类:通常情况下,一个类不能直接使用,需要根据类创建一个对象来使用
类的作用:把这个类里的属性和行为封装到一个类里,用到什么调用什么
1.导包:指出用到的类在什么位置 格式:import 包名.类名
但是对于和当前类属于同一个包的情况,可以省略导包语句
2.创建对象:类名 对象名 = new 类名();
3.使用成员变量和成员方法
成员变量:对象名.成员变量名
成员方法:对象名.成员方法名()
即 用谁 就 对象名.谁
注:成员变量若没有赋值,那么他是有默认值的,规则和数组里的一样
成员变量和局部变量的区别:
1.定义位置不一样
成员变量:类里方法外 局部变量:方法里
2.作用范围不一样
成员变量:整个类里都可以使用 局部变量:方法中可用,出了方法就失效
3.默认值不一样
成员变量:有默认值,规则和数组一样 局部变量:无默认值,要想使用必须赋值
4.生命周期不一样
成员变量:随着对象的诞生而产生,对象被回收而消失
局部变量:随着方法的产生而产生,方法执行完局部变量失效
5.内存位置不一样
成员变量:堆 局部变量:栈
结论:
1.当局部变量和成员变量名字相同的时候,优先使用的是局部变量
2.要想使用成员变量,需要使用this关键字。格式:this.成员变量名
private 关键字的使用:
要想阻止一些不合理的数据输入——private关键字
但是一旦使用private修饰的成员变量在能在本类中访问,超出本类范围不能直接访问,
间接访问:定义一对getter和setter方法(成对出现)
并且定义的时候必须叫setXxx/getXxx:
setXxx:无返回值,有参数,且参数类型要和成员变量相对应
getXxx:有返回值,无参数,且参数类型要和成员变量相对应
构造方法:专门用来创建对象的方法,也就是说当new创建对象的时候,就是在调用构造方法。
格式:
public 类名 (参数类型 参数名1, 参数类型 参数名2,。。。){
方法体
}
注意:
1.构造方法的名称和类名一模一样,包括大小写也一样
2.构造方法无返回值类型,void也不写
3.构造方法不能return具体的返回值
4.若没编写构造方法,那么编译器会默认赠送一个构造方法:无参数,无方法体,什么也不做。 public Student(){}
5.构造方法是可以重载的
6.一旦编写了至少一个构造方法,那么编译器将不再赠送默认的构造方法。
为什么使用构造方法?构造方法有什么好处:
1.在创建对象的时候,会调用构造方法,完成对象的实例化,即为对象的属性赋予了初值,确保对象在使用之前就具有正确的状态。
2.避免了手动赋值的繁琐
Java里的标准类,应满足以下4个条件:
1.所有的成员变量都要使用private关键字来修饰(外部类不能访问本类中的成员变量,就不会去随意的改值,起到一个保护成员变量的作用)
2.为每一个成员变量编写一对儿getter和setter方法
3.要编写一个无参的构造方法
4.要编写一个全参的构造方法
这样标准的类叫JavaBean。
static用法三:静态代码块
格式:
public class 类名{
sttic{
若干行代码;
Api--String:程序当中所有双引号括起来的字符串都是String类的对象
1.属于Java.lang 包里,可以省略导包语句
2.特点:
(1) 字符串的内容一旦定义就不可以改变,所以字符串可以共享使用
(2) 效果上相当于char[]字符数组(char是一个字符,但是String好几个字符串起来)
底层原理相当于byte[]字节数组。
3.创建字符串的常见3+1种方式:
三种构造方法:
public String():创建的是一个空白字符串,不含内容
public String(char[] array):根据字符数组内容,创建对应的字符串
public String(byte[] array):根据字节数组内容,创建对应的字符串
一种直接创建:String str = "hello";
注:不管new不new ,只要写上双引号就是字符串对象
String类中与截取相关的方法:
1.public String substring(int index):截取从参数的索引位置到末尾的新字符串
2.public String substring(int begin,int end)::截取从索引为begin到end中间的字符串【)
public String replace(旧字符串,新字符串):将所有出现的旧字符串替换成新字符串,并返回
String类中与获取相关的方法:
1.public int length():获取字符串的长度
int length = "asjhfhkgjldg".length();
System.out.println("长度: "+length);
2.public String concat(String):将当前字符串和参数字符串拼接为新字符串
3.public char charAt(int index):获取指定索引位置的单个字符
4.public int indexoOf(String str):查找参数字符串在本字符串首次出现的索引位置,若找不到,则返回-1
字符串的比较:
1. ==
基本数据类型:比较的是数值
引用数据类型:比较的是地址
2.比较字符串的内容:equals()
public boolean equals(任何对象):参数必须是一个字符串,且内容相同才返回true,否则都是false
public boolean equalsIgnoreCase(String str):忽略大小写比较
字符串常量池:程序当中直接写上双引号的字符串,都在常量池中,而new的String对象不在常量池中
注意:
1.equals方法具有对称性,即a.equals(b) b.equals(a)一样的
2.若比较的双方有一个常量一个是变量,通常把常量字符串写到前面。
Array:数组类,java.lang包,导包语句可省略。
特点:一个基本的存储结构,提供大量创建数组和访问数组的方法
Arrays类:java.util包,需要导包语句;
特点:实现数组常见的操作,含大量静态方法,所以可以直接通过类名来调用
1.public static String toString(数组):将参数数组变成字符串固定格式输出:【元素1,元素2,元 素3】
2.public static void sort(数组): 按升序对数组元素排列
数值:从小到大;字符串:字母升序
Math类:与数学运算相关的操作,提供了大量的静态方法和静态成员变量
1.public static double PI;
2.public static double E;对数的底数e
3.public static double abs(double num):取绝对值(也可以是int,short,long,byte,float)
4.public static double ceil(double num):向上取整(也可以是float)
5.public static double floor(double num):向下取整
6.public static long round(double num):四舍五入
7.public static double max(double a ,double b):求两个数的最大值
7.public static double min(double a ,double b):求两个数的最小值
继承的特点:子类可以拥有父类的内容,此外子类还可以拥有自己独有的内容(成员变量和方法)
*定义继承的格式:(至少需要三个类:父类、于类、主类)
*父类的格式:(普通的类定义)子类的格式:
*publicclass父类名{publicclass子类名extends父类名{
//继承的父类的属性和方法自己独有的属性和方法
*//属性;//自己独有的属性和方法
*//方法
*
*父类对象只能访问父类里的属性和方法,不能访问子类独有的属性和方法
*子类对象既能访问父类里的属性和方法,也能访问子类里独有的属性和方法。
继承中,父类、子类构造方法的访问特点:
*1.子类构造方法中有一个默认的super()方法
*所以创建子类对象时先要调用父类的构造方法,在调用子类的构造方法
*2.子类构造方法可以通过super关键字来调用父类重载的构造方法
*3.super的父类构造方法调用时必须是子类构造方法的第一句,
*不能一个子类构造方法同时调用super语句
方法的重写:发生在继承关系中,方法名称一样,参数列表也一样
*重写:override方法名称一样,参数列表【也一样】,覆盖,覆写
*重载:overload方法名称一样,参数列表【不一样】
*注:
*1.父子类之间的方法名相同,参数列表相同
*2.为了检测是不是有效的重载,可以在重写的方法前写上:@Override
*3.子类重写的方法的返回值类型<=父类方法的返回值类型
*4.子类重写的方法的访问权限>=父类方法的访问权限
*public>protect>default(什么也不写)>private
Super的三种用法:(跟父类相关)
*1.在子类的成员方法中访问父类的成员变量;
*区分局部变量、本类成员变量、父类成员变量重名时的使用;
*局部变量:直接写变量名num
*本类的成员变量:this.变量名
*父类的成员变量:super。变量名
*
*2.在子类的成员方法中访问父类的成员方法;
*3.在子类的构造方法中访问父类的构造方法
*
抽象方法:不确定具体的实现季节的时候,就可以用抽象方法
*在方法前加上abstract关键字,去掉花括号,分号结束
*抽象类:抽象方法所在的类必须是一个抽象类。即在class之前加上abstract
*如何使用抽象类和抽象方法:
*1.不能直接创建(new)抽象类的对象
*2.必须要有一个子类来继承此抽象父类;
*3.子类必须重写抽象父类中的抽象方法。
*重写:去掉abstract关键字,补上方法体的{}写上方法体的内容(具体的实现细节)
*4.创建子类对象来调用
*
*抽象类的特点:
*1.和普通的类相比,抽象类可以有abstract方法,也可以没有
*但是abstract方法所在的类必须是abstract类
*3.如果一个非abstract类是abstract类的子类,它必须具体实现父类的所有的abstract方法
*重写的时候去掉abstract关键字,并给出方法体
*4.如果一个abstract类是abstract类的子类,那么他可以重写父类的abstract方法
*也可以继承父类的abstract方法
*5.对于abstract方法不允许使用final修饰abstract方法
*也不允许使用static和private修饰abstract方法
接口:在java中是一种引用的数据类型,里面最主要的内容介绍抽象方法
格式:
Publiciinterface接口名{
//接口内容
}
注:接口编译生成的文件仍然是.class的后缀文件,源文件也仍然是.java的源文件
接口里的内容;
1.常量(java7及以上的版本支持)
格式:【public】【static】【final】数据类型变量名=数据值;
(1)接口中的变量必须赋初值;(2)接口中的常量使用时尽量全部大写,多个单词用_分割
2.抽象方法(Java7及以上的版本构成)
格式:【public】【abstract】返回值类型方法名(参数)
(1)接口当中的抽象方法修饰符必须是用publicabstract来修饰
(2)方法的三要素可以随意定义,只要符合规范即可
使用:
(1)接口中的抽象方法要想使用,必须有一个实现类来实现(implements)接口,因为接口不能直接创
建对象使用
(2)接口的实现必须要重写(去掉abstract关键字,加上{}和方法体)接口中的所以的抽象方法
格式:publicclass实现类implements接口名{
//重写接口中的所以抽象方法
}
若实现类没有重写接口中的任一抽像方法,那这个实现类必须是抽象类
(3)主类中创建实现类的对象进行使用(实现类最主要的一个作用,就是为了创建对象来使用接口中的各种方法)
3.默认方法(Java8及以上的版本构成)
4.静态方法(Java8及以上的版本构成)
5.private方法(Java9及以上的版本支持)
1.接口中的内容:
(1)常量:【public】【static】【final】数据类型常量名=赋值;
(2)抽象方法:现实类必须重写接口中的所有抽象方法
【public】【abstract】返回值类型方法名(参数)
(3)默认方法:可被现实类“继承”过来也可以被重写
【public】default返回值类型方法名(参数){方法体}
(4)静态方法:能通过接口名来直接调用
【public】static返回值类型方法名(参数){方法体}
(5)私有方法:只能在接口中使用,出了接口不能被访问
1)普通私有方法
private返回值类型方法名(参数){方法体}
2)静态私有方法:
privateststic返回值类型方法名(参数){方法体}
2.接口中的注意事项
(1)接口中不能有构造方法,也不能有静态代码块
(2)一个类的直接父类是唯一的(单继承),但是一个类可以同时去实现多个接口
punlicclassAextendsBimplementInterfaceA,InterfaceB{}
(3)如果实现类所实现的多个接口中,存在重复的抽象方法,那么只需重写一次
(4)如果实现类未重写接口中的任一抽象方法,那么必须把该类定义为一个抽象类
(5)如果实现类实现的多个接口中,存在重复的默认方法,必须重写这个默认方法
方法的重载:方法名称相同,参数列表不一样
参数列表不一样:
1.参数个数不同;
*2.参数类型不同:比如sum(inta,intb)orsum(doublea,doubleb)
*3.参数类型顺序不同:比如sum(inta,floatb)orsum(floata,intb)
注:
*1.方法重载和参数无关,比如sum(inta,intb)orsum(intx,inty)
*2.方法重载与返回值类型无关,比如publicstaticintsum(inta,intb)
*publicstaticdoublesum(inta,intb)
*
*3.方法重载与方法体内容无关
比较有参数和无参数:
*有参数:方法()里面有内容,当一个方法需要一些数据输入才能完成任务的时候,就需要有参数。
*比如计算两个数字相加,需要知道这两个数字具体值是多少。
*无参数:方法()里内容,当一个方法不需要数据输入就能完成任务的时候
*不需要参数。如打印固定十次helloword。
方法有返回值和无返回值的区别:
//*题目要求:定义一个方法,【求出】两数之和:(翻译:定义一个方法,你帮我算两数之和,算完后告诉我结果,有返回值)
//*题目变形:定义一个方法,【打印】两数之和;(翻译:定义一个方法,你帮我算两数之和,算完后你自己打印结果,无返回值)
//
//重点:如果一个方法无返回值,那么方法名前面的“返回值数据类型”就是void
//如果一个方法无返回值,那么它只能使用单独调用,不能使用赋值调用和打印调用
数组:要存放多个数据,但是要求数据类型必须一致
特点:
1.引用型数据类型;
2.数组中存放的数据类型必须一致;
3.数组的长度在运行期间是不可以改变的
格式:
动态初始化:指定数组的长度 数据类型[] 数组名=new 数据类型[36] ;
静态初始化:指定数组的内容 数据类型[] 数组名=new 数据类型[]{87,68,97,90...}
double[] arr = new double[36];//动态初始化
int[] arr2 = new int[]{87,68,97,90};//静态态初始化
注意:
1.静态初始化也是可以推算出数组的长度;
2.静态/动态初始化可以拆分成两个步骤写
3.静态初始化的省略格式不可以拆分成两个步骤写
4.若不确定数组的具体内容,建议使用动态初始化;否则,用静态初始化
要想输出数组中的元素值,用: 数组名[索引值]
索引值一般从0开始,直到数组的长度-1为止
System.out.println(arr[0]);
动态初始化的使用:
动态初始化因为没有指定具体的元素内容,所以是有默认值的;
若数组的数据类型为int:默认值是0;
float: 0.0
字符型: '\u0000'
布尔型: false;
引用型: null
结论:如果两个数组具有相同的引用,也就是具有相同的地址,则一定具有相同的数据元素
a=b;// 把b的引用/地址给了a之后,a和b 就是两个完全一样的数组
两个常见问题:
常见问题1:ArrayIndexOutOfBoundsException 索引越界
解决办法:检查数组的索引,看是否越界
索引值是从0开始,直到数组的长度-1为止
常见问题2:NullPointerException 空指针异常
数组在未初始化时不能使用
解决方法:正常对数组进行初始化
遍历数组:将数组里边的元素挨个儿输出
获取静态数组的长度:数组名.length
用for循环遍历数组:
for(int i =0;i<=a.length-1;i++){
System.out.println(a[i]);
}
二、二维
二维数组初始化的三种方式:
int[ ][ ] a = new int[3][4];
int[ ][ ] b = new int[3][ ];
int[ ][ ] c = {{1,2},{2,3},{3,4,5}};
二维数组的数组名.length: 里面包含的一维数组的个数
int[][] a = new int[3][4];
a[0][0]=2;
a[2][3]=4;
a[1][2]=6;
System.out.println(a.length);//表示的是一维数组的个数
1.方法的定义:是一段封装了一系列语句的代码块,用于执行特定的任务和操作
作用:可以实现代码的复用,提高代码的可读性和可维护性(一次书写,多次使用)
参数:原料。进入方法的数据
返回值:产出物。执行完方法,从方法里出来的数据
把方法看作是一个工厂
蒙牛工厂:
原料:奶牛,饲料,水
产出物:奶制品
钢铁工厂:
原料:铁矿石,煤炭
产出物:钢铁建材
2.方法的格式
修饰符 返回值类型 方法名(参数类型 参数名字1,参数类型 参数名字2...){
方法体;
return 返回值;
}
修饰符:public static (目前固定)
返回值类型:方法最终的产出数据是什么类型的
方法名:小驼峰命名
参数类型:进入方法的数据是什么类型的
参数名:进入方法的数据的变量名字
方法体:方法要完成的功能,一般是一段代码(语句块)
return:1.停止当前方法;2.将返回值给了调用处
返回值:方法执行后最终的数据结果
注意:
1.参数若有多个,中间用 , 分隔
2.return 后面的返回值要和方法名前面的“返回值类型”相对应
方法要想有结果,必须要调用方法。光定义方法不调用,是没有结果的。
调用:
1.单独调用:方法名(参数); (只让方法执行,但不能拿到方法的结果)
sum(100,20);
2.打印调用:System.out.println(方法名(参数)); 将方法的结果打印显示出来
System.out.println(sum(100,20));
3.赋值调用:数据类型 变量名 = 方法名(参数); 将方法的结果赋给变量,再去操作变量
int num = sum(200,20);
System.out.println(num);
注意:1.public static void main(String[] args) {}也表示一个方法,只不过是固定的, 一个程序 的主方法。
2.方法里面不能嵌套方法
比较方法的有参数和无参数:
有参数:方法的()里有内容,当一个方法需要一些数据输入才能完成任务的时候,
就需要有参数。比如:计算两个数字相加,需知道这两个数字具体是多少。
无参数:方法的()里无内容,当一个方法不需要数据输入就能完成任务的时候,
就不需要有参数。比如:打印固定十次hello world(无参数)。
方法有返回值和无返回值的区别:
题目要求:定义一个方法,【求出】两数之和; (翻译:定义一个方法,你帮我算两数之和,算完之后告我结果,有返回值)
题目变形:定义一个方法,【打印】两数之和; (翻译:定义一个方法,你帮我算两数之和,算完之后你自己打印结果,无返回值)
重点:如果一个方法无返回值,那么方法名前面的“返回值数据类型”就是void
如果一个方法无返回值,那么它只能使用单独调用,不能使用赋值调用和打印调用
注意:
1)方法应该定义在类中,但是不能在方法中定义方法,不能嵌套;
2)方法定义的前后顺序无所谓;
3)方法定义后不会执行,要想让方法执行,必须要调用方法;
4)return后面的返回值类型必须和方法的返回值类型一致;
5)void类型的方法没有返回值,只能使用单独调用;
6)一个方法中可以有多个return语句,但每次只能执行一个return语句;
7)两个return语句不能连着写。
方法的重载:方法名称相同,但是参数列表不一样
参数列表不一样:
1.参数个数不同;
2.参数类型不同;比如 sum(int a,int b) or sum(double a,double b)
3.参数类型顺序不同:比如sum(int a,float b) or sum(float a,int b)
注:
1.方法重载和参数名无关,比如sum(int a,int b) or sum(int x,int y)
2.方法重载与返回值类型无关,比如public static int sum(int a,int b)
public static double sum(int a,int b)
3.方法重载与方法体内容无关
public static void open(){}//正确重载
public static void open(int a){}//正确重载
static void open(int a,int b){}//代码错误,和第8行冲突
public static void open(double a,int b){}//正确重载
public static void open(int a,double
相关文章:
java1
在继承中,创建子类对象,访问成员方法的规则: 创建的对象是谁,就优先用谁,没有再向上找 注意:无论是成员变量还是成员方法, 如果没有都是向上找父类,不会向下找子类 继承的特点&#…...
pytest中一个场景测试的demo
注意点1: allure.severity 是一个装饰器,用于设置测试用例的严重性级别。 allure.severity_level.CRITICAL 是Allure提供的严重性级别之一,表示这个测试用例极为重要。allure.severity_level.BLOCKER:阻塞级别的问题,…...
windows下安装IntelliJIDEA
windows下安装IntelliJIDEA 步骤1:下载IntelliJ IDEA 打开浏览器并访问IntelliJ IDEA下载页面. https://www.jetbrains.com/idea/download/选择合适的版本: Ultimate:付费版本,包含更多功能,适合专业开发。Community…...
string经典题目(C++)
文章目录 前言一、最长回文子串1.题目解析2.算法原理3.代码编写 二、字符串相乘1.题目解析2.算法原理3.代码编写 总结 前言 一、最长回文子串 1.题目解析 给你一个字符串 s,找到 s 中最长的回文子串。 示例 1: 输入:s “babad” 输出&am…...
三篇卫星切换的论文
目录 一、Energy-Aware Satellite Handover based on Deep Reinforcement Learning 1、题目翻译 2、来源 3、内容 二、A Reliable Handover Strategy with Second Satellite Selection in LEO Satellite Networks 1、题目翻译 2、来源 3、内容 三、User Grouping-Based…...
VUE之重定向redirect
VUE之路由和重定向redirect 这个小知识点是在学习做项目的时候遇到的一个问题,借鉴了一个他人的项目,是一个酒店管理系统,拿到源码之后导到我的vscode里。 参考链接 导的过程比较顺利,正常安装,加依赖,没有…...
服务器时区与数据库时区不一致导致时间bug记录
1、背景 一个活动,需要按照自然月刷新,每月一期,以活动开始当月作为第一期,每期可配置不同数据。问题出现在:活动开始时间为本月,但是查询用户数据发现当前为第二期,反复查看代码,确…...
华为鸿蒙HarmonyOS应用开发者高级认证题库
判断题 1、云函数打包完成后,需要到AppGallery Connect创建对应函数的触发器才可以在端侧中调用 错 2、在column和Row容器组件中,aligntems用于设置子组件在主轴方向上的对齐格式,justifycontent用于设置子组件在交叉轴方向上的对齐格式 错…...
细说MCU串口函数及使用printf函数实现串口发送数据的方法
目录 1、硬件及工程 2、串口相关的库函数 (1)串口中断服务函数: (2)串口接收回调函数: (3)串口接收中断配置函数: (4)非中断发送ÿ…...
PBox iOS端的应用隐藏、图片视频加密软件
哈喽,大家下午好!相信大家的手机中一定存在很多的私密内容,比如软件、照片、视频或者文档文件,很多都是不方便让外人看到的,此时就需要一款隐藏工具,市面上这类软件大部分都是收费的,应大家的需…...
【QT5】<总览五> QT多线程、TCP/UDP
文章目录 前言 一、QThread多线程 二、QT中的TCP编程 1. TCP简介 2. 服务端程序编写 3. 客户端程序编写 4. 服务端与客户端测试 三、QT中的UDP编程 1. UDP简介 2. UDP单播与广播程序 前言 承接【QT5】<总览四> QT常见绘图、图表及动画。若存在…...
fastadmin/thinkPHPQueue消息队列详细教程
thinkphp-queue 是thinkphp 官方提供的一个消息队列服务,它支持消息队列的一些基本特性: 消息的发布,获取,执行,删除,重发,失败处理,延迟执行,超时控制等队列的多队列, 内存限制 ,启动,停止,守护等消息队列可降级为同步执行1、通过composer安装thinkPHP消息队列 …...
社区新标准发布!龙蜥社区标准化 SIG MeetUp 圆满结束
5 月 31 日,「龙蜥社区“走进系列”」第 9 期之走进阿里云于北京圆满结束。来自阿里云、浪潮信息、红旗软件、中兴通讯|中兴新支点、中科曙光、中科方德、统信软件、麒麟软件、万里红、普华基础软件、飞腾信息、凝思、申威、新华三等公司的 30 余位专家出席会议。会…...
快速开始一个go程序(极简-快速入门)
一、 实验介绍 1.1 实验简介 为了能更高效地使用语言进行编码,Go 语言有自己的哲学和编程习惯。Go 语言的设计者们从编程效率出发设计了这门语言,但又不会丢掉访问底层程序结构的能力。设计者们通过一组最少的关键字、内置的方法和语法,最终…...
HTTPS缺失?如何轻松解决IP地址访问时的“不安全”警告
一、问题现象 如果访问网站时出现以下任何一种情况,则说明该网站需要立即整改: 1.浏览器地址栏那里出现“不安全”字样; 2.小锁标志被红叉()、斜线(\)等标志为不可用;…...
验证码识别接口、多种样式验证码识别接口、中英文验证码识别接口
验证码识别接口、多种样式验证码识别接口、中英文验证码识别接口 本文提供一个基于OCR和机器学习的验证码识别接口,能够识别较复杂的中文、英文验证码,在OCR的基础上针对验证码进行算法优化。本接口是收费的(最低0.5分1次调用,试…...
测试bert_base不同并行方式下的推理性能
测试bert_base不同并行方式下的推理性能 一.测试数据二.测试步骤1.生成bert配置文件2.安装依赖3.deepspeed 4卡tp并行4.FSDP 4卡并行5.手动将权值平均拆到4张卡,单进程多卡推理6.手动切分成4份,基于NCCL实现pipeline并行 本文测试了bert_base模型在不同并行方式下的推理性能 约…...
FFMpeg解复用流程
文章目录 解复用流程图复用器与解复用器小结 解复用流程图 流程图,如上图所示。 复用器与解复用器 复用器,就是视频流,音频流,字幕流,其他成分,按照一定规则组合成视频文件,视频文件可以是mp4…...
438. 找到字符串中所有字母异位词
题目 给定两个字符串 s 和 p,找到 s 中所有 p 的异位词的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 异位词指由相同字母重排列形成的字符串(包括相同的字符串)。 示例 1: 输入: s "cbaebabacd", p &q…...
【Qt 快速入门(三)】- Qt信号和槽
目录 Qt 快速入门(三)- Qt信号和槽Qt信号和槽详解信号和槽的基本概念信号槽连接 信号和槽的声明与定义连接信号和槽信号和槽的高级特性自动参数匹配信号与信号连接lambda 表达式作为槽自定义信号和槽 信号和槽的线程支持跨线程连接 信号和槽的生命周期管…...
Debain12 离线安装docker
官网教程:https://docs.docker.com/engine/install/debian/ 步骤 1. 解压 docker-deb.7z 安装包并上传Linux (资源在PC端文章顶部) 2. 安装 .deb 包 sudo dpkg -i ./containerd.io_<version>_<arch>.deb \./docker-ce_<vers…...
C++day5
思维导图 搭建一个货币的场景,创建一个名为 RMB 的类,该类具有整型私有成员变量 yuan(元)、jiao(角)和 fen(分),并且具有以下功能: (1)重载算术运算符 和 -…...
SHELL脚本学习(六) 呈现数据
一、标准文件描述符 linux系统会将每个对象当作文件来处理,包括输入和输出。linux用文件描述符来描述每个对象。文件描述符是一个非负整数,唯一会标识的是打开的文件。每个进程一次最多能打开9个文件描述符。处于特殊目的,bash shell保留了前…...
计算机网络:网络层 - IPv4数据报 ICMP协议
计算机网络:网络层 - IPv4数据报 & ICMP协议 IPv4数据报[版本 : 首部长度 : 区分服务 : 总长度][标识 : 标志 : 片偏移][生存时间 : 协议 : 首部检验和][可变部分 : 填充字段] ICMP协议 IPv4数据报 一个IPv4数据报,由首部和数据两部分组成ÿ…...
【需求设计】软件概要设计说明怎么写?概要设计说明书实际项目案例(63页Word直接套用)
软件概要设计说明书书写要点可以归纳为以下几个方面,以确保文档的准确性、完整性和可读性: 引言 目的:介绍编写该文档的目的、主要内容及目标读者。 背景:说明被开发软件的名称、项目提出者、开发者等背景信息。 需求概述…...
网络编程2----UDP简单客户端服务器的实现
首先我们要知道传输层提供的协议主要有两种,TCP协议和UDP协议,先来介绍一下它们的区别: 1、TCP是面向连接的,UDP是无连接的。 连接的本质是双方分别保存了对方的关键信息,而面向连接并不意味着数据一定能正常传输到对…...
服务架构的设计原则
墨菲定律与康威定律 在系统设计的时候,可以依据于墨菲定律 任何事情都没有表面上看起来那么简单所有的事情都会比你预计的时间长可能出错的事总会出错担心的某一个事情的发送,那么它就更有可能发生 在系统划分的时候,可以依据康威定律 系…...
Day 14:2938. 区分黑球和白球
Leetcode 2938. 区分黑球和白球 桌子上有 n 个球,每个球的颜色不是黑色,就是白色。 给你一个长度为 n 、下标从 0 开始的二进制字符串 s,其中 1 和 0 分别代表黑色和白色的球。 在每一步中,你可以选择两个相邻的球并交换它们。 返…...
部署YUM仓库及NFS共享服务
YUM概述 YUM 基于RPM包构建的软件更新机制 可以自动解决依赖关系 所有软件包由集中的YUM软件仓库提供 YUM只允许一个程序运行,虽然不影响命令的使用。DNF后,允许多个程序允许 YUM的配置文件在/etc/yum.conf 网络源(所有以repo为结尾都是源&am…...
web学习笔记(六十五)
目录 1. Hash模式和History模式 2. 导航守卫 3. 路由元信息 4.路由懒加载 1. Hash模式和History模式 Hash模式(哈希模式)和History模式(历史模式)是匹配路由的两种模式,一般默认配置Hash模式,可以在in…...
深圳公司建立网站/天津网站建设技术外包
想知道是否有人可以在PHP的preg_match函数中使用以下正则表达式失败的原因:-$str \tmp\phpDC1C.tmp;preg_match(|\\tmp\\([A-Za-z0-9])|, $str, $matches);print_r($matches);?>尽管该模式似乎是有效的,但这仍导致错误消息" preg_match()&…...
阳山做网站/网络营销的基本特征有哪七个
首先说一下本人非计算机专业,只是爱好另外加工作需要.平时偶尔写一些小的程序,最近给单位用C#做某个小程序时候遇到了一些小问题,分享出来. 1.全局变量 在C#中已经不存在全局变量的说法,但是在实际的程序用还是用到对于整个程序来说还是在每个地方都可以用.考虑了三种解决方案 …...
视频网站开发教程/百度入驻商家
一、是什么 css,即层叠样式表(Cascading Style Sheets)的简称,是一种标记语言,由浏览器解释执行用来使页面变得更美观 css3是css的最新标准,是向后兼容的,CSS1/2的特性在CSS3 里都是可以使用的 而CSS3 也增加了很多新特性,为开发带来了更佳的开发体验 二、选择器 …...
医院网站建设原理/宁波技术好的企业网站制作
1、Adobe Creative Suite 3介绍 Adobe Creative Suite 3 在美国东部2007年3月27号下午3点30分发布(应该是北京时间28日凌晨3点半)。这是Adobe和Macromedia完全整合后的第一个Creative Suite软件套装产品,也是首个可以支持Intel处理器Mac平台的…...
西安旅游网站建设/seo排名点击工具
对于Fundebug这样一个没有使用微信JS-SDK的产品来说,我们竟然收到了WeixinJSBridge is not defined 的报错: 去网上一搜,发现很多开发者都遇到类似的问题: 我的微信项目,没有用到微信JS-SDK,但iphone部分手机点击某些功…...
自己做网站不用WordPress/网络推广员的工作内容和步骤
计算机组装与维护实验指导书仙居职业中专计算机组概述《计算机组装与维护》是计算机应用技术专业的一门必修课程。通过学习本课程,能掌握现代计算机组成结构与内部部件的连接,熟练掌握微机--的装机过程与常用软件的安装调试,并能理论联系实践…...