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

论文学习:《通过基于元学习的图变换探索冷启动场景下的药物-靶标相互作用预测》

原文标题:Exploring drug-target interaction prediction on cold-start scenarios via meta-learning-based graph transformer

原文链接:https://www.sciencedirect.com/science/article/pii/S1046202324002470


药物-靶点相互作用(DTI)预测通常是从已知的药物-靶点相互作用中预测潜在的未观察到的相互作用。

传统的方法通过生物实验发现药物靶标相互作用,准确但往往费时费力。

基于网络的方法可以无缝地组织和利用异构的生物数据,但在处理冷启动问题下的DTI预测时仍然存在差距。


冷启动场景需要预测新的药物或靶点与现有的靶点或药物之间是否存在潜在的相互作用

冷启动场景下的药物-靶标相互作用预测可以分为两类:

( i )冷启动药物任务,即预测新药物与已知靶标之间的相互作用;

( ii )冷目标任务,预测新靶点与已知药物之间的相互作用。

下图展示了一个冷启动场景下药物-靶标相互作用( DTI )预测的实例。

基于网络的DTI预测方法在缓解冷启动场景中需要考虑以下问题:

1.现有的方法都是面向设计具有足够药物-靶标相互作用情况的模型架构。因此,一旦没有在训练集(冷启动场景)中呈现,这些方法将无法很好地进行DTI预测。

2.大多数方法倾向于优先考虑1跳邻居信息,往往忽略了对长距离依赖关系的提取。虽然GNNs堆叠具有利用远程节点信息的能力,但也可能面临挑战,如过平滑问题。

本文提出了一个基于图变换的元学习框架MGDTI ( Meta-learning based Graph Transformer for Drug-Target Interaction Prediction简称Meta - learning),用于处理DTI预测中的冷启动问题。目标是增强模型的泛化能力,并有效地捕获长程依赖关系。

问题解决方案
模型泛化能力差通过元学习的方式对模型进行训练,使其能够快速适应冷药物任务和冷目标任务。
药物-药物和靶标-靶标相互作用的稀缺性结合了药物-药物结构相似性和靶标-靶标结构相似性,利用相似度矩阵作为额外信息来缓解交互的稀缺性。
过度平滑采用节点邻居采样方法为每个节点生成上下文序列,然后将这些序列输入到图转换器中,通过上下文聚合来捕获局部结构信息。

相关工作

药物靶标作用关系预测

DTI被描述为药物分子与靶点(通常是蛋白质)的结合,其中药物与靶点相互作用以治疗疾病。提高DTI预测的准确性可能会导致更快的药物开发。

大多数传统方法通常是耗时耗力的。

基于对接的方法需要目标物的三维结构;

基于配体的方法利用已知的相互作用配体的规则进行预测来预测DTI。

基于网络的方法使用基于图的技术来表征药物和靶点的属性来预测DTIs。

DTINet从异构网络中学习药物和靶标的慢维特征向量,然后找到从药物空间到靶标空间的最优投影并预测相互作用。

IMCHGAN采用两级GAT策略从多个网络中学习药物和靶标的潜在特征表示,并使用归纳矩阵补全预测DTI。

HGAN基于注意力机制和扩散技术,捕获生物异构图中复杂的结构和丰富的语义,用于DTI预测。

MOVE通过跨视图对比表示学习整合多源信息进行DTI预测。

图Transformer

Transformer是一种广泛应用于处理序列数据的深度学习框架。它依赖于自注意力机制来捕获输入序列中的依赖关系。

图Transformer是为处理图结构数据而量身定做的Transformer的变体。它扩展了Transformer架构,能够有效地对图中节点之间的关系进行建模,从而能够更好地对图数据进行学习和推理。

图Transformer可以缓解基于消息传递的GNN模型的局限性(如过度平滑、过度压扁等)。Transformers主要是将图结构信息融入到Transformer架构中,对图结构数据进行泛化

GraphTrans,GraphiT结合GNNs来捕获局部结构信息。

