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

深度学习(八) TensorFlow、PyTorch、Keras框架大比拼(8/10)

一、深度学习框架概述

深度学习框架在当今人工智能和机器学习领域中占据着至关重要的地位。其中,TensorFlow 由 Google 开发,自 2015 年发布以来,凭借其灵活的计算图、自动微分功能以及跨平台支持等特点,迅速成为主流深度学习框架之一。它在图像识别、自然语言处理、语音识别等多个领域都有广泛应用。例如,在图像识别任务中,通过卷积神经网络能够准确识别物体、人脸和车辆等。

PyTorch 由 Facebook 推出,以其动态图机制、简洁直观的 API 和强大的社区支持备受青睐。它允许在运行时修改模型结构和计算流程,极大地简化了模型开发和调试过程,尤其适合复杂模型和研究型项目。在自然语言处理领域,随着 Transformers 等模型的兴起,PyTorch 内置的 torchtext 库为 NLP 任务提供了丰富的数据处理工具和预训练模型。

Keras 是一个高级深度学习框架,它提供了快速构建深度学习模型的方法,同时支持多种后端,包括 TensorFlow、Theano 和 CNTK 等。Keras 的 API 设计非常简单,易于使用,它可以快速实现各种深度学习模型,包括卷积神经网络、循环神经网络等。其流行得益于简单性和易于上手,数据科学家在数据集上进行深度学习实验时尤其喜欢使用 Keras。

二、各框架详解

(一)TensorFlow

  1. TensorFlow 是由 Google 开发的开源机器学习框架,在深度学习和神经网络领域具有广泛的应用。它能够实现各种复杂的机器学习模型,从简单的线性回归到深度神经网络
  2. TensorFlow 的优点众多。首先,它拥有广泛的社区支持,这意味着有丰富的文档和教程可供学习。例如,在 TensorFlow 的官方文档中,详细介绍了各种模型的构建方法和优化技巧。其次,强大的分布式计算支持使得它适用于大规模模型的训练和推理。据统计,在一些大规模的图像识别项目中,TensorFlow 能够利用多台服务器进行分布式训练,大大缩短训练时间。此外,良好的文档也为开发者提供了便利,使得他们能够快速上手并解决遇到的问题。
  3. 然而,TensorFlow 也有一些缺点。相对较陡峭的学习曲线对于初学者来说可能是一个挑战。它的代码结构在一些情况下相对繁琐,需要开发者花费一定的时间去理解和掌握。
  4. TensorFlow 适用于需要大规模深度学习和神经网络的项目,如图像识别、语音识别等。在图像识别领域,TensorFlow 可以通过卷积神经网络实现高精度的物体识别。在语音识别方面,它能够构建循环神经网络来处理语音信号,实现语音转文字的功能。

(二)PyTorch

  1. PyTorch 是由 Facebook 开发的开源机器学习框架,以其灵活性和直观性而受到欢迎。它采用动态图计算,使得模型的调试和理解更加容易。
  2. PyTorch 的优点主要包括直观的动态图计算。这种计算方式允许开发者在运行时修改模型结构和计算流程,极大地提高了开发效率。同时,良好的社区支持也为开发者提供了丰富的扩展和工具。例如,在自然语言处理领域,有许多基于 PyTorch 的高质量开源项目。
  3. 不过,PyTorch 也存在一些缺点。分布式计算相对不成熟,与 TensorFlow 相比,在大规模分布式训练方面还有一定的差距。此外,相对较小的生态系统也是一个问题,虽然在不断增长,但与 TensorFlow 相比,可供选择的工具和库相对较少。
  4. PyTorch 适用于需要直观性和灵活性,以及较小规模项目的机器学习任务。对于研究型项目和需要快速迭代的场景,PyTorch 的动态图机制能够提供很大的便利。

(三)Keras

  1. Keras 是一种高级神经网络库,建立在低级库之上,如 TensorFlow、Theano 和 CNTK 等,提供简洁易用的 API。它的设计目标是让开发者能够快速构建和试验神经网络。
  2. Keras 的优点主要有简单易用。它的 API 设计非常简洁,使得即使是没有深厚机器学习背景的开发者也能快速上手。高度模块化的设计使得构建复杂的神经网络变得容易。同时,多后端支持也为开发者提供了更多的选择。此外,庞大的社区支持使得在遇到问题时能够快速找到解决方案。
  3. Keras 的缺点也比较明显。由于它是建立在低级库之上的高级库,在一些低级功能方面可能会受到限制。性能问题也是一个关注点,特别是在大规模训练和复杂模型的情况下。此外,它不适合大规模分布式训练。
  4. Keras 适用于深度学习开发新手,以及需要快速构建和试验神经网络的场景。例如,在数据科学竞赛中,Keras 可以帮助开发者快速构建模型并进行实验。

