Python的基础数据类型

1.Python中提供了六种内置的数据类型,一般用于存储数据:
–数值Number
–字符串String
–列表List
–元组Tuple
–字典Dictionary
–集合Set
2.Python中的数据类型可以做以下几个分类:
–有序:可以使用下标(索引)访问元素
–无序:不可以使用下标(索引)访问元素
–可变:可以被修改
–不可变:不可以被修改

有序无序
可变列表字典、集合
不可变字符串、元组数值

数值类型

Python3中数值类型支持:

类型范围
int1,2(-无穷,+无穷)
float(无double)1.2,3.7E-2(科学计数法,10的-2次方)(-无穷,+无穷)
boolean(继承了int类型True(参与计算的话,True默认1,False默认0[True,False]
complexx+yjx是实数部分,y是虚数部分

基本算术运算

a = 10
b = 3# 加法
sum_result = a + b  # 结果为13# 减法
sub_result = a - b  # 结果为7# 乘法
mul_result = a * b  # 结果为30# 除法(浮点数)
div_result = a / b  # 结果为3.333...# 整数除法(向下取整)
floor_div = a // b  # 结果为3# 取模(余数)
mod_result = a % b  # 结果为1# 幂运算
power_result = a ** b  # 结果为1000

数值类型转换

x = 5.7# 转换为整数(截断小数)
int_x = int(x)  # 结果为5# 转换为浮点数
float_x = float(10)  # 结果为10.0# 复数运算
complex_num = complex(2, 3)  # 结果为2+3j

数学函数

import math# 平方根
sqrt_val = math.sqrt(16)  # 结果为4.0# 对数
log_val = math.log(10, 2)  # 以2为底10的对数# 三角函数
sin_val = math.sin(math.pi / 2)  # 结果为1.0# 阶乘
factorial_val = math.factorial(5)  # 结果为120# 求和
c = math.sum(a,b) # 最大值最小值
a = math.max(c,b)
a = math.min(c,b)# 返回两个数值的商和余数
a,b = math.divmod(y,x)#### 其他常用函数
- 幂运算:`math.pow(x, y)` 计算x的y次方
- 绝对值:`math.fabs(x)` 浮点数绝对值,整数求绝对值math.abs(x)
- 取整:`math.ceil(x)`向上取整,`math.floor(x)`向下取整
- 常量:`math.pi`圆周率,`math.e`自然对数底数注意:对于复数运算,需要使用cmath模块而非math模块。## 数学函数详解

随机数生成

import random# 生成0到1之间的随机浮点数
rand_float = random.random()# 生成指定范围内的整数
rand_int = random.randint(1, 100)# 从序列中随机选择
rand_choice = random.choice([1, 2, 3, 4, 5])

数值比较与逻辑运算

x = 5
y = 10# 比较运算
greater = x > y  # False
equal = x == 5  # True# 逻辑运算
logical_and = (x < 10) and (y > 5)  # True
logical_or = (x == 5) or (y == 0)  # True

字符和字符串

字符串的基本定义

在Python中,字符串是由零个或多个字符组成的不可变序列,用单引号(')、双引号(")或三引号('''""")包裹。例如:

str1 = 'Hello'
str2 = "World"
str3 = '''多行
字符串'''

字符串的特性

  • 不可变性:字符串一旦创建,其内容无法修改。若需改变,需创建新字符串。
  • 编码支持:Python 3默认使用Unicode编码(UTF-8),可直接处理多语言字符。
  • 转义字符:通过反斜杠(\)插入特殊字符,如\n(换行)、\t(制表符)。

多行字符串

三引号允许字符串跨越多行,保留换行和缩进格式:

multi_line = """这是
一个多行
字符串"""

原始字符串(Raw String)

在字符串前加rR,忽略转义字符,常用于正则表达式或文件路径

raw_str = r"C:\new_folder\temp"

字符串的常见操作

  • 拼接:用+连接字符串。
  • 重复:用*重复字符串,如'a' * 3得到'aaa'
  • 索引与切片:通过下标访问字符或子串,如str1[0]str1[1:4]
  • 切片的批量操作:str[a: b :c],a是其实元素的位置,b是终止元素的位置,c是步长。str[::]表示取所有;str[::2]表示每两个取一个。abc同样可以为负数。

字符串格式化

Python提供多种格式化方法:

  • f-string(Python 3.6+):
    name = "Alice"
    greeting = f"Hello, {name}"
    
  • format()方法
    template = "{} {}".format("Hello", "Bob")
    
  • 百分号(%)格式化(旧式):
    formatted = "Value: %d" % 42
    

字符串的基本定义

在Python中,字符串是由零个或多个字符组成的不可变序列,用单引号(')、双引号(")或三引号('''""")包裹。例如:

str1 = 'Hello'
str2 = "World"
str3 = '''多行
字符串'''

字符串的特性

  • 不可变性:字符串一旦创建,其内容无法修改。若需改变,需创建新字符串。
  • 编码支持:Python 3默认使用Unicode编码(UTF-8),可直接处理多语言字符。
  • 转义字符:通过反斜杠(\)插入特殊字符,如\n(换行)、\t(制表符)。

多行字符串

三引号允许字符串跨越多行,保留换行和缩进格式:

multi_line = """这是
一个多行
字符串"""

原始字符串(Raw String)

在字符串前加rR,忽略转义字符,常用于正则表达式或文件路径:

raw_str = r"C:\new_folder\temp"

字符串的常见操作

  • 拼接1:用+连接字符串。
  • 拼接2:“–”.join(“HUAWEI”) ==> ‘H–U–A–W–E–I’
  • 重复:用*重复字符串,如'a' * 3得到'aaa'
  • 索引与切片:通过下标访问字符或子串,如str1[0]str1[1:4]
  • 分割:str.split(str1),以str1为分隔符对字符串切割, “python”.split(‘t’) ==> [‘py’, ‘hon’]
  • 替换:“python”.replace(‘py’,‘PY’) ==> ‘PYthon’
  • 大写: “python”.upper()==>‘PYTHON’
  • 小写:“PYTHON”.lower()==>‘python’
  • 格式化输出:print(“我的名字叫%s,今年%a岁”%(“Zonda”,26))==>我的名字叫Zonda,今年26岁

元组

元组的定义

元组(Tuple)是Python中的一种不可变有序序列,用于存储多个元素。元组使用圆括号()定义,元素之间用逗号分隔。即使只有一个元素,也需要在元素后加逗号以区分元组和其他数据类型。

# 定义元组
tuple1 = (1, 2, 3)          # 多元素元组
tuple2 = ("a",)             # 单元素元组(需加逗号)
tuple3 = tuple([4, 5, 6])   # 通过构造函数创建

元组的特性

不可变性:元组一旦创建,其 元素不可修改、删除或添加。但若元素本身是可变对象(如列表),其内容可修改。
有序性:元组中的元素按定义顺序存储,支持索引和切片操作

# 不可变示例
t = (1, 2, [3, 4])
t[2][0] = 5  # 合法,修改元组中的列表元素
t[0] = 10    # 非法,抛出TypeError

元组的常见操作

索引与切片:通过下标访问元素,切片返回新元组。
遍历:使用for循环遍历元组。
拼接与重复+拼接元组,*重复元组。

t = (1, 2, 3, 4)
print(t[1])       # 输出: 2
print(t[1:3])     # 输出: (2, 3)
new_t = t + (5,)  # 拼接: (1, 2, 3, 4, 5)

元组与列表的区别

可变性:列表可变,元组不可变。
性能:元组因不可变性,通常比列表更高效,适合作为字典键或常量集合。
用途:列表用于动态数据,元组用于保护数据不被修改。

# 元组作为字典键
dict_key = {("a", "b"): "value"}
```### 元组的定义  
元组(Tuple)是Python中的一种不可变有序序列,用于存储多个元素。元组使用圆括号`()`定义,元素之间用逗号分隔。即使只有一个元素,也需要在元素后加逗号以区分元组和其他数据类型。  ```python
# 定义元组
tuple1 = (1, 2, 3)          # 多元素元组
tuple2 = ("a",)             # 单元素元组(需加逗号)
tuple3 = tuple([4, 5, 6])   # 通过构造函数创建

元组的特性

不可变性:元组一旦创建,其元素不可修改、删除或添加。但若元素本身是可变对象(如列表),其内容可修改。
有序性:元组中的元素按定义顺序存储,支持索引和切片操作。

# 不可变示例
t = (1, 2, [3, 4])
t[2][0] = 5  # 合法,修改元组中的列表元素
t[0] = 10    # 非法,抛出TypeError

元组的常见操作

索引与切片:通过下标访问元素,切片返回新元组。
遍历:使用for循环遍历元组。
拼接与重复+拼接元组,*重复元组。

t = (1, 2, 3, 4)
print(t[1])       # 输出: 2
print(t[1:3])     # 输出: (2, 3)
new_t = t + (5,)  # 拼接: (1, 2, 3, 4, 5)

元组与列表的区别

可变性:列表可变,元组不可变。
性能:元组因不可变性,通常比列表更高效,适合作为字典键或常量集合。
用途:列表用于动态数据,元组用于保护数据不被修改。

# 元组作为字典键
dict_key = {("a", "b"): "value"}

列表

Python列表的定义

Python列表是一种有序、可变的数据结构,用于存储多个元素。列表用方括号[]表示,元素之间用逗号分隔。列表可以包含不同类型的元素,例如整数、字符串、浮点数,甚至其他列表。

my_list = [1, 2, 3, "apple", 5.5]

Python列表的特点

列表是动态的,可以随时添加或删除元素。列表允许重复元素,并且可以通过索引访问或修改元素。索引从0开始,负数索引表示从列表末尾开始计数。

fruits = ["apple", "banana", "cherry"]
print(fruits[1])  # 输出: banana
print(fruits[-1]) # 输出: cherry

列表的常用操作

列表支持多种操作,包括切片、拼接、复制等。切片操作可以获取列表的子集,格式为list[start:end:step]。拼接操作可以使用+合并两个列表。

numbers = [1, 2, 3, 4, 5]
print(numbers[1:4])  # 输出: [2, 3, 4]
print(numbers[::2])  # 输出: [1, 3, 5]

列表拼接操作:

list1 = [1, 2]
list2 = [3, 4]
combined = list1 + list2   # [1, 2, 3, 4]
list1.extend(list2)        # list1变为[1, 2, 3, 4]

可以将元组转化为列表:

t1=(2,3,(1,2,3))
list1 = list(t1)
print(list1) #输出[2, 3, (1, 2, 3)]

列表复制操作
复制分为浅拷贝深拷贝浅拷贝(copy()或切片)仅复制外层对象,深拷贝(deepcopy())会递归复制所有嵌套对象。

import copy
original = [1, [2, 3]]
shallow = original.copy()          # 浅拷贝,嵌套列表共享引用
deep = copy.deepcopy(original)     # 深拷贝,完全独立

列表查找

使用index()方法查找元素首次出现的索引,in运算符判断元素是否存在。查找失败时index()会抛出ValueError

lst = [10, 20, 30, 20]
idx = lst.index(20)  # 返回1
exists = 30 in lst   # 返回True

列表排序

sort()方法原地排序,sorted()函数返回新列表。可通过key参数定制排序规则,reverse控制升降序。

lst = [3, 1, 4, 2]
lst.sort()                      # 原地排序变为[1, 2, 3, 4]
new_lst = sorted(lst, reverse=True)  # 生成[4, 3, 2, 1]

列表逆序

reverse()方法原地逆序,切片[::-1]生成新逆序列表。

lst = [1, 2, 3]
lst.reverse()       # 变为[3, 2, 1]
reversed_lst = lst[::-1]  # 生成[1, 2, 3]

数量统计

count()统计元素出现次数,len()获取列表长度。

lst = [1, 2, 2, 3]
cnt = lst.count(2)   # 返回2
length = len(lst)    # 返回4
```### 列表查找
使用`index()`方法查找元素首次出现的索引,`in`运算符判断元素是否存在。查找失败时`index()`会抛出`ValueError`。
```python
lst = [10, 20, 30, 20]
idx = lst.index(20)  # 返回1
exists = 30 in lst   # 返回True

列表的方法

列表提供了一系列内置方法,例如append()extend()insert()remove()pop()等。这些方法可以用于添加、删除或修改列表中的元素。

#增加:
colors = ["red", "green"]
colors.append("blue")     # 添加元素
colors.insert(1, "yellow") # 插入元素
colors.extend(["yellow","blue","black"])#将可迭代的对象逐个插入列表尾部
#删除:
colors.remove("green")    # 删除元素
colors.pop(0) #删除"red"并输出
#查找:
colors.index("green")#返回给定元素第一次出现位置的下标,输出为1

列表的遍历

可以通过循环遍历列表中的元素。常见的遍历方式包括for循环和while循环。列表推导式是一种简洁的生成列表的方式。

squares = [x**2 for x in range(5)]
print(squares)  # 输出: [0, 1, 4, 9, 16]

也可以在遍历的过程中加上条件

squares = [x**2 for x in range(5) if x % 2 == 1]
print(squares)  # 输出: [1,9]

也可以两个数字一起加条件遍历

print([(x,y) for x in range(5) if x%2==1 for y in range(10) if y % 3 == 1])
#输出[(1, 1), (1, 4), (1, 7), (3, 1), (3, 4), (3, 7)]

列表与元组的区别

列表是可变的,而元组是不可变的。如果需要修改数据,应使用列表;如果需要不可变的数据结构,应使用元组。元组用圆括号()表示。

my_tuple = (1, 2, 3)

以上内容涵盖了Python列表的核心概念和常见操作,适用于初学者和需要快速回顾的开发人员。### Python列表的定义

Python列表是一种有序、可变的数据结构,用于存储多个元素。列表用方括号[]表示,元素之间用逗号分隔。列表可以包含不同类型的元素,例如整数、字符串、浮点数,甚至其他列表。

my_list = [1, 2, 3, "apple", 5.5]

列表和数组

Python中的列表在外观上和数组相似,但是两者并不是一种结构。
–Python的内置数据结构中并没有数组,需要借助工具包numpy实现。
–列表和数组可以相互转化,但是本质是不一样的。数组有维度,列表无维度。

>>> import numpy
>>> l = [1,2,3,4]
>>> print(l)
[1, 2, 3, 4]
>>> print(numpy.array(l))
[1 2 3 4]
>>> l2 = [[1,2],[3,4]]
>>> print(l2)
[[1, 2], [3, 4]]
>>> print(numpy.array(l2))
[[1 2][3 4]]

字典

字典的定义:字典的每个元素由两部分组成-键和值,所以字典的元素也被称为键值对
–其中键是不可变且唯一的
–如果字典有相同的键,则后面的键对应的值会将前面的值覆盖
数据量大的时候,字典数据的访问速度比列表快
–字典是无序可变的序列

deepseek解释:字典(Dictionary)是Python中一种可变容器模型,可存储任意类型对象。字典的每个元素由一个键(key)和一个值(value)组成,键和值之间用冒号分隔,元素之间用逗号分隔,整个字典包括在花括号中。

字典的键必须是唯一的,且不可变类型(如字符串、数字或元组)。值可以是任何数据类型,且可以重复。

my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}

字典的创建

字典可以通过多种方式创建。直接使用花括号是最常见的方法。

# 空字典
empty_dict = {}# 直接赋值
person = {'name': 'Bob', 'age': 30}# 使用dict()构造函数
person = dict(name='Bob', age=30)# 从键值对列表创建
person = dict([('name', 'Bob'), ('age', 30)])

字典的访问

可以通过键来访问字典中的值。如果键不存在,会引发KeyError。使用get()方法可以避免KeyError,并返回默认值。

person = {'name': 'Bob', 'age': 30}# 直接访问
print(person['name'])  # 输出: Bob# 使用get方法
print(person.get('name'))  # 输出: Bob
print(person.get('gender', 'Unknown'))  # 输出: Unknown

字典的修改

字典是可变的,可以通过键来修改或添加新的键值对。

person = {'name': 'Bob', 'age': 30}# 修改值
person['age'] = 31# 添加新键值对
person['city'] = 'London'print(person)  # 输出: {'name': 'Bob', 'age': 31, 'city': 'London'}

字典的删除

可以使用del语句、pop()方法或clear()方法来删除字典中的元素。

person = {'name': 'Bob', 'age': 30, 'city': 'London'}# 删除特定键值对
del person['age']# 删除并返回值
city = person.pop('city')# 清空字典
person.clear()print(person)  # 输出: {}

字典的遍历

字典可以通过多种方式遍历,包括键、值或键值对。

person = {'name': 'Bob', 'age': 30, 'city': 'London'}# 遍历键
for key in person:print(key)# 遍历值
for value in person.values():print(value)# 遍历键值对
for key, value in person.items():print(key, value)

字典的常用方法

字典提供了多种内置方法,用于操作和查询字典。

person = {'name': 'Bob', 'age': 30, 'city': 'London'}# 获取所有键
keys = person.keys()# 获取所有值
values = person.values()# 获取所有键值对
items = person.items()# 复制字典
person_copy = person.copy()# 更新字典
person.update({'age': 31, 'gender': 'Male'})

字典的嵌套

字典可以嵌套在其他字典中,形成复杂的数据结构。

people = {'person1': {'name': 'Alice', 'age': 25},'person2': {'name': 'Bob', 'age': 30}
}print(people['person1']['name'])  # 输出: Alice

字典推导式

字典推导式提供了一种简洁的创建字典的方法。

# 创建平方字典
squares = {x: x*x for x in range(6)}print(squares)  # 输出: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

集合

集合的定义

集合(set)是Python中的一种无序、可变不重复元素的容器数据类型。其核心特性包括:

  • 无序性:元素存储顺序与添加顺序无关。
  • 唯一性:自动去除重复元素。
  • 可变性:支持增删操作,但元素本身必须是不可变类型(如数字、字符串、元组)。

集合用大括号 {}set() 函数定义,空集合必须使用 set(){} 表示空字典)。