一些研究提出在图转换器中加入图和结构编码来补充拓扑信息。

HINormer提出的异构信息网络上的图转换器利用局部结构编码器和异构编码器进行节点表示学习。

方法

MGDTI主要由3个部分组成:( 1 )图增强模块;( 2 )局部图结构编码器;( 3 )图形转换器模块

图增强模块

为了解决冷启动问题,MGDTI分别在药物和靶标内部补充具有结构相似性的额外信息。对于每个药物v∈D,选择与药物v结构相似度最高的前5个药物(不含自身),并在DTN中添加5条边。对于每个目标v′∈T,也做同样的处理。对图进行增强后,得到新的DTN图G′。

局部图结构编码器

在该模块中,MGDTI利用局部图结构编码器学习节点的嵌入,以充分捕获DTN′的局部结构信息。对于每个节点v∈V,MGDTI随机初始化其在d维隐空间中的嵌入。此外,将所有节点的嵌入进行聚合,形成嵌入矩阵H(0)∈R|v|×d。图卷积网络( Graph Convolutional Network,GCN )因其消息传递机制能有效捕获局部结构信息而被广泛应用于图表示学习。形式上,对于L层输出:

式中:H(l)为第l层的特征表示。这里,~A = A + IN 是添加了自连接的无向图G'的邻接矩阵,其中IN是单位矩阵,~D是~A的度矩阵。~D-1/2 ~A~D-1/2 表示规范化的邻接矩阵,W(l)是l层可训练的权重矩阵。经过l层GCN后,得到节点的新嵌入H。

图Transformer模块

在该模块中,旨在通过图Transformer模块从长距离依赖中捕获信息,以防止过度平滑。

该模型将固定数量(n)的节点v的邻居节点采样为一个邻域序列Sv,其嵌入作为Transformer编码器的输入。对于节点v首先对自身进行采样,然后优先将其1跳节点采样到邻域序列Sv中。如果|Sv|<n,则从它的2跳邻居中采样,以此类推,直到|Sv| = n。

形式上,节点v的邻域序列Sv记为Sv = [ v , v1 , ... , vn-1 ],因此邻域序列的嵌入记为HSv = [ Hv , Hv1 , ... , Hvn - 1]∈R n×d。Transformer因其优秀的序列学习能力而被广泛应用于不同领域。标准变换层由多头自注意力模块( MSA )和前馈网络( FFN )两个主要部件组成MGDTI中删除了FFN,因此我们只简单介绍MSA的简单性。

MSA允许模型并行地学习多组注意力权重,以提取来自不同子空间的特征,并将它们融合在一起,以增强模型的表示能力。对于节点v的邻域序列嵌入,MSA首先通过三个参数矩阵WQ,WK,WV和将输入HSv投影到查询空间,键空间和值空间(分别用Q , K , V表示),从而学习到一组他们的注意力权重Attention

然后将注意力权重计算为:

在HSv上计算两个独立的自注意力,得到两组注意力权重Attention1,Attention2,并将其串联和线性变换得到MSA输出

其中WM是一个可学习的参数。

之后,MSA的输出将连接到层归一化(LN)和残差连接

对于Transformer编码器,j层表示为:

其中 H0 = HSv。

经过j层Transformer后,Transformer编码器的最终输出表示为" HSv∈R n×d "。

对于节点v,我们用~HSv[0]作为其新的嵌入。经过图变换模块后,MGDTI可以根据邻域序列不同位置之间的接近程度来学习节点特征。值得注意的是,在更新节点对药物节点和目标节点的嵌入时,我们使用了不同的图变换模块。此时,MGDTI分别得到了药物节点的嵌入Zv = ~HSv[0]和目标节点的嵌入Zv′= ~HSv′[0]。

预测模块

MGDTI将Zv和Zv′级联作为预测模块的输入,构成3层MLP。MLP的输出是一个预测分数,表示DTI的概率,记为:

我们将DTI预测任务转换为二分类任务,并使用二分类交叉熵损失

y是真实值,^y是预测值

元学习训练

为了解决冷启动场景下的数据不平衡问题,我们使用元学习来训练模型参数。

给定一个带有随机初始化模型参数θ的模型Fθ,元学习的核心思想是针对不同的任务学习最优参数θ*,从而快速适应新任务。首先,对于每个epoch,将训练集随机划分为支持集{Xp,Yp}和查询集{Xq,Yq}。并且每次都将模型参数θ复制为^θ,通过更新支撑集损失Lp来更新θ:

然后使用参数^θ对查询集进行训练,得到查询集Liq的损失。我们重复上述步骤k次,得到平均损失均值Lmean,计算为:

并利用其对模型的原始参数θ进行优化:

其中α和β是超参数,通常分别称为局部更新学习率和全局更新学习率。

实验

数据集预处理

为了反映冷启动场景下的药物-靶点相互作用预测,对数据集采用了不同的实验拆分策略。将冷启动任务分为两类,冷药物任务和冷目标任务。

以冷药物任务为例,首先将药物分为10份,进行10折交叉验证。对于每一个折叠,将其中的一个部分作为冷药物,其余的九个部分作为现有药物。对于每个冷药物,屏蔽了一定比率的边,包括网络中的药物-药物相互作用和药物-靶标相互作用,以创建冷药物场景。为了模拟已知DTI显著少于未知DTI的现实场景,设置了1:1、1:5和1:10三种负采样率,分别表示相同负样本数比正样本数,5倍负样本数比正样本数,10倍负样本数比正样本数。然后,对于每个折叠,使用药物-靶标相互作用的掩码边和负样本的负采样率编号(也就是说,冷药物与靶点之间没有相互作用)作为测试集,使用网络中的未掩码边和负样本的负采样率编号作为训练集。

为了评估模型在不同冷药物场景下的表现,设置了不同的掩码率0.5、0.7、0.9和1.0来模拟冷药物学习到了多少信息。对于冷目标任务,做了与上面相同的工作。

评价指标

为了评估MGDTI的有效性,使用了两个广泛使用的指标:受试者工作特征曲线下面积( AUC )和精确率-召回率曲线下面积( AUPR )。这两个评价指标常用于评估模型在不同领域中的性能,可以全面地了解模型区分正例和负例的能力( AUC ),以及在不同召回率水平下的精度( AUPR )。评价指标的得分越高,表明性能越好

有效性

为了评估模型的性能,在数据集上进行了10折交叉验证,并计算了10折结果的平均值。在不同负采样率的冷启动DTI预测任务上将MGDTI与基线进行了比较。冷药物任务的结果汇总在表中,而冷目标任务的结果如图所示。在表中,加粗的值表示该度量的最佳性能。并对本实验中各模型的预测结果进行了统计分析,通过图展示了十折交叉验证中各折的AUC和AUPR结果。

不同负采样率下冷药物MGDTI与基线结果的比较。

总的来说,在冷药物任务和冷目标任务上,MGDTI在大多数实验条件下都取得了最好的结果。而对于其他实验条件,MGDTI达到次优。特别地,当掩码速率为1.0时,MGDTI相对于其他基线取得了显著的优势。根据结果,可以得出结论,MGDTI比其他基线更适合处理冷启动场景。此外,当负采样率增加时,MGDTI也保持了优异的性能,证明了模型的鲁棒性。

对所提MGDTI与基线在不同负采样率冷目标上的AUC和AUPR性能进行统计分析。

随着掩码率的增加,所有模型的AUC和AUPR都有一定程度的下降。基于网络的方法需要聚集邻居的信息才能得到药物和靶点的表示,但在冷启动场景下,冷药物和冷靶点在网络中的相互作用信息很少或几乎没有,这将极大地限制DTI预测的性能。具体来说,随着掩蔽率的增加,冷目标任务的实验结果比冷目标任务下降更明显

相关文章:

