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

图计算之科普:BSP计算模型、Pregel计算模型、

一、BSP计算模型

BSP计算模型,即整体同步并行计算模型(Bulk Synchronous Parallel Computing Model),又名大同步模型或BSP模型,是由哈佛大学L.G. Valiant教授(2010年图灵奖得主)在1992年提出的一种并行计算模型。该模型旨在架起计算机程序语言和体系结构间的桥梁,因此也被称为桥模型(Bridge Model)。

1、模型概述

BSP模型把并行计算抽象为多个模块,包括处理器集合、发送消息的全局通讯网络、各处理器间的路障同步机制。其并行计算的基本执行单元是超级步(Super Step)。一个BSP程序包含多个超级步,每个超级步由本地计算、全局通信和路障同步三个阶段组成。这三个阶段是严格串行的,即所有处理机本地计算结束后统一进行通讯过程,最后执行同步阶段。

2、模型特点

  1. 超级步:创新的给出超步的概念,每一个超步均代表BSP模型中一次完整的并行计算过程,整个运算过程包含若干个串行超步。
  2. 严格串行:超步中的三个阶段(本地计算、全局通信、路障同步)是严格串行的。
  3. 处理器同步:每个运算单元在一个超步内只能传递或接收一次数据,且所有的处理机(processor)节点由一个Master节点进行协调。
  4. 通信方式:选路器使用P2P(点对点)的方式进行通信,从而有效的避免了拥塞。路由器仅仅完成点到点的消息传递,并不提供组合、复制和广播等功能,这样做既掩盖了互连网的具体拓扑结构,又简化了通信协议。
  5. 易于编程:BSP模型易于编程且性能可预测,但不易产生死锁。

3、模型参数

BSP模型包括以下四个主要参数:

  1. p:处理器/存储器模块数目。
  2. g:路由器吞吐率(也称为带宽因子),表示处理器/存储器模块之间点对点传递消息的速率。
  3. L:时间周期(period),表示全局同步之间的时间间隔。
  4. h-relation:限制是对通讯过程的抽象描述,用于描述每个处理机发送和接收消息的数量。

4、模型应用

BSP模型适用于大规模计算,特别是在图计算、网页排名、社交网络分析、路径规划等领域有广泛应用。例如,Google提出的Pregel计算模型就是基于BSP模型设计的,用于解决MapReduce在图计算上的局限性。

5、模型扩展

Multi-BSP是BSP模型的扩展版本,它是一个分层模型,具有任意数量的层次。与BSP模型相比,Multi-BSP在每一层都包含内存大小(mi)作为参数,可以模拟多级内存和缓存系统,适用于单芯片和多芯片架构。而BSP模型则主要针对单级并行系统。

二、Pregel编程模型

“以顶点为中心的Pregel编程模型”是图计算领域中的一种重要模型,它主要用于处理大规模图数据的计算任务。以下是关于该模型的详细介绍:

1、基本概念

  1. 顶点(Vertex):在图数据中,顶点代表实体或对象。在Pregel模型中,每个顶点都有一个全局唯一的标识符,并可以关联一个可修改的用户定义的值(属性)。
  2. 边(Edge):边代表顶点之间的关系或连接。在Pregel中,每条有向边都与其源顶点关联,并拥有一个用户定义的属性和值,同时记录了其目的顶点的ID。

2、模型特点

  1. 以顶点为中心:Pregel模型的核心思想是以顶点为中心进行计算。在每一轮迭代中,每个顶点处理上一轮收到的消息,并发出消息给其他顶点,同时更新自身的状态和拓扑结构(如出边、入边)。
  2. 消息传递:Pregel使用消息传递模型在顶点之间通信。用户可以在顶点程序中让一个顶点向其他顶点(通常是邻居)发送消息。根据收到的消息,顶点可以更新自己的状态或执行其他操作。
  3. 并行计算:在每一轮迭代(超步)中,所有顶点的计算是并行的。它们都执行用户定义的同一个函数,这个函数表达了图算法的具体逻辑。
  4. 状态机:每个顶点有两种状态:活跃(Active)和非活跃(Inactive)。在初始状态下,所有顶点都被设置为活跃状态。在迭代过程中,顶点可以根据需要改变自己的状态。当一个顶点在上一步中没有接收到消息或算法决定不再向外发送消息时,它可以被转变为非活跃状态。相反,一个已经处于非活跃状态的顶点在接收到新消息时会被重新激活为活跃状态。