s1 = {1, 2, 3}          # 直接定义
s2 = set([1, 2, 2])     # 从列表转换,结果为 {1, 2}

集合的操作方法

添加元素
  • add(x):添加单个元素。
  • update(iterable):合并其他可迭代对象(如列表、元组)的元素。
s = {1, 2}
s.add(3)               # {1, 2, 3}
s.update([4, 5])       # {1, 2, 3, 4, 5}
删除元素
  • remove(x):删除指定元素,若不存在则报错。
  • discard(x):删除元素,若不存在则不报错。
  • pop():随机删除并返回一个元素(因集合无序)。
  • clear():清空集合。
s = {1, 2, 3}
s.remove(2)            # {1, 3}
s.discard(4)           # 无变化
s.pop()                # 可能返回 1 或 3,随机删除一个元素并返回

集合的运算

集合支持数学中的集合操作:

基本运算
  • union()|:并集。
  • intersection()&:交集。
  • difference()-:差集。
  • symmetric_difference()^:对称差集(仅在其中一个集合存在的元素)。
a = {1, 2, 3}
b = {3, 4, 5}
a.union(b)             # {1, 2, 3, 4, 5}
a & b                  # {3}
a - b                  # {1, 2}
a ^ b                  # {1, 2, 4, 5}
判断方法
  • issubset()<=:子集判断。
  • issuperset()>=:超集判断。
  • isdisjoint():判断是否无交集。