论文学习:《通过基于元学习的图变换探索冷启动场景下的药物-靶标相互作用预测》

原文标题&#xff1a;Exploring drug-target interaction prediction on cold-start scenarios via meta-learning-based graph transformer 原文链接&#xff1a;https://www.sciencedirect.com/science/article/pii/S1046202324002470 药物-靶点相互作用&#xff08;DTI&…...

STM32 HAL库 OLED驱动实现

一、概述 1.1 OLED 显示屏简介 OLED&#xff08;Organic Light - Emitting Diode&#xff09;即有机发光二极管&#xff0c;与传统的 LCD 显示屏相比&#xff0c;OLED 具有自发光、视角广、响应速度快、对比度高、功耗低等优点。在嵌入式系统中&#xff0c;OLED 显示屏常被用…...

UE5蓝图之间的通信------接口

一、创建蓝图接口 二、双击创建的蓝图接口&#xff0c;添加函数&#xff0c;并重命名新函数。 三、在一个蓝图&#xff08;如玩家角色蓝图&#xff09;中实现接口&#xff0c;如下图&#xff1a; 步骤一&#xff1a;点击类设置 步骤二&#xff1a;在细节面板已经实现的接口中…...

封装Tcp Socket

封装Tcp Socket 0. 前言1. Socket.hpp2. 简单的使用介绍 0. 前言 本文中用到的Log.hpp在笔者的历史文章中都有涉及&#xff0c;这里就不再粘贴源码了&#xff0c;学习地址如下&#xff1a;https://blog.csdn.net/weixin_73870552/article/details/145434855?spm1001.2014.3001…...

深入解析 Android 图形系统:Canvas、Skia、OpenGL 与 SurfaceFlinger 的协作

在 Android 应用开发中&#xff0c;流畅的 UI 渲染是用户体验的核心。但你是否好奇&#xff0c;一个简单的 View 是如何从代码中的 onDraw() 方法一步步变成屏幕上的像素的&#xff1f;本文将从底层图形系统的视角&#xff0c;解析 Android 中 Canvas、Skia、OpenGL ES 和 Surf…...

LeetCode每日一题4.13

1922. 统计好数字的数目 问题 问题分析 题目要求我们找到长度为 n 且满足特定条件&#xff08;偶数下标处为偶数&#xff0c;奇数下标处为质数&#xff09;的数字字符串的总数&#xff0c;并对 (10^9 7) 取余。 思路 1.枚举 生成所有可能的数字字符串&#xff1a;对于长度…...

Java学习——day29(并发控制高级工具与设计模式)

文章目录 1. 并发控制高级工具简介1.1 CountDownLatch1.2 CyclicBarrier1.3 Semaphore1.4 并发设计模式 2. 扩展生产者—消费者示例2.1 示例代码 3. 代码详解3.1 主类 ExtendedProducerConsumerDemo3.2 Buffer 类3.3 Producer 类3.4 Consumer 类 4. 编译与运行结果4.1 编译4.2 …...

使用FormData格式上传图片

为什么要使用FormData格式上传图片 1. 为什么使用 FormData&#xff1f; FormData 是一种专门用于构建表单数据的对象&#xff0c;它能够以 multipart/form-data 格式发送数据&#xff0c;这是文件上传的标准格式。以下是使用 FormData 的主要原因&#xff1a; 简单易用 直…...

Tkinter表格与列表框应用

在图形用户界面(GUI)开发中,表格和列表框是常用的控件,用于显示和管理大量的数据。Tkinter提供了Listbox控件来显示简单的列表数据,而对于更复杂的表格数据,可以使用Treeview控件(属于ttk模块)来实现。这一章将介绍如何使用Listbox和Treeview来显示和操作数据,帮助您处…...

【Excel】数据透视表月度数据排序不正确

【问题】 插入数据透视表后&#xff0c;月度列显示的日期&#xff0c;是按照文本格式排序的&#xff0c;显然与实际月份排序并不相符。 【目的】 按照从1月份到12月份进行自然月度排序。 【方法】 步骤一&#xff1a; 在任意一处&#xff0c;输入“1月”-“12月”&#…...

