《Keras3 深度学习初探:开启Keras3 深度学习之旅》

《Keras3 深度学习初探:开启Keras3 深度学习之旅》

  • 一、Keras3 初印象
  • 二、安装与配置
    • (一)安装 Keras3
    • (二)配置环境
  • 三、模型构建基础
    • (一)序列模型与函数式 API
    • (二)模型的创建与编译
  • 四、模型训练与验证
    • (一)训练过程的控制与监控
    • (二)验证集的使用与评估指标
  • 五、深入 Keras3 功能
    • (一)线性回归模型构建
    • (二)神经网络模型构建
    • (三)数据预处理
  • 六、分布式训练与高级 API 特性
    • (一)Keras3 分布式训练 API
    • (二)函数式 API 的高级特性
  • 七、总结与展望
    • (一)Keras3 的优势总结
    • (二)Keras3 的应用场景总结
    • (三)未来发展潜力展望

一、Keras3 初印象

Keras3 作为深度学习框架,展现出了诸多令人瞩目的特点。首先,易于使用是其突出优势之一。对于初学者而言,它提供了简洁明了的 API,使得构建深度学习模型变得直观易懂。无需深入了解底层复杂的数学和算法,就能够快速上手搭建模型,极大地降低了深度学习的入门门槛。
模块化设计也是 Keras3 的重要特色。每个模块都可以看作是独立的流程或组件,用户可以根据具体需求灵活地组合这些模块,以解决各种深度学习问题。这种模块化的设计不仅提高了代码的可读性和可维护性,还为开发者提供了极大的灵活性和扩展性。
高度可扩展性是 Keras3 的又一亮点。它支持多种后端,包括 TensorFlow、JAX 和 PyTorch。这意味着开发者可以根据项目需求和自身偏好选择最合适的后端,充分利用不同后端的优势。同时,Keras3 还允许用户创建在任何框架中都能以相同方式工作的组件,进一步增强了其可扩展性。例如,通过访问跨所有后端运行的 keras.ops 命名空间,用户可以使用相同的代码实现自定义层、损失、指标和优化器等,在不同的框架中产生完全相同的数值结果。
总之,Keras3 以其易于使用、模块化和高度可扩展性等特点,为深度学习开发者提供了强大而灵活的工具。无论是新手还是经验丰富的专家,都能在 Keras3 中找到适合自己的开发方式,实现创新和突破。

二、安装与配置

(一)安装 Keras3

Anaconda 是一个非常方便的工具,可以帮助我们轻松地安装 Keras3 和 TensorFlow。以下是安装步骤:
首先,确保已经安装了 Anaconda。如果没有安装,可以从 Anaconda 官网下载并按照提示进行安装。
打开 Anaconda Prompt,创建一个新的虚拟环境。例如,可以使用以下命令创建一个名为keras_env的虚拟环境,并且指定 Python 版本为 3.7:

   conda create -n keras_env python=3.7激活虚拟环境:conda activate keras_env安装 TensorFlow。在虚拟环境中,可以使用以下命令安装 TensorFlow:pip install tensorflow安装 Keras。在安装完 TensorFlow 后,可以使用以下命令安装 Keras:pip install keras确认安装成功。打开 Python 交互式环境,输入以下命令:import tensorflowimport keras

如果没有出现错误信息,则说明安装成功。

(二)配置环境

创建深度学习项目虚拟环境的步骤如下:
安装 Anaconda,如上文所述。
打开 Anaconda Prompt,使用conda create命令创建一个新的虚拟环境,并指定 Python 版本和所需的包。例如,可以创建一个名为dl_env的虚拟环境,指定 Python 版本为 3.8,并安装 numpy 和 matplotlib:

   conda create -n dl_env python=3.8 numpy matplotlib激活虚拟环境:conda activate dl_env

根据项目需求安装其他必要的包。例如,如果项目需要使用 TensorFlow 和 Keras,可以使用pip install命令进行安装。
配置环境变量。在某些情况下,可能需要将虚拟环境的路径添加到系统环境变量中,以便在命令行中方便地访问虚拟环境。
定期更新虚拟环境中的包,以确保使用的是最新版本的软件。可以使用conda update和pip install --upgrade命令进行更新。
通过以上步骤,可以创建一个稳定的深度学习开发环境,确保项目的顺利进行。

