【Python】-----基础知识
-
注释
- 定义:让计算机跳过这个代码执行
- 用三个单引号/双引号都表示注释信息,在Python中单引号与双引号没有区别,但必须是成对出现
-
输出与输入
- 程序是有开始,有结束的,程序运行规则:从上而下,由内到外
- 输出:程序把结果展示给用户 print
- 输入:用户给计算机下命令 input
- 格式化输入与输出 Python占位符:用特殊占位符来进行占位,然后具体要显示什么值,后面来确定
- 方式一:使用%d %s %f来占位 %(值1,值2,值3)
%d:整数 %s:字符串 %f:小数
2.方式二:使用{}来表示占位符, .format(值1,值2,值3)
3. 方式三:在引号面前加f,只适用于变量
-
数据类型
- 整数 int :表示数据大小,会自动扩容,所以python里面是没有long 、short、byte这些
- 浮点数 float :python里面的float是双精度浮点数
- 字符串:使用 ' 或者 '' 都可以
- 如果字符串里面包含双引号,字符用单引号括起来
- 如果字符串里面包含单引号,字符用双引号括起来
- 如果两者都包含,使用第三方引号引起来
- 布尔:非0则为true ,在判断字符串时,里面没有数字才为False
- 复数 :实数+虚数 0.99j
- 意义:
- 不同类型所占的内存空间不同( int 4, float 8, boolean 1, str 变长)
- 不同类型对应操作不同
- 类型的相互转换:
-
变量
定义:为了保存所用的结果,用来存储数据的空间。 “=”表示赋值
变量由数字,字母,下划线构成
不能包含特殊符号 ( *a ,**a)
数字不可以开头
变量名不可与python关键字重复
“=”表示赋值 (a=10,b=10)
连续赋值,多个变量赋值同一个值(a=b=10)
多个变量给多个值 (name,age,id="111",11,"233")
*来表示一个变量接受多个值(注意只能有一个*)
-
运算符
算数运算符
+
*
-
/ ,0不可以做除数,会报错;整数/整数,如果除不尽会得到小数
**(进行乘方运算)
%
//(取整除法,针对结果向下取整))
关系运算符(<= >= == !=)
可以针对数字/字符串进行比较(先看首字母在字母表上的顺序,谁小谁排在前面)
浮点数比较存在误差,所以比较的时候需要作差,看差值是否小于预期误差范围
逻辑运算符(Not >And >Or) ,结果都为True/False
and 一假则假
or 一真则真
not
赋值运算符(= += -= /=) Python没有++/--操作
Python中字符串可以相加
Python中整数可以和浮点数相加
Python中布尔值也可以相加(1---True 0---False)
成员运算符
运算符优先级
算数优先级大于比较优先级
比较优先级大于逻辑优先级
逻辑优先级内部Not >And >Or
-
基础语法
顺序语句
条件语句
单分支语法
2. 多分支语法
3. 多项分支
循环语句
while循环
![]()
2. for 循环
comntinue:立即结束当下循环
break:结束本轮循环
遍历数据应用
-
列表
列表的定义:将多个数据组合在一起的容器
标识符:【 】
关键字: list (在定义变量的时候,不要使用关键字去命名
列表创建好以后是可以改变的(散装辣条)
列表的创建
# 定义了空列表 a=[]#直接给数据 a= [1,2,3,4]
列表的操作
""" 列表的切片操作,可以一次取出一组连续数据 """b=[1,2,3,4] #此时【1:3】 指的是前闭后开区间 print(b[1:3]) #省略后边界 print(b[1:]) #省略前边界 print(b[:3]) #切片操作涉及步长 print(b[::1]) #步长也可以是负数,从后往前去取 print(b[::-1]) #当切片范围超出有效下标后,不会报错 print(b[1:100:2])""" 列表的增加操作 列表的变量名.对应方法名 """ #列表插入操作 ,使用append来新增元素,使用insert在任意位置新增 list=[1,2,3,4] list.append(99) print(list)list.insert(2,100) print(list)""" 列表的打印下标元素操作 """ list1=[1,"1111","String",9] print(list1[1])""" 列表的查询操作 in/ not 打印操作都为true、false """ list2=[1,333,555,7] print(1 in list2) print(1 not in list2)""" 列表与列表之间的操作 + 连接,最好不要使用这个, 用extend在企业里面, """ list3=[3,3,4,4] list4=[5,5,5,5] print(list3+list4)list3.append(list4) print(list3)#字符串是可以当作整个列表的,数字是不可以的,boolean不可以 list3.extend("小加") print(list3)""" 列表的删除操作 pop删除是按照下标删除,从后往前删 , remove是按照值来删除 """ list6=[1,2,3,4,5,5] # 如果有多个重复数据,会删除靠前面的这一个值 list6.remove(5) print(list6)# 根据下标进行删除,不给下标从后往前删 list6.pop() print(list6)# 请删除列表中的第2至第4个元素,并输出删除元素后的列表 li = ["alex", "WuSir", "ritian", "barry", "wenzhou"] del li[1:4] print(li)""" 修改元素,先要找到具体的值,赋新的值会完成修改 """ list8=[1,1,1,1,1] list8[3]=100 print(list8)
列表有关内存的问题
#有关内存问题 list=[1,2,3,4] #list2与list指向同一个,所以给list3增加数据也会让list增加,工作中不要这样做!!! list2=list list2.append(99) print(list2) print(list)#切片完成,从新生成 list2=list[0:] list2.append(100) print(list) print(list2)
统计元素个数
""" 统计元素个数,一个萝卜一个坑,如果里面的元素包含数组,那么也不会进行 """ list1=[1,2,4,5,[1,2,3,4]] print(list1.count(2)) //打印出1#得到下标为4里面的列表的元素中是否包含2 print(list1[4].count(2)) //打印出1
-
字典
字典定义:具有键值对映射关系的一组无序数据集合 key: value (key不变,value是可以随便的变 )
关键字: dict
标识符: { }
字典的创建
字典的应用
""" 字典的新增,对应不存在的key """ a={"name":11,"id":123 } a['score']=90 print(a)""" 字典的修改,修改存在的数据 """ a={"name":11,"id":123 } a['id']="xiaohua1" print(a)""" 字典删除,key不为空,这一类、key都会删除,使用pop ,popitem--从后往前删除 """ a.pop('id') print(a) #从后往前删除 a.popitem() print(a)#清空 cler a.clear() print(a)""" #字典的查找 in not in """ a={"name":11,"id":123,"xiaohua":123 } print('name' in a) print('name' not in a)""" 取出所有key与value的值,获取所有的键值对 """ a={"name":11,"id":123,"xiaohua":123 } print(a.keys()) print(a.values()) #获取所有的键值对 print(a.items())
-
元组
标识符:()
关键字:tuple
定义:元组不可变,程序运行的时候无法改变
面试题:
1.列表和元组的区别?列表:可以变的元组:不可变的,程序运行时候无法改变2.既然元组不可变,那么存在的意义?任何变化的数据都有可能造成安全性问题 ; 处于安全考虑
元组的操作
#获取元组的某个元素 tp=(1,2,3,4) print(tp[-1])#元组可以生成一个新的元组,并不是元组的拼接 tp1=(1,2,3,4) tp2=('a','b') res=tp1+tp2 print(res)#乘法是把元组进行了两遍的打印 ret=tp1*2 print(ret)#给你元组要进行一些修改,可以转化成列表可变的,修改完在转回来,相当于重定义 tp3=(1,2,3,4) list=list(tp3) print(list) list.append(9) tp3=tuple(list) print(tp3)#元组的赋值 num1=(1,) #为元组类型,元组的值一个都得拿逗号隔开 num2=(1) #为整型 print(type(num1)) print(type(num2))
-
集合
集合定义:由不同元素组成的数据结构(无序排列)
标识符:{ }
集合内的元素,不能重复;集合和集合之间可以做运算
关键字:set
集合的应用
#集合定义 # set={1,"aaa",3,4} # print(set) #集合操作 #查询---需要先转换(转换后列表是有序的),在查询(所以查询是有序的) set={"欢迎","来到","笑话"} list=list(set) print(list[0])#集合的增加值 add(也是无序的) set={"欢迎","来到","笑话"} set.add("!!!") print(set)#集合的删除,无序的删除---pop set={"欢迎","来到","笑话"} set.pop() #指定的删除---remove(value) set={"欢迎","来到","笑话"} set.remove("来到") print(set) #删除多次也不会报错,就算没有这个数据也可以----discard set={"欢迎","来到","笑话"} set.discard("欢迎") set.discard("欢迎") set.discard("欢迎") set.discard("欢迎") print(set)
集合的运算
#交集:两个集合的相同数据 set1={"xiaoxiao","jiajia"} set2={"xiaoxiao","1111"} print("交集:",set1.intersection(set2))#并集:合并重复去除掉 print("并集:",set1.union(set2))#差集:把自己有的对方没有的元素获取 set1={"xiaoxiao","jiajia"} set2={"xiaoxiao","1111"} print("差集:",set1.difference(set2))#交叉补集:共有部分全部移除掉,只留下独有的部分 set1={"xiaoxiao","jiajia"} set2={"xiaoxiao","1111"} print("差集:",set1.symmetric_difference(set2))
-
函数
定义:将一段代码封装在一个自定义函数名里,这些封装的代码只有调用的时候才执行
在Python中只要求个数,对类型无要求。Python中一个函数可以返回多个值
函数的返回值:函数在执行时需要将执行结果传递给调用函数的位置,所以使用return来进行,如果不写return,直接返回none;
获取这个值可以直接打印/通过变量来接收返回值 ;
return表示函数的结束,return后面的代码归属于这个函数也不会执行
return后面可以写返回值,也可以不写
函数的参数:
可以不写形式参数是可以打印的
写参数,如调用的时候不给参数,那么会报错
不定长参数 * --表示传入数据为元组 **---表示传入类型为字典
#元组--* def print_1(*args):print(args) print_1(1,2,3,4,5)#字典--** def print_1(**kwargs):print(kwargs) print_1(name="xiaojia",id="1",age=10)
函数注释(注释可以写,也可以不写)
#函数的注释与嵌套,函数的注释用来说明当前函数的含义def fun1(name):""":param name: //函数的说明:return: //输入这个还能输之后的结果"""bool =Falseif name=="xiaojai":bool=Truereturn bool
函数的嵌套
函数打印的结果
两个同级函数是可以相互调用的
def fun1():print("今天该我了")fun2() def fun2():print("今天该你了")fun1() fun2()
函数内部还可以直接定义函数,但是需要调用函数才可以执行
def fun3():print("111")def fun4():print("222")fun4() fun3()
作用域函数
局部变量修改成全局变量 (global---关键词修改成全局变量,需要先定义)
x=10 def text():global xx=20print(f"函数内部:",{x}) #20 text() print(f"函数外部:",{x}) #20
循环内部重新定义全局变量,全局变量会被修改
x=10 while True:x=20print(x)break
有关函数的应用
# abs() #绝对值 #divmod() #返回商和余数 x=int(input("输入一个数:")) a,b=divmod(x,2) print(a) #2 print(b) #1# round() #四舍五入 ,奇数做四舍五入操作,偶数不四舍五入------银行家算法 print(round(1.5)) #2 print(round(2.5)) #2 print(round(3.5)) #4 print(round(4.5)) #4 # pow() #次方
匿名函数(没有名字的函数)--通过lambda来实现匿名函数
lambda 自定义参数:逻辑表达式
函数的调用与引用
def fun1():print('执行11') fun1() #调用函数 print(fun1) #得到的是函数所在的内存地址,函数本体
函数引用:只有函数名称,没有小括号,对应的是这个函数的内存地址
引用+小括号----调用 调用-小括号-----引用
-
日志信息
定义:记录程序运行的流程是否正常,可以解决bug发生的问题,实际过程中python是放在服务器上执行的,我们可以自己写去看实际情况
日志级别
""" 日志的级别: debug调试信息--全部都会输出info正常输出--不会输出debug warning警告提示--不会输出debug,info error报错信息---只输出一个error级别 级别可以自己设定 """ import logging logging.basicConfig(level=logging.INFO) logging.debug("调试信息") logging.info("正常信息") logging.warning("警告信息") logging.error("错wu信息")
装饰器
- 规则:在需要执行函数的头部,加上@---如果存在@后面的函数名称,就会先去执行这个函数
- 调用装饰器需要在函数头部加上@后面加上装饰器名称,
3.应用
#去上海之前跟我吃饭,到上海后跟我唱歌 import logging def log(func):def b():logging.info("去上海: ")func()return b @log def func1():print("跟我一起去吃饭") @log def func2():print("一起去唱歌") func1() func2()
-
模块和包
模块:文件名(不包含.py后缀)
包:就是python中的文件夹(带有--init--py)
#模块 import time print(time.time())#from 模块名称 import 函数名称from time import time print(time())
-
文件
文件读取(需要把文件存储到内存空间里面),文件打开后一定要关闭,打开文件是需要申请一定的系统资源,不在使用文件,资源应该被释放
#文件读取 f=open("C:/111/小明.txt",'r',encoding='utf-8') msg=f.read() print(msg)#按行读取 msg=f.readline() print(msg)#读取出来的数据,存储为列表 cont=f.readlines() for i in cont:print(i)#关闭文件之后是不可以在次进行读取,但是可以打印之前保存的数据 f.close() print(msg)
写文件
#写文件 #W----覆盖写入文件 f=open("C:/111/小明.txt",'w') f.write("凄凄切切钱钱钱钱钱")#a----追加写入 n=0 while n<3:if n==0:print("11111")else:print("22222") n+=1 f.close()
如果写入数据在文件里面,直接打开文件的时候,是不可以读取的,因为光标在末尾
-
面向对象
类里面,称之为方法叫做开发所编写生成的功能
class 自定义类:属性方法---功能类里面调用方法的时候需要实例化对象class Student:name='xiaohau1'age=11id=20def eat(self):print("吃东西")def drink(self):print("喝水")#实例化一个对象 xiaoxiao=Student() print(xiaoxiao.name)#对象属性进行修改 xiaoxiao.name="1111" print(xiaoxiao.name)
应用
#创建英雄 class Hero():name="英雄名字"type="英雄类型"des_1="英雄技能1"des_2="英雄技能2"des_3="英雄技能3"#实例化对象的时候,一定要先执行这个构造函数def init(self,name,type,desc_1,desc_2,desc_3):#当前变量的值接收进来,给到当前对象的属性self.name=nameself.type=typeself.des_1=desc_1self.des_2=desc_2self.des_3=desc_3#技能def skill_1(self):print("f{name}英雄,释放了--{desc_1}技能")def skill_2(self):print("f{name}英雄,释放了--{desc_2}技能")def skill_3(self):print("f{name}英雄,释放了--{desc_3}技能") #实例化对象 liuban=Hero(name='11',type='22',des_1='33',des_2='44',des_3='55')
封装:封装一个get方法去获取私有属性的值
公有属性:常规属性 私有属性:双下划线开头,只能在自己类中进行调用
类外面使用:对象名称.属性名称
类里面使用:self.属性名称
私有属性的获取与调用和修改
#设置属性 class Person():#构造函数def __init__(self,name,age,sex):self.name=nameself.age=age# 带有__为私有属性self.__sex=sexdef eat(self):print("1111")#修改私有属性的值,def set_sex(self,newsex):self.__sex=newsex#获取私有属性的值def get_sex(self):return self.__sexjiashuai=Person("xiaoxiao",1,1)#私有属性的调用 print(jiashuai.get_sex())jiashuai.set_sex(newsex="笑话") print(jiashuai.get_sex())
类的公有和私有方法
私有方法:双下划线开头的方法
#获取类的私有方法: class Person():#私有方法def __eat(self):print("1111")#公有方法def drink(self):print("2222")#写一个run方法def run(self):self.__eat() jiashuai=Person()#调用公有方法 jiashuai.drink()#调用私有方法,无法直接调用,需要在类里面写一个run方法 jiashuai.run()
-
继承
定义
class 子类名称(父类名称):子类独有的方法或者属性
应用
#父类 class Animal():name="xiaohau"#私有属性__age="11"def eat(self):print("公有属性方法")def __drink(self):print("私有属性方法")#获取父类私有属性def get_age(self):return self.__age#run方法去运行def run(self):self.__drink()#子类继承父类 class cat(Animal):def sleep(self):print("子类公有属性方法")#实例化猫 lili = cat() print(lili.name) #调用类里面父类的私有属性 print(lili.get_age()) #调用父类里面的私有方法 print(lili.run())
多继承
定义
class 子类名称(父类1,父类2):属性或者方法 ""
遵循就近选择,当两个类的方法一致,会就近继承打印
如果依次继承方法--(方法重构),方法重名时,只遵循子类方法执行
class Monkey():def eat(self):print("吃") class God():def fly(self):print("fei")def eat(self):print("吃先") class sunwukong (Monkey,God):def qujing(self):print("取取经") swk=sunwukong() swk.fly() swk.eat()
-
多态(支付场景)
应用
class paymennt():def pay(self):print("支付") class weixin(paymennt):def pay(self):print("微信支付") class zhifubao(paymennt):def pay(self):print("支付宝支付") class aaa():#设置参数来接收对象的值def pay(self,oij):#调用这个对象的支付方式oij.pay() #这个地方传值----重点 ooo=aaa() ali=weixin() ooo.pay(ali) #微信支付
-
异常
异常:程序无法执行下去
异常的解决
1.try ......except
try :逻辑代码 except:一旦try里面代码报错,会离立即执行excepttry:n = 1/0 #0不可以做被除数print(n) except:print("请检查try里面代码")#异常嵌套 try:n = 1/0print(n) except:print("请检查try里面代码")#play Bstr=input("输入字符串:")try:print(str[5])except:print("输入有无")
2. try......finallly
try:逻辑性代码 finally:逻辑性代码try:#可能会出现的异常,报错的上一行及以上都会执行n = 1/0 except:#对try的异常处理信息print(111) finally:#不管处理不处理,都要执行n = 1/0
3. 获取异常处理的信息
try:#可能会出现的异常,报错的上一行及以上都会执行n = 1/0except Exception as e:print(e)
-
断言
一旦匹配不成功,返回值为False,这时候会抛出异常,终端程序执行
assert 预期结果==实际结果
自定义报错信息:
-
with 和as
打开文件方式: file=open(文件路径,编码格式,读取方式)with open(文件路径,编码格式,读取方式) as f: print(f.read())
相关文章:

【Python】-----基础知识
注释 定义:让计算机跳过这个代码执行用三个单引号/双引号都表示注释信息,在Python中单引号与双引号没有区别,但必须是成对出现 输出与输入 程序是有开始,有结束的,程序运行规则:从上而下,由内…...
如何学习、上手点云算法(二):点云处理相关开源算法库、软件、工具
写在前面 本文内容 一些用于点云处理的开源算法库、软件介绍,主要包含: CloudCompare, MeshLab, PCL, Open3D, VTK, CGAL等 不定时更新 平台/环境 Windows10, Ubuntu1804, CMake, Open3D, PCL 转载请注明出处: https://blog.csdn.net/qq_41…...

为什么会对猫毛过敏?如何缓解?浮毛克星—宠物空气净化器推荐
猫咪过敏通常是因为它们身上的Fel d1蛋白质导致的,这些蛋白质附着在猫咪的皮屑上。猫咪舔毛的过程会带出这些蛋白质,一旦接触就可能引发过敏症状,比如打喷嚏等。因此,减少空气中的浮毛数量有助于减轻过敏现象。猫用空气净化器可以…...
Linux学习-etcdctl安装
etcdctl3.5下载链接 1. 先通过上面链接下载gz包2. 解压 [rootk8s-master ~]# tar xf etcd-v3.5.11-linux-amd64.tar.gz [rootk8s-master etcd-v3.5.11-linux-amd64]# ls Documentation etcd etcdctl etcdutl README-etcdctl.md README-etcdutl.md README.md READMEv2-e…...
Qt应用软件【文件篇】读写文件技巧
文章目录 简介按照偏移读文件按照偏移写文件Qt按行写文件Qt按行读文件注意事项指定文件编码格式UTF8转GBK简介 Qt提供了丰富的API来处理文件读写操作,使得读写文件变得简单。 按照偏移读文件 QFile file("example.txt"); if (file.open(QIODevice::ReadOnly)) {q…...
GO常量指针
Go语言中的常量使用关键字const定义,用于存储不会改变的数据,常量是在编译时被创建的,即使定义在函数内部也是如此,并且只能是布尔型、数字型(整数型、浮点型和复数)和字符串型。 由于编译时的限制&#x…...

微服务间通信重构与服务治理笔记
父工程 依赖版本管理,但实际不引入依赖 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&…...

unity 场景烘焙中植物叶片(单面网络)出现的白面
Unity版本 2021.3.3 平台 Windows 在场景烘焙中烘焙植物的模型的时候发现植物的叶面一面是合理的,背面是全白的,在材质球上勾选了双面烘焙,情况如下 这个问题可能是由于植物叶片的单面网格导致的。在场景烘焙中,单面网格只会在一…...

网工内推 | 国企运维,年薪最高30W,RHCE认证优先
01 上海华力微电子有限公司 招聘岗位:系统运维资深/主任工程师 职责描述: 1、负责IT基础设施(包括服务器、存储、中间件等系统基础技术平台)的设计建设和日常运维管理; 2、负责生产、开发和测试环境的技术支持&#x…...
WordPress排除调用某个分类下的文章
wordpress在调用分类下文章时,有时需要排除调用某个分类的文章,下面的这段代码,就可以轻松实现不调用特定ID的分类内容。 <?phpquery_posts("showposts10&cat-1"); //cat-1为排除ID为1的分类下文章while(have_posts()) : …...

Java多线程——信号量Semaphore是啥
目录 引出信号量Semaphore ?Redis冲冲冲——缓存三兄弟:缓存击穿、穿透、雪崩缓存击穿缓存穿透缓存雪崩 总结 引出 Java多线程——信号量Semaphore是啥 信号量Semaphore ? Semaphore 通常我们叫它信号量, 可以用来控制同时访问特…...
L2785(Java). 将字符串中的元音字母排序
题目 1.如何以char类型便利字符串 2.自定义优先队列解决 class Solution {public String sortVowels(String s) {Map<Character,Integer> m new HashMap<>();m.put(a,1);m.put(e,1);m.put(i,1);m.put(o,1);m.put(u,1);m.put(A,1);m.put(E,1);m.put(I,1);m.put(O,…...

Android之Handler原理解析与问题分享
一、Handler运行原理剖析 1.关系剖析图 如果把整个Handler交互看做一个工厂,Thread就是动力MessageQueue是履带Looper是转轴Loooper的loop方法就是开关,当调用loop方法时整个工厂开始循环工作,处理来自send和post提交到MessageQueue的消息&a…...
YOLO快速入门
Yolo简介 概述 YOLO(You Only Look Once)是一种流行的目标检测算法,由Joseph Redmon等人开发。 YOLO算法以其高效的实时性能和准确的检测能力而闻名。自YOLO的首次提出以来,已经经 历了多个版本的更新和改进。以下是YOLO发展史的…...

基于 LLaMA 和 LangChain 实践本地 AI 知识库
有时候,我难免不由地感慨,真实的人类世界,本就是一个巨大的娱乐圈,即使是在英雄辈出的 IT 行业。数日前,Google 正式对外发布了 Gemini 1.5 Pro,一个建立在 Transformer 和 MoE 架构上的多模态模型。可惜,这个被 Google 寄予厚望的产品并未激起多少水花,因为就在同一天…...

GraphGeo参文2:Fourth-Order Runge–Kutta(四阶RK方法)
四级 RK 方法是数值积分微分方程用的最多的一种方法。 对于形式为: 的微分方程,由如下四级: 若 z 满足: 则有: 其中表示,在时间时,的情况下, 的取值。 其他的类似,括号里…...

解密Lawnchair:打造个性化极致的Android桌面体验
解密Lawnchair:打造个性化极致的Android桌面体验 1. 简介 Lawnchair是一款知名的Android桌面定制工具,旨在为用户提供个性化极致的桌面体验。作为一个开源项目,Lawnchair融合了简洁、灵活和强大的特点,让用户能够自由定制其Andro…...
c语言-函数-009
2.函数传参: 2.1赋值传递(复制传递)函数体内部想要使用函数体外部变量值的时候使用复制传递2.2全局变量传递#include <stdio.h>int Num1 100; int Num2 200; int Ret 0;void Add(void) {Ret Num1 Num2;return; }int main(void) {Add();printf…...

Spring事件发布监听器ApplicationListener原理- 观察者模式
据说监听器模式也是mq实现的原理, 不过mq我还没来得及深入学习, 先用spring来理解一下吧 Spring事件发布监听器ApplicationListener原理- 观察者模式 什么是观察者模式一个Demo深入认识一下观察者模式Spring中的事件发布监听ps 什么是观察者模式 大家都听过一个故事叫做烽火戏…...
系统学习Python——装饰器:直接管理函数和类
分类目录:《系统学习Python》总目录 在《系统学习Python——装饰器》系列文章中,我们的大多数示例都设计来拦截函数和实例创建调用。这对于装饰器来说很典型,但是它们并不限于这一角色。因为装饰器通过装饰器代码来运行新的函数和类ÿ…...

Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...

基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...

FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...