HCIP第十天

OSPF的数据包 OSPF是跨层封装协议,直接封装在网络层之上 --- 需要IP协议使用一个协议号来标定 OSPF --- 89 OSPF的头部 版本 --- OSPF的版本 --- 2 类型 --- OSPF数据包的类型 --- hello -- 1 DBD -- 2 LSR -- 3 LSU -- 4 LSACK -- 5 路由器ID --- RID --- 携带的是发出O…...

Vue2,Vue3知识大全

Vue 1.了解vue,快速上手 vue是一个用于构建用户的界面的渐进式框架. vue的两种使用方法: vue核心包开发 场景:局部模块改造 vue核心包&vue插件 工程化开发 场景:整站开发 1.创建一个vue实例: 2.插值表达式 1.插值表达式是一种Vue的模版语法 作用:利用表达式进行插值…...

java面向对象02:回顾方法

回顾方法及加深 定义方法 修饰符 返回类型 break&#xff1a;跳出switch和return的区别 方法名 参数列表 package com.oop.demo01;//Demo01类 public class Demo01 {//main方法public static void main(String[] args) {}/*修饰符 返回值类型 方法名(...){//方法体return…...

【Ubuntu】【树莓派】Linux系统的远程终端登录、远程图形桌面访问、 X图形窗口访问和文件传输操作

目录 一、Ubuntu远程终端并实现文件上传下载 1.1Ubuntu桥接模式设置和新用户的创建 1.2Ubuntu的远程登录并上传和下载文件 1.3在Xming中进行Ubuntu的图形访问 二、树莓派远程登录并实现文件上传下载 2.1树莓派在putty上的远程登录 2.2使用ftp远程登录并实现文件上传下载…...

Linux Kernel 2

地址空间&#xff08;Address Space&#xff09; 一、物理地址空间&#xff08;Physical Address Space&#xff09; 物理地址空间 是指 RAM 和设备内存 在系统内存总线上所呈现的地址布局。 举例&#xff1a;在典型的 32 32 32 位 Intel 架构中&#xff0c; RAM&#xff08…...

二.springBoot项目集成ElasticSearch及使用

二.springBoot项目集成ElasticSearch及使用 1.依赖引入2.ElasticSearch常见用法 1.依赖引入 <!--elasticsearch搜索引擎--> <!--高版本7.0后TransportClient已被淘汰&#xff0c;用rest-high-level-client代替--> <dependency><groupId>org.elasticse…...

从三次方程到复平面:复数概念的奇妙演进(一)

注&#xff1a;本文为 “复数 | 历史 / 演进” 相关文章合辑。 因 csdn 篇幅限制分篇连载&#xff0c;此为第一篇。 生料&#xff0c;不同的文章不同的点。 机翻&#xff0c;未校。 Reflections on the History of Complex Numbers 复数的历史回顾 The first occurrence o…...

Day52 | 6. Z 字形变换、8. 字符串转换整数 (atoi)、22. 括号生成、38. 外观数列

6. Z 字形变换 题目链接&#xff1a;6. Z 字形变换 - 力扣&#xff08;LeetCode&#xff09; 题目难度&#xff1a;中等 代码&#xff1a; class Solution {public String convert(String s, int numRows) {if(numRows<2) return s;List<StringBuilder> rowsnew A…...

每日OJ_牛客_ruby和薯条_排序+二分/滑动窗口_C++_Java

目录 ruby和薯条_排序二分/滑动窗口 题目解析 C代码 Java代码 ruby和薯条_排序二分/滑动窗口 ruby和薯条 描述&#xff1a; ruby很喜欢吃薯条。 有一天&#xff0c;她拿出了n根薯条。第i根薯条的长度为ai。 ruby认为&#xff0c;若两根薯条的长度之差在l和r之间&#xff…...

快速幂运算

