当前位置: 首页 > 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年提出的…...

Kafka Stream实战教程

Kafka Stream实战教程 1. Kafka Streams 基础入门 1.1 什么是 Kafka Streams Kafka Streams 是 Kafka 生态中用于 处理实时流数据 的一款轻量级流处理库。它利用 Kafka 作为数据来源和数据输出,可以让开发者轻松地对实时数据进行处理,比如计数、聚合、…...

数据仓库-基于角色的权限管理(RBAC)

什么是基于角色的用户管理? 基于角色的用户管理(Role-Based Access Control,简称RBAC)是通过为角色赋予权限,用户通过成为适当的角色而得到这些角色的权限。 角色是一组权限的抽象。 使用RBAC可以极大简化对权限的管理。 什么是RBAC模型&…...

如何使用ERC404协议

ERC404 ERC404协议的性质 ERC404不是一个开发代码工具包,而是一种智能合约标准规范。它就像是一份蓝图或者规则手册,规定了在以太坊区块链上开发特定智能合约应该遵循的接口、函数和事件等规则。如何使用ERC404协议 定义合约接口 首先,在开发智能合约时,要根据ERC404标准定…...

Spring Boot 工程分层实战(五个分层维度)

1、分层思想 计算机领域有一句话:计算机中任何问题都可通过增加一个虚拟层解决。这句体现了分层思想重要性,分层思想同样适用于Java工程架构。 分层优点是每层只专注本层工作,可以类比设计模式单一职责原则,或者经济学比较优势原…...

IIS部署程序https是访问出现403或ERR_HTTP2_PROTOCOL_ERROR

一、说明 在windows server 2016中的IIS程序池里部署一套系统,通过https访问站点,同时考虑到安全问题以及防攻击等行为,就用上了WAF云盾功能,能有效的抵挡部分攻击,加强网站的安全性和健壮性。 应用系统一直能够正常…...

【深度学习入门】深度学习介绍

1.1 深度学习介绍 学习目标 目标 知道深度学习与机器学习的区别了解神经网络的结构组成知道深度学习效果特点 应用 无 区别 特征提取方面 机器学习的特征工程步骤是要靠手动完成的,而且需要大量领域专业知识深度学习通常由多个层组成,它们通常将更简…...

node_modules文件夹删除失败解决办法

在前端开发过程中,node_modules 文件夹是一个必不可少的组成部分,里面存放着项目所需的各种依赖包。然而,随着项目的发展,node_modules 文件夹可能会变得异常庞大,甚至有时需要删除它来解决一些依赖冲突或清理空间。但…...

360智脑张向征:共建可信可控AI生态 应对大模型安全挑战

发布 | 大力财经 人工智能的加速发展,有力推动了社会的数智化转型;与此同时,带来的相关安全风险也日益凸显。近日,在北京市举办的通明湖人工智能开发与应用大会上,360智脑总裁张向征以“大模型安全研究与实践”为主题&…...

adb 常用命令笔记

adb connect <ip> #连接指定ip adb disconnect <ip> #断开连接指定ip adb devices #查看连接中的设备 adb install <flie> #安装apk adb uninstall <packageName> #卸载app adb -s install <flie> #指定设备安装 adb shell pm list package…...

uniapp中打包应用后,组件在微信小程序和其他平台实现不同的样式

今天&#xff0c;我们来介绍一下&#xff0c;uniapp中如何实现打包应用后&#xff0c;组件在微信小程序和其他平台不同的样式&#xff0c;在这里&#xff0c;我们使用背景颜色进行演示&#xff0c;使用 UniApp 提供的 uni.getSystemInfoSync() 方法来获取系统信息&#xff0c;包…...

代码随想录算法训练营第三天 | 链表理论基础 | 206.反转链表

从老链表第一个元素开始&#xff0c;逐个取出 第一个取出的元素&#xff0c;让其next指向nullptr。由于改变其指向&#xff0c;会导致后续链表没有指向消失&#xff0c;所以要在这步之前将其后续元素的指向放在一个新变量中再将后续结点的指向当前结点&#xff0c;不断反复运行…...

《数据结构》(非408代码题)

链表 设单链表的表头指针为L&#xff0c;结点结构由data和next两个域构成&#xff0c;其中data域为字符型。试设计算法判断该链表的全部n个字符是否中心对称。例如xyx、xyyx都是中心对称。 分析&#xff1a; 这题完全可以参考19年那题&#xff0c;我们直接找到中间结点然后将后…...

springboot427民航网上订票系统设计和实现(论文+源码)_kaic

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装民航网上订票系统软件来发挥其高效地信息处理的作用&#x…...

