当前位置: 首页 > news >正文

python中的类与对象(2)

目录

一. 类的基本语法

二. 类属性的应用场景

三. 类与类之间的依赖关系

(1)依赖关系

(2)关联关系

(3)组合关系

四. 类的继承


一. 类的基本语法

先看一段最简单的代码:

class Dog():d_type = "二哈"  # 属性,类属性,类变量def say_hi(self):  # 在类里面的函数称为方法,第一个参数必须是self,代表实例本身print("hello,i am a dog,my type is",self.d_type)dog1 = Dog()  # 生成了一个实例
dog1.say_hi()  # 实例.方法
# hello,i am a dog,my name is 二哈
print(dog1.d_type)  # 实例.属性
# 二哈

这段代码定义了一个名为Dog的类,其中有一个类属性d_type设置为"二哈",以及一个实例方法say_hi用于打印一句话。然后创建了一个名为dog1的实例,并调用了say_hi方法和打印了实例属性d_type的值。

这里d_type是Dog类的属性(类属性/类变量/公共属性),从Dog类生成的对象都自带这个属性,如果我们想要定义每条狗的实例属性/实例变量/成员变量,如姓名,年龄,主人信息等,则使用__init__方法定义私有属性。我们并没有调用__init__(self,xxxx),但它会自动执行。因为它叫初始化函数,就是在实例化的时候,用来初始化一些数据的,比如初始化实例的名字、年龄等私有属性。

这些写在__init__(self,xxxx)里name,age等实例变量,跟公共属性d_type有什么区别呢?换句话说私有属性和共有属性有什么区别?区别就是,d_type是存在Dog类自己的内存里,self.name,self.age是存在每个实例自己的内存里。

class Dog():d_type = "二哈"def __init__(self, name, age):  # __init__函数称为初始化方法,构造方法,构造函数,在创建对象时自动调用# 第一个参数必须是self,代表实例本身# 要想把私有属性name, age真正的存到实例里,就要把2个值和实例绑定self.name = name  # 绑定__init__参数值到对象self.age = agedef say_hi(self):  # 第一个参数必须是selfprint("hello,i am a dog,my name is",self.name)dog1 = Dog("zhaopeng",4)  # 实例化对象,相当于__init__(dog1, "zhaopeng", 4)
dog1.say_hi()  # 相当于类中say_hi(dog1)
print(dog1.name, dog1.d_type)  # 打印对象的公共属性和私有属性
print(id(dog1.d_type), id(Dog.d_type))  # 公共属性,对象和类共享内存
dog1.name = "zhangsan"
dog1.d_type = "藏獒"
print(dog1.name, dog1.d_type)  # 对象属性可以在类外重写

这里需要重点搞明白self什么意思,我们先搞明白实例化的过程:

step 1,d=Dog("毛毛",2,"Alex"),会申请一会内存空间,指向变量名d

step 2,__init__这个初始化方法需要把接收到参数存下来, 存到这个d的内存空间里