快速幂运算 一、快速幂运算快速幂运算&#xff08;Exponentiation by Squaring&#xff09;基本思想算法实现&#xff08;②③为非递归&#xff09;① 递归运算② 普通 除模运算&#xff08;不带 **模数** 与 带 **模数**&#xff09;③ 按位与运算 使用示例示例代码 复杂度分析…...

vue @import引入CSS scoped无效 造成全局样式污染

引入css文件导致全局样式污染 1.写在单组件的style里面css样式&#xff0c;如果标签内不加scoped可能会影响其他组件的样式 <style lang"scss" scoped> </style> 2.通过import引入的外部css文件&#xff0c;这种引入方式是全局的&#xff0c;也会影响其…...

基于Flask-Login简单登录和权限控制实践

1. 关于Flask-Login Flask-Login 是一个为python Flask Web框架设计的扩展,用于管理用户会话(用户登录状态)。它提供了简单的接口来处理用户登录、注销、记住用户等功能,同时确保用户会话的安全性。以下是 Flask-Login 的一些关键特性和功能: 1.1. 主要功能 用户会话管理…...

文件流---------获取文件的内容到控制台

总流程&#xff1a;先创建一个文本文件------->里面写入一些内容&#xff08;纯字母和字母加文字&#xff09;-----------> 然后通过输入流获取文件里面的内容&#xff0c;两种方式。 1.第一种&#xff0c;获取单个的字符 &#xff0c;先创建文件 &#xff0c;java.txt…...

idea 2024 build菜单不见了

Q如题 idea 2024 新版UI添加build和recompile菜单 A如图&#xff0c;右键顶部栏之后&#xff0c;点击Add to Main Toolbar菜单&#xff0c;在里面就能找到Build菜单&#xff0c;添加接口。 Recompile菜单的话在Customize Toolbar中搜索添加才行。...

深入理解计算机操作系统(持续更新中...)

文章目录 一、计算机系统漫游1.1信息就是位上下文 一、计算机系统漫游 1.1信息就是位上下文 源程序实际上就是一个由值0和1组成的位&#xff08;又称为比特&#xff09;&#xff0c;八个位被组织成一组&#xff0c;称为字节。每个字节表示程序中的某些文本字符 大部分现代计…...

[dp8_子数组] 乘积为正数的最长子数组长度 | 等差数列划分 | 最长湍流子数组

目录 1.乘积为正数的最长子数组长度 2.等差数列划分 3.最长湍流子数组 写代码做到&#xff0c;只用维护好自己的一小步 1.乘积为正数的最长子数组长度 链接&#xff1a;1567. 乘积为正数的最长子数组长度 给你一个整数数组 nums &#xff0c;请你求出乘积为正数的最长子数…...

量子机器学习(Quantum Machine Learning, QML)在优化测试组合

量子机器学习(Quantum Machine Learning, QML)在优化测试组合选择中展现出显著潜力,通过量子计算的并行性和量子态叠加特性,可高效解决传统方法难以处理的组合爆炸问题。以下是其技术实现路径、优势及落地案例: 一、QML优化测试组合的核心原理 1. 量子并行性加速搜索 经典…...

Go语言Slice切片底层

Go语言&#xff08;Golang&#xff09;中切片&#xff08;slice&#xff09;的相关知识、包括切片与数组的关系、底层结构、扩容机制、以及切片在函数传递、截取、增删元素、拷贝等操作中的特性。并给出了相关代码示例和一道面试题。关键要点包括&#xff1a; 数组特性&#xf…...

导入 Excel 批量替换文件夹名称

文件夹重命名的需求是多种多样的&#xff0c;前面我们介绍过按照规则修改文件夹名称的方法。但是在某些场景下&#xff0c;这个方法可能是不适用的&#xff0c;比如我们修改文件夹的规则是多种多样的&#xff0c;是无规律的。那我们应该怎么做呢&#xff1f;今天我们就给大家介…...

