目录

一、什么是 API 网关?

二、微服务架构对 API 网关的需求

三、API 网关在微服务架构中的工作

四、API网关的实现——问题和解决方案

可扩展性和性能

反应式编程模型

服务调用

服务发现

处理部分故障

五、API 组合

六、服务网格(service mesh)和 API 网关

七、API 网关在安全中的作用:身份和访问

消息安全

威胁防护

日志记录

白名单和白名单允许的方法

输入验证

八、API 网关对微服务的好处

安全优势

监控和分析

降低微服务复杂性

支持混合通信协议

避免将内部问题暴露给外部客户

九、微服务 API 网关的缺点


一、什么是 API 网关?

API 代表应用程序接口,包含用于构建应用程序的工具集。API Gateway 是一个反向代理,它接受所有 API 调用,应用各种服务来完成调用,并返回适当的输出。简单来说,API网关就是一个集成应用程序内部系统架构的服务器。

API 网关负责为应用程序客户端提供 API、执行请求路由、提供身份验证、负载平衡、监控、组合和协议转换。当客户端发出请求时,请求会传输到 API 网关,然后路由到适当的微服务。

API网关处理客户端请求的方法共有两种:

  • 它将客户端的请求路由到合适的服务。
  • 它将客户的请求分散到多个服务。

二、微服务架构对 API 网关的需求

微服务架构可能总共有 10 到 100 个甚至更多的服务,API Gateway 帮助我们合并客户端的入口点,独立于内部微服务的数量。在微服务架构模式中我们需要 API 网关的原因有很多,如下所示:

  • API 网关有助于停止将内部问题暴露给外部客户端
  • API 网关有助于为您的微服务提供额外的安全性 
  • API网关有助于合并通信协议
  • API 网关有助于降低微服务的复杂性,最终提高应用程序的效率。
  • API 网关帮助分离微服务 API 和其他外部 API,以虚拟化设计需求和测试。

三、API 网关在微服务架构中的工作

假设您正在为应用程序显示产品详细信息的客户构建电子商务移动应用程序。在使用单体架构制作此应用程序时,客户端使用对应用程序的单个 REST 调用来检索数据。当我们使用微服务架构开发相同的应用程序时,每个微服务都会显示针对细粒度端点的指令。

让我们利用微服务架构。产品详情页面通过多个微服务显示数据,例如,订单服务、购物车服务、评论服务、运输服务等等。在这里,客户端直接调用每个微服务并在可用实例之间分发请求。但是当客户端直接调用微服务时,会面临很多问题,例如客户端调用与 API 不匹配或使用不适合 Web 的协议。API Gateway 可以有效解决这个问题。API 网关融合了应用程序的内部系统,并允许每个客户端适应的 API。 

下图解释了 API 网关如何管理 API 调用并与其他架构组件交互。

API 网关的可扩展性和性能通常是必不可少的。有多种技术用于实现 API 网关的可扩展性和性能。API网关负责路由、计费、监控、速率限制、身份验证、足够的安全性、警报和策略等功能。它有助于拦截来自客户端的传入请求并将它们传递给API管理系统以应用必要的功能并获得输出。 

四、API网关的实现——问题和解决方案

在简单了解了 API 网关的工作原理之后,接下来就是学习 API 网关在微服务中的实现了。下面我们讨论了在实现 API 网关时必须考虑的一些设计问题和解决方案:

  • 可扩展性和性能

对于每个应用程序,API 网关的可扩展性和性能是最重要的。因此,在支持异步和非阻塞 I/O 的平台上构建 API 网关是高效的。可以使用不同的技术来实现可扩展的 API 网关。您可以考虑Netty、JBoss Undertow和许多此类基于 NIO 的 JVM 框架。如果您使用的是非 JVM 平台,Node.js是基于 chrome 的 javascript 引擎构建的最佳选择。

  • 反应式编程模型

API 网关通过将请求路由到适当的后端服务来处理请求。另一方面,它还通过调用多个后端服务并结合整体结果来解决一些请求。例如,考虑到电子商务平台,对于产品详细信息请求,对后端服务的请求是相互独立的。

API 网关应该能够同时处理多个请求,以最小化响应时间。但有时,请求之间存在依赖关系。因此,API 网关通过调用身份验证服务来验证请求,然后将它们路由到后端服务。同样,假设您希望在应用程序中从客户的愿望清单中获取产品的详细信息。在这种情况下,API 网关必须检索客户的个人资料数据以检索产品信息。

  • 服务调用

