REST APIs与微服务:关键差异
在构建基于微服务的应用程序时RESYful API和微服务这两个术语经常相伴出现。然而,它们指的是截然不同的东西。
了解 RESTful API 和微服务之间差异的最简单方式是这样:
- 微服务:它们是构成更大规模基于微服务的应用程序的单个服务和功能,或者说是构建块。
- RESTful API:它们是规则、例程、命令和协议,或者说是将各个微服务集成在一起的粘合剂,使它们能够作为一个单一的应用程序运行。
使用 REST API 和微服务的好处
在微服务领域,REST API 在促进模块化组件之间的通信方面发挥着至关重要的作用。然而,将 REST API 与微服务成功集成会带来一些挑战和注意事项,我们将在这篇博文中简要探讨。
- API 设计和一致性:遵守 RESTful API 最佳实践并利用通用设计模式对于在多个 API 之间维护统一的接口至关重要。文档和 API 规范工具有助于实现一致性。
- 网络延迟和性能:为了最大限度地减少延迟,可以通过合并请求、使用分页和实施服务器端缓存来优化 API 调用。HTTP/2、gRPC 和 GraphQL 等技术可以提高通信效率。
- 安全性:实施身份验证和授权机制,例如 OAuth 2.0 或 JWT,以保护数据交换。使用 HTTPS 加密并认真管理 API 密钥可进一步提高安全性。
- 错误处理:遵循既定的约定返回状态代码和错误消息,确保提供清晰且可操作的信息。Circuit Breaker 模式有助于防止服务之间的级联故障。
- 监控和可观测性:将日志记录、跟踪和指标收集整合到 REST API 中,以获得系统洞察和问题检测。Prometheus、Zipkin 和 Elasticsearch 等工具支持主动解决和优化。
通过解决这些关键方面,开发人员可以在基于微服务的应用程序中充分利用 REST API 的潜力,为高效、有弹性和可维护的软件解决方案铺平道路。
什么是 RESTful API?
让我们从定义 “API” (应用程序编程接口) 开始。API 是一组定义好的规则、命令、权限或协议,允许用户和应用程序与特定应用程序或微服务交互并访问数据。在连接微服务以创建基于微服务的应用程序时,API 定义了限制和允许各个服务之间的某些操作、交互、命令和数据共享的规则。
根据 Hackernoon 上的 Mahesh Hadlar 的说法:
API 是一个接口,许多开发人员通过它与数据进行交互。设计良好的 API 总是非常易于使用,使开发人员的工作非常顺畅。API是开发人员的图形用户界面(GUI),如果它令人困惑或不够详细,那么开发人员将开始寻找替代方案或停止使用它。开发人员的体验是衡量 API 质量的最重要指标。
用于构建微服务应用程序的最流行的 API 类型之一称为“RESTful API”或“REST API”。REST API在开发人员中很受欢迎,因为它使用了大多数开发人员都熟悉且易于使用的HTTP命令。以下是 RESTful API 的定义特征:
- 使用 REST (representational state transfer) 模型的 API。
- 依赖于 Web 开发人员熟悉的 HTTP 编码。
- 使用 SSL (Secure Sockets Layer) 加密。
- 与语言无关,可用于连接以不同编程语言编写的应用程序和微服务。
- REST API 允许您使用 CRUD 操作(创建、检索、更新、删除)创建 Web 应用程序。
REST API 通用的命令(或“动词”)包括:
- HTTP PUT
- HTTP POST
- HTTP DELETE
- HTTP GET
- HTTP PATCH
开发人员使用这些 RESTful API 命令对应用程序或服务中的不同 “资源” 执行操作。这些资源可以是数据库中与员工、会计详细信息、医疗记录或许多其他内容相关的数据。除了资源之外,RESTful API 还使用 URL(统一资源定位符),使您能够定位和指示要对其执行操作的资源。
RESTful API 命令、规则和协议的熟悉度和可靠性使开发与具有关联 API 的应用程序集成的应用程序变得更加容易。当像Instagram、Twitter、Salesforce或Facebook这样的公司希望使其服务可供与第三方应用程序集成时,这一点尤其正确。
Facebook Messenger平台是RESTful API在实际应用中的一个绝佳示例。Messenger 由各种微服务组成,例如用于发送消息的“Send”和用于附加和发送文件的“Attachment”。为了帮助第三方开发人员创建与这些服务和其他 Messenger 服务集成的应用程序,Facebook 发布了多个 RESTful API。
Facebook对其Messenger的REST API描述如下:
Messenger 平台提供了一组 REST API,可为您提供创建出色的 Messenger 体验所需的工具。从发送丰富的消息,到在 Messenger 上寻找现有客户,再到自定义您的机器人等等,我们的 API 是您使用 Messenger 平台交互的主要方式。
以下是可用于 Messenger 平台的三个 REST API:
- 发送 API:作为应用与 Messenger 平台集成的主要方式。Send API 允许开发人员创建第三方应用程序,这些应用程序登录到 Facebook Messenger 上的帐户并发送和接收短信和文件附件。这使开发人员能够构建自动回复机器人、聊天机器人以及其他与Messenger平台集成的服务。
- 附件上传 API:允许你的 App 通过 Messenger 上传和发送图片、音频、视频和文件。此 API 还使上传的资产可重复使用,因此您不必继续上传重复发送的文件。
- 消息洞察 API: 允许应用检索与 Facebook 页面相关的页面成效分析。这使您的应用可以使用不同的 Facebook 指标,尤其是与对话次数、响应速度、阻止率等相关的指标。
适用于 Facebook、Salesforce 和无数其他基于云的应用程序和微服务的 RESTful API 使应用程序开发人员能够将其应用程序与最广泛的平台和服务连接和集成。这为平台开发人员提供了更大的功能、灵活性、可扩展性和覆盖范围,并鼓励他们以原始平台开发人员可能未曾想象的方式进行创新。
什么是微服务?
解释微服务和基于微服务的应用程序的最佳方式是从单体应用程序的描述开始。
长期以来,企业一直依赖单体应用程序来运行其业务并为其客户提供不同的功能和服务。单体应用程序的服务和功能的所有代码都位于同一段编程中。
TechTarget对单体应用程序的描述如下:
单体软件被设计为自成一体的;程序的组件是相互连接和相互依赖的,而不是像模块化软件程序那样松散耦合。在紧密耦合的架构中,每个组件及其关联的组件都必须存在,才能执行或编译代码。
此外,如果程序中的任何组件需要更新,整个应用程序都必须重写,而在模块化应用程序中,可以更改任何单独的模块(例如微服务),而不会影响程序的其他部分。
当企业刚起步时,单体应用程序架构是有意义的,但随着时间的推移,随着业务和客户群的增长,企业需要对单体进行升级和扩展。这可能会带来挑战,因为单体服务和功能的代码是紧密耦合且高度相互依赖的。
开发人员向单体中添加的新服务和功能越多,未来升级时解开代码的难度就越大。最终,即使要更改单体的一小部分,也几乎不可能不重新编写整个应用程序。此外,扩展单体应用程序也是低效的,因为开发人员必须扩展整个应用程序,而不能仅扩展单个功能或服务。
单体应用程序在升级和扩展方面所面临的挑战,最终促使开发人员创建了基于微服务的应用程序架构。微服务架构风格将单体拆分为其组件功能和服务。然后,它将每个服务开发并运行为一个小型、自治、独立的应用程序,即微服务。最后,它通常使用RESTful API将这些微服务松散地连接起来,使它们协同工作以形成更大的应用程序。
Techopedia对微服务的描述如下:
微服务是将更广泛的平台、应用程序或服务作为一系列组合服务的理念。这些微服务提供专门化、精细化的协作,从而构成更全面的架构模型。
应用程序中微服务的使用可以通过多种不同的方式进行构建。在应用程序中,一个微服务执行一个定义好的任务,例如,对用户进行身份验证、生成特定数据模型或创建特定报表。其理念是,这些微服务通常与语言无关,可以适应任何类型的应用程序,并相互通信或合作以实现总体目标。
API 与微服务:它们如何协同工作
现在,您已经更好地了解了 RESTful API 和微服务,您可以看出这两个概念是如何协同工作以构建基于微服务的应用程序架构的:微服务通过执行各种服务充当应用程序的“构建块”,而“RESTful API”充当将微服务集成到应用程序中的“粘合剂”。
当开发人员使用 RESTful API 和微服务创建这样一个模块化的、面向服务的架构时,企业可以获得以下好处:
- 可扩展性:应用程序更容易扩展,也更具成本效益,因为您只需要扩展需要它的服务,而不是整个架构。
- 节省成本:由于升级更快、更容易,因此节省了开发成本。
- 弹性:更强的预防和控制故障级联的能力。
- 轻松升级:一种可插拔的模块化架构,有助于更快地添加、升级或删除服务和功能,并减少编码冲突的可能性。
- 快速开发: 在开发新功能和服务时,加快上市时间。
- 安全性与合规性:由于微服务的遏制,提高了数据安全性和合规性 – 微服务独立工作,彼此之间没有了解。微服务之间的 RESTful API 连接允许您为数据访问和共享定义严格的规则。
- 语言不可知: 能够连接以不同语言编程的模块化服务,无论它们在哪种平台上运行。
- 较小的团队:每个微服务都有更小、更敏捷的开发团队。
- 敏捷: 更高的敏捷性以更快地响应不断变化的业务需求。
- 基于云的架构: 微服务通常在基于云的服务(如 Amazon AWS)上运行。
有关这些优势的更详细讨论,请阅读我们的“微服务的优势”指南。
使用REST API与微服务时的挑战与考虑因素
微服务架构的兴起彻底改变了现代软件应用程序的设计和开发方式。凭借其模块化、灵活性和可扩展性的优势,微服务已成为许多开发人员的首选方法。在这些模块化服务之间实现通信的一种流行方法是使用 REST API。虽然 REST API 和微服务的组合可以打造出高效且易于维护的应用程序,但开发人员必须牢记几个挑战和考虑因素。在本节中,我们将探讨开发人员为确保REST API与微服务成功集成而必须解决的关键方面。
API 设计和一致性:
设计良好的 API 对于微服务之间的无缝交互至关重要。但是,确保多个 API 之间的一致性可能具有挑战性。为了维护统一的接口,开发人员应遵循标准化的原则集,例如 RESTful API 最佳实践,并利用常见的设计模式。此外,记录 API 设计并使用 Swagger 或 OpenAPI 等 API 规范工具有助于确保 API 生态系统的一致性和可维护性。
网络延迟和性能:
微服务的分布式特性通常会导致网络延迟增加,从而对应用程序性能产生负面影响。为了最大限度地减少延迟,开发人员应通过合并多个请求为一个请求、使用分页和实施服务器端缓存来优化 API 调用。采用 HTTP/2、gRPC 或 GraphQL 等技术也有助于提高微服务之间的通信效率。
安全性
确保微服务之间的通信安全对于保护敏感数据和防止未经授权的访问至关重要。开发人员应实施身份验证和授权机制,例如 OAuth 2.0 或 JSON Web Tokens(JWT),以确保服务之间的数据安全交换。此外,使用 HTTPS 加密并仔细管理 API 密钥可以进一步增强 REST API 的安全性。
错误处理
强大的错误处理对于确保使用微服务构建的应用程序的可靠性和恢复力至关重要。在设计 REST API 时,开发人员应遵循既定的约定返回状态码和错误消息,从而为客户提供清晰且可操作的信息。实现 Circuit Breaker 模式还有助于防止服务之间的级联故障。
监控和可观测性
监控和可观测性对于维护基于微服务的应用程序的运行状况和性能至关重要。开发人员应将日志记录、跟踪和指标收集整合到其 REST API 中,以获得系统行为的洞察并检测潜在问题。可以使用 Prometheus、Zipkin 和 Elasticsearch 等工具来汇总和分析这些数据,从而促进主动问题解决和系统优化。
如何在几分钟内构建 RESTful API
在讨论了 RESTful API 和微服务之间的区别之后,还有一个问题我们尚未解决:即在架构中为每个微服务手动编写自定义RESTful API需要花费大量时间。开发人员可能需要三周的时间才能手动编写一个简单的RESTful API。
您可以使用像 DreamFactory 这样的现代 iPaaS(集成平台即服务)来绕过这个开发时间。 DreamFactory iPaaS 包括自动 API 生成功能,可帮助您在几分钟内将任何数据库转换为 REST API。DreamFactory 还允许您立即将 SOAP Web 服务转换为 REST API——它将 REST 端点应用于您的 SOAP API,从而使它们更易于使用。
以下是DreamFactory的RESTful API生成功能的简要说明:
结论
成功地在微服务中实现REST API需要仔细考虑各种挑战和最佳实践。通过解决 API 设计和一致性、网络延迟和性能、安全性、错误处理以及监控和可观测性问题,开发人员可以创建强大、高效且可扩展的应用程序,以充分利用微服务架构的潜力。随着技术形势的不断发展,开发人员必须随时了解新兴趋势和进步,以进一步优化其 REST API 和基于微服务的解决方案。通过这样做,他们将能够交付高质量的软件,满足现代企业和用户的动态需求,为在竞争日益激烈的数字世界中持续取得成功奠定基础。
常见问题:REST API 与微服务
什么是 REST API?
REST(表述性状态传输)API 是用于设计联网应用程序的体系结构原则。它们提供了一组准则和约束用于构建可扩展、无状态和可互操作的Web服务。
什么是微服务?
微服务是指一种架构风格,其中应用程序被分解为小型、独立的服务,这些服务松散耦合并通过API相互通信。每个微服务处理特定的业务功能。
REST API 和微服务如何相互关联?
REST API 通常用作微服务架构中不同微服务之间的通信机制。微服务通过暴露RESTful API来展示其功能,允许其他微服务或外部系统与它们交互。
REST API 和微服务之间的主要区别是什么?
- REST API 侧重于构建 Web 服务的通信协议和设计原则,而微服务是指用于构建应用程序的架构样式。
- REST API 也可以在单体应用程序中使用,但微服务架构特别强调将应用程序分解为更小的服务。
- REST API 是一种通信机制,而微服务包含更广泛的架构方法,涉及服务独立性、可扩展性和故障隔离。
是否可以在没有 REST API 的情况下使用微服务?
是的,虽然 RESTful API 通常用于微服务架构,但也可以采用其他通信协议,例如消息队列或事件驱动机制。REST API 不是实施微服务的强制性要求。
使用 REST API 有哪些优势?
REST API 提供了一种标准化的方法来设计和公开 Web 服务,从而提高了可扩展性、易于集成性和平台独立性。它们通过 HTTP 协议实现客户端-服务器通信,允许各种客户端(Web、移动、IoT)与服务交互。
采用微服务架构有哪些好处?
微服务架构提供的优势包括改进的可扩展性、灵活性、独立的服务开发和部署、故障隔离、技术多样性以及增加的团队自主性。它支持更快的开发周期,支持持续部署,并允许团队同时处理不同的服务。
何时应考虑在微服务架构中使用 REST API?
REST API 通常用于微服务架构中的服务间通信。它们为微服务提供了一种与语言无关的标准方式来交互和交换数据。可以采用 RESTful 原则来设计服务之间的 API 协定。
使用 REST API 和微服务是否存在任何挑战?
是的,挑战可能包括管理服务依赖关系、确保 API 的正确版本控制和向后兼容性、实施有效的 API 文档、处理分布式数据一致性以及解决服务编排和监控中的复杂性。
REST API 和微服务哪个更好?
REST API 和微服务不是互斥的选择。REST API 是一种通信机制,而微服务代表一种架构风格。REST API 通常用于微服务架构中。两者之间的选择取决于应用程序的特定需求、要求和上下文。
如何找到更多同类API?
幂简集成是国内领先的API集成管理平台,专注于为开发者提供全面、高效、易用的API集成解决方案。幂简API平台可以通过以下两种方式找到所需API:通过关键词搜索API、或者从API Hub分类页进入寻找。
原文链接:https://blog.dreamfactory.com/restful-api-and-microservices-the-differences-and-how-they-work-together
相关文章:

