探秘开源隐语:架构深度剖析与隐私计算技术之旅

1.隐语架构

隐语(SecretFlow)作为蚂蚁集团开源的可信隐私计算框架,其架构设计具有多层次的特点,虽然具体分层名称可能会根据实际描述略有差异,但我们可以依据已有的技术和信息对其进行结构化的拆解:

  1. 硬件层(或称TEE层/TCS层)

    • 这一层主要涉及到硬件层面的安全保障,尤其是对于可信执行环境(Trusted Execution Environment, TEE)的支持,比如蚂蚁集团推出的HyperEnclave就是这一层的实例,它提供了金融级别的安全容器,能够在硬件级别保护数据的安全性和隐私性,确保数据在加密状态下的计算过程不受攻击。
  2. 资源管理层

    • 资源层负责管理计算资源的分配与调度,包括但不限于CPU、GPU、内存以及可能的专用加密硬件资源。这一层确保所有参与隐私计算任务的资源都能够得到有效的分配和安全管理。
  3. 计算层(或称执行层)

    • 计算层是框架的核心,包含了支持多方安全计算(MPC)、同态加密(HE)等多种隐私计算技术的具体实现,以及相应的任务调度、通信协议、数据传输和加密计算逻辑。这一层将安全原语转化为可执行的计算任务,并在满足隐私保护要求的前提下完成数据处理。
  4. 算法层

    • 这一层主要是指隐私计算所依赖的密码学算法和相关技术,如多方安全计算协议、同态加密算法、差分隐私机制、联邦学习算法等。这些算法构成了隐语框架中实现数据加密、密文运算和结果解密的基础模块。
  5. 产品层(或称应用层、服务层)

    • 最上层的产品层为用户提供了一系列易于使用的接口和服务,包括SDK、API、工具集及可视化界面等。开发者可通过此层便捷地集成隐语框架到各类应用场景中,如金融风控、医疗数据分析、智慧城市等,并能够借助隐语开放平台提供的白屏拖拽方式直接搭建和运行隐私计算任务,大大降低了隐私计算技术的应用门槛。

在这里插入图片描述
综上所述,隐语的架构从底层硬件安全保障到顶层用户友好接口,层层递进地构建了一个完整的隐私计算解决方案,确保在数据不泄露原始内容的情况下进行有效计算和分析。

2.架构拆解

1.产品层

SecretPad: SecretPad作为隐语(SecretFlow)家族中的一款轻量化安装工具,以其简洁易用的设计和高效的性能深受用户喜爱。通过SecretPad,用户能够迅速领略并体验到隐云强大的隐私计算能力与服务。这款精简应用不仅简化了初次接触隐私计算技术的用户入门流程,还极大地提升了部署效率,使用户在短时间内就能创建并运行安全的数据加密环境,进而开展各类敏感数据处理任务。

隐语团队充分考虑到不同客户群体的多样化需求,因而特别推出了多种形态的部署方案,无论是大规模的企业级部署,还是小型团队的灵活应用,均能匹配相应的部署策略。这意味着无论是在本地数据中心、混合云环境,还是完全托管的云端平台上,都能轻松部署和运用隐语的隐私计算技术

进一步地,隐语即将推出一种全新的部署模式——PUP(Private Unified Platform),这是一种让每个合作机构都能拥有独立、专享的隐私计算平台的创新举措。这种模式赋予了机构更高的自主控制权,确保数据主权的同时,也为其实现安全合规的数据共享和联合分析奠定了坚实基础。

在产品功能方面,隐语涵盖了业界领先的隐私计算核心技术,包括但不限于多方安全计算(MPC)、可信执行环境(TEE)、安全查询语言(SCQL)以及私人集交集(PSI)等一系列先进的隐私保护技术手段。这些技术综合运用,形成了全面而强大的隐私保护解决方案,能够广泛应用于金融风控、医疗健康、政务数据交换等多个领域,有力推动数据价值的安全释放和最大化利用。
SecretNote: SecretNote是隐语(SecretFlow)精心打造的一款极具特色且功能强大的交互式开发工具,它巧妙地融入了隐私计算的核心理念和技术优势,为用户带来了前所未有的安全、便捷的数据建模体验。作为一款专为隐私计算设计的创新型notebook,SecretNote不仅继承了传统notebook直观、灵活的工作模式,更在此基础上进行了深度定制和优化。