数据库或表数据迁移(使用Navicat迁移MySQL数据库表数据)

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 数据库或表数据迁移&#xff08;使用Navicat…...

Matlab Add Legend To Graph-图例添加到图

Add Legeng To Graph: Matlab的legend&#xff08;&#xff09;函数-图例添加到图 将图例添加到图 ,图例是标记绘制在图上的数据序列的有用方法。 下列示例说明如何创建图例并进行一些常见修改&#xff0c;例如更改位置、设置字体大小以及添加标题。您还可以创建具有多列的图…...

【Linux】what is pam?PAM模块学习笔记

文章目录 1. pam模块简介2. pam验证的工作流程3. pam模块配置文件3.1 配置文件的格式3.1.1 验证类别type3.1.2 验证的控制标识 control flag3.1.3 pam模块 4. login的PAM验证机制流程5. 补充&#xff1a;其他pam相关文件6. 参考内容 1. pam模块简介 PAM: Pluggable Authentica…...

5.1 GitHub订阅监控系统实战:FastAPI+SQLAlchemy高效架构设计与核心源码揭秘

GitHub Sentinel Agent 分析报告功能设计与实现 关键词:订阅管理 API 设计、GitHub API 集成、SQLAlchemy ORM、JWT 认证、单元测试框架 1. 订阅管理功能架构设计 订阅管理模块采用分层架构设计,通过 FastAPI 构建 RESTful 接口,结合 SQLAlchemy ORM 实现数据持久化: #me…...

【BEPU V1物理】BEPUphysics v1 入门指南 汉化笔记#1

BEPUphysics v1 入门指南 前言下载获取库工程1.创建物理模拟环境2.添加物理实体3.与物理系统交互4.发射物体5.构建环境6.事件处理7. 进阶学习 前言 本文档记录完成 BEPUphysics 物理引擎的基础设置。 文档链接:https://github.com/bepu/bepuphysics1/blob/master/Documentatio…...

方法加事务在多线程中注意事项

方法加事务在多线程中注意事项 redission分布式锁释放异常问题 https://www.jianshu.com/p/055ae798547a https://blog.csdn.net/cheng__yu/article/details/122625649 虽然文章 https://blog.csdn.net/cheng__yu/article/details/122625649 和 redission锁是没关系的&#…...

开源 2D 横版跳跃游戏 SuperTux

官网 https://www.supertux.org/ 正文 在游戏的世界里&#xff0c;开源游戏以其独特的魅力吸引着众多玩家和开发者。今天要介绍的 SuperTux&#xff0c;便是一款备受瞩目的开源 2D 横版跳跃游戏&#xff0c;风格类似经典的超级马里奥系列。 2024 年&#xff0c;SuperTux 开发团…...

基于HASM模型的高精度建模matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 本课题主要使用HASM进行高精度建模&#xff0c;主要对HASM模型进行介绍以及在实际中如何进行简化实现的。 2.测试软件版本以及运行结果展示 MATLAB2022A版本运行…...

C++多线程编程时的伪共享问题及其定位和解决

一、引言 在多线程编程和共享内存系统中&#xff0c;为了提高程序性能&#xff0c;常常需要对共享数据进行处理。然而&#xff0c;在并发环境下&#xff0c;一种名为“伪共享&#xff08;False Sharing&#xff09;”的问题可能会悄然出现&#xff0c;它虽然不像传统的多线程同…...

高并发短信系统设计:基于SharingJDBC的分库分表、大数据同步与实时计算方案

高并发短信系统设计&#xff1a;基于SharingJDBC的分库分表、大数据同步与实时计算方案 一、概述 在当今互联网应用中&#xff0c;短信服务是极为重要的一环。面对每天发送2000万条短信的需求&#xff0c;我们需要一个能够处理海量数据&#xff08;一年下来达到数千万亿级别&…...

【HTML】html文件

