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
相关文章:
![](https://img-blog.csdnimg.cn/0167379ac0c346e4aea0c2ee12f41713.png)
Python基础复习总结
文章目录Python基础复习Python的下载与安装标识符关键字模块条件、循环语句if elif elsefor循环while循环成员测试Python中的数据类型序列列表 list元组 tuple集合 set字典 dictPython关系运算算术运算符比较运算符逻辑运算符位运算符赋值运算符运算符优先级字符串表示字符串字…...
![](https://www.ngui.cc/images/no-images.jpg)
【Linux操作系统】【综合实验五 网络管理与通信】
文章目录一、实验目的二、实验要求三、实验内容四、实验报告要求一、实验目的 要求了解和熟悉Linux网络客户/服务器管理模式(client/server)与网络环境的配置;熟悉网络远程登录模式与TCP/IP常见终端命令的使用;学会使用在线通信与…...
![](https://img-blog.csdnimg.cn/3f16a5353bb84ab19b941044706258e1.png)
Qt下实现不规则形状窗口显示
文章目录前言一、资源文件的添加二、初始化窗口三、重写paintEvent函数实现窗口重绘四、重写QMouseEvent相关函数实现不规则窗口的移动及关闭五、demo完整代码六、下载链接总结前言 本文实现了Qt下显示两个不规则形状的窗口demo,其中有Qt的窗口对话框和QPaintEvent…...
![](https://img-blog.csdnimg.cn/7c3d79b0b1524ee28221eac9bba00f1c.png)
使用ribbon实现负载均衡
1.新建两个provider:springcloud-provider-dept-8002 2. 配置跟8001一样 整合 Ribbon 由上述可知,Ribbon 是需要集成在消费端的 所以在消费端 : springcloud-03-consumer-dept-8082 进行修改 在 POM 文件中添加 Ribbon、Eureka 依赖 <!--…...
![](https://www.ngui.cc/images/no-images.jpg)
从页面仔到工程师,前端到底在发挥什么价值
玉伯在前端圈子里摸爬滚打十几年,他对前端价值的理解是什么样的?在他眼里,前端到底是一个怎样的岗位?我们带着这样的问题向他提问。支付宝体验技术部是前端同学最希望加入的团队之一,玉伯带领这个团队做出诸多创新产品…...
![](https://img-blog.csdnimg.cn/img_convert/9de82c3f10b78146f29ee77da188ed2f.webp?x-oss-process=image/format,png)
Java程序员进阶宝典,让你学习面试无忧!
心净则明,心诚则灵如果你想要一个月速成程序员,那么这篇文章不适合,如果你仅想要在IT圈“耍酷”,那你也不需要研读,如果你执着询问“退化”成为一名程序猿有啥捷径,那我只能告诉你,此路不通!不可…...
![](https://img-blog.csdnimg.cn/a1f07aa96bc848799860d7bec46607b3.png)
Hadoop HDFS的主要架构与读写文件
一、Hadoop HDFS的架构 HDFS:Hadoop Distributed File System,分布式文件系统 1,NameNode 存储文件的metadata,运行时所有数据都保存到内存,整个HDFS可存储的文件数受限于NameNode的内存大小一个Block在…...
![](https://www.ngui.cc/images/no-images.jpg)
面试题练习第五篇
面试题第五篇1. 说说React生命周期中有哪些坑?如何避免?2. 说说Real diff算法是怎么运作的?3. 调和阶段setState干了什么?4. 说说redux的实现原理是什么,写出核心代码?5. React合成事件的原理?6…...
![](https://img-blog.csdnimg.cn/1516141d3ed6422ba1177f1ab7d18d96.png)
hadoop02【尚硅谷】
HDFS 大数据学习笔记 一、HDFS产出背景及定义 HDFS产生背景 随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件&#x…...
![](https://img-blog.csdnimg.cn/9dd1d7969ade47b397718b5bf1304e03.png)
Alist ——本地网盘管理器
Alist ——本地网盘管理器 一、下载工具 Alist https://github.com/alist-org/alist二、启动登录 进入下载好的文件中,在地址栏输入cmd进入命令行启动 进入命令行输入 alist start启动 记住密码,和端口进入浏览器 输入 :127.0.0.1:5244用…...
![](https://img-blog.csdnimg.cn/12ba507ded364652b7a4fa60c7186ad4.png#pic_center)
【白话科普】聊聊网络架构变革的关键——SDN
最近二狗子在网上冲浪的时候,不小心将 CDN 搜索成了 SDN,结果跳出来了一大堆相关的知识点。 好学的二狗子当然不会随随便便糊弄过去,于是认认真真学习了好久,终于了解了 SDN 是什么。 原来,SDN 的全称是 Software De…...
![](https://img-blog.csdnimg.cn/5c45ce98c5574a129532cee9bca8fefe.png)
go gin学习记录4
环境 环境:mac m1,go version 1.17.2, goland, mysql 除了原生sql,和orm操作之外,go还有一类包,只用于生成sql,典型的如sqlbuilder,今天就来研究一下它。 安装sqlbuil…...
![](https://img-blog.csdnimg.cn/12fbb56062d948209555ea4873d4ac5d.png)
家政服务小程序实战开发教程015-填充用户信息
我们上一篇讲解了立即预约功能,存在的问题是,每次都需要用户填写联系信息。在我们前述篇章中已经介绍了用户注册的功能,在立即预约的时候我们需要把已经填写的用户信息提取出来,显示到表单对应的字段中。本篇我们就讲解一下如何提…...
![](https://img-blog.csdnimg.cn/20795820e1ab45abb92df39395878585.png)
python+selenium使用webdriver启动chrome出现闪退现象解决
这两天发现之前开发的爬虫程序出问题了:谷歌浏览器出现打开立即闪退的现象,代码未修改过,检查也没有任何问题! 查看chrome浏览器发现版本更新了 ↑(点击chrome浏览器右上角三个点,最下面帮助→Google Chr…...
![](https://img-blog.csdnimg.cn/5b249afb45d14f1bb7543849091cbb03.png)
新建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…...
![](https://img-blog.csdnimg.cn/66701122d6b544059fe4c7a6156c6039.png)
Django框架之类视图
类视图 思考:一个视图,是否可以处理两种逻辑?比如get和post请求逻辑。 如何在一个视图中处理get和post请求 注册视图处理get和post请求 以函数的方式定义的视图称为函数视图,函数视图便于理解。但是遇到一个视图对应的路径提供…...
![](https://img-blog.csdnimg.cn/img_convert/5774f779ba99284b97d2759017f92eed.png)
win11/10+Azure kinect DK配置 VS2019/2017/2015的方法(简单,亲测可以)
首先下载文件:文件的下载和安装方法参考我的博客(131条消息) WIN11/win10Azure Kinect DK详细驱动配置教程(亲测)_Vertira的博客-CSDN博客安装好VS2019,创建好控制台c工程。这些都很简单,不细说。配置:首先配置环境变量…...
![](https://www.ngui.cc/images/no-images.jpg)
子查询的相关例题
子查询的相关例题: 查询和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 );查询工资比公司平均工资高的员工号…...
![](https://www.ngui.cc/images/no-images.jpg)
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.注意力集中保持在核心库…...
![](https://img-blog.csdnimg.cn/img_convert/c4bc594b440aaf8115a4e79c3f658bfa.png)
【SQL】MySQL秘籍
chihiro-notes 千寻简笔记 v0.1 内测版 📔 笔记介绍 大家好,千寻简笔记是一套全部开源的企业开发问题记录,毫无保留给个人及企业免费使用,我是作者星辰,笔记内容整理并发布,内容有误请指出,笔…...
![](https://img-blog.csdnimg.cn/1948d57eb5144ae280d9b128cc421477.png)
vue-router 的基本用法
vue-router 的基本用法 1.什么是 vue-router vue-router 是 vue.js 官方给出的路由解决方案。它只能结合 vue 项目进行使用,能够轻松的管理 SPA 项目中组件的切换。 vue-router 的官方文档地址:https://router.vuejs.org/zh/ 2.vue-router 安装和配置的…...
![](https://img-blog.csdnimg.cn/8d5c67a95366411d912bbba29acbd5eb.jpeg)
图像显著性目标检测
一、概述 1、定义 图像显著性检测(Saliency Detection,SD), 指通过智能算法模拟人的视觉系统特点,预测人类的视觉凝视点和眼动,提取图像中的显著区域(即人类感兴趣的区域),可以广泛用于目标识别、图像编辑以及图像检索等领域&am…...
![](https://img-blog.csdnimg.cn/7d43a127963841ff84f31eb3b939f631.png)
力扣-查找重复的电子邮箱
大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目:182. 查找重复的电子邮箱二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果总结…...
![](https://www.ngui.cc/images/no-images.jpg)
如何选择正规可靠的ISO认证机构?
ISO认证其实早已融入我们生活中,因为日常生活很多产品都有认证标识,企业办理ISO体系就需要找第三方认证公司,市面上这种公司也有不少,但找到合适可靠、认真负责的还是不易,尤其是体系认证有年审,如何留住客…...
![](https://img-blog.csdnimg.cn/img_convert/9f346eae0f7a14e8625a018f006e5230.webp?x-oss-process=image/format,png)
React源码解读之更新的创建
React 的鲜活生命起源于 ReactDOM.render ,这个过程会为它的一生储备好很多必需品,我们顺着这个线索,一探婴儿般 React 应用诞生之初的悦然。 更新创建的操作我们总结为以下两种场景 ReactDOM.rendersetStateforceUpdate ReactDom.render …...
![](https://img-blog.csdnimg.cn/img_convert/af268335fd2aceffeca784a4fd097aa5.png)
【程序人生】从土木专员到网易测试工程师,薪资翻3倍,他经历了什么?
转行对于很多人来说,是一件艰难而又纠结的事情,或许缺乏勇气,或许缺乏魄力,或许内心深处不愿打破平衡。可对于我来说,转行是一件不可不为的事情,因为那意味着新的方向、新的希望。我是学工程管理的…...
![](https://img-blog.csdnimg.cn/db2af71a3c1a4c8ca13906dfa74a66ec.png)
C++——C++11第二篇
目录 可变参数模板 lambda表达式 lambda表达式语法 捕获列表说明 可变参数模板 可变参数:可以有0到n个参数,如之前学过的 Printf C11的新特性可变参数模板能够让您创建可以接受可变参数的函数模板和类模板 模板参数包 // Args是一个模板参数包&…...
![](https://www.ngui.cc/images/no-images.jpg)
14.最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入:strs ["flower","flow","flight"]输出:"fl"示例 2:输入&…...
![](https://img-blog.csdnimg.cn/img_convert/52e27cbe1a2346c8260d23a4c4015d0b.jpeg)
【免费教程】 SWMM在城市水环境治理中的应用及案例分析
SWMMSWMM(storm water management model,暴雨洪水管理模型)是一个动态的降水-径流模拟模型,主要用于模拟城市某一单一降水事件或长期的水量和水质模拟。EPA(Environmental Protection Agency,环境保护署&am…...
![](https://img-blog.csdnimg.cn/2fff1f879b4e40cba11b027ff70a8807.gif)
SortableJS/Sortable拖拽组件,使用详细(Sortablejs安装使用)
简述 作为一名前端开发人员,在工作中难免会遇到拖拽功能,分享一个github上一个不错的拖拽js库,能满足我们在项目开发中的需要,支持Vue和React,下面是SortableJS的使用详细; 这个是sortableJS中文官方文档&…...
![](https://img-blog.csdnimg.cn/20181213230403127.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dvZGV5aWppYTkxMQ==,size_16,color_FFFFFF,t_70)
改域名 wordpress/搜索引擎优化seo名词解释
目录 开始信息 形容整个过程的不合理 几个选项的选择 留悬念与对比 说明特点 数量强调 开始信息 形容整个过程的不合理 ps: 说明人之间的对话,其实不会每次都叫名字的 几个选项的选择 留悬念与对比 说明特点 数量强调...
![](/images/no-images.jpg)
网站需要怎么做的吗/口碑营销的前提及好处有哪些
MySQL is not running, but lock file (/var/lock/subsys/mysql) exists存在这个问题的一般是由三个原因决定的:1:配置中的一些文件权限不够,将所有的配置中涉及到的文件全部修改为mysql用户权限2:mysql运行的pid没有,…...
![](/images/no-images.jpg)
做ppt模板网站/百度百科入口
http://rcv.kaist.ac.kr/~ail/...
![](http://images0.cnblogs.com/blog2015/592102/201506/271621005953098.png)
中山企业集团网站建设/营销方案设计思路
2019独角兽企业重金招聘Python工程师标准>>> VMWare 11 版本给虚拟机默认分配20G磁盘,扩展至30G。下面是扩展方法: 虚拟机磁盘扩容虚拟机保持关闭状态,设置 -> 磁盘 -> 拓展 -> 最大磁盘大小 设成 30G 系统中使用拓展的…...
![](/images/no-images.jpg)
中科汇联网站建设手册/百度首页排名优化公司
Description L公司有N个工厂,由高到底分布在一座山上。如图所示,工厂1在山顶,工厂N在山脚。由于这座山处于高原内 陆地区(干燥少雨),L公司一般把产品直接堆放在露天,以节省费用。突然有一天&…...
![](http://acm.hdu.edu.cn/data/images/C21-1005-1.gif)
做英剧网站的设计思路/百度问一问免费咨询
漂亮面料的设计 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 549 Accepted Submission(s): 206 Problem Description现在的CAD技术已经能够很方便地设计出漂亮的面料,如图(b&#x…...