Python:六大数据类型理论与示例

在这篇文章中,我们深入探讨了Python中的六大基本数据类型:数字(Number)、字符串(String)、列表(List)、元组(Tuple)、集合(Set)、字典(Dictionary)。每种数据类型都有其特定用途和操作方法,了解它们对于编写高效的Python代码至关重要。

数字类型(Number)

Python支持四种不同的数字类型:整型、布尔型、浮点型和复数。这篇文章详细介绍了数字类型的基本操作和转换方法。例如,int(x)用于将x转换为整数,float(x)将x转换为浮点数,complex(x)将x转换为复数。此外,还探讨了Python中的数字运算,如加减乘除和幂运算。

字符串(String)

字符串是Python中最常用的数据类型之一。在Python中,可以使用单引号或双引号创建字符串。文章中讨论了字符串的基本操作,例如访问子字符串、字符串更新和拆分。特别指出的是,Python支持负索引访问字符串中的值。

列表(List)

列表是Python中非常灵活的数据结构类型。它可以包含不同类型的数据,并且支持增删改查和其他多种操作。文章中深入解释了如何创建和操作列表,包括索引、切片、添加和删除元素。

元组(Tuple)

元组类似于列表,但它是不可变的。这意味着一旦创建了元组,就不能更改其内容。文章中介绍了如何创建和访问元组,以及它们与列表的主要区别。

集合(Set)

集合是一个无序且不重复的元素集。它非常适合用于进行成员关系测试和消除重复元素。文中详细介绍了如何创建集合、添加和删除元素,以及执行常见的集合操作(如并集、交集、差集)。

字典(Dictionary)

字典是Python中一个非常重要的数据结构。它基于键值对,其中每个键都是唯一的。文章中展示了如何创建和访问字典,如何添加、删除和修改字典中的元素。

示例展示

1.1 Python的基础知识

本节的主要目的是介绍一些Python的基础知识。

1.1.1 注释

注释的作用是通过使用自己熟悉的语言,在程序中对某些代码进行标注说明,它能够大大增强程序的可读性。主要的注释方式有三种:单行注释、多行注释和中文注释。 单行注释:以#开头,#右边的所有东西当作说明,而不是真正要执行的程序,起辅助说明作用,代码如下:

# 这是注释,一般写一些下面代码块的功能说明      
print('hello world')  
hello world

