当前位置: 首页 > news >正文

python zip()函数(将多个可迭代对象的元素配对,创建一个元组的迭代器)zip_longest()

文章目录

  • Python `zip()` 函数深入解析
    • 基本用法
      • 函数原型
      • 基础示例
    • 处理不同长度的迭代器
    • 高级用法
      • 多个迭代器
      • 使用 `zip()` 与 `dict()`
      • 解压序列
    • 注意事项
      • 内存效率:`zip()` 返回的是一个迭代器,这意味着直到迭代发生前,元素不会被消耗。这使得 `zip()` 特别内存效率。
        • 迭代器和内存效率
        • `zip()` 函数的工作原理
          • 延迟计算:`zip()` 并不会预先计算出所有的元组。它仅在迭代到某个位置时,才会生成那个位置的元组。这就是所谓的“惰性计算”(lazy evaluation)。
          • 内存使用:因为数据是按需生成的,`zip()` 在任何给定时间点不需要将所有组合的元组存储在内存中。这样可以避免在处理大量数据时占用大量内存。
        • 实际例子
      • 一次性使用:由于 `zip()` 返回的是一个迭代器,所以迭代过后,它将无法再次使用。
    • 使用技巧
      • 与 `enumerate` 结合使用
      • 处理不等长序列的替代方法(需要处理不等长的序列而又不想在最短序列结束时停止,可以使用 `itertools.zip_longest` 方法)
      • 与列表推导式结合
    • 应用场景
      • 数据科学中的应用
      • 多语言数据处理
    • 结论

Python zip() 函数深入解析

Python 的 zip() 函数是一个内置函数,用于将多个可迭代对象的元素配对,创建一个元组的迭代器。这个功能在处理并行数据时非常有用。本文将深入探讨 zip() 函数的使用方法、高级应用场景以及一些注意事项。

基本用法

函数原型

zip() 函数的基本语法如下:

zip(*iterables)
  • *iterables:一个或多个可迭代对象,如列表、元组或字典。

基础示例

开始之前,先看一个简单的例子,演示如何使用 zip() 将两个列表中的相对应元素组合在一起:

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
zipped = zip(list1, list2)
print(list(zipped))

输出:

[(1, 'a'), (2, 'b'), (3, 'c')]

在这里插入图片描述

这里,zip() 函数接受两个列表作为输入,并返回一个迭代器。迭代器中的每个元素都是一个元组,包含来自所有输入可迭代对象的对应元素。

处理不同长度的迭代器

当输入的可迭代对象长度不一致时,zip() 会根据最短的对象结束。看下面的例子:

numbers = [1, 2, 3, 4]
letters = ['a', 'b', 'c']
zipped = zip(numbers, letters)
print(list(zipped))

输出:

[(1, 'a'), (2, 'b'), (3, 'c')]

在这里插入图片描述

可以看到,虽然 numbers 列表有四个元素,但输出只包含三个元组,因为 letters 只有三个元素。

高级用法

多个迭代器

zip() 可以同时处理多于两个的迭代器。例如,将三个列表组合在一起:

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
list3 = [0.1, 0.2, 0.3]
zipped = zip(list1, list2, list3)
print(list(zipped))

输出:

[(1, 'a', 0.1), (2, 'b', 0.2), (3, 'c', 0.3)]

在这里插入图片描述

使用 zip()dict()

zip()dict()结合使用,常用于将两个列表转换成字典,其中一个列表包含键,另一个列表包含值:

keys = ['name', 'age', 'gender']
values = ['Alice', 25, 'Female']
dictionary = dict(zip(keys, values))
print(dictionary)

输出:

{'name': 'Alice', 'age': 25, 'gender': 'Female'}

在这里插入图片描述

解压序列

使用 zip(*iterable) 可以实现解压,即反向操作,将配对的数据序列解开成多个独立的序列:

pairs = [(1, 'a'), (2, 'b'), (3, 'c')]
numbers, letters = zip(*pairs)
print(list(numbers))
print(list(letters))