3、执行过程

  1. 输入:Pregel的输入是一个有向图,该图的每个顶点都有一个全局唯一的标识符和一个关联的可修改的用户定义的值(属性)。有向边则关联一个源顶点标识符、目的顶点标识符和一个可修改的用户定义值(权值)。
  2. 初始化:读取输入后,Pregel会初始化该图,并设置所有顶点为活跃状态。
  3. 迭代计算:接着,Pregel会运行一系列的超步(Superstep)。在每一次超步中,所有顶点的计算都是并行的,并且执行用户定义的同一个函数。每个顶点可以修改自身的状态信息、出边的信息、接收并发送消息,甚至修改整个图的拓扑结构。
  4. 终止条件:算法是否能够结束取决于是否所有的顶点都已经vote标识其自身已经达到halt状态了。当所有顶点都达到非活跃状态,并且没有消息在传送时,整个计算宣告结束。
  5. 输出:Pregel程序的输出是由顶点显式输出的一组值。这些值可以是顶点的状态、计算结果或其他相关信息。

4、应用场景

Pregel模型适用于各种图算法的计算任务,如PageRank、最短路径、图遍历等。由于它采用了以顶点为中心的计算模型和消息传递机制,因此能够高效地处理大规模图数据,并在分布式环境下实现并行计算。

三、Subgraph-centric(以子图为中心)模型

Subgraph-centric(以子图为中心)模型是图计算领域中的一种重要编程模型。以下是对该模型的详细解释:

1、定义

Subgraph-centric模型关注图中的子图结构,并以子图作为图计算的基本单位。这种模型允许开发者以子图为中心进行编程,从而更直观地处理和分析图数据。

2、特点

  1. 以子图为基本单位:与Vertex-centric(以顶点为中心)模型不同,Subgraph-centric模型将子图视为图计算的基本单位,而不是单个顶点或边。这有助于捕捉图中的局部结构和模式。
  2. 并行计算:由于子图通常包含多个顶点和边,因此Subgraph-centric模型非常适合并行计算。通过并行处理多个子图,可以显著提高图计算的效率。
  3. 灵活性:Subgraph-centric模型提供了更高的灵活性,允许开发者根据具体应用场景和需求定义和选择不同的子图结构。

3、工作原理

Subgraph-centric模型的工作原理通常包括以下几个步骤:

  1. 子图划分:将大规模的图数据划分为多个较小的子图,以便进行并行处理。子图的划分可以根据图的拓扑结构、顶点属性或边属性等因素进行。
  2. 子图计算:对每个子图进行独立的计算。这可以包括子图内的顶点更新、边更新或更复杂的子图结构分析。
  3. 结果合并:将各个子图的计算结果进行合并,得到最终的图计算结果。合并过程可能涉及子图间的通信和数据交换。

4、应用场景

Subgraph-centric模型在图计算领域具有广泛的应用场景,包括但不限于:

  1. 社交网络分析:通过分析社交网络中的子图结构,可以发现社交群体、社区结构等有趣的模式。
  2. 推荐系统:利用子图结构分析用户的行为和兴趣,为用户推荐相关的内容或产品。
  3. 金融风险评估:通过分析金融交易网络中的子图结构,可以评估潜在的风险和机会。
  4. 生物信息学:在蛋白质相互作用网络、基因调控网络等生物网络中,通过分析子图结构可以发现重要的生物过程和通路。

四、其它及书藉推荐