a = {1, 2}
b = {1, 2, 3}
a.issubset(b)          # True
b.issuperset(a)        # True
a.isdisjoint({4, 5})   # True

集合的应用场景

  1. 去重:快速去除列表中的重复项。
    lst = [1, 2, 2, 3]
    unique = list(set(lst))  # [1, 2, 3]
    
  2. 成员测试:检查元素是否存在(比列表效率更高)。
  3. 数学运算:处理交集、并集等逻辑问题。

集合通过哈希表实现,因此查找操作的时间复杂度为 O(1),适合高频查询场景。

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

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

相关文章

前端富文本添加录音功能方案

为富文本编辑器添加录音功能可以增强内容创作的多样性。以下是几种实现方案&#xff1a; 方案一&#xff1a;基于Web Audio API原生实现 实现步骤获取用户麦克风权限 navigator.mediaDevices.getUserMedia({ audio: true }).then(stream > { /* 处理音频流 */ }).catch(err …

解锁阿里云Hologres:开启实时数据分析新时代

引言在当今这个数字化浪潮汹涌澎湃的大数据时代&#xff0c;数据就如同企业和组织的 “数字石油”&#xff0c;成为了最具价值的资产之一。随着信息技术的飞速发展&#xff0c;各行业所产生和收集的数据量正以指数级的速度增长&#xff0c;从社交媒体上的用户互动信息&#xff…

