Java:类和对象
类和对象
- 类(Class)
- 类的定义
- 对象(Object)
- 对象的创建
- 构造方法(Constructor)
- 构造方法的定义
- 继承(Inheritance)
- 继承的示例
- 总结
- 示例一
- 设想一个场景:创建一个虚拟动物园
- 一、定义类(Class)
- 定义 `Animal` 类
- 二、创建对象(Object)
- 创建动物对象
- 三、继承(Inheritance)
- 定义 `Bird` 类
- 创建鸟类对象
- 总结
- 示例二
- 设想一个情景:创建一个魔法学校
- 一、定义类(Class)
- 定义 `MagicCreature` 类
- 分析
- 二、创建对象(Object)
- 创建魔法生物对象
- 分析
- 三、继承(Inheritance)
- 定义 `FlyingCreature` 类
- 分析
- 创建会飞的魔法生物对象
- 分析
- 四、使用接口(Interface)
- 定义 `DivingCreature` 接口
- 分析
- 创建潜水的魔法生物对象
- 分析
- 总结
在Java编程中,类(Class) 和 对象(Object) 是面向对象编程的两个核心概念。以下是对它们的详细讲解:
类(Class)
类是创建对象的模板或蓝图。它定义了对象的属性和行为。类本质上是用户定义的数据类型。类由成员变量(属性)和成员方法(行为)组成。
类的定义
在Java中,类使用class
关键字定义。一个简单的类定义如下:
public class Car {// 成员变量(属性)String color;String model;int year;// 成员方法(行为)void start() {System.out.println("The car is starting");}void stop() {System.out.println("The car is stopping");}
}
在这个例子中,Car
类有三个成员变量:color
、model
和 year
,还有两个成员方法:start()
和 stop()
。
对象(Object)
对象是类的实例。类定义了对象的属性和行为,而对象则是类的具体实现。创建对象时,系统会在内存中分配空间给对象,并且通过构造函数对对象的属性进行初始化。
对象的创建
使用new
关键字来创建类的对象。以下是创建并使用对象的示例:
public class Main {public static void main(String[] args) {// 创建一个Car类的对象Car myCar = new Car();// 访问和设置对象的属性myCar.color = "Red";myCar.model = "Toyota";myCar.year = 2020;// 调用对象的方法myCar.start();myCar.stop();}
}
在这个例子中,myCar
是 Car
类的一个对象。我们设置了它的属性并调用了它的方法。
构造方法(Constructor)
构造方法是用于初始化对象的特殊方法。构造方法的名称必须与类名相同,并且没有返回类型(即使是void
也没有)。每当使用new
关键字创建对象时,都会调用构造方法。
构造方法的定义
public class Car {// 成员变量(属性)String color;String model;int year;// 构造方法public Car(String color, String model, int year) {this.color = color;this.model = model;this.year = year;}// 成员方法(行为)void start() {System.out.println("The car is starting");}void stop() {System.out.println("The car is stopping");}
}
使用构造方法创建对象:
public class Main {public static void main(String[] args) {// 使用带参数的构造方法创建对象Car myCar = new Car("Red", "Toyota", 2020);// 调用对象的方法myCar.start();myCar.stop();}
}
继承(Inheritance)
继承是面向对象编程的重要特性,它允许一个类继承另一个类的属性和方法,从而实现代码复用。使用extends
关键字来实现继承。
继承的示例
// 父类
public class Vehicle {String brand;void honk() {System.out.println("Beep beep!");}
}// 子类
public class Car extends Vehicle {String model;int year;void displayInfo() {System.out.println("Brand: " + brand);System.out.println("Model: " + model);System.out.println("Year: " + year);}
}public class Main {public static void main(String[] args) {Car myCar = new Car();myCar.brand = "Toyota";myCar.model = "Corolla";myCar.year = 2020;myCar.honk(); // 调用继承自Vehicle类的方法myCar.displayInfo(); // 调用Car类的方法}
}
在这个例子中,Car
类继承自 Vehicle
类,所以 Car
类对象可以调用 Vehicle
类的方法。
总结
- 类:定义了对象的属性和行为,是创建对象的模板。
- 对象:类的实例,是类的具体实现。
- 构造方法:用于初始化对象的特殊方法。
- 继承:允许一个类继承另一个类的属性和方法,实现代码复用。
示例一
设想一个场景:创建一个虚拟动物园
我们要创建一个虚拟动物园,这个动物园里有各种各样的动物。每种动物都有不同的属性(比如名字、年龄、种类)和行为(比如吃东西、睡觉、发出声音)。我们将用Java的类和对象来实现这个虚拟动物园。
一、定义类(Class)
首先,我们需要一个类来描述动物的通用属性和行为。这个类可以叫做 Animal
。类是一个蓝图或模板,用来描述一组具有相同属性和行为的对象。
定义 Animal
类
public class Animal {// 成员变量(属性)String name;int age;String species;// 构造方法public Animal(String name, int age, String species) {this.name = name;this.age = age;this.species = species;}// 成员方法(行为)void eat() {System.out.println(name + " is eating.");}void sleep() {System.out.println(name + " is sleeping.");}void makeSound() {System.out.println(name + " is making a sound.");}
}
在这个类中,name
、age
和 species
是成员变量(属性),它们描述了动物的基本信息。eat
、sleep
和 makeSound
是成员方法(行为),它们描述了动物可以执行的动作。
二、创建对象(Object)
类只是一个模板,我们需要使用这个模板来创建具体的动物对象。对象是类的实例,每个对象都有自己的属性值和行为。
创建动物对象
public class Zoo {public static void main(String[] args) {// 创建动物对象Animal lion = new Animal("Leo", 5, "Lion");Animal elephant = new Animal("Dumbo", 10, "Elephant");// 调用对象的方法lion.eat();lion.sleep();lion.makeSound();elephant.eat();elephant.sleep();elephant.makeSound();}
}
在这个例子中,我们创建了两个 Animal
对象:一只狮子和一只大象。我们使用构造方法 new Animal("Leo", 5, "Lion")
来初始化对象的属性。然后,我们调用这些对象的方法,模拟它们的行为。
三、继承(Inheritance)
假设我们的动物园有更多种类的动物,我们可以创建子类来描述具体的动物种类。比如,我们可以创建一个 Bird
类来描述鸟类的特有属性和行为。
定义 Bird
类
// 父类
public class Animal {String name;int age;String species;public Animal(String name, int age, String species) {this.name = name;this.age = age;this.species = species;}void eat() {System.out.println(name + " is eating.");}void sleep() {System.out.println(name + " is sleeping.");}void makeSound() {System.out.println(name + " is making a sound.");}
}// 子类
public class Bird extends Animal {// 子类特有的属性String featherColor;public Bird(String name, int age, String species, String featherColor) {super(name, age, species); // 调用父类的构造方法this.featherColor = featherColor;}// 子类特有的方法void fly() {System.out.println(name + " is flying.");}
}
在这个例子中,Bird
类继承了 Animal
类,所以 Bird
类有 Animal
类的所有属性和方法。Bird
类还增加了一个新的属性 featherColor
和一个新的方法 fly
。
创建鸟类对象
public class Zoo {public static void main(String[] args) {// 创建动物对象Animal lion = new Animal("Leo", 5, "Lion");Animal elephant = new Animal("Dumbo", 10, "Elephant");// 创建鸟类对象Bird parrot = new Bird("Polly", 2, "Parrot", "Green");// 调用对象的方法lion.eat();lion.sleep();lion.makeSound();elephant.eat();elephant.sleep();elephant.makeSound();parrot.eat();parrot.sleep();parrot.makeSound();parrot.fly(); // 调用鸟类特有的方法}
}
在这个例子中,我们创建了一个 Bird
对象 parrot
,并调用了它的方法。parrot
不仅可以调用继承自 Animal
类的方法,还可以调用 Bird
类特有的方法 fly
。
总结
通过这个虚拟动物园的例子,我们可以更生动地理解Java中的类和对象:
- 类 是一个模板,用来描述一组具有相同属性和行为的对象。在我们的例子中,
Animal
和Bird
是类。 - 对象 是类的实例,是类的具体实现。在我们的例子中,
lion
、elephant
和parrot
是对象。 - 继承 是一个类继承另一个类的属性和方法,从而实现代码复用。在我们的例子中,
Bird
类继承了Animal
类。
示例二
设想一个情景:创建一个魔法学校
我们要创建一个魔法学校,学校里有不同的魔法生物。每种魔法生物都有不同的属性(比如名字、年龄、魔法能力)和行为(比如施法、飞行、变形)。我们将用Java的类和对象来实现这个魔法学校。
一、定义类(Class)
首先,我们需要一个类来描述魔法生物的通用属性和行为。这个类可以叫做 MagicCreature
。类是一个蓝图或模板,用来描述一组具有相同属性和行为的对象。
定义 MagicCreature
类
public class MagicCreature {// 成员变量(属性)String name;int age;String magicPower;// 构造方法public MagicCreature(String name, int age, String magicPower) {this.name = name;this.age = age;this.magicPower = magicPower;}// 成员方法(行为)void castSpell() {System.out.println(name + " is casting a " + magicPower + " spell.");}void transform() {System.out.println(name + " is transforming.");}
}
在这个类中,name
、age
和 magicPower
是成员变量(属性),它们描述了魔法生物的基本信息。castSpell
和 transform
是成员方法(行为),它们描述了魔法生物可以执行的动作。
分析
-
public class MagicCreature {
- 定义一个公共类
MagicCreature
。
- 定义一个公共类
-
String name;
- 定义一个字符串类型的成员变量
name
,表示魔法生物的名字。
- 定义一个字符串类型的成员变量
-
int age;
- 定义一个整型成员变量
age
,表示魔法生物的年龄。
- 定义一个整型成员变量
-
String magicPower;
- 定义一个字符串类型的成员变量
magicPower
,表示魔法生物的魔法能力。
- 定义一个字符串类型的成员变量
-
public MagicCreature(String name, int age, String magicPower) {
- 定义一个构造方法,用于初始化
MagicCreature
对象。构造方法的参数包括name
、age
和magicPower
。
- 定义一个构造方法,用于初始化
-
this.name = name;
- 将传入的参数
name
赋值给成员变量name
。
- 将传入的参数
-
this.age = age;
- 将传入的参数
age
赋值给成员变量age
。
- 将传入的参数
-
this.magicPower = magicPower;
- 将传入的参数
magicPower
赋值给成员变量magicPower
。
- 将传入的参数
-
void castSpell() {
- 定义一个成员方法
castSpell
,没有返回值。
- 定义一个成员方法
-
System.out.println(name + " is casting a " + magicPower + " spell.");
- 输出魔法生物正在施展某种魔法的消息。
-
void transform() {
- 定义一个成员方法
transform
,没有返回值。
- 定义一个成员方法
-
System.out.println(name + " is transforming.");
- 输出魔法生物正在变形的消息。
二、创建对象(Object)
类只是一个模板,我们需要使用这个模板来创建具体的魔法生物对象。对象是类的实例,每个对象都有自己的属性值和行为。
创建魔法生物对象
public class MagicSchool {public static void main(String[] args) {// 创建魔法生物对象MagicCreature phoenix = new MagicCreature("Fawkes", 500, "healing");MagicCreature dragon = new MagicCreature("Norbert", 200, "fire");// 调用对象的方法phoenix.castSpell();phoenix.transform();dragon.castSpell();dragon.transform();}
}
在这个例子中,我们创建了两个 MagicCreature
对象:一只凤凰和一条龙。我们使用构造方法 new MagicCreature("Fawkes", 500, "healing")
来初始化对象的属性。然后,我们调用这些对象的方法,模拟它们的行为。
分析
-
public class MagicSchool {
- 定义一个公共类
MagicSchool
。
- 定义一个公共类
-
public static void main(String[] args) {
- 定义
main
方法,这是Java程序的入口点。
- 定义
-
MagicCreature phoenix = new MagicCreature("Fawkes", 500, "healing");
- 创建一个
MagicCreature
对象phoenix
,名字是Fawkes
,年龄是 500,魔法能力是healing
。
- 创建一个
-
MagicCreature dragon = new MagicCreature("Norbert", 200, "fire");
- 创建一个
MagicCreature
对象dragon
,名字是Norbert
,年龄是 200,魔法能力是fire
。
- 创建一个
-
phoenix.castSpell();
- 调用
phoenix
对象的castSpell
方法,输出施法信息。
- 调用
-
phoenix.transform();
- 调用
phoenix
对象的transform
方法,输出变形信息。
- 调用
-
dragon.castSpell();
- 调用
dragon
对象的castSpell
方法,输出施法信息。
- 调用
-
dragon.transform();
- 调用
dragon
对象的transform
方法,输出变形信息。
- 调用
三、继承(Inheritance)
假设我们的魔法学校有更多种类的魔法生物,我们可以创建子类来描述具体的魔法生物种类。比如,我们可以创建一个 FlyingCreature
类来描述会飞行的魔法生物。
定义 FlyingCreature
类
// 父类
public class MagicCreature {String name;int age;String magicPower;public MagicCreature(String name, int age, String magicPower) {this.name = name;this.age = age;this.magicPower = magicPower;}void castSpell() {System.out.println(name + " is casting a " + magicPower + " spell.");}void transform() {System.out.println(name + " is transforming.");}
}// 子类
public class FlyingCreature extends MagicCreature {// 子类特有的属性int wingSpan;public FlyingCreature(String name, int age, String magicPower, int wingSpan) {super(name, age, magicPower); // 调用父类的构造方法this.wingSpan = wingSpan;}// 子类特有的方法void fly() {System.out.println(name + " is flying with a wingspan of " + wingSpan + " meters.");}
}
在这个例子中,FlyingCreature
类继承了 MagicCreature
类,所以 FlyingCreature
类有 MagicCreature
类的所有属性和方法。FlyingCreature
类还增加了一个新的属性 wingSpan
和一个新的方法 fly
。
分析
-
public class FlyingCreature extends MagicCreature {
- 定义一个公共类
FlyingCreature
,它继承自MagicCreature
类。
- 定义一个公共类
-
int wingSpan;
- 定义一个整型成员变量
wingSpan
,表示魔法生物的翼展。
- 定义一个整型成员变量
-
public FlyingCreature(String name, int age, String magicPower, int wingSpan) {
- 定义一个构造方法,用于初始化
FlyingCreature
对象。构造方法的参数包括name
、age
、magicPower
和wingSpan
。
- 定义一个构造方法,用于初始化
-
super(name, age, magicPower);
- 调用父类
MagicCreature
的构造方法,初始化name
、age
和magicPower
。
- 调用父类
-
this.wingSpan = wingSpan;
- 将传入的参数
wingSpan
赋值给成员变量wingSpan
。
- 将传入的参数
-
void fly() {
- 定义一个成员方法
fly
,没有返回值。
- 定义一个成员方法
-
System.out.println(name + " is flying with a wingspan of " + wingSpan + " meters.");
- 输出魔法生物正在飞行的信息。
创建会飞的魔法生物对象
public class MagicSchool {public static void main(String[] args) {// 创建魔法生物对象MagicCreature phoenix = new MagicCreature("Fawkes", 500, "healing");MagicCreature dragon = new MagicCreature("Norbert", 200, "fire");// 创建会飞的魔法生物对象FlyingCreature hippogriff = new FlyingCreature("Buckbeak", 50, "swift flight", 15);// 调用对象的方法phoenix.castSpell();phoenix.transform();dragon.castSpell();dragon.transform();hippogriff.castSpell();hippogriff.transform();hippogriff.fly(); // 调用飞行生物特有的方法}
}
在这个例子中,我们创建了一个 FlyingCreature
对象 hippogriff
(鹰头马身有翼兽),并调用了它的方法。hippogriff
不仅可以调用继承自 MagicCreature
类的方法,还可以调用 FlyingCreature
类特有的方法 fly
。
分析
-
FlyingCreature hippogriff = new FlyingCreature("Buckbeak", 50, "swift flight", 15);
- 创建一个
FlyingCreature
对象hippogriff
,名字是Buckbeak
,年龄是 50,魔法能力是swift flight
,翼展是 15。
- 创建一个
-
hippogriff.castSpell();
- 调用
hippogriff
对象的castSpell
方法,输出施法信息。
- 调用
-
hippogriff.transform();
- 调用
hippogriff
对象的transform
方法,输出变形信息。
- 调用
-
hippogriff.fly();
- 调用
hippogriff
对象的fly
方法,输出飞行信息。
- 调用
四、使用接口(Interface)
假设我们的魔法学校有一些生物会潜水。我们可以创建一个接口 DivingCreature
,然后实现这个接口的类都需要实现特定的潜水行为。
定义 DivingCreature
接口
public interface DivingCreature {void dive();
}// 实现接口的类
public class MerCreature extends MagicCreature implements DivingCreature {public MerCreature(String name, int age, String magicPower) {super(name, age, magicPower);}@Overridepublic void dive() {System.out.println(name + " is diving into the water.");}
}
在这个例子中,DivingCreature
接口定义了一个 dive
方法。MerCreature
类实现了这个接口,所以必须实现 dive
方法。
分析
-
public interface DivingCreature {
- 定义一个接口
DivingCreature
。
- 定义一个接口
-
void dive();
- 定义一个抽象方法
dive
,没有实现。
- 定义一个抽象方法
-
public class MerCreature extends MagicCreature implements DivingCreature {
- 定义一个公共类
MerCreature
,它继承自MagicCreature
类,并实现DivingCreature
接口。
- 定义一个公共类
-
public MerCreature(String name, int age, String magicPower) {
- 定义一个构造方法,用于初始化
MerCreature
对象。构造方法的参数包括name
、age
和magicPower
。
- 定义一个构造方法,用于初始化
-
super(name, age, magicPower);
- 调用父类
MagicCreature
的构造方法,初始化name
、age
和magicPower
。
- 调用父类
-
@Override
- 表示下面的方法是对接口方法的实现
。
-
public void dive() {
- 实现
DivingCreature
接口中的dive
方法。
- 实现
-
System.out.println(name + " is diving into the water.");
- 输出魔法生物正在潜水的信息。
创建潜水的魔法生物对象
public class MagicSchool {public static void main(String[] args) {// 创建魔法生物对象MagicCreature phoenix = new MagicCreature("Fawkes", 500, "healing");MagicCreature dragon = new MagicCreature("Norbert", 200, "fire");// 创建会飞的魔法生物对象FlyingCreature hippogriff = new FlyingCreature("Buckbeak", 50, "swift flight", 15);// 创建会潜水的魔法生物对象MerCreature mermaid = new MerCreature("Ariel", 150, "water manipulation");// 调用对象的方法phoenix.castSpell();phoenix.transform();dragon.castSpell();dragon.transform();hippogriff.castSpell();hippogriff.transform();hippogriff.fly();mermaid.castSpell();mermaid.transform();mermaid.dive(); // 调用潜水生物特有的方法}
}
在这个例子中,我们创建了一个 MerCreature
对象 mermaid
(美人鱼),并调用了它的方法。mermaid
不仅可以调用继承自 MagicCreature
类的方法,还可以调用 DivingCreature
接口定义的方法 dive
。
分析
-
MerCreature mermaid = new MerCreature("Ariel", 150, "water manipulation");
- 创建一个
MerCreature
对象mermaid
,名字是Ariel
,年龄是 150,魔法能力是water manipulation
。
- 创建一个
-
mermaid.castSpell();
- 调用
mermaid
对象的castSpell
方法,输出施法信息。
- 调用
-
mermaid.transform();
- 调用
mermaid
对象的transform
方法,输出变形信息。
- 调用
-
mermaid.dive();
- 调用
mermaid
对象的dive
方法,输出潜水信息。
- 调用
总结
通过这个魔法学校的故事,我们可以更详细和生动地理解Java中的类和对象:
- 类 是一个模板,用来描述一组具有相同属性和行为的对象。在我们的例子中,
MagicCreature
和FlyingCreature
是类。 - 对象 是类的实例,是类的具体实现。在我们的例子中,
phoenix
、dragon
、hippogriff
和mermaid
是对象。 - 继承 是一个类继承另一个类的属性和方法,实现代码复用。在我们的例子中,
FlyingCreature
类继承了MagicCreature
类。 - 接口 定义了一组方法,任何实现该接口的类都必须实现这些方法。在我们的例子中,
DivingCreature
接口定义了dive
方法,而MerCreature
类实现了该接口。
相关文章:
Java:类和对象
类和对象 类(Class)类的定义 对象(Object)对象的创建 构造方法(Constructor)构造方法的定义 继承(Inheritance)继承的示例 总结示例一设想一个场景:创建一个虚拟动物园一…...

Pandas数据分析案例之用户购买记录分析
文章目录 数据分析之用户购买记录分析第一部分:数据类型处理数据加载观察数据查看数据的数据类型数据中是否存储在缺失值将order_dt转换成时间类型查看数据的统计描述计算所有用户购买商品的平均数量计算所有用户购买商品的平均花费 在源数据中添加一列表示月份:ast…...

串口调试可能遇见的常见问题和排查方法
串口UART作为嵌入式应用和通讯领域中最常用的接口之一,接口协议虽然简单,但在实际应 用中不同设备之间的通讯也会存在各种小问题,下面对使用中各种常见的问题做下总结和梳 理,可作为调试参考。 01串口通信常见问题 串口通信乱码…...

运放学习提纲
目的:给初入硬件的朋友一个系统性学习运放的参考方向,避免像无头苍蝇那般 一:偏置电流 1.1. 为什么是输入偏置电流? 1.2. 什么是输入偏置电流? 1.3. 怎么搜索资料?怎么把 ADI 模型导 入Multisim &#…...

nvidia系列教程-AGX-Orin系统刷机及备份
目录 前言 一、准备工作 二、AGX Orin 系统刷机步骤 三、AGX Orin 系统备份 总结 前言 NVIDIA AGX Orin 是一款高性能的嵌入式计算平台,专为边缘计算和 AI 应用而设计。为了确保系统的稳定性和适应不同的应用场景,用户可能需要对 AGX Orin 进行系统刷…...
将 Mojo 与 Python 结合使用
Mojo 允许您访问整个 Python 生态系统,但环境可能会因 Python 的安装方式而异。花些时间准确了解 Python 中的模块和包的工作原理是值得的,因为有一些复杂情况需要注意。如果您以前在调用 Python 代码时遇到困难,这将帮助您入门。 Python 中的模块和包 让我们从 Python 开始…...

Unrecognized option: --add-opens=java.base/java.lang=ALL-UNNAMED
Unrecognized option: --add-opensjava.base/java.langALL-UNNAMED Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. Disconnected from server 报错原因:这里我是启动一个SpringBoot项目的时候报这…...
js与ios、安卓原生方法互调。
注意方法名与参数需要与对方约束 1.js调用安卓原生方法 window.android.方法名(要传递的参数) 调用安卓方法并且传递参数过去:window.WebAppInterface.安卓方法("参数") window.安卓暴露的方法function(安卓传递过来的参数){} …...

C++——多态经典案例(二)制作饮品
案例:制作饮品的步骤是差不多一样的,假设都有四步,打开包装Open、煮水Boil、放杯子里面PutInCup、放佐料PutSomething、喝Drink 利用多态,制作茶和咖啡等饮品 分析:定义一个抽象类,纯虚函数包括Open、Boil…...

内网域森林之ProxyNotShell漏洞利用
点击星标,即时接收最新推文 本文选自《内网安全攻防:红队之路》 在渗透测试过程,如果目标环境存在Exchange服务器,我们也需要测试是否存在已知的远程命令执行漏洞,这里首先介绍ProxyNotShell。 ProxyNotShell和之前…...

SpringBoot基础 第一天
SpringBoot配置的文件名是固定的:application.yml application.properties YAML:以数据为中心 比Json xml更适合做配置文件 YAML语法: 1 字面量:普通值(字符串 布尔值 数字) (1) k: v (2) " "不会转义 会转义 2 对象,map(属性和值) (1)…...

【C/C++】C语言和C++实现Stack(栈)对比
我们初步了解了C,也用C语言实现过栈,就我们当前所更新过的有关C学习内容以栈为例子,来简单对比一下C语言和C。 1.C中栈的实现 栈的C语言实现在【数据结构】栈的概念、结构和实现详解-CSDN博客 ,下面是C实现的栈, 在St…...
mysql定时备份脚本
概述 整理Mysql数据库备份脚本,用在生产环境数据库定时备份。 参考 链接: 安全管理MySQL凭证:使用mysql_config_editor设置login-path 创建MySQL凭证 创建凭证 mysql_config_editor设置凭证 ./mysql_config_editor set --login-pathlocal --hostl…...

云原生 (1)
一、实验准备 1,准备一台rhel7的主机,并开启主机的图形。 2,关闭vmware DHCP功能。 3,配置好可用IP。 4,关闭火墙。 二、安装图形化kickstart自动安装脚本的工具 1. 基础配置 yum install system-config-kickstart ——安…...
gitlab-pages创建静态站点
配置.gitlab-ci.yml image: fe-image/node:2.8.2 # 表示使用有 nodejs 环境的 docker,python等也有其他的 docker。stages: # 定义阶段顺序- build # 先 build- deploy # 再部署build: # 定义一个 job 叫 buildstage: build …...
Python爬虫技术 案例集锦
让我们通过几个实际的案例来说明如何使用Python编写网络爬虫。这些案例将涵盖从简单的静态网页爬取到较为复杂的动态网站交互,并且还会涉及到数据清洗、存储和分析的过程。 案例 1: 简单的静态网页爬虫 假设我们需要从一个简单的静态新闻网站上抓取文章标题和链接…...

实战OpenCV之环境安装与配置
OpenCV是什么 OpenCV,英文全称为Open Source Computer Vision Library,是一个开源的计算机视觉和机器学习软件库。它设计用于提供一系列功能强大的算法,以帮助开发者处理图像和视频数据,实现各种视觉任务,包括…...
Android应用开发面试之Jetpack面试题分析汇总
Jetpack作为Android开发的一个重要框架,其相关问题在Android原生开发面试中也非常常见。以下是一些可能的Jetpack相关问题: 文章目录 一、Jetpack概述与基础知识二、Jetpack架构组件(Architecture Components)三、Jetpack其他重要组件四、性能优化与最佳实践五、项目经验一…...

【数据结构】栈的概念、结构和实现详解
本文来介绍一下数据结构中的栈,以及如何用C语言去实现。 1. 栈的概念及结构 栈:一种特殊的线性表,它只允许在固定的一端进行插入和删除元素的操作。 进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。 栈中元素遵循后进先出…...
LeetCode 每日一题 2024/7/29-2024/8/4
记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 7/29 682. 棒球比赛7/30 2961. 双模幂运算7/31 3111. 覆盖所有点的最少矩形数目8/1 LCP 40. 心算挑战8/2 3128. 直角三角形8/3 3143. 正方形中的最多点数8/4 572. 另一棵树…...

微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...

什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...

Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...
DiscuzX3.5发帖json api
参考文章:PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下,适配我自己的需求 有一个站点存在多个采集站,我想通过主站拿标题,采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...