三、模型构建基础

(一)序列模型与函数式 API

序列模型适用于简单的、线性的堆叠层结构,每个层只需要被添加一次,并且它的输入形状在添加到模型时就已经确定。例如,以下是一个使用序列模型构建简单全连接网络的示例:

from keras.models import Sequential
from keras.layers import Denseseq_model = Sequential()
seq_model.add(Dense(64, activation='relu', input_shape=(100,)))
seq_model.add(Dense(10, activation='softmax'))

而函数式 API 则提供了更大的灵活性,允许创建任意的复杂模型,如具有多个输入和输出的模型,或者具有共享层的模型等。在函数式 API 中,每一层都需要被调用,并返回一个新的 tensor,即输入 tensor 经过层变换后的输出 tensor。例如:

from keras.layers import Input, Dense
from keras.models import Modelinputs = Input(shape=(100,))
x = Dense(64, activation='relu')(inputs)
predictions = Dense(10, activation='softmax')(x)model = Model(inputs=inputs, outputs=predictions)

序列模型在快速构建简单模型时非常方便,但对于复杂的模型结构,函数式 API 更具优势。例如,当需要处理具有层次结构的数据或需要共享层的场景时,函数式 API 能够更好地满足需求。

(二)模型的创建与编译

在 Keras 中,创建模型之后,需要对其进行编译以设定训练参数。编译步骤包括损失函数(loss)、优化器(optimizer)和评估标准(metrics)。
损失函数的选择:
对于多分类问题,通常可以选择 categorical_crossentropy。例如,在构建图像识别模型时,当有多个类别需要预测时,这个损失函数非常适用。
对于二分类问题,可以使用 binary_crossentropy。比如在判断图片中是否有特定物体的任务中,这个损失函数能有效地衡量模型的性能。
对于回归问题,可以考虑 mean_squared_error 或 mean_absolute_error 等损失函数。例如在预测房价的任务中,这些损失函数可以衡量预测值与真实值之间的差异。
优化器的选择:
SGD(随机梯度下降)是一种基本的优化算法,通过迭代更新模型参数来最小化损失函数。可以设置学习率、动量等参数。例如,keras.optimizers.SGD(lr=0.01, momentum=0.9)。
Adam 是一种结合了 RMSprop 和 Momentum 的优化算法,具有较好的性能和稳定性。如 keras.optimizers.Adam()。
还有 RMSprop、Adagrad 等优化器可供选择,不同的优化器适用于不同的问题和数据集。
评估标准的确定:
对于分类问题,通常可以将准确率(accuracy)作为评估标准。此外,还可以根据具体需求选择精确率、召回率等指标。对于回归问题,可以使用均方误差(MSE)、平均绝对误差(MAE)等作为评估标准。
在编译模型时还需要确定其他参数,例如:
loss:根据问题的不同,选择合适的损失函数,如 mean_squared_error、binary_crossentropy 等。
optimizer:可以是字符串标识符如 ‘rmsprop’、‘adagrad’ 等,或者是 keras.optimizers 模块中的优化器类。
metrics:评估模型性能的指标,如准确率、精确率、召回率等。

四、模型训练与验证

(一)训练过程的控制与监控

在 Keras 中,回调函数是在调用 fit 时传入模型的一个对象,它在训练过程中的不同时间点都会被模型调用。回调函数可以访问关于模型状态和性能的所有可用数据,还可以采取行动,如中断训练、保存模型、加载一组不同的权重或者改变模型的状态。
EarlyStopping:如果监控的目标指标在设定的轮数内不再改善,可以使用 EarlyStopping 回调函数来中断训练。例如,这个回调函数可以在刚开始过拟合的时候就中断训练,从而避免用更少的轮次重新训练模型。这个回调函数常与 ModelCheckpoint 结合使用,后者可以在训练过程中持续不断地保存模型(可以选择只保存目前的最佳模型,即一轮结束后具有最佳性能的模型)。

   from keras.callbacks import EarlyStopping, ModelCheckpointcallbacks_list = [EarlyStopping(monitor='acc', patience=1),ModelCheckpoint(filepath='my_model.h5', monitor='val_loss', save_best_only=True)]model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['acc'])model.fit(x, y, epochs=10, batch_size=32, callbacks=callbacks_list, validation_data=(x_val, y_val))