python学习打卡day59

DAY 59 经典时序预测模型3 知识点回顾&#xff1a; SARIMA模型的参数和用法&#xff1a;SARIMA(p, d, q)(P, D, Q)m模型结果的检验可视化&#xff08;昨天说的是摘要表怎么看&#xff0c;今天是对这个内容可视化&#xff09;多变量数据的理解&#xff1a;内生变量和外部变量多变…

java中agent的作用

一 java中agent1.1 agent-javaagent 是 Java 虚拟机 (JVM) 提供的一个启动参数&#xff0c;用于在 Java 程序 main 方法执行之前&#xff0c;加载一个特殊的 Java 代理程序&#xff08;Java Agent&#xff09;。它的核心作用是对运行中的 Java 程序进行字节码层面的动态修改、监…

[C/C++内存安全]_[中级]_[如何避免数组访问越界]

场景 C/C的标准在C26以前还没支持内存安全的访问连续内存的类或特性。在开发分析内存数据或文件数据的程序时&#xff0c;经常需要把一段内存数据复制到另一个堆空间里。 这时目标内存空间由于起始地址的移动&#xff0c;剩余大小的计算错误&#xff0c;经常会导致访问越界错误…

rabbitmq 与 Erlang 的版本对照表 win10 安装方法

win10 64位系统 安装的版本 otp_win64_27.3.3.exe rabbitmq-server-4.1.1.exe rabbitmq 与 Erlang 的版本对照表 Erlang Version Requirements This guide covers Erlang/OTP version requirements https://www.rabbitmq.com/docs/which-erlang Erlang 28 is not currently…