基于微服务的应用程序是一个分布式系统,应该使用进程间通信方法——它有两种技术。第一种是使用基于异步消息传递的机制。一些通过使用JMS和AMQP等消息代理来实现这一点,而另一些则直接使用无代理和服务通信,就像Zeromq一样。另一种技术是同步机制,如 HTTP 或 Thrift。

API 网关将支持基于微服务架构的各种通信机制。一个系统可以同时使用异步和同步技术或每种方法的多个实现。 

  • 服务发现

API 网关必须知道与之通信的每个微服务的 IP 地址和端口(位置)。在传统架构中,您可能会硬连线位置,但在最新的基于云的微服务应用程序中,这是一个不小的问题。

消息代理等基础设施服务将包含一个静态位置,可以通过操作系统环境变量指定。然而,识别应用服务的位置并不容易,因为它是动态分配位置的。此外,由于自动扩展和升级,服务实例会动态变化。

因此,API Gateway 需要使用系统的服务发现机制,即Service-Side Discovery 或Client-Side Discovery,就像任何其他服务客户端系统一样。如果系统选择客户端发现服务,那么 API 网关应该查询服务注册中心,该注册中心包含所有微服务实例及其各自位置的数据库。

  • 处理部分故障

在实现 API Gateway 时您可能面临的另一个挑战是系统的部分故障。当一个服务调用另一个服务不可用或响应缓慢时,所有分布式系统都会出现此问题。API网关从不阻塞无限期等待下游服务。

处理这个失败最终取决于哪个服务失败和给定的场景。例如,在考虑购物应用时,如果推荐服务在产品详情场景中没有响应,API 网关会将剩余的产品详情返回给用户,因为它们仍然有帮助,推荐可以为空,也可以为更换。另一方面,如果产品详情服务没有响应,API 网关必须向用户返回错误。

另请注意,API 网关可以返回缓存数据(如果可用)。例如,购物应用程序的产品价格变化不大,因此如果定价服务不可用,API 网关可以返回缓存的价格。API Gateway 可以自己缓存数据,也可以将其存储在外部缓存中,例如Memcached。API 网关通过返回默认数据或缓存数据来确保系统故障不会影响用户体验。

同样,Netflix Hystrix是编写有助于调用远程服务的代码的最有价值的库之一。Hystrix 实现了一个断路器模式来阻止客户端等待失败的服务响应。它使断路器跳闸,如果服务的错误率超过指定的阈值,最终会立即使所有请求失败。它有助于使超过阈值的调用超时。如果您使用 JVM,建议使用 Hystrix,如果您使用的是非 JVM 环境,则应使用等效库。

五、API 组合

API 网关通常不仅仅做反向代理,比如在 API 组合的帮助下执行 API 操作。API 网关提供客户端使用 API 组合在应用程序中使用单个 API 请求检索数据。

下图详细说明了 API 组合的工作原理。假设您创建了一个电子商务应用程序和具有各种服务的客户端,例如订单服务、购物车服务、评论服务、运输服务等等。在这里,客户端发出请求调用以获取订单详细信息,例如订单账单、订单交付、订购的产品信息。传统的 API 请求调用会创建许多 API 调用,用于从后端调用每个服务。

但同时,使用 API 网关,客户端会进行一次 API 调用,同时 API 网关将使用多次调用的组合调用服务,以提高输出性能。因此,API 网关使移动客户端仅使用单个请求即可检索数据。

六、服务网格(service mesh)和 API 网关

处理微服务时最常见的问题是服务网格和 API 网关之间的区别,因为 API 网关和服务网格模式之间存在重叠。

API 网关是架构的核心组件,而服务网格将应用程序的功能划分为由基础设施层进一步处理的微服务。API 网关和服务网格功能包括处理请求路由、速率限制、监控、身份验证等。两者之间的区别在于 API 网关管理从客户端到服务的流量。相反,服务网格包含服务到服务通信的流量。

API网关一般侧重于外部组织资源来管理和控制网络内部的服务。因此,它位于网络和应用程序之间,用于管理从边缘级客户端到服务通信的流量。可以说 API 网关的主要功能是路由外部和内部的 API 调用。

同时,服务网格专注于将服务暴露给 Web 的内部组织资源。因此,服务网格揭示了使特定业务功能能够管理内部流量服务到服务通信的服务或 API 调用。因此,您可以使用服务网格来升级内部架构系统或微服务的可移植性。