step 3,传给初始化方法里的name,age想绑定到d的空间里,怎么存呢?就得把d的内存空间传到这个方法里,所以self就是用来接收d的地址的。d=Dog(“毛毛”,2,"AIex”)相当于Dog(d,"毛毛",2,"Aex”),那self.name=name 也就相当于d.name =name。我们在实例时没有手动传递d到Dog类里,只写了d=Dog(“毛毛”,2,"Alex”),是Python解释器帮你自动干了这个事。

到此,我们终于明白,原来self就是代表实例本身。实例化时python会自动把这个实例本身通过self参数传进去。接下来看第二个方法:

def say_hi(self):  # 第一个参数必须是selfprint("hello,i am a dog,my name is",self.name)

这里为何也要加入self参数?那是因为,你自己也看到了, 这个类的方法其实就是函数。函数被一个实例调用时,它需要知道是谁在调用它?函数内部要用到一些实例的属性的时候去哪里取呢?比如在say_hi函数里怎么取到d.name,d.age?只能你先传递给它。所以这就是为何类下的每个方法第一个参数都要是self,因为为了接收实例这个对象本身

*注意:self在实例化时自动将对象/实例本身传给__init__的第一个参数,你也可以给他起个别的名字,但是正常人都不会这么做,因为你瞎改别人就不认识。

二. 类属性的应用场景

仍然是通过一段代码说明如何调用和修改类属性,实例属性:

class People():nationality = "CN"  # nationality是公共属性def __init__(self, name, age, sex):  # name, age, sex是私有属性self.name = nameself.age = ageself.sex = sex
# 实例化
p1 = People("zhangsan",31,"M")
p2 = People("lisi",25,"M")
p3 = People("wangwu",21,"F")
# 调用公共属性
print(People.nationality)
print(p2.nationality)
# 调用实例属性
print(p1.age)  # 实例属性不能在类中调用,只能在实例中调用
print(People.age)  # AttributeError: type object 'People' has no attribute 'age'
# 修改私有属性
p1.age = 22  # 修改私有属性
print(p1.age)
# 修改公共属性
p1.nationality = "TW"  # 修改公共属性
print(p1.nationality)  # TW
print(p2.nationality,People.nationality)  # CN CN
# 修改p1的公共属性不改变People类,实际上是因为p1.nationality = "TW" 这句相当于为p1增加了实例属性nationality

搞懂了这个我们就可以重写上一节的引子,利用类方法来写:

class Dog():life_val = 100def __init__(self, name, d_type, attack_val):self.name = nameself.d_type = d_typeself.attack_val = attack_valdef bite(self, person):person.life_val -= self.attack_valprint("狗[%s]咬了[%s]一口,人掉血[%s],剩余血量[%s]"%(self.name, person.name, self.attack_val, person.life_val))class Person():life_val = 100def __init__(self, name, age, attack_val):self.name = nameself.age = ageself.attack_val = attack_valdef beat(self, dog):dog.life_val -= self.attack_valprint("人[%s]打了狗[%s]一棒,狗掉血[%s],剩余血量[%s]"%(self.name, dog.name, self.attack_val, dog.life_val))dog1 = Dog("FWE", "二哈", 10)
person1 = Person("zhaopeng", 25, 30)
dog1.bite(person1)
# 狗[FWE]咬了[zhaopeng]一口,人掉血[10],剩余血量[90]
person1.beat(dog1)
# 人[zhaopeng]打了狗[FWE]一棒,狗掉血[30],剩余血量[70]

三. 类与类之间的依赖关系

大千世界,万物之间皆有规则和规律。类和对象是对大千世界中的所有事物进行归类,事物之间存在着相对应的关系,类与类之间也同样如此。类与类中存在以下关系:

  • 依赖关系,狗和主人的关系。
  • 关联关系,你和你的女友之间的关系就是关联关系。
  • 聚合关系,电脑的各部件组戒完整的电脑,电脑里有CPU,硬盘,内存等。每个组件有自己的生命周期,电脑挂了,CPU还是好的,还是完整的个体。
  • 组合关系,比聚合还要紧密。比如人的大脑,心脏,各个器官,这些器官组合成一个人。这时人如果挂了,其他的东西也跟着挂。
  • 继承关系,类的三大特性之一,子承父业。
(1)依赖关系
class Dog():life_val = 100def __init__(self, name, d_type, attack_val, master):self.name = nameself.d_type = d_typeself.attack_val = attack_valself.master = master  # 人作为一个对象,和狗产生依赖关系self.say_hi()def say_hi(self):print("Hello, i am a dog, my name is [%s], and my master is [%s]"%(self.name, self.master.name))class Person():life_val = 100def __init__(self, name, age, attack_val):self.name = nameself.age = ageself.attack_val = attack_valdef beat(self, dog):dog.life_val -= self.attack_valprint("人[%s]打了狗[%s]一棒,狗掉血[%s],剩余血量[%s]"%(self.name, dog.name, self.attack_val, dog.life_val))person1 = Person("zhaopeng", 25, 30)
dog1 = Dog("FWE", "二哈", 10, person1)
(2)关联关系

构造男生和女生谈恋爱的关联:如果直接加一个partner实例属性:

class Person():def __init__(self, name, age, sex, partner):self.name = nameself.age = ageself.sex = sexself.partner = partnerperson1 = Person("zhaopeng", 25, "M", person2)  # NameError: name 'person2' is not defined.
person2 = Person("wangwu", 25, "F", person1)

因为实例化person1时,需要向里传person2,而此时person2还没创建出来,所以此时会报NameError。我们可以先把self.partner初始为None,然后再建立联系:

class Person():def __init__(self, name, age, sex):self.name = nameself.age = ageself.sex = sexself.partner = Noneperson1 = Person("zhaopeng", 25, "M")  
person2 = Person("wangwu", 25, "F")
person1.partner = person2  # 建立联系
person2.partner = person1
print(person1.partner.name,person2.partner.name)  # wangwu zhaopeng

这似乎解决了问题,但是:男生和女生的恋爱关系是一个双向的过程,这种写法我们必须同时写两句,来建立或者删除联系。如何只用一条指令就同时建立和删除双方之间的联系?一种思路是,单独写一个类relationship专门处理,存储2个人的关系状态,2个人在查自己的感情状态时,都到这个单独的实例里来查:

class Relationship():def __init__(self):self.relationship = []  # 生成空列表def make_couple(self, p1, p2):  # 建立恋爱关系self.relationship = [p1, p2]print("[%s]和[%s]确定了恋爱关系"%(p1.name, p2.name))class Person():def __init__(self, name, age, sex):self.name = nameself.age = ageself.sex = sexperson1 = Person("zhaopeng", 25, "M")  
person2 = Person("wangwu", 25, "F")
relationship = Relationship()
relationship.make_couple(person1, person2)
# [zhaopeng]和[wangwu]确定了恋爱关系

现在我们再做一点改进,我们希望能在人的属性里面查到自己的男朋友/女朋友,这里就需要对Person类进行修改:

class Relationship():def __init__(self):self.relationship = []  # 生成空列表def make_couple(self, p1, p2):  # 建立恋爱关系self.relationship = [p1, p2]print("[%s]和[%s]确定了恋爱关系"%(p1.name, p2.name))class Person():def __init__(self, name, age, sex, relation):self.name = nameself.age = ageself.sex = sexself.relation = relation  # 把对象是谁加到实例属性里面relationship = Relationship()
person1 = Person("zhaopeng", 25, "M", relationship)  
person2 = Person("wangwu", 25, "F", relationship)
relationship.make_couple(person1, person2)
print(person1.relation.relationship)
# 这里person1.relation其实就是之前建立的relationship = Relationship()
# 然后再.relationship输出的是那个列表

但是这样显示是个列表,我们再优化Relationship类,使得它更完整:

class Relationship():def __init__(self):self.relationship = []  # 生成空列表def make_couple(self, p1, p2):  # 建立恋爱关系self.relationship = [p1, p2]print("[%s]和[%s]确定了恋爱关系"%(p1.name, p2.name))def get_partner(self, person):  # 找寻另一半# 这里还要传入person是因为,self.relationship列表里有两个人,需要确定具体是显示哪一个的另一半if len(self.relationship) == 0:print("[%s]没有对象!" % person.name)else:for i in self.relationship:if i != person:print("[%s]的对象是[%s]" % (person.name, i.name))def break_up(self):  # 模拟分手if len(self.relationship) == 0:print("两人已经分手了")else:print("[%s]和[%s]分手了"%(self.relationship[0].name, self.relationship[1].name))self.relationship = []class Person():def __init__(self, name, age, sex, relation):self.name = nameself.age = ageself.sex = sexself.relation = relation  # 把对象是谁加到实例属性里面# 实例化
relationship = Relationship()
person1 = Person("zhaopeng", 25, "M", relationship)  
person2 = Person("wangwu", 25, "F", relationship)relationship.make_couple(person1, person2)  # 建立恋爱关系
# [zhaopeng]和[wangwu]确定了恋爱关系
person1.relation.get_partner(person1)  # 找到person1的另一半是谁
# [zhaopeng]的对象是[wangwu]
person1.relation.break_up()  # 分手
# [zhaopeng]和[wangwu]分手了
person2.relation.get_partner(person2)  # 此时获取person2的对象,显示无
# [wangwu]没有对象!

以上我们就同步了两个人的恋爱关系,同时导演了一部恋爱到分手的大戏(大雾)。

(3)组合关系
# 组合关系:由一堆组件构成一个完整的实体,组件本身独立但又不能自己运行,必须跟宿主组合在一起运行
# 这里的武器类就必须依赖人来运行,人实例化对象的同时也实例化武器
class Weapon():def gun(self, dog):self.attack_val = 50self.name = "枪"dog.life_val -= self.attack_valprint("[%s]被[%s]攻击了,掉血[%s],还剩血量[%s]"%(dog.name, self.name, self.attack_val, dog.life_val))def knife(self, dog):self.attack_val = 20self.name = "匕首"dog.life_val -= self.attack_valprint("[%s]被[%s]攻击了,掉血[%s],还剩血量[%s]"%(dog.name, self.name, self.attack_val, dog.life_val))def AK47(self, dog):self.attack_val = 80self.name = "AK47"dog.life_val -= self.attack_valprint("[%s]被[%s]攻击了,掉血[%s],还剩血量[%s]"%(dog.name, self.name, self.attack_val, dog.life_val))class Person():life_val = 100def __init__(self, name, age, sex):self.name = nameself.age = ageself.sex = sexself.weapon = Weapon()  # 把对象是谁加到实例属性里面class Dog():life_val = 100def __init__(self, name, d_type, attack_val):self.name = nameself.d_type = d_typeself.attack_val = attack_valdef bite(self, person):person.life_val -= self.attack_valprint("狗[%s]把人[%s]咬了,人掉血[%s],现在人剩余血量[%s]"%(self.name, person.name, self.attack_val, person.life_val))dog1 = Dog("zhangsan", "二哈", 5)
person1 = Person("Alex", 25, "M")
person1.weapon.gun(dog1)
# [zhangsan]被[枪]攻击了,掉血[50],还剩血量[50]
dog1.bite(person1)
# 狗[zhangsan]把人[Alex]咬了,人掉血[5],现在人剩余血量[95]

四. 类的继承

现在我们写人和猫。众所周知人和猫有很多相似之处,如它们都有姓名,性别,有2只眼睛,都会呼吸,会拉粑粑;也有不同之处,例如人会看书,猫会挠人的沙发,写成代码就是这样的:

class Person():def __init__(self, name, sex):self.name = nameself.sex = sexself.num_eyes = 2self.has_tails = Falsedef breathe(self):print(self.name,"在呼吸")def poop(self):print(self.name,"在拉粑粑")def read(self):print(self.name,"在读书")class Cat():def __init__(self, name, sex):self.name = nameself.sex = sexself.num_eyes = 2self.has_tails = Truedef breathe(self):print(self.name,"在呼吸")def poop(self):print(self.name,"在拉臭臭")def scratch_sofa(self):print(self.name,"在挠主人的沙发")person1 = Person("Alex", "M")
cat1 = Cat("MiaoMiao", "F")
person1.poop()
cat1.scratch_sofa()

现在我们要实现代码的重复利用,就可以使用类的继承,首先提取其公共部分写成mammul类:

class Mammul():def __init__(self, name, sex):self.name = nameself.sex = sexself.num_eyes = 2def breathe(self):print(self.name,"在呼吸")def poop(self):print(self.name,"在拉粑粑")

然后重写Person()和Cat()类,在括号内填写继承的父类名称,这个时候父类的__init__构造函数,还有breathe和poop方法都被继承了过来,虽然我们没有在Person()和Cat()类下面写他们。现在创建一个猫猫实例,由于Cat类没有__init__构造函数,系统会自动调用它继承的父类Mammul的构造函数,让实例具有姓名,性别,眼睛数等属性(我们先不写实例属性has_tails):

class Person(Mammul):def read(self):print(self.name,"在读书")class Cat(Mammul):def scratch_sofa(self):print(self.name,"在挠主人的沙发")person1 = Person("Alex", "M")
cat1 = Cat("MiaoMiao", "F")
person1.poop()  # Alex 在拉粑粑
cat1.scratch_sofa()  # MiaoMiao 在挠主人的沙发

然而,如果我们在子类里面写了专属于人的拉屎方法,就会优先调用子类的,没有的话才去父类找同名方法用:

class Mammul():def __init__(self, name, sex):self.name = nameself.sex = sexself.num_eyes = 2def breathe(self):print(self.name,"在呼吸")def poop(self):print(self.name,"在拉粑粑")class Person(Mammul):def poop(self):print(self.name,"在拉shi")def read(self):print(self.name,"在读书")person1 = Person("Alex", "M")
person1.poop()  # Alex 在拉shi

注意到我们还没有写实例属性has_tails,而如果在子类直接写:

class Person(Mammul):def __init__(self):self.has_tails = Falsedef poop(self):print(self.name,"在拉shi")def read(self):print(self.name,"在读书")

则根据前面的,系统会直接调用子类的__init__构造函数,所以父类的姓名,性别,2只眼属性都没办法继承过来,为了解决这个问题,标准写法应该加上super(),它也是一个类,既不是方法也不是函数。super会返回当前类的父类,在子类的构造函数中写super().__init__就会调用父类的构造函数。所以本节最开始的代码优化后可以这样写:

class Mammul():def __init__(self, name, sex):self.name = nameself.sex = sexself.num_eyes = 2def breathe(self):print(self.name,"在呼吸")def poop(self):print(self.name,"在拉粑粑")class Person(Mammul):def __init__(self, name, sex):super().__init__(name, sex)self.has_tails = Falsedef read(self):print(self.name,"在读书")class Cat(Mammul):def __init__(self, name, sex):super().__init__(name, sex)self.has_tails = Truedef scratch_sofa(self):print(self.name,"在挠主人的沙发")person1 = Person("Alex", "M")
cat1 = Cat("MiaoMiao", "F")
person1.poop()  # Alex 在拉shi
cat1.scratch_sofa()  # MiaoMiao 在挠主人的沙发
print(cat1.num_eyes)  # 2

相关文章:

python中的类与对象(2)

目录 一. 类的基本语法 二. 类属性的应用场景 三. 类与类之间的依赖关系 (1)依赖关系 (2)关联关系 (3)组合关系 四. 类的继承 一. 类的基本语法 先看一段最简单的代码: class Dog():d_…...

Android横竖屏切换configChanges=“screenSize|orientation“避免activity销毁重建,Kotlin

Android横竖屏切换configChanges"screenSize|orientation"避免activity销毁重建,Kotlin 如果不在Androidmanifest.xml设置activity的: android:configChanges"screenSize|orientation" 那么,每次横竖屏切换activity都会…...

【C语言基础】:操作符详解(二)

文章目录 操作符详解一、上期扩展二、单目操作符三、逗号表达式四、下标访问[]、 函数调用()五、结构成员访问操作符六、操作符的属性:优先级、结合性1. 优先级2. 结合性 操作符详解 上期回顾:【C语言基础】:操作符详解(一) 一、上期扩展 …...

模型训练基本结构

project_name/ │ ├── data/ │ ├── raw/ # 存放原始数据 │ ├── processed/ # 存放预处理后的数据 │ └── splits/ # 存放数据集划分(训练集、验证集、测试集等) │ ├── noteboo…...

Redis 数据结构详解:底层实现与高效使用场景

String(字符串) 底层实现细节: 动态字符串(SDS): SDS相比于C语言的原生字符串,提供了自动内存管理和预分配机制。当字符串长度增加时,SDS会预先分配额外的空间,以减少内存重新分配…...

Vue2:router-link的replace属性

一、情景说明 我们在用浏览器访问网站的时候 知道浏览器会记录访问的历史路径,从而,可以退回到之前的页面 那么,Vue项目中的路由组件,通过router-link跳转,也是可以退回的 这里,我们用replace来屏蔽退回的…...

普中51单片机(DS18B20温度传感器)

DS18B20温度传感器原理 内部结构 64位(激)光刻只读存储器 光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列号。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身…...

2.23C语言学习

P1480 A/B Problem 高精度数除以非高精度数 #include<bits/stdc.h> long long b[66660],c[66660],sum0; char a[66660]; int n; int main(){scanf("%s",a);scanf("%d",&n);int lenstrlen(a);for(int i1;i<len;i){b[i]a[i-1]-0;}for(int i1;…...

origin/master master

这里实际上有三件事&#xff1a;origin master是两件事&#xff0c;origin/master一件事。共计三件事。 两个分支&#xff1a; master 是一个本地分支 origin/master是远程分支&#xff08;它是名为“origin” 的远程分支的本地副本&#xff0c;名为“master”&#xff09; 一个…...

【数据结构】时间复杂度与空间复杂度

目录 时间复杂度 空间复杂度 时间复杂度 算法的时间复杂度并不是指一个代码运行时间的快慢&#xff0c;因为在不同机器上运行的时间肯定不同&#xff0c;因此算法的时间复杂度指的是基本操作的执行次数&#xff0c;他是一个数学意义上的函数。这个函数并不是C语言中那种函数&…...

分别使用js与jquery写 单击按钮时出现内容 点击删除按钮不会再向下出现

HTML部分 <body><button id"btn">单击我</button><button id"delAll">删除所有事件</button><div id"test"></div> </bady>jQuery代码 <script type"text/JavaScript" src"…...

【Git】Git命令的学习与总结

本文实践于 Learn Git Branching 这个有趣的 Git 学习网站。在该网站&#xff0c;可以使用 show command 命令展示所有可用命令。你也可以直接访问网站的sandbox&#xff0c;自由发挥。 一、本地篇 基础篇 git commit git commit将暂存区&#xff08;staging area&#xff…...

前端工程化面试题 | 18.精选前端工程化高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

大公司的工程师是怎么废掉的...

大家好&#xff0c;我是砖一。 此文作者以嵌入式工程师为基本视角&#xff0c;细说了从初阶到高阶工程师的资质需求&#xff0c;并提示工程师职业道路上的陷阱。可供参考。 一&#xff0c;基础知识 一个嵌入式工程师&#xff0c;很多都是从51单片机或者STM32单片机开始&…...

将yolov8权重文件转为onnx格式并在c#中使用

yolo模型转ONNX 在yolov8中&#xff0c;我们将训练结果的.pt权重文件转换为onnx格式只需要使用ultralytics库中的YOLO类&#xff0c;使用pip安装ultralytics库&#xff0c;然后执行下面python代码 from ultralytics import YOLO# 加载YOLOv8模型 model YOLO("best.pt&q…...

在Spring Boot启动时禁止自动配置数据源相关的组件、@SpringBootApplication

一、SpringBootApplication(exclude {DataSourceAutoConfiguration.class})注解 在Spring Boot启动时禁止自动配置数据源相关的组件。 SpringBootApplication(exclude {DataSourceAutoConfiguration.class})注解的使用案例 这个注解通常应该写在微服务项目的主启动类上&…...

程序人生:不积跬步无以致千里

程序人生 癸卯年冬月&#xff0c;往渭南韩城&#xff0c;拜访司马迁祠。入门攀爬而上&#xff0c;至人有困乏之时&#xff0c;抬头现&#xff1a;高山仰止。归路下山&#xff0c;始现三官洞&#xff0c;遥想西汉时三官洞&#xff0c;出口处刻意再拜别&#xff1a;高山仰止。泪…...

通过二叉树例题深入理解递归问题

目录 引入&#xff1a; 例1&#xff1a;二叉树的前序遍历&#xff1a; 例2&#xff1a; N叉树的前序遍历&#xff1a; 例3&#xff1a;二叉树的最大深度&#xff1a; 例4&#xff1a;二叉树的最小深度 例5&#xff1a;N叉树的最大深度&#xff1a; 例6&#xff1a;左叶子…...

【Android 协程常见用法】

我们这里只讲解一下&#xff0c;协程在Android项目中常见用法&#xff0c;原理知识不在进行说明了。 依赖 lifecycleScope只能在Activity、Fragment中使用&#xff0c;会绑定Activity和Fragment的生命周期。依赖库&#xff1a; implementation androidx.lifecycle:lifecycle…...

python 进程笔记一 (概念+示例代码)

1. 进程的概念 进程是资源分配的最小单位&#xff0c;也是线程的容器&#xff0c;线程&#xff08;python 线程 &#xff08;概念示例代码&#xff09;&#xff09;是CPU调度的基本单位&#xff0c;一个进程包括多个线程。 程序&#xff1a;例如xxx.py是一个程序 进程&#xf…...

各中间件数据库默认访问端口总结

说明 在生态丰富的开发环境下&#xff0c;我们常常需要接触很多中间件产品&#xff0c;中间件默认的连接端口以及可视化ui访问端口也时不时的需要用到&#xff0c;这里循序渐进做好登记&#xff0c;以备查阅&#xff01; 中间件/数据库名称默认端口管理台端口默认账号密码rabbi…...

鲲鹏arm64架构下安装KubeSphere

鲲鹏arm64架构下安装KubeSphere 官方参考文档: https://kubesphere.io/zh/docs/quick-start/minimal-kubesphere-on-k8s/ 在Kubernetes基础上最小化安装 KubeSphere 前提条件 官方参考文档: https://kubesphere.io/zh/docs/installing-on-kubernetes/introduction/prerequi…...

python 函数-02-返回值注释格式

01 函数返回值 1&#xff09;python中函数可以没有返回值&#xff0c;也可以有通过return的方式 – 【特殊性&#xff0c;区别于java c#等】 2&#xff09;返回值可以是一个或者多个&#xff0c;多个时通过逗号隔开 – 【特殊性&#xff0c;区别于java c#等】 3&#xff09;多…...

【前端素材】推荐优质后台管理系统Upcube平台模板(附源码)

一、需求分析 后台管理系统在多个层次上提供了丰富的功能和细致的管理手段&#xff0c;帮助管理员轻松管理和控制系统的各个方面。其灵活性和可扩展性使得后台管理系统成为各种网站、应用程序和系统不可或缺的管理工具。 当我们从多个层次来详细分析后台管理系统时&#xff0…...

可视化 RAG 数据 — 用于检索增强生成的 EDA

原文地址&#xff1a;Visualize your RAG Data — EDA for Retrieval-Augmented Generation 2024 年 2 月 8 日 Github&#xff1a;https://github.com/Renumics/rag-demo/blob/main/notebooks/visualize_rag_tutorial.ipynb 为探索Spotlight中的数据&#xff0c;我们使用Pa…...

数学建模论文、代码百度网盘链接

1.[2018中国大数据年终总决赛冠军] 金融市场板块划分与轮动规律挖掘与可视化问题 2.[2019第九届MathorCup数模二等奖] 数据驱动的城市轨道交通网络优化策略 3.[2019电工杯一等奖] 露天停车场停车位的优化设计 4.[2019数学中国网络数模一等奖] 基于机器学习的保险业数字化变革…...

mysql 迁移-data目录拷贝方式

背景&#xff1a;从服务器进水坏掉&#xff0c;50多G的数据库要重新做主从&#xff0c;但以导入导出的方式太慢&#xff0c;简直是灾难性的&#xff0c;一夜都没好&#xff0c;只好想到了拷贝mysql数据文件的方式 拷贝的数据文件的前提 1.数据库版本必需一致&#xff08;可以…...

学习 LangChain 的 Passing data through

学习 LangChain 的 Passing data through 1. Passing data through2. 示例 1. Passing data through RunnablePassthrough 允许不改变或添加额外的键来传递输入。这通常与 RunnableParallel 结合使用&#xff0c;将数据分配给映射中的新键。 RunnablePassthrough() 单独调用&…...

C# OpenVINO PaddleSeg实时人像抠图PP-MattingV2

目录 效果 项目 代码 下载 C# OpenVINO 百度PaddleSeg实时人像抠图PP-MattingV2 效果 项目 代码 using OpenCvSharp; using Sdcb.OpenVINO; using System; using System.Diagnostics; using System.Drawing; using System.Security.Cryptography; using System.Text; us…...

【Android 11】AOSP Settings WIFI随机MAC地址功能

AOSP Settings WIFI随机MAC地址功能 背景 最近客户提出了想要实现随机WIFIMAC地址的功能&#xff08;我们默认WIFI的MAC地址是固定的&#xff09;。网上搜到了一篇不错的文章&#xff0c;本次改动也是基于这个来写的。 由于客户指定使用的settings是AOSP的&#xff0c;所以在…...

公司注册后怎么做网站/自己怎么搭建网站

说明&#xff1a; EXP-00091: 出口可疑的统计。 EXP-00091: Exporting questionable statistics. 产生&#xff1a; 在数据库的服务器端和客户端字符集不同的情况下&#xff0c;导出 (dump) 数据库表时&#xff0c;会产生这个错误。虽然产生这个错误&#xff0c;但好像对导…...

网站ip pv/免费下载百度并安装

医嘱的查对与执行作为护理工作的基础和重点&#xff0c;要求护士熟悉掌握&#xff0c;我们一起看一下:一、医嘱查对制度(1)处理长期医嘱或临时医嘱时要记录处理时间&#xff0c;执行者签全名&#xff0c; 若有疑问必须问清楚后方可执行。各班医嘱均由当班护士两名进行查对。(2)…...

注册网站会员需要详细/广东互联网网络营销推广

题目描述 暑假期间&#xff0c;小龙报名了一个模拟野外生存作战训练班来锻炼体魄&#xff0c;训练的第一个晚上&#xff0c;教官就给他们出了个难题。由于地上露营湿气重&#xff0c;必须选择在高处的树屋露营。小龙分配的树屋建立在一颗高度为N1尺&#xff08;N为正整数&#…...

wordpress 删除表/国产搜什么关键词最好看

本来8号可以过来的&#xff0c;结果because 家home事&#xff0c;不得已晚来了三天。全当报知遇之恩&#xff0c;一天顶一年的了。三年后&#xff0c;再说。三年死合同。 MySQL数据库基础学习&#xff0c; 之前work 用的SqlServer&#xff0c;new company 用的MySQL&#xff0…...

广东网站优化/网上广告宣传怎么做

前几天写了个ffmpeg版本&#xff0c;今天特意抽空改写个vlc版本&#xff0c;之前vlc播放视频后&#xff0c;被接管了不能识别到鼠标&#xff0c;需要重新编译vlc源码得到支持鼠标消息的版本。/*** vlc视频播放类 作者:feiyangqingyun(QQ:517216493) 2018-5-2* 1:多线程实时播放…...

南宁培训网站建设/百度品牌推广

学习目标: 了解事件处理概念监听事件处理模型事件与事件监听接口实现事件监听方式回调事件处理模型常见的事件回调方法Handler类功能与用法Handler更新程序界面一、监听概念 再用户操作动作时,需要为用户的动作提供响应机制&#xff0c;这种机制就是事件处理 Android提供两套事…...