Java面向对象全面总结

面向对象

今天我们就来聊聊什么是面向对象。
不知道大家有没有看过一个小品,就是宋丹丹说把大象装进冰箱要几步。然后宋丹丹再说只要三步。第一步:打开冰箱门。第二步:把大象装进冰箱。第三步:关上冰箱门。她是这么说的,对吧!那我们别管是怎样把大象装进冰箱的,现在我们再想如何把100,甚至1000,或者更多的大象装进冰箱,如果我们自己去装的话,是不是太累了。所以我们是不是需要招一些人手为我们做这些事情。那我们自己只要指挥就行了。不知道大家通过这个例子理解了没有?我们经常说面向过程和面向对象,这两者的区别是什么,通过我们这个例子其实就可以理解,面向过程就是我们自己亲力亲为去装,那么面向对象就是我们招人手(创建对象)去装,所以面向过程和面向对象的区别是思想的转变,从执行者变成指挥者。

类和对象

面向对象的两个重要的点就是说类和对象。那这俩是什么?干嘛用的?类和对象是有一定的联系,对象对象一定是在有类的情况下创建的。就好比我们想做一辆车?那怎么做出来,我们先是不是需要进行设计,画一个图出来。把车的一些具体形状和一些功能是不是得先设计出来,然后才能根据这个设计出来得图纸才能开始去做,对吧。而类和对象的联系也是这样,类就好比是一张设计的图纸,它只是个概念而已,并不存在,它是很多实物下共有的综合特征。那么对象呢?它就好比是由那张设计的图纸(类)真正做出来的车(对象),所有对象,它是实物,是一个具体存在的东西,它有它自己的个体特征。了解了吗?很形象对吧。那现在跟我创建一个类吧

创建类

权限修饰符 class 类名{
成员属性 ; 方法;
}

创建对象

类名 对象名 = new 类名 ();
对象名.属性 = “内容”;
对象名。方法名();

Java文件里可以存在多个类,但是只能有一个主类。这里涉及到关于类的访问。
主类格式: public 类名{ }

类和对象的创建示范

在这里插入代码片
public class Demo1 {
public static void main(String[] args) {
Car car = new Car();car.brand = "奥迪";car.color = "白色";car.show();}}class Car{String brand;String color;void show() {System.out.println("汽车品牌:"+brand+",汽车颜色:"+color);}}

栈和堆

栈是存放地址的,是后进先出。因为每次new 类名()都会分享内存,这时就会产生一个存放地址。当它赋值给对象名,那就相当于对象名是存放地址的。这样为了方便,如果不要对象名,就会被垃圾回收机制进行释放。如果只执行一次的操作,可以不用对象名,就可以直接用匿名对象 。 如 : new 类名().方法名();同样可以执行相关方法操作。

构造方法

构造方法是为对象一些值进行初始化。这样就可以省一些相关操作。构造方法默认情况下,也就是在你没创建构造方法时,它会自动创建无参无任何语句的一个构造方法。
构造方法创建格式:
类名(形式参数列表){
语句块;
}
方法名和类名相同,就是构造方法。

构造方法的创建示范