ReduceLROnPlateau:如果验证损失不再改善,可以使用 ReduceLROnPlateau 回调函数来降低学习率。在训练过程中如果出现了损失平台(loss plateau),那么增大或减小学习率都是跳出局部最小值的有效策略。

   from keras.callbacks import ReduceLROnPlateaucallbacks_list = [ReduceLROnPlateau(monitor='val_loss', factor=0.1, patience=10)]model.fit(x, y, epochs=10, batch_size=32, callbacks=callbacks_list, validation_data=(x_val, y_val))

自定义回调函数:读者可以自行编写自己的回调函数,如若项目中需要采取特定行动,实现方式是创建 keras.callbacks.Callback 类的子类。

(二)验证集的使用与评估指标

验证集在模型训练中扮演着重要角色。它用于防止过拟合,在每次 epoch 结束后计算模型在验证集上的性能,如损失和准确率等指标。模型不会利用验证集来训练,即网络的权重不会用验证集的数据训练。
常见的评估指标包括准确率(accuracy)、精确率(precision)、召回率(recall)、F1 分数等。对于分类问题,通常可以将准确率作为主要的评估指标。此外,根据具体问题的需求,还可以选择精确率和召回率等指标。对于回归问题,可以使用均方误差(MSE)、平均绝对误差(MAE)等作为评估标准。
验证集的选取可以从训练集中划分一部分数据出来,例如设置 validation_split 参数为 0.2,则训练集的最后 20% 数据将作为验证集。也可以手动将数据集进行切分,然后在 keras 的 model.fit() 的时候通过 validation_data 参数指定前面切分出来的验证集。
在训练模型时,可以通过观察模型在验证集上的性能来调整超参数,如学习率、批次大小、网络结构等。例如,如果模型在验证集上的准确率不再提高,可以考虑降低学习率或者增加正则化项。同时,使用验证集可以通过 EarlyStopping 机制来提前终止训练,防止过拟合。

五、深入 Keras3 功能

(一)线性回归模型构建

准备数据集:对于线性回归问题,我们可以使用一个简单的数据集来进行演示。例如,我们可以生成一组包含两个特征和一个输出的数据集,其中输出与两个特征之间存在线性关系。以下是使用 Python 的numpy库生成数据集的示例代码:

import numpy as np
from sklearn.model_selection import train_test_split# 生成数据集
X = np.random.rand(100, 2)
y = 2 * X[:, 0] + 3 * X[:, 1] + np.random.randn(100)# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)定义和训练模型:接下来,我们使用 Keras 构建一个简单的线性回归模型。首先,导入必要的库并初始化模型:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense# 初始化模型
model = Sequential()
model.add(Dense(1, input_dim=2))#然后,编译模型,选择合适的优化器和损失函数:
model.compile(optimizer='adam', loss='mean_squared_error')#最后,训练模型:
model.fit(X_train, y_train, epochs=50, batch_size=10, verbose=0)#评估模型:我们可以使用测试集来评估模型的性能。计算预测值与真实值之间的均方误差(MSE):
predictions = model.predict(X_test)
mse = np.mean((y_test - predictions)**2)
print("Mean Squared Error:", mse)

(二)神经网络模型构建

构建简单神经网络模型:我们将构建一个简单的神经网络模型,包含一个隐藏层和一个输出层。以分类问题为例,导入必要的库并初始化模型:

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout# 初始化模型
model = Sequential()
model.add(Dense(16, activation='relu', input_dim=10))
model.add(Dropout(0.2))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))#超参数调整与优化:超参数调整是优化模型性能的关键步骤。我们可以尝试不同的超参数组合,如学习率、批次大小、隐藏层神经元数量等。例如,调整学习率:
from tensorflow.keras.optimizers import Adamoptimizer = Adam(learning_rate=0.001)
model.compile(optimizer=optimizer, loss='binary_crossentropy', metrics=['accuracy'])#或者调整批次大小:
batch_size = 32
model.fit(X_train, y_train, epochs=50, batch_size=batch_size, verbose=0)

通过不断尝试不同的超参数组合,我们可以找到最适合特定问题的模型配置。

(三)数据预处理