使用SecretNote,用户可以直接在一个高度集成的可视化界面上进行交互式的隐私保护数据建模,全程无需担心数据隐私泄露的风险。得益于隐语框架的强大支撑,即使面对复杂的数据处理任务和多阶段的机器学习模型训练,SecretNote也能在保持数据加密的状态下,高效流畅地完成各个环节的操作

更重要的是,SecretNote具备卓越的分布式计算管理能力,用户可以通过单一界面轻松掌控和协调多个计算节点,实现跨节点的资源调度和任务协同。这使得在处理大规模、高并发的隐私计算问题时,不仅简化了流程,提高了工作效率,而且严格保证了数据在流转和处理过程中的安全性与隐私性。

总之,SecretNote凭借其独特的隐私计算特性和一体化的管理界面,为数据科学家、分析师以及广大开发者提供了一个既能充分发挥数据潜能,又能严守数据隐私底线的理想工作台,真正意义上实现了安全与便捷并举的新型数据建模实践。
在这里插入图片描述

2.算法层

隐私求交(Private Set Intersection, PSI)和逆向查询(Private Information Retrieval, PIR)是两种隐私保护技术,旨在允许用户在不暴露其私密信息的情况下进行信息交换和查询。

  1. 隐私求交(PSI)

    • 隐私求交是一种协议,允许两个或多个参与者在彼此的数据集合中查找相交项,而不必透露各自的私密数据内容。
    • 在PSI协议中,每个参与者都持有一个私有的数据集合,希望在其他参与者的数据集合中查找匹配项。
    • PSI协议的设计目标是保护参与者的隐私,确保他们的数据内容不会被泄露给其他参与者,同时还能够有效地找到相交项。
    • PSI协议通常基于加密技术和零知识证明等隐私保护机制,以确保交换过程中的数据保密性和安全性。
  2. 逆向查询(PIR)

    • 逆向查询是一种允许用户在不泄露查询内容的情况下从服务器获取数据的技术。
    • 在PIR协议中,用户向服务器发送一个查询请求,请求特定的数据,但是服务器不能知道用户查询的内容。
    • PIR协议的设计目标是保护用户的隐私,确保用户的查询内容不会被服务器获取,同时还能够有效地获取所需的数据。
    • PIR协议通常基于密码学和信息论等技术,实现了用户查询内容与实际获取的数据之间的隔离,从而保护了用户的隐私。

在这里插入图片描述

这两种技术在保护用户隐私方面有着不同的应用场景和实现方式。隐私求交通常用于数据所有者之间进行数据匹配和交换,而逆向查询则更多地用于用户从服务器获取数据而无需暴露查询内容的情况下。这些技术在隐私保护领域发挥着重要作用,为用户提供了安全、私密的信息交换和查询方式。

3.SCQL
在数据分析中,SCQL(Secure Computation Query Language)是一种安全计算查询语言,旨在允许用户在保护数据隐私的同时进行数据分析和查询。SCQL结合了安全多方计算(Secure Multiparty Computation, MPC)和查询语言的特性,为用户提供了一种在不暴露私密数据的情况下进行数据分析的解决方案。

以下是SCQL的主要特点和工作原理:

  1. 安全多方计算(Secure Multiparty Computation, MPC):

    • SCQL基于安全多方计算的理念,允许多个参与者在不暴露私密数据的情况下进行计算。
    • 在MPC中,每个参与者都持有自己的私密数据,他们可以通过协议进行通信和计算,但是无法直接访问其他参与者的数据内容。
  2. 查询语言的特性:

    • SCQL提供了类似于SQL的查询语言,允许用户以类似于传统数据库查询的方式对数据进行分析和查询。
    • 用户可以使用SCQL语言编写复杂的查询,包括数据过滤、聚合、连接等操作,从而实现各种数据分析任务。
  3. 隐私保护:

    • SCQL的关键目标是保护数据隐私,确保用户的私密数据不会被泄露给其他参与者或第三方。
    • 通过MPC协议和加密技术,SCQL实现了数据在计算过程中的保密性和安全性,使得即使在多方参与计算的情况下,也能保护数据隐私。
  4. 灵活性和扩展性:

    • SCQL具有灵活性和扩展性,可以适用于各种类型的数据分析任务和应用场景。
    • 用户可以根据自己的需求编写不同类型的查询,从简单的数据过滤到复杂的统计分析,都可以通过SCQL语言实现。

