青少年编程与数学 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. 修…...

CosyVoice /F5-TTS /GPT-SoVITS /Fish-Speech 开源语音克隆与文本转语音(TTS)项目的对比整理
四个主流开源语音克隆与文本转语音(TTS)项目的对比整理,基于公开资料与实测反馈总结: 项目CosyVoice F5-TTS GPT-SoVITS Fish-Speech 核心技术双向流式语音合成,支持离线与流式一体化建模基于流匹配的ConvNeXt文本表示…...
MySQL基于binlog和gtid主从搭建方案
MySQL基于binlog和gtid主从搭建方案 一.主库配置 1.1 确认 binlog 是否开启 SHOW VARIABLES LIKE %log_bin%; 1.2 创建日志目录并设置权限 mkdir -p /opt/mysql/log_bin chown -R mysql:mysql /usr/local/mysql chmod -R 755 /usr/local/mysql 1.3 修改 my.cnf 配置文件 …...

5 计算机网络
5 计算机网络 5.1 OSI/RM七层模型 5.2 TCP/IP协议簇 5.2.1:常见协议基础 一、 TCP是可靠的,效率低的; 1.HTTP协议端口默认80,HTTPSSL之后成为HTTPS协议默认端口443。 2.对于0~1023一般是默认的公共端口不需要注册,1024以后的则需…...

Vim跳转文件及文件行结束符EOL
跳转文件 gf 从当前窗口打开那个文件的内容,操作方式:让光标停在文件名上,输入gf。 Ctrlo 从打开的文件返回之前的窗口 Ctrlwf 可以在分割的窗口打开跳转的文件,不过在我的实验不是次次都成功。 统一行尾格式 文本文件里存放的…...

智能理解 PPT 内容,快速生成讲解视频
当我们想根据一版 PPT 制作出相对应的解锁视频时,从撰写解锁词,录制音频到剪辑视频,每一个环节都需要投入大量的时间和精力,本方案将依托于阿里云函数计算 FC 和百炼模型服务,实现从 PPT 到视频的全自动转换࿰…...
【鸿蒙开发】第二十四章 AI - Core Speech Kit(基础语音服务)
目录 1 简介 1.1 场景介绍 1.2 约束与限制 2 文本转语音 2.1 场景介绍 2.2 约束与限制 2.3 开发步骤 2.4 设置播报策略 2.4.1 设置单词播报方式 2.4.2 设置数字播报策略 2.4.3 插入静音停顿 2.4.4 指定汉字发音 2.5 开发实例 3 语音识别 3.1 场景介绍 3.2 约束…...

Java/Kotlin双语革命性ORM框架Jimmer(一)——介绍与简单使用
概览 Jimmer是一个Java/Kotlin双语框架 包含一个革命性的ORM 以此ORM为基础打造了一套综合性方案解决方案,包括 DTO语言 更全面更强大的缓存机制,以及高度自动化的缓存一致性 更强大客户端文档和代码生成能力,包括Jimmer独创的远程异常 …...
番外02:前端八股文面试题-CSS篇
一:CSS基础 1:CSS选择器及其优先级 2:display的属性值及其作用 属性值作用none元素不显示,并且会从文档流中移除block块类型,默认元素为父元素宽度,可设置宽高,换行显示inline行内元素类型&a…...
Redis Copilot:基于Redis为AI打造的副驾工具
我们最近发布了Redis Copilot,以帮助开发者更快地使用Redis构建应用。我们的使命是使应用程序快速运行,并简化构建过程。为此,Redis Copilot作为您的AI助手,能够让您更迅速地完成与Redis相关的任务。您今天就可以在Redis Insight中…...
JavaScript遍历对象的7种方式
注:纯手打,如有错误欢迎评论区交流! 转载请注明出处:https://blog.csdn.net/testleaf/article/details/145523427 编写此文是为了更好地学习前端知识,如果损害了有关人的利益,请联系删除! 本文章…...
如何避免NACK重传风暴
策略 1,10 次 NACK 模块对同一包号的最大请求次数,超过这个最大次数限制,会把该包号移出 nack_list,放弃对该包的重传请求。 策略 2,20 毫秒 NACK 模块每隔 20 毫秒批量处理 nack_list,获取一批请求包号…...

并发工具CountDownLatch、CyclicBarrier、Semaphore
文章目录 学习链接CountDownLatchCountDownLatch类的作用类的主要方法介绍图解await和countDown方法两个典型用法注意点总结示例CountDownLatchDemo1CountDownLatchDemo2CountDownLatchDemo1And2 CyclicBarrierCyclicBarrier循环栅栏CyclicBarrier和CountDownLatch的区别示例Cy…...