重要性阐述:在深度学习中,数据预处理是至关重要的一步。它可以提高模型的性能和泛化能力,减少过拟合的风险。数据预处理包括数据清洗、标准化、归一化等步骤。例如,在图像分类任务中,对图像进行归一化可以使不同图像的像素值范围相同,从而提高模型的训练效率和准确性。
标准化和归一化方法:
标准化:标准化是将数据转换为均值为 0,标准差为 1 的分布。这可以通过减去均值并除以标准差来实现。例如,使用sklearn库的StandardScaler类进行标准化:

from sklearn.preprocessing import StandardScalerscaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

归一化:归一化是将数据转换为特定范围内的值,通常是 [0, 1]。这可以通过将数据减去最小值并除以最大值与最小值之差来实现。例如,使用sklearn库的MinMaxScaler类进行归一化:

from sklearn.preprocessing import MinMaxScalerscaler = MinMaxScaler()
X_train_normalized = scaler.fit_transform(X_train)
X_test_normalized = scaler.transform(X_test)

高效加载和处理数据集:在 Keras 中,可以使用tf.data.Dataset来高效地加载和处理数据集。例如,加载图像数据集并进行批处理:

import tensorflow as tf# 假设 image_paths 和 labels 分别是图像路径列表和对应的标签列表
dataset = tf.data.Dataset.from_tensor_slices((image_paths, labels))
dataset = dataset.map(lambda x, y: (tf.io.read_file(x), y))
dataset = dataset.map(lambda image, label: (tf.image.decode_jpeg(image, channels=3), label))
dataset = dataset.batch(32)

通过上述方法,可以高效地加载和处理数据集,提高模型的训练效率。

六、分布式训练与高级 API 特性

(一)Keras3 分布式训练 API

Keras3 的分布式训练 API 为深度学习开发者提供了强大的工具,以加速模型的训练过程并处理大规模数据集和复杂模型。
工作机制:
DeviceMesh 和 TensorLayout:在 Keras 分布式 API 中,keras.distribution.DeviceMesh类代表一个为分布式计算配置的计算设备集群。它将物理设备映射到一个逻辑网格结构,类似于 JAX 的jax.sharding.Mesh和 TensorFlow 的tf.dtensor.Mesh。TensorLayout类则指定了张量如何在DeviceMesh上进行分布,详细说明了张量在对应于DeviceMesh中轴名称的指定轴上的分片。例如,假设有 8 个本地 GPU,可以定义一个 2x4 的设备网格,如下所示:

   devices = jax.devices("gpu")mesh = keras.distribution.DeviceMesh(shape=(2, 4), axis_names=["data", "model"], devices=devices)

分发与抽象类:Distribution类是一个基础抽象类,旨在开发自定义分发策略。它封装了在设备网格上分发模型的变量、输入数据和中间计算所需的核心逻辑。作为最终用户,通常与其子类如DataParallel或ModelParallel进行交互。
DataParallel 的应用:
DataParallel 类是为分布式训练中的数据并行策略设计的,其中模型权重在DeviceMesh中的所有设备上被复制,每个设备处理输入数据的一部分。例如:

# Create a MirroredStrategy to enable Data Parallelism
strategy = tf.distribute.MirroredStrategy()
# Create and compile the model within the strategy scope
with strategy.scope():distributed_model = create_model()distributed_model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
# Generate some dummy data for demonstration
x_train = np.random.random((1000, 784))
y_train = np.random.randint(10, size=(1000,))
# Train the model with distributed data
distributed_model.fit(x_train, y_train, epochs=10, batch_size=64)

ModelParallel 的应用:
当模型权重过大而无法适应单个加速器时,ModelParallel将非常有用。这种设置允许程序员将模型权重或激活张量分散到DeviceMesh上的所有设备上,并为大型模型启用水平扩展。引入了LayoutMap,它是一个类似于字典的对象,将字符串映射到TensorLayout实例,允许程序员从全局角度为任何权重和中间张量指定TensorLayout。

(二)函数式 API 的高级特性

函数式 API 在 Keras3 中具有强大的高级特性,为构建复杂的深度学习模型提供了极大的灵活性。
多输入多输出模型:
函数式 API 提供了创建具有任意数量输入和输出的模型的能力。这在处理具有多模态输入的任务时非常有用。例如,假设有一个深度学习模型,试图利用用户提供的元数据、文本描述和商品照片来预测二手衣服的市场价格。可以分别为不同的输入创建独立的层,然后将它们合并起来,最后连接到输出层。

