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

Apache Airflow开源程序是一个以编程方式编写、计划和监控工作流程的平台

一、软件介绍

文末提供程序和源码下载

       Apache Airflow开源程序是一个以编程方式编写、计划和监控工作流程的平台,当工作流被定义为代码时,它们将变得更加可维护、可版本化、可测试和协作性。使用 Airflow 将工作流创作为任务的有向无环图 (DAG)。Airflow 计划程序在一系列工作程序上执行您的任务,同时遵循指定的依赖关系。丰富的命令行实用程序使在 DAG 上执行复杂的手术变得轻而易举。丰富的用户界面使您可以轻松地可视化生产中运行的管道、监控进度并在需要时解决问题。

二、项目重点

  • Airflow 最适合大多数静态且缓慢变化的工作流。当 DAG 结构在每次运行中相似时,它会阐明工作单元和连续性。其他类似的项目包括 Luigi、Oozie 和 Azkaban。
  • Airflow 通常用于处理数据,但认为任务理想情况下应该是幂等的(即,任务的结果将是相同的,并且不会在目标系统中创建重复的数据),并且不应将大量数据从一个任务传递到下一个任务(尽管任务可以使用 Airflow 的 XCom 功能传递元数据)。对于大容量、数据密集型任务,最佳实践是将委托给专门从事该类型工作的外部服务。
  • Airflow 不是流式处理解决方案,但它通常用于处理实时数据,批量从流中提取数据。

三、原则

  • 动态 :Airflow 管道是配置即代码 (Python),允许生成动态管道。这允许编写动态实例化管道的代码。
  • 可扩展 :轻松定义您自己的运算符、执行程序并扩展库,使其适合适合您环境的抽象级别。
  • 优雅 : Airflow 管道精简而明确。使用强大的 Jinja 模板引擎将脚本参数化内置于 Airflow 的核心中。
  • 可扩展 :Airflow 具有模块化架构,并使用消息队列来编排任意数量的工作线程。

四、要求

Apache Airflow 经过以下测试:

注意 :Airflow 目前可以在符合 POSIX 的作系统上运行。对于开发,它会定期在相当现代的 Linux 发行版和最新版本的 macOS 上进行测试。在 Windows 上,您可以通过 WSL2(适用于 Linux 2 的 Windows 子系统)或通过 Linux 容器运行它。添加 Windows 支持的工作通过 #10388 进行跟踪,但这不是高优先级。您应该只使用基于 Linux 的发行版作为“生产”执行环境,因为这是唯一受支持的环境。在我们的 CI 测试中使用的唯一发行版以及社区托管的 DockerHub 映像中使用的发行版是 Debian 书虫

五、开始

访问 Airflow 官方网站文档(最新稳定版本)以获取帮助 安装 Airflow, 入门 ,或演练更完整的教程 

从 PyPI 安装

  • 我们在 PyPI 中将 Apache Airflow 作为 apache-airflow 包发布。然而,安装它有时可能很棘手,因为 Airflow 既是库又是应用程序。库通常保持其依赖项开放,应用程序通常会固定它们,但我们应该两者都不做,而且应该同时做。我们决定尽可能保持依赖项开放(在 pyproject.toml 中),以便用户可以根据需要安装不同版本的库。这意味着 pip install apache-airflow 不会不时工作或产生不可用的 Airflow 安装。
  • 但是,为了实现可重复的安装,我们在孤立的 constraints-main 和 constraints-2-0 分支中保留了一组“已知正在工作”的约束文件。我们按主要/次要 Python 版本分别保留这些“已知正在工作”的约束文件。从 PyPI 安装 Airflow 时,您可以将它们用作约束文件。请注意,您必须在 URL 中指定正确的 Airflow 标签/版本/分支和 Python 版本。

  1. Installing just Airflow:  仅安装 Airflow:

Note: Only pip installation is currently officially supported.
注意:目前官方仅支持 pip 安装。

While it is possible to install Airflow with tools like Poetry or pip-tools, they do not share the same workflow as pip - especially when it comes to constraint vs. requirements management. Installing via Poetry or pip-tools is not currently supported.
虽然可以使用 Poetry 或 pip-tools 共享相同的工作流,它们与 pip - 尤其是在约束与需求管理方面。目前不支持通过 Poetry 或 pip-tools 安装。

There are known issues with bazel that might lead to circular dependencies when using it to install Airflow. Please switch to pip if you encounter such problems. Bazel community works on fixing the problem in this PR <https://github.com/bazelbuild/rules_python/pull/1166>_ so it might be that newer versions of bazel will handle it.
Bazel 存在一些已知问题,在使用 Bazel 安装 Airflow 时可能会导致循环依赖关系。如果您遇到此类问题,请切换到 pipBazel 社区致力于修复 _ 中 this PR <https://github.com/bazelbuild/rules_python/pull/1166> 的问题,因此可能会有较新版本的 Bazel 来处理该问题。

