解锁 Python 嵌套字典的奥秘:高效操作与实战应用指南

在这里插入图片描述

文章目录

    • 前言
    • 🍀一、 什么是 Python 字典?
        • 1.1 字典的语法
    • 🍀二、 字典的基本操作
        • 2.1 字典的创建
        • 2.2 访问字典中的值
        • 2.3 添加或修改键值对
        • 2.4 删除字典中的键值对
    • 🍀三、 字典的遍历操作
        • 3.1 遍历字典的键
        • 3.2 遍历字典的值
        • 3.3 同时遍历键和值
    • 🍀四、 字典的内置方法
        • 4.1 `keys()`, `values()`, `items()`
        • 4.2 `get()` 方法
        • 4.3 `pop()` 和 `popitem()` 方法
        • 4.4 `update()` 和 `clear()` 方法
    • 🍀五、 嵌套字典及其操作
        • 5.1 访问嵌套字典的值
        • 5.2 修改嵌套字典中的值
        • 5.3 添加新的键值对到嵌套字典
        • 5.4 删除嵌套字典中的键值对
    • 🍀六、字典的应用场景
        • 6.1 配置文件和设置管理
          • 示例:应用程序配置管理
        • 6.2 计数器和频率统计
          • 示例:统计字符串中每个字符的出现次数
        • 6.3 `API` 返回值的解析
          • 示例:解析 `REST API` 返回的 `JSON` 数据
        • 6.4 数据库记录映射
          • 示例:数据库查询结果映射
    • 🍀七、字典的性能及其内部实现
        • 7.1 哈希表的基本原理
        • 7.2 哈希冲突与解决方案
        • 7.3 字典的扩展和重新哈希
        • 7.3.1 何时进行扩展
          • 示例:字典扩展前后的行为
        • 7.3.2 扩展的性能影响
        • 7.4 Python 字典的负载因子
    • 🍀八、字典的高级技巧
        • 8.1 字典推导式
          • 示例:使用字典推导式创建字典
        • 8.2 `defaultdict` 的使用
          • 示例:使用 `defaultdict` 进行字符计数
        • 8.3 `OrderedDict` 和其他字典子类
          • 示例:使用 `OrderedDict`
    • 🍀九、常见的字典相关问题和优化技巧
        • 9.1 如何处理字典的键不存在的情况?
        • 9.2 如何合并两个字典?
    • 结语


前言

在Python编程中,字典(dict)是一种非常重要的数据结构,它允许我们通过键(key)来快速查找、添加、更新和删除值(value)。字典的键必须是唯一的,而值则可以是任何数据类型,包括数字、字符串、列表、元组甚至是另一个字典。这种灵活性使得字典成为处理复杂数据结构的强大工具。本文将详细介绍Python中字典的定义、基本操作、嵌套字典、遍历方法、高级操作技巧等,并通过代码实例进行演示和分析。


🍀一、 什么是 Python 字典?

Python 字典是一种无序的、可变的、通过键值对(key-value pair)存储数据的容器。字典类似于我们生活中的词典或地址簿,在这些场景中,每个词(键)都有一个定义(值),而字典提供了这种映射关系。

与 Python 中的其他数据结构(如列表和元组)不同,字典的主要特点是:

  • 键是唯一的:字典中的键不能重复,每个键都唯一地映射到一个值。
  • 键必须是不可变类型:字典中的键必须是不可变对象,比如字符串、数字或元组,而不能是列表、集合等可变对象。
  • 查找速度快:字典内部使用哈希表实现,因此在查找、插入、删除键值对时非常高效,时间复杂度接近 O(1)。
1.1 字典的语法

字典使用 {} 来创建,每个键值对通过 : 分隔,多个键值对通过逗号 , 分隔。如下是一个简单的字典示例:

person = {"name": "Alice","age": 30,"city": "New York"
}

在这个字典中,"name""age""city" 是键,而 "Alice"30"New York" 是对应的值。

🍀二、 字典的基本操作

2.1 字典的创建

字典可以通过多种方式创建,最常见的方式是直接使用花括号 {} 包裹键值对:

person = {"name": "Bob", "age": 25, "city": "San Francisco"}

也可以使用 dict() 函数来创建字典,特别是当键值对由两个独立的列表或元组提供时:

# 使用 dict() 函数创建字典
person = dict(name="Bob", age=25, city="San Francisco")

你还可以从一系列元组列表中创建字典:

# 使用元组创建字典
items = [("name", "Alice"), ("age", 30), ("city", "New York")]
person = dict(items)
2.2 访问字典中的值

你可以通过键来访问字典中的值,如果该键不存在则会引发 KeyError 错误:

# 通过键访问字典中的值
print(person["name"])  # 输出: Alice

为了避免访问不存在的键时抛出异常,建议使用字典的 get() 方法:

# 使用 get() 方法
age = person.get("age", "Key not found")
print(age)  # 输出: 30
2.3 添加或修改键值对

字典是可变的数据结构,因此你可以向字典中添加新的键值对,或者修改已有键的值:

# 添加新键值对
person["job"] = "Engineer"# 修改已有键的值
person["age"] = 31
2.4 删除字典中的键值对

可以使用 del 语句删除指定的键值对:

# 删除键值对
del person["city"]

也可以使用 pop() 方法删除键,并返回该键的值:

# 使用 pop() 方法
job = person.pop("job", "Key not found")
print(job)  # 输出: Engineer

popitem() 是另一个删除方法,它会删除并返回字典中的最后一个键值对,通常用于需要在不指定键的情况下删除元素时使用。

🍀三、 字典的遍历操作

3.1 遍历字典的键

可以使用 for 循环遍历字典中的所有键:

for key in person:print(key)

或使用 keys() 方法显式遍历键:

for key in person.keys():print(key)
3.2 遍历字典的值

可以使用 values() 方法遍历字典中的所有值:

for value in person.values():print(value)
3.3 同时遍历键和值

要同时遍历字典中的键和值,可以使用 items() 方法:

for key, value in person.items():print(f"{key}: {value}")

🍀四、 字典的内置方法

Python 字典有许多强大的内置方法,它们可以帮助你轻松管理和操作字典中的数据。

4.1 keys(), values(), items()

这三个方法分别返回字典中的所有键、所有值以及键值对的视图。

python复制代码keys = person.keys()  # 返回所有键
values = person.values()  # 返回所有值
items = person.items()  # 返回所有键值对
4.2 get() 方法

get() 方法可以用于安全地访问字典中的值,即使键不存在也不会抛出错误。

age = person.get("age", 25)  # 如果 age 键不存在,则返回默认值 25
4.3 pop()popitem() 方法

pop() 可以用来删除字典中指定的键值对并返回其值,而 popitem() 则删除并返回字典中的最后一个键值对。

# 删除指定键
age = person.pop("age", "Key not found")# 删除最后一个键值对
last_item = person.popitem()
4.4 update()clear() 方法

update() 方法可以用来将一个字典的内容更新到另一个字典中,而 clear() 则用于清空字典。

# 使用 update() 更新字典
additional_info = {"country": "USA", "email": "bob@example.com"}
person.update(additional_info)# 使用 clear() 清空字典
person.clear()

🍀五、 嵌套字典及其操作

嵌套字典是指字典中的某些值本身也是字典。它可以用于表示更复杂的数据结构,例如表示某个用户的详细信息或多个层次的数据关系。让我们首先定义一个嵌套字典作为示例:

# 定义一个嵌套字典
company = {"department_1": {"manager": "Alice","employees": 10,"budget": 50000},"department_2": {"manager": "Bob","employees": 8,"budget": 40000},"department_3": {"manager": "Charlie","employees": 5,"budget": 30000}
}

这个字典 company 包含了 3 个部门,每个部门都有经理、员工人数和预算等信息。

5.1 访问嵌套字典的值

要访问嵌套字典中的值,可以逐级指定键:

# 访问 department_1 的经理
manager_dept1 = company["department_1"]["manager"]
print(manager_dept1)  # 输出: Alice# 访问 department_2 的预算
budget_dept2 = company["department_2"]["budget"]
print(budget_dept2)  # 输出: 40000
5.2 修改嵌套字典中的值

我们可以通过直接指定键来修改嵌套字典中的值:

# 修改 department_3 的员工人数
company["department_3"]["employees"] = 7
print(company["department_3"]["employees"])  # 输出: 7
5.3 添加新的键值对到嵌套字典

我们可以向嵌套字典的某一层添加新的键值对:

# 为 department_1 添加一个新的键值对 "location"
company["department_1"]["location"] = "Building A"
print(company["department_1"]["location"])  # 输出: Building A
5.4 删除嵌套字典中的键值对

可以使用 del 删除嵌套字典中的键值对:

# 删除 department_2 的预算信息
del company["department_2"]["budget"]
print(company["department_2"])  # 输出: {'manager': 'Bob', 'employees': 8}

🍀六、字典的应用场景

Python 字典在许多开发场景中都是不可或缺的数据结构,尤其适用于存储键值对并高效地进行查找、插入和删除操作。以下是几个常见的字典应用场景及其具体使用方法:

6.1 配置文件和设置管理

字典非常适合用于存储应用程序的配置和全局设置。由于字典是动态且可变的数据结构,可以方便地从文件(如 JSON 或 YAML)中加载设置,且在应用程序运行时灵活地进行修改。

示例:应用程序配置管理
# 定义一个应用的配置字典
config = {"database": {"host": "localhost","port": 5432,"username": "admin","password": "secret"},"app": {"debug": True,"secret_key": "s3cr3t_key","allowed_hosts": ["localhost", "127.0.0.1"]}
}# 访问数据库配置
db_host = config["database"]["host"]# 修改调试模式
config["app"]["debug"] = False

通过字典,可以轻松管理多个模块的配置信息,如数据库、缓存和日志等。这样,配置可以集中存放且易于修改。

6.2 计数器和频率统计

字典是非常高效的工具,用于统计某个集合中各元素出现的次数。通过将元素作为字典的键,频率作为值,能够快速统计频次信息。

示例:统计字符串中每个字符的出现次数
def char_count(string):count_dict = {}for char in string:if char in count_dict:count_dict[char] += 1else:count_dict[char] = 1return count_dict# 示例用法
text = "hello world"
count_result = char_count(text)
print(count_result)

在这个例子中,每个字符都作为键存储在字典中,其值为字符出现的次数。可以使用 collections 模块中的 defaultdict 来进一步优化计数逻辑,避免显式地检查键是否存在。

6.3 API 返回值的解析

字典常用于解析和存储 API 的返回结果,尤其是 JSON 格式的响应。API 通常以嵌套结构的形式返回数据,字典可以轻松表示这种嵌套关系并进行操作。

示例:解析 REST API 返回的 JSON 数据
python复制代码import json# 假设我们从一个 API 得到以下 JSON 响应
api_response = '''{"user": {"id": 123,"name": "Alice","email": "alice@example.com"},"status": "active","roles": ["admin", "editor"]
}'''# 将 JSON 字符串解析为 Python 字典
data = json.loads(api_response)# 访问解析后的数据
user_id = data["user"]["id"]
user_name = data["user"]["name"]
roles = data["roles"]print(f"User {user_name} (ID: {user_id}) has roles: {roles}")

字典结构与 JSON 的键值结构非常匹配,使得处理 API 数据变得直观且高效。

6.4 数据库记录映射

在数据库操作中,字典也被广泛用于将查询结果映射为 Python 对象。通常,每行记录可以表示为一个字典,其中列名作为键,列值作为字典的值。

示例:数据库查询结果映射
# 假设查询结果如下
query_result = [{"id": 1, "name": "Alice", "age": 30},{"id": 2, "name": "Bob", "age": 25}
]# 访问查询结果
for row in query_result:print(f"User {row['name']} is {row['age']} years old.")

这种方法可以让开发者通过字典键名来访问数据库记录,提高代码的可读性。

🍀七、字典的性能及其内部实现

Python 字典作为一种映射类型的数据结构,其高效性得益于它的底层实现:哈希表。哈希表的特性使得字典在处理查找、插入和删除操作时,能够在平均时间复杂度为 O(1) 的情况下完成。这一性能极大地提升了字典在处理大量数据时的表现。接下来我们将深入探讨 Python 字典的内部实现,理解其高效性的根源。

7.1 哈希表的基本原理

哈希表是一种通过哈希函数将键映射到固定大小的存储空间(槽位,bucket)的数据结构。哈希表的关键概念是通过哈希函数计算出键的哈希值(哈希码),并将其对应的值存储在计算出的哈希码所对应的槽位中。

例如,假设我们有一个简单的字典:

person = {"name": "Alice","age": 30,"city": "New York"
}

当我们访问 person["name"] 时,Python 会对 "name" 进行哈希计算,找到它映射的槽位,然后直接从这个槽位中读取存储的值 "Alice"

这种直接查找的方式与列表等顺序数据结构不同,列表中的查找操作需要逐个遍历每个元素,而字典的哈希表实现允许我们通过哈希函数直接定位目标位置,因此速度非常快,平均复杂度为 O(1)。

