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

【工作记录】Kong Gateway入门篇之简介

1. 什么是 Kong Gateway?

Kong Gateway 是一个开源的、云原生的 API 网关,专为现代微服务架构设计。它基于 NginxLua 构建,提供了高性能、可扩展的 API 管理解决方案。Kong Gateway 不仅能够处理 API 请求的路由和负载均衡,还提供了丰富的插件生态系统,支持身份验证、限流、日志记录、监控等功能。


2. 核心特性

2.1 插件化架构

Kong Gateway 的核心特性之一是其插件化架构。通过插件,开发者可以轻松扩展网关的功能。Kong 提供了官方插件库,涵盖以下领域:

  • 身份验证:如 JWT、OAuth2、Basic Auth。
  • 安全防护:如 IP 限制、CORS。
  • 流量控制:如限流、负载均衡。
  • 日志记录:如 File Log、Syslog、HTTP Log。

开发者还可以通过 Lua 脚本编写自定义插件,满足特定业务需求。

2.2 高性能

Kong Gateway 基于 Nginx 的非阻塞 I/O 模型,能够高效处理大量并发请求。其轻量级的设计和高效的 LuaJIT 引擎使其在性能上表现出色,尤其适合高流量的生产环境。

2.3 可扩展性

Kong Gateway 通过 Lua 脚本语言实现高度可扩展性。开发者可以根据业务需求编写自定义逻辑,或者通过插件机制扩展网关的功能。此外,Kong 支持与多种服务发现机制(如 ConsulZookeeper)集成,方便在不同的环境中部署。

2.4 易于集成

Kong Gateway 提供了丰富的 API 接口和命令行工具,方便与现有的 DevOps 工具链集成。它还支持与 PrometheusGrafana 等监控工具无缝对接,帮助开发者实时监控 API 的健康状态。


3. 架构概述

3.1 Nginx

Kong Gateway 的核心是 Nginx,一个高性能的 HTTP 服务器和反向代理服务器。Nginx 负责处理网络请求,并通过 Lua 模块执行 Kong 的插件逻辑。

3.2 LuaJIT

LuaJIT 是 Lua 语言的即时编译器,用于执行 Kong Gateway 的插件逻辑。LuaJIT 的高效性使得 Kong 能够在处理请求时保持低延迟。

3.3 数据库

Kong Gateway 使用数据库来存储配置信息和状态数据。支持的数据库包括 PostgreSQLCassandra。数据库的选择取决于具体的生产需求和规模。

3.4 核心组件

  • Service:代表一个后端服务,Kong Gateway 通过 Service 来路由请求。
  • Route:定义如何将客户端请求映射到后端服务。
  • Plugin:用于扩展 Kong Gateway 的功能,如身份验证、限流等。
  • Consumer:代表使用 API 的客户端,可以用于身份验证和限流。

4. 使用场景

Kong Gateway 的灵活性和强大功能使其适用于多种场景。以下是对其核心使用场景的详细分析:

4.1 API 管理

场景描述
在现代应用中,API 是不同服务之间通信的核心。Kong Gateway 可以帮助企业集中管理和监控所有 API 请求,提供统一的入口和出口。

解决方案

  • 统一入口:通过 Kong Gateway,所有 API 请求都可以通过一个统一的入口进行路由,简化了 API 的管理和维护。
  • 监控与日志:Kong Gateway 提供了丰富的日志记录插件,如 File Log、Syslog、HTTP Log 等,帮助开发者记录和分析 API 请求的详细信息。
  • 安全控制:通过身份验证插件(如 JWT、OAuth2)和安全防护插件(如 IP 限制、CORS),Kong Gateway 可以保护 API 免受未经授权的访问和攻击。

案例
一家电商平台使用 Kong Gateway 来管理其多个微服务 API,通过统一入口和身份验证插件,确保只有经过授权的客户端可以访问其 API。

4.2 微服务架构

场景描述
在微服务架构中,服务之间的通信需要高效、可靠的管理。Kong Gateway 可以作为服务网格的一部分,处理服务间的通信。

解决方案

  • 服务发现:Kong Gateway 支持与多种服务发现机制(如 Consul、Zookeeper)集成,方便在不同的环境中部署。
  • 负载均衡:通过负载均衡插件,Kong Gateway 可以优化 API 的性能,确保高可用性。
  • 故障恢复:Kong Gateway 提供了故障恢复插件,如健康检查、熔断器等,帮助开发者提高系统的可靠性和可用性。

