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

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

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工作负载的执行效率和性能。

相关文章:

  • 解读 Xend Finance:向 RWA 叙事拓展,构建更具包容性的 DeFi 体系
  • c++类型转换(持续更新)
  • 七仔充电桩平台 二轮电动自行车 四轮汽车 云快充1.5 云快充1.6
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • 点云从入门到精通技术详解100篇-点云采样理论知识详解
  • C# 右键快捷菜单(上下文菜单)的两种实现方式
  • 数据结构——循环队列的实现
  • 【嵌入式硬件】步进电机
  • QT网络编程之实现UDP广播发送和接收(多网卡,多IP)
  • Spring常用设计模式-实战篇之单例模式
  • vue父子组件生命周期
  • vue3 + ts +element-plus + vue-router + scss + axios搭建项目
  • O2OA(翱途)开发平台前端安全配置建议(一)
  • Ubuntu学习笔记之Shell与APT下载工具
  • 数据结构-双向链表-003
  • Android优雅地处理按钮重复点击
  • Bootstrap JS插件Alert源码分析
  • CEF与代理
  • ESLint简单操作
  • JavaScript-Array类型
  • JavaScript学习总结——原型
  • JS学习笔记——闭包
  • leetcode386. Lexicographical Numbers
  • markdown编辑器简评
  • Mithril.js 入门介绍
  • Shadow DOM 内部构造及如何构建独立组件
  • 百度地图API标注+时间轴组件
  • 欢迎参加第二届中国游戏开发者大会
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 利用DataURL技术在网页上显示图片
  • 实战|智能家居行业移动应用性能分析
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 写给高年级小学生看的《Bash 指南》
  • 硬币翻转问题,区间操作
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • # Apache SeaTunnel 究竟是什么?
  • # 达梦数据库知识点
  • #includecmath
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • $.proxy和$.extend
  • ${factoryList }后面有空格不影响
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (生成器)yield与(迭代器)generator
  • (转)nsfocus-绿盟科技笔试题目
  • (转载)CentOS查看系统信息|CentOS查看命令
  • .bat批处理(六):替换字符串中匹配的子串
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET CORE 第一节 创建基本的 asp.net core
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福