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

第二阶段第一章——面向对象

前言

学习了这么久Python(呃其实也没多久差不多两周),可能有小伙伴说我废了,两周才学这么点,咋说呢,我曾经也是急于求成,做任何事情都是急于求成,比如我喜欢一个人我就想马上跟她在一起,我学习Java为了拉进度并没有做笔记,学习MySQL高级的内容(比如主从复制和它的底层原理这些)也是没有做笔记,学习Linux也是没有做笔记。很后悔,所以我才开始写下博客,当然这只是写博客的一部分原因。还有一些原因是我想在互联网上发疯,反正也没有人认识我是谁哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈

回归正题,面向对象,无论是Java还是C++,这一点都是很重要的一点,Python虽然是一个解释性语言,但是在设计之初就是面向对象而设计的。

对于初学一门编程语言的同学就会问啦,什么是面向对象呀?

答:面向你的男/女朋友编程  即为面向对象 \(^o^)/~( 疯狂手动俏皮)

        面向对象是一种程序设计思想,它将程序中的数据和操作数据的方法组合成一个对象,通过对象之间的交互来实现程序的功能。面向对象的程序设计思想主要包括封装、继承和多态三个方面。

封装使得对象的内部实现对外部隐藏,只有通过公共接口才能访问对象的属性和方法,从而保证了对象的安全性和可靠性。继承让子类可以复用父类的属性和方法,并且可以在子类中新增或重写父类的属性和方法,从而简化了程序的设计和维护。多态则使得同一个方法可以具有多种不同的行为,增加了程序的灵活性和可扩展性。

这一章主要有以下内容

1.初识对象

2.成员方法

3.类和对象

4.构造方法

5.其他内置方法

6.封装

7.继承

8.类型注解

9.多态

10.综合案例

GOGOGO!!!!!


1.初识对象

代码示例:

"""初识面向对象
"""
# 1.设计一个类(类比:生活中设计一张登记表)
class Student:name = Nonesex = Nonenationality = Nonenative_place = Noneage = None
# 2.创建一个对象(类比:生活中打印一张登记表)
stu_1 = Student()
# 3.对象属性进行赋值(类比:生活中填写一张登记表)
stu_1.name = "瓦坎达!!!"
stu_1.sex = "男"
stu_1.nationality = "地球瓦坎达"
stu_1.native_place = "地球"
stu_1.age = "19"
# 4.获取对象中记录的信息
print(stu_1.name)
print(stu_1.sex)
print(stu_1.nationality)
print(stu_1.native_place)
print(stu_1.age)


2.成员方法

(1)成员方法的概念

通过上面的,你已经了解了如何使用了,那么就来系统的了解一下吧

类里面包含两个东西

属性我们在上面已经见识过了

那么类里面的属性又是什么呢?

也就是类里见提供的函数(方法)了

也就是===》》成员方法

(2)成员方法的创建

那么该如何来创建成员方法呢?、

和我们曾今创建方法的方式差不多,但是有一个小差别

注意:传参时,可以当做self并不存在,不必理会

(3)代码示例

"""成员方法
"""# 定义一个带有成员方法的类
class Student:name = Nonedef say_hi(self):print(f"大家好,我是{self.name},o(* ̄▽ ̄*)ブ")def say_hello(self, msg):print(f"大家好,我是:{self.name},{msg}")stu = Student()
stu.name = "lyy"stu.say_hi()stu2 = Student()
stu2.name = "wgg"
stu2.say_hello("(*´▽`)ノノ")


3.类和对象

这里来深刻的体会一下面向对象的思想

类是图纸,对象是实现 

代码实现

"""体会面向对象编程
"""
import winsound# 设计一个闹钟类
class Clock:id = Noneprice = Nonedef ring(self):winsound.Beep(2000, 3000)clock1 = Clock()
clock1.id = "001"
clock1.price = 812
clock1.ring()print(f"闹钟id:{clock1.id},价格:{clock1.price}")clock2 = Clock()
clock2.id = "002"
clock2.price = 313
clock2.ring()
print(f"闹钟id:{clock1.id},价格:{clock1.price}")


4.构造方法

(1)使用构造方法

构造方法还是挺简单的,简化了赋值操作