在这里插入图片描述
通过结合安全多方计算和查询语言的特性,SCQL为用户提供了一种安全、灵活的数据分析解决方案。它可以应用于各种隐私敏感的场景,如医疗健康数据分析、金融数据分析等,为用户提供了一种保护隐私的数据分析工具。

4.Federated Learning
Federated Learning(联邦学习)是一种机器学习方法,旨在解决中心化数据集的隐私和安全问题。相较于传统的集中式机器学习模型,联邦学习允许在设备本地进行模型训练,而无需将原始数据传输到中央服务器。

以下是联邦学习的主要特点和工作原理:

  1. 分布式学习:

    • 联邦学习允许在多个设备或边缘节点上进行模型训练,每个设备都持有本地的数据集。
    • 在训练过程中,模型参数被发送到各个设备,然后在本地进行更新,而无需将原始数据传输到中央服务器。
  2. 保护隐私:

    • 联邦学习的关键优势之一是保护数据隐私。由于原始数据始终保留在本地,因此不会暴露给其他设备或中央服务器。
    • 每个设备只共享模型更新的梯度信息,而不是原始数据,从而有效地保护了用户的隐私。
  3. 安全性:

    • 联邦学习通过使用加密和安全计算技术来保障数据的安全性。
    • 在模型更新的过程中,可以采用加密通信和差分隐私等技术来防止信息泄露和模型逆向推断攻击。
  4. 节约计算资源:

    • 由于联邦学习在本地进行模型训练,因此减少了中央服务器的计算压力和数据传输量。
    • 这种分布式的学习方式可以充分利用设备本地的计算资源,并减少网络带宽的消耗。
  5. 持续学习和个性化模型:

    • 联邦学习使得模型可以在分布式环境下持续学习,并根据每个设备的特定数据进行个性化调整。
    • 这使得模型更加适应不同设备的特点和用户的个性化需求。

在这里插入图片描述

联邦学习已经被广泛应用于各种领域,如医疗保健、金融、物联网等,以解决数据隐私和安全问题。随着技术的发展和应用场景的扩展,联邦学习有望成为未来机器学习领域的重要发展方向。

3.计算层

1.混合编译调度RayFed
RayFed是一种混合编译调度技术,旨在通过结合传统的静态编译和动态调度方法,优化深度学习模型的训练过程,以提高模型训练效率和性能。它结合了静态编译的高效性和动态调度的灵活性,能够更好地适应不同硬件和工作负载的特点。

以下是RayFed的主要特点和工作原理:

  1. 混合编译调度:

    • RayFed利用混合编译调度的方式,将模型的计算图动态地划分为多个任务,并分配给不同的计算资源执行。
    • 静态编译部分负责将计算图转换为可执行的指令序列,以提高计算的效率;而动态调度部分负责在运行时根据计算负载和资源状况进行任务调度,以实现负载均衡和性能优化。
  2. 任务划分和调度:

    • RayFed将深度学习模型的计算图划分为多个任务单元,每个任务单元对应于模型中的一个子图或操作。
    • 在运行时,根据计算图的结构和依赖关系,动态地将任务单元分配给可用的计算资源,并调度执行顺序,以最大化并行性和资源利用率。
  3. 资源管理和优化:

    • RayFed实现了资源管理和优化,以确保模型训练过程中的计算资源能够被充分利用。
    • 它可以根据计算负载和硬件资源状况进行动态调整,包括任务调度、内存管理、数据传输等方面的优化。
  4. 分布式训练支持:

    • RayFed支持分布式训练,能够有效地利用多个计算节点和设备进行模型训练。
    • 它通过动态调度和任务划分,实现了分布式环境下的负载均衡和性能优化,以加速模型训练过程。
  5. 与Ray框架的集成:

    • RayFed与Ray分布式计算框架集成,能够利用Ray的分布式任务调度和资源管理功能,实现模型训练的高效并行化。