input_metadata = Input(shape=(num_metadata_features,))
input_text = Input(shape=(max_text_length,))
input_image = Input(shape=(image_shape,))
# Process each input separately
metadata_layer = Dense(64, activation='relu')(input_metadata)
text_layer = LSTM(64)(input_text)
image_layer = Conv2D(64, activation='relu')(input_image)
# Merge the processed inputs
merged_layer = concatenate([metadata_layer, text_layer, image_layer])
output_price = Dense(1)(merged_layer)
model = Model(inputs=[input_metadata, input_text, input_image], outputs=output_price)

共享层:
可以在模型的不同部分使用同一个层的实例,减少模型的参数数量并提高模型的效率。例如,在判断两个句子的相似度任务中,可以使用一个共享的 LSTM 层处理两个句子的输入,如下所示:

lstm = layers.LSTM(32)
left_input = Input(shape=(None, 128))
left_output = lstm(left_input)
right_input = Input(shape=(None, 128))
right_output = lstm(right_input)
merged = layers.concatenate([left_output, right_output], axis=-1)
prediction = layers.Dense(1, activation='sigmoid')(merged)
model = Model([left_input, right_input], prediction)

模型嵌套:
允许将一个模型作为另一个模型的一部分,实现更加复杂的模型结构。例如,可以构建一个预训练的图像分类模型,然后将其作为一个子模型嵌入到一个更大的模型中,用于处理更复杂的任务。

# Create a pre-trained image classification model
image_input = Input(shape=(image_shape,))
base_model = Sequential([Conv2D(64, activation='relu', input_shape=(image_shape,)),MaxPooling2D(),Flatten(),Dense(10, activation='softmax')
])
image_output = base_model(image_input)
# Create a larger model that embeds the pre-trained model
other_input = Input(shape=(other_features_shape,))
merged = concatenate([image_output, other_input])
final_output = Dense(1)(merged)
nested_model = Model(inputs=[image_input, other_input], outputs=final_output)

七、总结与展望

(一)Keras3 的优势总结

易用性:Keras3 提供了简洁明了的 API,使得无论是深度学习的新手还是经验丰富的专家都能快速上手构建模型。其模块化设计和高度可扩展性进一步增强了代码的可读性和可维护性。
多后端支持:支持 TensorFlow、JAX 和 PyTorch 等多种后端,开发者可以根据项目需求和自身偏好选择最合适的后端,充分利用不同后端的优势。
丰富的功能:提供了全面的 Keras API,包括多种层、指标、损失函数、优化器和回调等。同时,还支持多种高级特性,如多输入多输出模型、共享层和模型嵌套等。
强大的社区支持:拥有庞大的开发者社区,不断更新完善文档,提供丰富的教程和示例,以及及时的问题解答。

(二)Keras3 的应用场景总结

计算机视觉:利用预训练模型进行图像分类、对象检测或图像生成。例如,使用 ResNet 或 VGG 等预训练模型可以快速构建图像分类系统。
自然语言处理:构建复杂的 LSTM、GRU 或 Transformer 模型,用于文本分类、情感分析和机器翻译。通过 Keras3 的函数式 API,可以轻松构建多输入多输出的自然语言处理模型。
强化学习:结合 Keras 与其他 RL 库,构建和训练高效的游戏 AI 或机器人控制系统。Keras3 的灵活性使得它可以与各种强化学习算法相结合。
数据科学竞赛:快速搭建原型,验证并优化模型,提高在各类数据分析竞赛中的竞争力。Keras3 的高效性和易用性使得开发者能够在短时间内构建出强大的模型。

(三)未来发展潜力展望