其实这里的self,学到这里就可以发现和Java里面的  this关键词有点类似了

"""演示构造方法
""""构造方法的名称为::__init__"
class Student:# 这里写不写无所吊谓name = Nonesex = Noneage = Nonedef __init__(self, name, sex, age):self.name = nameself.sex = sexself.age = ageprint(f"student类创建了一个类")stu = Student("lyy", "男", 19)
print(stu.name)
print(stu.age)
print(stu.sex)

(2)练习案例:学生信息录入

代码示例

"""练习案例,学生信息录入
"""
class Student:name = Noneage = Noneaddress = Nonedef __init__(self, name, age, address):self.name = nameself.age = ageself.address = addressprint(f"学生信息录入完成:【姓名:{name},年龄:{age},地址{address}】")# 共需要录入10个学生
stu_num = int(input("请输入共需要录入多少学生"))for stu in range(1, stu_num + 1):stu_name = input("请输入学生姓名")stu_age = input("请输入年龄")stu_address = input("请输入地址")stu = Student(stu_name, stu_age, stu_address)


5.其他内置方法(魔术方法)

(1)__str__字符串方法

但是哈

咋说呢,我只能说和Java的toString( )方法是差不多的

(2)__lt__小于、大于符号比较

(3)__le__小于等于、大于等于符号比较

(4)__eq__ ==符号比较

 

(5)总结

"""演示其他的内置方法
"""class Student:def __init__(self, name, age):self.name = nameself.age = age# (1)__str__字符串方法def __str__(self):return f"name:{self.name},age:{self.age}"# (2)__lt__小于、大于符号比较def __lt__(self, other):return self.age < other.age# (3)__le__小于等于、大于等于符号比较def __le__(self, other):return self.age <= other.age# (4)__eq__ ==符号比较def __eq__(self, other):return self.age == other.agestu1 = Student("lyy", 18)
stu2 = Student("wgg", 19)
stu3 = Student("GO", 19)
print(stu1 < stu2)
print(stu1 <= stu2)
print(stu2 == stu3)

 


6.封装

面向对象三大特性

封装、继承和多态

(1)封装

(2)私有成员

相比于Java的区别,这里私有成员的定义是使用 ' __  '两个下划线 而不是private

(3)使用私有成员

其实  私有成员也就是只能给“自己人”用

曾今的方法显然是不管用的,那么

如何使用私有成员呢?

代码示例:

"""演示私有成员
"""class Phone:__current_voltage = 0.1  # 运行电压def __keep_single_core(self):print("cpu单核运行")def call_by_5G(self):if self.__current_voltage >= 1:print("5G通话已开启")else:self.__keep_single_core()print("电量不足:节能模式")phone = Phone()
# phone.__keep_single_core  用不了
# phone.__current_voltage 也用不了phone.call_by_5G()

(4)练习案例:设计带有私有成员的手机

参考代码:

"""设计带有私有成员的手机
"""class Phone:__is_5g_enable = Falsedef __check_5g(self):if self.__is_5g_enable == True:print("5g开启")else:print("5g关闭,使用4g信号")def call_by_5g(self):self.__check_5g()print("正在通话中")def open_or_down_5g(self):"""是否开启5g:return:"""str = input("你是否要开始y/n")if str == "y":self.__is_5g_enable = Trueelse:self.__is_5g_enable = Falsephone = Phone()
phone.open_or_down_5g()
phone.call_by_5g()


7.继承

如何理解继承?

答:

继承是面向对象编程中的一个概念,它指的是一个新类(子类)可以从现有的类(父类)继承属性和方法。在继承中,父类中存在的公共属性和方法可以被子类直接使用,子类也可以根据需要重写父类中的方法或添加新的属性和方法。

继承可以帮助程序员重用已有的代码和类,避免重复的编写和维护。继承也可以实现代码的扩展和灵活性,子类可以在不改变原有功能的基础上,增加新的功能。

继承的实现方式可以通过关键字extends来实现,子类可以继承父类的属性和方法,并且可以调用父类的构造器来初始化子类的对象。在Java中,一个子类只能继承一个直接父类,但是可以通过多级继承从祖先类中继承属性和方法。

(1)单继承