UE4_控件蓝图_制作3D生命血条

一&#xff1a;效果图如下&#xff1a; 二、实现步骤&#xff1a; 1、新建敌人 右键蓝图类 选择角色&#xff0c; 重命名为BP_Enemytest。 双击打开&#xff0c;配置敌人网格体 修改位置及朝向 效果如下&#xff1a; 选择合适的动画蓝图类&#xff1a; 人物就有了动作&#x…...

欧拉计划 Project Euler 21题解

欧拉计划21 Project Euler Problem21题干亲和数约数和的计算定义对于任何素数 \( p \):考虑 p a p^a pa:示例可乘性回到示例 Project Euler Problem21 题干 亲和数 记 d ( n ) d(n) d(n) 为 n 的所有真约数(小于 n 且整除 n 的正整数)之和。 如果 d(a) b , d(b) a &…...

python中的Counter函数

在 Python 中&#xff0c;Counter 是 collections 模块中的一个类&#xff0c;用于统计可迭代对象中元素的出现次数&#xff0c;并以字典的形式返回&#xff0c;键为元素&#xff0c;值为对应的计数。它非常适合处理频率统计问题。 用之前必须先导入 from collections import…...

WPF+MVVM案例实战与特效(三十七)- 实现带有水印和圆角的自定义 TextBox 控件

文章目录 1、概述2、案例实现1、基本功能2、代码实现3、控件应用4、案例效果5、源代码下载4、总结1、概述 在开发用户界面时,TextBox 是最常见的输入控件之一。为了提升用户体验,我们经常需要为 TextBox 添加一些额外的功能,例如显示提示文本(水印)和设置圆角边框。本文将…...

SQLServer到MySQL的数据高效迁移方案分享

SQL Server数据集成到MySQL的技术案例分享 在企业级数据管理中&#xff0c;跨平台的数据集成是一个常见且关键的任务。本次我们将探讨如何通过轻易云数据集成平台&#xff0c;将巨益OMS系统中的退款单明细表从SQL Server高效、安全地迁移到MySQL数据库中。具体方案名称为“7--…...

docker快速实现ELK的安装和使用

目录 一、ELK功能原理 二、项目功能展示​ 三、日志查询展示​ 四、ELK安装步骤 1、创建elasticsearch、kibana、filebeat相关data、log、conf目录 2、进入/usr/local/elk目录&#xff0c;并创建一个docker网络 3、启动 elasticsearch容器 4、运行kibana容器 5、启动f…...

hbase读写操作后hdfs内存占用太大的问题

hbase读写操作后hdfs内存占用太大的问题 查看内存信息hbase读写操作 查看内存信息 查看本地磁盘的内存信息 df -h查看hdfs上根目录下各个文件的内存大小 hdfs dfs -du -h /查看hdfs上/hbase目录下各个文件的内存大小 hdfs dfs -du -h /hbase查看hdfs上/hbase/oldWALs目录下…...

解决vue2中更新列表数据,页面dom没有重新渲染的问题

在 Vue 2 中&#xff0c;直接修改数组的某个项可能不会触发视图的更新。这是因为 Vue 不能检测到数组的索引变化或对象属性的直接赋值。为了确保 Vue 能够正确地响应数据变化&#xff0c;你可以使用以下几种方法&#xff1a; 1. 使用 Vue.set() 使用 Vue.set() 方法可以确保 …...

Go语言错误分类

错误的分类 在 Go 语言中&#xff0c;错误是通过实现 error 接口的类型表示的&#xff0c;但不同场景下的错误可以按性质和用途进行分类。以下是 Go 语言错误的常见分类&#xff0c;以及每类错误的解释和示例&#xff1a; 标准错误类型 标准库中定义了许多常见的错误类型&…...

使用 Ansys Fluent 对气体泄漏检测进行建模

了解使用 Ansys Fluent 仿真气体泄漏和确保安全的前沿技术。 挑战 气体泄漏对人类安全和环境构成重大风险。及早检测气体泄漏可以防止潜在的灾难&#xff0c;包括爆炸、火灾和有毒物质暴露。有效的气体泄漏检测系统对于石油和天然气、化学加工和住宅基础设施等行业至关重要。…...

Pytest-Bdd-Playwright 系列教程(16):标准化JSON报告Gherkin格式命令行报告

Pytest-Bdd-Playwright 系列教程&#xff08;16&#xff09;&#xff1a;标准化JSON报告&Gherkin格式命令行报告 前言一、创建Feature文件二、创建步骤定义文件三、生成Cucumber格式的JSON报告四、使用Gherkin格式的命令行报告五、将BDD报告集成到Jenkins中总结 前言 在自动…...