十二. Redis 集群操作配置(超详细配图,配截图详细说明)
十二. Redis 集群操作配置(超详细配图,配截图详细说明) 文章目录 十二. Redis 集群操作配置(超详细配图,配截图详细说明)1. 为什么需要集群-高可用性2. 集群概述(及其搭建)3. Redis 集群的使用4. Redis 集群故障恢复5. Redis 集群的 Jedis 开发(使用Java…...

网络工程师 (26)TCP/IP体系结构
一、层次 四层: 网络接口层:TCP/IP协议的最底层,负责网络层与硬件设备间的联系。该层协议非常多,包括逻辑链路和媒体访问控制,负责与物理传输的连接媒介打交道,主要功能是接收数据报,并把接收到…...

TensorFlow域对抗训练DANN神经网络分析MNIST与Blobs数据集梯度反转层提升目标域适应能力可视化...
全文链接:https://tecdat.cn/?p39656 本文围绕基于TensorFlow实现的神经网络对抗训练域适应方法展开研究。详细介绍了梯度反转层的原理与实现,通过MNIST和Blobs等数据集进行实验,对比了不同训练方式(仅源域训练、域对抗训练等&am…...
保姆级教程--DeepSeek部署
以DeepSeek-R1或其他类似模型为例,涵盖环境配置、代码部署和运行测试的全流程: 准备工作 1. 注册 Cloud Studio - 访问 [Cloud Studio 官网](https://cloudstudio.net/),使用腾讯云账号登录。 - 完成实名认证(如需长期使用…...
机器学习之心的创作纪念日
机缘 今天,是我成为创作者的第1460天。 在这段时间里,获得了很大的成长。 虽然日常忙碌但还在坚持创作、初心还在。 日常 创作已经成为我生活的一部分,尤其是在我的工作中,创作是不可或缺的,创作都是核心能力之一。…...
VeryReport和FastReport两款报表软件深度分析对比
在当今数据驱动的商业环境中,报表软件已经成为企业管理和数据分析的重要工具。无论是中小型企业还是大型企业,都需要依赖高效的报表工具来快速生成、分析和展示数据。市面上有许多报表工具,其中VeryReport和FastReport是两款备受关注的报表软…...
libtorch的c++,加载*.pth
一、转换模型为TorchScript 前提:python只保存了参数,没存结构 要在C中使用libtorch(PyTorch的C接口),读取和加载通过torch.save保存的模型( torch.save(pdn.state_dict()这种方式,只保存了…...

去除 RequestTemplate 对象中的指定请求头
目录 目标实现获取 RequestTemplate 对象去除请求头 目标 去除 RequestTemplate 对象中的指定请求头,如 Authorization 等。 实现 获取 RequestTemplate 对象 获取 RequestTemplate 对象的方式有很多种,如 通过 feign 虚拟客户端配置器: …...

b s架构 网络安全 网络安全架构分析
目录 文章目录 目录网络安全逻辑架构 微分段(Micro-segmentation)防火墙即服务(Firewall asa Service ,FWaaS)安全网络网关(Secure web gateway)净化域名系统(Sanitized Domain Na…...

【DeepSeek论文精读】2. DeepSeek LLM:以长期主义扩展开源语言模型
欢迎关注[【AIGC论文精读】](https://blog.csdn.net/youcans/category_12321605.html)原创作品 【DeepSeek论文精读】1. 从 DeepSeek LLM 到 DeepSeek R1 【DeepSeek论文精读】2. DeepSeek LLM:以长期主义扩展开源语言模型 【DeepSeek论文精读】3. DeepS…...
Spring Boot和SpringMVC的关系
Spring Boot和SpringMVC都是Spring框架的一部分,但它们的作用和使用方式有所不同。为了更好地理解它们的关系,我们可以从以下几个方面进行详细说明: 1. SpringBoot的作用 SpringBoot是一个开源框架,它的目的是简化Spring应用程序…...

java基础4(黑马)
一、方法 1.定义 方法:是一种语法结构,它可以把一段代码封装成一个功能,以便重复使用。 方法的完整格式: package cn.chang.define;public class MethodDemo1 {public static void main(String[] args) {// 目标:掌…...

nodejs - vue 视频切片上传,本地正常,线上环境导致磁盘爆满bug
nodejs 视频切片上传,本地正常,线上环境导致磁盘爆满bug 原因: 然后在每隔一分钟执行du -sh ls ,发现文件变得越来越大,即文件下的mp4文件越来越大 最后导致磁盘直接爆满 排查原因 1、尝试将m3u8文件夹下的所有视…...
注意力机制(Attention Mechanism)和Transformer模型的区别与联系
注意力机制(Attention Mechanism) 和 Transformer 模型 是深度学习领域中的两个重要概念,虽然它们紧密相关,但有着明显的区别。下面我们将从 定义、作用、结构 和 应用 等多个维度来分析这两者的区别与联系。 1. 定义 注意力机制(Attention Mechanism): 注意力机制是一…...

C++,设计模式,【单例模式】
文章目录 一、模式定义与核心价值二、模式结构解析三、关键实现技术演进1. 基础版(非线程安全)2. 线程安全版(双重检查锁)3. 现代C++实现(C++11起)四、实战案例:全局日志管理器五、模式优缺点深度分析✅ 核心优势⚠️ 潜在缺陷六、典型应用场景七、高级实现技巧1. 模板化…...

C++:类和对象初识
C:类和对象初识 前言类的引入与定义引入定义类的两种定义方法1. 声明和定义全部放在类体中2. 声明和定义分离式 类的成员变量命名规则 类的访问限定符及封装访问限定符封装 类的作用域与实例化类的作用域类实例化实例化方式: 类对象模型类对象的大小存储…...

官网下载Redis指南
1.访问官网 https://redis.io/downloads/#stack 2.点击redis图标 拉到下面点击download 在新页面拉到最下面,点击install from source 找到需要的大版本后,点击releases page 最后点击下载需要的版本号即可...