相比于Java的继承方法采用extend关键词,这里只需要将父类作为参数传入即可

(2)多继承

这里就发现了又一个和Java 的区别了,Java是不支持多继承的,而Python是支持的

注意事项

谁先继承,谁的优先级更高

(3)复写

其实就是相当于Java的重写

(4)调用父类同名成员


8.类型注解

Python 3.5引入了一种类型注解机制,即PEP 484,它使开发者可以在函数参数和函数返回值中注明变量类型。类型注解可以帮助开发者更好地理解代码,并提高代码的可读性和可维护性。

类型注解在Python中并不会严格检查类型,也不会影响程序运行。它仅仅是给开发者提供了一种规范和提示,让开发者更好地编写代码。

示例如下:


def add_numbers(a: int, b: int) -> int:return a + b

在这个例子中,我们使用类型注解来告诉函数参数a和b应该是整数类型,函数返回值也应该是整数类型。当然,如果我们在调用add_numbers函数时传入的参数类型不是整数,Python解释器也不会报错。但是,通过类型注解,我们可以清楚地知道这个函数的参数和返回值类型应该是什么。

我对于这个的理解是,她想约束类型,但是还是算了,所以相当于给出一个规范,你可以遵守,也建议你遵守

(1)变量的类型注解

1.普通变量

2.容器

3.在注释中进行类型注解

4.限制

代码示例;

"""演示变量的类型注解
"""
import json
import random# 基础数据类型注解
var1: int = 12
var2: str = "lyy"
var3: bool = True# 类对象类型注解
class Student:passstu: Student = Student()# 基础容器类型注解
my_list: list = [1, 2, 3]
my_tuple: tuple = (1, 2, 3)
my_dict: dict = {"lyy": 812}
# 容器类型详细注解
my_list: list[int] = [1, 2, 3]
my_tuple: tuple[int, str, bool] = (1, "wgg", False)
my_dict: dict[str, int] = {"lyy": 812}# 在注释中进行类型注解
var1 = random.randint(1, 10)  # type: int
var2 = json.loads('{"name":"zhangsan"}')  # type: dict[str, str]def func():return 10var3 = func()  # type: int# 类型注解的限制
var4: int = "我就用字符串了"
# 运行也不报错

(2)函数(方法)的类型注解

1.形参注解

 2.返回值注解

整体参考代码

"""对函数进行类型注解
"""# 对参数进行类型注解
def add(x: int, y: int):return x + yprint(add(812, 313))# 对返回值进行注解
def func(data: list) -> list:return data

 

(3)Union类型

代码示例:

"""演示Union联合类型注解
"""
# 使用Union类型,得先导包
from typing import Unionmy_list: list[Union[int, str]] = [1, 2, "lyy", "wgg"]def func(data: Union[int, str]) -> Union[int, str]:passfunc()


9.多态

(1)多态的概念

多态常用于继承的关系上 

(2)抽象类(接口) 

如何理解抽象类?

答:

在Python中,抽象类是使用abc模块(Abstract Base Class)来定义的。抽象类不能被实例化,而是用来规范其他类的行为。抽象类中定义了一些抽象方法,这些方法必须在子类中被实现。

要定义一个抽象类,需要继承abc.ABC类,并使用@abc.abstractmethod来装饰抽象方法。例如:


import abcclass Animal(abc.ABC):@abc.abstractmethoddef talk(self):pass

这里我们定义了一个Animal类,并且使用@abc.abstractmethod装饰talk()方法。这个类就是一个抽象类,不能被实例化,只能被其他类继承。

子类继承抽象类时,必须实现父类中的所有抽象方法,否则会抛出TypeError异常。例如:


class Dog(Animal):def talk(self):print("Woof!")class Cat(Animal):def talk(self):print("Meow!")

这里我们定义了两个子类Dog和Cat,它们都继承了Animal类,并且实现了抽象方法talk()。我们可以实例化这些子类,并且调用它们的talk()方法。例如:


dog = Dog()
dog.talk()  # 输出 "Woof!"cat = Cat()
cat.talk()  # 输出 "Meow!"

在Python中,抽象类的作用是规范子类的行为,强制子类遵循一定的规范。通过抽象类,我们可以让代码更加规范和清晰。同时,抽象类也可以作为多态的基础,让代码更加灵活和可扩展。

 为什么要使用抽象类呢?