API 网关彻底确保了安全要求,主要是在服务网格中使用时。尽管如此,服务网格仍然存在一些安全问题,因为它更侧重于加速微服务的交付。

因此,我们可以说 API 网关是一种成熟的技术,可以在应用程序中构建微服务模式时使用。相比之下,服务网格是一种新兴技术,在当前场景中存在风险。

七、API 网关在安全中的作用:身份和访问

对于 API 网关技术,访问控制是最好的安全驱动程序之一,它服务于各种组织来管理 API 并设置有关如何处理客户端数据请求的规则。

API网关的访问控制一般从认证机制开始,识别API请求调用的来源。在当前情况下,您可以使用流行的网关 OAuth 作为 Web 资源的中介,而无需向服务透露密码。在使用基于密钥的身份验证网关时,公司可能会丢失数据,因为维护密钥的身份验证具有挑战性。

消息安全

使用网关,您可以使用单个通道路由所有 API 事务,以评估和保护整个组织的消息。API 网关的内部服务之间引入了消息安全性,使它们更加安全,并使消息能够在加密的服务之间传递。

如果忽略正确的身份验证,则会在组织中引起严重的安全问题。例如,如果 API 请求是手机号码,您可以获得电子邮件地址和设备标识数据等个人详细信息。因此,强大的身份验证机制(如 OAuth)对于保护组织的行业标准至关重要。

威胁防护 

如果没有威胁防护,API 网关和服务器本地服务中的 API 从根本上是不安全的。如您所知,API 是与世界进行数字连接的主要来源,但如果有任何恶意用户攻击后端系统,则系统很容易受到攻击。

攻击者可以注入 SQL 命令,例如 drop、delete 甚至创建可供 API 使用的随机数据。SQL 注入使攻击者能够访问系统数据库、代码和系统目录。攻击者有可能会从数据库中复制所有客户的数据并为他们的利益而使用这些数据。除了这种 SQL 注入之外,还有许多其他形式的注入威胁,例如 RegExInjection 或 XML 注入。

日志记录 

对于请求调用的不同情况,有一个特定的 HTTP 状态码。例如,大多数开发人员使用 200 表示请求调用成功,使用 404 表示请求调用失败。堆栈跟踪可以威胁恶意用户识别包名称、类名称、版本、服务器名称或 SQL 查询。

我们可以返回带有 HTTP 状态代码和错误消息的平衡错误对象,以减少这种挑战。重新调整余额错误代码将有助于增强错误处理问题并保护 API 免受攻击者的攻击。

白名单和白名单允许的方法

API 流量的 IP 地址级别应该有一个熟悉的设备、网络和客户端 IP 地址列表。此列表因网络的大小而异。如您所知,多种方法允许访问给定 URL 以对给定实体执行各种操作。例如,POST 方法将创建一个新实体,而 DELETE 方法将删除该实体。相反,GET 请求将读取实体,而 PUT 方法将更新给定实体。

因此,服务需要限制动词的数量才能工作,所有其他的都会返回一个响应码。

输入验证 

黑客发现系统中的漏洞并利用这种松散的输入验证来破坏系统。攻击者将使用现有输入来确定接受的内容并相应地推送请求,直到系统完整性崩溃。

一些常见的输入验证是

  • 消息大小

当您确定不会收到任何大于特定大小的邮件时,最好设置邮件大小限制。它将帮助您过滤掉消息并使系统更有效、更安全。

  • JSON 威胁防护 

JSON(JavaScript Object Notation)是内容级攻击的威胁。这些攻击使用 JSON 文件使系统服务崩溃并压倒解析器。

  • SQL 注入

SQL 注入保护使您能够通过阻止可能导致 SQL 注入或任何类似威胁的请求来保护系统。

  • XML 威胁防护

对 XML 应用程序的恶意攻击包括 SQL 注入、XSLT 或递归有效负载以使系统服务崩溃。

  • 速率限制

所有 API 用户的身份验证和所有 API 调用的日志记录使 API 供应商能够限制所有客户端的消耗。API 网关上限允许您检测单个 API 资源进行的 API 调用次数和其他限制,例如按秒、分钟或天计算的消耗。

一个安全的API网关是怎么样的?

今天的分布式应用程序通常涉及部署在本地和云环境中的数千个微服务之间的交互。一般来说,API 网关对请求进行身份验证,检查它们的访问级别和服务质量,并将它们路由到适当的服务。尽管单个服务底层的网络和基础设施可能具有安全机制,但 API 网关是第一道防线。