输出:

[1, 2, 3]
['a', 'b', 'c']

在这里插入图片描述

这里,*pairs 将列表中的每个元组解包,然后 zip() 将所有第一项组合成一个元组,所有第二项组合成另一个元组。

注意事项

内存效率:zip() 返回的是一个迭代器,这意味着直到迭代发生前,元素不会被消耗。这使得 zip() 特别内存效率。

当谈到 zip() 函数的内存效率时,关键在于它返回的是一个迭代器(iterator),而不是直接返回整个数据集合。这一点非常重要,因为它涉及到如何在内存中处理和存储数据。

迭代器和内存效率

迭代器是一种访问集合元素的方式,但它不会在内存中同时存储所有元素。相反,迭代器会一个接一个地生成元素,仅在迭代过程中才处理每个元素。这意味着,与直接生成并存储整个数据列表相比,使用迭代器可以显著减少内存的使用。

zip() 函数的工作原理

当使用 zip() 函数时,如果传入多个可迭代对象,zip() 会创建一个迭代器,这个迭代器会组合这些对象中相对应的元素形成一个个元组。关键点在于:

延迟计算:zip() 并不会预先计算出所有的元组。它仅在迭代到某个位置时,才会生成那个位置的元组。这就是所谓的“惰性计算”(lazy evaluation)。
内存使用:因为数据是按需生成的,zip() 在任何给定时间点不需要将所有组合的元组存储在内存中。这样可以避免在处理大量数据时占用大量内存。
实际例子

假设有两个非常大的列表,如果使用传统的方法(如列表推导或循环)来组合这些列表,将会创建一个包含所有组合的新列表,这需要足够的内存来一次性存储所有的元组。

list1 = range(1000000)  # 大列表1
list2 = range(1000000, 2000000)  # 大列表2# 传统方法,占用大量内存
combined_list = [(x, y) for x, y in zip(list1, list2)]

相比之下,使用 zip()

# 使用 zip() 创建迭代器
zipped = zip(list1, list2)# 可以逐个处理元组,不必存储整个组合列表
for item in zipped:process(item)  # 处理每个元组

在第二种方法中,zipped 迭代器会一个接一个地生成每个元组,只有当前的元组会占用内存。这对于内存管理来说是非常有效的,特别是在处理大数据集时。

总之,zip() 通过生成迭代器来实现内存效率,使得即使是处理大规模数据集,也不会导致大量的内存消耗,这对于资源有限的环境非常关键。这种按需访问数据的方式也帮助程序员写出更加高效和可扩展的程序。

一次性使用:由于 zip() 返回的是一个迭代器,所以迭代过后,它将无法再次使用。

使用技巧

enumerate 结合使用

在处理数据时,往往不仅需要元素值,还需要元素的索引。结合使用 enumeratezip 可以同时获得索引和来自多个序列的元素。下面是一个示例,展示如何在循环中同时获取索引和来自两个列表的元素:

names = ['Alice', 'Bob', 'Charlie']
ages = [25, 30, 35]
for index, (name, age) in enumerate(zip(names, ages)):print(f"Index {index}: {name} is {age} years old.")

输出:

Index 0: Alice is 25 years old.
Index 1: Bob is 30 years old.
Index 2: Charlie is 35 years old.

在这里插入图片描述

处理不等长序列的替代方法(需要处理不等长的序列而又不想在最短序列结束时停止,可以使用 itertools.zip_longest 方法)

如果需要处理不等长的序列而又不想在最短序列结束时停止,可以使用 itertools.zip_longest 方法。这个方法在 itertools 模块中,它允许用一个填充值填充短序列的缺失部分。例如:

from itertools import zip_longestnumbers = [1, 2, 3, 4, 5]
letters = ['a', 'b', 'c']
zipped_longest = zip_longest(numbers, letters, fillvalue='?')
print(list(zipped_longest))

输出:

[(1, 'a'), (2, 'b'), (3, 'c'), (4, '?'), (5, '?')]