通过混合编译调度的方式,RayFed能够有效地优化深度学习模型的训练过程,提高训练效率和性能,并且具有良好的可扩展性和灵活性。它已经在多个深度学习框架和硬件平台上得到了广泛应用,成为优化深度学习模型训练的重要技术之一。

2.密态引擎SPU
密态引擎(Secure Processing Unit, SPU)是一种专门设计用于执行安全计算任务的硬件设备或处理器。SPU通常集成了专用的安全硬件模块,以提供强大的加密和安全计算功能,确保敏感数据在计算过程中的保密性和完整性。

以下是密态引擎SPU的主要特点和功能:

  1. 安全硬件模块:

    • SPU内部集成了专门的安全硬件模块,包括加密引擎、安全存储、随机数生成器等。
    • 这些硬件模块具有高度优化的性能和安全性,可以有效地保护敏感数据和执行安全计算任务。
  2. 加密功能:

    • SPU提供了各种加密算法的硬件实现,包括对称加密算法(如AES)、非对称加密算法(如RSA)、哈希函数(如SHA-256)等。
    • 用户可以利用SPU的加密功能对数据进行加密、解密、签名、验证等操作,保护数据的机密性和完整性。
  3. 安全计算支持:

    • SPU支持安全计算任务,包括安全多方计算(Secure Multiparty Computation, MPC)、安全搜索(Secure Search)、安全聚合(Secure Aggregation)等。
    • 用户可以利用SPU执行这些安全计算任务,确保计算过程中的数据隐私和安全。
  4. 隔离和保护:

    • SPU具有硬件级的隔离和保护机制,可以将安全计算任务和相关数据与普通计算任务和数据分开存储和处理。
    • 这种隔离和保护能够有效地防止恶意攻击和数据泄露,并保障安全计算任务的顺利执行。
  5. 可编程性和灵活性:

    • SPU通常具有一定的可编程性和灵活性,可以根据具体的安全计算需求进行定制和配置。
    • 用户可以利用SPU执行各种安全计算任务,并根据需要进行优化和定制,以满足特定的安全需求。

在这里插入图片描述

密态引擎SPU在各种安全领域都得到了广泛应用,包括安全通信、加密存储、安全计算等。它为保护敏感数据和执行安全计算任务提供了一种高效、可靠的硬件解决方案,成为安全领域的重要技术之一。

3.HEU
HEU(Homomorphic Encryption Unit)是一种专门设计用于支持全同态加密计算的硬件单元。全同态加密是一种特殊类型的加密技术,允许在加密状态下执行计算操作,而无需解密数据。HEU的设计旨在为计算任务提供硬件级的支持,以加速全同态加密计算,并降低计算开销。

以下是HEU的主要特点和功能:

  1. 全同态加密支持:

    • HEU专门设计用于支持全同态加密计算。全同态加密允许在密文状态下执行各种计算操作,包括加法、乘法、逻辑运算等,而不需要将数据解密。
    • HEU的硬件设计旨在加速全同态加密计算,并提高计算效率和性能。
  2. 加速硬件:

    • HEU通常包含高度优化的加密算法硬件实现和加速逻辑电路,以提高全同态加密计算的速度和效率。
    • 通过硬件加速,HEU可以在短时间内处理大量的加密数据,提高计算吞吐量和响应速度。
  3. 安全性保障:

    • HEU在设计上注重安全性,包括数据保密性、完整性和抗攻击性。
    • 它采用安全硬件模块和加密引擎,确保密文数据在计算过程中不被泄露或篡改,保障数据的安全性。
  4. 低能耗设计:

    • HEU通常采用低功耗设计,以确保在高性能的同时能够降低能耗和热量产生。
    • 低功耗设计可以使HEU适用于各种移动设备和嵌入式系统,以提供安全的全同态加密计算服务。
  5. 可扩展性和灵活性:

    • HEU具有一定的可扩展性和灵活性,可以根据具体的应用需求进行定制和配置。
    • 它可以与各种计算平台和系统集成,为用户提供安全的全同态加密计算解决方案。

在这里插入图片描述
总的来说,HEU作为一种专门设计的硬件单元,为全同态加密计算提供了高效、安全的硬件支持。它在保护数据隐私和实现安全计算方面具有重要的应用价值,在各种领域都有着广泛的应用前景。