案例
一家金融科技公司使用 Kong Gateway 来管理其微服务架构,通过服务发现和负载均衡插件,确保服务间的高效通信和故障恢复。

4.3 安全控制

场景描述
保护 API 免受未经授权的访问和攻击是每个企业的重要任务。Kong Gateway 提供了多种安全插件,帮助开发者实现这一目标。

解决方案

  • 身份验证:Kong Gateway 支持多种身份验证插件,如 JWT、OAuth2、Basic Auth 等,确保只有经过授权的客户端可以访问 API。
  • 安全防护:通过 IP 限制、CORS 等插件,Kong Gateway 可以防止未经授权的访问和攻击。
  • 流量控制:通过限流插件,Kong Gateway 可以有效控制 API 的流量,防止系统过载。

案例
一家医疗健康公司使用 Kong Gateway 来保护其患者数据 API,通过身份验证和限流插件,确保数据的安全性和系统的稳定性。

4.4 流量控制

场景描述
在高流量的生产环境中,控制 API 的流量是确保系统稳定性的关键。Kong Gateway 提供了多种流量控制插件,帮助开发者实现这一目标。

解决方案

  • 限流:通过限流插件,Kong Gateway 可以限制每个客户端或服务的请求速率,防止系统过载。
  • 负载均衡:Kong Gateway 提供了负载均衡插件,支持多种负载均衡算法,如轮询、加权轮询、最少连接等,帮助开发者优化 API 的性能。
  • 故障恢复:通过健康检查、熔断器等插件,Kong Gateway 可以提高系统的可靠性和可用性。

案例
一家在线教育平台使用 Kong Gateway 来控制其课程 API 的流量,通过限流和负载均衡插件,确保系统在高流量下的稳定性。

4.5 监控与日志

场景描述
实时监控和日志记录是确保 API 健康状态的重要手段。Kong Gateway 提供了多种监控和日志记录插件,帮助开发者实现这一目标。

解决方案

  • 监控:Kong Gateway 支持与 Prometheus、Grafana 等监控工具无缝对接,帮助开发者实时监控 API 的健康状态。
  • 日志记录:Kong Gateway 提供了多种日志记录插件,如 File Log、Syslog、HTTP Log 等,帮助开发者记录和分析 API 请求的详细信息。

案例
一家物流公司使用 Kong Gateway 来监控其物流 API 的健康状态,通过 Prometheus 和 Grafana 插件,实时监控 API 的性能和可用性。


通过以上详细的使用场景分析,可以看出 Kong Gateway 在 API 管理、微服务架构、安全控制、流量控制、监控与日志等方面具有广泛的应用价值。其灵活性和强大功能使其成为现代微服务架构中的理想选择。


5. 内置实用功能

5.1 身份验证

Kong Gateway 提供了多种身份验证插件,如 JWTOAuth2Basic Auth 等,帮助开发者保护 API 免受未经授权的访问。

5.2 限流

通过限流插件,Kong Gateway 可以限制每个客户端或服务的请求速率,防止系统过载。

5.3 日志记录

Kong Gateway 支持多种日志记录插件,如 File LogSyslogHTTP Log 等,帮助开发者记录和分析 API 请求的详细信息。

5.4 监控

Kong Gateway 支持与 PrometheusGrafana 等监控工具无缝对接,帮助开发者实时监控 API 的健康状态。

5.5 负载均衡

Kong Gateway 提供了负载均衡插件,支持多种负载均衡算法,如轮询、加权轮询、最少连接等,帮助开发者优化 API 的性能。

5.6 故障恢复

Kong Gateway 提供了故障恢复插件,如健康检查、熔断器等,帮助开发者提高系统的可靠性和可用性。


6. 与其他网关产品的对比

以下表格对比了 Kong Gateway 与其他常见网关产品(如 NginxOpenRestyTraefikEnvoy)的优劣势,帮助用户更好地理解 Kong Gateway 的定位和适用场景。