性能优化:随着硬件技术的不断发展,Keras3 将继续优化其性能,以更好地利用 GPU、TPU 等高性能计算设备。例如,通过进一步优化分布式训练 API,提高大规模模型的训练速度。
多模态融合:在未来,深度学习将越来越多地涉及多模态数据的处理,如文本、图像、音频等。Keras3 可以进一步加强对多模态数据的支持,提供更强大的多模态融合模型构建能力。
自动化机器学习:随着自动化机器学习技术的发展,Keras3 有望提供更多的自动化工具,帮助开发者更快速地找到最佳的模型架构和超参数组合。例如,通过自动搜索算法和强化学习技术,实现模型的自动优化。
跨框架兼容性的进一步提升:虽然 Keras3 已经实现了对多种后端的支持,但在未来,跨框架兼容性还有望进一步提升。这将使得开发者能够更加轻松地在不同的深度学习框架之间切换,充分利用各个框架的优势。
应用领域的拓展:随着深度学习技术的不断发展,Keras3 将在更多的领域得到应用,如医疗、金融、交通等。例如,在医疗领域,可以利用 Keras3 构建疾病诊断模型;在金融领域,可以构建风险评估模型等。
总之,Keras3 作为一个强大的深度学习框架,具有巨大的发展潜力。在未来,它将继续为深度学习开发者提供强大的工具,推动深度学习技术的不断发展和应用。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

「iOS」——知乎日报一二周总结

知乎日报仿写 前言效果Manager封装网络请求线程冲突问题下拉刷新添加网络请求的图片通过时间戳和日期格式化获取时间 总结 前言 前两周内容的仿写,主要完成了首页的仿写,进度稍慢。 效果 Manager封装网络请求 知乎日报的仿写需要频繁的申请网络请求&am…

用流量策略做多出口实验

一、拓扑: 二、配置过程: 1、配置 IP 地址,配置动态路由协议 OSPF 2、AR2 上,配置高级 ACL,允许 ospf 流量、1 到 6、2 到 8、deny 所有 3、写流分类,抓取流量特征 4、写流行为,配置流量动作 5、…

跨境云专线:构建高速、安全的全球业务网络

在企业出海加速的背景下,越来越多的企业需要在全球范围内部署业务,特别是在多个国家和地区之间进行数据传输。然而,跨境网络连接常常面临带宽不足、延迟高、数据安全性差等问题,这给企业的业务运营带来了巨大挑战。为了解决这些问…

leetcode动态规划(二十四)-最长递增子序列

题目 300.最长递增子序列 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7…

C++ 内存管理

new与delete 在C语言中&#xff0c;我们已经了解了三个动态内存管理的函数——malloc,calloc以及realloc,通过动态内存开辟&#xff0c;申请和释放空间更加的灵活 int main() {int* arr (int*)malloc(sizeof(int) * 10);for (int i 0; i < 10; i) {arr[i] i;print…

2. JVM的架构模型和生命周期

一、前言 Java 编译器输入的指令流是一种基于栈的指令集架构&#xff0c;还有另一种指令集架构是基于寄存器的指令集架构。 二、两种架构之前的区别 基于栈的架构特点&#xff1a; 设计和实现更简单&#xff0c;适用于资源受限的系统&#xff1b;避开了寄存器的分配难题&am…

Flutter3.22.2中SliverAppBar设置背景色滑动显示颜色错误

在使用Flutter项目开发中&#xff0c;可能会有页面需要滑动收起标题栏的效果&#xff0c;一般都会使用SliverAppBar来实现&#xff0c;当项目的Flutter的SDK版本升级到3.4后&#xff0c;发现使用了SliverAppBar的页面&#xff0c;在滑动过程中&#xff0c;标题栏和状态栏的颜色…

vim 编辑器

1. 学习 vim 的目的 在工作中&#xff0c;要对 服务器 上的文件进行 简单 的修改&#xff0c;可以使用 ssh 远程登录到服务器上&#xff0c;并且使用 vim 进行快速的编辑即可常见需要修改的文件包括&#xff1a;源程序配置文件&#xff0c;例如 ssh 的配置文件 ~/.ssh/config …

瑞派宠物医院轮值总裁胡文强受邀出席第三届宠物产业大会

中国宠物产业蓬勃发展&#xff0c;成为推动国民经济持续增长的重要力量&#xff0c;宠物市场规模持续扩大。为进一步推动宠物产业的创新驱动&#xff0c;加强产业上下游深度交流和协同发展&#xff0c;中国畜牧业协会宠物产业分会于2024年10月15-17日在浙江杭州召开第三届宠物产…

Linux云计算 |【第五阶段】CLOUD-DAY7