4.TEEU
TEEU(Trusted Execution Environment Unit)是一种专门设计用于创建和管理可信执行环境(TEE)的硬件单元。可信执行环境是一种受保护的执行环境,可以提供安全的计算和存储环境,确保敏感数据和关键计算操作的安全性和隐私性。

以下是TEEU的主要特点和功能:

  1. 安全执行环境:

    • TEEU负责创建和管理可信执行环境(TEE),为应用程序提供受保护的执行环境。
    • 在TEE中,敏感数据和关键计算操作被隔离和保护,以防止恶意软件和攻击者对其进行窃取或篡改。
  2. 硬件级安全保障:

    • TEEU集成了专门的安全硬件模块和加密引擎,用于保护TEE中的数据和计算操作。
    • 它通过硬件级的安全保障机制,确保TEE中的数据在计算和传输过程中的机密性、完整性和可信性。
  3. 可信计算支持:

    • TEEU支持可信计算任务,包括安全运行环境(Secure Execution Environment)、安全存储(Secure Storage)等。
    • 用户可以利用TEE中的可信执行环境执行敏感操作,如加密解密、数字签名、身份验证等,而无需担心数据泄露或被篡改的风险。
  4. 安全应用隔离:

    • TEEU可以创建多个独立的可信执行环境,以实现安全的应用隔离。
    • 不同的应用程序可以在各自的TEE中执行,彼此之间相互隔离,确保各自的安全性和隐私性。
  5. 移动设备和嵌入式系统支持:

    • TEEU通常采用低功耗设计,适用于移动设备和嵌入式系统等资源受限的环境。
    • 它可以提供安全的计算和存储服务,为移动设备和嵌入式系统提供保护敏感数据和执行安全操作的解决方案。

在这里插入图片描述

TEEU作为一种专门设计的硬件单元,为创建和管理可信执行环境提供了高效、安全的硬件支持。它在保护数据隐私和执行安全计算方面具有重要的应用价值,在移动设备、物联网和云计算等领域都有着广泛的应用前景。

5.密码原语YACL
YACL(Yet Another Cryptographic Library)是一个密码原语库,用于在算法层中执行各种加密和安全操作。它旨在提供一套简单易用、高效可靠的密码学原语,用于构建安全的通信协议、数据加密系统和数字签名方案。

以下是YACL密码原语库的主要特点和功能:

  1. 密码学原语支持:

    • YACL库提供了各种常用的密码学原语,包括对称加密算法(如AES、DES)、非对称加密算法(如RSA、ECC)、哈希函数(如SHA-256、SHA-3)、消息认证码(MAC)等。
    • 用户可以利用YACL库中的密码学原语构建安全的通信协议、数据加密系统和数字签名方案。
  2. 简单易用的API:

    • YACL库设计了简单易用的应用程序接口(API),以方便开发人员使用密码学原语。
    • 用户可以轻松地调用YACL库中的函数来执行加密、解密、签名、验证等操作,无需深入了解密码学算法的细节。
  3. 高性能和可靠性:

    • YACL库实现了高效可靠的密码学原语,具有优秀的性能和安全性。
    • 它采用了优化的算法和数据结构,以确保在不同硬件平台和环境下的高性能和可靠性。
  4. 跨平台支持:

    • YACL库可以在各种计算平台上运行,包括桌面计算机、服务器、移动设备和嵌入式系统等。
    • 它提供了跨平台的实现,以满足不同应用场景和环境下的密码学需求。
  5. 开源和自由:

    • YACL库是开源的,采用自由软件许可证,任何人都可以免费使用、修改和分发。
    • 开发人员可以根据自己的需求定制和扩展YACL库,以满足特定的应用要求。

在这里插入图片描述

总的来说,YACL密码原语库是一个简单易用、高效可靠的密码学工具,适用于构建各种安全应用和系统。它提供了丰富的密码学原语和简单易用的API,为开发人员提供了构建安全通信和数据保护方案的便捷工具。

4.资源层

在资源层中,Kuscia(Kubernetes Underlying Scalability Infrastructure for AI)是一个针对人工智能(AI)工作负载优化的开源软件项目。它建立在Kubernetes(K8s)之上,旨在提供针对AI工作负载的高效、可扩展和可靠的资源管理和调度解决方案。