在这里插入代码片
class Employee{String name;          //员工姓名String tel;           //员工号码double salary;        //员工基本薪资double rate;          //员工薪水增长率//构造类型Employee() {}Employee(String name) {this.name = name;}Employee(String name, String tel) {this.name = name;this.tel = tel;}Employee(String name, String tel,double salary) {this.name = name;this.tel = tel;this.salary = salary;}Employee(String name, String tel,double salary,double rate) {this.name = name;this.tel = tel;this.salary = salary;this.rate = rate;}

重载

什么是重载呢?就是说有时候写代码为了见名知意,我们想完成某个功能,比如说是求和,那么我们既想实现两数之和,又想实现三个数之和。那我们就可能需要两个方法,对吧。但是为了见名之意,我们可以把方法名进行重载,就是方法名可以一样,表示它们都是求和的意思。怎么样,理解透了吧,还有一定我们需要注意,我们得根据数据类型、参数的数量已经类型顺序的不同来进行方法重载。

封装

封装是面向对象的三大特性的一种,另外两种是多态和继承。那封装干啥的呢?它其实是为了避免逻辑错误,为什么这么说呢?通常我们创建了一个类,然后另一个人会用到我们的类,他们往我们类里的属性赋值,然而他可能会随便赋一些乱七八糟的值,就很有可能会犯逻辑错误,那我们就可以不给他访问我们属性的机会,我们把这个属性封装起来就行了。这里用到另一个修饰符private。表示私有的意思,表示这个属性不能在其他类里访问,只能在自身类里进行访问。到了这,我们是不是还有这样的疑问?封装固然可以避免错误,但是那不就没人可以给我们属性赋值了吗,那我们要这个属性的意义何在?不要急,我们可以创建setter来进行赋值,同时也可以创建getter方法来进行获取值。如果要避免错误,我们可以在方法里写一些赋值的一些约束代码。在进行方法赋值时,为了见名知意,我们尽量得让setter()方法里的形式参数列表的参数名尽量和成员属性名一样。但这样出现了相同的名称,如何判断谁给谁赋值呢?为了区分,我们这里需要用到this指针,这个this代表当前对象,所以成员属性名可以用this.成员属性名代替。

setter、getter以及this的代码示范

在这里插入代码片
class Employee{String name;          //员工姓名String tel;           //员工号码double salary;        //员工基本薪资double rate;          //员工薪水增长率//构造类型Employee() {}//setter、gettervoid setName(String name) {this.name = name;}String getName() {return name;}void setTel(String tel) {this.tel = tel;}String getTel() {return tel;}void setSalary(double salary) {this.salary = salary;}double getSalary() {return salary;}void setRate(double rate) {this.rate = rate;}double getRate() {return rate;}double getTotal() {return salary+salary*rate;}
}

静态

我们现在来看静态,怎么用到静态呢?假如你要描述团队成员,需要创建一个类,类里有姓名、年龄、班级、学科等属性。但是我们得知这个团队所有成员的班级、学科都一样,难道我们要一遍一遍的给同样的属性赋重复的值吗?难道就没有一次性可以解决的操作吗?有的,它就是静态,用静态定义这些相同值的属性,
格式: 类名.成员属性 = 内容;
其实静态你可以把它理解为类自己可以描述的特征,而这个特征为这个类下的所有对象所共有。简单理解就是静态属性赋的值,那么这个类下的所有对象静态属性值都是那个赋的值。同时静态不仅可以用在属性,也可以用在方法里。调用方法也一样,不要要用对象名。
格式是 类名.方法名();
那么这个方法执行的操作就相当于为这个类下的所有对象执行了一遍这个方法。

静态变量、静态方法的代码示范

在这里插入代码片
class Student{private String name;    //姓名private int age;        //年龄private char sex;       //性别private String hobby;   //兴趣static String company;  //公司static String subject;  //学科public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public char getSex() {return sex;}public void setSex(char sex) {this.sex = sex;}public String getHobby() {return hobby;}public void setHobby(String hobby) {this.hobby = hobby;}void introduce() {System.out.println("姓名:"+name+",年龄:"+age+",性别:"+sex+",兴趣:"+hobby+",公司:"+company+",学科:"+subject);}}public class StudentTest {public static void main(String[] args) {Student.company = "阿里巴巴";Student.subject = "Java";Student stu1 = new Student();stu1.setName("张三");stu1.setAge(20);stu1.setSex('男');stu1.setHobby("篮球");stu1.introduce();}
}

什么是包,可能我们现在感受不到包的重要性。但是当我们有一天做大项目时。每天面对成千上万代码时,这些代码当然不可能只存在一个类文件中,可能需要放在数百个类里。那我们把这些类进行一个划分存放。而包是用来存放划分的。可以把包理解为文件夹。方便整理。通常我们也会插入包,因为包里的类我们需要用到,比如Scanner类用来输入,String类用来表示字符串,不过字符串是系统默认插入了,在插入的时候,我们需要考虑这个类的权限修饰符。总共有4个。
自身类 自身包 子类 其他包
public √ √ √ √
protected √ √ √
default √ √
private √
√表示能访问。 一般只会用private进行封装数据,还有就是经常用public是为了方便访问。而其他修饰符很少用。所以在插入包的时候,能用的类只有public 这个修饰符的类。

代码块

代码块有普通代码块
格式为: { }
构造代码块
格式为: 类名(){ }
静态代码块
格式为:static { }
静态代码块只执行一次,也是最开始执行,因为它在类加载的时候就已经执行了。然后是普通代码块执行,执行次数根据对象的创建次数,可以看出它是在创建对象时执行。最后才是构造代码块的执行。当然我们经常都以为构造方法最先执行,那可能是我们没怎么用到静态代码块和普通代码块。虽然用得少,但还是要记住,说不定某天就用到了。

代码块的代码示范

在这里插入代码片
class Clothes{//普通代码块{number++;              //每次创建对象时就开始递增1             }//静态代码块static {System.out.println("执行中...");}//构造代码块Clothes() {super();}private static int number;     //序号private String brand;          //品牌private String type;           //类型private int price;             //价格 public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}public String getType() {return type;}public void setType(String type) {this.type = type;}public int getPrice() {return price;}public void setPrice(int price) {this.price = price;}void show() {System.out.println("衣服序号:"+number+",衣服品牌:"+brand+",衣服类型:"+type+",衣服价格:"+price);}
}public class Demo {
public static void main(String[] args) {Clothes clo1 = new Clothes();clo1.setBrand("HLA");clo1.setType("夹克");clo1.setPrice(200);clo1.show();}}

继承、多态

我们在上面是不是也提到了继承,它是面向对象的三大特性之一,属于类与类之间的关系。那什么是继承呢?其实就像儿子继承父亲的家产一样,就好比说儿子可以用爸爸的钱,那我们的类其实是一样的,继承的关系就是子类与父类的关系,子类可以用父类的方法。
继承格式:
class 子类名 extends 父类名 {
}
当然儿子也可以有骨气点,不啃老,自己有能力赚更多的钱,那子类也是一样的,它也可以有骨气点,自己可以重写父类那儿继承的方法,对,这就引入了重写概念,它和重载可别弄混淆。重写是指继承的子类改写父类的方法,而重载就是在自己类重新再加一个相同方法名的方法而已。重载和重写都属于多态,而这又是面向对象的三大特性之一。多态最主要还是对象的多种表现形态。

super、this

this都知道吧,它是表示当前对象,在前面我已经介绍过。那我们直接来看super(),这个是什么呢?为什么每次它都在我创建的构造方法里,其实它是父类构造方法,之所以你每次都看见它,是因为你这个类有继承。很多人看到这儿懵了,因为我们都在知道明明没继承类啊,我都没写继承,其实所有类都有继承,而这个继承的类是所有类的根,它只是隐藏罢了。

接口和抽象类

现在我们来学习一下抽象类和接口。那么抽象类是啥呢?可以简单理解为很抽象的一张图纸,这张图纸它可能只是稍微的设计了一下,但是并不全面,因为抽象类不提供具体功能的方法。它或许只提供部分。那你觉得这样的图纸可以做出我们想要的东西吗?答案当然是不可以,所以抽象类是没办法创建对象。现在我来写一下抽象类的创建方式:
abstract class 类名{
public void 方法名();
public void 方法名(){
} }
看见没有,方法下是没有语句块描述的。它不提供任何指令。
那么接口呢?接口其实比抽象类更抽象,因为它完全不提供实现或操作的语句指令。但是接口有一大优势。重点来了!请记好笔记。
类只能单继承一个类,就是只能继承一个类。很多人可能会想到Object类难道不是在默认继承吗?对,没错,可是你要清楚,被你继承的父类,或者父类的父类已经帮你继承好Object了。因为我们说过,Object是所有类的根,对吧。那么你现在和Object类就是多重继承关系,简单理解就是Object或许是爷爷,或者是隔着几代的祖宗。
那我们现在来看接口,它比继承就有优势了。因为类可以实现多个接口,但是类或者抽象类只能继承,而继承只能继承一个,所有这就是接口的优势。
接口的创建格式:
interface 接口名称{ 全局常量; 抽象方法;}
实现格式:
class 类名 implement 接口 {
}
怎么样,抽象类和接口清楚了吧。

equals()和toString()

我们平常判断两个值是否相等,一般都用"",对吧。但我们要清楚 “”只适用于基本数据类型的数值判断,它并不适用于判断字符串以及其他引用类型。为什么呢?因为它是判断栈内的地址值是否相同,它并不判断内容是否一致。而我们的基本数据类型的值都是存放在栈内的。但是当我们要判断引用类型,我们就得注意,它们的内容是存放在堆里的,而它们产生的地址是存放在栈内的,所以就算它们内容一致,它们产生的地址值是不一样的。
那怎么办呢?有什么方法判断内容吗?有,我们就重写一个equals方法就好,而这个方法是从Object那继承过来的。那我们怎么进行一个重写呢?我现在给大家讲一下这个思路
首先我们可以先判断这两个对象地址是否相同,如果地址相同了,那肯定就是同一个,因为不可能产生两个相同的地址。然后我们再判断这两个是否有一个为null(空),有为空的,肯定也不用比了。之后我们再判断类型是否相同,判断格式如下:
if(对象 instanceof 类){
}
看到这个instanceof了吗?它就是用来判断两个引用类型的对象是否是一个类。如果不是一个类,那也不用比了,如果是一个类,那我们就可以进行判断了,判断成员属性是否相同,如果是基本数据类型就可以用"
"来进行判断,如果是字符串类型我们用object的equals()方法进行判断,因为object提供的equals()方法至少是可以判断字符串内容是否相同的。如果判断符合,那我们就可以断定这两个引用类型的对象是相等了。否则就是不相等。
equals()格式如下:
变量名.equals(变量名)
对象名.属性名.equals(对象名.属性名)
对象名.getter().equals(对象名.getter())
最后我们来说一下toString()方法,我们每次输出字符串的时候,字符串变量有个方法是被隐藏了,它就是toString()方法,通常,toString()方法返回一个文本表示对象的字符串,结果应该是简洁但信息丰富的表示,便于人们阅读,建议所有子类重写此方法。
如果你直接用对象的toString()方法返回一个字符串,那返回的就是这个类的路径名@加上一些十六进制的乱码。所以我们有必要在重写一个toString()方法,用来返回我们想要的结果。
格式为:
对象名.toSting();
怎么样,学会了吗?

equals()方法的一种常用方式:判断是否登录成功
在这里插入代码片public void login() {if(username.equals("admin")&&password.equals("123")) {System.out.println("登录成功...");return;}System.out.println("用户号或密码输入错误...");}

内部类

很多面试官问这个问题的时候,很多不知道内部类的人通常会听为累不累,哎,于是就被无情的pass掉了。所以我们还是有必要好好弄懂一下内部类,内部类,我们从它的字面意思也可以大概猜到它是类里面的类。可以这么说,没错。它总共分为四个:

成员内部类

定义格式如下:
class A{
class B{ }
}
调用格式:
A.B b = new A.new B();

局部内部类

定义格式如下:
class A{
public void a(){
class B{ }
调用格式:
B b = new B();
b.方法名();
}
}

在其他类的调用格式
A aa = new A();
aa.a();

匿名内部类

定义格式如下:
new 构造方法(){
类体
}

静态内部类

定义格式如下:
class A{
static class B{
}
}

调用格式:
A.B a = new A().B();

包装类

现在来看包装类,它的意思就是把不是对象的8种基本数据类型包装成对象。因为Java语言是一种面向对象的语言,而8种基本类型却不是对象,于是为了实现一切皆对象的基准,就有了包装。那我们现在来看看分别包装成什么对象。
int ----------Integer
char---------Chacter
float---------Float
double------Double
boolean----Boolean
byte---------Byte
short--------Short
long---------Long

怎么样,有发现规律吧,除了int和char,其他数据类型是不是就把首字母大写了一下,就没什么变化了。
其实我们不仅可以把基本类型包装成类,也就是把基本类型转换成对象,这个步骤叫做装箱。我们也可以把对象转换成基本数据类型,这一步叫拆箱,很好理解吧。现在我们简单了解一下装箱和拆箱

装箱和拆箱

装箱和拆箱都可以分为手动和自动,我现在分别把它们的操作写下来,以int类型为例:

手动装箱:
Integer i = new Integer(整型值);
自动装箱:
Integer j = 整型值;
手动拆箱:
int a = i.intValue();
自动拆箱:
int b = j;

好了,根据我前面说的话去理解,多敲下这些代码,你就会理解。

可变参数

现在我们来看可变参数,什么是可变参数?它是干嘛用的?比如说我们想实现n个数的和,要获取它的值,那如何去实现呢?我们肯定会认为这怎么可以?n都不知道,我们怎么获取。怎么创建方法。可是用户的需求就是要我们实现这样的功能,他想求几个数就求几个数,为了解决这个问题,我们就可以用到可变参数。因为我们不知道n是多少,不知道用户想要求几个数?那我们就创建一个可变参数,这样就可以实现用户得需求了。
方法名如下:
public 返回值类型 方法名(数据类型…变量名){
}
这个可变参数就是括号内得 数据类型…变量名。其实可变参数可以是一个一维数组,因为只有数值才能存储多个参数得值呀,对吧。同时,到这里我们需要注意一点,如果还有其他类型得值也要调用过来,那这个值一定是要放在可变参数的前面,因为我们不知道可变参数是多少?这样我们就可能出现异常,程序就会崩溃。

异常

异常就是我们经常说出现的bug,所以很多人被这个折磨的要死。那我们现在就好好学习一下什么是异常,我相信当我们对他有一个清晰的理解后,我们就能轻易的避开它。通常我们做完了一个项目,运行了一下,感觉效果良好,可是不知道为什么别人去运行就出现了很多bug呢?这是因为我们自己知道写的代码是什么,我们知道程序是如何操作的,也知道如何配合这个程序输入什么,可是我们得站在用户得身上去想,用户是不会像我们一样了解这个程序,他可能想输什么就输什么,想怎么操作就怎么操作,当用户碰到了我们一些没有考虑的点后,就很有可能出现bug。出现bug后程序也就崩溃了,不会执行了。
那如果程序崩溃了我们想继续往下执行,怎么办?我们就可以抛出异常,
具体格式如下:
public 返回值类型 方法名() throws 异常类名{
}
在这里我说一下bug它分为 Error(错误),通常表示Jvm出现的错误操作,只能尽量避免,无法用代码处理。那异常呢指的是Exception , Exception类,在Java中存在一个父类Throwable(可能的抛出)。这个父类下也包括Error类。
那么出现异常我们是可以避免的,我们可以抛出异常,也可以捕获异常。
怎么捕获呢?用 try{ }catch(异常类名 对象){ }
其实这个语句和if语句很相似,没有异常就执行try{}里的语句块,有异常就执行catch{}里的语句块。很多人捕获常似乎就提示一下用户出现了异常,然后哈哈一笑就没了。那程序还是停止了呀。所有我们有必要进行补救,异常出现时我们应提示用户该怎么操作,然后再继续执行程序,这样用户才会满意,对吧。

其实补救挺简单,只要我们发现了是由于什么原因出现的异常,我们只要提示用户该怎么去执行操作,然后再让程序继续执行,我们调用一下这个方法即可。

最后我们来看finally{},这个其实是写在try{}catch{}后面的,你可以用,也可以不用。它的功能是不管执行的是try{}里的代码块,还是catch{}里的代码块,它的代码块都必然要执行,那怕在前面已经执行过return;语句,这个一般代表方法的结束语句。就是说尽管结束方法,但是我们的finally{}的代码依然会执行,除非在前面执行了退出程序语句,只有结束程序,finally{}里的语句块才执行不了。这个一般是面试官会问到的问题哦,大家做好笔记。

结语

学习Java的路上并不枯燥,它会让我们越来越有成就感。请看到这里的你关注我,我将会保持每周一更的,让你让他让我们对Java不再困惑。

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

相关文章