在这里插入图片描述

与列表推导式结合

zip() 函数与列表推导式结合使用可以更加便捷地创建列表。这在数据处理和数据转换中尤为有用。例如,可以快速创建一个元组列表,每个元组包含不同列表中相应位置的元素:

numbers = [1, 2, 3, 4]
squares = [x**2 for x in numbers]
cubes = [x**3 for x in numbers]
combined = [(n, s, c) for n, s, c in zip(numbers, squares, cubes)]
print(combined)

输出:

[(1, 1, 1), (2, 4, 8), (3, 9, 27), (4, 16, 64)]

在这里插入图片描述

应用场景

数据科学中的应用

在数据科学和机器学习中,经常需要将多个数据集(通常是特征列表)组合起来进行进一步处理。zip() 函数在这种情况下非常有用,因为它可以轻松地将多个数据列表合并为一个列表,每个列表元素都是一个包含所有对应特征的元组。

多语言数据处理

在处理多语言文本数据时,zip() 同样非常有用。比如在翻译系统中,原始文本和翻译文本可能存储在两个列表中,使用 zip() 可以方便地将它们对齐,进而处理对应的文本对。

结论

zip() 是 Python 中一个强大而灵活的内置函数,适用于多种数据处理场景。它不仅能够简化代码,还能提高代码效率。在日常编程或数据处理工作中合理利用 zip() 可以大大提高开发效率和数据处理能力。

相关文章:

python zip()函数(将多个可迭代对象的元素配对,创建一个元组的迭代器)zip_longest()

文章目录 Python zip() 函数深入解析基本用法函数原型基础示例 处理不同长度的迭代器高级用法多个迭代器使用 zip() 与 dict()解压序列 注意事项内存效率:zip() 返回的是一个迭代器,这意味着直到迭代发生前,元素不会被消耗。这使得 zip() 特别…...

React.forwardRef 使用

React.forwardRef 是一个React提供的高阶组件函数,用于向函数组件传递ref。在函数组件中无法直接访问ref,如果需要在函数组件中操作子组件的DOM元素或组件实例,就可以使用React.forwardRef来转发ref给子组件。 当使用React.forwardRef包裹一…...

C# 中的值类型与引用类型:内存大小解析

在 C# 中,类型可以被归类为值类型或引用类型,它们在内存中的存储和管理方式不同。了解这些差异对于优化程序性能和资源管理至关重要。 值类型 (Value Types) 值类型包括所有内置的数值类型(如 int, double 等)、char 类型、bool…...

object对象列表使用sorted函数按照对象的某个字段排序

在Python中,如果你想要根据列表中对象的某个属性(比如create_time)来进行逆序排序,你可以使用sorted()函数并指定一个key参数。key参数应该是一个函数,该函数接受一个列表元素并返回一个用于排序的值。 假设你的objec…...

【再探】设计模式—中介者模式、观察者模式及模板方法模式

中介者模式让多对多的复杂引用关系变成一对多,同时能通过中间类来封装多个类中的行为,观察者模式在目标状态更新时能自动通知给订阅者,模版方法模式则是控制方法的执行顺序,子类在不改变算法的结构基础上可以扩展功能实现。 1 中…...

vue中使用svg图像

一 、svg图像是什么 SVG(可缩放矢量图形)是一种图像格式,它以XML文档的形式存在,用以描述图像中的形状、线条、文本和颜色等元素。由于其基于矢量的特性,SVG图像在放大或改变尺寸时能够保持图形质量不受影响。这种格式…...

Deconfounding Duration Bias in Watch-time Prediction for Video Recommendation

Abstract 观看时间预测仍然是通过视频推荐加强用户粘性的关键因素。然而,观看时间的预测不仅取决于用户与视频的匹配,而且经常被视频本身的持续时间所误导。为了提高观看时间,推荐总是偏向于长时间的视频。在这种不平衡的数据上训练的模型面…...

python多进程