以下是Kuscia的主要特点和功能:

  1. 针对AI工作负载的优化:

    • Kuscia专注于优化针对AI工作负载的资源管理和调度,包括训练、推理、模型部署等任务。
    • 它针对AI工作负载的特点和需求进行了优化,如对GPU资源的需求、分布式训练任务的协调等。
  2. 基于Kubernetes的实现:

    • Kuscia建立在Kubernetes之上,利用Kubernetes的强大功能和生态系统,提供了AI工作负载的完整管理和调度解决方案。
    • 它与Kubernetes紧密集成,可以无缝地与Kubernetes集群集成,利用Kubernetes的API和控制平面来管理和调度AI工作负载。
  3. 资源管理和调度:

    • Kuscia提供了高效的资源管理和调度机制,可以根据AI工作负载的特点和需求,动态地分配和调整资源。
    • 它通过优化资源分配算法和调度策略,提高了AI工作负载的执行效率和性能。
  4. 可扩展性和可靠性:

    • Kuscia具有良好的可扩展性和可靠性,可以处理大规模的AI工作负载,并保证任务的高可用性和稳定性。
    • 它可以根据需要动态地扩展和缩减资源,以适应不同规模和需求的AI工作负载。
  5. 开源和社区支持:

    • Kuscia是一个开源项目,得到了社区的广泛关注和支持。
    • 它积极参与开源社区,与其他开源项目和工具进行整合和合作,不断改进和完善AI工作负载的资源管理和调度功能。

在这里插入图片描述

总的来说,Kuscia是一个针对AI工作负载优化的开源软件项目,建立在Kubernetes之上,提供了高效、可扩展和可靠的资源管理和调度解决方案。它为AI应用和服务提供了强大的基础设施支持,有助于提高AI工作负载的执行效率和性能。

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

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

相关文章

如何使用Excel创建一个物品采购表

在企业的日常运营中,物品采购是一个常见且重要的活动。有效的采购管理不仅可以确保企业及时获得所需物资,还可以控制成本、提高效率。Microsoft Excel是一个功能强大的工具,它可以帮助我们创建和管理物品采购表。本文将详细介绍如何使用Excel…

Lua | 一篇文章讲清Lua语法及热更新

目录 一、环境搭建 二、Lua语法 1.输出print、单行注释、多行注释 2.变量 (1)nil (2)number (3)string (3.1)字符串长度 (3.2)字符串拼接 &#xf…

归并算法详细解析

归并排序 1945年,约翰冯诺依曼(John von Neumann)发明了归并排序,这是典型的分治算法的应用。归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Di…

数学建模(Topsis python代码 案例)

目录 介绍: 模板: 案例: 极小型指标转化为极大型(正向化): 中间型指标转为极大型(正向化): 区间型指标转为极大型(正向化): 标…

RequestResponse使用

文章目录 一、Request&Response介绍二、Request 继承体系三、Request 获取请求数据1、获取请求数据方法(1)、请求行(2)、请求头(3)、请求体 2、通过方式获取请求参数3、IDEA模板创建Servlet4、请求参数…

WEB 表单练习题

任务如图&#xff1a; <html><head><meta charest"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head><body><table width"…

Google的MELON: 通过未定位图像重建精确3D模型的突破性算法

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

算法沉淀——贪心算法七(leetcode真题剖析)

算法沉淀——贪心算法七 01.整数替换02.俄罗斯套娃信封问题03.可被三整除的最大和04.距离相等的条形码05.重构字符串 01.整数替换 题目链接&#xff1a;https://leetcode.cn/problems/integer-replacement/ 给定一个正整数 n &#xff0c;你可以做如下操作&#xff1a; 如果…

数据结构:堆的创建和使用

上一期我们学习了树和二叉树的定义&#xff0c;其中我们了解到了两种特殊的二叉树&#xff1a;满二叉树和完全二叉树。 今天我们还要学习一种新的结构&#xff1a;堆 那这种结构和二叉树有什么联系呢&#xff1f;&#xff1f;&#xff1f; 通过观察我们可以发现&#xff0c;…

鸿蒙一次开发,多端部署(三)应用UX设计原则