传统上,安全性由防火墙强制执行的静态访问控制列表 (ACL) 处理。用户通过本地网络或 VPN 获得访问权限。对于当今可以跨越地理和组织边界的应用程序来说,这种方法过于简单。此外,漏洞利用变得更加复杂,远程工作人员正在增加,复杂的攻击(如 DDoS 或 SQL 注入)不依赖于基于端口的访问。

API 安全模型的组件

在高层次上,API 安全模型由三个组件组成:

  1. 身份验证:验证 API 请求者的身份
  2. 授权:验证并强制执行客户端访问 API 的权限
  3. 威胁防御:采取必要措施防御 DDoS 攻击、注入或其他外部威胁

安全的 API 网关架构通过多种联锁技术处理这些要求。技术的具体选择取决于给定场景的集成需求。身份验证和授权控制应用于服务实体并映射到它们所代表的上游服务,这意味着仅针对这些上游服务直接验证身份验证。这启用了非常细粒度的权限控制。

保护 API 网关的最佳实践

让我们考虑几个保护我们的 API 和 API 网关的最佳实践。

使用 HTTPS

您可以采取的保护 API 的首要措施之一是使用 HTTPS 保护所有客户端通信。此外,您可以定期轮换 SSL 证书,并为同一应用程序的不同环境使用单独的 SSL 证书。

限制请求

API 速率限制可防止过多的 API 请求压倒上游服务——这是 DDoS 攻击的典型方案。通过速率限制,API 网关仅在给定时间间隔内接受一定数量的并发客户端请求。节流是一种速率限制形式,可在过载时减少带宽或终止客户端会话。大小限制是 API 网关阻止大于特定大小的客户端请求有效负载的另一个选项。

身份验证和授权

特权内容应始终受到安全 API 身份验证和授权的保护。因为不同的 API 接受不同类型的凭据来授予访问权限,所以 API 网关应该支持这些类型中的大多数,包括:

  • 基本认证
  • API 密钥认证
  • mTLS
  • … 和更多。

此外,由于第三方身份提供者的普遍存在,API 网关还应支持与这些提供者一起使用的各种标准协议,包括:

  • OpenID 连接
  • SAML
  • OAuth 2.0
  • LDAP

请求验证

另一项安全措施是使用正则表达式检查来验证输入,以在客户端请求中找到可疑条目。当然,API 应该执行自己的安全检查和输入验证。作为最佳实践,开发团队应定期审核和监控 API 代码,确保 API 使用最新的库并遵循编码最佳实践。

监控和分析

监控您的 API 可以让您持续了解每项服务的健康状况,并让您了解您的服务当前面临的潜在威胁或问题。API 网关集中了聚合指标和日志的任务。

API 网关可以集中捕获与请求和流量相关的指标。日志记录还有助于对所有客户端访问请求进行审计跟踪。这些汇总和集中的数据可以一起导出到安全信息和事件管理 (SIEM) 工具,以进行分析、可视化和警报。

配备监控工具的 API 网关可以识别是否以及何时发生攻击、涉及哪些 IP 以及是否使用内部 IP 发起攻击。

利用无服务器功能

云供应商提供的 AWS Lambda 等无服务器功能允许您在其托管和安全的计算环境中运行代码片段。无服务器函数运行代码以响应事件或 HTTP 请求。

一旦函数运行,临时计算基础设施就会被破坏。从安全角度来看,这有效地将任何后端服务器从潜在的攻击中移除。客户端只能访问函数前面的 API 网关。

使用 SIEM 监控 API 安全性

我们已经谈到了保留 API 访问日志的必要性。SIEM 是一种特殊的软件,可以将来自多个来源(如 WAF、防病毒、网络、服务器和 API 网关)的日志聚合到一个位置。它关联并分析这些日志,提供整体安全状况的整体视图。SIEM 工具可以从您的 API 日志中发现异常、威胁和攻击趋势,使其成为安全 API 网关架构的一部分。

此外,安全编排自动化和响应 (SOAR) 是一种新兴的安全技术,它通过针对检测到的异常和威胁自动应用补救步骤,更进一步。SOAR 广泛使用编排和自动化此类安全事件检测和响应的剧本。

零信任模型

零信任使用mTLS进行身份验证。通过验证交易双方的私钥,mTLS 在连接的每一端动态验证客户端的 ID。其单独的 TLS 证书中包含的信息提供了额外的验证。这就像在服务对象级别而不是在服务入口点具有检查点的虚拟护照。