python多进程的使用有两种方式: multiprocessingconcurrent的使用方式 multiprocessing的使用方式 定义线程池的数量开始处理,结果回调 下面以多进程下载图像为例: import multiprocessing import requests from io import BytesIO from…...

springboot 的yaml配置文件加密

springboot 的yaml配置文件加密 一、采用yaml 插件加密添加依赖创建启动类配置加密密钥加密需要加密的内容用过测试类编写加密的YAML配置解密配置可选:自定义配置扩展:修改ENC() 一、采用yaml 插件加密 使用Jasypt对Spring Boot的YAML配置文件进行加密是…...

npm发布、更新、删除包

如何将自己开发的依赖包发布到npmjs上供别人使用?五个步骤搞定! 实现步骤: 创建自己的工具包项目,进行开发。注册npmjs账号。执行npm login在控制台登录,填写用户信息。执行npm publish发布包。更新及删除。 步骤一…...

【JavaEE进阶】——Mybatis操作数据库(使用注解和XML方式)

目录 🚩三层架构 🎈JDBC操作回顾 🚩什么是MyBatis 🚩MyBatis⼊⻔ 🎈准备工作 📝创建⼯程 📝数据准备 🎈配置数据库连接字符串 🎈写持久层代码 🎈单…...

【数据结构】六种排序实现方法及区分比较

文章目录 前言插入排序希尔排序选择排序堆排序快速排序冒泡排序总结 前言 众所周知,存在许多种排序方法,作为新手,最新接触到的就是冒泡排序,这种排序方法具有较好的教学意义,但是实用意义不高,原因就在于…...

QT之QTableWidget详细介绍

本文来自于学习QT时遇到QTableWidget类时进行总结的知识点,涵盖了QTableWidget主要函数。本人文笔有限,欢迎大家评论区讨论。 一、QTableWidget介绍 QTableWidget 类是 Qt 框架中的一个用于展示和编辑二维表格数据的控件。它是对 QTableView 和 QStand…...

mac电脑安卓设备文件传输助手:MacDroid pro 中文激活版

MacDroid Pro是一款专为Mac电脑和Android设备设计的软件,旨在简化两者之间的文件传输和数据管理,双向文件传输:支持从Mac电脑向Android设备传输文件,也可以将Android设备上的文件轻松传输到Mac电脑上。完整的文件访问和管理&#…...

车流量监控系统

1.项目介绍 本文档是对于“车流量检测平台”的应用技术进行汇总,适用于此系统所有开发,测试以及使用人员,其中包括设计背景,应用场景,系统架构,技术分析,系统调度,环境依赖&#xf…...

LAMP集群分布式实验报告

前景: 1.技术成熟度和稳定性: LAMP架构(Linux、Apache、MySQL、PHP)自1998年提出以来,经过长时间的发展和完善,已经成为非常成熟和稳定的Web开发平台。其中,Linux操作系统因其高度的灵活性和稳…...

vue3中函数必须有返回值么?

在 Vue 3 中,特别是涉及到Composition API的使用时,setup() 函数确实必须有返回值。setup() 函数是组件的入口点,它的返回值会被用来决定哪些数据和方法是可被模板访问的。返回的对象中的属性和方法可以直接在模板中使用。如果setup()没有返回…...

经常用到的函数