  1. 414-简单-第三大的数

    思路:先找到最小的元素,给数组赋值,然后依次找到前三大的元素 int thirdMax(int* nums, int numsSize){int temp[3] = {0};temp[0] = nums[0];for (int i=1;i<numsSize;i++){if(nums[i]<temp[0]) temp[0] = nums[i];}temp[1] = temp[0];temp[2] = temp[0];for (int i=…...

    2024/4/30 0:49:34
  2. SpringMVC常见注解的使用

    文章目录1. RequestParam:2. RequestBody:3. PathVariable:4. ModelAttribute: 1. RequestParam:解决请求参数绑定时 请求参数名 不一致的情况。<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><t…...

    2024/4/30 0:49:29
  3. Vue.js入门篇(一)——常用指令介绍

    1.什么是Vue? 1.1 渐进式框架 看了官方文档,你一定知道vue是一个“渐进式框架”。框架的意思肯定明白,那么什么是"渐进式“呢?渐进式:一开始不需要你完全掌握它的全部功能特性,可以后续逐步增加功能。 感谢 @SSXfont 的举例场景1: 如果你的技术团队技术选型比较保守…...

    2024/4/30 0:49:25
  4. js进阶知识—函数

    2020-8-10~8-16 函数部分遗漏的知识将在今后学习之中慢慢总结。函数: 1-1声明式(Function Declaration): function fn() {console.log(我是函数声明式);}// fn();两种调用方法fn.call();1-2表达式(Function Expression): var fn = function(aru) {console.log(aru);};…...

    2024/4/30 0:49:21
  5. 树莓派4和LabVIEW2020的连接介绍(1)——树莓派4的配置流程

    写下这篇文章的目的是对这次解决问题的过程和方法进行记录,供自己和其他有同样困难的朋友早日解决所遇到的问题。楼主在查资料时候没有碰到正面或者直接解决这个问题的资料,所以解决后写在这里,希望以后的朋友不会再遇到楼主当时的窘境。欢迎友好的交流和讨论。 一.树莓派4的…...

    2024/4/30 0:49:19
  6. Python opencv图像处理基础总结(一)

    学过的知识,会过时、会遗忘,但在努力过程中学会的处事态度和做事习惯,都会留在骨子里,变成我们的一部分。Open Source Computer Vision Library,OpenCV于1999年由Intel建立,如今由Willow Garage提供支持。OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运…...

    2024/4/30 0:49:18
  7. 吴恩达课后编程作业Course 4 - 卷积神经网络 - 第二周作业

    本文参考的博客为https://blog.csdn.net/u013733326/article/details/80250818原博客中作者用的是tf1.x版本的,本文用的是tf2.x版本1 - Keras 入门 - 笑脸识别本次我们将:学习到一个高级的神经网络的框架,能够运行在包括TensorFlow和CNTK的几个较低级别的框架之上的框架。看…...

    2024/4/30 0:49:09
  8. 数据分析——归一化「随笔」

    归一化Min-Max Normalization x’ = (x - X_min) / (X_max - X_min)平均归一化 x’ = (x - μ) / (MaxValue - MinValue)(1)和(2)有一个缺陷就是当有新数据加入时,可能导致 max 和 min 的变化,需要重新定义。 非线性归一化对数函数转换:y = log10(x) 反余切函数转换:y …...

    2024/5/6 11:14:02
  9. windows下解决matplotib中文乱码问题

    matplotlib默认是不支出中文的,在window系统下如何设置使其可以显示中文? 参考文章...

    2024/4/30 0:49:02
  10. 调用链选型之Zipkin,Pinpoint,SkyWalking,CAT

    https://www.jianshu.com/p/0fbbf99a236e建议选择SkyWalking...

    2024/4/30 0:48:57
  11. 趣说 TCP/IP 分层模型 以及通信过程

    先简单介绍一下TCP/IP与OSI参考模型...

    2024/4/30 0:48:55
  12. Linux下配置npm存放路径,解决权限问题

    Linux下配置npm存放路径,解决权限问题参考文章: (1)Linux下配置npm存放路径,解决权限问题 (2)https://www.cnblogs.com/webgis-mc/p/10449736.html 备忘一下。...

    2024/4/30 0:48:49
  13. SELinux 的3种工作模式Disabled、Permissive、Enforcing

    文章目录SELinux是什么SELinux的作用安装SELinuxSELinux 3种工作模式Disable[关闭]工作模式Permissive[宽容]工作模式Enforcing[强制]模式SELinux 3种工作模式切换setenforce 切换模式SELinux 的运行模式的开启和关闭 SELinux是什么 SELinux,Security Enhanced Linux 的缩写,…...

    2024/4/30 0:48:46
  14. Java:面向对象的语言

    Java面向对象 面向对象 今天我们就来聊聊什么是面向对象。 不知道大家有没有看过一个小品,就是宋丹丹说把大象装进冰箱要几步。然后宋丹丹再说只要三步。第一步:打开冰箱门。第二步:把大象装进冰箱。第三步:关上冰箱门。她是这么说的,对吧!那我们别管是怎样把大象装进冰箱…...

    2024/4/29 1:10:05
  15. HDU - 5102

    题目链接:HDU - 5102本来想直接点分治的。但是因为K很小,所以我们可以直接拓展。先用一条边,然后由一条边拓展到两条。 因为我们是单向拓展的,所以有些会拓展不到,所以我们对一条边弄两个方向,最后除以2即可。 点分治的话,就统计每个长度的次数,然后从小往大扫即可。AC…...

    2024/5/3 21:39:16
  16. LRU Cache + 并查集

    什么是LRU Cache LRU是Least Recently Used的缩写,意思是最近最少使用,它是一种Cache替换算法。 什么是 Cache? 狭义的Cache指的是位于CPU和主存间的快速RAM, 广义上的Cache指的是位于速度相差较大的两种 硬件之间, 用于协调两者数据传输速度差异的结构。 除了CPU与主存之…...

    2024/5/7 13:47:36
  17. 用CSS3制作精美的立体盒子装饰(附带制作过程和完整示例)

    title: CSS3-肥宅快乐盒 date: 2020-08-15 22:57:30 tags: css index_img: https://cdn.jsdelivr.net/gh/LitStronger/pic@master/post/cssBox.jpg先来看看这个肥宅盒子的效果 gif效果不好,实际效果可以看看这个示例怎么样,是不是很有意思呢?制作起来其实也不是很难的, 一步…...

    2024/4/30 0:48:34
  18. Backbone与服务器接口之Model数据同步

    ...

    2024/4/30 0:48:32
  19. 第 202 场力扣周赛题解

    好久没进前50了,菜啊。5185. 存在连续三个奇数的数组思路:直接遍历计数就OK了。class Solution {public boolean threeConsecutiveOdds(int[] arr) {int num=0;for(int i=0;i<arr.length;i++){if(arr[i]%2==0)num=0;elsenum++;if(num>=3)return true;}return false;} }…...

    2024/4/30 0:48:26
  20. Git版本管理(6):使用git命令将本地项目提交至远程仓库

    接上一节内容,对比分析,基本操作大同小异。这里记录一下,将本地项目上传到远程GitLab仓库中,我们将了解使用git命令将本地项目提交至远程Git仓库的基本流程。1.(先进入项目文件夹)通过命令 git init 把这个目录变成git可以管理的仓库。git init2.把文件添加到版本库中,使…...

    2024/4/29 3:07:17

最新文章

  1. Python文件读取和写入

    文件读取和写入是 Python 中常见的操作之一&#xff0c;通过这些操作&#xff0c;我们可以读取外部文件中的数据&#xff0c;对其进行处理&#xff0c;并将处理结果写入到文件中。本文将详细介绍 Python 中的文件读取和写入操作&#xff0c;包括如何打开文件、读取文件内容、写…...

    2024/5/8 1:59:51
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. 自动化标准Makefile与lds

    makefile的自动化&#xff0c;需要使用变量&#xff0c;以及自动变量。 实行命令行与参数的分离。 命令行只与变量打交道&#xff0c;而变量则携带不同的参数&#xff0c;这样&#xff0c;通过修改变量&#xff0c;命令的执行结果不同。 可以简单理解为&#xff0c;命令行是个…...

    2024/5/5 0:49:43
  4. 大数据学习十三天(hadhoop基础2)

    一: MapReduce概述(了解) MapReduce是hadoop三大组件之一,是分布式计算组件 Map阶段 : 将数据拆分到不同的服务器后执行Maptask任务,得到一个中间结果 Reduce阶段 : 将Maptask执行的结果进行汇总,按照Reducetask的计算 规则获得一个唯一的结果 我们在MapReduce计算框架的使用过…...

    2024/5/2 21:17:01
  5. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/5/7 19:05:20
  6. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/5/7 22:31:36
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/5/8 1:37:40
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/5/7 14:19:30
  9. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/5/8 1:37:39
  10. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/5/7 16:57:02
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/5/7 14:58:59
  12. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/5/7 1:54:46
  13. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/5/7 21:15:55
  14. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/5/8 1:37:35
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/5/7 16:05:05
  16. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/7 16:04:58
  17. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/5/8 1:37:32
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/5/7 16:05:05
  19. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/5/8 1:37:31
  20. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/5/8 1:37:31
  21. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/5/7 11:08:22
  22. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/5/7 7:26:29
  23. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/5/8 1:37:29
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/5/7 17:09:45
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57