三、框架对比与选择

框架名称

优点

缺点

适用场景

TensorFlow

广泛的社区支持、强大的分布式计算支持、良好的文档

学习曲线相对陡峭、代码结构相对繁琐

需要大规模深度学习和神经网络的项目,如图像识别、语音识别等

PyTorch

直观的动态图计算、良好的社区支持

分布式计算相对不成熟、生态系统相对较小

需要直观性和灵活性,以及较小规模项目的机器学习任务,研究型项目和需要快速迭代的场景

Keras

简单易用、高度模块化、多后端支持、庞大的社区支持

低级功能可能受限、性能问题(大规模训练和复杂模型时)、不适合大规模分布式训练

深度学习开发新手,需要快速构建和试验神经网络的场景,如数据科学竞赛

在为不同需求的开发者提供选择建议时,需要考虑以下几个因素:

1. 项目需求和规模

  • 如果项目是大规模的图像识别、语音识别等任务,需要强大的分布式计算能力,那么 TensorFlow 可能是更好的选择。
  • 对于较小规模的项目,尤其是需要灵活性和快速迭代的研究型项目,PyTorch 可能更合适。
  • 对于快速构建和试验神经网络的场景,Keras 可以帮助开发者快速上手。

2. 学习曲线和团队经验

  • 对于初学者或团队中没有深厚机器学习背景的开发者,Keras 的简单易用性使其成为一个不错的入门选择。
  • 如果团队已经熟悉 Python 并且希望有一个直观的开发体验,PyTorch 可能更适合。
  • 对于有一定机器学习经验,并且需要处理大规模项目的团队,TensorFlow 的强大功能和广泛的社区支持可以提供更多的资源和解决方案。

3. 生态系统和工具支持

  • TensorFlow 拥有庞大的生态系统,包括各种工具和库,可以满足不同的需求。
  • PyTorch 的生态系统虽然相对较小,但在不断增长,并且在某些领域有高质量的开源项目。
  • Keras 作为高级库,依赖于其底层的低级库,在生态系统方面有一定的局限性。

总之,选择合适的深度学习框架需要综合考虑项目需求、学习曲线、团队经验和生态系统等因素。开发者可以根据自己的具体情况进行选择,并且在实际应用中不断尝试和探索,以找到最适合自己项目的框架。

四、本文总结和代码案例

文章总结

本文对 TensorFlow、PyTorch 和 Keras 这三个深度学习框架进行了详细的比较。通过分析它们的优缺点和适用场景,为开发者在选择深度学习框架时提供了参考。在实际应用中,开发者应根据项目需求、学习曲线、团队经验和生态系统等因素进行综合考虑,以找到最适合自己项目的框架。

经典代码案例

1.TensorFlow 图像识别代码示例
import tensorflow as tf
from tensorflow.keras.datasets import mnist# 加载数据
(x_train, y_train), (x_test, y_test) = mnist.load_data()# 数据预处理
x_train = x_train.reshape(-1, 28 * 28) / 255.0
x_test = x_test.reshape(-1, 28 * 28) / 255.0# 构建模型
model = tf.keras.models.Sequential([tf.keras.layers.Dense(128, activation='relu', input_shape=(784,)),tf.keras.layers.Dropout(0.2),tf.keras.layers.Dense(10, activation='softmax')
])# 编译模型
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])# 训练模型
model.fit(x_train, y_train, epochs=5)# 评估模型
test_loss, test_acc = model.evaluate(x_test, y_test)
print('Test accuracy:', test_acc)

此代码使用 TensorFlow 进行手写数字识别,通过构建一个简单的神经网络模型,对 MNIST 数据集进行训练和测试。