特性Kong GatewayNginxOpenRestyTraefikEnvoy
核心架构基于 Nginx + Lua,插件化架构,支持 Lua 脚本扩展。基于 Nginx,轻量级,高性能。基于 Nginx + Lua,支持 Lua 脚本扩展。基于 Go,支持自动服务发现,容器化友好。基于 C++,高性能,服务网格友好。
插件生态系统丰富的官方插件库(身份验证、限流、日志记录等),支持自定义插件开发。需要手动配置模块,插件生态较弱。支持 Lua 脚本扩展,但需要开发者自行实现插件功能。插件机制较弱,依赖中间件实现功能扩展。插件机制较弱,主要通过过滤器实现功能扩展。
易用性提供高级 API 管理功能,GUI 和 CLI 工具完善。配置复杂,需要手动编写配置文件。需要编写 Lua 脚本,配置复杂度较高。配置简单,自动服务发现功能强大。配置复杂,适合服务网格场景。
性能基于 Nginx,性能优异,插件机制可能引入额外开销。性能优异,适合高并发场景。性能优异,与 Nginx 相当。性能较好,适合中小规模场景。性能优异,适合大规模分布式系统。
服务发现支持 Consul、Zookeeper 等多种服务发现机制。需要手动配置,不支持服务发现。需要手动配置,不支持服务发现。支持 Kubernetes、Docker 等容器化环境的服务发现。支持多种服务发现机制,如 Kubernetes、Consul 等。
适用场景微服务架构、API 管理、安全控制、流量控制。反向代理、负载均衡、静态资源服务。高性能 Web 服务、自定义逻辑扩展。容器化环境、微服务网关。服务网格、大规模分布式系统。
社区与支持社区活跃,官方支持完善,文档丰富。社区庞大,文档丰富,但高级功能支持有限。社区较小,文档较少,依赖开发者自行解决问题。社区活跃,文档完善,容器化场景支持较好。社区活跃,文档完善,服务网格场景支持较好。

对比总结
  • Kong Gateway:适合需要丰富插件功能和高级 API 管理的场景,尤其在微服务架构中表现优异。
  • Nginx:适合简单的高性能反向代理和负载均衡场景,但缺乏高级功能。
  • OpenResty:适合需要高性能和自定义逻辑扩展的场景,但配置复杂度较高。
  • Traefik:适合容器化环境和自动服务发现场景,插件生态较弱。
  • Envoy:适合服务网格和大规模分布式系统,配置复杂但性能优异。

通过以上对比,开发者可以根据具体需求选择最适合的网关产品。Kong Gateway 在插件化架构和易用性方面具有明显优势,是微服务架构中的理想选择。


7. 总结

Kong Gateway 是一个功能强大且灵活的 API 网关解决方案,适用于各种规模的企业和开发者。其插件化架构和高性能特性使其成为微服务架构中的理想选择。通过本文,你已经了解了 Kong Gateway 的核心特性、架构、使用场景以及内置的强大实用功能,并与其他网关产品进行了对比。在下一篇文章中,我们将深入探讨如何部署和测试 Kong Gateway,帮助你更好地将其应用于实际项目中。

相关文章:

【工作记录】Kong Gateway入门篇之简介

1. 什么是 Kong Gateway? Kong Gateway 是一个开源的、云原生的 API 网关,专为现代微服务架构设计。它基于 Nginx 和 Lua 构建,提供了高性能、可扩展的 API 管理解决方案。Kong Gateway 不仅能够处理 API 请求的路由和负载均衡,还…...

华为鸿蒙电脑能否作为开发机?开发非鸿蒙应用?

目录 一、鸿蒙电脑作为开发机的核心能力1. 硬件与系统架构2. 开发工具链支持 二、开发非鸿蒙应用的可行性分析1. 适配优势与局限性2. 生态限制 三、鸿蒙电脑的核心适用场景1. 推荐开发场景2. 目标用户群体3. 非推荐场景 四、未来生态演进与战略意义五、总结 一、鸿蒙电脑作为开…...

jackson-dataformat-xml引入使用后,响应体全是xml

解决方案: https://spring.io/blog/2013/05/11/content-negotiation-using-spring-mvc import org.springframework.context.annotation.Configuration; import org.springframework.http.MediaType; import org.springframework.web.servlet.config.annotation.Con…...

【deekseek】TCP Offload Engine

是的,TOE(TCP Offload Engine)通过专用硬件电路(如ASIC或FPGA)完整实现了TCP/IP协议栈,将原本由CPU软件处理的协议计算任务完全转移到网卡硬件中。其延迟极低的核心原因在于 硬件并行性、零拷贝架构 和 绕过…...

Flannel Host-gw模式的优缺点

Host-gw 模式的特点、优缺点 优点 高性能:无封装开销,数据包直接通过主机路由表转发,延迟和吞吐量接近原生网络。零额外开销:不使用隧道或封装,无额外字节,带宽利用率最高。配置简单:只需配置…...