多行注释:以```开头和结尾,中间部分是注释内容,一般在内容较多,一行写不下的情况下进行标注说明,代码如下:

'''
这是多行注释,可以写很多很多行的功能说明哦 
哈哈 
哈 
哈哈哈哈哈哈哈哈…
'''
print("多行注释")
多行注释

1.1.2 六大数据类型

1. 变量

在程序中,如果需要对2个数据进行求和,那么该怎样做呢? 类比一下现实生活中,如果去超市买两个商品,我们往往需要一个购物袋来存储商品,所有的商品都购买完成后,在收银台进行结账即可。 在程序中,如果需要对2个数据进行求和的话,也需要把这些数据先存储起来,然后把它们累加起来即可。 在Python中,存储一个数据,就需要一个变量,代码如下:

num1 = 7 #num1就是一个变量,就像一个购物袋    
num2 = 9  #num2也是一个变量    
#把num1和num2这两个"购物袋"中的数据进行累加,然后放到 result变量中    
result = num1 + num2
print(result)
16

所谓变量,可以理解为购物袋,如果需要存储多个数据,最简单的方式是用多个变量。想一想:我们应该让变量占用多大的空间,保存什么样的数据呢? 这就是下面要介绍的六大数据类型。

2. 变量的类型

对于购物袋来说,一般也是有很多种类的,比如小袋子、中袋子和大袋子。每个类型经常装的物品也会有区别。

那么对于变量来说也是一样的,Python里面有六大基础的数据类型,可以更充分地利用内存空间以及更有效率地管理内存。六大数据类型分别为:Numbers(数字)、String(字符串)、List(列表)、Tuple(元组)、Dictionary(字典)和Set(集合)。

1) Numbers数字

数字数据类型下有三个子类型:

a= 1     # Int类型数据赋值    
print(type(a))    
b= 1.0   # Float类型数据赋值    
print(type(b))    
c= 3e+26J # Complex类型数据赋值    
print(type(c))  
<class 'int'>
<class 'float'>
<class 'complex'>

有时候需要对数据内置的类型进行转换,数据类型的转换,只需要将数据类型作为函数名即可:

①:int(x)将x转换为一个整数。

②:float(x)将x转换到一个浮点数。

③:complex(x)将x转换到一个复数,实数部分为x,虚数部分为 0。

④:将x和y转换到一个复数,实数部分为x,虚数部分为y。x和y是数字表达式。

将浮点数变量a转换为整数,代码如下:

a = 1.0    
int(a)
1

(2)数字数据类型的运算:

Python 解释器可以作为一个简单的计算器,在解释器里输入一个表达式,它将输出表达式的值。 表达式的语法很直白,“+”、“-”、“*”、“/”和其他语言(如Pascal或C)里一样。但是有几个值得注意的地方:

①在不同的机器上浮点运算的结果可能会不一样。

②在整数除法中,除法“/” 总是返回一个浮点数,如果只想得到整数的结果,丢弃可能的分数部分,可以使用运算符“//”。

③ “//”得到的并不一定是整数类型的数,它与分母分子的数据类型有关系(例如,7//2.0>>>3.0)。

④Python 可以使用“**”操作来进行幂运算。

⑤变量在使用前必须先“定义”(即赋予变量一个值),否则会出现错误。

⑥不同类型的数混合运算时会将整数转换为浮点数。

Python内置的数字类型数学函数见下表。

(3)Python内置的数字类型随机数函数:

随机函数可以用于数学、游戏、安全等领域中,还经常被嵌入到算法中,用以提高算法效率,并提高程序的安全性,随机函数说明见下表

2) String字符串

字符串是Python中最常用的数据类型。读者可以使用引号(' 或 ")来创建字符串。 创建字符串很简单,只要为变量分配一个值即可,代码如下:

var1 = 'Hello World!'    
var2 = "VenusAI"

(1)Python访问字符串中的值:

Python访问子字符串,可以使用方括号“[]”来截取字符串,字符串的截取的语法格式为:变量名[头下标: 尾下标: 步长],左闭右开,代码如下:

var1 = 'Hello World!'    
var2 = "VenusAI"    
print ("var1[-1]: ", var1[-2])    
print ("var2[::2]: ", var2[::2]) 
var1[-1]:  d
var2[::2]:  VnsI

注意:Python访问字符串中的值也支持下标负索引。

(2) Python字符串更新:

可以截取字符串的一部分并与其他字段拼接,代码如下:

var1 = 'Hello World!'     
print ("已更新字符串 : ", var1[:6] + 'VenusAI!')  
已更新字符串 :  Hello VenusAI!

(3) Python字符串拆分:

可以按照某个元素对字符串进行切分,方法语法:字符串.split(str=" "),代码如下:

value = 'Hello_World!'     
print ("已更新字符串 : ", value.split('_')) 
已更新字符串 :  ['Hello', 'World!']

以“_”为分隔符切片字符串value,返回一个列表来存储分割后的字符串。

(4) Python转义字符:


在计算机中,有些字符是有特殊含义的,例如换行符、制表符、引号等等。如果我们想要表示这些字符本身,而不是它们的特殊含义,就需要使用转义字符来进行表示。Python用反斜杠“\”转义字符,常见的如下:
①(在行尾时) 表示续行符。
②\n:表示换行符,将光标移动到下一行开头。
③\t:表示制表符,将光标移动到下一个制表符位置。
④\r:表示回车符,将光标移动到本行开头。
⑤\b:表示退格符,将光标退回到前一个位置。
⑥\f:表示换页符,将光标移动到下一页开头。
⑦\':表示单引号本身。
⑧\":表示双引号本身。
代码如下:

# \\ 表示反斜杠符号    
print("\\")     
# \n' 表示换行    
print("\\n")     
# \" 表示双引号    
print("\"")    
# "
\
\n
"

(5) Python字符串运算符,代码如下:

a = 'hello'    
b = 'Python'    
# + 字符串连接    
print(a + b)  
# helloPython
# * 重复输出字符串    
print(a*2)     
# hellohello
helloPython
hellohello

(6) Python字符串格式化:

Python支持格式化字符串的输出。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符%s的字符串中。 在Python中,字符串格式化使用与C语言中sprintf函数一样的语法,代码如下:

print ("我叫 %s 今年 %d 岁!" % ('小明', 10))
我叫 小明 今年 10 岁!

Python常用的字符串格式化符号见下表。 

3)List序列

序列是Python中最基本的数据结构。
序列中的每个值都有对应的位置值,称之为索引,第一个索引是0,第二个索引是1,依此类推,List也有负索引。


Python 有6个序列的内置类型,但最常见的是列表类型。


列表可以进行的操作包括索引、切片、加、乘和检查元素。


此外,Python 已经内置函数来确定序列的长度以及确定最大和最小的元素的方法。


列表的数据项不需要具有相同的类型,可以接受任何变量类型。


创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。代码如下:

list1 = ['Python2.0', 'Guido', 2000]    
list2 = [1, 2, 3, 4, 5 ]    
list3 = ["a", "b", "c", "d"]

(1)访问列表中的值:

与字符串的索引一样,列表索引从0开始,第二个索引是 1,依此类推。 通过索引列表可以进行截取、组合等操作,代码如下:

list = ["a", "b", "c", "d"]    
print( list[0] ) # a    
print( list[1] )  # b    
print( list[-2] ) # c    
print( list[-3] ) # b
a
b
c
b

除了使用下标索引来访问列表中的值,也同样可以使用方括号 [头下标: 尾下标],左闭右开的形式截取字符,代码如下:

nums = [10, 20, 30, 40, 50, 60, 70, 80, 90]    
print(nums[0:4]) # 10 20 30 40    
print(nums[2:-3]) # 30 40 50 60
[10, 20, 30, 40]
[30, 40, 50, 60]

(2)更新列表:

可以对列表的数据项进行修改或更新,也可以使用append()方法来添加列表项,代码如下:

list = ['Python2.0', 'VenusAI', 2000]    
print ("第2个元素为 : ", list[1])    
list[1] = 'Community'    
print ("更新后的第2个元素为 : ", list[1])
'''
第2个元素为:Guido  
更新后的第2个元素为:Community  
''' 
list = ['Alibaba', 'Tencent']    
list.append('Baidu')    
print ("更新后的列表 : ", list)

第2个元素为 : VenusAI
更新后的第2个元素为 : Community
更新后的列表 : ['Alibaba', 'Tencent', 'Baidu']

(3)删除列表元素:

可以使用del语句来删除列表中的元素,代码如下:

list = ['Python2.0', 'VenusAI', 2000]  
print ("原始列表 : ", list)  
del list[2]  
print ("删除第3个元素 : ", list)  
原始列表 :  ['Python2.0', 'VenusAI', 2000]
删除第3个元素 :  ['Python2.0', 'VenusAI']

(4)嵌套列表及索引:

使用嵌套列表即在列表里创建其他列表,代码如下:

a = [1, 2, 3]    
b = ['a', 'b']    
x = [a, b]    
print(x) 
# [[1, 2, 3], ['a', 'b']]
[[1, 2, 3], ['a', 'b']]

(5)列表比较:

列表比较则需要引入Operator模块的eq()方法,代码如下:

# 导入 operator 模块    
import operator    
a = [1, 2]    
b = [2, 3]    
c = [2, 3]    
print("operator.eq(a,b): ", operator.eq(a,b))    
print("operator.eq(c,b): ", operator.eq(c,b))  
operator.eq(a,b):  False
operator.eq(c,b):  True

(6)列表插入:

insert()函数用于将指定对象插入列表的指定位置。代码如下: list.insert(index, obj)

参数: ①index:对象obj需要插入的索引位置。 ②obj:要插入列表中的对象。 该方法没有返回值,但会在列表指定位置插入对象。insert()函数的使用代码如下:

list = ['Alibaba', 'Tencent']    
list.insert(1, 'Baidu')    
print ('列表插入元素后为 : ', list)  
列表插入元素后为 :  ['Alibaba', 'Baidu', 'Tencent']

(7)列表统计:

count()方法用于统计某个元素在列表中出现的次数。代码如下:list.count(obj)

参数obj表示要统计的列表对象,返回元素在列表中出现的次数。count()函数的使用代码如下:

list = [1, 2, 1, 1, 2, 3, 4]    
print("3的元素个数: ", list.count(3))    
# 1的元素个数: 3
3的元素个数:  1

(8)列表的排序:

sort()函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。代码如下:

list.sort( key=None, reverse=False)

①参数key:主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。例如,如果你有一个包含字符串的列表,你可以使用 key 参数来指定按字符串长度排序。 ②参数reverse:排序规则,reverse = True,降序;reverse = False,升序(默认)。 该方法没有返回值,但是会对列表的对象进行排序。sort()函数的使用代码如下:

list = ["VenusAI", "www.aideeplearning.cn", "aideeplearning"]    
list.sort(key=len)    
print("排序后的list: ", list)     
排序后的list:  ['VenusAI', 'aideeplearning', 'www.aideeplearning.cn']

4)Tuple元组

Python 的元组与列表类似,不同之处在于元组的元素不能修改。 元组使用小括号“( )”,列表使用方括号“[ ]”。 元组创建很简单,只需要在括号中添加元素,并使用逗号“,”隔开即可。

(1)创建空元组,代码如下:

tuple = ()

注意:元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用,代码如下:

tup1 = (50)    
print(type(tup1)) # 不加逗号,类型为整型    
tup2 = (50,)    
print(type(tup2)) # 加上逗号,类型为元组
<class 'int'>
<class 'tuple'>

(2)元组的增删改查:

增:元组与字符串、列表类似,且可以进行截取、组合等,代码如下:

tup1 = (1, 2)    
tup2 = (3, 4)    
# 创建一个新的元组    
tup3 = tup1 + tup2    
print(tup3*2)    
# (1, 2, 3, 4)
(1, 2, 3, 4, 1, 2, 3, 4)

删:元组中的元素值是不允许删除的,但可以使用del语句来删除整个元组,代码如下:

tup = (1, 2, 3, 4)    
print(tup)    
del tup    
print("删除后的元组tup:", tup)
(1, 2, 3, 4)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
Cell In[50], line 42 print(tup)    3 del tup    
----> 4 print("删除后的元组tup:", tup)NameError: name 'tup' is not defined

改:元组中的元素值是不允许修改的,代码如下:

tup = (3,.14)    
# 以下操作是非法的    
tup[0] = 4    
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[51], line 42 tup = (3,.14)    3 # 以下操作是非法的    
----> 4 tup[0] = 4TypeError: 'tuple' object does not support item assignment

查:元组与字符串类似,元组的访问从下标索引从0开始,当然,也可以使用负索引,代码如下:

tup1 = (1, 2, 3, 4, 5)    
tup2 = ('a', 'b', 'c', 'd', 'e')    
print("tup1[0]: ", tup1[0])    
print("tup2[1:4]: ", tup2[1:4])   
tup1[0]:  1
tup2[1:4]:  ('b', 'c', 'd')

(3)元组运算符:

元组之间可以使用加号“+”和乘号“*”进行运算。这就意味着它们可以组合和复制,运算后会生成一个新的元组。

(4)元组是不可变的:

所谓元组的不可变指的是元组所指向的内存中的内容不可变,代码如下:

tup = (1, 2, 3, 4, 5, 6)     
print(tup)
print(id(tup)) # 查看内存地址     tup = (1,)    
print(tup)
print(id(tup))  
(1, 2, 3, 4, 5, 6)
2410126556800
(1,)
2410127458800

从以上实例可以看出,重新赋值的元组(tup),绑定到新的对象了,不是修改了原来的对象。

5)Dictionary字典

字典是另一种可变容器模型,且可存储任意类型对象。 字典的存储单元是成对出现的key: value,用冒号“:”分割;每个对之间用逗号“,”分割,整个字典包括在花括号“{}”中,代码如下:d = {key1: val1, key2: val2}

# 创建空字典使用大括号{}创建    
emptyDict = {}    
# 也可以使用函数dict()构建    
emptyDict = dict()

字典中,键必须是唯一的,但值可以不唯一。且值可以取任何数据类型,但是键必须是不可变的数据类型,如字符串、数字。代码如下:

tinydict = {'name': 'VenusAI', 'likes': 123, 'url': 'www.aideeplearning.cn'}

函数dict.keys()或dict.values()可以返回字典的键值对,代码如下:

d = {"name":"VenusAI", "age":7}    
print(d.items() )       
print(d.keys()  )    
print(d.values()  )   

dict_items([('name', 'VenusAI'), ('age', 7)])
dict_keys(['name', 'age'])
dict_values(['VenusAI', 7])

(1)字典的增删改查:

增:向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对,代码如下:

tinydict = {'Name': 'VenusAI', 'Age': 7, 'Class': 'First'}    
tinydict['Age'] = 9 # 更新Age    
tinydict['Web'] = "www.aideeplearning.cn"  # 添加信息    
print ("tinydict['Age']: ", tinydict['Age'])     
print ("tinydict['Web']: ", tinydict['Web'])  
print(tinydict)
tinydict['Age']:  9
tinydict['Web']:  www.aideeplearning.cn
{'Name': 'VenusAI', 'Age': 9, 'Class': 'First', 'Web': 'www.aideeplearning.cn'}

删:能删单一的元素,也能清空字典,清空只需一项操作。显式删除一个字典用del命令,代码如下:

tinydict = {'Name': 'VenusAI', 'Age': 7, 'Web': 'www.aideeplearning.cn'}    
print(tinydict)
del tinydict['Name'] # 删除键 'Name'  
print(tinydict)
tinydict.clear()     # 清空字典
print(tinydict)
del tinydict         # 删除字典
print(tinydict)
{'Name': 'VenusAI', 'Age': 7, 'Web': 'www.aideeplearning.cn'}
{'Age': 7, 'Web': 'www.aideeplearning.cn'}
{}
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
Cell In[58], line 86 print(tinydict)7 del tinydict         # 删除字典
----> 8 print(tinydict)NameError: name 'tinydict' is not defined

改:通过索引关键字赋值的方式修改键值,代码如下:

tinydict = {'Name': 'VenusAI', 'Age': 7, 'Web': 'www.aideeplearning.cn'}    
tinydict['Name'] = 'Venus'    
print(tinydict)
{'Name': 'Venus', 'Age': 7, 'Web': 'www.aideeplearning.cn'}

查:通过索引关键字的方法查询键值,注意:如果用字典里没有的键访问数据,会输出错误,代码如下:

tinydict =  {'Name': 'VenusAI', 'Age': 7, 'Web': 'www.aideeplearning.cn'}    
print ("tinydict['Web']: ", tinydict['Web']) 
tinydict['Web']:  www.aideeplearning.cn

(2)关于字典的两个重要点:

第一,不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,代码如下:

tinydict = {'Name': 'Venus', 'Age': 7, 'Name': 'VenusAI'}    
print ("tinydict['Name']: ", tinydict['Name']) 
tinydict['Name']:  VenusAI

第二,键必须不可变,所以可以用数字、字符串或元组充当,而用列表就不行,使用列表作为键时输出将会报错,代码如下:

tinydict = {['Name']: 'VenusAI', 'Age': 7}
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[62], line 1
----> 1 tinydict = {['Name']: 'VenusAI', 'Age': 7}TypeError: unhashable type: 'list'

6)Set集合

集合是一个无序的不重复元素序列。可以使用大括号“{}”或者set()函数创建集合,注意:创建一个空集合必须用set()而不是set{},因为“{}”是用来创建一个空字典。代码如下:

param = {value01,value02,...}

param = set(value)

由于集合的性质之一是存放不重复的元素,因此可以用于去重功能,代码如下:

basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}    
print(basket) 
{'banana', 'apple', 'pear', 'orange'}

(1)两个集合间的运算,代码如下:

a = set('abracadabra')    
b = set('alacazam')    # 集合a中包含而集合b中不包含的元素    
print(a - b )       
# 集合a或b中包含的所有元素    
print(a | b)        
# 集合a和b中都包含了的元素    
print(a & b)        
# 不同时包含于a和b的元素
print(a ^ b)      
{'b', 'r', 'd'}
{'l', 'r', 'm', 'b', 'z', 'd', 'c', 'a'}
{'c', 'a'}
{'b', 'z', 'l', 'd', 'r', 'm'}

(2)集合的增删改查:

增:将元素x添加到集合s中,如果元素已存在,则不进行任何操作,代码如下:

tinyset = set(("Google", "Baidu", "VenusAI"))    
tinyset.add("Facebook")    
print(tinyset) 
{'VenusAI', 'Google', 'Facebook', 'Baidu'}

还有一个方法,也可以添加元素,且参数可以是列表、元组、字典等,语法格式s.update(x),其中,x可以有多个,用逗号分开,代码如下:

tinyset = set(("Google", "Amazon", "Taobao"))    
tinyset.update({1,3})    
print(tinyset)  
{1, 'Google', 3, 'Amazon', 'Taobao'}

删:将元素x从集合s中移除,如果元素不存在,则会发生错误。语法格式s.remove(x),代码如下:

tinyset = set(("Google",  "Baidu", "Amazon"))    
tinyset.clear()    
print(tinyset)   
set()

此外还有一个方法也是移除集合中的元素,并且如果元素不存在,不会发生错误。格式为s.discard(x)。

清空集合的语法格式为s.clear()。

改:集合不支持索引,因此修改元素时一般把集合数据类型转换成列表数据类型。

查:判断元素是否在集合中存在,代码如下:

tinyset = set(("Google", "Baidu", "Amazon"))    
print( "Amazon" in tinyset)      
print( "FaceBook" in tinyset)      tup=(1,23)
tup=(2,)
True
False

3. 小结

(1)可变数据类型:列表、字典、集合。总结这三种数据类型的增删改查方法。

(2)不可变数据类型:元组、数字、字符串。注意,一些初学者可能认为他们可变的原因实际上是这些变量名可以被重新赋值,造成了可变的假象。但是索引这些变量名中的元素是不可被重新赋值的。

(3)下标索引:所谓“下标”,就是编号,就好比超市中的存储柜的编号,通过这个编号就能找到相应的存储空间。下标分为正索引和负索引。字符串、列表、元组都支持下标索引,字典则是关键字索引。

(4)切片:切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。切片的语法:[起始:结束:步长]。

注意:选取的区间属于左闭右开型,即从“起始”位开始,到“结束”位的前一位结束(不包含结束位本身),以字符串为例讲解。 如果取出一部分,且间隔取样,则可以在中括号“[]”中,代码如下:

s = "abcdefghi"     
print(s[1:7:2])
# bdf
bdf

(5)公共方法,Python包含的内置函数见下表。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/806638.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hive的分区与排序

一、Hive分区 1.引入&#xff1a; 在大数据中&#xff0c;最常见的一种思想就是分治&#xff0c;我们可以把大的文件切割划分成一个个的小的文件&#xff0c;这样每次操作一个个小的文件就会很容易了&#xff0c;同样的道理&#xff0c;在hive当中也是支持这种思想的&#xff…

UE4 避免布料模拟重置后抖动

问题&#xff1a;每次设置带布料模拟的布料新位置&#xff0c;就会发生突然的抖动 解决办法&#xff1a;给“布料混合权重”或“布料最大距离缩放”K帧&#xff0c;参考数值为0.2—1&#xff08;红框内的值都试过无法解决&#xff09;

JVM性能调优——运行时参数

文章目录 1、JVM参数选项类型1.1、标准参数选项1.2、非标准参数选项1.3、非稳定参数选项 2、添加JVM参数的方式3、常用JVM参数选项4、通过Java代码获取JVM参数5、小结 熟悉JVM参数对于系统调优是非常重要的。比如一个高流量的延迟的电子交易平台&#xff0c;它要求的响应时间都…

头歌机器学习实验 第7次实验 局部加权线性回归

任务描述 本关任务&#xff1a;编写一个利用局部加权计算回归系数的小程序。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;1.局部加权算法的思想&#xff1b;2.局部加权的核心算法。 局部加权算法的思想 在局部加权算法中 &#xff0c;我们给待预测点附近…

【mT5多语言翻译】之六——推理:多语言翻译与第三方接口设计

请参考本系列目录&#xff1a;【mT5多语言翻译】之一——实战项目总览 [1] 模型翻译推理 在分别使用全量参数微调和PEFT微调训练完模型之后&#xff0c;我们来测试模型的翻译效果。推理代码如下&#xff1a; # 导入模型 if conf.is_peft:model AutoModelForSeq2SeqLM.from_pr…

为什么需要SOCKS代理?

在数字化时代&#x1f310;&#xff0c;随着网络安全威胁的不断演进和增加&#xff0c;保护个人隐私和数据安全成为了互联网用户的一大挑战&#x1f6e1;️。在寻求增强在线安全和隐私的解决方案时&#xff0c;SOCKS代理成为了一个关键的技术工具&#x1f511;。本文旨在详细探…

python如何输入多行

Python中的Input()函数在输入时&#xff0c;遇到回车符&#xff0c;那么一次输入就结束了。这不能满足输入多行文本并且行数也不确定的情形&#xff0c;当然输入空行也是允许的。 方法1&#xff1a;利用异常处理机制实现 lines[] while True:try:lines.append(input())except:…

JSON三种数据解析方法

文章目录 一、什么是JSON数据&#xff1f;二、JSON解析方法2.1、原生解析2.2、Gson解析2.3、FastJson解析 四、总结 一、什么是JSON数据&#xff1f; 先看下面&#xff0c;这里有一段JSON数据&#xff0c;我们根据这段数进行讲解&#xff1a; {"paramz": {"fe…

springboot+vue全栈开发【1.准备工作篇】

目录 前言环境配置关于Maven 前言 为了坚持每天写博客所以开了这个系列~~ 环境配置 1.配置java环境&#xff0c;下载jdk&#xff0c;配置环境变量 这一步有很多教程&#xff0c;不赘述了 2.安装idea 关于Maven Maven是一个项目管理工具&#xff0c;可以对java项目进行自动化…

Harmony与Android项目结构对比

主要文件对应 Android文件HarmonyOS文件清单文件AndroidManifest.xmlmodule.json5Activity/Fragmententryability下的ts文件XML布局pages下的ets文件resresourcesModule下的build.gradleModule下的build-profile.json5gradlehvigor根目录下的build.gradle根目录下的build-profi…

Linux——fork复制进程

1)shell: 在计算机科学中&#xff0c;Shell俗称壳&#xff08;用来区别于核&#xff09;&#xff0c;是指“为使用者提供操作界面”的软件&#xff08;command interpreter&#xff0c;命令解析器&#xff09;。它类似于DOS下的COMMAND.COM和后来的cmd.exe。它接收用户命令&…

【Locust分布式压力测试】

Locust分布式压力测试 https://docs.locust.io/en/stable/running-distributed.html Distributed load generation A single process running Locust can simulate a reasonably high throughput. For a simple test plan and small payloads it can make more than a thousan…

30岁《爱·回家》小花多次得罪高层,正式宣布离巢TVB。

30岁的苏韵姿&#xff08;Andrea&#xff09;16年选港姐入行&#xff0c;虽然无三甲名次&#xff0c;但靠着皇后大学戏剧学士学位背景&#xff0c;她很快已有机会入剧组&#xff0c;凭《爱回家之开心速递》熊心如&#xff08;红衫鱼&#xff09;一角成功入屋&#xff0c;不过去…

Mongodb入门--头歌实验MongoDB 数据库基本操作

一、数据库创建 任务描述 本关任务&#xff1a;创建数据库。 相关知识 本关评测是在 Linux 环境下进行的&#xff0c;MongoDB 的安装与配置测评系统均已默认完成。 为了完成本关任务&#xff0c;你需要掌握&#xff1a; 1.如何连接数据库&#xff1b; 2.如何创建数据库。 连接数…

双云及多云融合(混合云)

背景&#xff1a;客户对于业务的高可用需求&#xff0c;当发生故障时&#xff0c;业务还能正常使用&#xff0c;如某云机房整体宕机&#xff0c;或云管理服务整体宕掉&#xff0c;导致客户业务不可用&#xff0c;此时&#xff0c;需有业务能顺利切换到灾备云上。 需求&#xf…

[蓝桥杯 2018 国 C] 迷宫与陷阱

题目&#xff1a; 思路&#xff1a; 代码&#xff1a; #include <bits/stdc.h> using namespace std; const int N1e310; char g[N][N];//输入&#xff1a;图的数组 int vis[N][N]; /* 剪枝&#xff1a;记录magic的个数&#xff08;一个点经过两次&#xff0c;magic越大…

【讲解下如何从零基础学习Java】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

设计模式学习笔记 - 设计模式与范式 -行为型:9.迭代器模式(上):相比直接遍历集合数据,使用迭代器模式有哪些优势?

概述 上篇文章&#xff0c;我们学习了状态模式。状态模式是状态机的一种实现方式。它通过将事件触发的状态转移和动作执行&#xff0c;拆分到不同的状态类中&#xff0c;以此来避免状态机类中的分支判断逻辑&#xff0c;应对状态机类代码的复杂性。 本章&#xff0c;学习另外…

Dude, where’s that IP? Circumventing measurement-based IP geolocation(2010年)

下载地址:https://www.usenix.org/legacy/event/sec10/tech/full_papers/Gill.pdf 被引次数:102 Gill P, Ganjali Y, Wong B. Dude, Wheres That {IP}? Circumventing Measurement-based {IP} Geolocation[C]//19th USENIX Security Symposium (USENIX Security 10). 2010.…

day55 最长递增子序列 最长连续递增子序列 最长重复子数组

题目1 300 最长递增子序列 题目链接 300 最长递增子序列 题意 找到整数数组nums的最长严格递增子序列的长度&#xff08;子序列并不改变原始的顺序&#xff0c;但是可以删除元素&#xff09; 动态规划 动规五部曲 1&#xff09;dp数组及下标i的含义 dp[i] 表示以nums[i…