2.PyTorch 自然语言处理代码示例
import torch
import torch.nn as nn
import torch.optim as optim
from torchtext.datasets import IMDB# 加载数据
train_data, test_data = IMDB.splits(train='train', test='test')# 构建词汇表
TEXT = data.Field(tokenize='spacy', lower=True)
LABEL = data.LabelField(dtype=torch.float)
fields = [(None, None), ('text', TEXT), ('label', LABEL)]
train_data, test_data = datasets.IMDB.splits(fields)
TEXT.build_vocab(train_data, max_size=25000)
LABEL.build_vocab(train_data)# 构建模型
class RNN(nn.Module):def __init__(self, vocab_size, embedding_dim, hidden_dim, output_dim, n_layers, bidirectional, dropout):super().__init__()self.embedding = nn.Embedding(vocab_size, embedding_dim)self.rnn = nn.LSTM(embedding_dim, hidden_dim, num_layers=n_layers, bidirectional=bidirectional, dropout=dropout)self.fc = nn.Linear(hidden_dim * 2, output_dim)self.dropout = nn.Dropout(dropout)def forward(self, text):embedded = self.dropout(self.embedding(text))output, (hidden, cell) = self.rnn(embedded)hidden = self.dropout(torch.cat((hidden[-2,:,:], hidden[-1,:,:]), dim=1))return self.fc(hidden.squeeze(0))# 参数设置
vocab_size = len(TEXT.vocab)
embedding_dim = 100
hidden_dim = 256
output_dim = 1
n_layers = 2
bidirectional = True
dropout = 0.5# 实例化模型
model = RNN(vocab_size, embedding_dim, hidden_dim, output_dim, n_layers, bidirectional, dropout)# 定义损失函数和优化器
criterion = nn.BCEWithLogitsLoss()
optimizer = optim.Adam(model.parameters())# 训练模型
for epoch in range(5):for batch in train_data:optimizer.zero_grad()text = batch.textlabel = batch.labeloutput = model(text)loss = criterion(output.squeeze(1), label)loss.backward()optimizer.step()

此代码使用 PyTorch 进行情感分析任务,通过构建一个基于 LSTM 的神经网络模型,对 IMDB 数据集进行训练和测试。

3.Keras 图像分类代码示例
import numpy as np
import keras
from keras.datasets import cifar10
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Conv2D, MaxPooling2D# 加载数据
(x_train, y_train), (x_test, y_test) = cifar10.load_data()# 数据预处理
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255# 转换标签
y_train = keras.utils.to_categorical(y_train, 10)
y_test = keras.utils.to_categorical(y_test, 10)# 构建模型
model = Sequential()
model.add(Conv2D(32, (3, 3), padding='same', input_shape=x_train.shape[1:]))
model.add(Activation('relu'))
model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))model.add(Conv2D(64, (3, 3), padding='same'))
model.add(Activation('relu'))
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))model.add(Flatten())
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(10))
model.add(Activation('softmax'))# 编译模型
model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])# 训练模型
model.fit(x_train, y_train, batch_size=32, epochs=10, validation_data=(x_test, y_test))# 评估模型
score = model.evaluate(x_test, y_test, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])

此代码使用 Keras 进行图像分类任务,通过构建一个卷积神经网络模型,对 CIFAR-10 数据集进行训练和测试。

五、学习资源

(一)在线教程和文档

  1. TensorFlow:TensorFlow 的官方文档非常详细,涵盖了从基础概念到高级应用的各个方面。例如,它提供了丰富的示例代码和教程,帮助开发者快速上手。此外,还有许多在线教程网站,如 TensorFlow 官方博客、Medium 上的技术文章等,都可以为开发者提供学习资源
  2. PyTorch:PyTorch 的官方文档同样简洁明了,易于理解。它提供了大量的示例代码和教程,帮助开发者快速掌握 PyTorch 的使用方法。同时,PyTorch 的社区也非常活跃,有许多开发者在博客和论坛上分享自己的经验和技巧。
  3. Keras:Keras 的官方文档简洁易懂,适合初学者学习。它提供了快速入门指南和详细的 API 文档,帮助开发者快速构建深度学习模型。此外,还有许多在线教程和视频课程,如 Coursera、Udemy 等平台上的课程,可以帮助开发者深入学习 Keras。