kali安装教程

kali教程 我下载的是kali的集成环境&#xff0c;可以直接进行打开&#xff0c;无需进行安装。 Get Kali | Kali Linux&#xff0c; 官网下载路径 直接按enter键 安装完成 生成一个小皮安装链接 会给你生成一个外网和内网地址&#xff0c; 可以进行浏览 点击我同意这个协议…

微信小程序入门实例_____快速搭建一个快递查询小程序​

&#x1f337;&#x1f337;之前几篇博文我们一起开发了天气查询、单词速记和待办事项小程序&#xff0c;这次我们来对生活中常用的功能 —— 快递查询来探索相关的小程序。网购已经成为大家生活的一部分&#xff0c;有了自己的快递查询小程序&#xff0c;不用切换多个应用&…

【防火墙基础之传统墙到 UTM 到 NGFW 再到 AI 的变化】

防火墙技术演进与未来趋势&#xff1a;从传统防御到AI驱动的智能安全 防火墙技术历经数十年发展&#xff0c;已从早期的简单包过滤演进为融合AI的智能安全平台。当前&#xff0c;传统爬虫防护技术如频率限制和人机校验已无法应对现代攻击&#xff0c;而全面风控体系通过多维协同…

【仿muduo库实现并发服务器】Poller模块

仿muduo库实现并发服务器 1.Poller模块成员变量创建epoll模型对于一个描述符添加或修改事件监控对于一个描述符移除事件监控启动epoll事件监控&#xff0c;获取所有活跃连接 1.Poller模块 Poller模块主要是对任意的描述符进行IO事件监控。 它是对epoll的封装&#xff0c;可以让…

