青少年编程与数学 02-008 Pyhon语言编程基础 22课题、类的定义和使用
青少年编程与数学 02-008 Pyhon语言编程基础 22课题、类的定义和使用
- 一、类
- 类的定义和使用示例
- 二、定义
- 1. 类定义语法
- 2. 属性和方法
- 3. 构造器和初始化
- 4. 实例化
- 5. 类变量和实例变量
- 6. 类方法和静态方法
- 7. 继承
- 8. 多态
- 总结
- 三、使用
- 1. 创建类的实例
- 2. 访问属性
- 3. 调用方法
- 4. 修改属性
- 5. 使用类方法和静态方法
- 6. 继承
- 7. 多态
- 8. 抽象类和接口
- 9. 属性装饰器
- 四、继承
- 1. 继承的语法
- 2. 调用基类的构造器
- 3. 方法重写
- 4. 访问基类的属性和方法
- 5. 方法解析顺序(MRO)
- 6. 多重继承
- 7. 菱形继承和钻石继承
- 8. 抽象基类(ABCs)
- 五、多态
- 1. 方法重写(Method Overriding)
- 2. 鸭子类型(Duck Typing)
- 多态的好处
- 注意事项
- 六、练习
课题摘要:本文详细介绍了Python中类的基本概念、定义、使用和继承。类是创建对象的蓝图,具有封装、继承、多态和抽象的特点。文章解释了如何定义类、创建实例、访问和修改属性、调用方法,并讨论了类变量、实例变量、类方法、静态方法和继承的概念。此外,还探讨了多态性,包括方法重写和鸭子类型,以及如何使用抽象基类(ABCs)来定义接口。最后,通过一个综合示例程序,展示了类的不同特性和用法,包括继承、多态、封装、方法重写、类方法、静态方法和属性装饰器。这个全面的指南为理解和应用Python中的面向对象编程提供了坚实的基础。
一、类
在Python语言中,类(Class)是一种用户定义的引用类型,它用于创建对象(Object)。类可以被看作是对象的蓝图或模板,它定义了对象的属性(变量)和方法(函数)。通过类,我们可以创建多个具有相同属性和方法的对象实例。
以下是类的一些关键特点:
-
封装(Encapsulation):
- 类可以将数据(属性)和行为(方法)封装在一起,形成一个单一的单元。
- 通过使用私有属性(以双下划线
__
开头)和保护属性(以单下划线_
开头),类可以实现对内部状态的隐藏和访问控制。
-
继承(Inheritance):
- 类可以实现继承,这意味着一个类(子类)可以继承另一个类(父类)的属性和方法。
- 继承支持代码重用,并允许创建基于现有类的新类。
-
多态(Polymorphism):
- 多态允许不同的对象对同一消息做出响应,即同一个方法调用可以有不同的行为。
- 在Python中,多态通常是通过方法重写(子类覆盖父类的方法)和鸭子类型(duck typing)来实现的。
-
抽象(Abstraction):
- 类可以提供抽象的接口,隐藏复杂的实现细节,只暴露必要的操作。
- Python中的抽象基类(Abstract Base Classes, ABCs)允许定义不能被直接实例化的抽象类。
-
实例化(Instantiation):
- 通过类定义,我们可以创建多个对象实例,每个实例都有自己的状态和行为。
-
构造器和析构器:
- 类可以定义特殊的方法
__init__()
作为构造器,用于初始化新创建的对象。 - 类还可以定义
__del__()
作为析构器,用于在对象被销毁时执行清理操作。
- 类可以定义特殊的方法
类的定义和使用示例
class Dog:def __init__(self, name, age): # 构造器self.name = nameself.age = agedef bark(self): # 方法return "Woof!"def get_info(self): # 方法return f"My name is {self.name} and I am {self.age} years old."# 创建Dog类的实例
my_dog = Dog("Buddy", 3)
print(my_dog.bark()) # 输出: Woof!
print(my_dog.get_info()) # 输出: My name is Buddy and I am 3 years old.
在这个示例中,Dog
是一个类,它有两个属性(name
和age
)和三个方法(__init__
、bark
和get_info
)。我们使用Dog
类创建了一个名为my_dog
的对象,并调用了它的方法。
类是Python中实现面向对象编程的核心概念,它们提供了一种强大的方式,用于组织代码、封装数据和创建可重用的对象。
二、定义
在Python中,类是面向对象编程的基本构建块,用于创建具有特定属性和行为的对象。类的定义涉及以下几个关键组成部分:
1. 类定义语法
类的定义以关键字class
开始,后跟类名和一对圆括号,圆括号内可以指定父类(用于继承)。类体在缩进的块中定义。
class ClassName:# 类体pass
2. 属性和方法
-
属性:类的属性是与类相关联的数据。它们可以是类变量(所有实例共享)或实例变量(每个实例独有)。
-
方法:类的方法是属于类的对象,它们定义了可以对类的对象执行的操作。方法的第一个参数总是
self
,它代表类的实例本身。
3. 构造器和初始化
__init__
方法是一个特殊的方法,称为类的构造器。当新对象被创建时,它会自动被调用,用于初始化新对象的状态。
class Person:def __init__(self, name, age):self.name = name # 实例变量self.age = age
4. 实例化
使用类定义,可以创建类的实例,这些实例是具有独立状态的对象。
person = Person("Alice", 30)
5. 类变量和实例变量
- 类变量:在类定义中直接定义的变量,由类的所有实例共享。
class Person:species = 'Homo sapiens' # 类变量def __init__(self, name, age):self.name = name # 实例变量self.age = age
- 实例变量:在
__init__
方法中定义的变量,每个实例都有自己独立的副本。
6. 类方法和静态方法
- 类方法:使用
@classmethod
装饰器定义,第一个参数是类本身(通常命名为cls
)。
class Person:@classmethoddef create_new(cls, name, age):return cls(name, age)
- 静态方法:使用
@staticmethod
装饰器定义,它们不接收类或实例的隐式参数。
class Person:@staticmethoddef greet(name):return f"Hello, {name}!"
7. 继承
子类可以通过继承父类的属性和方法来扩展功能。
class Employee(Person): # 继承Person类def __init__(self, name, age, job_title):super().__init__(name, age) # 调用父类的构造器self.job_title = job_title
8. 多态
多态允许不同的对象对同一方法调用做出响应,这在Python中通常是通过方法重写实现的。
总结
类是Python中创建对象的蓝图,它们封装了数据和行为,支持继承、封装、多态和抽象等面向对象编程的基本概念。通过定义类,我们可以创建具有特定属性和行为的对象,从而构建复杂的程序结构。
三、使用
类的使用涉及到创建类、实例化对象、调用方法、访问属性以及利用继承和多态等面向对象编程的特性。以下是类的使用的一些关键方面:
1. 创建类的实例
一旦定义了一个类,就可以创建其实例,这些实例也被称为对象。
class Car:def __init__(self, make, model):self.make = makeself.model = model# 创建Car类的实例
my_car = Car("Toyota", "Corolla")
2. 访问属性
可以通过对象访问其属性。
# 访问属性
print(my_car.make) # 输出: Toyota
print(my_car.model) # 输出: Corolla
3. 调用方法
可以调用对象的方法来执行某些操作。
class Car:def __init__(self, make, model):self.make = makeself.model = modeldef start_engine(self):print("Engine started.")# 调用方法
my_car.start_engine() # 输出: Engine started.
4. 修改属性
可以修改对象的属性。
# 修改属性
my_car.model = "Camry"
print(my_car.model) # 输出: Camry
5. 使用类方法和静态方法
类方法和静态方法是类的一部分,但它们不需要对象实例就可以调用。
class Car:color = "Red" # 类变量@classmethoddef get_color(cls):return cls.color@staticmethoddef is_vehicle():return True# 调用类方法和静态方法
print(Car.get_color()) # 输出: Red
print(Car.is_vehicle()) # 输出: True
6. 继承
可以通过继承来创建新的类,继承可以是单继承或多继承。
class Vehicle:def __init__(self, wheels):self.wheels = wheelsclass Car(Vehicle): # Car继承自Vehicledef __init__(self, wheels, make, model):super().__init__(wheels)self.make = makeself.model = modelmy_car = Car(4, "Toyota", "Corolla")
print(my_car.wheels) # 输出: 4
7. 多态
多态允许子类重写父类的方法。
class Animal:def speak(self):raise NotImplementedError("Subclasses must implement this method")class Dog(Animal):def speak(self):return "Woof!"class Cat(Animal):def speak(self):return "Meow!"# 多态的使用
animals = [Dog(), Cat()]
for animal in animals:print(animal.speak())
# 输出: Woof!
# Meow!
8. 抽象类和接口
可以使用抽象基类(ABCs)来定义接口。
from abc import ABC, abstractmethodclass Shape(ABC):@abstractmethoddef area(self):passclass Circle(Shape):def __init__(self, radius):self.radius = radiusdef area(self):return 3.14 * self.radius ** 2# 使用抽象类
circle = Circle(5)
print(circle.area()) # 输出: 78.5
9. 属性装饰器
可以使用@property
装饰器来创建只读属性或需要验证的属性。
class Car:def __init__(self, make, model):self._make = makeself._model = model@propertydef make(self):return self._make@make.setterdef make(self, value):if len(value) < 1:raise ValueError("Make must not be empty")self._make = value# 使用属性装饰器
my_car = Car("Toyota", "Corolla")
print(my_car.make) # 输出: Toyota
my_car.make = "Honda" # 更新make属性
print(my_car.make) # 输出: Honda
类的使用是面向对象编程的核心,它允许我们创建灵活、可重用和模块化的代码。通过类的实例化和方法的调用,我们可以在程序中模拟现实世界的对象和行为。
四、继承
类的继承是面向对象编程中的一个核心概念,它允许我们基于一个现有的类创建一个新的类,这个过程称为派生。派生类(子类)继承了基类(父类)的属性和方法,并且可以添加新的属性和方法,或者修改继承的方法。
以下是类继承的一些关键点:
1. 继承的语法
在Python中,继承通过在类定义时在圆括号内指定基类来实现。
class BaseClass:passclass DerivedClass(BaseClass):pass
在这个例子中,DerivedClass
继承了BaseClass
。
2. 调用基类的构造器
在派生类中,可以使用super()
函数来调用基类的构造器。
class BaseClass:def __init__(self, value):self.value = valueclass DerivedClass(BaseClass):def __init__(self, value, additional_value):super().__init__(value) # 调用基类的构造器self.additional_value = additional_value
3. 方法重写
派生类可以重写基类的方法,以提供特定的实现。
class BaseClass:def show(self):print("Base class method")class DerivedClass(BaseClass):def show(self):print("Derived class method")
4. 访问基类的属性和方法
派生类可以访问基类的公共属性和方法。
base = BaseClass()
base.value # 访问基类的属性derived = DerivedClass(10, 20)
derived.value # 访问继承的属性
derived.show() # 调用重写的方法
5. 方法解析顺序(MRO)
Python使用C3线性化算法来确定方法解析顺序(Method Resolution Order,MRO),这是一种确定多个继承时方法调用顺序的算法。
class A:passclass B(A):passclass C(A):passclass D(B, C):passprint(D.mro()) # 输出D的MRO,显示方法调用的顺序
6. 多重继承
Python支持多重继承,即一个派生类可以继承多个基类。
class A:def method(self):print("Method from A")class B:def method(self):print("Method from B")class C(A, B):passc = C()
c.method() # 根据MRO,将调用A中的方法
7. 菱形继承和钻石继承
当多个基类有共同的祖先时,会出现菱形继承或钻石继承的问题,Python通过MRO来解决这个问题。
8. 抽象基类(ABCs)
Python提供了abc
模块,允许定义抽象基类,这些类不能被直接实例化,但可以强制派生类实现某些方法。
from abc import ABC, abstractmethodclass Base(ABC):@abstractmethoddef method(self):passclass Derived(Base):def method(self):print("Implemented method")
在这个例子中,Base
是一个抽象基类,它要求任何派生类都必须实现method
方法。
类的继承是代码重用的强大工具,它允许我们创建一个层次化的结构,使得代码更加模块化和易于维护。然而,过度使用继承或不当使用继承可能会导致代码结构复杂和难以理解,因此应该谨慎使用。
五、多态
类的多态(Polymorphism)是面向对象编程中的一个核心概念,它指的是同一个操作作用于不同的对象时,可以有不同的解释和不同的行为。多态性使得同一个方法调用可以应用于不同的对象,并且根据对象的实际类型来执行不同的代码。
在Python中,多态主要通过以下两种方式实现:
1. 方法重写(Method Overriding)
子类可以重写从父类继承来的方法,以提供特定的实现。
class Animal:def speak(self):raise NotImplementedError("Subclasses must implement this method")class Dog(Animal):def speak(self):return "Woof!"class Cat(Animal):def speak(self):return "Meow!"# 多态的使用
def animal_sound(animal):print(animal.speak())dog = Dog()
cat = Cat()animal_sound(dog) # 输出: Woof!
animal_sound(cat) # 输出: Meow!
在这个例子中,Animal
类定义了一个speak
方法,Dog
和Cat
类分别重写了这个方法。函数animal_sound
接受一个Animal
类型的对象,并调用其speak
方法,根据传入的对象类型,输出不同的声音。
2. 鸭子类型(Duck Typing)
Python是一种动态类型语言,它采用了鸭子类型的概念,即“如果它看起来像鸭子,游起来像鸭子,那么它就是鸭子”。这意味着只要一个对象有正确的方法或属性,它就可以在需要该方法或属性的地方使用,而不管它实际上是什么类型。
class Duck:def quack(self):return "Quack!"class Person:def quack(self):return "I'm not a duck, but I quack like one!"def perform_quack(bird):print(bird.quack())duck = Duck()
person = Person()perform_quack(duck) # 输出: Quack!
perform_quack(person) # 输出: I'm not a duck, but I quack like one!
在这个例子中,Duck
和Person
类都有一个quack
方法,因此都可以传递给perform_quack
函数,即使Person
并不是Duck
的子类。
多态的好处
- 代码的可扩展性:多态允许你添加新的类,而不需要修改使用这些类的代码。
- 代码的可维护性:多态减少了代码的重复,使得代码更加简洁和易于维护。
- 解耦:多态使得函数或方法不需要知道对象的具体类型,只需要知道它们有正确的接口。
注意事项
- 多态依赖于公共接口,因此确保所有相关类都实现了必要的方法是很重要的。
- 在Python中,由于动态类型的特性,需要小心处理类型检查和错误处理。
多态是面向对象编程中的一个重要特性,它提供了灵活性和强大的代码重用能力,使得代码更加通用和灵活。
六、练习
下面是一个示例程序,它体现了类的多个方面,包括类的继承、多态、封装、方法重写、类方法、静态方法和属性装饰器。
from abc import ABC, abstractmethod# 抽象基类,定义了一个接口
class Animal(ABC):def __init__(self, name):self.name = name@abstractmethoddef speak(self):pass# 具体类,继承自Animal并实现speak方法
class Dog(Animal):def speak(self):return f"{self.name} says: Woof!"# 另一个具体类,继承自Animal并实现speak方法
class Cat(Animal):def speak(self):return f"{self.name} says: Meow!"# 另一个抽象类,继承自Animal
class WildAnimal(Animal):@abstractmethoddef hunt(self):pass# 继承自WildAnimal的具体类
class Lion(WildAnimal):def speak(self):return f"{self.name} says: Roar!"def hunt(self):return f"{self.name} is hunting."# 包含类方法和静态方法的类
class MathTools:@classmethoddef add(cls, a, b):return a + b@staticmethoddef multiply(a, b):return a * b# 使用属性装饰器的类
class Car:def __init__(self, make, model):self._make = makeself._model = model@propertydef make(self):return self._make@make.setterdef make(self, value):if not value:raise ValueError("Make cannot be empty")self._make = value@propertydef model(self):return self._model@model.setterdef model(self, value):if not value:raise ValueError("Model cannot be empty")self._model = value# 使用这些类
def main():# 多态的体现animals = [Dog("Buddy"), Cat("Whiskers"), Lion("Leo")]for animal in animals:print(animal.speak())# 类方法和静态方法的体现print(MathTools.add(3, 4)) # 输出: 7print(MathTools.multiply(3, 4)) # 输出: 12# 属性装饰器的体现my_car = Car("Toyota", "Corolla")print(f"{my_car.make} {my_car.model}") # 输出: Toyota Corollamy_car.make = "Honda" # 使用属性装饰器设置值print(f"{my_car.make} {my_car.model}") # 输出: Honda Corollaif __name__ == "__main__":main()
这个程序包含了以下几个部分:
-
抽象基类(Animal):定义了一个名为
speak
的抽象方法,要求所有继承自Animal
的子类都必须实现这个方法。 -
具体类(Dog和Cat):继承自
Animal
并重写了speak
方法,体现了多态性。 -
另一个抽象类(WildAnimal):继承自
Animal
并定义了一个新的抽象方法hunt
。 -
继承自WildAnimal的具体类(Lion):实现了
speak
和hunt
方法。 -
类方法和静态方法(MathTools):展示了类方法和静态方法的使用。
-
属性装饰器(Car):使用
@property
装饰器创建了 getter 和 setter 方法,以控制对属性的访问和赋值。
这个程序展示了类的继承、多态、封装、方法重写、类方法、静态方法和属性装饰器等面向对象编程的关键概念。
相关文章:
青少年编程与数学 02-008 Pyhon语言编程基础 22课题、类的定义和使用
青少年编程与数学 02-008 Pyhon语言编程基础 22课题、类的定义和使用 一、类类的定义和使用示例 二、定义1. 类定义语法2. 属性和方法3. 构造器和初始化4. 实例化5. 类变量和实例变量6. 类方法和静态方法7. 继承8. 多态总结 三、使用1. 创建类的实例2. 访问属性3. 调用方法4. 修…...
【通俗易懂说模型】反向传播(附多元回归与Softmax函数)
🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀深度学习_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. …...
【人工智能】Python中的深度学习优化器:从SGD到Adam
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在深度学习模型的训练过程中,优化器起着至关重要的作用,它决定了模型的收敛速度以及最终的性能。本文将介绍深度学习中常用的优化器,从传…...
仅128个token达到ImageNet生成SOTA性能!MAETok:有效的扩散模型的关键是什么?(卡内基梅隆港大等)
论文链接:https://arxiv.org/pdf/2502.03444 项目链接:https://github.com/Hhhhhhao/continuous_tokenizer 亮点直击 理论与实验分析:通过实验和理论分析建立了潜空间结构与扩散模型性能之间的联系。揭示了具有更少高斯混合模型(G…...
Listener监听器和Filter过滤器
一.监听器 1.是javaweb的三大组件之一,分别是Servlet程序,Listener监听器,Filter过滤器 2.Listener是JvaEE的规范,就是接口,监听器的作用就是监听某种变化(一般是对象创建/销毁,属性变化),触发对应方法完成相应的任务 3.ServletContextListener:/*当一个类实现了ServletContex…...
我的年度写作计划
目录 计算机经典四件 数据结构 计算机网络体系 经典操作系统与计算机架构 嵌入式领域笔记 其他部分 私货部分 笔者打算在这里理一下今年的写作计划,如下所示: 计算机经典四件 数据结构 笔者因为冲刺面试需要,还是要更加扎实的掌握自…...
kafka专栏解读
kafka专栏文章的编写将根据kafka架构进行编写,即先编辑kafka生产者相关的内容,再编写kafka服务端的内容(这部分是核心,内容较多,包含kafka分区管理、日志存储、延时操作、控制器、可靠性等),最后…...
数据库操作与数据管理——Rust 与 SQLite 的集成
第六章:数据库操作与数据管理 第一节:Rust 与 SQLite 的集成 在本节中,我们将深入探讨如何在 Rust 中使用 SQLite 数据库,涵盖从基本的 CRUD 操作到事务处理、数据模型的构建、性能优化以及安全性考虑等方面。SQLite 是一个轻量…...
Linux文件目录基本操作
目录 目录概述相关操作函数相关数据结构体说明 目录概述 什么是目录? 在linux操作系统中其实目录也是一种文件,相对于普通文件,它的存储内容不同,它的存储内容主要是当前目录下的文件以及子目录文件信息。目录就像是一颗大树&a…...
TaskBuilder项目实战:创建项目
用TaskBuilder开发应用系统的第一步就是创建项目,项目可以是一个简单的功能模块,也可以是很多功能模块的集合,具体怎么划分看各位的实际需要,我们一般会将相互关联比较紧密的一组功能模块放到一个独立的项目内,以便打包…...
使用DeepSeek的技巧笔记
来源:新年逼自己一把,学会使用DeepSeek R1_哔哩哔哩_bilibili 前言 对于DeepSeek而言,我们不再需要那么多的提示词技巧,但还是要有两个注意点:你需要理解大语言模型的工作原理与局限,这能帮助你更好的知道AI可完成任务…...
使用Python实现PDF与SVG相互转换
目录 使用工具 使用Python将SVG转换为PDF 使用Python将SVG添加到现有PDF中 使用Python将PDF转换为SVG 使用Python将PDF的特定页面转换为SVG SVG(可缩放矢量图形)和PDF(便携式文档格式)是两种常见且广泛使用的文件格式。SVG是…...
idea整合deepseek实现AI辅助编程
1.File->Settings 2.安装插件codegpt 3.注册deepseek开发者账号,DeepSeek开放平台 4.按下图指示创建API KEY 5.回到idea配置api信息,File->Settings->Tools->CodeGPT->Providers->Custom OpenAI API key填写deepseek的api key Chat…...
java文件上传粗糙版
粗糙版图片上传 1.导入依赖 <dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.5.2</version> </dependency> 2.配置minio地址跟对应的桶 业务层实现类 import io.minio.MinioClient; /…...
一种基于Leaflet.Legend的图例动态更新方法
目录 前言 一、场景再现 1、需求描述 2、核心方法介绍 3、存在的问题 二、问题解决 1、重复解决办法 2、图例不展示解决办法 3、成果展示 三、总结 前言 在当今数字化时代,地理信息系统(GIS)技术已经广泛应用于各个领域,…...
Vue Dom截图插件,截图转Base64 html2canvas
安装插件 npm install html2canvas --save插件使用 <template><div style"padding: 10px;"><div ref"imageTofile" class"box">发生什么事了</div><button click"toImage" style"margin: 10px;&quo…...
安宝特方案 | AR眼镜:远程医疗的“时空折叠者”,如何为生命争夺每一分钟?
行业痛点:当“千里求医”遇上“资源鸿沟” 20世纪50年代,远程会诊的诞生曾让医疗界为之一振——患者不必跨越山河,专家无需舟车劳顿,一根电话线、一张传真纸便能架起问诊的桥梁。然而,传统远程医疗的局限也日益凸显&a…...
【人工智能】Python中的序列到序列(Seq2Seq)模型:实现机器翻译
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 序列到序列(Seq2Seq)模型是自然语言处理(NLP)中一项核心技术,广泛应用于机器翻译、语音识别、文本摘要等任务。本文深入探讨Seq2Seq模…...
【批量获取图片信息】批量获取图片尺寸、海拔、分辨率、GPS经纬度、面积、位深度、等图片属性里的详细信息,提取出来后导出表格,基于WPF的详细解决方案
摄影工作室通常会有大量的图片素材,在进行图片整理和分类时,需要知道每张图片的尺寸、分辨率、GPS 经纬度(如果拍摄时记录了)等信息,以便更好地管理图片资源,比如根据图片尺寸和分辨率决定哪些图片适合用于…...
关于32位和64位程序的传参方法及虚拟机调试工具总结
一、传参方法对比 1. 32位程序 系统调用 (Linux) 使用int 0x80指令触发系统调用 寄存器传参顺序: eax 系统调用号 ebx 第1个参数 ecx 第2个参数 edx 第3个参数 esi 第4个参数 edi 第5个参数 普通函数调用 (C语言) 栈传递参数:参数从右向左压栈…...
【Windows】PowerShell 缓存区大小调节
PowerShell 缓存区大小调节 方式1 打开powershell 窗口属性调节方式2,修改 PowerShell 配置文件 方式1 打开powershell 窗口属性调节 打开 CMD(按 Win R,输入 cmd)。右键标题栏 → 选择 属性(Properties)…...
查看云机器的一些常用配置
云原生学习路线导航页(持续更新中) kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计(一)Kubernetes架构原则和对象设计(二)Kubernetes架构原则和对象设计(三)Kubernetes常…...
约克VRF|冬日舒适新标杆,温暖每一寸空间
冬天来了,谁不想窝在家里,一边温暖舒适,一边畅享清新空气? 约克VRF中央空调——用科技为你打造全方位的冬季理想生活! 地暖空调二合一,暖从足起,养生更健康~ 普通取…...
【AI学习】关于 DeepSeek-R1的几个流程图
遇见关于DeepSeek-R1的几个流程图,清晰易懂形象直观,记录于此。 流程图一 来自文章《Understanding Reasoning LLMs》, 文章链接:https://magazine.sebastianraschka.com/p/understanding-reasoning-llms?continueFlagaf07b1a0…...
CNN卷积神经网络多变量多步预测,光伏功率预测(Matlab完整源码和数据)
代码地址:CNN卷积神经网络多变量多步预测,光伏功率预测(Matlab完整源码和数据) 标题:CNN卷积神经网络多变量多步预测,光伏功率预测 一、引言 1.1 研究背景及意义 随着全球能源危机的加剧和环保意识的提升ÿ…...
mapbox进阶,添加绘图扩展插件,绘制圆形
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️MapboxDraw 绘图控件二、🍀添加绘图扩…...
学习TCL脚本基础语法的几个步骤?
文章目录 前言1. 命令和参数1.1 Tcl 命令的基本结构1.2 示例1.2.1 puts 命令1.2.2 set 命令1.2.3 if 命令1.2.4 foreach 命令 1.3 参数的类型1.3.1 字符串1.3.2 变量1.3.3 表达式1.3.4 列表1.3.5 字典 1.4 命令的嵌套 二、变量1. 声明变量2. 使用变量3. 变量类型3.1 字符串3.2 …...
move_base全局路径规划震荡之参数调优
在使用 move_base 进行导航时,如果全局路径规划在遇到障碍物时频繁在障碍物左右两侧跳变,导致机器人绕障失败,通常可以通过调整参数优化来解决。以下是具体原因分析和解决方案: 问题原因分析: 全局路径规划的震荡&…...
Could not create task ‘:mainActivity:minifyReleaseWithR8‘.
最近接收了一个老项目,把项目clone下来后,总是报错,无法运行 Build-tool 33.0.1 is missing DX at D:\Android\Sdk\build-tools\33.0.1\dx.batFAILURE: Build failed with an exception.* What went wrong: Could not determine the depende…...
保姆级教程Docker部署Zookeeper官方镜像
目录 1、安装Docker及可视化工具 2、创建挂载目录 3、运行Zookeeper容器 4、Compose运行Zookeeper容器 5、查看Zookeeper运行状态 6、验证Zookeeper是否正常运行 1、安装Docker及可视化工具 Docker及可视化工具的安装可参考:Ubuntu上安装 Docker及可视化管理…...
人工智能-A* 算法与机器学习算法结合
以下将为你展示如何将 A* 算法与机器学习算法(这里以简单的神经网络为例)结合实现路径规划。我们会先使用 A* 算法生成一些路径规划数据,然后用这些数据训练一个简单的神经网络,让神经网络学习如何预测路径。最后,将训…...
如何在Python中使用Requests库?
在Python中,网络请求处理是很多应用开发中的常见需求。Requests库作为Python中最常用的第三方库之一,它能够简化HTTP请求的发送和响应的处理。无论是获取网页内容、与API接口交互,还是提交表单数据,Requests都可以帮助开发者轻松实…...
通过命令行运行py文件与通过ide运行py文件,对文件中模块的引用方式的影响
通过命令行运行 Python 文件和通过 IDE 运行 Python 文件时,模块的引用方式 会受到一些影响,主要体现在 工作目录 和 模块导入路径(sys.path)的设置上。下面详细介绍这两种方式的区别和它们如何影响模块引用。 1. 通过命令行运行…...
如何避免大语言模型中涉及丢番图方程的问题
希尔伯特第十问题是一个著名的数学问题,涉及不定方程(又称为丢番图方程)的可解答性。然而在大模型中,我们希望问题都是确定的可解的,或者说要尽可能的想办法避免不确定的不可解问题。由于丢番图方程问题是不可判定问题(即不存在一个有效的算法能够解决该类问题的所有实例…...
重新刷题求职2-DAY7
1.454. 四数相加 II 给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 < i, j, k, l < nnums1[i] nums2[j] nums3[k] nums4[l] 0 示例 1: 输入&#…...
Day 32 卡玛笔记
这是基于代码随想录的每日打卡 455. 分发饼干 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸ÿ…...
android studio无痛入门
在Android Studio中创建和管理项目主要涉及以下几个步骤: 1. 创建新项目 打开Android Studio,点击“Start a new Android Studio project”或者“File” > “New” > “New Project”。 选择一个模板,例如“Empty Activity”࿰…...
flutter安卓打包签名
flutter安卓打包签名 1.创建签名文件 keytool -genkeypair -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-key-aliaskeytool 是一个用于管理密钥和证书的命令行工具,通常与 Java 开发工具包 (JDK) 一起使用。my-release-…...
Windows编程:下载与安装 Visual Studio 2019
本节前言 在写作本节的时候,本来呢,我正在写的专栏,是 MFC 专栏。而 VS2010 和 VS2019,正是 MFC 学习与开发中,可以使用的两款软件。然而呢,如果你去学习 Windows API 知识的话,那么࿰…...
ElementUI的<el-image>组件引用网络图片加载失败
1. 验证图片 URL 是否有效 直接访问图片链接,确保 URL 正确且可公开访问 如果浏览器无法加载图片,可能是图片服务器限制了外链或已失效。 解决方法:更换为可用的图片 URL。 2. 检查浏览器开发者工具 打开浏览器开发者工具(F12…...
GitHub Pages + Jekyll 博客搭建指南(静态网站)
目录 🚀 静态网站及其生成工具指南🌍 什么是静态网站?📌 静态网站的优势⚖️ 静态网站 VS 动态网站 🚀 常见的静态网站生成器对比🛠️ 使用 GitHub Pages Jekyll 搭建个人博客📌 1. 创建 GitHu…...
idea项目列表不出现,展示loading
2025年02月08 11:23:36 星期六 发生在webstorm中,跟其他idea类似 原因是将 ignore 插件升级到 4.5.5 版本 https://github.com/JetBrains/idea-gitignore/pull/933 解决方案:将ignore版本将为 4.5.4 我是将 4.5.5 降低为 4.5.4 正常显示文件夹了。...
多智能体协作架构模式:驱动传统公司向AI智能公司转型
前言 在数字化浪潮的席卷下,传统公司的运营模式正面临着前所未有的挑战。随着市场竞争的日益激烈,客户需求的快速变化以及业务复杂度的不断攀升,传统公司在缺乏 AI 技术支撑的情况下,暴露出诸多痛点。在决策层面,由于…...
新增md、html压缩文档上传,开放接口访问密钥改为多个,zyplayer-doc 2.4.7 发布啦!
zyplayer-doc是一款适合企业和个人使用的WIKI知识库管理工具,支持在线编辑富文本、Markdown、表格、Office文档、API接口、思维导图、Drawio以及任意的文本文件,专为私有化部署而设计,最大程度上保证企业或个人的数据安全,支持以内…...
w~Transformer~合集5
我自己的原文哦~ https://blog.51cto.com/whaosoft/12406495 #transformer~x1 太可怕了都到6了 太强~~ DeepMind 表示,他们提出的算法蒸馏(AD)是首个通过对具有模仿损失的离线数据进行顺序建模以展示上下文强化学习的方法。同时基于观察…...
Dubbo 3.x源码(29)—Dubbo Consumer服务调用源码(1)服务调用入口
基于Dubbo 3.1,详细介绍了Dubbo Consumer服务调用源码。 此前我们学习了Dubbo服务的导出和引入的源码,现在我们来学习Dubbo服务调用的源码。 此前的文章中我们讲过了最上层代理的调用逻辑(服务引用bean的获取以及懒加载原理):业务引入的接口…...
Linux内核同步机制:确保系统稳定与高效
在复杂而庞大的 Linux 系统世界中,内核就如同一位有条不紊的指挥官,协调着各种任务和资源的分配。而其中,内核同步机制则是确保整个系统稳定与高效运行的关键要素。想象一下,众多的进程和线程在 Linux 内核的舞台上同时登场&#…...
firebase简介
Firebase 是一个由 Google 提供的移动应用开发平台,旨在帮助开发者快速构建和管理应用程序。它提供了一系列强大的工具和服务,特别适合用于开发和管理 Web 和移动应用。以下是 Firebase 的一些核心功能: 实时数据库:Firebase 提供…...
利用Termux在安卓手机中安装 PostgreSQL
利用Termux在安卓手机中安装 PostgreSQL ⬇️Termux下载 点击下载 在 Termux 中安装 PostgreSQL 可以按照以下步骤进行: 1. 更新 Termux 包管理器 先更新软件包列表和已安装的软件包: pkg update && pkg upgrade -y2. 安装 PostgreSQL 使…...
windows安装WSL完整指南
本文首先介绍WSL,然后一步一步安装WSL及Ubuntu系统,最后讲解如何在两个系统之间访问和共享文件信息。通过学习该完整指南,能帮助你快速安装WSL,解决安装和使用过程中的常见问题。 理解WSL(Windows Subsystem for Linux…...