(二)书籍推荐

  1. 《深度学习实战:基于 TensorFlow 和 Keras》:这本书介绍了如何使用 TensorFlow 和 Keras 进行深度学习实战,包括图像识别、自然语言处理等领域的应用。书中提供了大量的代码示例和实践经验,非常适合初学者学习。
  2. 《PyTorch 深度学习实战》:这本书介绍了如何使用 PyTorch 进行深度学习实战,包括图像分类、目标检测、自然语言处理等领域的应用。书中提供了大量的代码示例和实践经验,非常适合初学者学习。
  3. 《深度学习入门:基于 Python 的理论与实践》:这本书介绍了深度学习的基本概念和原理,以及如何使用 Python 进行深度学习实践。书中提供了大量的代码示例和实践经验,非常适合初学者学习。

(三)社区和论坛

  1. TensorFlow:TensorFlow 的社区非常活跃,有许多开发者在 TensorFlow 的官方论坛、GitHub 上分享自己的经验和技巧。开发者可以在这些社区中提问、交流和学习,获取更多的学习资源和帮助。
  2. PyTorch:PyTorch 的社区也非常活跃,有许多开发者在 PyTorch 的官方论坛、GitHub 上分享自己的经验和技巧。开发者可以在这些社区中提问、交流和学习,获取更多的学习资源和帮助。
  3. Keras:Keras 的社区也非常活跃,有许多开发者在 Keras 的官方论坛、GitHub 上分享自己的经验和技巧。开发者可以在这些社区中提问、交流和学习,获取更多的学习资源和帮助。

(四)开源项目

  1. TensorFlow:TensorFlow 有许多优秀的开源项目,如 TensorFlow Models、TensorFlow Hub 等。这些项目提供了丰富的预训练模型和工具,可以帮助开发者快速构建深度学习模型。
  2. PyTorch:PyTorch 也有许多优秀的开源项目,如 PyTorch Lightning、Torchvision 等。这些项目提供了丰富的预训练模型和工具,可以帮助开发者快速构建深度学习模型。
  3. Keras:Keras 也有许多优秀的开源项目,如 Keras Applications、Keras Preprocessing 等。这些项目提供了丰富的预训练模型和工具,可以帮助开发者快速构建深度学习模型。

 过利用这些学习资料,学习者可以更加系统地学习深度学习的知识和技术,提高自己的实践能力和创新能力。同时,也可以与其他学习者进行交流和互动,共同推动深度学习领域的发展。

博主还写跟本文相关的文章,邀请大家批评指正:

1、深度学习(一)基础:神经网络、训练过程与激活函数(1/10)

2、深度学习(二)框架与工具:开启智能未来之门(2/10)

3、深度学习(三)在计算机视觉领域的璀璨应用(3/10)

4、深度学习(四):自然语言处理的强大引擎(4/10)

5、深度学习(五):语音处理领域的创新引擎(5/10)

6、深度学习(六)CNN:图像处理的强大工具(6/10)

7、深度学习(七)深度强化学习:融合创新的智能之路(7/10)

8、深度学习(八)框架大比拼(8/10)

相关文章:

深度学习(八) TensorFlow、PyTorch、Keras框架大比拼(8/10)

一、深度学习框架概述 深度学习框架在当今人工智能和机器学习领域中占据着至关重要的地位。其中,TensorFlow 由 Google 开发,自 2015 年发布以来,凭借其灵活的计算图、自动微分功能以及跨平台支持等特点,迅速成为主流深度学习框架…...

thinkphp中命令行工具think使用,可用于快速生成控制器,模型,中间件等

在使用tp框架的时候tp内置了一个think的命令行工具, 这个工具可以帮助我们快速的生成控制器,模型,中间件的代码。 这个工具就和laravel中的 artisan 的作用都差不多,只是名称不同而已。 tp中常用的命令行工具: 1. 快…...

Discourse 是否支持手机注册

Discourse 能不能使用手机进行注册? 功能总结 简答来说,Discourse 不能使用手机注册,Discourse 也没有提供这个功能。 这个功能多是需要 SSO 来实现。 比如说华为的那个社区,他们自己做了一个自己的用户管理 SSO,然…...