If you wish to install Airflow using those tools, you should use the constraint files and convert them to the appropriate format and workflow that your tool requires.
如果您希望使用这些工具安装 Airflow,则应使用约束文件并将它们转换为工具所需的适当格式和工作流程。

pip install 'apache-airflow==2.10.5' \--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.10.5/constraints-3.9.txt"
  1. Installing with extras (i.e., postgres, google)
    使用 extras(即 postgres、google)安装
pip install 'apache-airflow[postgres,google]==2.10.5' \--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.10.5/constraints-3.9.txt"

 便利方式

还有其他安装和使用 Airflow 的方法。这些是“方便”的方法 - 它们不是 ASF 发布政策规定的“官方版本”,但不想自己构建软件的用户可以使用它们。

Those are - in the order of most common ways people install Airflow:
这些是 - 按照人们安装 Airflow 的最常见方式的顺序:

  • PyPI releases to install Airflow using standard pip tool
    PyPI 版本使用标准 pip 工具安装 Airflow
  • Docker Images to install airflow via docker tool, use them in Kubernetes, Helm Charts, docker-composedocker swarm, etc. You can read more about using, customizing, and extending the images in the Latest docs, and learn details on the internals in the images document.
    用于安装 airflow 的 Docker 镜像 docker 工具,在 Kubernetes、Helm Charts、docker-composedocker swarm 等中使用它们。 您可以 有关使用、自定义和扩展映像的更多信息,请参阅 最新文档 ,并在 images 文档中了解有关内部结构的详细信息。
  • Tags in GitHub to retrieve the git project sources that were used to generate official source packages via git
    GitHub 中的标记 ,用于检索用于通过 git 生成官方源码包的 git 项目源码

All those artifacts are not official releases, but they are prepared using officially released sources. Some of those artifacts are "development" or "pre-release" ones, and they are clearly marked as such following the ASF Policy.
所有这些工件都不是官方版本,但它们是使用官方发布的源代码准备的。其中一些工件是“开发”或“预发布”的,它们按照 ASF 策略被明确标记。

六、用户界面

DAG:环境中所有 DAG 的概述。

网格 :跨时间的 DAG 的网格表示。

Graph:DAG 的依赖项及其在特定运行中的当前状态的可视化。

Task Duration(任务持续时间 ):一段时间内在不同任务上花费的总时间。

甘特图 :DAG 的持续时间和重叠时间。

代码 :快速查看 DAG 源代码的方法。

语义版本控制

As of Airflow 2.0.0, we support a strict SemVer approach for all packages released.
从 Airflow 2.0.0 开始,我们支持对发布的所有软件包使用严格的 SemVer 方法。

There are few specific rules that we agreed to that define details of versioning of the different packages:
我们同意了几个特定的规则来定义不同包的版本控制细节:

  • Airflow: SemVer rules apply to core airflow only (excludes any changes to providers). Changing limits for versions of Airflow dependencies is not a breaking change on its own.
    Airflow:SemVer 规则仅适用于核心 Airflow(不包括对提供程序的任何更改)。更改 Airflow 依赖项版本的限制本身并不是重大更改。
  • Airflow Providers: SemVer rules apply to changes in the particular provider's code only. SemVer MAJOR and MINOR versions for the packages are independent of the Airflow version. For example, google 4.1.0 and amazon 3.0.3 providers can happily be installed with Airflow 2.1.2. If there are limits of cross-dependencies between providers and Airflow packages, they are present in providers as install_requires limitations. We aim to keep backwards compatibility of providers with all previously released Airflow 2 versions but there will sometimes be breaking changes that might make some, or all providers, have minimum Airflow version specified.
    Airflow 提供程序 :SemVer 规则仅适用于特定提供程序代码中的更改。软件包的 SemVer MAJOR 和 MINOR 版本独立于 Airflow 版本。例如,google 4.1.0 和 amazon 3.0.3 提供程序可以愉快地与 Airflow 2.1.2 一起安装。如果提供程序和 Airflow 包之间存在交叉依赖关系限制,则它们将作为 install_requires 限制存在于提供程序中。我们的目标是保持提供程序与以前发布的所有 Airflow 2 版本的向后兼容性,但有时会发生重大更改,这可能会使部分或所有提供程序指定最低 Airflow 版本。
  • Airflow Helm Chart: SemVer rules apply to changes in the chart only. SemVer MAJOR and MINOR versions for the chart are independent of the Airflow version. We aim to keep backwards compatibility of the Helm Chart with all released Airflow 2 versions, but some new features might only work starting from specific Airflow releases. We might however limit the Helm Chart to depend on minimal Airflow version.
    Airflow Helm 图表 :SemVer 规则仅适用于图表中的更改。图表的 SemVer MAJOR 和 MINOR 版本独立于 Airflow 版本。我们的目标是保持 Helm 图表与所有已发布的 Airflow 2 版本的向后兼容性,但某些新功能可能仅从特定 Airflow 版本开始有效。但是,我们可能会将 Helm 图表限制为取决于最低 Airflow 版本。
  • Airflow API clients: Their versioning is independent from Airflow versions. They follow their own SemVer rules for breaking changes and new features - which for example allows to change the way we generate the clients.
    Airflow API 客户端 :它们的版本控制独立于 Airflow 版本。它们遵循自己的 SemVer 规则来进行重大更改和新功能 - 例如,这允许更改我们生成客户端的方式。