小程序学习笔记:使用 MobX 实现全局数据共享,实例创建、计算属性与 Actions 方法

在小程序开发过程中&#xff0c;组件间的数据共享是一个常见且关键的问题。今天&#xff0c;我们就来深入探讨一下如何在小程序中实现全局数据共享&#xff0c;借助 MobX 相关的包&#xff0c;让数据管理变得更加高效便捷。 什么是全局数据共享 全局数据共享&#xff0c;也被…

观测云 × AWS SSO:权限治理可观测实践

AWS IAM Identity Center 介绍 AWS IAM Identity Center&#xff08;原 AWS Single Sign-On&#xff09;是 AWS 提供的一项云原生身份与访问管理&#xff08;IAM&#xff09;服务&#xff0c;旨在集中简化多 AWS 账户、多业务应用的安全访问控制。 观测云 观测云是一款专为 …

springboot整合配置swagger3

一. swagger3介绍 Swagger 3 是基于 OpenAPI 规范 3.0 的 API 文档工具&#xff0c;用于设计、构建和消费 RESTful API。它通过标准化描述 API 的接口、参数、响应等元数据&#xff0c;实现以下核心功能&#xff1a; 自动生成交互式文档API 测试与调试代码生成&#xff08;客…

RabbitMQ 4.1.1初体验