7.2 哈希冲突与解决方案

由于哈希表的存储空间是有限的,不同的键在通过哈希函数计算后,可能会得到相同的哈希值,这种现象称为哈希冲突。Python 字典使用了开放寻址法来解决哈希冲突。当哈希冲突发生时,字典会通过线性探测或者二次探测等方式寻找下一个空闲的槽位进行存储。

具体步骤如下:

  • 计算出键的哈希值,映射到哈希表的某个槽位。
  • 如果槽位已被占用,则通过线性或二次探测查找下一个可用槽位。
  • 将键值对存储到找到的空槽中。

尽管哈希冲突会影响性能,但在多数情况下,Python 字典的哈希函数设计非常有效,冲突发生的概率较低。

7.3 字典的扩展和重新哈希

字典的大小是动态调整的,哈希表的初始容量有限,当插入的键值对数量达到一定的阈值(通常是容量的三分之二)时,Python 会自动扩展字典的容量,并将已有的键值对重新分配到更大的哈希表中,这个过程称为重新哈希(rehashing)

重新哈希的步骤如下:

  1. 创建一个新的、更大的哈希表。
  2. 遍历旧哈希表中的所有键值对,重新计算它们的哈希值,并将它们插入到新的哈希表中。
  3. 丢弃旧的哈希表。

这种扩展操作会有一次性的性能开销,但在大多数情况下,字典的动态扩展是非常高效的,它保持了插入、查找和删除操作的高效性,确保平均时间复杂度为 O(1)。

7.3.1 何时进行扩展

当字典的负载因子达到阈值时,Python 会自动扩展字典的容量。扩展过程中的内存分配使得字典能够处理更多的键值对,而不必频繁重新调整大小。字典的扩展是通过倍数增长来进行的,通常扩展为当前容量的 2 倍或更多。

扩展操作有如下步骤:

  1. 创建一个新的哈希表,大小是原表的两倍。
  2. 将原有的键值对重新哈希并插入新表中。这意味着每个键的哈希值会被重新计算并存储在新的槽位中。
  3. 旧的哈希表被释放,新的哈希表成为当前字典使用的存储区域。
示例:字典扩展前后的行为
# 创建一个字典并不断增加键值对,观察扩展
my_dict = {}
for i in range(100):my_dict[i] = i * 2print(f"Inserted {i}: Dictionary size = {len(my_dict)}")

在这个例子中,随着我们不断向字典中插入新的键值对,字典的大小会逐步增加,当达到一定的数量时(负载因子阈值),字典会进行扩展,分配更多内存以存储新的键值对。

7.3.2 扩展的性能影响

扩展和重新哈希会引起一次性性能开销,但这种操作是为了保持字典整体操作的高效性。在扩展过程中,所有键值对都会被重新分配到新的哈希表中,因此这一过程可能会导致性能下降。但这种性能影响通常是短暂的,且扩展操作发生的频率较低。

7.4 Python 字典的负载因子

字典的扩展阈值是根据其负载因子(load factor)决定的。负载因子定义为:已填充槽位的数量与总槽位数量的比值。Python 字典的负载因子通常设定在 2/3 左右,当填充的槽位达到总槽位的 2/3 时,字典会进行扩展和重新哈希。

高负载因子意味着字典的存储空间得到了充分利用,但这也会增加哈希冲突的可能性,影响字典的查找效率;而低负载因子会减少冲突的发生,但会导致空间浪费。Python 在性能和空间利用之间取得了良好的平衡,确保了大部分场景下的高效操作。

🍀八、字典的高级技巧

8.1 字典推导式

字典推导式是 Python 中一种简洁的方式,用来创建新的字典。它的语法类似于列表推导式,但用于生成键值对。

示例:使用字典推导式创建字典
# 创建一个字典,键是数字,值是它们的平方
squares = {x: x**2 for x in range(6)}
print(squares)  # 输出: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

字典推导式简化了字典的创建过程,特别适合需要从其他可迭代对象生成字典的场景。

8.2 defaultdict 的使用

defaultdictcollections 模块中的一个子类,它提供了给字典设置默认值的功能。使用 defaultdict 可以避免在访问字典不存在的键时抛出 KeyError

示例:使用 defaultdict 进行字符计数
from collections import defaultdictdef char_count(string):count_dict = defaultdict(int)for char in string:count_dict[char] += 1return count_dicttext = "hello world"
count_result = char_count(text)
print(count_result)

