Python基础复习总结
文章目录
- Python基础复习
- Python的下载与安装
- 标识符
- 关键字
- 模块
- 条件、循环语句
- if elif else
- for循环
- while循环
- 成员测试
- Python中的数据类型
- 序列
- 列表 list
- 元组 tuple
- 集合 set
- 字典 dict
- Python关系运算
- 算术运算符
- 比较运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
- 运算符优先级
- 字符串
- 表示字符串
- 字符串与数字类型的转换
- 字符串格式化
- 操作字符串
- 函数
- 使用Python进行目录的搜索移动
- Python爬虫-数据获取
- 面向对象
- 面向对象个绍
- 定义类
- 创建对象
- 类的成员
- 封装性
- 继承性
- 多态性
- 异常
- 异常捕获
- 使用finally代码块
- 自定义异常类
- 手动引发异常
Python基础复习
Python的下载与安装
Python下载地址:https://www.python.org/downloads/
安装详细教程:https://blog.csdn.net/qq_53280175/article/details/121107748
标识符
1、区分大小写: Myname与myname是两个不同的标识符。
2、首字符可以是下画线(_ )或字母,但不能是数字。
3、除首字符外的其他字符必须是下画线、字母和数字。
4、关键字不能作为标识符。
5、不要使用Python的内置函数作为自己的标识符
关键字

模块
一个模块就是一个文件
import <模块名>
from <模块名> import <代码元素>
from <模块名> import <代码元素> as <代码元素别名>
条件、循环语句
if elif else
score = int(input("请输 入“个0~100整数: "))
if score >= 90:grade =' A ”
elif score >= 80:grade =' B'
elif score >=70:grade = 'C'
elif score >= 60:grade =' D'
else:grade = 'F'
print("Grade ="+ grade)
for循环
for i in range(0,10):print("i = %d"%(i)) # 打印i=0到9
# 计算1+2+3+...+N
print("请输入N的值:")
N = int(input()) # 键盘输入N的值
sumN = 0
for i in range(1,N+1):sumN = sumN + i
print(sumN)
while循环
i=0
while i * i< 1000:i += 1
print("i =" + str(i)) # i = 32
print("i * i ="+ str(i * i)) # i * i = 1024
成员测试
成员测试运算符有两个: in和not in,
in用于测试是否包含某一个元素,
not in用于测试是否不包含某一个元素。
a = "Hello"
print('e' in a) # True
Python中的数据类型
Python中有6种主要的内置数据类型:数字、字符串、列表、元组、集合和字典。
Python中有4种数字类型:整数类型、浮点类型、复数类型和布尔类型。
Python中的整数类型为int类。

Python的浮点类型为float类。

复数在数学中被表示为: a + bi,其中a被称为实部,b被称为虚部,i被称为虚数单位。

Python中的布尔类型为bool类:它只有两个值:True和False。

1.隐式类型的转换

2.显式类型的转换

序列
序列(sequence) 是一种可迭代的、元素 有序的容器类型的数据。
strtest = "Hello"
print(strtest[0]) # H
print(strtest[-5]) # H
print(strtest[-1]) # oprint(strtest*2) # HelloHello
print(strtest+" World") # Hello World
# 切片操作
# 切片运算符的语法形式为[start:end:step]。其中,start是开始索引,end是结束索引,step是步长(切片时获取的元素的间隔,可以为正整数,也可以为负整数)。
a = "Hello"
print(a[1:3]) # el
print(a[0:3:2]) # Hl

列表 list
列表(ist) 是一种可变序列类型,我们可以追加、插入、删除和替换列表中的元素。