lc46全排列——回溯

46. 全排列 - 力扣&#xff08;LeetCode&#xff09; 法1&#xff1a;暴力枚举 总共n!种全排列&#xff0c;一一列举出来放入list就行&#xff0c;关键是怎么去枚举呢&#xff1f;那就每次随机取一个&#xff0c;然后删去这个&#xff0c;再从剩下的数组中继续去随机选一个&a…...

软考:工作后再考的性价比分析

引言 在当今的就业市场中&#xff0c;软考&#xff08;软件设计师、系统分析师等资格考试&#xff09;是否值得在校学生花费时间和精力去准备&#xff1f;本文将从多个角度深入分析软考在不同阶段的性价比&#xff0c;帮助大家做出明智的选择。 一、软考的价值与局限性 1.1 …...

如何设置 Data Guard 的报警机制?

概述 设置 Data Guard 的报警机制是确保高可用性和及时响应故障的关键步骤。以下是一些常见的方法来配置 Data Guard 的报警机制&#xff0c;包括使用 Oracle Enterprise Manager (OEM)、Data Guard Broker 以及自定义脚本和外部监控工具。 1. 使用 Oracle Enterprise Manage…...

Elastic 8.17:Elasticsearch logsdb 索引模式、Elastic Rerank 等

作者&#xff1a;来自 Elastic Brian Bergholm 今天&#xff0c;我们很高兴地宣布 Elastic 8.17 正式发布&#xff01; 紧随一个月前发布的 Elastic 8.16 之后&#xff0c;我们将 Elastic 8.17 的重点放在快速跟踪关键功能上&#xff0c;这些功能将带来存储节省和搜索性能优势…...

Please activate LaTeX Workshop sidebar item to render the thumbnail of a PDF

Latex代码中使用pdf图片&#xff0c;无法预览&#xff0c;提示&#xff1a; Please activate LaTeX Workshop sidebar item to render the thumbnail of a PDF 解决办法&#xff1a; 点击左边这个刷新下即可...

HiveQL命令(一)- 数据库操作

文章目录 前言一、数据库操作1. 创建数据库1.1 语法及解释1.2 创建数据库示例 2. 查看数据库2.1 查看所有数据库2.2 查看数据库信息2.2.1 语法及解释2.2.2 查看数据库信息示例 3. 切换数据库3.1 语法3.2 示例 4. 修改数据库4.1 语法4.2 示例 5. 删除数据库5.1 语法及解释5.2 示…...

【esp32s3】esp-dl模型部署demo

一个单片机部署手写数字识别的demo 源码&#xff1a; # 别跑&#xff0c;给我star git clone https://gitee.com/Shine_Zhang/esp32s3_dl_helloworld.git功能&#xff1a; 网页绘制28x28手写数字&#xff0c;串口输入设备&#xff0c;串口打印输出10个数字的概率值&#xff0…...

Zemax 中的 LED 阵列模型

LED 阵列的光学特性 LED 阵列由多个发光二极管 &#xff08;LED&#xff09; 组成&#xff0c;这些二极管以特定模式或配置排列&#xff0c;以实现均匀照明、更高强度或特定照明特性。这些阵列广泛用于显示器、照明系统、光通信和传感等应用。 LED 阵列的光学特性对于了解它如…...

123213124

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…...

游戏引擎学习第42天

仓库: https://gitee.com/mrxiao_com/2d_game 简介 目前我们正在研究的内容是如何构建一个基本的游戏引擎。我们将深入了解游戏开发的每一个环节&#xff0c;从最基础的技术实现到高级的游戏编程。 角色移动代码 我们主要讨论的是角色的移动代码。我一直希望能够使用一些基…...

elasticsearch设置密码访问

1 用户认证介绍 默认ES是没有设置用户认证访问的&#xff0c;所以每次访问时&#xff0c;直接调相关API就能查询和写入数据。现在做一个认证&#xff0c;只有通过认证的用户才能访问和操作ES。 2 开启加密设置 1.生成证书文件 /usr/share/elasticsearch/bin/elasticsearch-…...

阿里云-通义灵码:测试与实例展示

目录 一.引子 二.例子 三.优点 四.其他优点 五.总结 一.引子 在软件开发的广袤天地中&#xff0c;阿里云通义灵码宛如一座蕴藏无尽智慧的宝库&#xff0c;等待着开发者们去深入挖掘和探索。当我们跨越了入门的门槛&#xff0c;真正开始使用通义灵码进行代码生成和开发工作…...

开发者指南--RecyclerView显示数据列表和网格

