【Python入门】一篇掌握Python中的字典(创建、访问、修改、字典方法)【详细版】
🌈 个人主页:十二月的猫-CSDN博客
🔥 系列专栏: 🏀《Python/PyTorch极简课》_十二月的猫的博客-CSDN博客💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光
目录
1. 前言
2. 字典
2.1 字典的创建
2.1.1 大括号+直接赋值
2.1.2 大括号+字典推导式
2.1.3 dict+关键字参数
2.1.4 dict+元组列表
2.1.5 dict+zip方法
2.1.6 dict+fromkeys方法
2.2 字典的访问
2.2.1 使用键访问字典元素
2.2.2 使用 get() 方法访问字典元素
2.2.3 元组列表则用元组访问的方法访问
2.3 字典的修改
2.3.1 直接修改字典元素
2.3.2 使用 update() 方法修改字典
2.3.3 删除字典元素
2.3.4 清空字典
2.4 字典方法
2.4.1 keys()
2.4.2 values()
2.4.3 update()
2.4.4 fromkeys()
2.4.5 setdefault()
2.4.6 clear()
2.4.6 copy()
2.4.7 items()
2.4.8 get()
3. 完整示例
4. 总结
1. 前言
- 👑《零基础入门PyTorch/Python》专栏持续更新中,未来最少文章数量为60篇。由于专栏刚刚建立,促销价为9.9。后续将慢慢恢复原价至99.9🍉【在校大学生】评论区留言并私信我免费订阅
- 👑《零基础入门PyTorch/Python》专栏主要针对零基础入门的小伙伴。不需要Python基础,不需要深度学习基础,只要你愿意学,这一个专栏将真正让你做到零基础入门。
- 🔥每例项目都包括理论讲解、数据集、源代码。
正在更新中💹💹
🚨项目运行环境:
- 平台:Window11
- 语言环境:Python3.8
- 运行环境1:PyCharm 2021.3
- 运行环境2:Jupyter Notebook 7.3.2
- 框架:PyTorch 2.5.1(CUDA11.8)
2. 字典
(Dictionary)是一种内置的数据结构,以键值对(key-value pair)的形式存储数据。在许多Python或PyTorch中常常被使用,例如nn.Sequential等等。因此猫猫有必要写一篇文章,详细讲讲字典的生命全周期。
2.1 字典的创建
字典创建的方法本质上就两种:大括号法、dict方法
2.1.1 大括号+直接赋值
这是最常见和直接的方式,直接使用 {}
包裹键值对:
my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
2.1.2 大括号+字典推导式
字典推导式允许你根据某种条件或从其他可迭代对象创建字典:
my_dict = {x: x**2 for x in range(5)}
# 输出: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
2.1.3 dict+关键字参数
你可以使用 dict()
函数来创建字典,通过关键字参数来初始化:
my_dict = dict(name='Alice', age=25, city='New York')
2.1.4 dict+元组列表
你可以使用 dict()
函数来创建字典,通过元组列表来初始化:
my_dict = dict([('name', 'Alice'), ('age', 25), ('city', 'New York')])
2.1.5 dict+zip方法
zip()
可以将两个可迭代对象组合成一个字典,前一个对象作为键,后一个对象作为值:
示例一:
keys = ['name', 'age', 'city']
values = ['Alice', 25, 'New York']
my_dict = dict(zip(keys, values))
# 输出: {'name': 'Alice', 'age': 25, 'city': 'New York'}
示例二:
dic = dict(zip('abc', [1, 2, 3]))
print(dic)
# 输出结果:{'a': 1, 'b': 2, 'c': 3}
2.1.6 dict+fromkeys方法
通常用来初始化字典, 设置value的默认值
my_dict = dict.fromkeys(['name', 'age', 'city'], None)
# 输出: {'name': None, 'age': None, 'city': None}
2.2 字典的访问
字典访问使用的是中括号([ ])
2.2.1 使用键访问字典元素
通过字典的键来访问对应的值。如果键不存在,会抛出 KeyError
错误:
my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
# 访问 'name' 键对应的值
print(my_dict['name']) # 输出: Alice
利用[]中括号来访问键值对的值
2.2.2 使用 get()
方法访问字典元素
get()
方法可以通过键来访问字典的值。如果键不存在,它会返回 None
,也可以指定一个默认值:
# 使用 get() 方法
print(my_dict.get('name')) # 输出: Alice
# 使用 get() 方法访问不存在的键
print(my_dict.get('gender')) # 输出: None
# 使用 get() 方法访问不存在的键并设置默认值
print(my_dict.get('gender', 'Not specified')) # 输出: Not specified
2.2.3 元组列表则用元组访问的方法访问
字典的输出有时候就是元组形式,因此访问字典可能也就是访问元组:
tuple_list = [(1, 'a'), (2, 'b'), (3, 'c')]
print(tuple_list[0]) # 输出: (1, 'a')
print(tuple_list[1]) # 输出: (2, 'b')
print(tuple_list[0][0]) # 输出: 1 (访问第一个元组中的第一个元素)
print(tuple_list[1][1]) # 输出: 'b' (访问第二个元组中的第二个元素)
2.3 字典的修改
2.3.1 直接修改字典元素
你可以通过直接指定键来修改字典中的值。如果键不存在,会新增该键值对:
my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}# 修改 'age' 键对应的值
my_dict['age'] = 26
print(my_dict) # 输出: {'name': 'Alice', 'age': 26, 'city': 'New York'}# 如果键不存在,添加新的键值对
my_dict['gender'] = 'Female'
print(my_dict) # 输出: {'name': 'Alice', 'age': 26, 'city': 'New York', 'gender': 'Female'}
2.3.2 使用 update()
方法修改字典
update()
方法可以用于修改字典中的元素。你可以传入一个字典或键值对(可以是一个可迭代对象,例如关键字参数或元组列表):
# 修改现有的键值对
my_dict.update({'age': 27, 'city': 'Los Angeles'})
print(my_dict) # 输出: {'name': 'Alice', 'age': 27, 'city': 'Los Angeles', 'gender': 'Female'}# 通过传入键值对的元组列表来修改或添加元素
my_dict.update([('age', 28), ('gender', 'Male')])
print(my_dict) # 输出: {'name': 'Alice', 'age': 28, 'city': 'Los Angeles', 'gender': 'Male'}
2.3.3 删除字典元素
使用 del
或 pop()
可以删除字典中的键值对:
# 使用 del 删除键值对
del my_dict['city']
print(my_dict) # 输出: {'name': 'Alice', 'age': 28, 'gender': 'Male', 'country': 'USA'}
# 使用 pop() 删除并返回值
removed_value = my_dict.pop('age')
print(removed_value) # 输出: 28
print(my_dict) # 输出: {'name': 'Alice', 'gender': 'Male', 'country': 'USA'}
2.3.4 清空字典
clear()
方法可以清空字典中的所有键值对:
# 使用 clear() 清空字典
my_dict.clear()
print(my_dict) # 输出: {}
2.4 字典方法
2.4.1 keys()
返回字典中所有的键:
my_dict = {'a': 1, 'b': 2}
print(my_dict.keys()) # 输出: dict_keys(['a', 'b'])
2.4.2 values()
返回字典中所有的值:
my_dict = {'a': 1, 'b': 2}
print(my_dict.values()) # 输出: dict_values([1, 2])
2.4.3 update()
更新字典,可以传入另一个字典、键值对或可迭代的键值对序列。如果键已经存在,会更新值;如果键不存在,会添加新键值对:
my_dict = {'a': 1, 'b': 2}
my_dict.update({'b': 3, 'c': 4})
print(my_dict) # 输出: {'a': 1, 'b': 3, 'c': 4}
2.4.4 fromkeys()
创建一个新字典,以指定的键创建字典,并为每个键设置默认值。可以传递一个可迭代对象作为键和一个可选的默认值:
keys = ['a', 'b', 'c']
new_dict = dict.fromkeys(keys, 0)
print(new_dict) # 输出: {'a': 0, 'b': 0, 'c': 0}
2.4.5 setdefault()
如果键不存在于字典中,则将其添加,并将值设置为提供的默认值。如果键已经存在,则不对该键做任何修改:
my_dict = {'a': 1, 'b': 2}
print(my_dict.setdefault('c', 3)) # 输出: 3
print(my_dict.setdefault('a', 3)) # 输出: 1
2.4.6 clear()
清空字典中的所有元素:
my_dict = {'a': 1, 'b': 2}
my_dict.clear()
print(my_dict) # 输出: {}
2.4.6 copy()
返回字典的浅拷贝。拷贝后的字典不会影响原字典:
my_dict = {'a': 1, 'b': 2}
new_dict = my_dict.copy()
print(new_dict) # 输出: {'a': 1, 'b': 2}
2.4.7 items()
返回字典中所有键值对,以元组列表的形式返回。可以用于遍历字典:
my_dict = {'a': 1, 'b': 2}
print(my_dict.items()) # 输出: dict_items([('a', 1), ('b', 2)])
2.4.8 get()
返回指定键的值,如果键不存在,返回 None
(或指定的默认值):
my_dict = {'a': 1, 'b': 2}
print(my_dict.get('a')) # 输出: 1
print(my_dict.get('c', 'Not Found')) # 输出: 'Not Found'
3. 完整示例
下面是一个完整的 Python 示例,展示了字典的创建、修改、访问以及使用一些常见的字典方法:
# 创建字典
student = {"name": "Alice", # 键值对: "name" -> "Alice""age": 20, # 键值对: "age" -> 20"courses": ["Math", "Science"], # 键值对: "courses" -> ["Math", "Science"]
}# 访问字典的值
print("Name:", student["name"]) # 输出: Alice
print("Age:", student.get("age")) # 输出: 20# 使用 get 方法访问一个不存在的键,提供默认值
print("Gender:", student.get("gender", "Not Specified")) # 输出: Not Specified# 修改字典中的值
student["age"] = 21 # 修改 age 的值
print("Updated Age:", student["age"]) # 输出: 21# 向字典中添加新的键值对
student["address"] = "123 Main St"
print("Address:", student["address"]) # 输出: 123 Main St# 使用 update() 方法修改多个键值对
student.update({"name": "Bob", "age": 22})
print("Updated Name:", student["name"]) # 输出: Bob
print("Updated Age:", student["age"]) # 输出: 22# 使用 keys(), values(), items() 方法
print("Keys:", student.keys()) # 输出: dict_keys(['name', 'age', 'courses', 'address'])
print("Values:", student.values()) # 输出: dict_values(['Bob', 22, ['Math', 'Science'], '123 Main St'])
print("Items:", student.items()) # 输出: dict_items([('name', 'Bob'), ('age', 22), ('courses', ['Math', 'Science']), ('address', '123 Main St')])# 删除字典中的键值对
student.pop("address") # 删除 "address" 键值对
print("After pop:", student) # 输出: {'name': 'Bob', 'age': 22, 'courses': ['Math', 'Science']}# 使用 popitem() 删除并返回字典中的最后一个键值对
last_item = student.popitem()
print("Popped item:", last_item) # 输出: ('courses', ['Math', 'Science'])# 清空字典
student.clear()
print("After clear:", student) # 输出: {}# 使用 fromkeys 创建一个新字典
new_dict = dict.fromkeys(["a", "b", "c"], 0)
print("New Dictionary:", new_dict) # 输出: {'a': 0, 'b': 0, 'c': 0}
- 字典创建:我们使用大括号
{}
来创建字典,并指定键值对。字典的键是唯一的,值可以是任何数据类型。 - 访问字典的值:我们通过
dict[key]
或dict.get(key)
来访问字典中的值。get()
方法可以提供默认值以避免键不存在时报错。 - 修改字典的值:通过
dict[key] = value
可以修改字典中的值。 - 添加新的键值对:使用相同的方式通过键来添加新的键值对。
- 使用
update()
方法:可以批量更新字典中的多个键值对。 - 遍历字典:通过
keys()
获取所有的键,values()
获取所有的值,items()
获取所有的键值对。 - 删除字典元素:使用
pop()
删除指定的键值对,popitem()
删除并返回最后一个键值对。 - 清空字典:
clear()
方法会删除字典中的所有元素。 - 创建新字典:
fromkeys()
方法通过指定的键创建新字典,并可以为每个键指定一个默认值。
4. 总结
【如果想学习更多深度学习文章,可以订阅一下热门专栏】
- 《Python/PyTorch极简课》_十二月的猫的博客-CSDN博客
- 《深度学习理论直觉三十讲》_十二月的猫的博客-CSDN博客
- 《小白读透AI原理》_十二月的猫的博客-CSDN博客
如果想要学习更多pyTorch/python编程的知识,大家可以点个关注并订阅,持续学习、天天进步你的点赞就是我更新的动力,如果觉得对你有帮助,辛苦友友点个赞,收个藏呀~~~
相关文章:
【Python入门】一篇掌握Python中的字典(创建、访问、修改、字典方法)【详细版】
🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀《Python/PyTorch极简课》_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目…...
深入理解 HTML 表单与输入
在网页开发的广袤领域中,HTML 表单如同搭建用户与服务器沟通桥梁的基石。它是收集用户输入信息的关键渠道,承载着交互的重任。今天,就让我们一同深入探索 HTML 表单与输入的奥秘。 HTML 表单在文档中划定出一片独特的区域,这片…...
宝塔docker切换存储目录
1、 停止 Docker 服务 sudo systemctl stop docker2、迁移 Docker 数据目录 sudo mkdir -p /newpath/docker sudo rsync -avz /var/lib/docker/ /newpath/docker/3、修改 Docker 配置文件 vi /etc/docker/daemon.json 内容 {"data-root": "/newpath/docker&q…...
IPoIB驱动中RSS与TSS技术的深度解析:多队列机制与性能优化
在高速网络通信中,IP over InfiniBand(IPoIB) 是实现低延迟、高吞吐的关键技术之一。为了充分发挥多核处理器的性能潜力,IPoIB驱动通过 接收侧扩展(RSS) 和 发送侧扩展(TSS) 技术,实现了数据包处理的多队列并行化。本文结合源码实现与性能优化策略,深入解析其核心机制…...
目前人工智能的发展,判断10年、20年后的人工智能发展的主要方向,或者带动的主要产业
根据2025年的最新行业研究和技术演进趋势,结合历史发展轨迹,未来10-20年人工智能发展的主要方向及带动的产业将呈现以下六大核心趋势: 一、算力革命与底层架构优化 核心地位:算力将成为类似“新能源电池”的基础设施,…...
DeepSeek-prompt指令-当DeepSeek答非所问,应该如何准确的表达我们的诉求?
当DeepSeek答非所问,应该如何准确的表达我们的诉求?不同使用场景如何向DeepSeek发问?是否有指令公式? 目录 1、 扮演专家型指令2、 知识蒸馏型指令3、 颗粒度调节型指令4、 时间轴推演型指令5、 极端测试型6、 逆向思维型指令7、…...
并发编程面试题二
1、java线程常见的基本状态有哪些,这些状态分别是做什么的 (1)创建(New):new Thread(),生成线程对象。 (2)就绪(Runnable):当调用线程对象的sta…...
【NLP】 8. 处理常见词(Stopwords)的不同策略
处理常见词(Stopwords)的不同策略 在自然语言处理 (NLP) 和信息检索 (IR) 任务中,常见词(Stopwords) 是指在文本中频繁出现但通常对主要任务贡献较小的词,例如 “the”、“is”、“in”、“and” 等。这些…...
【Java基础】java中的lambda表达式
Java Lambda表达式深度解析:语法、简化规则与实战 前言 Java 8的Lambda表达式通过简化匿名内部类和引入函数式编程,极大提升了代码的简洁性和可读性。 一、Lambda表达式的核心语法 Lambda表达式由参数列表、->符号和表达式主体组成,其基…...
【RS】OneRec快手-生成式推荐模型
note 本文提出了一种名为 OneRec 的统一生成式推荐框架,旨在替代传统的多阶段排序策略,通过一个端到端的生成模型直接生成推荐结果。OneRec 的主要贡献包括: 编码器-解码器结构:采用稀疏混合专家(MoE)架构…...
DQN 玩 2048 实战|第一期!搭建游戏环境(附 PyGame 可视化源码)
视频讲解: DQN 玩 2048 实战|第一期!搭建游戏环境(附 PyGame 可视化源码) 代码仓库:GitHub - LitchiCheng/DRL-learning: 深度强化学习 2048游戏介绍,引用维基百科 《2048》在44的网格上进行。…...
练习题:87
目录 Python题目 题目 题目分析 代码实现 代码解释 列表推导式部分: 变量赋值和输出: 运行思路 结束语 Python题目 题目 使用列表推导式生成一个包含 1 到 100 中所有偶数的列表。 题目分析 本题要求使用 Python 的列表推导式生成一个包含 …...
二叉树的层序遍历(102)
102. 二叉树的层序遍历 - 力扣(LeetCode) 解法: /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* …...
NVMe集群:加速数据处理
随着大数据和云计算的快速发展,企业面临着前所未有的数据处理挑战。传统的存储技术和架构已经难以满足现代应用对高性能和低延迟的需求。在这种背景下,NVMe(Non-Volatile Memory Express)集群应运而生,它以其卓越的性能…...
JUC并发编程:共享模型之管程
一、共享带来的问题 (1)Java的体现 两个线程对初始值为 0 的静态变量一个做自增,一个做自减,各做 5000 次,结果是 0 吗? (2)问题分析 以上的结果可能是正数、负数、零。为什么呢…...
Java构造方法详解:从入门到实战
目录 一、什么是构造方法? 二、构造方法的作用 三、构造方法分类与使用 1. 默认构造方法 2. 有参构造方法 3. 构造方法重载 四、注意事项(避坑指南) 五、经典面试题解析 六、实战应用场景 七、总结 一、什么是构造方法? …...
Uniapp 字体加载问题(文件本地存储)
项目场景: 在最近公司开发一款小程序,但是小程序的文字需要用艺术字,就是那种不能用切图绕开的那种! 问题描述 我们在使用uni.loadfontface Api请求数据字体文件的时候总是会报错,就是那种网上也找不到解决方法的那种…...
HTML 新手入门:从零基础到搭建第一个静态页面(一)
开启 HTML 学习之旅 在互联网的广袤世界中,网页是我们与信息交互的主要窗口。而 HTML,作为构建网页的基石,就像是搭建房屋的砖块,是网页开发中不可或缺的基础。无论你是对网页开发充满好奇的小白,还是渴望系统学习前端…...
使用multiprocessing实现进程间共享内存
在 Python 中,可以使用多种方法来实现几个进程之间的通信。 简单消息传递:使用 multiprocessing.Queue 或 multiprocessing.Pipe。 共享简单数据:使用 multiprocessing.Value 或 multiprocessing.Array。 共享复杂数据:使用 multiprocessing.Manager。 进程间信号控制:使用…...
在IDEA中连接达梦数据库:详细配置指南
达梦数据库(DM Database)作为国产关系型数据库的代表,广泛应用于企业级系统开发。本文将详细介绍如何在IntelliJ IDEA中配置并连接达梦数据库,助力开发者高效完成数据库开发工作。 准备工作 1. 下载达梦JDBC驱动 访问达梦官方资…...
docker无法正常拉取镜像问题的解决
目录 1.前言 2.解决方案 1.前言 安装docker后拉取镜像,遇见了如下问题: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded whil…...
如何在保持安全/合规的同时更快地构建应用程序:DevOps 指南
随着敏捷思维方式的兴起,开发和 DevOps 团队都面临着持续的压力,他们需要以迭代方式缩短发布周期并加快部署速度,以满足不断增长的客户期望。随着这种对速度的追求越来越强烈,维护安全性和合规性标准的复杂性也随之增加。 当今 D…...
SQL Server查询优化
最常用,最有效的数据库优化方式 查询语句层面 避免全表扫描 使用索引:确保查询条件中的字段有索引。例如,查询语句 SELECT * FROM users WHERE age > 20,若 age 字段有索引,数据库会利用索引快速定位符合条件的记…...
iOS底层原理系列04-并发编程
在移动应用开发中,流畅的用户体验至关重要,而并发编程是实现这一目标的关键技术。本文将深入探讨iOS平台上的并发编程和多线程架构,帮助你构建高性能、响应迅速的应用程序。 1. iOS线程调度机制 1.1 线程本质和iOS线程调度机制 线程是操作…...
企业数字化转型数据治理解决方案(119页PPT)(文末有下载方式)
资料解读:企业数字化转型数据治理解决方案 详细资料请看本解读文章的最后内容。 在当今数字化时代,数据已经成为企业最宝贵的资产之一。然而,随着数据量的激增和数据来源的多样化,如何有效管理和利用这些数据成为了企业面临的一…...
git报错:“fatal:refusing to merge unrelated histories“
新建仓库,克隆本地项目到新仓库,首次同步本地已提交的代码到远程时,报错:"fatal:refusing to merge unrelated histories" 。 报错意思是:致命的:拒绝合并无关的历史。 一、问题背景ÿ…...
Jmeter下载及环境配置
Jmeter下载及环境配置 java环境变量配置配置jdk环境变量检查是否配置成功JMeter下载 java环境变量配置 访问地址: https://www.oracle.com/cn/java/technologies/downloads/ 注意:需要自己注册账号 下载完成,解压后的目录为: …...
K8S学习之基础二十四:k8s的持久化存储之pv和pvc
K8S的存储之pv和pvc 在 Kubernetes (k8s) 中,持久化存储是通过 PersistentVolume (PV) 和 PersistentVolumeClaim (PVC) 来实现的。PVC 是用户对存储资源的请求,而 PV 是集群中的实际存储资源。PVC 和 PV 的关系类似于 Pod 和 Node 的关系。 Persisten…...
1.5、Java构造方法重载
构造方法重载的实现 (1)定义多个构造方法 class Person {private String name;private int age;// 无参构造方法public Person() {this.name "Unknown";this.age 0;}// 带一个参数的构造方法public Person(String name) {this.name name;…...
领域驱动设计(DDD)技术分享:从三层架构到DDD的进化之旅
一、开篇话:我们为什么要聊DDD? 如果你像我一样有着Java开发背景,那Spring的三层架构可能是你的老朋友了。Controller-Service-DAO这种模式简直就像我们编程的"家常便饭"。但是,随着业务越来越复杂,你是否也…...
LeetCode - #227 基于 Swift 实现基本计算器
摘要 在这篇文章中,我们将实现一个基于 Swift 语言的基本计算器。该计算器能够解析和计算包含 、-、* 和 / 的数学表达式,并且遵循运算符的优先级规则。整数除法仅保留整数部分,不能使用 eval() 这样的内置解析方法。 描述 给你一个字符串表…...
Elasticsearch Java High Level Client [7.17] 使用
es 的 HighLevelClient存在es源代码的引用,结合springboot使用时,会存在es版本的冲突,这里记录下解决冲突和使用方式(es已经不建议使用这个了)。 注意es服务端的版本需要与client的版本对齐,否则返回数据可…...
[多线程]基于环形队列(RingQueue)的生产者-消费者模型的实现
标题:[多线程]基于环形队列(RingQueue)的生产者-消费者模型 水墨不写bug 一、模型实现 接下来我们要实现一个基于环形队列(RingQueue)的生产者-消费者模型。该模型使用信号量和互斥锁来保证生产者和消费者之间的同步与…...
HAL库STM32常用外设—— CAN通信(一)
文章目录 一、CAN是什么?1.1 CAN应用场景1.2 CAN通信优势 二、CAN基础知识介绍2.1 CAN总线结构2.2 CAN总线特点2.2.1 CAN总线的数据传输特点2.2.2 位时序和波特率 2.3 CAN位时序和波特率2.3 CAN物理层2.3.1 CAN 物理层特性2.3.2 CAN 收发器芯片介绍 2.4 CAN协议层2.…...
分页查询的实现
目录 前言 一.问题描述 二.后端实现步骤 2.1配置PageHelper插件 ①导入依赖 ②在application.yml配置文件中添加相关配置 2.2编写一个入门的程序,体验分页过程 2.3定义一个vo,用来收集分页后的所有信息 2.4修改serviceImpl层的代码 2.5动态设…...
Sourcetree——使用.gitignore忽略文件或者文件夹
一、为何需要文件忽略机制? 1.1 为什么要会略? 对于开发者而言,明智地选择忽略某些文件类型,能带来三大核心优势: 仓库纯净性:避免二进制文件、编译产物等污染代码库 安全防护:防止敏感信息&…...
Thinkphp的belongsToMany(多对多) 和 hasManyThrough(远程一对多)的区别是什么?
虽然 belongsToMany(多对多) 和 hasManyThrough(远程一对多) 都会使用 JOIN 查询,但它们的核心区别在于 关联关系的本质不同,具体如下: 1️⃣ belongsToMany(多对多) &a…...
DataWhale 大语言模型 - 大模型技术基础
本课程围绕中国人民大学高瓴人工智能学院赵鑫教授团队出品的《大语言模型》书籍展开,覆盖大语言模型训练与使用的全流程,从预训练到微调与对齐,从使用技术到评测应用,帮助学员全面掌握大语言模型的核心技术。并且,课程…...
Docker+Flask 实战:打造高并发微服务架构
DockerFlask 实战:打造高并发微服务架构 今天我们要深入探讨一个非常热门且实用的主题:基于 Docker 部署 Python Flask 应用。Docker 作为当下最流行的容器化技术,已经广泛应用于各种开发和部署场景,尤其是在微服务架构中。而 Fl…...
前端跨域如何调试,以及相关概念梳理【环境变量 本地代理 正向代理 反向代理 OPTIONS请求 CDN 等】
跨域报错 一 前端日常开发时,项目的部署地址和接口请求的地址一般是同源的,不会跨域。 例如项目的测试环境部署在https://my-dev.BeatingWorldLine.com/xxx, 测试环境的访问接口域名也要相同来保证不跨域https://my-dev.BeatingWorldLine.com/api/xxx, …...
【区块链】以太坊
学习视频源链接: https://www.bilibili.com/video/BV1Vt411X7JF/ 本文是根据肖老师的视频进行的笔记记录 bitcoin 1.0 区块链 以太坊 2.0区块链 以太坊 设置了 memory hard mining puzzle ,这造成了asic resistance, 后续 proof of work &a…...
MCU的工作原理:嵌入式系统的控制核心
MCU的工作原理可以概括为以下几个步骤: 1. 初始化 上电后,MCU从Flash存储器中加载程序代码,并初始化外设和寄存器。 2. 任务执行 根据程序逻辑,MCU执行数据处理、外设控制和通信等任务。通过中断系统实时响应外部事件。 3. 低…...
离线服务器ollama新增qwen2:0.5b模型
离线服务器ollama新增qwen2:0.5b模型 Dify集成ollama前面已经介绍过离线服务器CentOS使用的docker安装的ollama,其中在ollama中已经安装了deepseek-r1:1.5b。目前的需求是需要再安装一个qwen2:0.5b的模型,那么如何安装呢? 1.首先在有网的服…...
Ubuntu20.04安装运行DynaSLAM
目录 一、安装Anaconda 二、相关依赖库安装 1、boost安装 2、Eigen 3安装 3、opencv安装 4、Pangolin安装 三、配置Mask_RCNN环境 四、DynaSLAM编译 五、DynaSLAM运行 一、安装Anaconda 打开以下链接: Index of / 下载和自己系统匹配的安装包。这里下…...
Apache Shiro反序列化漏洞深度剖析:从原理到利用
引言 在Web安全的世界里,反序列化漏洞一直是最危险的漏洞类型之一。今天,我们将深入探讨Apache Shiro框架中的两个著名反序列化漏洞.通过通俗易懂的解释和详细的实例,帮助你理解这类漏洞的本质和危害。 Shiro框架与"记住我"功能简…...
Android UI 组件系列(二):Button 进阶用法
引言 在上一篇博客中,我们介绍了 Button 的基本用法和常见属性,掌握了 Button 的基础知识。然而,在实际开发中,Button 远不止于简单的点击功能,它还可以支持不同的变体、丰富的自定义样式,以及更灵活的状态…...
CentOS-7安装Docker(更新时间:2025-03-12)
CentOS-7安装Docker 该文章记录在CentOS 7上安装Docker的过程和步骤,以及在安装过程中遇到的困难和解决方案。 目录 CentOS-7安装Docker一、环境准备二、安装Docker1.验证服务器是否接入互联网2. 检查CentOS内核版本3.使用root权限登录CentOS。确保yum包更新到最新…...
网络空间安全(31)安全巡检
一、定义与目的 定义: 安全巡检是指由专业人员或特定部门负责,对各类设施、设备、环境等进行全面或重点检查,及时发现潜在的安全隐患或问题。 目的: 预防事故发生:通过定期的安全巡检,及时发现并解决潜在的…...
Kubernetes学习笔记-移除Nacos迁移至K8s
项目服务的配置管理和服务注册发现由原先的Nacos全面迁移到Kubernetes上。 一、移除Nacos 移除Nacos组件依赖。 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <…...
Docker 构建 nginx-redis-alpine 项目详解
Docker 构建 nginx-redis-alpine 项目详解 一、课程概述 嘿,朋友们!今天咱们要深入探索一个超级实用的项目 ——nginx-redis-alpine!这个项目可不简单,它包含了好多重要的知识点,像文件目录结构、核心文件的作用及配…...