在这里,defaultdict(int) 会在遇到新键时自动初始化其值为 0,无需显式检查键的存在。

8.3 OrderedDict 和其他字典子类

在 Python 3.7 之前,字典是无序的,而 OrderedDict 可以保持键值对的插入顺序。在 Python 3.7 及更高版本中,字典本身已经保证了插入顺序,因此 OrderedDict 的使用场景有所减少,但它仍然在某些特殊情况下有用。

示例:使用 OrderedDict
from collections import OrderedDict# 创建一个 OrderedDict
ordered_dict = OrderedDict()
ordered_dict["a"] = 1
ordered_dict["b"] = 2
ordered_dict["c"] = 3# 访问有序字典
for key, value in ordered_dict.items():print(f"{key}: {value}")

OrderedDict 在需要对字典进行有序处理时非常有用,例如需要保存历史记录或按插入顺序遍历键值对的场景。

🍀九、常见的字典相关问题和优化技巧

9.1 如何处理字典的键不存在的情况?

通常我们使用 get() 方法来安全访问字典中的值,它允许在键不存在时返回默认值,从而避免抛出 KeyError

value = person.get("job", "Unknown")  # 如果 "job" 键不存在,则返回 "Unknown"
9.2 如何合并两个字典?

在 Python 3.9 之后,可以使用 | 运算符合并两个字典:

dict1 = {"a": 1, "b": 2}
dict2 = {"b": 3, "c": 4}merged_dict = dict1 | dict2
print(merged_dict)  # 输出: {'a': 1, 'b': 3, 'c': 4}

对于早期版本,可以使用 update() 方法或字典推导式。

结语

本文详细介绍了 Python 字典的基础操作和高级应用。我们从字典的定义、创建、修改等基本操作入手,逐步深入到了嵌套字典、字典的性能分析以及高级字典技巧,如字典推导式、defaultdictOrderedDict 等。通过这些内容的学习,开发者不仅能够高效地管理和组织数据,还可以在实际开发中灵活地应用字典解决复杂问题。
在这里插入图片描述

今天的分享到这里就结束啦!如果觉得文章还不错的话,可以三连支持一下,17的主页还有很多有趣的文章,欢迎小伙伴们前去点评,您的支持就是17前进的动力!在这里插入图片描述

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

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

相关文章

基于SSM的仿win10界面的酒店管理系统

基于SSM的仿win10界面的酒店管理系统 运行环境: jdk1.8 eclipse tomcat7 mysql5.7 项目技术: jspssm(springspringmvcmybatis)mysql 项目功能模块:基础功能、房间类型、楼层信息、附属功能

大数据新视界 --大数据大厂之大数据驱动智能客服 -- 提升客户体验的核心动力

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

HUAWEI New4.9G 与 2.6G 无法正常切换问题处理案例

HUAWEI New4.9G 与 2.6G 无法正常切换问题处理案例 在某地市的 XX 音乐节保障准备期间,为确保活动期间的网络质量,现场新开了 4.9G HUAWEI 室外基站。在网络优化和测试中,发现UE无法实现从 2.6G 到 4.9G 的正常切换。虽然现场具备 4.9G信号覆…

每日OJ题_牛客_组队竞赛_贪心_C++_Java

目录 牛客_组队竞赛_贪心 题目解析 C代码1 C代码2 Java代码 牛客_组队竞赛_贪心 组队竞赛_牛客笔试题_牛客网 (nowcoder.com) 描述: 牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,一共组成n个…

【自然语言处理】补充:基于向量空间的分类器

【自然语言处理】补充:基于向量空间的分类器 文章目录 【自然语言处理】补充:基于向量空间的分类器1. 特征选择2. 基于向量空间的分类方法3. Rocchio4. KNN5. 线性分类器1. 特征选择 特征选择 文本分类中,通常要将文本表示在一个高维空间下,每一维对应一个词项许多维上对应…

VMware WorkStation Pro 15.5(低版本安装) 教学用

VMware WorkStation Pro 15.5(低版本安装) 教学用 文章目录 VMware WorkStation Pro 15.5(低版本安装) 教学用前言安装使用 前言 VMware Workstation Pro 15.5 是一款功能强大的桌面虚拟化软件,适用于在单台物理电脑上运行多个操作系统。它被广泛应用于软件开发、测…