一、RecyclerView的优势 RecyclerView 的最大优势在于&#xff0c;它对大型列表来说非常高效&#xff1a; 默认情况下&#xff0c;RecyclerView 仅会处理或绘制当前显示在屏幕上的项。例如&#xff0c;如果您的列表包含一千个元素&#xff0c;但只有 10 个元素可见&#xff0…...

Ajax--实现检测用户名是否存在功能

目录 &#xff08;一&#xff09;什么是Ajax &#xff08;二&#xff09;同步交互与异步交互 &#xff08;三&#xff09;AJAX常见应用情景 &#xff08;四&#xff09;AJAX的优缺点 &#xff08;五&#xff09;使用jQuery实现AJAX 1.使用JQuery中的ajax方法实现步骤&#xf…...

操作系统(5)进程

一、定义与特点 定义&#xff1a;进程是计算机中的程序关于某数据集合上的一次运行活动&#xff0c;是系统进行资源分配和调度的基本单位&#xff0c;是操作系统结构的基础。 特点&#xff1a; 动态性&#xff1a;进程是动态创建的&#xff0c;有它自身的生命周期&#xff0c;…...

力扣9. 回文数

给你一个整数 x &#xff0c;如果 x 是一个回文整数&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 回文数 是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。 例如&#xff0c;121 是回文&#xff0c;而…...

1_linux系统网络性能如何优化——几种开源网络协议栈比较

之前合集《计算机网络从入门到放弃》第一阶段算是已经完成了。都是理论&#xff0c;没有实操&#xff0c;让“程序猿”很难受&#xff0c;操作性不如 Modbus发送的报文何时等到应答和 tcp通信测试报告单1——connect和send。开始是想看linux内核网络协议栈的源码&#xff0c;然…...

C#—BitArray点阵列

C#—BitArray点阵列 在 C# 中&#xff0c;BitArray 类用来管理一个紧凑型的位值数组&#xff0c;数组中的值均为布尔类型&#xff0c;其中 true&#xff08;1&#xff09;表示此位为开启&#xff0c;false&#xff08;0&#xff09;表示此位为关闭。 当需要存储位&#xff08…...

特工找密码(蓝桥杯)

本来这题想用枚举暴力解的&#xff0c;但是运行总是超时&#xff0c;数值范围太大了~&#xff0c;所以该题不能用枚举进行暴力。 转换成二进制&#xff0c;我们判断一下其规律 注意&#xff1a;按位与是都为1时其值才为1&#xff0c;所以当x和y按位与的结果为2时&#xff0c;其…...

微信小程序--创建一个日历组件

微信小程序–创建一个日历组件 可以创建一个日历组件&#xff0c;来展示当前月份的日期&#xff0c;并支持切换月份的功能。 一、目录结构 /pages/calendarcalendar.wxmlcalendar.scsscalendar.jscalendar.json二、calendar.wxml <view class"calendar"><…...

A6919 基于java+SSM+mysql的区域物流管理系统设计与实现

的区域物流管理系统的设计与实现 1.摘要2.开发目的和意义3.系统功能设计4.系统界面截图5.源码获取 1.摘要 摘 要 随着当前我国市场经济和计算机互联网技术迅速发展&#xff0c;各行各业的销售和管理都在逐步转向着第三方物流服务&#xff0c;包括中通快递&#xff0c;申通&…...

Python大数据可视化:基于python的电影天堂数据可视化_django+hive

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员功能界面 电影数据 看板展示 我的信息 摘要 电影天堂数据可视化是…...

美畅物联丨JS播放器录像功能:从技术到应用的全面解析

畅联云平台的JS播放器是一款功能十分强大的视频汇聚平台播放工具&#xff0c;它已经具备众多实用功能&#xff0c;像实时播放、历史录像回放、云台控制、倍速播放、录像记录、音频播放、画面放大、全屏展示、截图捕捉等等。这些功能构建起了一个高效、灵活且用户友好的播放环境…...

前端国际化实战:从需求到落地的完整实践

"我们要开拓东南亚市场了&#xff01;"产品经理小王兴奋地告诉我这个消息。作为技术负责人,我立刻意识到这意味着我们需要对整个系统进行国际化改造。说实话,虽然之前也做过一些多语言的项目,但面对一个正在运行的大型系统,国际化改造的挑战还是不小。 回想起上周的…...

MySQL 内置函数

字符串函数 concat(str1, str2, ...) 描述: 这个函数用于连接两个或多个字符串&#xff0c;返回一个新字符串。语法: concat(str1, str2, ...)注意点: 如果任意一个参数是null&#xff0c;则结果为null。可以连接任意数量的字符串。示例: select concat(first name: , first_…...