Python图注意力神经网络GAT与蛋白质相互作用数据模型构建、可视化及熵直方图分析...

news2024/12/20 12:06:14

全文链接:https://tecdat.cn/?p=38617

 本文聚焦于图注意力网络GAT在蛋白质 - 蛋白质相互作用数据集中的应用。首先介绍了研究背景与目的,阐述了相关概念如归纳设置与转导设置的差异。接着详细描述了数据加载与可视化的过程,包括代码实现与分析,如数据集的读取、处理以及图数据加载器的构建等。通过对数据形状和类型的分析,深入理解数据特性。最后强调了在项目开发过程中测试代码以及可视化的重要性,为 GAT 在 数据集上的进一步研究与应用奠定基础点击文末“阅读原文”获取完整代码数据)。

一、引言

本研究围绕图注意力网络(GAT)展开,重点探讨其在蛋白质相互作用数据集中的应用。GAT 作为一种强大的图神经网络模型,在处理具有复杂结构的数据时展现出独特的优势。本文本旨在解释如何在归纳设置下使用 GAT,并以 数据集为例进行深入研究。通过对 蛋白质 数据集的分析与处理,期望能够为生物信息学等领域的研究提供有力的技术支持与理论依据。

二、相关概念

(一)归纳设置与转导设置

在图神经网络中,归纳设置和转导设置是两种不同的数据处理方式。转导设置通常针对单个图,例如 Cora 数据集,将图中的一些节点(而非图本身)划分为训练、验证和测试集。在训练过程中,仅使用训练节点的标签信息,但在正向传播时,由于空间 GNN 的工作原理,会聚合邻居节点的特征向量,其中部分邻居节点可能属于验证集甚至测试集。这里主要利用了邻居节点的结构信息和特征,而非其标签信息。

而归纳设置则更类似于计算机视觉或自然语言处理中的常见方式。在这种设置下,拥有一组训练图、一组独立的验证图和一组独立的测试图。这种设置使得模型能够在不同的图数据上进行训练和评估,具有更强的泛化能力。

三、数据加载与可视化

(一)数据加载

在数据加载部分,首先定义了一些必要的函数和类。例如,json_read 函数用于读取 JSON 格式的数据:

def json_read(path):
 with open(path, 'r') as file:
 data = json.load(file)
 return data

该函数接受一个文件路径作为参数,打开文件并读取其中的 JSON 数据,最后返回读取的数据。
load_graph_data 函数则用于加载 蛋白质 数据集的图数据:

if dataset_name == DatasetType.蛋白质.name.lower(): # 蛋白质 - 蛋白质相互作用数据集
 # 若 蛋白质 数据路径不存在,则首次使用时下载
 if not os.path.exists(蛋白质_PATH): 
os.makedirs(蛋白质_PATH)
 # 步骤 1:下载 蛋白质.zip(包含 蛋白质 数据集)
 zip\\\\\\_tmp\\\\\\_path = os.path.join(蛋白质_PATH, '蛋白质.zip')
 download\\\\\\_url\\\\\\_to\\\\\\_file(蛋白质\\\\\\_URL, zip\\\\\\_tmp\\\\\\_path)
 # 步骤 2:解压
 with zipfile.ZipFile(zip\\\\\\_tmp\\\\\\_path) as zf:
 zf.extractall(path=蛋白质_PATH)
 print(f'解压至: {蛋白质_PATH} 完成。')
 # 步骤 3:删除临时资源文件

该函数根据配置信息加载 蛋白质 数据集,包括下载数据(若不存在)、读取节点特征、标签和图拓扑结构等,并将数据整理为适合训练的格式,最后返回相应的数据加载器。

GraphD 类用于从分割中获取单个图数据:

class GraphDt(Dataset):
 def \\\_\\\\\\_init\\\\\\_\\\_(self, node\\\\\\_features\\\\\\_list, node\\\\\\_labels\\\\\\_list, edge\\\\\\_index\\\\\\_list):
 self.node\\\\\\_features\\\\\\_list = node\\\\\\_features\\\\\\_list
 self.node\\\\\\_labels\\\\\\_list = node\\\\\\_labels\\\\\\_list
 self.edge\\\\\\_index\\\\\\_list = edge\\\\\\_index\\\\\\_list
 # 需定义 len 和 getitem 函数以便 DataLoader 正常工作
 def \\\_\\\\\\_len\\\\\\_\\\_(self):
 return len(self.edge\\\\\\_index\\\\\\_list)

(二)数据可视化

为了可视化数据:

if should_visualize:
 plot\\\\\\_in\\\\\\_out\\\\\\_degree\\\\\\_distributions(edge\\\\\\_index.numpy(), graph.number\\\\\\_of\\\\\\_nodes(), dataset\\\\\\_name)
 visualize\\\\\\_graph(edge\\\\\\_index.numpy(), node\\\\\\_labels\\\\\\[mask\\\\\\], dataset\\\\\\_name)

四、数据形状与类型分析

通过加载数据并获取一批训练数据,对数据的形状和类型进行了分析。以特定的 蛋白质 训练图(批次大小为 1)为例,其具有 3021 个节点,每个节点有 50 个特征,这与 蛋白质 数据集的特性相关,每个节点的特征是多种基因集信息的组合。蛋白质 数据集共有 121 个类别,且每个节点可以关联多个类别,属于多标签分类数据集。该图包含 94359 条边(包括自环),与 Cora 数据集的 13k 条边相比数量较多。此外,边索引的数据类型为 int64,这是由于 PyTorch 中 index_select 函数的要求,而节点标签可以使用 float32 类型,因为 nn.BCEWithLogitsLoss 不需要 long/int64 类型,这样可以节省内存。

基于蛋白质相互作用网络的数据可视化与图注意力网络(GAT)模型研究

接下来聚焦于蛋白质相互作用网络,深入探讨其数据可视化与图注意力网络(GAT)模型的应用。通过详细分析节点度分布、构建并训练 GAT 模型以及对模型进行可视化分析,揭示了 蛋白质 网络的结构特征与 GAT 模型在多标签分类任务中的有效性,为相关领域的研究提供了有价值的参考。

一、引言

在生物信息学领域,蛋白质相互作用网络的研究具有至关重要的意义。理解 蛋白质 网络的结构和特性,有助于深入探究蛋白质的功能以及生物体内的复杂生理过程。本文旨在通过数据可视化和构建图注意力网络(GAT)模型,对 蛋白质 网络进行全面的分析与研究,为相关领域的进一步探索奠定基础。

二、蛋白质 数据可视化

(一)节点度分布可视化

为了初步了解 蛋白质 网络中节点的连接情况,我们首先研究节点的度分布,即节点拥有的输入/输出边的数量,这是衡量图连通性的一个重要指标。

运行以下代码以可视化 蛋白质 的度分布:

num\\\\\\_of\\\\\\_nodes = len(node_labels)
plot\\\\\\_in\\\\\\_out\\\\\\_degree\\\\\\_distributions(edge\\\\\\_index, num\\\\\\_of\\\\\\_nodes, config\\\\\\['dataset\\\\\\_name'\\\\\\])

0838b5b91b1f66bb24bc88d1191045d5.png

(二)蛋白质 图可视化

接下来,我们将可视化 蛋白质 图。以下代码用于构建和绘制 蛋白质 图:

dataset\\\\\\_name = config\\\\\\['dataset\\\\\\_name'\\\\\\]
visualization_tool = GraphVisualizationTool.IGRAPH
# 如果 edge_index 是 torch.Tensor 类型,则将其转换为 numpy 数组
if isinstance(edge_index, torch.Tensor):
 edge\\\\\\_index\\\\\\_np = edge_index.cpu().numpy()
# 如果 node_labels 是 torch.Tensor 类型,则将其转换为 numpy 数组
if isinstance(node_labels, torch.Tensor):

2d65b60fbbc0df3783ba2811e43ac291.png