抽象类的实现

(3)代码实现

"""多态的演示
"""# 这就是抽象类,或者说是接口
class Animal:def speak(self):passclass Dog(Animal):def speak(self):print("汪汪汪")class Cat(Animal):def speak(self):print("喵喵喵")def make_voice(animal: Animal):animal.speak()dog = Dog()
cat = Cat()make_voice(dog)
make_voice(cat)# 演示抽象类
class AC:def cool_wind(self):"""制冷"""passdef hot_wind(self):"""制热"""passdef swing_l_r(self):"""左右摆风"""passclass Midea_AC(AC):def cool_wind(self):"""制冷"""print("美的空调制冷")def hot_wind(self):"""制热"""print("美的空调制热")def swing_l_r(self):"""左右摆风"""print("美的空调左右摆风")class Gree_AC(AC):def cool_wind(self):"""制冷"""print("格力空调制冷")def hot_wind(self):"""制热"""print("格力空调制热")def swing_l_r(self):"""左右摆风"""print("格力空调左右摆风")def make_cool(ac: AC):ac.cool_wind()midea_AC = Midea_AC()
gree_AC = Gree_AC()make_cool(midea_AC)
make_cool(gree_AC)


10.综合案例

(1)案例分析

数据内容 

(2)需求分析

(3)代码实现

1.data_define.py
"""数据定义的类
"""class Record:# 日期date: str = None# 订单idorder_id: str = None# 销售额money: int = None# 销售省份province: str = Nonedef __init__(self, date, order_id, money, province):self.date = dateself.order_id = order_idself.money = moneyself.province = provincedef __str__(self):return f"date:{self.date}, id:{self.order_id},money:{self.money},province:{self.province}"
2.file_define.py
"""文件相关类定义
"""
import jsonfrom data_define import Record# 定义一个抽象类,用于做顶层设计
class FileReader:def read_data(self) -> list[Record]:"""读取文件数据,将每一条数据都转换为Record对象封装到list内返回"""passclass TextFileReader(FileReader):# 文件路径path = Nonedef __init__(self, path):self.path = pathdef read_data(self) -> list[Record]:"""复写读取文件方法:return:"""f = open(self.path, "r", encoding="UTF-8")record_list: list[Record] = []for line in f.readlines():# 消除 \nline = line.strip()data_list = line.split(",")record_list.append(Record(data_list[0],data_list[1],int(data_list[2]),data_list[3]))f.close()return record_listclass JsonFileReader(FileReader):# 文件路径path = Nonedef __init__(self, path):self.path = pathdef read_data(self) -> list[Record]:"""复写读取JSON文件方法:return:"""f = open(self.path, "r", encoding="UTF-8")record_list: list[Record] = []for line in f.readlines():data_dict = json.loads(line)record_list.append(Record(data_dict["date"],data_dict["order_id"],int(data_dict["money"]),data_dict["province"]))f.close()return record_list# 测试代码
if __name__ == '__main__':r = TextFileReader("D:\\IOText\\DataDoing\\2011年1月销售数据.txt")j = JsonFileReader("D:\\IOText\\DataDoing\\2011年2月销售数据JSON.txt")list1 = r.read_data()print(list1[0])list2 = j.read_data()# for r in list1:#     print(r)# for j in list2:#     print(j)
3.main.py
"""主业务逻辑代码
"""
from file_define import FileReader, TextFileReader, JsonFileReader
from data_define import Record
from pyecharts.charts import Bar
from pyecharts.options import *
from pyecharts.globals import ThemeTypetext_file_reader = TextFileReader("D:\\IOText\\DataDoing\\2011年1月销售数据.txt")
json_file_reader = JsonFileReader("D:\\IOText\\DataDoing\\2011年2月销售数据JSON.txt")month_1_data: list[Record] = text_file_reader.read_data()
month_2_data: list[Record] = json_file_reader.read_data()# 将两个月份的数据合并
all_data: list[Record] = month_1_data + month_2_data
# 开始进行数据计算
data_dict = {}
for record in all_data:if record.date in data_dict.keys():# 累加data_dict[record.date] += record.moneyelse:# 创建data_dict[record.date] = record.money# 可视化
bar = Bar(init_opts=InitOpts(theme=ThemeType.LIGHT)
)
# 添加x轴的数据
bar.add_xaxis(list(data_dict.keys()))
# 添加Y轴的数据
bar.add_yaxis("销售额", list(data_dict.values()), label_opts=LabelOpts(is_show=False))bar.set_global_opts(title_opts=TitleOpts(title="每日销售额")
)
bar.render("每日销售额.html")