Version Life Cycle  版本生命周期

Apache Airflow version life cycle:
Apache Airflow 版本生命周期:

有限支持版本将仅支持安全和关键错误修复。EOL 版本不会获得任何修复或支持。我们始终建议所有用户为正在使用的任何主要版本运行最新的可用次要版本。我们强烈建议在 EOL 日期之前尽早升级到最新的 Airflow 主要版本。

支持 Python 和 Kubernetes 版本

从 Airflow 2.0 开始,我们同意了我们遵循的 Python 和 Kubernetes 支持的某些规则。 它们基于 Python 和 Kubernetes 的官方发布时间表,在 Python 开发人员指南和 Kubernetes 版本倾斜策略

  • 当 Python 和 Kubernetes 版本达到 EOL 时,我们将停止支持它们。除 Kubernetes 外,如果两个主要云提供商仍提供支持,则 Airflow 仍支持该版本。在 EOL 日期之后,我们会立即在 main 中放弃对这些 EOL 版本的支持,当我们发布 Airflow 的第一个新 MINOR(如果没有新的 MINOR 版本,则为 MAJOR)时,它实际上被删除了。例如,对于 Python 3.9,这意味着我们将在 2023 年 6 月 27 日之后立即放弃对 main 的支持,而之后发布的第一个 Airflow MAJOR 或 MINOR 版本将不会有它。
  • 在正式发布后,我们主要支持新版本的 Python/Kubernetes,一旦我们让它们在 CI 管道中工作(由于依赖项主要赶上了新版本的 Python,这可能不是立即的),我们就会根据工作的 CI 设置在 Airflow 中发布新的映像/支持。
  • 此政策是尽力而为的,这意味着在某些情况下,如果情况需要,我们可能会提前终止支持。

基本作系统对参考 Airflow 映像的支持

Airflow 社区提供方便打包的容器映像,每当我们发布 Apache Airflow 版本时,都会发布这些映像。这些映像包含:

  • Base OS with necessary packages to install Airflow (stable Debian OS)
    具有安装 Airflow 所需的软件包的基础作系统(稳定的 Debian 作系统)
  • Base Python installation in versions supported at the time of release for the MINOR version of Airflow released (so there could be different versions for 2.3 and 2.2 line for example)
    在发布时支持的版本中进行基本 Python 安装,以用于发布的 Airflow 的 MINOR 版本(因此,例如,2.3 和 2.2 行可能有不同的版本)
  • Libraries required to connect to supported Databases (again the set of databases supported depends on the MINOR version of Airflow)
    连接到支持的数据库所需的库(同样,支持的数据库集取决于 Airflow 的 MINOR 版本)
  • Predefined set of popular providers (for details see the Dockerfile).
    预定义的常用提供程序集(有关详细信息,请参阅 Dockerfile)。
  • Possibility of building your own, custom image where the user can choose their own set of providers and libraries (see Building the image)
    可以构建您自己的自定义映像,用户可以在其中选择自己的一组提供程序和库(请参阅构建映像 )
  • In the future Airflow might also support a "slim" version without providers nor database clients installed
    将来,Airflow 可能还支持没有安装提供程序和数据库客户端的“精简”版本

Airflow 依赖项的方法

  • Airflow 有很多依赖项 - 直接和传递,而且 Airflow 既是库又是应用程序,因此我们的依赖项策略必须包括 - 应用程序安装的稳定性,以及为开发 DAG 的用户安装更新版本的依赖项的能力。我们开发了一种使用约束的方法,以确保 airflow 可以以可重复的方式安装,同时我们不限制我们的用户升级大多数依赖项。因此,我们决定默认不使用 Airflow 依赖项的上限版本,除非我们有充分的理由相信它们需要上限,因为依赖项的重要性以及升级特定依赖项所涉及的风险。我们还对我们知道会导致问题的依赖项进行了上限设置。
  • 我们的约束机制负责自动查找和升级所有非上限依赖项(前提是所有测试都通过)。我们的主要构建失败将指示是否存在破坏测试的依赖项版本 - 表明我们应该对它们进行上绑,或者我们应该修复我们的代码/测试以考虑来自这些依赖项的上游更改。
  • 每当我们对这样的依赖进行上限时,我们应该始终说明我们为什么要这样做 - 即我们应该有一个很好的理由为什么依赖是上限的。我们还应该提到删除绑定的条件是什么。

Airflow Core 的依赖项方法

Those dependencies are maintained in pyproject.toml.
这些依赖项在 pyproject.toml 中维护。