1.在列表中追加单个元素时, 可以使用列表的append(x)方法。
2.在列表中追加多个元素时,可以使用加(+) 运算符或列表的extend(t)方法
想向列表中插入元素时,可以使用列表的list.insert(i, x)方法
l = [20,30,50]
l.insert(2,80)
print(l) # [20,30,80,50]
想替换列表中的元素时,将列表下标索引元素放在赋值符号(=)的左边,进行赋值即可。
l = [20,30,50]
l[1] = 80
print(l) # [20,80,50]
使用列表的list.remove(x)方法。
l = [20,30,50]
l.remove(30)
print(l) # [20,50]
元组 tuple
元组(tuple) 是一种**不可变**序列类型。
1.tuple(iterable)函数
2.(元素1,元素2,元素3…)

sid,sname = (110,'张三')
print(sid) # 110
print(sname) # 张三
集合 set
集合(set)是一种可迭代的、无序的、不能包含 重复元素的容器类型的数据。
1.set(iterable)函数
2.{元素1,元素2,元素3, … }
a = set()
b = {1,2,'abc'}
集合中不包含重复的元素
# 其他数据类型转为集合
a = 'abcd' # 字符串
test = set(a)
print(test) # {'a','b','c','d'}b = [1,2,3] # 列表
test = set(b)
print(test) # {1,2,3}c = (1,2,'abc') # 元组
test = set(c)
print(test) # {1,2,'abc'}d = {'a':1,'b':2,'c':3} # 字典
test = set(d)
print(test) # {'a','b','c'}
# for循环打印集合中的元素
test = {1,2,'abc'}
for item in test:print(item)
add(elem):添加元素,如果元素已经存在, 则不能添加, 不会抛出错误。
remove(elem) :删除元素, 如果元素不存在,则抛出错误。
clear(): 清除集合。
# 集合添加删除元素
nums = {1,2,3}
nums.add(6)
nums.remove(1)
print(nums) # {2,3,6}
nums.clear() # 清除集合
# 集合之间的运算
# 交集 &或者intersection
# 并集 |或者union
# 差集 -或者difference
a = {1,2,3,4}
b = {3,4,5,6}print(a&b) # {3,4}
print(a.intersection(b))print(b&a) # {3,4}
print(b.intersection(a))print(a|b) # {1,2,3,4,5,6}
print(a.union(b))print(a-b) # {1,2}
print(a.difference(b))print(b-a) # {5,6}
print(b.difference(a))


字典 dict
1、字典(dict) 是可迭代的、 通过键(key)来访问元素的可变的容器类型的数据。
2、键视图不能包含重复的元素,值视图能。在键视图中, 键和值是成对出现的。
container = {'苹果':'A','香蕉':'C','桃子':'B','梨子':'D'}
print(container)
print(container['桃子'])# 创建字典
name = {}
name = dict()dictname[key] = value
字典可以被修改,但都是针对键和值同时操作的,对字典的修改包括添加、替换和删除。

items():返回字典的所有键值对视图。
keys():返回字典键视图。
values(): 返回字典值视图。


Python关系运算
v1 = True
v2 = False
print(v1) # True
print(v2) # False
print(int(v1)) # 1
print(int(v2)) # 0
print(v1+v2) # 1
算术运算符

比较运算符

逻辑运算符

位运算符

赋值运算符

运算符优先级