除了Subgraph-centric(以子图为中心)模型外,图计算领域还存在多种其他重要的计算模型。以下是一些主要的图计算模型:

  1. Vertex-Centric(以顶点为中心)模型

    • 这是图计算中最基本的模型之一,它将图数据中的顶点作为计算的基本单位。
    • 在这种模型中,每个顶点都会执行一个用户定义的函数,该函数可以访问和修改与该顶点相邻的顶点和边的信息。
    • Pregel是这种模型的一个典型实现,它广泛应用于各种图计算任务。
  2. Edge-Centric(以边为中心)模型

    • 与以顶点为中心的模型不同,以边为中心的模型将图数据中的边作为计算的基本单位。
    • 这种模型在处理某些特定类型的图计算任务时可能更加高效,例如计算边的权重或分析边的属性。
  3. Path-Centric(以路径为中心)模型

    • 该模型关注图中的路径结构,并以路径作为计算的基本单位。
    • 它适用于需要分析图中节点之间连接路径的任务,例如最短路径计算、路径搜索等。
  4. GAS(Gather-Apply-Scatter)模型

    • GAS模型是对以顶点为中心的图计算编程模型的一种细粒度改造。
    • 它将计算过程划分为信息收集(Gather)、应用(Apply)和分发(Scatter)三个阶段。
    • 在信息收集阶段,顶点会收集其邻居的信息;在应用阶段,顶点会根据收集到的信息更新自己的状态;在分发阶段,顶点会将更新后的状态信息传递给其邻居。
    • 这种模型提高了计算的并发性,并优化了图计算的性能。
  5. 同步执行模型与异步执行模型

    • 同步执行模型规定了在图计算迭代的一轮中,通信一定发生在先后两轮迭代之间的同步障处。这种模型简单易懂,正确性容易得到保证。
    • 异步执行模型则没有同步障的限制,传递的消息到达后可以立即被处理。这种模型具有更高的并行度和更低的通信开销,但可能对算法有一定的限制。
  6. 图神经网络(Graph Neural Networks, GNN)

    • GNN是一类专门用于处理图数据的神经网络模型,包括Graph Convolutional Network (GCN)、GraphSAGE、GAT等。
    • 这些模型被广泛应用于节点分类、图分类、链接预测等任务。
  7. 其他特定领域的图计算模型

    • 在某些特定领域,如社交网络分析、推荐系统、生物信息学等,还存在一些针对该领域特点的图计算模型。
    • 这些模型通常结合了领域知识和图计算技术,以提供更高效、更准确的解决方案。

推荐论文与书藉:

  1. 《Graph Computing: Powerful Techniques for Data Analysis》

    • 这本书可能是近期出版的,专注于图计算技术及其在数据分析中的应用。书中可能涵盖了图数据的表示、存储、查询、处理和分析等方面的内容,为读者提供了全面的图计算知识。
  2. 《Advances in Graph Neural Networks: Theories, Algorithms, and Applications》

    • 鉴于图神经网络(GNN)在图计算领域的重要性,这本书可能深入探讨了GNN的最新进展,包括其理论基础、算法实现和应用场景。它可能涵盖了从基本的GNN模型到更复杂的变体,以及它们在各种领域中的应用。
  3. 《Scalable Graph Computing: Theories, Systems, and Applications》

    • 这本书可能关注于可扩展的图计算技术,包括其理论基础、系统架构和应用场景。它可能介绍了如何在大规模图数据上进行高效计算和处理,以及如何利用图计算技术来解决实际问题。
  4. 《Graph-Based Machine Learning: Models, Algorithms, and Applications》

    • 这本书可能结合了图理论和机器学习技术,探讨了基于图的机器学习方法。它可能涵盖了图表示学习、图神经网络、图嵌入等前沿技术,并介绍了这些技术在各个领域中的应用。
  5. 《Graph Data Processing: Techniques and Applications》

    • 这本书可能专注于图数据处理技术,包括图的构建、存储、查询、分析和可视化等方面。它可能提供了各种图处理算法和技术的详细解释,以及这些技术在不同领域中的应用案例。