There are few dependencies that we decided are important enough to upper-bound them by default, as they are known to follow predictable versioning scheme, and we know that new versions of those are very likely to bring breaking changes. We commit to regularly review and attempt to upgrade to the newer versions of the dependencies as they are released, but this is manual process.
默认情况下,我们认为很少有依赖项足够重要,因此可以对其进行上限限制,因为众所周知,它们遵循可预测的版本控制方案,并且我们知道这些依赖项的新版本很可能会带来重大变化。我们承诺定期审查并在依赖项发布时尝试升级到新版本,但这是手动过程。

The important dependencies are:
重要的依赖项包括:

  • SQLAlchemy: upper-bound to specific MINOR version (SQLAlchemy is known to remove deprecations and introduce breaking changes especially that support for different Databases varies and changes at various speed)
    SQLAlchemy:特定 MINOR 版本的上限(众所周知,SQLAlchemy 会删除弃用并引入重大更改,尤其是对不同数据库的支持会有所不同,并且以不同的速度进行更改)
  • Alembic: it is important to handle our migrations in predictable and performant way. It is developed together with SQLAlchemy. Our experience with Alembic is that it very stable in MINOR version
    Alembic:以可预测和高性能的方式处理我们的迁移非常重要。它是与 SQLAlchemy 一起开发的。我们对 Alembic 的经验是,它在 MINOR 版本中非常稳定
  • Flask: We are using Flask as the back-bone of our web UI and API. We know major version of Flask are very likely to introduce breaking changes across those so limiting it to MAJOR version makes sense
    Flask:我们使用 Flask 作为 Web UI 和 API 的主干。我们知道 Flask 的主要版本很可能会引入重大更改,因此将其限制为主要版本是有意义的
  • werkzeug: the library is known to cause problems in new versions. It is tightly coupled with Flask libraries, and we should update them together
    Werkzeug:众所周知,该库会在新版本中引起问题。它与 Flask 库紧密耦合,我们应该一起更新它们
  • celery: Celery is a crucial component of Airflow as it used for CeleryExecutor (and similar). Celery follows SemVer, so we should upper-bound it to the next MAJOR version. Also, when we bump the upper version of the library, we should make sure Celery Provider minimum Airflow version is updated.
    celery:Celery 是 Airflow 的关键组件,因为它用于 CeleryExecutor(和类似)。 芹菜 遵循 SemVer,因此我们应该将其上限绑定到下一个 MAJOR 版本。此外,当我们提升库的上层版本时,我们应该确保 Celery Provider 最低 Airflow 版本已更新。
  • kubernetes: Kubernetes is a crucial component of Airflow as it is used for the KubernetesExecutor (and similar). Kubernetes Python library follows SemVer, so we should upper-bound it to the next MAJOR version. Also, when we bump the upper version of the library, we should make sure Kubernetes Provider minimum Airflow version is updated.
    kubernetes:Kubernetes 是 Airflow 的关键组件,因为它用于 KubernetesExecutor(和类似)。Kubernetes Python 库遵循 SemVer,因此我们应该将其上限到下一个 MAJOR 版本。此外,当我们提升库的上限版本时,我们应该确保 Kubernetes Provider 最低 Airflow 版本已更新。

Approach for dependencies in Airflow Providers and extras
Airflow Providers 和 extras 中的依赖项方法

The main part of the Airflow is the Airflow Core, but the power of Airflow also comes from a number of providers that extend the core functionality and are released separately, even if we keep them (for now) in the same monorepo for convenience. You can read more about the providers in the Providers documentation. We also have set of policies implemented for maintaining and releasing community-managed providers as well as the approach for community vs. 3rd party providers in the providers document.
Airflow 的主要部分是 Airflow 核心,但 Airflow 的力量也来自许多 扩展核心功能并单独发布的提供程序,即使我们保留它们(暂时) 为方便起见,在同一个 monorepo 中。您可以在 提供商文档 。我们还实施了一套策略来维护和发布社区管理的提供商,以及提供商文档中的社区与第三方提供商的方法。

Those extras and providers dependencies are maintained in provider.yaml of each provider.
这些 extras 和 providers 依赖项在每个提供程序的 provider.yaml 中维护。

By default, we should not upper-bound dependencies for providers, however each provider's maintainer might decide to add additional limits (and justify them with comment).
默认情况下,我们不应该对 provider 的依赖项进行上限限制,但是每个 provider 的维护者可能会决定添加额外的限制(并通过评论来证明它们)。

七、软件下载

夸克网盘分享

本文信息来源于GitHub作者地址:https://github.com/apache/airflow

相关文章:

Apache Airflow开源程序是一个以编程方式编写、计划和监控工作流程的平台

一、软件介绍 文末提供程序和源码下载 Apache Airflow开源程序是一个以编程方式编写、计划和监控工作流程的平台&#xff0c;当工作流被定义为代码时&#xff0c;它们将变得更加可维护、可版本化、可测试和协作性。使用 Airflow 将工作流创作为任务的有向无环图 &#xff08;D…...