从可视化结果可以得出以下结论:

  • 由于我们将 蛋白质 视为无向图,因此前两个图相同。

  • 与 Cora 相比,更多的节点具有大量的边,但大多数节点的边数仍然较少。

  • 第三个图以直方图的形式清晰地展示了这一点,大多数节点只有 1 - 20 条边(因此在最左侧有峰值),并且与 Cora 相比,分布更为分散。

需要注意的是,我不得不清除此单元格的原始输出,否则文件会非常大。这里仅展示了一个任意的 蛋白质 训练图示例,结果可能会有所不同(共有 20 个训练图)。


点击标题查阅往期内容

88ff18f44c8caed32dc28b3cabed7c52.jpeg

MATLAB图注意力网络GAT多标签图分类预测可视化

outside_default.png

左右滑动查看更多

outside_default.png

01

da08621c571341407f5f509e6d874ed2.png

02

63322fd71a4728e37b7ce7b7ffded7a1.png

03

0378ae9642ff709d03c62fd2613ac8dd.png

04

0470224cbafd04d73d30e7cfe460d887.png

GAT 模型理解

GAT 模型类定义

首先创建一个高级类,用于构建 GAT 模型。该类主要将各层堆叠到对象中,并将数据(特征、边索引)打包成元组。

class GAT(torch.nn.Module):
 """
 最有趣且最具挑战性的实现是实现 #3。
 Imp1 和 imp2 在细节上有所不同,但基本相同。
 """
 def \\\_\\\\\\_init\\\\\\_\\\_(self, num\\\\\\_of\\\\\\_layers, num\\\\\\_heads\\\\\\_per\\\\\_layer, num\\\\

GAT 层定义

接下来定义 GATLayer 类,该类是 GAT 模型的核心组成部分。

# 源节点在边索引中的维度位置
 src\\\\\\_nodes\\\\\\_dim = 0
 # 目标节点在边索引中的维度位置
 trg\\\\\\_nodes\\\\\\_dim = 1
 # 节点维度(在张量中 "N" 的位置,axis 可能是更熟悉的术语)
 nodes_dim = 0
 # 注意力头维度
 head_dim = 1
 def \\\_\\\\\\_init\\\\\\_\\\_(self, num\\\\\\_in\\\\\\_features, num\\\\\\_out\\\\\\_features, num\\\\\\_of\\\\\\_heads, concat=True, activation=nn.ELU(),
 dropout\\\\\\_prob=0.6, add\\\\\\_skip\\\\\\_connection=True, bias=True, log\\\\\\_attention_weights=False):
 super().\\\_\\\\\\_init\\\\\\_\\\_()
 self.num\\\\\\_of\\\\\\_heads = num\\\\\\_of\\\\\\_heads

训练 GAT 模型(蛋白质 多标签分类)

相关常量定义

首先定义一些训练相关的常量,包括训练阶段枚举、日志记录器、早停相关变量以及模型保存路径等。

from torch.utils.tensorboard import SummaryWriter
# 3 种不同的模型训练/评估阶段,用于 train.py
class LoopPhase(enum.Enum):
 TRAIN = 0,

基于图注意力网络(GAT)的模型训练与可视化分析

接下来我们详细阐述了图注意力网络(GAT)在特定数据集(如 蛋白质)上的训练过程及相关可视化分析。通过定义一系列实用函数来构建训练模型所需的组件,包括数据加载、模型架构定义、训练循环设置等,并对训练得到的模型进行注意力和熵可视化,以深入理解 GAT 模型的学习效果与特性。

一、引言

图注意力网络(GAT)在处理图结构数据方面具有重要意义。在本文中,我们将深入探讨其在 蛋白质 数据集上的应用,涵盖从模型训练到可视化分析的完整流程,旨在揭示 GAT 模型在该数据集上的表现及内在机制。

二、模型训练相关函数定义

(一)获取训练状态函数

import git
import re # 正则表达式模块
def get\\\\\\_training\\\\\\_state(training_config, model):
 training_state = {
 # 获取代码仓库的提交哈希值
 "commit\\\\\\_hash": git.Repo(search\\\\\\_parent_directories=True).head.object.hexsha,

该函数用于收集训练过程中的重要信息,包括代码版本信息(通过提交哈希值体现)、训练数据集名称、训练轮数、测试性能指标以及模型的结构和参数状态等。这些信息对于后续的模型分析、比较和复现具有重要价值。

(二)打印模型元数据函数

def print\\\\\\_model\\\\\\_metadata(training_state):
 # 构建打印头部信息
 header = f'\\\\\n{"*"\\\\\\*5} Model training metadata: {"\\\\\\*"*5}'
 print(header)
 for key, value in training_state.items():
 # 不打印模型参数字典,因为其内容为大量数字
 if key!= 'state_dict': 
print(f'{key}: {value}')
 print(f'{"*" * len(header)}\\\\\n')

此函数用于以清晰的格式打印模型训练的元数据,除了模型参数字典外,将其他关键信息如数据集名称、训练轮数等展示出来,方便用户快速了解模型训练的基本情况。

三、命令行参数解析函数

此函数利用 argparse 模块解析命令行参数,涵盖训练过程中的各种设置,如训练轮数、学习率、是否使用 GPU 等,同时也包括数据集相关和日志记录相关的参数。通过合理设置这些参数,可以灵活地调整模型训练过程,满足不同的实验需求。

四、GAT 模型训练函数

\['force\\\\\_cpu'\\\\\\] else "cpu")
 # 步骤 1:准备数据加载器
 data\\\\\\_loader\\\\\\_train, data\\\\\\_loader\\\\\\_val, data\\\\\\_loader\\\\\\_test = load\\\\\\_graph\\\\\\_data(config, device)
 # 步骤 2:准备模型
 gat = GAT(
 num\\\\\\_of\\\\\\_layers=config\\\\\\['num\\\\\\_of\\\\\\_layers'\\\\\\],
 num\\\\\\_heads\\\\\\_per\\\\\\_layer=config\\\\\\['num\\\\\\_heads\\\\\\_per\\\\\\_layer'\\\\\\],
 num\\\\\\_features\\\\\\_per\\\\\\_layer=config\\\\\\['num\\\\\\_features\\\\\\_per\\\\\\_layer'\\\\\\],

该函数是 GAT 模型在 蛋白质 数据集上的训练主函数,按照特定的步骤进行操作。首先根据设备情况(GPU 或 CPU)准备数据加载器,然后构建 GAT 模型并定义损失函数和优化器,接着通过装饰器函数简化训练和验证循环,最后在训练过程中进行训练循环、验证循环,并根据需要进行测试,最终将训练得到的模型状态保存下来。

图注意力网络(GAT)的熵直方图可视化分析

摘要: 接下来聚焦于图注意力网络(GAT)中熵直方图的可视化研究。阐述了熵概念在 GAT 模型分析中的引入缘由,详细介绍了相关函数的构建与作用,包括绘制熵直方图函数以及整体可视化函数。通过在 蛋白质 数据集上的应用与结果展示,深入探讨了 GAT 模型学习到的注意力模式与均匀注意力模式的差异,为理解 GAT 模型的学习效果提供了重要视角。

熵直方图可视化原理

在 GAT 模型的研究中,熵直方图可视化是一种重要的分析手段。当提及“熵”时,人们可能会疑惑它在此处的作用。事实上,这并不复杂。在 GAT 模型中,注意力系数总和为 1,这就形成了一种概率分布。而有概率分布就可以计算熵,熵能够量化分布中的信息量(对于专业人士而言,它是自信息的期望值)。若对熵的概念不熟悉,可参考精彩视频,不过在理解本研究的可视化目的时,并不需要深入掌握熵的理论。
其核心思想如下:假设有一个“假设性的”GAT 模型,它对每个节点的邻域具有恒定的注意力(即所有分布是均匀的),我们计算每个邻域的熵,并根据这些熵值绘制直方图。然后将其与我们训练得到的 GAT 模型的直方图进行比较,观察两者的差异。如果两个直方图完全重叠,意味着我们的 GAT 模型具有均匀的注意力模式;重叠越小,则分布越不均匀。在此,我们关注的并非信息本身,而是直方图的匹配程度。这有助于清晰地了解 GAT 模型学习到的注意力模式是否有意义。若 GAT 学习到的是恒定注意力,那么使用 GCN 或更简单的模型可能就足够了。

实验运行与结果分析

最后运行 函数:

visualize\\\\\\_entropy\\\\\\_histograms(
 model_name,
 dataset_name,
)

得到的结果如以下图片所示:
c6604d49483701f798b98849bcdad036.png
c1fdbbaf8edc171157f2ef5f71a522e8.png
efb6d04c8f048545b391262e95bb5f59.png
71b6b9934ba10e0d77e7d49985094810.png
从结果可以看出,浅蓝色直方图(训练后的 GAT)与橙色直方图(均匀注意力 GAT)相比发生了倾斜。并且由于均匀分布具有最高的熵,所以它们向左倾斜,这是符合预期的。如果之前通过边厚度绘制的可视化结果未能使您信服,那么熵直方图的结果将更具说服力。通过熵直方图可视化,我们能够更深入地理解 GAT 模型在 蛋白质 数据集上学习到的注意力模式与均匀注意力模式的差异,从而评估 GAT 模型的有效性和独特性,为进一步优化和应用 GAT 模型提供有力的依据。

1f2b62c6b5221f28d5c43b1cba359da9.jpeg

本文中分析的数据、代码分享到会员群,扫描下面二维码即可加群! 

74d92f91aefc38a0ec3ac665243e3b1c.png


资料获取

在公众号后台回复“领资料”,可免费获取数据分析、机器学习、深度学习等学习资料。

bff8255075326bb110e48c005cab37ca.jpeg

点击文末“阅读原文”

获取全文完整代码数据资料。

本文选自《Python图注意力神经网络GAT与蛋白质相互作用数据模型构建、可视化及熵直方图分析》。

点击标题查阅往期内容

【视频讲解】Python深度神经网络DNNs-K-Means(K-均值)聚类方法在MNIST等数据可视化对比分析

MATLAB用CNN-LSTM神经网络的语音情感分类深度学习研究

Python用CEEMDAN-LSTM-VMD金融股价数据预测及SVR、AR、HAR对比可视化

Python注意力机制Attention下CNN-LSTM-ARIMA混合模型预测中国银行股票价格|附数据代码

R语言KERAS用RNN、双向RNNS递归神经网络、LSTM分析预测温度时间序列、 IMDB电影评分情感

Python用CNN-LSTM、ARIMA、Prophet股票价格预测的研究与分析|附数据代码

【视频讲解】线性时间序列原理及混合ARIMA-LSTM神经网络模型预测股票收盘价研究实例

RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测

结合新冠疫情COVID-19股票价格预测:ARIMA,KNN和神经网络时间序列分析

深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据

用PyTorch机器学习神经网络分类预测银行客户流失模型

PYTHON用LSTM长短期记忆神经网络的参数优化方法预测时间序列洗发水销售数据

Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化

R语言深度学习卷积神经网络 (CNN)对 CIFAR 图像进行分类:训练与结果评估可视化

深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据

Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析

R语言深度学习Keras循环神经网络(RNN)模型预测多输出变量时间序列

R语言KERAS用RNN、双向RNNS递归神经网络、LSTM分析预测温度时间序列、 IMDB电影评分情感

Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化

Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析

R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告

R语言深度学习:用keras神经网络回归模型预测时间序列数据

Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类

R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)

MATLAB中用BP神经网络预测人体脂肪百分比数据

Python中用PyTorch机器学习神经网络分类预测银行客户流失模型

R语言实现CNN(卷积神经网络)模型进行回归数据分析

SAS使用鸢尾花(iris)数据集训练人工神经网络(ANN)模型

【视频】R语言实现CNN(卷积神经网络)模型进行回归数据分析

Python使用神经网络进行简单文本分类

R语言用神经网络改进Nelson-Siegel模型拟合收益率曲线分析

R语言基于递归神经网络RNN的温度时间序列预测

R语言神经网络模型预测车辆数量时间序列

R语言中的BP神经网络模型分析学生成绩

matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类

R语言实现拟合神经网络预测和结果可视化

用R语言实现神经网络预测股票实例

使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测

python用于NLP的seq2seq模型实例:用Keras实现神经网络机器翻译

用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类

24e1c80df3ed38870554ef35b6e74ddf.jpeg

fb8e5eae964f2c52c96126a8ac3f2145.png

6393db40e52f925c09cdd55fbd94729a.png

0ff1e45949c6c9309362a8ea069cd946.jpeg

f7dee5865a734934c9d5c8251b55c14a.png

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

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

相关文章

LeetCode 1925 统计平方和三元组的数目

探索平方和三元组:从问题到 Java 代码实现 在数学与编程的交叉领域,常常会遇到一些有趣且富有挑战性的问题。今天,就让我们深入探讨一下 “平方和三元组” 这个有趣的话题,并使用 Java 语言来实现计算满足特定条件的平方和三元组…

回归预测 | MATLAB实现CNN-BiGRU-Attention卷积神经网络结合双向门控循环单元融合注意力机制多输入单输出回归预测

回归预测 | MATLAB实现CNN-BiGRU-Attention卷积神经网络结合双向门控循环单元融合注意力机制多输入单输出回归预测 目录 回归预测 | MATLAB实现CNN-BiGRU-Attention卷积神经网络结合双向门控循环单元融合注意力机制多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效…

vue横向滚动日期选择器组件

vue横向滚动日期选择器组件 组件使用到了element-plus组件库和dayjs库,使用前先保证项目中已经下载导入 主要功能:选择日期,点击日期可以让此日期滚动到视图中间,左滑右滑同理,支持跳转至任意日期,支持自…

Firecrawl教程①:自动化抓取与数据转化,赋能AI应用

Firecrawl教程①:自动化抓取与数据转化,赋能AI应用 前言一、功能特点1. 支持 LLM 可处理的数据格式2. 全面抓取网站3. 强大的操作支持4. 灵活的定制选项5. 支持多种编程语言 SDK二、如何开始使用 Firecrawl第一步:获取 API 密钥第二步:官网在线工具使用第三步:安装 Firecr…

WatchAlert - 开源多数据源告警引擎

概述 在现代 IT 环境中,监控和告警是确保系统稳定性和可靠性的关键环节。然而,随着业务规模的扩大和数据源的多样化,传统的单一数据源告警系统已经无法满足复杂的需求。为了解决这一问题,我开发了一个开源的多数据源告警引擎——…

svn版本丢失导致无法访问临时解决方法

#svn异常问题# 在使用svn的过程中,有时候在数据量比较大的情况下,有涉及到数据迁移或者是文件移动操作时容易出现迁移过程中有人还提交了数据,导致迁移的数据出现版本丢失的情况。 比如说,我实际遇到的情况是迁移数据的时候记录…

0009.基于springboot+layui的ERP企业进销存管理系统

一、系统说明 基于springbootlayui的ERP企业进销存管理系统,系统功能齐全, 代码简洁易懂,适合小白学编程,课程设计,毕业设计。 二、系统架构 前端:html| layui 后端:springboot | mybatis| thymeleaf 环境:jdk1.8 |…

Latex+VsCode+Win10搭建

最近在写论文,overleaf的免费使用次数受限,因此需要使用本地的形式进行编译。 安装TEXLive 下载地址:https://mirror-hk.koddos.net/CTAN/systems/texlive/Images/ 下载完成直接点击iso进行安装操作。 安装LATEX Workshop插件 设置VsCode文…

[创业之路-199]:《华为战略管理法-DSTE实战体系》- 3 - 价值转移理论与利润区理论

目录 一、价值转移理论 1.1. 什么是价值? 1.2. 什么价值创造 (1)、定义 (2)、影响价值创造的因素 (3)、价值创造的三个过程 (4)、价值创造的实践 (5&…

如何在单选按钮中添加图标和文字

文章目录 1. 概念介绍2. 使用方法3. 示例代码我们在上一章回中介绍了Radio Widget相关的内容,本章回中将介绍RadioListTile Widget.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在这里介绍的RadioListTile和上一章回中介绍的Radio类似,不同之处在于RadioListTile组…

启动异常:Caused by: java.lang.IllegalStateException: Failed to introspect Class

背景 今天项目需要,导入一个本地的jar包,在pom文件,添加自定义依赖后,并通过mvn命令: mvn install:install-file -Dfilejar包的位置 -DgroupId自定义的groupId -DartifactId自定义的artifactId -Dversion自定义的ver…

clickhouse-副本和分片

1、副本 1.1、概述 集群是副本和分片的基础,它将ClickHouse的服务拓扑由单节点延伸到多个节点,但它并不像Hadoop生态的某些系统那样,要求所有节点组成一个单一的大集群。ClickHouse的集群配置非常灵活,用户既可以将所有节点组成…

Python机器学习算法KNN、MLP、NB、LR助力油气钻井大数据提速参数优选及模型构建研究...

全文链接:https://tecdat.cn/?p38601 分析师:Huayan Mu 随着机器学习和大数据分析技术的发展,帮助客户进行油气行业数字化转型势在必行,钻井提速参数优选呈现由经验驱动、逻辑驱动向数据驱动转变的趋势。机械钻速最大化、机械比能…

【尚硅谷 - SSM+SpringBoot+SpringSecurity框架整合项目 】项目打包并且本地部署

前后端分离开发:把一个项目拆成两部分进行开发,所以在打包的时候,需要使用不同的打包方式。 后端 – SpringBoot – jar包 前端 – Vue: 因为使用了vue-admin-template框架:所以先使用框架进行打包使用Nginx部署,通…

练13:二分法

欢迎大家订阅【蓝桥杯Python每日一练】 专栏,开启你的 Python数据结构与算法 学习之旅! 文章目录 1 二分查找2 例题分析 1 二分查找 ①定义 在计算机科学中,二分算法(Binary Search)是一种高效的查找算法,…

Android Studio更改项目使用的JDK

一、吐槽 过去,在安卓项目中配置JDK和Gradle的过程非常直观,只需要进入Android Studio的File菜单中的Project Structure即可进行设置,十分方便。 原本可以在这修改JDK: 但大家都知道,Android Studio的狗屎性能,再加…

基于ST STM32MP257FAK3的MP2控制器之工业PLC 方案

简介 1.可编程逻辑控制器(PLC)是种专门为在工业环境下应用而设计的数字运算操作电子系统。它采用一种可编程的存储器,在其内部存储执行逻辑运算、顺序控制、定时、计数和算术运算等操作的指令,通过数字式或模拟式的输入输出来控制…

唯品会Android面试题及参考答案

HTTP 和 HTTPS 的区别是什么?你的项目使用的是 HTTP 还是 HTTPS? HTTP 和 HTTPS 主要有以下区别。 首先是安全性。HTTP 是超文本传输协议,数据传输是明文的,这意味着在数据传输过程中,信息很容易被窃取或者篡改。比如,在一个不安全的网络环境下,黑客可以通过网络嗅探工具…

黑马Java面试教程_P2_Redis

系列博客目录 文章目录 系列博客目录1前言2 使用场景面试官提问1:我看你做的项目中,都用到了redis,你在最近的项目中哪些场景使用了redis呢?面试官会接着问你1.1:如果发生了缓存穿透、击穿、雪崩,该如何解决?2.1缓存…

Python如何正确解决reCaptcha验证码(9)

前言 本文是该专栏的第73篇,后面会持续分享python爬虫干货知识,记得关注。 我们在处理某些国内外平台项目的时候,相信很多同学或多或少都见过,如下图所示的reCaptcha验证码。 而本文,笔者将重点来介绍在实战项目中,遇到上述中的“reCaptcha验证码”,如何正确去处理并解…