REST APIs与微服务:关键差异
在构建基于微服务的应用程序时RESYful API和微服务这两个术语经常相伴出现。然而,它们指的是截然不同的东西。 了解 RESTful API 和微服务之间差异的最简单方式是这样: 微服务:它们是构成更大规模基于微服务的应用程序的单个服务和功能&…...
【网安案例学习】反向蛮力攻击Reverse Brute Force Attack
【故事一】 在一个温暖的秋日下午,Jack坐在旧金山一家宁静的咖啡馆里,准备开始他的最新写作项目:追溯反向蛮力攻击的起源和发展。这是一个他一直想深入挖掘的主题,因为它揭示了网络安全世界中一个鲜为人知却极具影响力的故事。 …...
TCP/IP网络编程:理解网络编程和套接字
TCP/IP网络编程:理解网络编程和套接字 网络编程又叫做套接字编程,是因为在网络编程中依赖使用套接字(socket),网络编程一般是C/S架构,即客户端/服务器模式,在服务器端依赖套接字绑定自身接口,并开启监听客户端连接&am…...
CSS实现回到顶部且平滑过渡
背景 最近同学在项目开发的时候问了我一个问题:小白,回到顶部该怎么做呀?我当时就愣住了,心想这不是很基础的一个功能吗,然后想到该同学没有系统学过网页三剑客,我就给他讲了该怎么实现这个虽然基础但在很多…...
10 go语言(golang) - 数据类型:哈希表(map)及原理(二)
扩容 在 Go 语言中,当 map 的元素数量达到一定阈值时,会触发扩容操作以保持性能。这个过程称为 rehashing,即重新散列所有的键值对到一个更大的哈希表中。 扩容的条件 源码: func mapassign(t *maptype, h *hmap, key unsafe.…...

【论文解读】Med-BERT: 用于疾病预测的大规模结构化电子健康记录的预训练情境化嵌入
【论文解读】Med-BERT: 用于疾病预测的大规模结构化电子健康记录的预训练情境化嵌入 Med-BERT:pretrained contextualized embeddings on large-scale structured electronic health records for disease prediction 摘要:基于电子健康记录(EHR)的深度学习(DL)预…...
[POI2014] PTA-Little Bird(单调队列优化 DP)
luogu 传送门https://www.luogu.com.cn/problem/P3572 解题思路 先设 表示到 的最小劳累值。 很容易得出转移: 其中 由 和 的大小关系决定,并且 。 很显然,直接暴力是 的,会超时。 于是,考虑优化。 我们发现…...

【含开题报告+文档+PPT+源码】基于SpringBoot的体育馆管理系统的设计与实现
开题报告 近年来,随着人们生活水平的提高和健康意识的增强,体育馆作为提供体育锻和休闲娱乐的重要场所,其使用频率和管理难度也在不断增加。传统的体育馆管理模式通常依赖于人工记录和手动操作,不仅效率低下,而且容易…...
Vue3学习:vue组件中的图片路径问题
今天在做一个案例的时候,图片放在assets/images文件夹下,如下路径,其中的图片不能正常显示。 list: [{ id: 1, name: 欧拉公式啤酒杯, price: 30.00, src: ./assets/images/Euler.png},{ id: 2, name: 高斯分布马克杯, price: 40.00, src: ./…...
openCV基础-图像预处理Day26
图像预处理 在计算机视觉和图像处理领域,图像预处理是一个重要的步骤,它能够提高后续处理(如特征提取、目标检测等)的准确性和效率。OpenCV 提供了许多图像预处理的函数和方法,以下是一些常见的图像预处理操作&…...
给文件添加可读可写可执行权限
在Unix、Linux或类Unix操作系统中,你可以使用chmod命令来给文件添加可读、可写和可执行权限。权限通常分为三组:文件所有者(owner)、文件所属组(group)和其他用户(others)。每组都可…...
golang有序map
最近使用go开发排行榜的需求, 有些情况会用到有序map, 但是go竟然没有有序map的实现 本着自己动手丰衣足食的原则, 就自己实现了一个 原理 原理比较简单, 主要结合了container/list双向链表和map 使用双向链表存储key和value, 保证顺序, 使用map存储key和节点信息, 保证查找…...

【LangChain系列4】【Chain模块详解】
目录 前言一、LangChain1-1、介绍1-2、LangChain抽象出来的核心模块1-3、特点1-4、langchain解决的一些行业痛点1-5、安装 二、Chain模块2-1、介绍2-2、LLMChain2-3、Sequential Chain(顺序链)2-4、Router Chain 总结 前言 LangChain给自身的定位是&…...

51c嵌入式~IO合集1
我自己的原文哦~ https://blog.51cto.com/whaosoft/12383193 一、单片机通信数据接收解析方法 前阵子一朋友使用单片机与某外设进行通信时,外设返回的是一堆格式如下的数据: AA AA 04 80 02 00 02 7B AA AA 04 80 02 00 08 75 AA AA 04 80 02 00 9B E2…...

ETLCloud怎么样?深度解析其在数据管理中的表现
在BI或数据大屏等数据分析工具中,经常需要从多个业务系统中提取原始数据,然后对数据进行清洗、处理,以获取高质量、有效且干净的数据以供后续的BI进行数据统计和分析使用,从高质量的实现企业数据的价值变现。 然而,在…...

高频谐振功放电路
目录 集电极馈电电路 高频扼流圈的作用: 并联馈电回路 高频扼流圈作用 : 优缺点 对于并联的集电极馈电网络: 对于串联的集电极馈电网络: 神奇之处 基级馈电电路 自反偏压: 复合输出回路 天线回路 效率分析 总效率分析 互感如何改变工作状态 集电极馈电电路 馈电电路分…...

kafka如何获取 topic 主题的列表?
大家好,我是锋哥。今天分享关于【kafka如何获取 topic 主题的列表?】面试题?希望对大家有帮助; kafka如何获取 topic 主题的列表? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在Kafka中,可以…...
全新大模型框架Haystack,搭建RAG pipeline
大家好,在AI应用开发的赛道上,目前Haystack以其开源框架的优势,成为LLM技术领域的一匹黑马,对现有竞争者构成挑战。本文将介绍Haystack的亮点优势,并分析它为何能在众多LLM框架中脱颖而出,通过RAG应用实例来…...
儿童孤独症专家分享:了解治疗与支持的专业帮助
在儿童的成长旅程中,每一步都充满了探索与发现。然而,对于患有孤独症的儿童来说,这段旅程往往伴随着更多的挑战与困难。孤独症,这个看似遥远的词汇,却深刻地影响着无数家庭的生活。作为儿童孤独症领域的专家࿰…...

初始JavaEE篇——多线程(7):定时器、CAS
找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程程(ಥ_ಥ)-CSDN博客 所属专栏:JavaEE 目录 定时器的使用 定时器的原理 模拟实现定时器 CAS 介绍 CAS的应用场景 解析 AtomicInteger 类 实现自旋锁 CAS的缺陷…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...

Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...