大数据学习(101)-spark的高可用模式

&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一…...

数字内容体验驱动用户参与增效

数字体验驱动参与增长 在数字化竞争日益激烈的市场环境中&#xff0c;数字内容体验已成为撬动用户深度参与的核心杠杆。通过个性化推荐算法与跨渠道分发策略的协同作用&#xff0c;企业能够精准匹配用户兴趣点&#xff0c;将碎片化信息转化为连贯的价值链条。数据显示&#xf…...

一文详解OpenGL环境搭建:Ubuntu20.4使用CLion配置OpenGL开发环境

在计算机图形学的广阔领域中,OpenGL作为行业标准的图形库,为开发者提供了强大的工具集来创建从简单的2D图形到复杂的3D世界。然而,对于初学者而言,配置一个合适的开发环境是迈向成功的第一步。本文将详细介绍如何在Ubuntu 20.04.3 LTS操作系统上搭建基于CLion的OpenGL开发环…...

欧拉函数模板

1.欧拉函数模板 - 蓝桥云课 问题描述 这是一道模板题。 首先给出欧拉函数的定义&#xff1a;即 Φ(n) 表示的是小于等于 n 的数中和 n 互质的数的个数。 比如说 Φ(6)2&#xff0c;当 n 是质数的时候&#xff0c;显然有 Φ(n)n−1。 题目大意&#xff1a; 给定 n 个正整数…...

用PointNet++训练自己的数据集(语义分割模型semseg)

&#xff08;1&#xff09;训练部件分割&#xff08;partseg&#xff09;模型和检测自己点云并将结果保存txt&#xff0c;请看博主上两篇文章 &#xff08;2&#xff09;本文背景是将pipe点云上的缺陷和本体检测出来&#xff0c;即1种语义场景&#xff08;pipe&#xff09;&…...

Java反射机制深度解析:方法、实战与底层机制

大家好&#xff0c;我是钢板兽&#xff01; 反射作为Java的特性&#xff0c;它不仅是Spring三大特性Ioc、DI、AOP的基础&#xff0c;而且MyBatis、Jackson序列化、rpc远程调用接口都用到了反射机制。 本文将带你系统性地掌握 Java 反射的使用&#xff0c;通过 JSON 反序列化的…...

查看wifi密码

netsh wlan show profile nameCMCC-Rkt_Wi-Fi5 keyclear CMCC-Rkt_Wi-Fi5是无线网名称...

RPC 发展史

RPC 发展史 RPC&#xff08;Remote Procedure Call&#xff09;即远程过程调用&#xff0c;随着微服务的兴起&#xff0c;每个服务都拥有自己的数据库&#xff0c;负责各自的模块&#xff0c;例如 keystone&#xff08;认证服务&#xff09;负责用户信息、权限认证的内容&…...

蓝桥杯基础算法-递归

代码简洁&#xff0c;但涉及到的运算&#xff0c;会随着递归层数的增加成指数级增长 路分析&#xff1a;第20行20列位于45度这条线上 这条线上的数字是1 5 13 25 41...两数之差:4 8 12 16 --->每一个都是在前面的基础上4&#xff0c;可以用递归或者循环 public class dem…...

山东大学离散数学第七章习题解析

参考教材&#xff1a;离散数学教程&#xff0c;徐秋亮 / 栾俊峰 / 卢雷 / 王慧 / 赵合计 编著&#xff0c;山东大学计算机科学与技术学院 注&#xff1a;该解析为个人所写&#xff0c;涵盖了 2022-2023-2 学期赵合计老师所布置的所有课本习题&#xff1b;由于学识、认识及经验…...

关于使用python 安装 flask-openapi3扩展,使用docker 环境的完整复盘

在某个时刻 需要运行python 3 flask-openapi3扩展 当前因为服务器为国产化服务器&#xff0c;操作系统版本为麒麟&#xff0c;python 版本为3.7 因为要安装flask-openapi3 包 又因为flask 版本小于2.0 from flask_openapi3 import OpenAPI,Info,Tag目前安装的是 …...

MybatisPlus的一些基本操作