软件测试学习笔记丨Flask框架-请求与响应

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/23408 请求方法 from flask import Flaskapp Flask(__name__)app.route("/cases", methods["get"]) def get_case():return {"code": 0, "msg": &…...

【C++笔记】list结构剖析及其模拟实现

【C笔记】list结构剖析及其模拟实现 🔥个人主页:大白的编程日记 🔥专栏:C笔记 文章目录 【C笔记】list结构剖析及其模拟实现前言一 .list的结构及其介绍1.1list的结构1.2list的使用1.3迭代器划分 二.list的模拟实现2.1 list结构…...

C#进阶1

C#进阶1 本文章主要介绍C#的进阶知识,如反射,特性.... 参考视频链接 原码 文章目录 C#进阶1反射步骤泛型反射调用方法 获取属性 特性特性的定义步骤扩展枚举练习 反射 在 C# 中,反射(Reflection)是一种强大的机制&a…...

PHP如何对输出进行转义

在PHP中,对输出进行转义是为了防止跨站脚本攻击(XSS)和其他安全问题。PHP提供了多种函数来对输出进行转义,这些函数根据输出的上下文(如HTML、JavaScript、URL等)而有所不同。以下是一些常用的转义函数及其…...

Windows 10 安装Docker踩过的坑和解决-31/10/2024

目录 环境版本 一、Docker Desktop双击启动没反应,open //./pipe/dockerDesktopLinuxEngine: The system cannot find the file specified. 二、Docker Desktop运行run命令时显示错误HTTP code 500 并且错误大意是服务器拒绝访问 三、检测Docker是否可以正常使用…...

【应急响应】Linux植入恶意程序排查流程

文章目录 前言一、Linux入侵检查二、Linux系统被入侵/中毒有哪些现象三、Linux系统被入侵/中毒处置过程四、Linux安全防护措施五、服务器被GetShell渗透解决办法(案例)前言 本篇文章主要是以我们日常的运维工作中对Linux服务器进行安全检查,进一步介绍如何使用具体命令来对Li…...

微信小程序app.js里面onLaunch里面的函数比page里面的onshow里面的方法后执行

微信小程序app.js里面onLaunch里面的函数比page里面的onshow里面的方法后执行 我们在app.js里面执行登录时可以调用checkLoginReadyCallback wx.login({ success: (res) > { $api .login({ jsCode: res.code, }) .then((res1) > { wx.hideLoading(); if (res1.code 0) …...

斐波那契时间序列,精准捕捉市场拐点 MT4免费公式源码!

指标名称:斐波那契时间序列 版本:MT4 ver. 2.01 斐波那契时间序列是一种技术分析工具,通过将斐波那契数列(如1, 2, 3, 5, 8, 13等)应用于时间轴上,用于预测市场价格的时间周期拐点。斐波那契时间序列在股…...

计算机的错误计算(一百四十)

摘要 探讨 MATLAB 中函数 的计算精度。 从计算机的错误计算(一百三十九)知,对于对数运算,当真数在 1 附近时,计算机的输出会出现较大误差。为此,IEEE 754-2019 中专门定义有函数 其目的就是当自变量在 …...

JavaEE初阶---网络原理(四)--IP协议/DNS协议

文章目录 1.初识网络层(了解即可)2.地址管理2.1动态分配2.2网络地址转换2.3IP-v6最终解 3.网段划分4.以太网协议--数据链路层5.DNS应用层协议 1.初识网络层(了解即可) 网络层做的事情就是下面的两个: 1)地…...

LeetCode20:有效的括号

原题地址:. - 力扣(LeetCode) 题目描述 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合…...

简单介绍Class文件、Dex文件以及ELF文件

Class文件 Class文件是Java源代码文件经Java编译器编译后得到的Java字节码文件。对比Linux、Windows上的可执行文件而言,Class文件可以看作是Java虚拟机的可执行文件。 Dex文件 Dex文件是Android平台上与传统Class文件对应的Java字节码文件。Dex文件的核心内容与Cl…...

Vivo开奖了,劝退价。。

vivo 也开奖了,不过有小伙伴反馈是个劝退价,甚至不如隔壁的 oppo,要说这两家也是渊源颇深,一家是绿厂,一家是蓝厂,高管也都是早期步步高出来的。 给大家盘一下开奖的信息,方便大家横向做个对比&…...

鸿蒙打包hvigorw clean报错No npmrc file is matched in the current user folder解决

问题 在执行hvigorw clean等命令时,报错如下: Error: The hvigor depends on the npmrc file. No npmrc file is matched in the current user folder. Configure the npmrc file first解决方案 在用户当前目录下新建.npmrc文件,并配置如下…...

无人机救援系统基本组成

无人机救援系统基本组成 1. 源由2. 组成2.1 无人机载具2.1.1 多旋翼2.1.2 垂起固定翼2.1.3 智能避障2.1.4 物资投递 2.2 智能吊舱2.2.1 云台2.2.2 高清摄像2.2.3 红外热成像2.2.4 激光测距2.2.5 目标跟踪 2.3 通讯链路2.3.1 超长距离通信2.3.2 长距离通信2.3.3 中等距离通信 2.…...

git入门教程

git入门教程1:git简介git入门教程2:git发展历史git入门教程3:安装配置git入门教程4:git工作流程git入门教程5:git仓库操作git入门教程6:git基本版本控制git入门教程7:git与远程仓库的交互git入门…...

AMBA:AHB_Slave_Mux的解析与HREADY、HREADYOUT

相关阅读 AMBAhttps://blog.csdn.net/weixin_45791458/category_12800219.html?spm1001.2014.3001.5482 简介 从1999年的AMBA2发布以来,AHB协议中就存在数据选择器,如图1所示的AHB2协议的总线互连。 图1 AHB2的总线互连 这幅图画得比较粗糙&#xff0…...

初始Linux (2) : 权限

1. su [用户名]及权限概念 Linux中有两种用户:普通用户、超级用户 超级用户可以再 linux 系统下做任何事情,不受限制;而普通用户只能做有限的事情。 可以使用指令:su -快速进入root账户,但需要输入相关密码。 超级用…...

在Mac下安装时间序列软件Hector

1.软件介绍 Hector 是一款开源软件,专用于 GNSS 时间序列数据的处理与分析,广泛应用于地球科学研究。它帮助研究人员从 GNSS 数据中提取长期趋势、周期性成分,并建模噪声特性,用于地壳形变、地震影响和气候变化等方面的研究。Hec…...

JVM1.8内存模型

一、内存模型概览 本文介绍的是JDK1.8的内存模型。1.8同1.7相比,最大的差别就是元空间取代了永久代。元空间的本质和永久代类似,都是堆JVM规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元空间并不存在虚拟机中,而是…...

windows C#-类型系统(上)

C# 是一种强类型语言。 每个变量和常量都有一个类型,每个求值的表达式也是如此。 每个方法声明都为每个输入参数和返回值指定名称、类型和种类(值、引用或输出)。 .NET 类库定义了内置数值类型和表示各种构造的复杂类型。 其中包括文件系统、网络连接、对象的集合和…...

【酷狗音乐】逆向登录参数分析

mid、uuid参数 从cookie里面取值kg_mid,没有就生成 dfid也是从cookie里面取的kg_dfid 清空cookie dfid "-"也是可以的 md5加密了一个随机uuid import uuid import hashlibuuid1 str(uuid.uuid4())def md5_encrypt(text):return hashlib.md5(text.enco…...

Jenkins面试整理-Jenkins Pipeline 是什么?

Jenkins Pipeline 是一种将 Jenkins 中的持续集成和持续交付(CI/CD)流程定义为代码的方式。Pipeline 提供了一种灵活、可维护的方式,通过脚本来描述构建、测试、部署等流程。Jenkins Pipeline 使用 Groovy 作为脚本语言,并可以通过 Jenkinsfile 来定义和管理流水线。 Jenki…...

RHCE第三次实验

要求 (1)学生信息网站只有song和tian两人可以访问,其他用户不能访问。 ​ (2)访问缴费网站实现数据加密基于https访问。 架设一台NFS服务器,并按照以下要求配置 1、开放/nfs/shared目录,供所…...

基于LORA的一主多从监测系统_4G模块上巴法云

临时添加一个更新,更换云平台为巴法云,事情的起因是因为阿里云这个老六,早上睡了一觉起来发短信告诉我云平台给我停了,得交钱,好嘛,不过也没办法现在这基本都收费,当然还有onenet可以用&#xf…...

pip使用

pip全称pip install package,是python第三方包sitepackage管理的工具,安装,卸载第三方包。安装python时可以选择安装pip,或自己安装pip 查看pip是否安装:pip --version 安装pip :pip python -m pip install --upgrade…...

Django ORM详解:外键使用(外键逻辑关联)与查询优化

Django数据库迁移 # 创建迁移 python manage.py makemigrations your_app_name # 应用迁移 python manage.py migrate # 查看迁移状态 python manage.py showmigrations # 回滚迁移 python manage.py migrate your_app_name 0001 # 修改表后,删除迁移记录和表删除迁移记录后重…...