实施零信任模型是服务网格发挥作用的地方。服务网格极大地简化了 API 网关管理。它是控制平面上的专用基础设施层,通过 Sidecar 代理处理服务或微服务之间的通信。

Sidecar 代理在数据平面上运行并加快微服务之间的快速交换。由于数据平面位于服务流量的执行路径上,边车代理提供可观察性、健康检查、路由、安全和负载平衡功能。它们从控制平面进行管理,控制平面聚合配置信息(按服务或其他属性分组),然后将它们作为策略从控制平面(不在执行路径上)推送到数据平面。

原文:What Does a Secure API Gateway Look Like? | Kong Inc.https://konghq.com/learning-center/api-gateway/secure-api-gateway

八、API 网关对微服务的好处 

API 网关通过提供灵活性和完全独立的协议来帮助微服务在内部进行通信。它允许开发人员以各种形式创建架构子集,而无需公开暴露端点。API 网关提供以下优势。

  • 安全优势

用作API的内联代理控制点。
通过凭据和令牌验证以及其他身份验证方式验证与API请求相关联的身份。确定哪个流量被授权通过API以后端服务。使用速率限制和节流来计量流过API的交通。记录所有交易并应用运行时策略以强制执行治理。为API的后端服务提供最后一英里的安全性。

  • 监控和分析 

一些 API 网关帮助开发人员调试和创建可以优雅扩展的基础设施。最好的例子是 Dashbird.io,它连接 AWS API 网关并收集执行时间、错误等信息。并非所有 API 网关都提供此服务,因此一些第三方监控解决方案会弄清楚幕后的场景。

  • 降低微服务复杂性

API 网关通过管理用户访问控制、身份验证问题、速率限制来帮助降低微服务的复杂性,并允许您的 API 专注于主要目标。

这创造了一个有效的优势,因为您的 API 不必以任何可能的方式响应。API 网关处理您的路由、响应格式,甚至系统的缓存。

  • 支持混合通信协议 

通过使用 API 网关,内部微服务受益于使用不同的通信协议。API 网关可以为各种协议提供统一的基于 REST 的 API,从而为应用程序选择最佳的内部架构。

  • 避免将内部问题暴露给外部客户

API 网关有助于将外部 API 与内部微服务模式分开。它对所有微服务的客户端隐藏了服务历史记录和版本控制详细信息。作为输出,您可以随着时间的推移高效地重构微服务,消除外部绑定客户端的所有负面影响。

除了所有这些好处之外,微服务 API 网关还允许客户端创建单个调用请求数据。它可以帮助客户在一个屏幕上获得多个微服务并获得足够的信息。这些请求调用中的每一个都使用网络带宽和客户端代码。与同时进行多个调用相比,此单个调用获得的结果要高效得多。微服务 API 网关自动启用协议翻译,以便每个人都可以说同一种语言,因此,它允许端点之间更快的数据流。

总结API网关的好处:

  • 它使客户端能够将应用程序划分为微服务。 

  • 它使客户端能够确定服务问题的位置。

  • 它为特定客户端单独创建最佳 API。

  • API 网关减少了请求/响应调用的数量。它需要来自客户端的单个请求调用以通过一次往返同时获取多个服务。

  • 它将标准的公共网络友好协议转换为内部协议。

九、微服务 API 网关的缺点 

使用 API 网关的原因有很多,但您还应该考虑将 API 网关用于微服务的一些缺点。

使用 API 网关时面临的第一个挑战是将其集成到软件服务器中。即使安装和配置时间较短,也必须准确地处理这个问题。此外,API 网关通常会在应用程序的端点处产生故障,这很难找到。此故障还可能导致应用程序崩溃或发现与服务器通信具有挑战性。

在配置 API 网关微服务时,必须在部署期间管理路由逻辑。管理路由逻辑可确保从外部 API 到所需微服务的正确路由。此外,在 API 网关配置之后,通过 API 网关与应用程序交互 API 将成为开发人员的另一个难点。

在构建具有高可扩展性的应用程序时,API 网关充当单点故障,因为 API 网关将成为前端和应用程序 API 之间的单点。此外,性能和效率降低是主要问题,因为 API 网关可以直接影响应用程序的速度。

参考:

1、How To Configure API Gateway in Microservices Architecture