mybatisplus分页 Testvoid testpage(){IPage<User> page new Page<>(1,3); ​userDao.selectPage(page,null);System.out.println("当前页码值&#xff1a;"page.getCurrent());System.out.println("每页显示数&#xff1a;"page.getSize());S…...

debian12安装mysql5.7.42(deb)

安装 官方文档 https://dev.mysql.com/doc/mysql-installation-excerpt/8.0/en/linux-installation-debian.html 上面是8.0的教程&#xff0c;服了我说怎么那么奇怪 5.7官方教程 https://dev.mysql.com/doc/mysql-installation-excerpt/5.7/en/linux-installation-debian.html …...

基于Python脚本实现Flink on YARN任务批量触发Savepoint的实践指南

基于Python脚本实现Flink on YARN任务批量触发Savepoint的实践指南 一、背景与价值 在流计算生产环境中&#xff0c;Flink on YARN的部署方式凭借其资源管理优势被广泛采用。Savepoint作为Flink任务状态的一致性快照&#xff0c;承载着故障恢复、版本升级、作业暂停等重要场景…...

Winform入门进阶企业级开发示例:http接口数据清洗转换、断线续传、mqtt数据传输实例详解(附代码资源下载)

场景 C#/Winform入门、进阶、强化、扩展、知识体系完善等知识点学习、性能优化、源码分析专栏分享: C#/Winform入门、进阶、强化、扩展、知识体系完善等知识点学习、性能优化、源码分析专栏分享_winform 强化学习-CSDN博客 如何将以上相关理论知识学以致用。下面针对Winform…...

PHP开发效率提升利器:通义灵码在VSCode中的应用与技巧

引言 在 PHP 开发领域&#xff0c;提高编码效率和质量是每位开发者追求的目标。通义灵码&#xff0c;作为一款由阿里云技术团队开发的智能编码助手&#xff0c;能够通过其强大的 AI 能力&#xff0c;为 PHP 开发者提供包括代码自动补全、智能注释、代码优化等多方面的支持。本…...

WHAT - React 错误边界处理 - react-error-boundary

目录 安装使用方式常用 Props使用场景 react-error-boundary 是一个由 Brian Vaughn 开发的 React 组件库&#xff0c;用于更方便地处理组件树中的错误&#xff08;错误边界&#xff09;。 阅读参考&#xff1a; React Error Boundariesreact-error-boundary 安装 npm inst…...

数据模型评估的四维黄金法则:从技术验证到业务价值证明

引言&#xff1a;为什么你的数据模型总被质疑&#xff1f; 在滴滴出行的一次核心业务会议上&#xff0c;数据团队与业务部门爆发了激烈争论&#xff1a;新上线的订单预测模型是否真的优于旧系统&#xff1f;数据工程师认为查询速度提升40%已是巨大成功&#xff0c;业务方却质疑…...

vscode ctrl+鼠标左键不能跳转

笔者使用的vscode版本是1.85.2&#xff08;一周前从1.99降下来的&#xff0c;因为版本过高连不上服务器&#xff09;。 使用python时突然发现代码看起来有些别扭&#xff0c;细看之下发现是import xxx语句中的包的颜色从之前的青色变成了现在的白色。再用ctrl左键点击包名试图…...

换动态IP对电脑有什么影响:全面解析与实用指南

在当今数字化时代&#xff0c;IP地址作为网络世界的"身份证"&#xff0c;对我们的网络体验有着重要影响。许多用户出于某些原因&#xff0c;会考虑更换动态IP地址。那么&#xff0c;这种操作究竟会对我们的电脑产生哪些影响&#xff1f;是利大于弊还是弊大于利&#…...

Go语言从零构建SQL数据库(6) - sql解析器(番外)- *号的处理

番外&#xff1a;处理SQL通配符查询 在SQL中&#xff0c;SELECT * FROM table是最基础的查询之一&#xff0c;星号&#xff08;*&#xff09;是一个通配符&#xff0c;表示"选择所有列"。虽然通配符查询看起来简单&#xff0c;但在解析器中需要特殊处理。下面详细介…...

大模型推理引擎选型与应用场景分析:SGLang、Ollama、VLLM 和 LLaMA.cpp

在当下的大模型技术生态中&#xff0c;SGLang、Ollama、VLLM 和 LLaMA.cpp 各具特色&#xff0c;适用于不同的应用场景和用户需求。以下是它们的核心特点及适用场景的深度剖析&#xff1a; 1. SGLang&#xff1a;高性能企业级推理引擎 核心优势&#xff1a; 零开销批处理&…...

参考平面跨分割情况下的信号回流

前言&#xff1a;弄清楚信号的回流路径&#xff0c;是学习EMC和高速的第一步&#xff01; 如果我们不管信号的回流路径&#xff0c;会造成什么后果&#xff1f;1、信号完整性问题&#xff0c;信号的回流路径不连续会导致信号反射、衰减和失真。2、信号衰减和噪声干扰&#xff…...

Vue2下载二进制文件

后端&#xff1a; controller: GetMapping(value "/get-import-template")public void problemTemplate(HttpServletRequest request, HttpServletResponse response) throws Exception {iUserService.problemTemplate(request, response);} service: void probl…...

AnimateCC基础教学:随机抽取花名册,不能重复

一.核心代码: this.btnStartObj.addEventListener("click", switchBtn); this.btnOkObj.addEventListener("click", oKBtn); createjs.Ticker.addEventListener("tick", updateRandom); var _this this; var nameArr ["张三", &quo…...

windows+cmake+vscode+NDK远程调试安卓端C++项目

windowscmakevscodeNDK远程调试安卓端C项目 windowscmakevscodeNDK远程调试安卓端C项目 windowscmakevscodeNDK远程调试安卓端C项目 使用C开发安卓端算法库时&#xff0c;需要使用NDK进行交叉编译。使用NDK编译代码时&#xff0c;需要编写.mk脚本进行代码的编译和链接&#xf…...

大语言模型(LLM)全解析:从原理到实战应用

在人工智能飞速发展的今天&#xff0c;大语言模型(LLM)已成为改变我们工作生活的重要技术。无论是ChatGPT的对话能力&#xff0c;还是DeepSeek的文本处理&#xff0c;背后都离不开LLM的强大支持。本文将用通俗易懂的语言&#xff0c;带您全面了解LLM的工作原理、训练方法、优化…...

Qt 入门 4 之标准对话框

Qt 入门 4 之标准对话框 Qt提供了一些常用的对话框类型,它们全部继承自QDialog类,并增加了自己的特色功能,比如获取颜色、显示特定信息等。下面简单讲解这些对话框,可以在帮助索引中查看Standard Dialogs关键字,也可以直接索引相关类的类名。 本文将以一个新的项目为主介绍不…...

PyTorch DataLoader 参数详解

在使用 PyTorch 的 DataLoader 时&#xff0c;有许多参数可以调整&#xff0c;这些参数能够帮助我们平衡数据加载效率、内存使用和训练过程的稳定性。下面介绍几个常用参数&#xff0c;并讲解它们的作用&#xff1a; dataset 含义&#xff1a; 数据集对象&#xff0c;必须实现 …...

PowerBI 计算时间用EDATE

我在原表基础上&#xff0c;根据日期字段&#xff0c;计算去年时间 CONCATENATEX(DISTINCT(SELECTCOLUMNS(VALUES(日期表),"去年", FORMAT(DATEADD([日期], -1, YEAR), "yyyyMM"))), [YearMonth],",") 我发现很奇怪的现象&#xff0c;假如某个日…...

GRBL运动控制算法(四)加减速运算

前言 在数控系统和运动控制领域&#xff0c;GRBL 作为一款高效、轻量化的开源固件&#xff0c;因其卓越的性能和简洁的架构被广泛应用于各类嵌入式运动控制场景。GRBL加减速算法的实现尤为关键——它直接决定了运动控制的精度、效率与设备稳定性。 本文深入解析加减速运算的核…...

CSS 学习提升网站或者项目

有几个不错的开源项目可以帮助你练习和提升CSS技能&#xff1a; CSS-Tricks CSS-Tricks 提供了很多关于CSS的技巧和教程&#xff0c;可以通过实践它们来提高CSS技能。你可以在CSS-Tricks上找到很多有趣的项目和代码示例。 Frontend Mentor Frontend Mentor 是一个非常适合练习…...

PolarDB 读已提交事务隔离级别 select ... for update, where条件未用索引,查不到数据的时候不会锁表

由于没有给字段设置唯一性&#xff0c;所以改为通过查询语句加锁确保唯一性&#xff0c;但是发现select count(*) 为0时&#xff0c;不会加锁&#xff0c;所以在insert方法后面需要加锁二次查询确保唯一性。 在 PolarDB 的读已提交事务隔离级别下&#xff0c;SELECT ... FOR UP…...

Python基础——Matplotlib库

绘图基础 Matplotlib 库太大&#xff0c;画图通常仅仅使用其中的核心模块 matplotlib.pyplot&#xff0c;并给其一个别名 plt&#xff0c;即 import matplotlib.pyplot as plt。为了使图形在展示时能很好的嵌入到 Jupyter 的 Out[ ] 中&#xff0c;需要使用%matplotlib inline…...

群晖Hyper Backup备份的东西怎么还原?

一、背景 前面写了一篇文章关于群晖NAS中最简单的备份方案&#xff0c;Hyper Backup 方案 群晖NAS最简单的备份教程&#xff08;只备份需要的目录到不同的硬盘&#xff09;&#xff0c;留了个尾&#xff0c;即怎么还原备份的东西&#xff0c;这里完结一下。 二、还原方案 2.…...

记录IBM服务器检测到备份GPT损坏警告排查解决过程

服务器设备&#xff1a;IBM x3550 M4 Server IMM默认IP地址&#xff1a;192.168.70.125 用户名&#xff1a;USERID 密码&#xff1a;PASSW0RD&#xff08;注意是零0&#xff09; 操作系统&#xff1a;Windows Hyper-V Server 2016 IMM Web System Status Warning&#xff1…...

蓝桥杯嵌入式十五届模拟二(串口DMA,占空比的另一种测量方式)

一.LED 先配置LED的八个引脚为GPIO_OutPut&#xff0c;锁存器PD2也是&#xff0c;然后都设置为起始高电平&#xff0c;生成代码时还要去解决引脚冲突问题 二.按键 按键配置&#xff0c;由原理图按键所对引脚要GPIO_Input 生成代码&#xff0c;在文件夹中添加code文件夹&#…...

22 | 如何继续提升 Go 开发技术?

提示&#xff1a; 所有体系课见专栏&#xff1a;Go 项目开发极速入门实战课&#xff1b;欢迎加入 云原生 AI 实战营 星球&#xff0c;12 高质量体系课、20 高质量实战项目助你在 AI 时代建立技术竞争力&#xff08;聚焦于 Go、云原生、AI Infra&#xff09;。 「Go 项目开发极速…...

一文详解OpenCV环境搭建:Windows使用CLion配置OpenCV开发环境

在计算机视觉和图像处理领域&#xff0c;OpenCV 是一个不可或缺的工具。其为开发者提供了一系列广泛的算法和实用工具&#xff0c;支持多种编程语言&#xff0c;并且可以在多个平台上运行。对于希望在其项目中集成先进视觉功能的开发者来说&#xff0c;掌握如何配置和使用OpenC…...

云原生周刊:深入探索 kube-scheduler-simulator

开源项目推荐 mcp-server-kubernetes mcp-server-kubernetes 是一个实现了模型上下文协议&#xff08;MCP&#xff09;的服务器&#xff0c;旨在通过自然语言与 K8s 集群进行交互。它支持连接到 K8s 集群&#xff0c;列出所有 Pod、服务、部署和节点&#xff0c;创建、描述、…...

总结一下常见的EasyExcel面试题

说一下你了解的POI和EasyExcel POI&#xff08;Poor Obfuscation Implementation&#xff09;&#xff1a;它是 Apache 软件基金会的一个开源项目&#xff0c;为 Java 程序提供了读写 Microsoft Office 格式文件的功能&#xff0c;支持如 Excel、Word、PowerPoint 等多种文件格…...

【Java设计模式】第2章 UML急速入门

2-1 本章导航 UML类图与时序图入门 UML定义 统一建模语言(Unified Modeling Language):第三代非专利建模语言。特点:开放方法,支持可视化构建面向对象系统,涵盖模型、流程、代码等。UML分类(2.2版本) 结构式图形:系统静态建模(类图、对象图、包图)。行为式图形:事…...

Excel处理控件Spire.XLS系列教程:C# 设置 Excel 中的数字格式

在 Excel 工作表中&#xff0c;原始数据通常显示为缺乏直观性的普通数字。通过设置数字格式&#xff0c;可以将这些数字转换成更容易理解的形式。例如&#xff0c;将销售额数据设置为货币格式&#xff0c;即添加货币符号和千位分隔符&#xff0c;可使所代表的金额一目了然。将市…...

脚本启动 Java 程序

如果你想在后台启动一个 Java 程序&#xff0c;并在终端窗口中显示一个自定义的名字&#xff0c;可以通过编写一个简单的脚本来实现。以下是一个基于 Linux/macOS 的解决方案&#xff0c;使用 Bash 脚本启动 Java 程序&#xff0c;并在终端窗口中显示自定义标题。 示例脚本 创建…...

UniappX动态引入在线字体图标,不兼容css时可用。

优缺点 优点&#xff1a;不需要占用本地存储&#xff0c;可直接在线同步库图标&#xff0c;不用再手动引入ttf文件&#xff0c;不用手动添加键值对对应表。 缺点&#xff1a;受网速影响&#xff0c;字体库cdn路径可能会更改&#xff0c;ios端首次加载&#xff0c;可能会无图标…...

机器学习 | 强化学习基本原理 | MDP | TD | PG | TRPO

文章目录 📚什么是强化学习🐇监督学习 vs 强化学习🐇马尔科夫决策过程(MDP)📚基本算法(value-based & policy-based)🐇时序差分算法(TD)🐇SARSA和Q-learning🐇策略梯度算法(PG)🐇REINFORCE和Actor-Critic🐇信任区域策略优化算法(TRPO)学习视频…...

k8s之Service类型详解

1.ClusterIP 类型 2.NodePort 类型 3.LoadBalancer 类型 4.ExternalName 类型 类型为 ExternalName 的 Service 将 Service 映射到 DNS 名称&#xff0c;而不是典型的选择算符&#xff0c; 例如 my-service 或者 cassandra。你可以使用 spec.externalName 参数指定这些服务…...

AI平台如何实现推理?数算岛是一个开源的AI平台(主要用于管理和调度分布式AI训练和推理任务。)

数算岛是一个开源的AI平台&#xff0c;主要用于管理和调度分布式AI训练和推理任务。它基于Kubernetes构建&#xff0c;支持多种深度学习框架&#xff08;如TensorFlow、PyTorch等&#xff09;。以下是数算岛实现模型推理的核心原理、架构及具体实现步骤&#xff1a; 一、数算岛…...

linux开发环境

1.虚拟机环境搭建 在 Ubuntu 系统中&#xff0c;打开&#xff08;如图中显示的窗口 &#xff09;常见快捷键有&#xff1a; Ctrl Alt T&#xff1a;这是最常用的打开终端的快捷键组合 &#xff0c;按下后会快速弹出一个新的终端窗口。 在 VMware 虚拟机环境中&#xff0c;若…...