论文学习:《利用图注意力网络增强单细胞多组学数据的整合》
原文标题:Enhanced Integration ofSingle-Cell Multi-Omics Data Using Graph Attention Networks
原文链接:https://pubs.acs.org/doi/abs/10.1021/acssynbio.4c00864
跨不同组学层的数据集成面临的挑战:高维度、异质性和稀疏性。
变分自编码器(Variational Autoencoder,VAE)是一个非对称的深度学习框架,它由三个主要部分组成:编码器、隐藏层和解码器。编码器学习输入数据的低维表示,而隐藏层控制这些特征的分布,使模型能够捕获复杂的数据结构。然后,解码器从这些潜在表示中重建原始输入数据。
高斯混合模型(Gaussian Mixture Model,GMM)是由多个高斯分布组成的模型,其密度函数为多个高斯密度函数的加权组合。
解决VAE的方法在多组学数据分析中的局限性,开发了深度典型相关分析(DCCA)和单细胞多组学差异推断(scMVP)方法。
DCCA使用多个VAE,每个VAE专门用于处理不同类型的组学数据。该架构允许DCCA捕获每个数据集的独特特征,同时利用相互监督来识别和建模不同组学数据类型嵌入之间的相关性。有助于更全面地了解各个生物层之间的关系。
scMVP采用了多模态的VAE方法,结合了针对不同类型的多组学数据的特定的编码器和解码器。这种设计使scMVP能够有效地捕获每个数据集的细微差别,同时也利用了包含注意力机制的联合潜在空间。注意力机制允许模型在不同的组学层中专注于最相关的特征,从而增强了其识别有意义的生物信号和相互作用的能力。
作者提出的scMGAT (基于多头图注意力网络的单细胞多组学数据分析)方法在单细胞多模态组学分析的背景下引入了一种整合转录组学和表观基因组学数据的创新方法,scMGAT使用多头注意力机制来有效协调和优化不同类型组学数据之间交换的可靠信息,从而解决单细胞多模态组学数据集中存在的固有异质性问题。在评估不同组学数据类型之间的相似性时,引入了自注意力机制,提高了模型的处理效率。实验结果表明,scMGAT能够从不同的单细胞组学层中提取有意义的特征,并有效地识别这些不同类型的组学数据之间的重要关联。
方法
scMGAT生成模型
ScMGAT采用了一种集成自编码器( AEs )和图注意力网络( GATs )的新方法来有效地分析单细胞多组学分析数据,分为三个关键步骤。
在第一步中,两个组学数据集经过必要的预处理,包括零值基因过滤和对数转换,以提高数据质量(图1A )。随后,AE模块通过最小化均方误差作为损失函数对组学数据进行优化和合并,从而使数据具有更鲁棒的表示。

原始数据进行过滤、标准化、对数变换等预处理。
第二步利用从AE模块得到的隐层表示在GAT框架下构造邻接矩阵。这个矩阵便于建立连接单细胞多组学分析数据的各个组成部分的融合嵌入。GAT中的图卷积层结合了多头注意力机制,能够很好地管理节点与其邻居之间的关系,从而增强模型捕获复杂交互的能力(图1B )。

嵌入层数据构建邻接矩阵并输入到图注意力网络中,产生图输出层作为指定维度的输出数据。
在数据预处理过程中,仅保留具有重叠组学矩阵的细胞。原始数据作为多组学数据输入,以保证准确的信息借用。图中的每个节点代表单个细胞,具体来说是细胞在融合组学特征空间中的低维嵌入。
边缘表示细胞之间的相似性或关系,基于这些融合特征计算。
第三步,利用sc MGAT产生的输出进行深入的基因水平分析,为下游的研究和应用奠定基础(图1C )。这个全面的框架使我们能够更深入地理解多组学数据集背后复杂的生物学过程。