SD-HOST Controller design-----SD CLK 设计

hclk的分频电路,得到的分频时钟作为sd卡时钟。 该模块最终输出两个时钟:一个为fifo_sd_clk,另一个为out_sd_clk_dft。当不分频时,fifo_sd_clk等于hclk;当分频时候,div_counter开始计数,记到相应分频的时候…...

zabbix最新版本7.2超级详细安装部署(一)

如果文章对你有用,请留下痕迹在配置过程中有问题请及时留言,本作者可以及时更新文章 目录 1、提前准备环境 2、zabbix7.2安装部署 3、安装并配置数据库 4、为Zabbix server配置数据库 5、为Zabbix前端配置PHP 6、启动Zabbix server和agent进程 7、关闭防…...

BFS算法篇——打开智慧之门,BFS算法在拓扑排序中的诗意探索(上)

文章目录 引言一、拓扑排序的背景二、BFS算法解决拓扑排序三、应用场景四、代码实现五、代码解释六、总结 引言 在这浩瀚如海的算法世界中,有一扇门,开启后通向了有序的领域。它便是拓扑排序,这个问题的解决方法犹如一场深刻的哲学思考&#…...

【Nova UI】十六、打造组件库之滚动条组件(中):探秘滑块的计算逻辑

序言 在上篇文章中,我们完成了滚动条组件开发的前期准备工作,包括理论推导、布局规划和基础设置。现在,我们将把这些准备转化为实际代码,开启滚动条组件的具体开发之旅🌟。我们会详细阐述如何实现各项功能&#xff0c…...

题海拾贝:P1833 樱花

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《题海拾贝》、《C修炼之路》 欢迎点赞&#xff0c;关注&am…...

集成钉钉消息推送功能

1. 概述 本文档详细描述了在若依框架基础上集成钉钉消息推送功能的开发步骤。该功能允许系统向指定钉钉用户发送文本和富文本消息通知。 2. 环境准备 2.1 钉钉开发者账号配置 登录钉钉开发者平台&#xff1a;https://open.dingtalk.com/创建/选择企业内部应用获取以下关键信…...

texlive 与 Texmaker 安装

一、安装 Texmaker 1、下载Texmaker 链接地址: Texmaker (free cross-platform latex editor) 点击 FREE DOWNLOAD &#xff0c;点击 Texmaker_6.0.1_Win_x64.msi &#xff0c;下载即可。 2、安装Texmaker 双击如下文件 若出现如下&#xff0c;点击更多信息 点击仍要运行 …...

Milvus(21):过滤搜索、范围搜索、分组搜索

1 过滤搜索 ANN 搜索能找到与指定向量嵌入最相似的向量嵌入。但是&#xff0c;搜索结果不一定总是正确的。您可以在搜索请求中包含过滤条件&#xff0c;这样 Milvus 就会在进行 ANN 搜索前进行元数据过滤&#xff0c;将搜索范围从整个 Collections 缩小到只搜索符合指定过滤条件…...

AD PCB布局时常用的操作命令

1. 框选 往右下方框选&#xff1a;选中矩形接触到的对象&#xff08;选中整体才会被选中&#xff09; 往左上方框选&#xff1a;选中矩形接触到的对象&#xff08;选中局部&#xff0c;也是选中整体&#xff09; 线选&#xff1a;快捷键S&#xff0c;弹出界面&#xff1a; …...