HTML文件全解析&#xff1a;搭建网页的基石 在互联网的广袤世界里&#xff0c;每一个绚丽多彩、功能各异的网页背后&#xff0c;都离不开HTML文件的默默支撑。HTML&#xff0c;即超文本标记语言&#xff08;HyperText Markup Language&#xff09;&#xff0c;作为网页创建的基…...

5.11 GitHub API调试五大高频坑:从JSON异常到异步阻塞的实战避坑指南

GitHub API调试五大高频坑:从JSON异常到异步阻塞的实战避坑指南 关键词:GitHub API 调试、JSON 解析异常、提示工程优化、异步任务阻塞、数据清洗策略 5.5 测试与调试:调试常见问题 问题1:GitHub API 调用异常 现象: requests.exceptions.HTTPError: 403 Client Error…...

协程的原生挂起与恢复机制

目录 &#x1f50d; 一、从开发者视角看协程挂起与恢复 &#x1f9e0; 二、协程挂起和恢复的机制原理&#xff1a;核心关键词 ✅ suspend 函数 ≠ 普通函数 ✅ Continuation&#xff08;协程的控制器&#xff09; &#x1f527; 三、编译器做了什么&#xff1f;&#xff0…...

机器学习中的数学(PartⅡ)——线性代数:2.2矩阵

概述 本节内容也相对简单&#xff0c;首先介绍了矩阵的定义&#xff0c;矩阵的表示方法&#xff1b;然后介绍了矩阵的加法和乘法&#xff0c;与标量的乘法&#xff0c;以及一些矩阵相关算数运算的性质&#xff0c;包括满足结合律、交换律&#xff1b;矩阵的逆和转置&#xff1…...

泉涌未来:科技与生态的共生诗篇-济南

故事背景 故事发生在中国山东济南的未来城市环境&#xff0c;这里不再是单纯的自然景观与现代建筑的堆砌&#xff0c;而是科技与生态深度融合的奇妙世界。泉水&#xff0c;这一济南的灵魂元素&#xff0c;在未来科技的赋能下&#xff0c;成为连接城市各个角落的纽带。量子态泉水…...

用AI生成系统架构图

DeepSeek+Drawio+SVG绘制架构图-找到一种真正可行实用的方法和思路 1、使用DeepSeek生成SVG文件,导入drawio工具的方法 🔥 问题根源分析 错误现象: • 导入时报错包含 data:image/SVG;base64 和 %20 等 URL 编码字符 • 代码被错误转换为 Base64 格式(适用于网页嵌入,但…...

网络基础1

目录 初识协议 协议分层 软件分层的好处 OSI七层模型 TCP/IP 五层(或四层)模型 再谈协议 为什么要有 TCP/IP 协议&#xff1f; TCP/IP 协议与操作系统的关系 所以究竟什么是协议&#xff1f; 网络传输基本流程 认识 MAC 地址 局域网(以太网为例)通信原理 报文的传…...

免费且好用的PDF水印添加工具

软件介绍 今天要给大家推荐一款超实用的PDF添加水印工具&#xff0c;它能够满足用户给PDF文件添加水印的需求&#xff0c;而且完全免费。 这款PDF添加水印的软件有着简洁的界面&#xff0c;操作简便&#xff0c;无需安装&#xff0c;解压后即可使用。 在使用前&#xff0c;先…...

C++Primer对象移动

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…...

互联网三高-数据库高并发之分库分表ShardingJDBC

1 ShardingJDBC介绍 1.1 常见概念术语 ① 数据节点Node&#xff1a;数据分片的最小单元&#xff0c;由数据源名称和数据表组成 如&#xff1a;ds0.product_order_0 ② 真实表&#xff1a;再分片的数据库中真实存在的物理表 如&#xff1a;product_order_0 ③ 逻辑表&#xff1a…...

七、自动化概念篇

自动化测试概念 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常&#xff0c;在设计了测试用例并通过评审之后&#xff0c;由测试人员根据测试用例中描述的过程一步步执行测试&#xff0c;得到实际结果与期望结果的比较。在此过程中&#xff0c;为了节省人…...