为什么选择 RabbitMQ&#xff1f;* RabbitMQ 是一款可靠且成熟的消息代理和流处理中间件&#xff0c;可轻松部署在云端、本地数据中心或您的开发机上&#xff0c;目前已被全球数百万用户使用。 优势在哪里 互操作性 RabbitMQ 支持多种开放标准协议&#xff0c;包括 AMQP 1.0 和…

【精华】QPS限流等场景,Redis其他数据结构优劣势对比

下面是一个详细的 Redis 数据结构对比表&#xff0c;比较它们在实现 QPS 限流 / 滑动窗口统计 / 查定比监控等场景中的适用性&#xff1a; ✅ Redis 数据结构对比表&#xff08;用于接口限流 / QPS 监控&#xff09; 维度String INCR 固定窗口List 滑动窗口Hash 计数器ZSet 滑…

顶层设计:支持单元化、灰度化的应用架构

一、顶层目标 业务连续性&#xff1a;任何单元故障不影响整体弹性伸缩&#xff1a;根据业务流量横向扩展灵活灰度&#xff1a;任何发布都可逐步平滑上线成本可控&#xff1a;单元化带来的资源冗余最小 二、核心理念 设计目标核心理念单元化垂直拆分&#xff0c;分而治之&…

MacOS Safari 如何打开F12 开发者工具 Developer Tools

背景 If you’re a web develper, the Safari Develop menu provides tools you can use to make sure your website works well with all standards-based web browsers. 解决 If you don’t see the Develop menu in menu bar, Choose Safari > settingsClick Advanced…

2025—暑期训练一

A 本题描述了一个最优路径规划问题的解法&#xff0c;核心思路是利用数轴上区间覆盖的特性&#xff0c;将问题简化为两个端点的访问问题。以下是关键点的详细解析&#xff1a; 核心观察 区间覆盖特性 给定的位置数组 x1, x2, ..., xn 是严格递增的&#xff08;即 x1 < x2 …

ubuntu 18.04配置镜像源

配置镜像源的主要作用是优化软件下载速度、提升系统更新稳定性&#xff0c;并确保软件包获取的可靠性 我这里配置阿里云镜像源 镜像的具体内容参考此文: 文章链接 以防万一,先备份一下 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak然后开始修改 sudo nano /etc…

RecyclerView中跳转到最后一条item并确保它在可视区域内显示

在RecyclerView中跳转并显示最后一条Item 要在RecyclerView中跳转到最后一条item并确保它在可视区域内显示&#xff0c;可以使用以下几种方法&#xff1a; 1. 使用scrollToPosition()方法&#xff08;基本方法&#xff09; recyclerView.scrollToPosition(adapter.getItemCo…