PHP泛目录生成源码,可生成长尾关键词页面,带使用方法视频教程

介绍: 真正的好东西,搞网站优化seo从业必备。可以快速提升网站权重,带来的流量哗哗的 PHP泛目录生成源码 可生成新闻页面和关键词页面 带使用方法视频教程 泛目录可以用来提升网站收录和排名 合理运用目录可以达到快速出词和出权重的效果…

WDG看门狗在stm32中的应用

一,WDG看门狗的介绍 看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原因,出现卡死或跑飞现象时,看门狗能及时复位程序,避免程序陷入长时间的罢工状态,保证系统的可靠性和安全性看…

这些编程工具竟然能让我效率翻倍?开发者必备神器盘点!

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

在找工作吗?给你一个AI虚拟面试官助力你提前准备面试

大家好,我是Shelly,一个专注于输出AI工具和科技前沿内容的AI应用教练,体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具,拥抱AI时代的到来。 让AI点亮我们的生活,是Shelly对…

3GPP链路级仿真-Link-Level Simulator for 5G Localization

文章目录 II. SYSTEM ARCHITECTURE AND CAPABILITIESA. System Architecture III. KEY COMPONENTSA. Transmission Models of the Positioning SignalsB. Dedicated Wireless Channel Model IV. APPLICATION CASESA. Two-Dimensional Mobile Terminal Localization仿真工作流程…

JavaWeb - 8 - 请求响应 分层解耦

请求响应 请求(HttpServletRequest):获取请求数据 响应(HttpServletResponse):设置响应数据 BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程…

【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解

高阶数据结构相关知识点可以通过点击以下链接进行学习一起加油!二叉搜索树 大家好,这里是店小二!今天我们将深入探讨高阶数据结构中的AVL树。AVL树是一种自平衡的二叉搜索树,可以看作是对传统二叉搜索树的优化版本。如果你对数据结…

ctf.bugku-备份是个好习惯

访问页面得到字符串 这串字符串是重复的; d41d8cd98f00b204e9800998ecf8427e 从前端、源码上看,除了这段字符串,没有其他信息;尝试解密,长度32位;各种解密方式试试; MD5免费在线解密破解_MD5在…

PIKACHU | PIKACHU 靶场 XSS 后台配置

关注这个靶场的其他相关笔记:PIKACHU —— 靶场笔记合集-CSDN博客 PIKACHU 自带了一个 XSS 平台,可以辅助我们完成 XSS 攻击,但是该后台需要配置数据库以后才能使用。本教程,就是教大家如何配置 PIKACHU XSS 平台的。 PIKACHU XS…

【Conda】Conda命令详解:高效更新与环境管理指南

目录 1. Conda 更新命令1.1 更新 Conda 核心1.2 更新所有包 2. 严格频道优先级3. 强制安装特定版本4. 创建与管理环境4.1 创建新环境4.2 激活和停用环境4.3 导出和导入环境4.4 删除环境 5. 清理缓存总结 Conda 是一个强大的包管理和环境管理工具,广泛应用于数据科学…

Linux ssh 免密登录配置

参考资料 ~/.ssh/configについて~/.ssh/configを使ってSSH接続を楽にする.ssh/configファイルでSSH接続を管理する 目录 一. 密钥生成1.1 生成工具1.1.1 OpenSSH1.1.2 Git 1.2 生成命令1.3 注意事项1.4 解决路径中的用户名乱码 二. 将公钥配置到目标服务,免密登录2…

用Python实现运筹学——Day 14: 线性规划总结与案例复习

一、学习内容 在本节中,我们将复习之前所学的线性规划模型与求解方法,并通过一个综合案例将这些知识应用于求解一个多阶段的生产计划问题。 主要复习内容包括: 线性规划的基础概念:目标函数、约束条件、决策变量。求解方法&…

万界星空科技MES数据集成平台

制造执行系统MES作为连接企业上层ERP系统和现场控制系统的桥梁,承担了实时数据采集、处理、分析和传递的重要任务。MES数据集成平台是一个集成各类数据源,将数据进行整合和统一管理的系统,通过提供标准化接口和协议,实现数据的无缝…

mysql UDF提权(实战案例)

作者:程序那点事儿 日期:2024/09/29 16:10 什么是UDF? 全称 User Define Function (用户自定义函数)UDF提权,就是通过自定义函数,实现执行系统的命令。 dll(windows,dll文件是c语…