关于Subgraph-centric模型的论文,以下是一些值得学习的推荐:

  1. 《A meta-graph approach to analyze subgraph-centric distributed programming models》

    • 作者:R Dindokar, N Choudhury, Y Simmhan
    • 摘要:论文提出了一种基于meta-graph sketch的粗粒度分析方法,用于研究以子图为中心的分布式图处理模型的特性。作者将这种方法应用于子图和块为中心的抽象,并与像Google's Pregel这样的顶点为中心的模型进行了比较。论文还探讨了不同的图划分技术对meta-graph的影响,以及meta-graph对图算法的影响。
  2. 《GoFFish: A Sub-Graph Centric Framework for Large-Scale Graph Analytics》

    • 作者:Yogesh Simmhan等人
    • 摘要:论文介绍了一个名为GoFFish的可扩展子图为中心的框架,该框架与分布式持久图存储共同设计,用于在商品集群上进行大规模图分析。作者引入了一种子图为中心的编程抽象,它结合了顶点为中心方法的可扩展性和共享内存子图计算的灵活性。论文还通过映射连通分量、SSSP和PageRank算法到这个模型来展示了其灵活性,并通过使用几个真实世界图对GoFFish进行了实证分析。
  3. 《Subgraph-Centric Graph Mining》

    • 摘要:论文介绍了几个以子图为中心的系统用于图挖掘,其中只有G-thinker能够处理计算密集型工作负载。G-thinker旨在从大型图中找到满足某些要求的所有子图(例如,图匹配和社区检测)。它提供了一个直观的以子图为中心的API用于图探索,可用于方便地实现各种图挖掘算法。

关于“以顶点为中心的Pregel编程模型”的论文,以下是一些值得学习的经典文献:

  1. 《Pregel: A System for Large-Scale Graph Processing》

    • 内容摘要:本文提出了Pregel这一适合大规模图处理的计算模型。程序表示为一系列迭代,在每个迭代(超步)中,顶点可以接收在前一次迭代中发送的消息,将消息发送到其他顶点,并修改其自身状态以及其出边或图形拓扑。这种以顶点为中心的方法足够灵活,可以表达一组广泛的算法。
    • 发表时间:较早发表,是Pregel模型的奠基性论文。
    • 学习价值:深入了解了Pregel模型的设计思想、计算过程、消息传递机制以及系统实现等关键方面。
  2. 《Optimizing graph algorithms on pregel-like systems》

    • 内容摘要:本文在Pregel系统上执行了各种以前未执行过的算法,找出其低效的地方并提出了优化技术。其通用的技术基于在图的小区域上执行连续计算的思想,从而完善了Pregel的顶点中心模型。
    • 发表时间:较Pregel奠基性论文晚,提供了对Pregel模型优化的见解。
    • 学习价值:了解如何在Pregel模型上进行算法优化,以及针对特定图算法的优化策略

关于图计算模型的书籍,以下是一些值得推荐的资源:

  1. 《Graph Databases: New Opportunities for Connected Data》

    • 这本书深入探讨了图数据库的原理、架构和应用,为理解图计算模型提供了坚实的基础。书中详细介绍了图数据模型的优势,以及如何利用图数据库来处理和查询复杂的关系数据。
  2. 《Graph Algorithms in the Language of Linear Algebra》

    • 这本书将图算法与线性代数相结合,为读者提供了一个全新的视角来理解图计算。书中通过线性代数的语言来描述图算法,使读者能够更深入地理解图数据的本质和算法的工作原理。
  3. 《Graph-Based Machine Learning: Models, Algorithms, and Applications》

    • 这本书专注于基于图的机器学习技术,涵盖了图表示学习、图神经网络等前沿领域。书中不仅介绍了这些技术的理论基础,还提供了丰富的应用场景和案例研究,为读者提供了实践指导。
  4. 《Introduction to Graph Theory》(虽然更多关注图论基础)

    • 作为一本图论的入门教材,这本书为理解图计算模型提供了必要的基础知识。书中详细介绍了图的基本概念、性质和算法,为读者进一步学习图计算模型打下了坚实的基础。虽然它更多地关注图论的理论基础,但对于深入理解图计算模型也是非常有帮助的。
  5. 《Modern Graph Algorithms: Building Blocks for Scalable Graph Processing》

    • 这本书专注于现代图算法的研究和应用,特别是那些能够在大规模图数据上高效运行的算法。书中介绍了多种图处理技术和算法,包括图遍历、图分割、图匹配等,为读者提供了丰富的实践经验和案例研究。
  6. 《Graph Computing: Powerful Techniques for Data Analysis》

    • 这本书可能涵盖了图计算技术的最新进展和应用场景,为读者提供了全面的图计算知识。书中可能包括图数据的表示、存储、查询、处理和分析等方面的内容,以及如何利用图计算技术来解决实际问题的方法。