创建文件夹和删除文件夹的函数 def make_dirs(*dirs):for new_dir in dirs:if not os.path.exists(new_dir):try:os.makedirs(new_dir)except RuntimeError:return Falsereturn Truedef remove_files(file_path_list):""" 删除列表中指定路径文件Args:file_pat…...

vue3学习(六)

前言 接上一篇学习笔记,今天主要是抽空学习了vue的状态管理,这里学习的是vuex,版本4.1。学习还没有学习完,里面有大坑,难怪现在官网出的状态管理用Pinia。 一、vuex状态管理知识点 上面的方式没有写全,还有…...

[数据集][目标检测]猫狗检测数据集VOC+YOLO格式8291张2类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):8291 标注数量(xml文件个数):8291 标注数量(txt文件个数):8291 标注…...

简单模拟实现shell(Linux)

目录​​​​​​​ 前言 展示效果 实现代码 前言 该代码模拟了shell的实现,也就是解析类似于“ls -a -l"的命令,当我们启动我们自己写的shell的可执行程序时,我们输入"ls"的命令,也可以展示出在shell中输入&…...

SQL深度解析:从基础到高级应用

SQL(Structured Query Language)是用于管理关系型数据库的语言,广泛应用于数据管理、分析和查询。本文将详细介绍SQL的基础知识、高级特性以及一些常见的代码示例,帮助您全面掌握SQL的应用。 一、SQL基础语法 数据库操作 创建数据…...

乡村振兴与脱贫攻坚相结合:巩固拓展脱贫攻坚成果,推动乡村全面振兴,建设更加美好的乡村生活

目录 一、引言 二、巩固拓展脱贫攻坚成果 1、精准施策,确保稳定脱贫 2、强化政策支持,巩固脱贫成果 3、激发内生动力,促进持续发展 三、推动乡村全面振兴 1、加快产业发展,增强乡村经济实力 2、推进乡村治理体系和治理能力…...

[AI Google] Google I/O 2024: 为新一代设计的 I/O

编辑注:以下是 Sundar Pichai 在 I/O 2024 上讲话的编辑版,并包含了更多在舞台上宣布的内容。查看我们收藏中的所有公告。 Google 完全进入了我们的 Gemini 时代。 在开始之前,我想反思一下我们所处的这一刻。我们已经在 AI 上投资了十多年…...

CentOS配置DNS

1.打开/etc/resolv.conf文件 sudo vi /etc/resolv.conf2.添加配置 nameserver 114.114.114.1143.保存并关闭文件。 4.为了确保配置生效,重启网络服务或重启系统。例如: 重启网络: sudo systemctl restart network重启系统: …...

ArcGIS空间数据处理、空间分析与制图;PLUS模型和InVEST模型的原理,参量提取与模型运行及结果分析;土地利用时空变化以及对生态系统服务的影响分析

工业革命以来,社会生产力迅速提高,人类活动频繁,此外人口与日俱增对土地的需求与改造更加强烈,人-地关系日益紧张。此外,土地资源的不合理开发利用更是造成了水土流失、植被退化、水资源短缺、区域气候变化、生物多样性…...

Linux基于V4L2的视频捕捉

简介 linux环境使用V4l2实现摄像头捕捉&#xff0c;界面流畅播放并可以保存图片到本地。 代码 void VideoCapture::run() {qDebug() << "VideoCapture start";// 打开设备int fd open("/dev/video0", O_RDWR);if(fd < 0){qDebug("video设…...

ECS搭建2.8版本的redis

要在ECS&#xff08;Elastic Compute Service&#xff09;上手动搭建Redis 2.8版本&#xff0c;你可以按照以下步骤操作&#xff1a; 步骤1&#xff1a;更新系统和安装依赖 首先&#xff0c;登录到你的ECS实例&#xff0c;确保系统是最新的并安装必要的依赖包&#xff1a; s…...

[机器学习]GPT LoRA 大模型微调,生成猫耳娘

往期热门专栏回顾 专栏描述Java项目实战介绍Java组件安装、使用&#xff1b;手写框架等Aws服务器实战Aws Linux服务器上操作nginx、git、JDK、VueJava微服务实战Java 微服务实战&#xff0c;Spring Cloud Netflix套件、Spring Cloud Alibaba套件、Seata、gateway、shadingjdbc…...

代码随想录算法训练营Day24|216.组合总和III、17.电话号码的字母组合

组合总和III 216. 组合总和 III - 力扣&#xff08;LeetCode&#xff09; 思路和昨日的组合题类似&#xff0c;但注意对回溯算法中&#xff0c;收获时的条件需要写对&#xff0c;path的长度要为k的同时&#xff0c;path中元素总和要为n。 class Solution { public:vector<…...

【Python系列】Python 中方法定义与方法调用详解

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

Java 基础面试300题 (201-230)

Java 基础面试300题 &#xff08;201-230&#xff09; 201.下面代码片段的输出是什么&#xff1f; Predicate<Integer> numberChecker (num)–> num > 20; int input 10; System.out.println(input” greater than 20–”numberChecker.test(input)); //Line 1…...

Go-知识并发控制Context

Go-知识并发控制Context 1. 介绍2. 实现原理2.1 接口定义2.2 Deadline()2.3 Done()2.4 Err()2.5 Value() 3. 空 context4. cancelCtx4.1 Done()4.2 Err()4.3 cancel()4.4 WithCancel4.5 例子4.6 总结 5. timerCtx5.1 Deadline5.2 cancel5.3 WithDeadline5.4 WithTimeout5.5 例子…...

Vue + Nodejs + socket.io 实现聊天

Vue 代码 // 安装 socket.io-clientnpm i socket.io-clientimport io from socket.io-client;mounted () {// * location.origin 表示你的 socket 服务地址// * /XXXX/socket.io 表示 你的 socket 在服务器配置的 访问地址let socket io(location.origin, {path: "/XX…...

cocos creator 3.x实现手机虚拟操作杆

简介 在许多移动游戏中&#xff0c;虚拟操纵杆是一个重要的用户界面元素&#xff0c;用于控制角色或物体的移动。本文将介绍如何在Unity中实现虚拟操纵杆&#xff0c;提供了一段用于移动控制的代码。我们将讨论不同类型的虚拟操纵杆&#xff0c;如固定和跟随&#xff0c;以及如…...

【数据分享】中国电力年鉴(2004-2022)

大家好&#xff01;今天我要向大家介绍一份重要的中国电力统计数据资源——《中国电力年鉴》。这份年鉴涵盖了从2004年到2022年中国电力统计全面数据&#xff0c;并提供限时免费下载。&#xff08;无需分享朋友圈即可获取&#xff09; 数据介绍 自1993年首次出版以来&#xf…...

两个数组的交集Ⅱ-力扣

想到的解法是使用两个map来进行记录&#xff0c;mp1用来统计num1中每个元素出现的次数。当nums2的元素能够在mp1中查找到时&#xff0c;将这个元素添加到mp2&#xff0c;按照这个规则统计得到nums2和nums1重复的元素&#xff0c;mp2中的value记录了nums2中这个元素出现的次数最…...

【TCP协议中104解析】wireshark抓取流量包工具,群殴协议解析基础

Tcp ,104 ,wireshark工具进行解析 IEC104 是用于监控和诊断工业控制网络的一种标准&#xff0c;而 Wireshark则是一款常用的网络协议分析工具&#xff0c;可以用干解析TEC104 报文。本文将介绍如何使用 Wireshark解析 IEC104报文&#xff0c;以及解析过 程中的注意事项。 一、安…...

[个人笔记] 记录docker-compose使用和Harbor的部署过程

容器技术 第三章 记录docker-compose使用和Harbor的部署过程 容器技术记录docker-compose使用和Harbor的部署过程Harborhttps方式部署&#xff1a;测试环境部署使用自签名SSL证书https方式部署&#xff1a;正式环境部署使用企业颁发的SSL证书给Docker守护进程添加Harbor的SSL证…...

详细介绍运算符重载函数,清晰明了

祝各位六一快乐~ 前言 1.为什么要进行运算符重载&#xff1f; C中预定义的运算符的操作对象只能是基本数据类型。但实际上&#xff0c;对于许多用户自定义类型&#xff08;例如类&#xff09;&#xff0c;也需要类似的运算操作。这时就必须在C中重新定义这些运算符&#xff…...

国内外知名的低代码开发平台下载地址

以下是国内外几款低代码开发平台的列表&#xff0c;包含了下载地址、适应操作系统、是否可以独立部署、优点、缺点以及是否包含流程引擎的信息。 平台名称 下载地址 适应操作系统 是否可以独立部署 优点 缺点 是否包含流程引擎 国内平台 阿里云宜搭 阿里云官网 跨平台…...

【Pr学习】01新建项目起步

【Pr学习】01新建项目起步 1、新建项目2.序列设置2.1新建序列2.2序列参数讲解2.3自定义设置 3.PR窗口认识3.1 项目窗口3.2 源窗口2.4 保存面板 4.剪辑导入4.1 素材导入4.2 视图切换4.3 时间轴4.4轨道工具4.5 节目窗口素材导入 5.基础操作5.1 取消视频音频链接5.2 单独渲染&…...

【Redis延迟队列】redis中的阻塞队列和延迟队列

阻塞队列&#xff08;RBlockingQueue&#xff09; 作用和特点&#xff1a; 实时性&#xff1a;阻塞队列用于实时处理消息。生产者将消息放入队列&#xff0c;消费者可以立即从队列中取出并处理消息。阻塞特性&#xff1a;如果队列为空&#xff0c;消费者在尝试获取消息时会被…...

el-tree常用操作

一、定义 <el-treeclass"myTreeClass":data"dirTreeData":props"dirTreeProps":filter-node-method"filterDirTree":expand-on-click-node"false"node-key"id"node-click"dirTreeNodeClick":allow-…...

SQL 语言:存储过程和触发器

文章目录 基本概述创建触发器更改和删除触发器总结 基本概述 存储过程&#xff0c;类似于高阶语言的函数或者方法&#xff0c;包含SQL语句序列&#xff0c;是可复用的语句&#xff0c;保存在数据库中&#xff0c;在服务器中执行。特点是复用&#xff0c;提高了效率&#xff0c…...

Ubuntu Linux 24.04 使用certbot生成ssl证书

设置域名 1. 将需要生成SSL证书的域名解析到IP地址 idealand.xyz <> 64.176.82.190 检查防火墙的设置 1. 首先查看防火墙的状态&#xff1a; # ufw status 2. 如果防火墙开启了&#xff0c;要开放80和443端口用于certbot验证 # ufw allow 80 # ufw allow 443 生…...

Vivado 比特流编译时间获取以及FPGA电压温度获取(实用)

Vivado 比特流编译时间获取以及FPGA电压温度获取 语言 &#xff1a;Verilg HDL 、VHDL EDA工具&#xff1a;ISE、Vivado Vivado 比特流编译时间获取以及FPGA电压温度获取一、引言二、 获取FPGA 当前程序的编译时间verilog中直接调用下面源语2. FPGA电压温度获取&#xff08;1&a…...

Window下VS2019编译WebRTC通关版

这段时间需要实现这样一个功能&#xff0c;使用WebRTC实现语音通话功能&#xff0c;第一步要做的事情就是编译WebRTC源码&#xff0c;也是很多码友会遇到的问题。 经过我很多天的踩坑终于踩出来一条通往胜利的大路&#xff0c;下面就为大家详细介绍&#xff0c;编译步骤以及踩…...

【云原生 | 60】Docker中通过docker-compose部署kafka集群

&#x1f341;博主简介&#xff1a; &#x1f3c5;云计算领域优质创作者 &#x1f3c5;2022年CSDN新星计划python赛道第一名 &#x1f3c5;2022年CSDN原力计划优质作者 &#x1f3c5;阿里云ACE认证高级工程师 &#x1f3c5;阿里云开发者社区专…...

allure测试报告用例数和 pytest执行用例数不相同问题

我出现的奇怪问题&#xff1a; pytest执行了9条用例&#xff0c;但是测试报告确只显示3条用例 我将其中的一个代码删除后&#xff0c;发现allure测试报告又正常了 我觉得很奇怪这个代码只是删除了二维数组的第一列&#xff0c;我检查了半天都找不到问题&#xff0c;只有降低版本…...