[免费]微信小程序医院预约挂号管理系统(uni-app+SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序医院预约挂号管理系统(uni-appSpringBoot后端Vue管理端)&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序医院预约挂号管理系统(uni-appSpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩…...

分析Docker容器Jvm 堆栈GC信息

# 打印jvm启动参数 docker exec -ti <容器名> jcmd 1 VM.flags-XX:CICompilerCount3 -XX:InitialHeapSize1073741824 -XX:MaxHeapSize2147483648 -XX:MaxMetaspaceSize157286400 -XX:MaxNewSize715653120 -XX:MinHeapDeltaBytes524288 -XX:NewSize357564416 -XX:OldSize7…...

Java——集合基础

一、集合与数组的特点对比 1.集合类的特点&#xff1a;提供一种存储空间可变的存储模型&#xff0c;存储的数据容量可以发生改变 2.集合和数组的区别 共同点&#xff1a;都是存储数据的容器不同点&#xff1a;数组的容量是固定的&#xff0c;集合的容量是可变的 3.如果存储…...

spark MySQL数据库配置

Spark 连接 MySQL 数据库的配置 要让 Spark 与 MySQL 数据库实现连接&#xff0c;需要进行以下配置步骤。下面为你提供详细的操作指南和示例代码&#xff1a; 1. 添加 MySQL JDBC 驱动依赖 你得把 MySQL 的 JDBC 驱动添加到 Spark 的类路径中。可以通过以下两种方式来完成&a…...

http断点续传

&#x1f6d1; 默认的 http.server&#xff08;Python 的 SimpleHTTPRequestHandler&#xff09;在某些版本和实现中并不可靠地支持 HTTP Range 请求&#xff08;即断点续传&#xff09;。 尤其在 Python 3.7~3.10 之间的某些版本中&#xff0c;这种支持是不完整或不可预测的。…...

# YOLOv3:基于 PyTorch 的目标检测模型实现

YOLOv3&#xff1a;基于 PyTorch 的目标检测模型实现 引言 YOLOv3&#xff08;You Only Look Once&#xff09;是一种流行的单阶段目标检测算法&#xff0c;它能够直接在输入图像上预测边界框和类别概率。YOLOv3 的优势在于其高效性和准确性&#xff0c;使其在实时目标检测任…...

Mac修改hosts文件方法

Mac修改hosts文件方法 在 macOS 上修改 hosts 文件需要管理员权限 步骤 1&#xff1a;打开终端 通过 Spotlight 搜索&#xff08;Command 空格&#xff09;输入 Terminal&#xff0c;回车打开。或进入 应用程序 > 实用工具 > 终端。 步骤 2&#xff1a;备份 hosts 文件…...

构建你的第一个简单AI助手 - 入门实践

在当今AI迅速发展的时代&#xff0c;构建自己的AI助手不再是高不可攀的技术壁垒。即使对于刚接触AI开发的程序员&#xff0c;也可以利用现代大语言模型(LLM)API构建功能丰富的AI助手。本文将带您完成一个简单但实用的AI助手构建过程&#xff0c;帮助您在日常工作中提高效率。 …...

Qt在统信UOS及银河麒麟Kylin系统中进行软件开发的环境配置,打包发布和注意事项

前述 之前由于项目的产品需要&#xff0c;必须将原本Windows上的产品移植到信创环境&#xff0c;也就是现在的主流国产操作系统统信UOS及银河麒麟Kylin。 先大概讲下信创系统&#xff1a; 信创系统就像是中国自己打造的 “数字基建”&#xff0c;目的是让咱们国家的信息技术不…...

一个完整的项目示例:taro开发微信小程序

前一周完成了一个项目&#xff0c;体测成绩转换的工具&#xff0c;没做记录&#xff0c;。这次计划开发一个地图应用小程序&#xff0c;记录一下。方便给使用的人。 一、申请微信小程序&#xff0c;填写相应的信息&#xff0c;取得开发者ID。这个要给腾讯地图使用的。 二、申…...

二次封装 el-dialog 组件:打造更灵活的对话框解决方案

文章目录 引言为什么需要二次封装&#xff1f;封装思路代码实现1. 基础封装组件 (Dialog.vue)2. Vue中引入使用示例 封装后的优势进阶优化建议 总结 引言 在 Vue 项目中&#xff0c;Element UI 的 el-dialog 是一个非常实用的对话框组件。但在实际开发中&#xff0c;我们经常会…...

3.2 一点一世界

第一步&#xff1a;引入背景与动机 “一点一世界”这个概念来源于泰勒公式的思想&#xff0c;即通过一个点及其导数信息来近似描述整个函数的行为。这种方法在数学分析中非常有用&#xff0c;因为它允许我们将复杂的函数简化为多项式形式&#xff0c;从而更容易进行计算和理解…...

力扣第156场双周赛

1. 找到频率最高的元音和辅音 给你一个由小写英文字母&#xff08;a 到 z&#xff09;组成的字符串 s。你的任务是找出出现频率 最高 的元音&#xff08;a、e、i、o、u 中的一个&#xff09;和出现频率最高的辅音&#xff08;除元音以外的所有字母&#xff09;&#xff0c;并返…...

学习日志05 java

1 java里面的类型转换怎么做&#xff1f;int转double为例 在 Java 里&#xff0c;把int转换为double有自动类型转换和强制类型转换两种方式。下面为你详细介绍&#xff1a; 自动类型转换&#xff08;隐式转换&#xff09; 由于double的取值范围比int大&#xff0c;Java 能够…...

4.7/Q1,GBD数据库最新文章解读

文章题目&#xff1a;Burden of non-COVID-19 lower respiratory infections in China (1990-2021): a global burden of disease study analysis DOI&#xff1a;10.1186/s12931-025-03197-7 中文标题&#xff1a;中国非 COVID-19 下呼吸道感染负担&#xff08;1990-2021 年&a…...

do while

先进再查 import java.util.Scanner;public class Hello {public static void main(String[] args) {Scanner in new Scanner(System.in);int number in.nextInt();int count 0;do{number number / 10;count count 1;} while( number > 0 );System.out.println(count…...

MySQL 主从复制与读写分离

一、MySQL 主从复制 &#xff08;0&#xff09;概述 MySQL 主从复制是一种数据同步机制&#xff0c;允许数据从一个主数据库&#xff08;Master&#xff09;复制到一个或多个从数据库&#xff08;Slave&#xff09;。其主要用途包括&#xff1a; 数据冗余与灾备&#xff1a;通…...

CSS3 基础知识、原理及与CSS的区别

CSS3 基础知识、原理及与CSS的区别 CSS3 基础知识 CSS3 是 Cascading Style Sheets 的第3个版本&#xff0c;是CSS技术的升级版本&#xff0c;于1999年开始制订&#xff0c;2001年5月23日W3C完成了CSS3的工作草案。 CSS3 主要模块 选择器&#xff1a;更强大的元素选择方式盒…...

第十七章:Llama Factory 深度剖析:易用性背后的微调框架设计

章节引导&#xff1a;在模型定制的实践中&#xff0c;Llama Factory (github.com/hiyouga/LLaMA-Factory) 以其惊人的易用性和对多种开源大模型、多种参数高效微调方法&#xff08;PEFT&#xff09;的广泛支持&#xff0c;迅速成为开源社区的热门选择。你可能已经熟练掌握了如何…...

SpringSecurity当中的CSRF防范详解

CSRF防范 什么是CSER 以下是基于 CSRF 攻击过程的 顺序图 及详细解释&#xff0c;结合多个技术文档中的攻击流程&#xff1a; CSRF 攻击顺序图 #mermaid-svg-FqfMBQr8DsGRoY2C {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#m…...

CSRF防范歪招

不保存到Cookie里呗 如果每次请求都强制通过请求头携带Token&#xff0c;并且不将Token存储在Cookie中&#xff0c;这种设计可以有效防御CSRF攻击。以下是具体原因和关键实现要点&#xff1a; 1. 防御原理 CSRF攻击的本质是攻击者伪造用户的请求&#xff0c;利用浏览器自动携…...

MyBatis与MyBatis-Plus深度分析

MyBatis与MyBatis-Plus深度分析 一、MyBatis原理与基础 1. MyBatis核心原理 MyBatis是一个半自动ORM框架&#xff0c;主要原理包括&#xff1a; SQL与代码分离&#xff1a;通过XML或注解配置SQL语句动态SQL&#xff1a;提供if、choose、foreach等标签实现动态SQL结果集映射…...

STM32 变量加载到flash的过程中

在STM32中&#xff0c;BIN文件内需要加载到RAM的数据由链接脚本&#xff08;Linker Script&#xff09;​和启动代码&#xff08;Startup Code&#xff09;​共同决定&#xff0c;具体机制如下&#xff1a; 一、BIN文件内容结构 STM32的BIN文件包含三类数据&#xff1a; ​Co…...

TCP核心机制

1. TCP五大核心机制 1.1. 顺序问题&#xff08;稳重不乱&#xff09; 背景&#xff1a;网络传输中数据包可能因路径不同或网络波动导致乱序到达&#xff0c;需保证接收方能按正确顺序处理数据。 原理&#xff1a; 序列号&#xff08;Sequence Number&#xff09;&#xff1…...

6.3对象序列化

在 Java 中&#xff0c;ObjectInputStream 和 ObjectOutputStream 是用于实现对象序列化&#xff08;Serialization&#xff09;和反序列化&#xff08;Deserialization&#xff09;的核心类。通过这两个类&#xff0c;可以将对象转换为字节流进行存储或传输&#xff0c;并在需…...

Flutter小白入门指南

Flutter小白入门指南 &#x1f680; 轻松构建漂亮的跨平台应用 &#x1f4d1; 目录 一、Flutter是什么&#xff1f; 为什么选择Flutter&#xff1f;Flutter工作原理 二、环境搭建与命令行 安装Flutter SDK常用Flutter命令创建第一个项目 三、Flutter基础语法 变量与类型函数条…...

Python -将MP4文件转为GIF图片

给大家提供一个工具代码&#xff0c;使用Python&#xff0c;将MP4格式的视频文件&#xff0c;转换为GIF图片 首先先安装必要的包&#xff1a; pip install imageio pip install imageio[ffmpeg] 工具代码&#xff1a; import imageio# 视频文件路径 video_path r""…...

51c嵌入式~电路~合集27

我自己的原文哦~ 一、7805应用电路 简介 如上图&#xff0c;7805 集成稳压电路。 7805是串联式三端稳压器&#xff0c;三个端口分别是电压输入端&#xff08;IN&#xff09;&#xff0c;地线&#xff08;GND&#xff09;&#xff0c;稳压输出&#xff08;OUT&#xff09;…...

数据结构—(链表,栈,队列,树)

本文章写的比较乱&#xff0c;属于是缝合怪&#xff0c;很多细节没处理&#xff0c;显得粗糙&#xff0c;日后完善&#xff0c;今天赶时间了。 1. 红黑树的修复篇章 2. 红黑树的代码理解&#xff08;部分写道注释之中了&#xff09; 3. 队列与栈的代码 4. 重要是理解物理逻辑&a…...

GitHub 趋势日报 (2025年05月12日)

本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日整体趋势 Top 10 排名项目名称项目描述今日获星总星数语言1harry0703/MoneyPrinterTurbo利用ai大模型&#xff0c;一键生成高清短视频使用…...

ebook2audiobook开源程序使用动态 AI 模型和语音克隆将电子书转换为带有章节和元数据的有声读物。支持 1,107+ 种语言

​一、软件介绍 文末提供程序和源码下载 ebook2audiobook开源程序使用动态 AI 模型和语音克隆将电子书转换为带有章节和元数据的有声读物。支持 1,107 种语言。从电子书到带有章节和元数据的有声读物的 CPU/GPU 转换器&#xff0c;使用 XTTSv2、Bark、Vits、Fairseq、YourTTS …...

《算法导论(第4版)》阅读笔记:p39-p48

《算法导论(第4版)》学习第 13 天&#xff0c;p39-p48 总结&#xff0c;总计 10 页。 一、技术总结 1. recurrence/recurrence equation 书里面 recurrence(递归式) 和 recurrence equation(递归方程) 指的是同一个东西。 二、英语总结(生词&#xff1a;2) 1. squint (1)…...

c语言第一个小游戏:贪吃蛇小游戏07

贪吃蛇吃饭喽 所谓贪吃蛇的食物&#xff0c;也就是创建一个和蛇身一样的结构体&#xff0c;只是这个结构体不是链表&#xff0c;也是将这个结构体设置hang和lie坐标&#xff0c;放进gamepic进行扫描&#xff0c;扫到了就也是做操作将 ## 打出来 #include <curses.h> #i…...

(七)深度学习---神经网络原理与实现

分类问题回归问题聚类问题各种复杂问题决策树√线性回归√K-means√神经网络√逻辑回归√岭回归密度聚类深度学习√集成学习√Lasso回归谱聚类条件随机场贝叶斯层次聚类隐马尔可夫模型支持向量机高斯混合聚类LDA主题模型 一.神经网络原理概述 二.神经网络的训练方法 三.基于Ker…...

VSCode中Node.js 使用教程

一、visual studio code下载与安装 二、修改vscode主题颜色 三、汉化 菜单view-->Command Palette...,输入Configure Display Language。 重启之后如下&#xff1a; 四、安装node.js Node.js 是一个基于Chrome V8引擎的JavaScript运行环境&#xff0c;使用了事件驱动、非阻…...

web 自动化之 KDT 关键字驱动详解

一、什么是关键字驱动&#xff1f; 1、什么是关键字驱动&#xff1f;&#xff08;以关键字函数驱动测试&#xff09; 关键字驱动又叫动作字驱动&#xff0c;把项目业务封装成关键字函数&#xff0c;再基于关键字函数实现自动化测试 2、关键字驱动测试原理 关键字驱动测试是一…...