字符串
表示字符串
普通字符串指用单引号(') 或双引号(")括起来的字符串。
常用的转义符:


# 长字符串
s = """1213123123453434342342245412125142534254
352352435231523425325345234524352435243"""
字符串与数字类型的转换
1、将字符串转换为数字
2、将数字转换为字符串
将字符串转换为数字,可以使用int()和float()实现, 如果成功则返回数字,否则引发异常。
将数字转换为字符串,可以使用str()函数, str()函数可以将很多类型的数据都转换为字符串。
字符串格式化
使用字符串的format0方法,它不仅可以实现字符串的拼接,还可以格式化字符串。
要想将表达式的计算结果插入字符串中,则需要用到占位符({}) 。

格式化控制符:


操作字符串
str.find(sub[, start[ end]])查找子字符串,在索引start到end之间查找子字符串sub,
如果找到,则返回最左端位置的索引;如果没有找到,则返回-1。

str.replace(old, new[, count])字符串替换,new子字符串替换old子字符串。count参数指定了替换old子字符串的个数,count被省略,则替换所有old子字符串。

str.split(sep=None, maxsplit=-1) ,使用sep子字符串分割字符串str。maxsplit是最大分割次数,
如果maxsplit被省略, 则表示不限制分割次数。

函数
定义函数
def rect_area(w,h):area = w * hreturn area
def print_area(w,h):area = w * hprint("{0}x{1}长方形的面积是{2}".format(w,h,area))
调用函数
在调用函数时传递的实参与定义函数时的形参顺序一致,这是调用函数的基本形式。
在调用函数时可以采用“关键字=实参”的形式,其中,关键字的名称就是定义函数时形参的名称。
参数的默认值
可变参数
Python中的函数可以定义接收不确定数量的参数,这种参数被称为可变参数。可变参数有两种,即在参数前加*或**。
def sum(*numbers):total = 0.0for number in numbers:total += numberreturn total print(sum(100.0,20.0,30.0)) # 输出150.0
print(sum(30.0,80.0)) # 110.0
def show_info(**info):print('---show info---')for key,value in info.items():print('{0} - {1}'.format(key,value))show_info(name = 'Tony',age = 18,sex = True)
函数变量的作用域
全局变量 局部变量
x = 20
def print_value():global x # 将x变量提升为全局变量x = 10print(x)
函数的类型
Python中的任意一个函数都有 数据类型,这种数据类型是function,被称为函数类型。
1、一个函数可以作为另一个函数返回值使用。
2、一个函数可以作为另一个函数参数使用。
filter函数
def f1(x):return x > 50
data = [66,15,91,28,98,50,7,80,99]
filtered = filter(f1,data)
data2 = list(filtered)
print(data2) # [66,91,98,80,99]
map函数
#提供变换规则的函数
def f1(x):return x*2 #变换规则乘以2
data1 = [66, 15, 91,28, 98, 50, 7, 80,99]
mapped = map(f1, data1)
data2 = list(mapped) # 转换为列表
print(data2) # [132, 30, 182,56, 196, 100, 14, 160,198]
lambda函数
在Python中使用lambda关键字定义匿名函数。lambda关键字定义的函数也被称为lambda函数。
def calc(opr):if opr == '+':return lambda a, b:(a + b) #替代add函数else:return lambda a, b: (a - b) # 替代sub函数
f1 = calc('+')
f2 = calc('-')
print("10 + 5 = {0}".format(f1(10,5)))
print("10 - 5 = {0}".format(f2(10,5)))
使用Python进行目录的搜索移动
import os # 导入系统库os
import shutil # 实现移动文件的功能需求# path代表待搜索的目录路径.res存储搜索到的文件路径列表
def search_dir(path,res):child_files = os.listdir(path)for child in child_files:child = os.path.join(path,child)res.append(child)if os.path.isdir(child): # 如果child是一个子目录search_dir(child,res) # 递归input_dir = input("输入待搜索的目录:")
output_dir = input("输入保存文件的目录:")files = list()
search_dir(input_dir,files)
for file1 in files:print("find %s"%(file1))if os.path.isfile(file1) and file1.endswith(".docx"):print("move %s"%(file1))shutil.move(file1,output_dir)
Python爬虫-数据获取

# 样例代码
import urllib.request
url = "https://movie.douban.com/top250"
header = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64)" "AppleWebKit/537.36 (KHTML, like Gecko)""Chrome/76.0.3809.87 Safari/537.36 SLBrowser/6.0.1 .8131"
}
req = urllib.request.Request(url=url,headers = header)
response = urllib.request.urlopen(req)
html = response.read().decode("utf-8")
print(html)
import urlib.request
def download_html(url):header = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64)" "AppleWebKit/537.36 (KHTML, like Gecko)""Chrome/76.0.3809.87 Safari/537.36 SLBrowser/6.0.1 .8131"}req = urllib.request.Request(url=url,headers = header)response = urllib.request.urlopen(req)html = response.read().decode("utf-8")return htmlhtml = download_html("https://movie.douban.com/top250")
import re
pattern = "https://movie.douban.com/subject/[0-9]+/"
urls = re.findall(pattern,html)
urls = set(urls)
print("urls count = %d"%(len(urls)))
for url in urls:print(url)
import urlib.request
import redef download_html(url):header = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64)" "AppleWebKit/537.36 (KHTML, like Gecko)""Chrome/76.0.3809.87 Safari/537.36 SLBrowser/6.0.1 .8131"}req = urllib.request.Request(url=url,headers = header)response = urllib.request.urlopen(req)html = response.read().decode("utf-8")return htmldef extract_url(html):pattern = "https://movie.douban.com/subject/[0-9]+/"urls = re.findall(pattern,html)urls = set(urls)return urls file1 = open("douban.txt",'r')
output = open('movie.txt','w')lines = file1.readlines()
for url in lines:url = url.strip()print(url)html = download_html(url)urls = extract_url(html)for url in urls:output.write(url+'\n')
file1.close()
output.close()
面向对象
面向对象个绍
面向对象是一种编程思想,即按照真实世界的思维方式构建软件系统。
定义类
class类名[(父类)]:
\t 类体
class Car(object):# 类体pass
创建对象
class Car(object):# 类体passcar = Car()
类的成员