API 网关在微服务中的应用相关推荐

  1. API网关在微服务中的应用(1),膜拜大佬

    生产图: 网关优点 通过上图中API网关做为系统统一入口,实现了对各个微服务间的整合,同时又做到了对客户端友好,屏蔽系统的复杂性和差异性.对比之前无API网关模式,API网关具有几个比较重要的优点: ...

  2. python 微服务 网关_微服务中的 API 网关(API Gateway)

    我们知道在微服务架构风格中,一个大应用被拆分成为了多个小的服务系统提供出来,这些小的系统他们可以自成体系,也就是说这些小系统可以拥有自己的数据库,框架甚至语言等,这些小系统通常以提供 Rest Api ...

  3. 微服务架构-服务网关(Gateway)-服务网关在微服务中的应用

    服务网关在微服务中的应用 我们将目光转向Spring Cloud应用的外围,讨论微服务架构下的各个模块如何对外提供服务. 1.对外服务的难题 微服务架构下的应用系统体系很庞大,光是需要独立部零的基础组 ...

  4. c++突破网关屏蔽_通过API网关实现微服务管控-限流,熔断和降级

    今天准备谈下基于API网关来实现微服务治理管控中的服务限流,熔断和降级方面的内容.在前面谈微服务架构的时候也谈到过类似通过Hystrix,Sentinel来是服务限流熔断.包括也不断地在谈去中心化架构 ...

  5. 阿里大佬分享API网关在微服务架构中的应用

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 来自:未知的瞬间 案例背景介绍: 在实践微服务架构时,我们经常会面对以下需求:如何隔离外部和内 ...

  6. API 网关和微服务介绍

    文章目录 API 网关 壹 - 相关简介 一.RESTful 框架 二.微服务 三.API网关 网关和代理 优缺点 贰 - Spring Cloud 框架下的 API 网关实现 Eureka:服务发现 ...

  7. 阿里大神分享API网关在微服务架构中的应用!

    来自:未知的瞬间公众号 案例背景介绍:解决思路/成功要点:成果: 长按订阅更多精彩▼ 如有收获,点个在看,诚挚感谢

  8. 谈谈微服务中的 API 网关(API Gateway)

    前言 又是很久没写博客了,最近一段时间换了新工作,比较忙,所以没有抽出来太多的时间写给关注我的粉丝写一些干货了,就有人问我怎么最近没有更新博客了,在这里给大家抱歉. 那么,在本篇文章中,我们就一起来探 ...

  9. api商品分享源码_谈谈微服务中的 API 网关(API Gateway)

    在本篇文章中,我们就一起来探讨一下 API 网关在整个微服务分布式架构中的一个作用. # 背景我们知道在微服务架构风格中,一个大应用被拆分成为了多个小的服务系统提供出来,这些小的系统他们可以自成体系, ...

最新文章

  1. linux安装教程 ce,docker CE安装教程
  2. 三元运算符(TernaryOperator)
  3. Java生成.jar库
  4. 新人学习web前端必须要知道的基础知识,让你轻松入门
  5. asp.net页面事件:顺序与回传
  6. 自动驾驶 4-4 纵向车辆建模Longitudinal Vehicle Modeling
  7. InnoDB存储引擎概念与原理解析
  8. 火焰识别python_OpenCV_火焰检测——完整代码
  9. 白盒测试-判定条件覆盖
  10. 多智能体系统的分布式协同控制——采样控制、脉冲控制、弹性控制
  11. 群晖DSM Docker下Xware迅雷远程下载教程
  12. vscode 如何快速跳出括号
  13. CA—Certificate Authority证书授权中心
  14. Linux服务器安装git
  15. fastjson 导致fullgc频繁问题排查过程
  16. VMware卸载辛酸历程
  17. 【万字综述】NLP语言模型发展史
  18. Android材料设计之材料主题
  19. Java破解反编译逆向工程笔记
  20. linux系统下solr服务器的搭建

热门文章

  1. 191028-树链剖分
  2. Win7 Ghost
  3. ElasticSearch 全文搜索引擎的查询详解①(Ubuntu版 v6.6.2)
  4. 480万美国学生被AI监控 可疑信息会被上传到学校
  5. 计算机显示渲染原理,二、OpenGL了解渲染原理
  6. Java static理解
  7. 库卡机器人bco运动_《KUKA工业机器人操作与编程》项目三运动编程.pdf
  8. Springboot 整合 Redisson
  9. 【100%通过率】华为OD机试真题 Java 实现【羊、狼、农夫过河】【2022.11 Q4新题】
  10. Python|xlwt|xlrd|调整单元格样式(背景,字体,对齐、虚线边框、列宽行高、添加公式)|xlutils|openpyxl|只读与只写|图表|语言基础50课:学习(8)