结语

学这么点内容,学习了一天,确实是不用着急,不要慌张,脚踏实地的一步一步的走就行啦

今天就到这里

拜拜ヾ( ̄▽ ̄)Bye~Bye~

相关文章:

第二阶段第一章——面向对象

前言 学习了这么久Python&#xff08;呃其实也没多久差不多两周&#xff09;&#xff0c;可能有小伙伴说我废了&#xff0c;两周才学这么点&#xff0c;咋说呢&#xff0c;我曾经也是急于求成&#xff0c;做任何事情都是急于求成&#xff0c;比如我喜欢一个人我就想马上跟她在…...

Linux学习第33天:Linux INPUT 子系统实验(二):Linux 自带按键驱动程序的使用

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 本节笔记主要内容是学会如何使用Linux自带的按键驱动程序。 一、自带按键驱动程序源码简析 配置选项路径如下&#xff1a; -> Device Drivers ->…...

解决Visual Studio 2010 运行时屏幕一闪而过,无结果显示的问题

安装配置&#xff1a;Visual Studio 2010 软件安装教程&#xff08;附下载链接&#xff09;——计算机二级专用编程软件https://blog.csdn.net/W_Fe5/article/details/134218817?spm1001.2014.3001.5502 1、 我们在运行时会出现窗口一闪而过&#xff0c;这时候我们右键Test_1…...

C++(20):为[[nodiscard]]提供提示信息

C17中引入了[[nodiscard]]以对一些被忽略的函数返回值进行警告。 C(17)&#xff1a;[[nodiscard]]编译属性_[[nodiscard]] c-CSDN博客 C20可以为[[nodiscard]]提供一个可选的提示信息 [[nodiscard("cant ignore")]] int fi() {return 1; }int main() {fi();return 0…...

hi3518ev200 从sd卡启动rootfs

板卡为 hisi 的 hi3518ev200&#xff0c;16M RAM&#xff0c;64M Flash。板卡不支持从SD卡启动&#xff0c;但是由于Flash空间有限&#xff0c;很多应用都放不下&#xff0c;因此考虑把 rootfs 放到 SD 卡中。先从 Flash 中启动 kernel&#xff0c;然后再加载 SD 卡中的 rootfs…...

[BUUCTF NewStar 2023] week5 Crypto/pwn

最后一周几个有难度的题 Crypto last_signin 也是个板子题&#xff0c;不过有些人存的板子没到&#xff0c;所以感觉有难度&#xff0c;毕竟这板子也不是咱自己能写出来的。 给了部分p, p是1024位给了922-101位差两头。 from Crypto.Util.number import * flag b?e 655…...

使用seldom编写http接口用例

在编写接口用例的过程中&#xff0c;针对一个接口&#xff0c;往往只是参数不同&#xff0c;那么参数化就非常有必要了。 seldom 中参数化的用法非常灵活&#xff0c;这里仅介绍file_data() 的N种玩法。 二维列表 当参数比较简单时可以试试下面的方式。 参数化数据 {"…...

Redis中Hash类型的命令

目录 哈希类型的命令 hset hget hexists hdel hkeys hvals hgetall hmget hlen hsetnx hincrby hincrbyfloat 内部编码 Hash类型的应用场景 作为缓存 哈希类型和关系型数据库的两点不同之处 缓存方式对比 Redis自身已经是键值对的结构了,Redis自身的键值对就…...

Java 函数式编程

1.Lambda 1.1 格式 JDK 从 1.8 版本开始支持 Lambda 表达式&#xff0c;通过 Lambda 表达式我们可以将一个函数作为参数传入方法中。在 JDK 1.8 之前&#xff0c;我们只能通过匿名表达式来完成类似的功能&#xff0c;但是匿名表达式比较繁琐&#xff0c;存在大量的模板代码&…...