实例变量就是对象个体特有的“数据”,例如狗狗的名称和年龄等。
class Dog:def __init__(self,name,age):self.name = name #创建和初始化实例变量nameself.age = age #创建和初始化实例变量age
d = Dog('球球',2)
print('我们家狗狗名叫{0},{1}岁 了。'.format(d.name, d.age))
类中的__ init__()方法是- -个非常特殊的方法,用来创建和初始化实例变量,这种方法就是“构造方法”。
class Dog:def __init__(self, name, age, sex='雌性'):self.name = name #创建和初始化实例变量nameself.age = age #创建和初始化实例变量ageself.sex = sex #创建和初始化实例变量sex
d1 = Dog('球球',2)
d2 = Dog('哈哈',1,‘雄性')
d3 = Dog(name='拖布',sex= ' 雄性',age=3)
print('{0}: {1}岁{2}。'.format(d1.name, d1.age, d1.sex))
print('{0}: {1}岁{2}。'.format(d2.name, d2.age, d2.sex))
print('{0}: {1}岁{2}。'.format(d3.name, d3.age, d3.sex))
实例方法与实例变量-样,都是某个实例 (或对象)个体特有的方法。
class Dog:#构造方法def __init__ (self, name ,age, sex='雌性'):self.name = name #创建和初始化实例变量nameself.age = age #创建和初始化实例变量ageself.sex = sex #创建和初始化实例变量sex#实例方法def run(self):print("{}在跑...". format(self.name))#实例方法def speak(self, sound) :print('{}在叫,"{}"!'. format(self.name, sound))
dog = Dog('球球',2)
dog. run()
dog. speak('旺旺旺')
类变量是属于类的变量,不属于单个对象。
class Account:interest_ rate = 0.0568 # 类变量利率interest_ ratedef __init__ (self, owner, amount):self.owner = owner #创建并初始化实例变量ownerself.amount = amount #创建并初始化实例变量amount
account = Account( 'Tony', 800000.0)
print('账户名: {0}'.format(account.owner))
print('账户金额: {0}'.format(account.amount) )
print('利率: {0}'.format (Account.interest_ rate))
类方法与类变量类似,属于类,不属于个体实例。
class Account:interest_rate = 0. 0668 #类变量利率def __init__(self, owner, amount):self.owner = owner #定义实例变量账户名self.amount = amount # 定义实例变量账户金额#类方法@classmethoddef interest_ by(cls, amt):return cls.interest_rate * amt
interest = Account.interest_ by(12000.0)
print('计算利息: {0: .4f}'.format(interest))
封装性
封装隐藏了对象的内部细节,只保留有限的对外接口,外部调用者不用关心对象的内部细节,使得操作对象变得简单。
为了防止外部调用者随意存取类的内部数据(成员变量),内部数据(成员变量)会被封装为‘私有变量”。
私有变量,则在变量前加上双下画线(__)。
class Account:__interest_ rate = 0.0568 #类变量利率interest_ ratedef __init__(self, owner, amount) :self.owner = owner #创建并初始化公有实例变量ownerself.__amount = amount #创建并初始化私有实例变量__amountdef desc(self):return "{0}金额: {1}利率: {2}。 " . format(self.owner,self._ amount ,Account.__ interest rate)
私有方法与私有变量的封装是类似的,在方法前加上双下画线 (__) 就是私有方法了。
class Account :__interest_ rate = 0.0568 #类变量利率__ interest_ ratedef __init__(self, owner, amount) :self.owner = owner #创建并初始化公有实例变量ownerself.__amount = amount #创建并初始化私有实例变量___ amountdef __get_info(self):return "{0}金额: {1}利率: {2}。 " . format( self.owner,self.__amount,Account._ interest rate )def desc(self):print(self.__get_info())
为了实现对象的封装,在一个类中不应该有公有的成员变量,这些成员变量应该被设计为私有的,然后通过公有的set (赋值)和get (取值) 方法访问。
class Dog:#构造方法def __init__(self, name, age,sex='雌性'):self.name = name #创建和初始化实例变量nameself.__age = age #创建和初始化私有实例变量__age#实例方法def run(self):print("{}在跑...". format(self.name))@propertydef age(self):#替代get_age(self):return self.__age@age.setterdef age(self, age): # 替代set_age(self, age)self.__ age = age
dog = Dog('球球',2)
print('狗狗年龄: {}'. format(dog.age))
dog.age = 3 # dog.set_ age(3)
print('修改后狗狗年龄: {}' .format(dog.age))
继承性
1、继承性也是面向对象重要的基本特性之- 。在现实世界中继承关系无处不在。
2、例如猫与动物之间的关系:猫是一 种特殊动物,具有动物的全部特征和行为,即数据和操作。在面向对象中动物是一般类,被称为”父类”;猫是特殊类,被称为“子类”。特殊类拥有一般类的全部数据和操作,可称之为子类继承父类。
class Animal :def __init__(self,name):self.name = name #实例变量namedef show_info(self):return "动物的名字: {0}". format(self.name )def move(self):print("动动...")
class Cat(Animal):def __init__(self,name, age):super().__ init__(name)self.age = age # 实例变量age
cat = Cat('Tom', 2)
cat.move()
print(cat.show_info())
多继承
class Horse:def __init__(self, name):self.name = name # 实例变量namedef show_info(self):return "马的名字: {0}". format(self.name)def run(self):print("马跑...")
class Donkey:def __init__(self, name):self.name = name #实例变量namedef show_info(self):return "驴的名字: {0}".format(self.name)def run(self):print("驴跑...")def roll(self):print("驴打滚...")
class Mule(Horse, Donkey): # 多继承 优先性def __init__(self, name, age):super().__init__ (name)self.age = age #实例变量age
m = Mule('骡保丽',1)
m.run() # 继承父类Horse方法
m.roll() # 继承父类Donkey方法
print(m.show_info()) # 继承父类Horse方法
方法重写
class Horse:def __init__(self, name):self.name = name # 实例变量namedef show_info(self):return "马的名字: {0}". format(self.name)def run(self):print("马跑...")
class Donkey:def __init__(self, name):self.name = name #实例变量namedef show_info(self):return "驴的名字: {0}".format(self.name)def run(self):print("驴跑...")def roll(self):print("驴打滚...")
class Mule(Horse, Donkey): # 多继承 优先性def __init__(self, name, age):super().__init__ (name)self.age = age #实例变量agedef show_info(self):return "骡:{0},{1}岁。".format(self.name,self.age)
多态性
1、“多态”指对象可以表现出多种形态。
2、例如,猫、狗、鸭子都属于动物,它们有”叫”和"动”等行为,但是”叫”的方式不同,"动”的方式也不同。
在多个子类继承父类,并重写父类方法后,这些子类所创建的对象之间就是多态的。这些对象采用不同的方式实现父类方法。
class Animal :def speak(self):print('动物叫,但不知道是哪种动物叫!')
class Dog(Animal):def speak(self):print('小狗:旺旺叫...')
class Cat(Animal):def speak(self):print('小猫:喵喵叫...')
an1 = Dog()
an2 = Cat()
an1.speak()
an2.speak()
鸭子类型测试与多态
1、鸭子类型测试指:若看到一只鸟走起来像鸭子、游泳起来像鸭子、 叫起来也像鸭子,那么这只鸟可以被称为鸭子。
2、Python支持鸭子 类型测试,Python解释器不检查发生多态的对象是否继承了同一个父类,只要它们有相同的行为(方法)它们之间就是多态的。
1、设计一个函数start(),它接收具有“叫"speak()方法的对象:
def start(obj): #接收obj对象具有speak()方法obj.speak( )
2、定义了几个类,它们都有speak()方法:
class Animal:def speak(self):print( '动物叫,但不知道是哪种动物叫! ' )
class Dog(Animal):def speak(self):print('小狗:旺旺叫...')
class Cat(Animal):def speak(self):print('小猫:喵喵叫...')
class Car:def speak(self):print('小汽车:嘀嘀叫...')
3、start()可以接收所有speak()方法对象,代码如下:
start(Dog())
start(Cat())
start(Car())
异常
除零异常:ZeroDivisionErrpr异常
i = input('请输入数字: ')
n = 8888
result = n / int(i)
print(result)
print('{0}除以{1}等于{2}' .format(n, i, result))
异常捕获
我们不能防止用户输入0,但在出现异常后我们能捕获并处理异常,不至于让程序发生终止并退出。亡羊补牢,为时未晚。
i = input('请输入数字:')
n = 8888
try:result = n / int(i)print (result)print(' {0}除以{1}等于{2}'.format(n, i, result))
except ZeroDivisionError as e: # except:print("不能除以0,异常: {}".format(e) )

i = input(’ 请输入数字:”)
n = 8888
try:result = n / int(i)print (result)print( {0}除以{1}等于{2}'.format(n, i, result))
except ZeroDivisionError as e:print("不能除以0,异常: {} ".format(e) )
except ValueError as e:print("输入的是无效数字,异常: {}".format(e))
i = input('请输入数字: ')
n = 8888
try:result = n / int(i)print (result)print('{0}除以{1}等于{2}'.format(n, i, result))
except (ZeroDivisionError, ValueError) as e:print("异常发生: {}".format(e))
i = input('请输入数字: ')
n = 8888
try:i2 = int(i) try :result=n/i2print('{0}除以{1}等于{2}'.format(n, i2, result))except ZeroDivisionError as el:print("不能除以0,异常: {}".format (e1))
except ValueError as e2:print("输入的是无效数字,异常: {}".format (e2))
使用finally代码块

i = input('请输入数字:' )
n = 8888
try:result=n / int(i)print(result)print('{0}除以{1}等于{2}'.format(n, i, result))
except ZeroDivisionError as e:print("不能除以0,异常: {}".format(e) )
except ValueError as e:print ("输入的是无效数字,异常: {}".format (e))
finally: # 释放资源代码print('资源释放...' )
自定义异常类
# 自定义异常类 MyError ,继承普通异常基类 Exception
class MyError(Exception):def __init__(self, value):self.value = valuedef __str__(self):return repr(self.value)try:num = input("请输入数字:")if not num.isdigit(): # 判断输入的是否是数字raise MyError(num) # 输入的如果不是数字,手动指定抛出异常
except MyError as e:print("MyError:请输入数字。您输入的是:", e.value)
手动引发异常
def demo_bad_catch():try:raise ValueError('Represents a hidden bug, do not catch this')raise Exception('This is the exception you expect to handle')except Exception as error:print('Caught this error: ' + repr(error))>>> demo_bad_catch()
Caught this error: ValueError('Represents a hidden bug, do not catch this',)
【参考】https://www.bilibili.com/video/BV19M411r7ix
【参考】https://www.bilibili.com/video/BV1wD4y1o7AS/?spm_id_from=333.999.0.0&vd_source=ae10349a11947050eef839ac15d08136
【参考】https://blog.csdn.net/manongajie/article/details/106344964
【参考】https://blog.csdn.net/p15097962069/article/details/103381588
相关文章:
Python基础复习总结
文章目录Python基础复习Python的下载与安装标识符关键字模块条件、循环语句if elif elsefor循环while循环成员测试Python中的数据类型序列列表 list元组 tuple集合 set字典 dictPython关系运算算术运算符比较运算符逻辑运算符位运算符赋值运算符运算符优先级字符串表示字符串字…...
【Linux操作系统】【综合实验五 网络管理与通信】
文章目录一、实验目的二、实验要求三、实验内容四、实验报告要求一、实验目的 要求了解和熟悉Linux网络客户/服务器管理模式(client/server)与网络环境的配置;熟悉网络远程登录模式与TCP/IP常见终端命令的使用;学会使用在线通信与…...
Qt下实现不规则形状窗口显示
文章目录前言一、资源文件的添加二、初始化窗口三、重写paintEvent函数实现窗口重绘四、重写QMouseEvent相关函数实现不规则窗口的移动及关闭五、demo完整代码六、下载链接总结前言 本文实现了Qt下显示两个不规则形状的窗口demo,其中有Qt的窗口对话框和QPaintEvent…...
使用ribbon实现负载均衡
1.新建两个provider:springcloud-provider-dept-8002 2. 配置跟8001一样 整合 Ribbon 由上述可知,Ribbon 是需要集成在消费端的 所以在消费端 : springcloud-03-consumer-dept-8082 进行修改 在 POM 文件中添加 Ribbon、Eureka 依赖 <!--…...
从页面仔到工程师,前端到底在发挥什么价值
玉伯在前端圈子里摸爬滚打十几年,他对前端价值的理解是什么样的?在他眼里,前端到底是一个怎样的岗位?我们带着这样的问题向他提问。支付宝体验技术部是前端同学最希望加入的团队之一,玉伯带领这个团队做出诸多创新产品…...
Java程序员进阶宝典,让你学习面试无忧!
心净则明,心诚则灵如果你想要一个月速成程序员,那么这篇文章不适合,如果你仅想要在IT圈“耍酷”,那你也不需要研读,如果你执着询问“退化”成为一名程序猿有啥捷径,那我只能告诉你,此路不通!不可…...
Hadoop HDFS的主要架构与读写文件
一、Hadoop HDFS的架构 HDFS:Hadoop Distributed File System,分布式文件系统 1,NameNode 存储文件的metadata,运行时所有数据都保存到内存,整个HDFS可存储的文件数受限于NameNode的内存大小一个Block在…...
面试题练习第五篇
面试题第五篇1. 说说React生命周期中有哪些坑?如何避免?2. 说说Real diff算法是怎么运作的?3. 调和阶段setState干了什么?4. 说说redux的实现原理是什么,写出核心代码?5. React合成事件的原理?6…...
hadoop02【尚硅谷】
HDFS 大数据学习笔记 一、HDFS产出背景及定义 HDFS产生背景 随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件&#x…...
Alist ——本地网盘管理器
Alist ——本地网盘管理器 一、下载工具 Alist https://github.com/alist-org/alist二、启动登录 进入下载好的文件中,在地址栏输入cmd进入命令行启动 进入命令行输入 alist start启动 记住密码,和端口进入浏览器 输入 :127.0.0.1:5244用…...
【白话科普】聊聊网络架构变革的关键——SDN
最近二狗子在网上冲浪的时候,不小心将 CDN 搜索成了 SDN,结果跳出来了一大堆相关的知识点。 好学的二狗子当然不会随随便便糊弄过去,于是认认真真学习了好久,终于了解了 SDN 是什么。 原来,SDN 的全称是 Software De…...
go gin学习记录4
环境 环境:mac m1,go version 1.17.2, goland, mysql 除了原生sql,和orm操作之外,go还有一类包,只用于生成sql,典型的如sqlbuilder,今天就来研究一下它。 安装sqlbuil…...
家政服务小程序实战开发教程015-填充用户信息
我们上一篇讲解了立即预约功能,存在的问题是,每次都需要用户填写联系信息。在我们前述篇章中已经介绍了用户注册的功能,在立即预约的时候我们需要把已经填写的用户信息提取出来,显示到表单对应的字段中。本篇我们就讲解一下如何提…...
python+selenium使用webdriver启动chrome出现闪退现象解决
这两天发现之前开发的爬虫程序出问题了:谷歌浏览器出现打开立即闪退的现象,代码未修改过,检查也没有任何问题! 查看chrome浏览器发现版本更新了 ↑(点击chrome浏览器右上角三个点,最下面帮助→Google Chr…...
新建idea项目
目录IDEA系列之创建各种项目 https://blog.csdn.net/LOVEQD123/article/details/105886077 idea 创建项目的三种方式 https://blog.csdn.net/weixin_50034122/article/details/118754521 创建空项目 https://blog.csdn.net/qq_44537956/article/details/123075134 创建 spri…...
Django框架之类视图
类视图 思考:一个视图,是否可以处理两种逻辑?比如get和post请求逻辑。 如何在一个视图中处理get和post请求 注册视图处理get和post请求 以函数的方式定义的视图称为函数视图,函数视图便于理解。但是遇到一个视图对应的路径提供…...
win11/10+Azure kinect DK配置 VS2019/2017/2015的方法(简单,亲测可以)
首先下载文件:文件的下载和安装方法参考我的博客(131条消息) WIN11/win10Azure Kinect DK详细驱动配置教程(亲测)_Vertira的博客-CSDN博客安装好VS2019,创建好控制台c工程。这些都很简单,不细说。配置:首先配置环境变量…...
子查询的相关例题
子查询的相关例题: 查询和Zlotkey相同部门的员工姓名和工资 SELECT e1.last_name,e1.first_name,e1.salary FROM employees e1 WHERE e1.department_id (SELECT e2.department_idFROM employees e2WHERE e2.last_nameZlotkey );查询工资比公司平均工资高的员工号…...
vue2.0与vue3.0及vue与react区别
vue2.0与3.0及vue与react区别vue2.0 与 vue3.0 区别1. 双向绑定原理2.Vue3支持碎片(Fragments)3.Composition API4.生命周期5.v-if和v-for的优先级6.typescript支持vue与 react区别共同点1.虚拟domdiff算法2.提供了响应式和组件化的视图组件。3.注意力集中保持在核心库…...
【SQL】MySQL秘籍
chihiro-notes 千寻简笔记 v0.1 内测版 📔 笔记介绍 大家好,千寻简笔记是一套全部开源的企业开发问题记录,毫无保留给个人及企业免费使用,我是作者星辰,笔记内容整理并发布,内容有误请指出,笔…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