自编码网络模块
自编码器( AE )是一种无监督的多层前馈神经网络,旨在通过最小化重构输出和原始输入数据之间的损失来学习数据特征。AE是通过编码器-解码器架构实现的,其中编码器将输入数据映射到低维隐空间,解码器从这种隐表示中重构数据。AE的主要目标是提取相关特征,同时保留关键信息。在scMGAT模型中,AE作为无监督学习的关键组件,促进了多组学数据在嵌入层的融合。
scMGAT模型的融合过程包括两个关键步骤。首先,通过零值基因过滤和对数变换等技术获得两个组学数据集的预处理矩阵,并将其独立地输入到各自的编码器中。这种编码过程将组学数据转化为低维表示,捕获了输入的本质特征,有效地减少了噪声和冗余。其次,将从编码器中提取的隐藏层进行融合——通常是通过级联或元素级操作来创建嵌入层。该嵌入层对整合的多组学信息进行编码,从而为后续的分析任务提供便利。
自编码网络模块由编码器和解码器组成。编码器由多层组成,处理来自每个组学类型的输入数据,捕获基本特征。解码器利用这种潜在表示对原始多组学数据进行重构,保证重构误差最小。对于scRNA - seq数据X1∈R m×n1和scATAC - seq数据X2∈R m×n2,其中m为样本数量,n1,n2分别为特征数量;每个组学类型的数据通过多个隐藏层进行处理。每一层的变换都可以用下面的数学表达式来表示:

每一层之间使用的激活函数是LeakyReLU,它引入了非线性,使模型能够学习数据内部的复杂模式和关系。该函数的数学表达式为:

合并后的数据Z是将两个数据集的最后一层表示串联起来得到的:

从潜在空间Z重构原始数据如下:
然后将重建后的数据X^映射回原始的数据维度:

采用均方误差( Mean Squared Error,MSE )损失函数计算重构误差:

嵌入层的多组学数据融合是通过对编码器得到的隐含层进行融合,并应用融合操作(例如,拼接或元素加法)对表示进行组合,然后将融合后的层作为输入进行下游分析的过程实现的。这种融合方法允许scMGAT模型利用来自多个组学数据源的互补信息,捕获潜在的相互依赖关系。在训练过程中,自编码器( autoencoder,AE )模型通过使用MSE损失函数最小化输出与原始输入之间的重构损失。MSE损失量化了重建数据点与原始数据点之间的平均平方差。通过迭代调整模型参数——包括编码权重矩阵( Wi )和偏置向量( bi ),AE优化网络实现精确的数据重建。
图注意力网络模块
在训练自编码器( AE )的基础上,scMGAT模型根据学习到的多组学数据表示构建邻接矩阵,记为G。随后,使用图注意力网络( Graph Attention Network,GAT )算法和自注意力层来识别G中更有代表性的节点,并评估各个节点在各自邻域内的相关性。这种方法使得自感知层节点能够关注G中邻居节点的特征,从而有利于信息的全面融合。该模型使用的注意力机制为每个节点分配不同的权重,使其在处理局部数据的同时强调全局信息。该机制通过考虑不同节点之间的重要性和相互关系,增强了单细胞多组学数据的整合。通过利用自注意力机制,该模型有效地捕获和组合了来自各种组学来源的相关信息,从而增强了单细胞多组学数据的表示和融合。
GAT模块接收一组细胞特征作为输入,表示为h = { h1,h2,· · ·,hN },其中hi∈RF表示N个细胞,每个细胞用F个特征值表征。该模块产生新的、鲁棒性更强的特征作为输出,记为h′= { h1′,h2′,· · ·,hN′},其中hi′∈RF′,F′表示新特征向量的长度。原始特征到增强特征的转换在每个细胞节点处通过权重矩阵R(F′× F)进行参数化。为了融入自注意力机制,引入共享函数a:RF′× RF′→R。该函数结合了单元节点i和j的加权输出(Whi,Whj),得到一个注意力系数eij = a(Whi,Whj)。自注意力机制允许模型中的每个节点与其他节点进行交互,从而捕获节点j的特征值对节点i的重要性。为了确保计算只考虑i的邻居节点,其中j∈Ni,采用了隐藏注意力技术。这种技术限制了对图中邻接点的关注,从而排除了不相邻的节点。利用softmax方法对原始注意力得分eij进行处理,得到注意力系数αij,保证所有相邻节点的注意力得分归一化,且其权重和为1。这可以表示为:
该规定便于在生成输出特征的线性组合计算中确定每个节点的特征重要度。然后将LeakyReLU激活函数应用到线性组合中,表示为LeakyRelu ( aT [ Whi∥Whj ] ),其中T表示转置,aT表示可学习的权重向量,∥表示级联操作。这一过程增强了细胞间的生物变异,稳定了自学习机制的效果。具体来说,该函数被执行多次以产生线性输出,然后将得到的特征进行连接和平均。具体公式如下:

节点ii的更新特征记为hi′,通过以下步骤计算:
(1)应用sigmoid激活函数σ生成更新的特征向量hi′;
(2)每个多传感头注意力头k的输出,用α ij k表示,与相邻节点( j∈Nj)的特征向量hj进行逐元素相乘;
(3)将这些相乘后的值在所有相邻节点( j∈Nj)上求和;
(4)所得和乘以第k个头部的线性变换矩阵Wk;
(5)使用1/K作为尺度因子,计算所有K多传感头注意力的转换和的平均值。
该模型通过引入多头注意力机制,有效地整合了多组学数据中的有价值信息。这种方法便于对隐藏层内的数据进行无害化处理,从而得到非常有利于下游分析的输出结果。图注意力网络( Graph Attention Network,GAT )模型包含连接层,每个连接层都配备了注意力机制。在初始层中,节点获取输入数据的特征维度。后续的连接层旨在增强模型捕捉数据内部复杂关系的能力。图注意力连接层之间使用的激活函数是整流线性单元( ReLU ),它引入了非线性,使模型能够捕获数据中错综复杂的模式。
为了优化性能,使用Adam优化器,权重衰减为1 × 10-3。这种优化技术的结合提高了训练效率,缓解了过拟合,从而提高了泛化能力和更稳健的结果。为了进一步提高scMGAT模型的准确性,并降低数据中隐藏噪声的负面影响,采用基于Bregman散度的双向logistic损失算法作为损失函数。该方法解决了实验过程中未知噪声对重要信息选取的影响,使得模型精度得到显著提高。在scMGAT模型中使用的损失函数定义如下:
式中,yi和^yi分别表示来自图注意力层的目标和预测值。通过对输入单元数据的对数变换和指数函数对输入的调整来缓解异常噪声对模型性能的影响。值得注意的是,当t1和t2取值为1时,scMGAT模型中使用的损失函数等价于激活函数中的KL散度。
相关文章:
论文学习:《利用图注意力网络增强单细胞多组学数据的整合》
原文标题:Enhanced Integration ofSingle-Cell Multi-Omics Data Using Graph Attention Networks 原文链接:https://pubs.acs.org/doi/abs/10.1021/acssynbio.4c00864 跨不同组学层的数据集成面临的挑战:高维度、异质性和稀疏性。 变分自编码…...
HumanDil-Ox-LDL:保存:2-8℃保存,避免强光直射,不可冻存
化学试剂的基本介绍: /// 英文名称:HumanDil-Oxidized LowDensityLipoprotein /// 中文名称:人源红色荧光标记氧化型低密度脂蛋白 /// 浓度:1.0-4.0 mg/ml /// 外观:乳状液体 /// 缓冲液组分:PBS&…...
基于3d相机的点云物体检测与路径规划
🧩 代码结构和解释: 点云预处理 (preprocess_point_cloud): 使用 Voxel 下采样 来减少点云数据量,去除不必要的噪声。 使用 统计滤波器 去除离群点,以提高后续拟合的精度。 V型焊缝路径拟合 (fit_weld_path_v)&…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(2):んです
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(2):んです 1、前言(1)情况说明(2)工程师的信仰2、知识点(1)~んです & ~の(2)意味(いみ)&形(かたち)&使い方(つかいかた)(3)そうなんですか & そうなんだ。(4)何をしているんですか & 何を…...
yolov8在windows系统的C++版本的onnxruntime部署方法
1.各个软件的的环境需要保持在统一的版本。 onnxruntime需要和cuda的版本对应上,版本号:onnxruntime-win-x64-gpu-1.18.1 ,链接: NVIDIA - CUDA | onnxruntime cuda:本机显卡支持的版本,cuda11.7,链接:CUDA Toolkit Archive | NVIDIA Developer cudnn:需要对应到cud…...
AD软件的系统设置
设置 1.自动保存(DATA -> backup) 2.原理图-复制元器件递增位号 3.原理图-用斜线表示负信号 4.PCB-选择移动重叠的元器件 5.PCB-十字光标全屏大小 6.PCB-选择部分连接网络的走线全亮/显示多个网络的颜色(TP) 7.PCB-DRC报错的图…...
算法---子序列[动态规划解决](最长递增子序列)
最长递增子序列 说白了,要用到双层循环! 用双层循环中的dp[i] class Solution { public:int lengthOfLIS(vector<int>& nums) {vector<int> dp(nums.size(),1);for(int i 0;i<nums.size();i){for(int j0;j<i;j){if(nums[i]>num…...
快速幂(模板)
快速幂 取余运算性质:(a*b*c)%d (a%d * b%d * c%d)%d ; #include <iostream> using namespace std; int main() {long long b,p,k;//b(底数)p(指数)k(取模数)cin>>b>>p>>k;long long ret1;b%k;//防止底数过大//模版,记…...
蓝桥杯 好数【暴力、基础知识】
题目: AC代码: #include<bits/stdc.h> using namespace std; int ans0; int n; bool check(int x){int cnt1;while(x!0){int tx%10;if(cnt%21){ if(t%20) return false; //奇数位置是偶数} if(cnt%20){if(t%21) return false; //偶数位是奇数}cnt…...
【Kubernetes】Kubernetes中如何实现灰度发布
Kubernetes中实现灰度发布 一、基于Ingress-nginx的流量切分(适用中小规模) 权重分流 在Ingress资源中通过nginx.ingress.kubernetes.io/canary-weight注解设置新版本流量比例apiVersion: networking.k8s.io/v1 kind: Ingress metadata:annotations:ng…...
【Reinforcement Learning For Quadruped Control】1
强化学习(RL)是一种机器学习范式,代理通过与环境的互动来学习做出决策。强化学习的核心概念围绕以下几个方面展开:a) 代理agent,做出决策;b) 环境environment,响应代理的决策;c) 状态…...
工程企业如何实现四算联动?预算-核算-决算系统解析
在工程行业,项目管理的高效性直接决定了企业的盈利能力和市场竞争力。尤其是在EPC(工程总承包)模式下,工程企业面临着复杂的业务场景和多维度的成本管控需求。如何通过“四算联动”(概算、预算、核算、决算)…...
【SpringBoot】处理actuator风险漏洞
最近给系统做渗透测试,扫描出了一个actuator风险漏洞,属于高危级别,通过actuator接口可以拿到用户敏感信息。这个问题处理起来倒也简单,禁用actuator或者限制访问就可以了 # 禁用actuator接口配置 management:server:port: -1# 限…...
MACOS15版本安装 python mysqlclient 以连接mysql 8.0
MACOS14/15 版本安装 python mysqlclient 以连接mysql 8.0 主要用于macos django4 mysql8.0 开发项目 准备材料 macos > 13.0 python > 3.10.0 (不强制) mysql > 8.0 安装步骤 安装 brew 使用国内源安装brew /bin/zsh -c "$(curl -f…...
KV Cache大模型推理加速功能
KV Cache KV Cache是大模型标配的推理加速功能,也是推理过程中,显存资源巨大开销的元凶之一。在模型推理时,KV Cache在显存占用量可达30%以上。 目前大部分针对KV Cache的优化工作,主要集中在工程上。比如著名的VLLM,…...
Windows下安装WSL2下的Ubuntu、docker容器的IP地址(上)
既然容器支持多个应用,那么容易想到应该有对应的ip地址和端口,这样才能和Ubuntu主机进行通讯,ubuntu访问外网也应该有ip能连接到外网才行,要搞清楚这些ip地址的关系才行。 前面两篇文章中说了怎么实现windows和wsl2下的ubuntu的文…...
vue实现中英文切换
第一步:安装插件vue-i18n,npm install vue-i18n 第二步:在src下新建locales文件夹,并在locales下新建index.js、EN.js、CN.js文件 第三步:在EN.js和CN.js文件下配置你想要的字段,例如: //CN.js…...
探索 Vue 3 中 vue-router 的 router.resolve () API
一、router.resolve() 是什么 router.resolve() 就好比是一个精准的 “导航参谋”。当我们在 Vue 3 应用里需要明确某个路由地址对应的详细信息时,它就能派上用场。我们给它传入路由信息,像路径、参数等,它会解析出对应的路由对象࿰…...
Excel 插件推荐:提升Excel能力的效率神器!
一、Excel玩家的觉醒时刻 在财务部的深夜加班现场,李师傅的咖啡杯上凝结着第3圈水渍。眼前的Excel窗口堆叠如俄罗斯方块:重复值删除进度15%、VLOOKUP公式报错3处、合并单元格序号乱成毛线团…这场景是否也戳中了你的痛点? 每个Excel高手都经…...
leetcode_383. 赎金信_java
383. 赎金信https://leetcode.cn/problems/ransom-note/ 1、题目 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返回 true ;否则返回 false 。 magazine 中的每个字…...
应用安全系列之四十五:日志伪造(Log_Forging)之三
1、简介 针对Java的日志系统有多种,本文主要描述如何通过修改配置文件来解决logback和log4j的日志伪造问题。 2、logback 2.1、系统提供的解决方案 在logback.xml中配置编码器自动转义特殊字符: 复制 <configuration><appender name"C…...
FTPClient开发遇到的坑
1. 生成文件夹乱序 这里用分隔符把路径划分开,意在一层一层创建目录 这里可能会出现乱序 正确的代码 先换一下分隔符 再一次生成所有路径 2.ftpClient 需要指定被动模式才能绕开端口限制 有些 服务器没有打开指定端口,上传文件会出现 425 Canno…...
leetcode0155. 最小栈-medium
1 题目:最小栈 官方标定难度:中 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop() 删…...
操作系统 3.6-内存换出
换出算法总览 页面置换算法 FIFO(先进先出): 最简单的页面置换算法,淘汰最早进入内存的页面。 优点:实现简单。 缺点:可能会导致Belady异常,即增加内存反而降低性能。如果刚换入的页面马上又要…...
Python中的数值运算函数及math库详解
文章目录 Python中的数值运算函数及math库详解一、内置数值运算函数1. 基本数值运算函数2. 类型转换函数3. 进制转换函数 二、math库中的数学常数三、math库常用数学函数1. 数论与表示函数2. 幂函数与对数函数3. 三角函数4. 角度转换5. 双曲函数6. 特殊函数 四、实际应用示例1.…...
安卓开发提示Android Gradle plugin错误
The project is using an incompatible version (AGP 8.9.1) of the Android Gradle plugin. Latest supported version is AGP 8.8.0-alpha05 See Android Studio & AGP compatibility options. 改模块级 build.gradle(如果有独立配置):…...
《Uniapp-Vue 3-TS 实战开发》一键授权登录
在使用 UniApp 结合 Vue 3 和 TypeScript 开发时,实现一键授权登录功能通常涉及到调用微信小程序的授权接口(如 wx.getUserProfile 或 wx.login)来获取用户信息和登录凭证,然后将这些信息发送到后端进行验证和处理。以下是一个完整的实现示例,展示如何在 UniApp 中实现一键…...
Windows 图形显示驱动开发-WDDM 1.2功能_WDDM 1.2 和 Windows 8
简介 WDDM 是随 Windows Vista 一起引入的,以取代 Windows XP 或 Windows 2000 显示驱动程序模型 (XDDM) 。 随着 Windows Vista 中的引入,WDDM 体系结构提供了启用新功能的功能,例如桌面组合、增强的容错、视频内存管理器、GPU 计划程序、D…...
155.最小栈
1.题目解析 题目是让我们设计一个栈,它于STL库中栈的区别是支持检索到了最小元素的栈但是需要时间复杂度为常数,我们很容易想到的是记录最小值。但是如果中途删除的话最小值可能失效,所以我们选择用2个栈来实现。 2.算法原理 我们创建2个栈…...
[C语言笔记]10、字符串
前言: C语言的相关知识点的笔记均在下面的专栏链接中,欢迎订阅! c语言笔记_1zero10的博客-CSDN博客 10-1字符数组与字符串 1、字符数组就是一个数组,数组的每一个元素都是一个字符 首先利用字符数组,回顾以前学过…...
Windows系统备份和还原点
一、简介 系统的还原点存储了当前系统的主要状态,包括一些关键的配置信息和参数(包括注册表、系统服务设置、设备驱动程序设置等)。将此时的状态进行备份,在系统发生故障时,可以还原到此还原点的状态中,这…...
内联汇编知识点earlyclobber=
arm64内联汇编格式: asm volatile ("汇编指令1\n\t""汇编指令2\n\t""汇编指令3": 输出操作数列表: 输入操作数列表: 可能被修改的寄存器列表 );示例1:简单的寄存器操作 uint64_t add_numbers(uint64_t a, uint64_t b) {…...
修改ESP32CAM的示例CameraWebServer里的camera_index.h的方法
在这里,默认你已经会使用Arduino IDE或者PlatformIO通过烧录底座对ESP32CAM(如下图)进行烧录,并能通过浏览器对其进行访问。 我们访问到下图的界面时,不禁有个疑问,这个界面是如何生成的,如果我…...
Python学习笔记(二)(字符串)
文章目录 编写简单的程序一、标识符 (Identifiers)及关键字命名规则:命名惯例:关键字 二、变量与赋值 (Variables & Assignment)变量定义:多重赋值:变量交换:(很方便哟) 三、输入与输出 (In…...
ViewModel vs AndroidViewModel:核心区别与使用场景详解
在 Android 的 MVVM 架构中,ViewModel 和 AndroidViewModel 都是用于管理 UI 相关数据的组件,但二者有一些关键区别: 1. ViewModel 基本用途:用于存储和管理与 UI 相关的数据,生命周期与 Activity/Fragment 解耦&…...
Windows环境下 全屏显示某个字符串
case WM_PAINT: {PAINTSTRUCT ps;HDC hdc BeginPaint(hWnd, &ps);// 获取完整客户区尺寸RECT rc;GetClientRect(hWnd, &rc);// 全屏时:整个窗口作为显示区域RECT displayRect rc;// 纯黑背景FillRect(hdc, &displayRect, (HBRUSH) GetStockObject(BLA…...
禅道MCP Server开发实践与功能全解析
一、简介 1、MCP Server核心定义 MCP Server(Meta Command Protocol Server)是一种基于客户端-服务器架构的轻量级服务程序,采用统一的mcp协议格式,通过连接多样化数据源和工具为AI应用提供扩展能力。它作为中间层,实…...
Vue.js组件安全开发实战:从架构设计到攻防对抗
目录 开篇总述:安全视角下的Vue组件开发新范式 一、Vue.js组件开发现状全景扫描 二、安全驱动的Vue组件创新架构 三、工程化组件体系构建指南 四、深度攻防对抗实战解析 五、安全性能平衡策略 结语:安全基因注入前端开发的未来展望 下期预告&…...
代发考试战报:4月份最新锐捷RCNA RCNP 考试通过战报
锐捷 RCNA云计算 R4111 考试通过,RCNA 安全 R3111 考试通过,RCNP无线 R5211考试通过,RCNP路由考试通过,等等 成绩单战报...
卫星互联网技术加速发展,遨游卫星电话为生命添一份“保险”
卫星互联网通过高中低轨卫星组网,实现了对海洋、沙漠、极地等“信息盲区”的全域覆盖。据国际电信联盟(ITU)统计,截至2024年底,全球在轨卫星数量已突破1万颗,其中我国“千帆星座”“GW星座”等低轨计划加速…...
文件IO7(中文字库的原理与应用/目录检索原理与应用/并发编程的原理与应用)
中文字库的原理与应用 ⦁ 基本概念 一般在项目中都会显示汉字,都采用中文简体字符集,计算机早期只有ANSI组织设计的ANSII码,其实也属于字符集,这套字符集并未收录中文,只收录256个字符。 所以后期中国国家标准总局设…...
达梦数据库-学习-16-常用SQL记录(持续更新)
目录 一、环境信息 二、介绍 三、查询SQL 1、数据库的总使用空间大小 2、各个表空间的总大小 3、使用空间最大的50个对象 4、使用率最高的50个sequence 5、使用空间率最高的50个自增列 6、定位锁 7、支持HINT 8、表数据页使用率 9、备份文件相关信息 10、初始化库参…...
使用setTimeout模拟setInterval
const SECOND 1000 const MINUTE 60 * SECOND const HOUR 60 * MINUTE const DAY 24 * HOUR/*** description: 根据传入的毫秒值格式化为时间* param {*} time:毫秒值* returns:{days, hours, minutes, seconds, milliseconds}*/ function parseTime…...
Cesium实现鹰眼图和主地图联动
本文是vuets实现的,想要转为react,只需要修改以下几部分内容 1. 将 reactive 定义的数据直接改写为 let定义 2. 将 watch 监听的内容改成对应的监听写法 3. 将 ref 定义的字段改写为对应的写法 该模块实现的功能: 通过点击鹰眼图的某一位置…...
文件IO6(开机动画的显示原理/触摸屏的原理与应用)
开机动画的显示原理 ⦁ 基本原理 一般电子产品在开机之后都会加深用户印象,一般开机之后都会播放一段开机动画(视频、GIF…),不管哪种采用形式,内部原理都是相同,都是利用人类的眼睛的视觉暂留效应实现的…...
Linux内核分页——线性地址结构
每个进程通过一个指针(即进程的mm_struct→pgd)指向其专属的页全局目录(PGD),该目录本身存储在一个物理页框中。这个页框包含一个类型为pgd_t的数组,该类型是与架构相关的数据结构,定义在<as…...
每日算法-250411
这是我今天的 LeetCode 刷题记录和心得,主要涉及了二分查找的应用。 3143. 正方形中的最多点数 题目简述: 思路 本题的核心思路是 二分查找。 解题过程 为什么可以二分? 我们可以对正方形的半边长 len 进行二分。当正方形的半边长 len 越大时&…...
虚幻基础:碰撞帧运算
能帮到你的话,就给个赞吧 😘 文章目录 碰撞碰撞盒线段检测 帧运算:每个程序流就是一帧的计算结果速度过快时(10000),导致每帧移动过大(83),从而导致碰撞盒错过而没有碰撞速度快的碰撞要用线段检测 碰撞 碰撞盒 线段检…...
AI反检测如何在TikTok养号中发挥关键作用?
在 TikTok 这个全球性的短视频平台上,账号的养成和管理成为了创作者和品牌不可忽视的一环。随着平台对内容和账号行为的监管越来越严格,传统的养号方法已经难以适应新的挑战。在这一背景下,AI 反检测技术应运而生,它通过模拟人类行…...
鸿蒙案例---生肖抽卡
案例源码: Zodiac_cards: 鸿蒙生肖抽奖卡片 效果演示 初始布局 1. Badge 角标组件 此处为语雀内容卡片,点击链接查看:https://www.yuque.com/kevin-nzthp/lvl039/rccg0o4pkp3v6nua 2. Grid 布局 // 定义接口 interface ImageCount {url:…...