类的成员函数总结

前言&#xff1a; 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&#xff0c;编译器会自动生成以下6个默认成员函数。 默认成员函数&#xff1a;用户没有显式实现&#xff0c;编译器会生成的…...

java高级之单元测试、反射

1、Junit测试工具 Test定义测试方法 1.被BeforeClass标记的方法,执行在所有方法之前 2.被AfterCalss标记的方法&#xff0c;执行在所有方法之后 3.被Before标记的方法&#xff0c;执行在每一个Test方法之前 4.被After标记的方法&#xff0c;执行在每一个Test方法之后 public …...

MSQL系列(十三) Mysql实战-left/right/inner join 使用详解及索引优化

Mysql实战-left/right/inner join 使用详解及索引优化 前面我们讲解了BTree的索引结构&#xff0c;也详细讲解下Join的底层驱动表 选择原理&#xff0c;今天我们来了解一下为什么会出现内连接外连接&#xff0c;两种连接方式&#xff0c;另外实战一下内连接和几种最常用的join…...

前端面试题之HTML篇

1、src 和 href 的区别 具有src的标签有&#xff1a;script、img、iframe 具有href的标签有&#xff1a;link、a 区别 src 是source的缩写。表示源的意思&#xff0c;指向资源的地址并下载应用到文档中。会阻塞文档的渲染&#xff0c;也就是为什么js脚本放在底部而不是头部的…...

Django ORM:数据库操作的Python化艺术

Django的对象关系映射器&#xff08;ORM&#xff09;是其核心功能之一&#xff0c;允许开发者使用Python代码来定义、操作和查询数据库。这篇文章将带你深入了解Django ORM的强大之处&#xff0c;从基本概念到高级查询技巧&#xff0c;提供丰富的示例帮助你掌握使用Django ORM进…...

react受控组件与非受控组件

React中的组件可以分为受控组件和非受控组件&#xff1a; 受控组件&#xff1a;受控组件是指组件的值受到React组件状态的控制。通常在组件中&#xff0c;我们会通过state来存储组件的值&#xff0c;然后再将state的值传递给组件的props&#xff0c;从而实现组件的双向数据绑定…...

小米产品面试题:淘宝为何需要确认收货?京东为何不需要?

亲爱的小米粉丝们&#xff0c;大家好&#xff01;我是小米&#xff0c;一个热爱技术、热衷于分享的小编。今天&#xff0c;我要和大家聊聊一个有趣的话题&#xff1a;为什么淘宝购物需要确认收货&#xff0c;而京东不需要&#xff1f;这可是一个让很多人纳闷的问题&#xff0c;…...

(1)上位机底部栏 UI如何设置

上位机如果像设置个多页面切换&#xff1a; 位置&#xff1a; 代码如下&#xff1a; "tabBar": {"color": "black","selectedColor": "#d43c33","borderStyle":"black","backgroundColor": …...

中国多主数据库:压强投入,期待破茧

拿破仑曾说&#xff1a;“战争的艺术就是在某一点上集中最大优势兵力”&#xff0c;强调了力量集中的重要性。 如今&#xff0c;国际形势风云变幻&#xff0c;西方世界对中国的围剿不再仅仅体现在军事和地缘政治上&#xff0c;而更多表现在经济与科技上。在科技领域&#xff0…...

JavaScript在ES6及后续新增的常用新特性

JavaScript经历了不同标本的迭代&#xff0c;在不断完善中会添加不同的新特性来解决前一个阶段的瑕疵&#xff0c;让我们开发更加便捷与写法更加简洁&#xff01; 1、箭头函数&#xff1a; 箭头函数相比传统的函数语法&#xff0c;具有更简洁的语法、没有自己的this值、不会绑…...

试试流量回放,不用人工写自动化测试case了

大家好&#xff0c;我是洋子&#xff0c;接触过接口自动化测试的同学都知道&#xff0c;我们一般要基于某种自动化测试框架&#xff0c;编写自动化case&#xff0c;编写自动化case的依据来源于接口文档&#xff0c;对照接口文档里面的请求参数进行人工添加接口自动化case 其实…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...