设计原则 当为多种不同的设备开发应用时&#xff0c;有如下设计原则&#xff1a; 差异性 充分了解所要支持的设备&#xff0c;包括屏幕尺寸、交互方式、使用场景、用户人群等&#xff0c;对设备的特性进行针对性的设计。 一致性 除了要考虑每个设备的特性外&#xff0c;还…

C# 读取二维数组集合输出到Word预设表格

目录 应用场景 设计约定 范例运行环境 配置Office DCOM 实现代码 组件库引入 核心代码 DataSet转二维数组 导出写入WORD表格 调用举例 小结 应用场景 存储或导出个人WORD版简历是招聘应用系统中的常用功能&#xff0c;我们通常会通过应用系统采集用户的个人简历信息…

云主机搭建与服务软件部署

文章目录 登录访问云电脑与云电脑传输文件配置ssh服务ssh连接云电脑使用scp传输文件云端服务软件部署与实现外部访问首先购买云主机,以阿里云服务器 ECS为例子,官网购买就行了,选择默认安装了windows server 2022服务器系统 登录访问云电脑 购买完成进入控制台,能看到创建…

使用CUDA 为Tegra构建OpenCV

返回&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;MultiArch与Ubuntu/Debian 的交叉编译 下一篇&#xff1a;在iOS中安装 警告&#xff1a; 本教程可能包含过时的信息。 使用CUDA for Tegra 的OpenCV 本文档是构建支持 CUD…

谷歌具身智能最新进展:RT-H 机器人通用灵巧抓取

随着 GPT-4 等大型语言模型与机器人研究的结合愈发紧密&#xff0c;人工智能正在越来越多地走向现实世界&#xff0c;因此具身智能相关的研究也正受到越来越多的关注。在众多研究项目中&#xff0c;谷歌的「RT」系列机器人始终走在前沿&#xff08;参见《大模型正在重构机器人&…

各位老板,你需要的工厂数字孪生可视化库在这

各位老板是不是很喜欢下面这种有逼格的大屏,下面介绍一下怎么实现的,保证有所收获。 Cesium是一个开源的WebGL JavaScript库&#xff0c;用于创建高性能的三维地球、地图和虚拟环境。它支持在浏览器中实现高质量的地球模拟&#xff0c;同时提供了丰富的功能特点&#xff0c;使得…

k8s系列之十五 Istio 部署Bookinfo 应用

Bookinfo 应用中的几个微服务是由不同的语言编写的。 这些服务对 Istio 并无依赖&#xff0c;但是构成了一个有代表性的服务网格的例子&#xff1a;它由多个服务、多个语言构成&#xff0c;并且 reviews 服务具有多个版本。 该应用由四个单独的微服务构成。 这个应用模仿在线书…

模板高级使用(非类型模板参数,特化,分离编译)

文章目录 模板没有实例化取内嵌类型报错问题非类型模板参数模板的特化函数模板的特化类模板的特化1.全特化2.偏特化 模板的分离编译 模板没有实例化取内嵌类型报错问题 首先在这里分享一个模板的常见报错问题。就是模板的在没有实例化的情况下去取模板类里面的内嵌类型这时候的…

代码随想录|Day25|回溯05|491.非递减子序列、46.全排列、47.全排列II

491. 非递减子序列 本题并不能像 90.子集II 那样&#xff0c;使用排序进行树层去重。虽然题目没有明确不能排序&#xff0c;但如果排序了&#xff0c;集合本身就是递增子序列&#xff0c;这是LeetCode示例2中没有出现的。 所以本题的关键在于&#xff0c;如何在不排序的情况下对…

2024格行VS华为VS飞猫哪个是最值得购买随身WiFi?中兴随身WiFi好用吗?

经常出差旅行&#xff0c;或者户外工作的朋友因为长期在外&#xff0c;手机流量经常不够用&#xff0c;想必都是随身WiFi的忠实用户&#xff0c;但是也都被这款产品割韭菜割的头皮发麻。今天&#xff0c;我们统计了市面上最靠谱的、最热销、口碑最好的几款随身WiFi。排名依据来…

Java学习笔记(17)

集合进阶 单列集合 Collection List set Add clear remove contains isempty size Add方法可能也会添加失败 同理&#xff0c;可能删除失败 Contains细节 为什么要重写equals&#xff1f; 因为contains底层用的是object类中的equals方法&#xff0c;比较的是地址值&#xf…