主要内容&#xff1a; 在kubernetes平台上理解掌握各种控制器的用法&#xff1a;掌握kubectl管理命令、掌握POD原理、掌握集群调度的规则、熟悉控制器资源文件&#xff1b; 一、kubectl 常用命令 Kubectl是用于控制Kubernetes集群的命令行工具&#xff1b; - 格式&#xff1…

[java][框架]springMVC(1/2)

目标 知道SpringMVC的优点编写SpringMVC入门案例使用PostMan发送请求掌握普通类型参数传递掌握POJO类型参数传递掌握json数据参数传递掌握响应json数据掌握rest风格快速开发 一、SpringMVC简介 1 SpringMVC概述 问题导入 SpringMVC框架有什么优点&#xff1f; 1.1 Spring…

dns主从服务器的配置

主从dns服务器上都要&#xff1a; 关闭防火墙&#xff1a; [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 挂载和下载bind [rootlocalhost ~]# mount /dev/sr0 /mnt [rootlocalhost ~]# dnf install bind -y 主服务器配置&#xff1a; [rootlo…

【大咖云集,院士出席 | ACM独立出版】第四届大数据、人工智能与风险管理国际学术会议 (ICBAR 2024,11月15-17日)--冬季主会场

第四届大数据、人工智能与风险管理国际学术会议 (ICBAR 2024)--冬季主会场 2024 4th International Conference on Big Data, Artificial Intelligence and Risk Management 官方信息 会议官网&#xff1a;www.icbar.net 2024 4th International Conference on Big Data, Art…

linphone sdk sip音视频通话高级教程

本文主要基于c接口讲解linphone结合freeswitch在多平台的运用。大纲如下 linphone sdk下载地址sdk导入本文基于console程序演示,qt工程也行简单的音频呼叫,sip服务器使用freeswitch音频设置(设备、增益、铃声、回声消除、编码等)视频呼叫 默认有vp8 这里导入下h264视频设置(…

【Jenkins】 上传docker包并推送到远程仓库

文章目录 1. 前置工作安装和配置Jenkins设置Docker环境 2. 相关配置流程创建项目配置参数 1. 前置工作 安装和配置Jenkins 在开始使用Jenkins之前&#xff0c;需要确保已经安装和配置了Jenkins服务器。您可以按照以下步骤进行安装和配置&#xff1a; 下载Jenkins并安装&…

OBOO鸥柏丨传媒广告行业的创新应用解决数字技术短板

在新媒体文化传媒广告行业&#xff0c;如何吸引受众的注意力并有效传达信息一直是行业技术型数字化媒体转型关注的重点。OBOO鸥柏立式广告机作为这一领域的创新显示产品新技术&#xff0c;搭载VS6.0/满天星(MTSTAR)信息发布系统网络云平台技术科技&#xff0c;以其独特的技术优…

windows家庭版安装docker环境步骤-家庭版

1.家庭版没有虚拟化设置&#xff0c;下面代码保存到bat后缀文件&#xff0c;然后管理员权限执行 pushd "%~dp0" dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt for /f %%i in (findstr /i . hyper-v.txt 2^>nul) do dism /online /nore…

SQL Server身份验证模式

SQL Server是一个广泛使用的关系数据库管理系统&#xff0c;通常使用两种身份验证模式&#xff1a;Windows身份验证和SQL Server身份验证。理解这些身份验证方式的概念与更改方式的操作&#xff0c;对于数据库管理员和开发者至关重要。本文将详细介绍身份验证方式的概念以及如何…

蓝桥杯-网络安全比赛题目-遗漏的压缩包

小蓝同学给你发来了他自己开发的网站链接&#xff0c; 他说他故意留下了一个压缩包文件&#xff0c;里面有网站的源代码&#xff0c; 他想考验一下你的网络安全技能。 &#xff08;点击“下发赛题”后&#xff0c;你将得到一个http链接。如果该链接自动跳转到https&#xff0c;…

【Git】Liunx环境下Git的使用:“克隆,提交,推送“

目录 一、常用参数 二、我们为什么要使用Git&#xff1f; 三、创建远程仓库 第一步&#xff1a;创建对应代码托管平台账号。 第二步&#xff1a;在托管平台创建仓库 第三步&#xff1a;完善仓库内容&#xff08;选择性使用&#xff09; 开源和私有 四、克隆远程仓库到本…