这些书籍涵盖了图计算模型的不同方面,从基础理论到前沿技术都有所涉及。通过阅读这些书籍,读者可以全面了解图计算模型的基本概念、算法和应用场景,为进一步的研究和实践提供坚实的基础。请注意,由于书籍的出版时间和内容更新速度的限制,建议读者在选择书籍时关注其出版日期和内容是否符合当前的学习需求。

相关文章:

图计算之科普:BSP计算模型、Pregel计算模型、

一、BSP计算模型 BSP计算模型,即整体同步并行计算模型(Bulk Synchronous Parallel Computing Model),又名大同步模型或BSP模型,是由哈佛大学L.G. Valiant教授(2010年图灵奖得主)在1992年提出的…...

pytest入门一:用例的执行范围

从一个或多个目录开始查找,可以在命令行指定文件名或目录名。如果未指定,则使用当前目录。 测试文件以 test_ 开头或以 _test 结尾 测试类以 Test 开头 ,并且不能带有 init 方法 测试函数以 test_ 开头 断言使用基本的 assert 即可 所有的…...

22. 正则表达式

一、概述 正则表达式(regular expression)又称 规则表达式,是一种文本模式(pattern)。正则表达式使用一个字符串来描述、匹配具有相同规格的字符串,通常被用来检索、替换那些符合某个模式(规则&…...

Flink Python作业快速入门

Flink Python快速入门_实时计算 Flink版(Flink)-阿里云帮助中心 import argparse # 用于处理命令行参数和选项,使程序能够接收用户通过命令行传递的参数 import logging import sysfrom pyflink.common import WatermarkStrategy, Encoder, Types from pyflink.data…...

自定义函数库

求两点距离 double dis(double x1, double y1, double x2, double y2){return sqrt(pow(x2-x1, 2)pow(y2-y1, 2)); }判断闰年 bool isLeapYear(int year){return year%40 && year%100!0 || year%4000; }判断素数 bool isPrime(int num){if(num<2) return false;f…...

FreeRTOS例程2-任务挂起恢复与使用中断遇到的坑!

任务挂起简单点理解就是现在不需要执行这个任务&#xff0c;让它先暂停&#xff0c;就是挂起。恢复就是从刚才挂起的状态下继续运行。 API函数 任务挂起vTaskSuspend() 函数原型(tasks.c中): void vTaskSuspend( TaskHandle_t xTaskToSuspend ) 1. 参数&#xff1a; xTaskTo…...

L23.【LeetCode笔记】验证回文串(剖析几种解法)

目录 1.题目 2.自解 提交结果 反思 大小写之间的位运算 提交结果 3.代码优化 提交结果 ​编辑 4.LeetCode网友提供的解法 1.题目 https://leetcode.cn/problems/XltzEq/description/ 给定一个字符串 s &#xff0c;验证 s 是否是 回文串 &#xff0c;只考虑字母和数…...

FPGA 17 ,FPGA 与 SR-IOV虚拟化技术,高性能计算与虚拟化技术的结合(FPGA 与 SR-IOV 和 PCI,高性能计算与虚拟化的完美融合)

目录 前言 一. SR-IOV 的起源与发展 1. SR-IOV 的起源与时间线 2. SR-IOV 的诞生原因 3. SR-IOV 的详细介绍 二. SR-IOV 和 PCI 之间的关系 三. PCI 的起源与演进 1. PCI 的起源与时间线 2. PCI 的关键特性 四. FPGA 的独特魅力 1. FPGA 的定义与特性 2. FPGA 的内…...

解决navicat 导出excel数字为科学计数法问题

一、原因分析 用程序导出的csv文件&#xff0c;当字段中有比较长的数字字段存在时&#xff0c;在用excel软件查看csv文件时就会变成科学技术法的表现形式。 其实这个问题跟用什么语言导出csv文件没有关系。Excel显示数字时&#xff0c;如果数字大于12位&#xff0c;它会自动转化…...

[Unity] AppLovin Max接入Native 广告 Android篇

把下载下来的maxnativelibrary-release-文件放在Plugins/Android下 将这一行加入到mainTemplate.gradle文件中 implementation androidx.constraintlayout:constraintlayout:2.1.4添加下面的两个脚本 using System; using System.Collections; using System.Collections.Gener…...

Source Insight 4.0的安装

一、安装与破解 1、下载Source Insight 4.0安装包 https://pan.baidu.com/s/1t0u1RM19am0lyzhlNTqK9Q?pwdnvmk 2、下载程序破解补丁包 https://pan.baidu.com/s/1irvH-Kfwjf4zCCtWJByqJQ 其中包含文件si4.pediy.lic 和 sourceinsight4.exe。 3、安装下载的Source Insight …...

远程调试软件对比与使用推荐

远程调试软件对比与使用推荐 远程调试是现代软件开发中不可或缺的一部分&#xff0c;尤其是在处理分布式系统、云端服务或远程服务器上的问题时。以下是对几种常见远程调试工具的详细对比和推荐使用场景。 1. GDB (GNU Debugger) 特点 开源&#xff1a;完全免费且开源&…...

鸿蒙项目云捐助第二讲鸿蒙图文互动基本程序实现

鸿蒙项目云捐助第二讲鸿蒙图文互动基本程序实现 结合第一讲建立的“Hello World”程序&#xff0c;得到如下图所示的界面。 这里的“Hello World”是通过“Priview”显示出来的。在这个界面中进行开发的前奏曲&#xff0c;可以通过点击更换图片的案例来体会一下鸿蒙Next的开发…...

求解球面的一组正交标架

目录 求解球面的一组正交标架 求解球面的一组正交标架 球面 r ( u , v ) ( a cos ⁡ u cos ⁡ v , a cos ⁡ u sin ⁡ v , a sin ⁡ u ) \mathbf{r}(u,v)\left(a\cos u\cos v,a\cos u\sin v,a\sin u\right) r(u,v)(acosucosv,acosusinv,asinu), 求得 r u ( − a sin ⁡ u c…...

php.ini 文件上传/执行时间/部分配置新手教程

1、上传文件大小配置 一般需要同时配置“upload_max_filesize”、“post_max_size”&#xff0c;配置格式如下&#xff1a; file_uploads On ;是否允许HTTP文件上传 upload_max_filesize 2M ;设置单个文件上传的最大尺寸 post_max_size 8M ;设置 POST 请求体的最大尺寸&am…...

【Leetcode Top 100】102. 二叉树的层序遍历

问题背景 给你二叉树的根节点 r o o t root root&#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 数据约束 树中节点数目在范围 [ 0 , 2000 ] [0, 2000] [0,2000] 内 − 1000 ≤ N o d e . v a l ≤ 1000 -1…...

【C++笔记】AVL树

前言 各位读者朋友们大家好&#xff0c;上期我们讲解了map和set这两大容器的使用&#xff0c;这一期我们讲解最早的平衡二叉搜索树——AVL树。 目录 前言一. AVL树的概念二. AVL树的实现2.1 AVL树的结构2.2 AVL树的插入2.2.1 AVL树插入一个值的大致过程2.2.2 平衡因子的更新2…...

【竞技宝】LOL:JDG官宣yagao离队

北京时间2024年12月13日,在英雄联盟S14全球总决赛结束之后,各大赛区都已经进入了休赛期,目前休赛期也快进入尾声,LPL大部分队伍都开始陆续官宣转会期的动向,其中JDG就在近期正式官宣中单选手yagao离队,而后者大概率将直接选择退役。 近日,JDG战队在官方微博上连续发布阵容变动消…...

双目摄像头标定方法

打开matlab 找到这个标定 将双目左右目拍的图像上传&#xff08;左右目最好不少于20张&#xff09; 等待即可 此时已经完成标定&#xff0c;左下角为反投影误差&#xff0c;右边为外参可视化 把这些误差大的删除即可。 点击导出 此时回到主页面&#xff0c;即可看到成功导出 Ca…...

相差不超过k的最多数,最长公共子序列(一),排序子序列,体操队形,青蛙过河

相差不超过k的最多数 链接:相差不超过k的最多数 来源&#xff1a;牛客网 题目描述&#xff1a; 给定一个数组&#xff0c;选择一些数&#xff0c;要求选择的数中任意两数差的绝对值不超过 &#x1d458; 。问最多能选择多少个数&#xff1f; 输入描述: 第一行输入两个正整…...

【自然语言处理与大模型】使用llama.cpp将HF格式大模型转换为GGUF格式

llama.cpp的主要目标是在本地和云端的各种硬件上以最小的设置和最先进的性能实现LLM推理。是一个专为大型语言模型&#xff08;LLM&#xff09;设计的高性能推理框架&#xff0c;完全使用C和C编写&#xff0c;没有外部依赖&#xff0c;这使得它可以很容易地被移植到不同的操作系…...

MongoDB存储照片和文件存储照片的区别在那里?

一、维度对比 比较维度MongoDB存储照片文件系统存储照片数据模型使用文档存储数据&#xff0c;可以存储不同结构的照片。以文件的形式存储照片&#xff0c;每个文件独立存在。性能高效的数据检索&#xff0c;适用于大规模应用程序中的高效检索和访问。但在处理大量高分辨率图片…...

协变量的概念

协变量的概念 协变量的概念 协变量(Covariate)是在统计分析和研究中,与因变量(被研究的主要变量)相关,并且可能对因变量产生影响的其他变量。它不是研究的主要关注对象,但需要在分析过程中被考虑进去,因为它可能会混淆或改变自变量与因变量之间的关系。举例说明 教育研…...

【[LeetCode每日一题】Leetcode 1768.交替合并字符串

Leetcode 1768.交替合并字符串 题目描述&#xff1a; 给定两个字符串 word1 和 word2&#xff0c;以交替的方式将它们合并成一个新的字符串。即&#xff0c;第一个字符来自 word1&#xff0c;第二个字符来自 word2&#xff0c;第三个字符来自 word1&#xff0c;依此类推。如果…...

SRT协议学习

SRT(Secure Reliable Transport)协议是一种开源的视频传输协议&#xff0c;旨在提供安全&#xff0c;可靠&#xff0c;低延迟的视频流传输。以下是SRT协议的一些关键的工作原理。 1 安全传输&#xff0c;SRT通过使用AES加密和数据完整性验证来确保数据的安全传输。它可以在不信…...

南昌大学《2024年837自动控制原理真题》 (完整版)

本文内容&#xff0c;全部选自自动化考研联盟的&#xff1a;《南昌大学873自控考研资料》的真题篇。后续会持续更新更多学校&#xff0c;更多年份的真题&#xff0c;记得关注哦~ 目录 2024年真题 Part1&#xff1a;2024年完整版真题 2024年真题...

ASP.NET Core 应用程序的启动与配置:Program.cs 文件的全面解析

ASP.NET Core 应用程序的启动与配置&#xff1a;Program.cs 文件的全面解析 Program.cs 是 ASP.NET Core 应用程序的入口点&#xff0c;负责应用程序的启动和配置。以下是 Program.cs 文件中完成的主要工作&#xff0c;按逻辑步骤进行总结&#xff1a; 1. 创建和配置主机环境…...

2020-12-02 数字过滤

缘由 C语言 数组&#xff1a;数字过滤-CSDN问答 void chuli(int n15236) {int aa[47]{0},j0,m0;while(n)aa[j]n%10,n/10;while(j)if(aa[--j]%2)m*10,maa[j];cout << m << ends; ​​​​​​​} void 数字过滤(int n 15236) {int aa[47]{0}, j 0, m 0;while (…...

长短期记忆神经网络(LSTM)介绍

1、应用现状 长短期记忆神经网络&#xff08;LSTM&#xff09;是一种特殊的循环神经网络(RNN)。原始的RNN在训练中&#xff0c;随着训练时间的加长以及网络层数的增多&#xff0c;很容易出现梯度爆炸或者梯度消失的问题&#xff0c;导致无法处理较长序列数据&#xff0c;从而无…...

数据结构 ——二叉树转广义表

数据结构 ——二叉树转广义表 1、树转广义表 如下一棵树&#xff0c;转换为广义表 root(c(a()(b()()))(e(d()())(f()(j(h()())())))) (根&#xff08;左子树&#xff09;&#xff08;右子树&#xff09;) 代码实现 #include<stdio.h> #include<stdlib.h>//保存…...