PostgreSQL的学习心得和知识总结(一百四十二)|深入理解PostgreSQL数据库数据库之 Continuous Integration


注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下:

1、参考书籍:《PostgreSQL数据库内核分析》
2、参考书籍:《数据库事务处理的艺术:事务管理与并发控制》
3、PostgreSQL数据库仓库链接,点击前往
4、日本著名PostgreSQL数据库专家 铃木启修 网站主页,点击前往
5、参考书籍:《PostgreSQL中文手册》
6、参考书籍:《PostgreSQL指南:内幕探索》,点击前往
7、参考书籍:《事务处理 概念与技术》


1、本文内容全部来源于开源社区 GitHub和以上博主的贡献,本文也免费开源(可能会存在问题,评论区等待大佬们的指正)
2、本文目的:开源共享 抛砖引玉 一起学习
3、本文不提供任何资源 不存在任何交易 与任何组织和机构无关
4、大家可以根据需要自行 复制粘贴以及作为其他个人用途,但是不允许转载 不允许商用 (写作不易,还请见谅 💖)
5、本文内容基于PostgreSQL master源码开发而成


PostgreSQL数据库数据库之 Continuous Integration

  • 文章快速说明索引
  • 功能使用背景说明
    • README
    • Wiki
  • How to Add More Environments to the Postgres CI



文章快速说明索引

学习目标:

做数据库内核开发久了就会有一种 少年得志,年少轻狂 的错觉,然鹅细细一品觉得自己其实不算特别优秀 远远没有达到自己想要的。也许光鲜的表面掩盖了空洞的内在,每每想到于此,皆有夜半临渊如履薄冰之感。为了睡上几个踏实觉,即日起 暂缓其他基于PostgreSQL数据库的兼容功能开发,近段时间 将着重于学习分享Postgres的基础知识和实践内幕。


学习内容:(详见目录)

1、PostgreSQL数据库数据库之 Continuous Integration


学习时间:

2024年05月09日 20:43:46


学习产出:

1、PostgreSQL数据库基础知识回顾 1个
2、CSDN 技术博客 1篇
3、PostgreSQL数据库内核深入学习


注:下面我们所有的学习环境是Centos8+PostgreSQL master +Oracle19C+MySQL8.0

postgres=# select version();version                                                   
------------------------------------------------------------------------------------------------------------PostgreSQL 17devel on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-21), 64-bit
(1 row)postgres=##-----------------------------------------------------------------------------#SQL> select * from v$version;          BANNER        Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production	
BANNER_FULL	  Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production Version 19.17.0.0.0	
BANNER_LEGACY Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production	
CON_ID 0#-----------------------------------------------------------------------------#mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.27    |
+-----------+
1 row in set (0.06 sec)mysql>

功能使用背景说明

README

下面是PostgreSQL的 https://github.com/postgres/postgres/blob/master/src/tools/ci/README 的内容,如下:

Postgres Continuous Integration (CI)

Postgres 有两种形式的 CI:

  1. main postgres 存储库中所有支持的分支都通过 buildfarm 进行持续测试。由于这仅涵盖主存储库,因此不能在功能开发过程中使用它。有关详细信息,请参阅 https://buildfarm.postgresql.org/

  2. 对于尚未合并的开发工作,可以为一些 git 托管提供商启用 CI。这使得开发人员可以在合并(甚至提交)补丁之前在多个平台上测试补丁。


Configuring CI on personal repositories

目前,postgres 包含利用 cirrus-ci 的 CI 支持。cirrus-ci 目前仅适用于 github。


Enabling cirrus-ci in a github repository

要在存储库上启用 cirrus-ci,请访问 https://github.com/marketplace/cirrus-ci:

  • 并选择"Public Repositories"
  • 然后"Install it for free""Complete order"
  • 下一页允许配置 cirrus-ci 可以访问的存储库。选择相关存储库并"Install"

See also https://cirrus-ci.org/guide/quick-start/

一旦在存储库上启用,该存储库中未来的提交和拉取请求将自动触发 CI 构建。这些可以从提交历史记录/PR 中看到,也可以在 cirrus-ci UI 中查看:

https://cirrus-ci.com/github/<username>/<reponame>/-- 例如本人的
-- https://cirrus-ci.com/github/TsinghuaLucky912/postgres

在这里插入图片描述

提示:所有构建日志文件都会上传到 cirrus-ci,并且可以在单击构建摘要页面上的特定任务后从 cirrus-ci UI 的"Artifacts"部分下载。


Images used for CI

为了保持 CI 时间可以忍受,大多数平台都使用预先生成的图像。一些平台使用容器,其他平台使用完整的虚拟机。两者的镜像都是从 CI 运行中单独生成的,否则每个正在测试的 git 存储库都需要构建自己的一组容器,这将是浪费(在空间和时间上)。

这些镜像是根据 https://github.com/anarazel/pg-vm-images/ 中的规范每天构建的。


Controlling CI via commit messages

CI 的行为可以通过提交消息中的特殊内容来控制。目前可以使用以下控件:

  • ci-os-only: {(freebsd|linux|macos|windows|mingw)}

仅在指定的操作系统上运行 CI。当解决仅影响平台子集的可移植性问题时,这非常有用。


Using custom compute resources for CI

在存储库中运行大量测试时,cirrus-ci 的免费积分是不够的。在这些情况下,可以将存储库配置为使用其他基础设施来运行测试。为此,可以在 cirrus-ci Web 界面中为存储库配置 REPO_CI_CONFIG_GIT_URL 变量,网址为 https://cirrus-ci.com/github/<用户或组织>。该变量引用的文件(参见 https://cirrus-ci.org/guide/programming-tasks/#fs )可以覆盖不同操作系统的默认执行方法,该方法定义在 .cirrus.yml 中(通过重新定义相关的yaml锚)

可以使用以下方式提供自定义计算资源:

  • https://cirrus-ci.org/guide/supported-computing-services/
  • https://cirrus-ci.org/guide/persistent-workers/

Wiki

wiki链接:https://wiki.postgresql.org/wiki/Continuous_Integration

这里有一些关于如何使用各种免费持续集成服务的信息,供 PostgreSQL 黑客使用。您需要一个 BitBucket、GitHub、GitLab 或其他公共源存储库帐户。然后,您需要选择一项或多项 CI 服务并告诉它监视您的帐户。对于流行的存储库主机,您不必在 CI 提供商网站上创建新帐户 - 您只需授予访问权限。最后,您必须告诉它如何使用源树中的一个或多个控制文件构建分支。您可以在仅存在于功能开发分支中的额外提交中添加控制文件。

非官方的 PostgreSQL Cfbot Patch Tester 使用其中的几个服务来测试发布到 -hackers 邮件列表的补丁,它创建的分支包含一些可能有用的示例控制文件。


Postgres CI on github

这是在各种环境上测试补丁的推荐方法,使用与非官方 commit fest 机器人相同的 CI。您可以按照 https://github.com/postgres/postgres/blob/master/src/tools/ci/README 中的说明在自己的 github 存储库上配置它。它非常简单,几分钟内即可完成配置。


AppVeyor

AppVeyor 在 Windows、Linux、macOS 上构建和测试代码。支持 GitHub、GitHub Enterprise、Bitbucket、GitLab、VSTS、Kiln 或自定义可公开访问的存储库。来自 Peter Eisentraut 的 讨论 的 MingGW、Cygwin、MSVC appveyor.yml 文件


Cirrus CI

Cirrus CI 至少支持 Windows、Linux、FreeBSD 和 macOS,因此它目前拥有 PostgreSQL 所针对的最广泛的操作系统(并且可能很快还会有更多)。它仅支持 Github 作为源,并且可以从 Github Marketplace 轻松地为您的帐户启用。对于开源项目来说它是免费的。

这是一个正在进行的示例,说明如何使用它在这四个操作系统上构建 PostgreSQL 分支。单击绿色复选标记查看结果,然后查看该分支中的顶部提交以获取控制文件。.cirrus.yml 文件包含进一步工作的待办事项列表…


CodeCov

CodeCov 不是 CI 系统,但与之密切相关且值得一提。如果您配置 Travis CI 来构建和测试启用了覆盖率的分支,您可能还会有兴趣在 CodeCov 上漂亮的 Web 界面中查看代码覆盖率信息。


Travis CI

Travis CI 支持 Linux、macOS 甚至更多。仅适用于 GitHub。由 .travis.yml 文件控制。


How to Add More Environments to the Postgres CI

  • 原文链接:How to Add More Environments to the Postgres CI,点击前往

您是否曾经使用过 Postgres 源代码并且不确定是否破坏了任何东西?Postgres 有一个相当全面的回归测试套件,有助于确保没有任何问题。当然,您可以在您的计算机上运行这些测试并检查您的 Postgres 版本是否正常工作。但它总是可以在你的机器上运行,对吗? 其他环境呢?

在这篇博文中,您将根据我创建第一个 Postgres 补丁的经验和学习,了解如何启用和使用 Postgres CI(以及如何为其做出贡献!)。具体来说,您将学到:

  1. 如何为 GitHub 分支启用 PostgreSQL 的 CI
  2. 如何在 MinGW 环境中在 Windows 上构建和测试 Postgres
  3. 如何将新环境添加到 PostgreSQL CI 中

在这里插入图片描述

如何在 GitHub 分支中启用 PostgreSQL 的 CI

Postgres 因在多个不同平台上运行而享有盛誉。因此,验证您的代码是否可以跨这些不同的平台运行非常重要。这就是 CI 工具派上用场的地方。PostgreSQL 自带了自己推荐的 CI:Cirrus CI。您可以检查并了解 Postgres 的 CI 并在您的 fork 上运行 CI。Cirrus CI 支持 Windows、Linux、FreeBSD 和 macOS,并允许您在这些操作系统上测试您的更改。

要通过 Cirrus CI 运行测试,只需按照以下步骤操作:

  1. 在 GitHub 上分叉 PostgreSQL 存储库
  2. 在 GitHub 市场上搜索 Cirrus CI 应用程序并将该应用程序添加到您的帐户
    GitHub 市场上的 Cirrus CI 应用程序的屏幕截图。您可以轻松设置免费试用并开始使用 Cirrus
  3. 确保 Cirrus CI 应用程序可以访问您刚刚在步骤 1 中分叉的 Postgres 存储库
  4. Cirrus CI 现在已准备好运行。一旦您将提交推送到 Postgres 分支,Cirrus 将使用您最近的提交运行 CI 任务

随着您的新提交,GitHub 将向您显示 CI 检查已排队或正在运行。例如 我前几天写的一个功能的CI,如下:

设置具有存储库访问权限的 Cirrus CI 后,Cirrus CI 在 GitHub 上检查 Postgres 存储库中的提交的屏幕截图

在这里插入图片描述

您还可以通过导航到 Cirrus 查看更多详细信息。Cirrus CI 上的官方 Postgres 存储库如下所示:

官方 Postgres 存储库的概述类似于 Cirrus CI 上的内容。您可以查看提交的历史记录及其 CI 结果

Cirrus CI 将向您显示每次提交的构建结果,并在出现错误时上传日志文件。

现在您知道需要做什么才能从 Postgres 的 CI 中受益。即使 Cirrus CI 目前是其他 Postgres CI 中操作系统范围最广的一个,但支持的环境数量仍然有限。目前,Cirrus CI 上的 Postgres 只有四种操作系统可用。如果您需要更多,您当然可以通过以下两个步骤将环境添加到 PostgreSQL 的 CI 中:

  1. 在目标环境中成功构建 Postgres
  2. 将该环境添加到 Postgres 的 CI 中

如何在 MinGW 环境中在 Windows 上构建和测试 Postgres

本节介绍如何使用 MinGW 在 Windows 上构建 Postgres。MinGW 代表 Minimal GNU for Windows,我选择它作为添加到 Postgres CI 的新环境。如果您已经熟悉在 MinGW 上构建 Postgres 或者您的目标环境不同,则可以跳过本节。

如果您曾经研究过如何在 Windows 上构建 Postgres,您就会知道有不止一种方法可以做到这一点。

  • 使用 Visual Studio:构建 Postgres 的最 Windows 方式是使用 Microsoft Visual Studio。Postgres 已经有了 Visual Studio 的 CI 任务。
  • 使用 MinGW:另一种方法是在 Windows 上使用 MinGW。我个人喜欢在 Windows 上使用 MinGW for Postgres,因为它允许您使用 GNU 工具在 Windows 上构建 Postgres。既然如此,本文中添加到 Postgres CI 中的环境就是 MinGW。

将 MinGW 与 MSYS2 结合使用:如果您也决定使用 MinGW,我建议安装 MSYS2,这是一个提供 MinGW 环境等的工具。MSYS2 附带了您可能熟悉的 Unix 环境工具和包管理器,使我们能够获取为 Windows 原生构建的包。

MSYS2 并没有为我们提供单一的 MinGW 环境。MSYS2 上有两种 C 标准库变体:

  • Microsoft Visual C++ 运行时 (MSVCRT)。然而,即使 MSVCRT 在 Windows 上也可用,它也是一个较旧的库,不兼容 C99。
  • 通用 C 运行时 (UCRT)。UCRT 是最新版本,默认情况下由 Microsoft Visual Studio 使用,因此 UCRT 的构建行为就像本地构建一样。

如果您已准备好 MSYS2,则可以继续使用 MinGW 和 UCRT 环境来实际从源代码构建 Postgres。


通过 MinGW 和 UCRT 构建 PostgreSQL 的步骤

  1. 您可以通过在 Windows 上搜索 MSYS2 MinGW UCRT x64 或将名为 MSYSTEM 的环境变量设置为 UCRT64 来运行带有 UCRT shell 的 MinGW。默认的 MSYS2 环境由 MSYSTEM 变量(如果已设置)决定。
  2. 设置 MSYSTEM 后,您可以通过 PowerShell 运行以下命令,使用 UCRT shell 启动 MinGW:
$env:MSYSTEM = ‘UCRT64’
C:\<Path to MSYS installation>\usr\bin\bash.exe -l
  1. 如果您是第一次启动 MinGW,请首先更新基础包和数据库。
pacman -Suy
  1. 然后安装所需的软件包以在 MinGW 上构建 Postgres
pacman -S --needed git bison flex diffutils make ucrt64/mingw-w64-ucrt-x86_64-gcc 
  1. 现在您已完成 MinGW 环境设置。让我们继续查看 Postgres 文档中的安装说明。在此之后,该过程就像我们如何在基于 Unix 的环境中构建 Postgres 一样。您需要运行configure 和make 命令,它们将完成工作。
./configure --enable-cassert --enable-debug 
  1. 如果所有这些步骤都成功,您可以运行 make check 并查看新构建的 Postgres 是否一切正常。您可能还想启用一些附加配置选项。尽管 MinGW 中并非提供所有这些选项,但您可以尝试使用其中一些选项进行构建,例如 icu、lz4 等。以下是如何通过运行安装一小部分 Postgres 依赖项:
pacman -S ucrt64/mingw-w64-ucrt-x86_64-{icu,libxml2,libxslt,lz4}## 然后相应地更改配置命令:
./configure --host=x86_64-w64-mingw32 --with-icu --with-libxml --with-libxslt --with-lz4 

如何将您的环境添加到 Postgres CI 中

现在您知道如何准备 MinGW 环境以及构建 Postgres 所需的步骤。如果 Cirrus CI 可以为我们完成所有这些工作,那不是很棒吗?令人高兴的是,您可以告诉 Cirrus 运行构建 Postgres 所需的命令。

首先要让 Cirrus 知道要在哪个环境上运行。此环境可以是 Cirrus CI 默认提供的环境之一,或者 Cirrus 也可以使用用户创建的 VM 或 Docker 容器映像。

您可以在 pg-vm-images 存储库中找到 Postgres 使用的 VM 和容器映像。尽管 Cirrus CI 已经提供了 Windows 容器,但您可能需要在映像上安装和配置许多不同的东西。在 MinGW 的情况下,需要一个 Windows Docker 映像,其中包含按本博客文章前面部分所述安装的 MinGW。您可以找到添加此类 Windows 映像的 PR。

合并准备 VM 或容器映像的 PR 后,您可以进入下一步:将脚本添加到 cirrus.yml 文件。我们已经有了用于 MinGW 构建的配置和构建命令。

首先,您需要创建一个新任务并指定新任务将使用您添加到 pg-vm-images 中的容器。

task:name: Windows - Server 2019, MinGW64windows_container:image: $CONTAINER_REPO/windows_ci_mingw64:latest 

Cirrus 有一个名为 CIRRUS_WORKING_DIR 的环境变量,它是 Cirrus 运行的目录。在此路径下,指定 BUILD_DIR 变量作为 Postgres 的构建目录。

env:BUILD_DIR: "%CIRRUS_WORKING_DIR%/build" 

然后,您可以将配置、构建和测试脚本添加到新任务中。

configure_script:- C:\msys64\usr\bin\dash.exe -lc "mkdir %BUILD_DIR% &&cd %BUILD_DIR% &&%CIRRUS_WORKING_DIR%/configure--enable-cassert--enable-debug--with-icu--with-libxml--with-libxslt--with-lz4build_script:C:\msys64\usr\bin\dash.exe -lc "cd %BUILD_DIR% && make world-bin"tests_script:- C:\msys64\usr\bin\dash.exe -lc "cd %BUILD_DIR% && make check-world TMPDIR=%BUILD_DIR%/tmp_install" 

最后,您可能需要添加 on_failure 指令来告诉发生故障时该怎么做。您可以简单地使用 Autoconf 调用任务的现有 on_failure_ac 配置。

on_failure:<<: *on_failure_ac 

完成所有这些步骤后,您现在可以提交并将更改推送到 cirrus.yml 文件上。Cirrus CI 将通过 MinGW 识别您的新任务。您应该看到新的 MinGW 任务将在 Cirrus CI 上运行。

在 Cirrus CI 上运行的 CI 任务,包括最近添加的 MinGW 任务


使用 Postgres CI 并为其做出贡献使我们所有 PG 开发人员的生活变得更轻松

将 MinGW 添加到 Postgres 的 CI 中的这项工作是我对 Postgres 的第一个补丁。(尚未提交,但正在接受审核。)您可以查看补丁以了解有关如何将新任务添加到 CI 中的更多信息。

这篇博文向您展示了如何使用 Postgres 的 CI 并为其做出贡献,以及如何使用 MinGW 构建 Postgres。为您的分支启用 Cirrus CI 将帮助您查看针对 Postgres 更改的测试结果。为 Postgres CI 做出贡献是让 Postgres 变得更好的好方法,特别是当您需要比现有更多的环境或操作系统时。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3030676.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

移动端自动化测试工具 Appium 之 main 启动

文章目录 一、背景二、生成xml文件2.1、创建xml方法2.2、执行主类MainTest2.3、自动生成的xml2.4、工程目录2.5、执行结果 三、命令行执行appium服务四、主方法启动类五、集成Jenkins六、总结 一、背景 Jenkins 做集成测试是不错的工具&#xff0c;那么UI自动化是否可以&#…

pikachu靶场-全套学习

文章目录 配置pikachu靶场浏览器访问过程burpsuite配置代理hackbar安装使用kali安装中国蚁剑暴力破解cookie简化场景解释各部分含义如何工作 基于表单的暴力破解验证码绕过(On server)验证码绕过(on client)token防爆破? XSS&#xff08;Cross-Site Scripting跨站脚本攻击 &am…

JavaWeb--13Mybatis(2)

Mybatis&#xff08;2&#xff09; 1 Mybatis基础操作1.1 需求和准备工作1.2 删除员工日志输入参数占位符 1.3 新增员工1.4 修改员工信息1.5 查询员工1.5.1 根据ID查询数据封装 1.5.3 条件查询 2 XML配置文件规范3 MyBatis动态SQL3.1 什么是动态SQL3.2 动态SQL-if更新员工 3.3 …

JCR一区 | Matlab实现1D-2D-GASF-CNN-GRU-MATT的多通道输入数据分类预测

JCR一区 | Matlab实现1D-2D-GASF-CNN-GRU-MATT的多通道输入数据分类预测 目录 JCR一区 | Matlab实现1D-2D-GASF-CNN-GRU-MATT的多通道输入数据分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 基本介绍 Matlab实现1D-2D-GASF-CNN-GRU-MATT的多通道输入数据分类预…

el-select选项框内容过长

利用popper-class实现选项框内容过长&#xff0c;截取显示功能&#xff1a; <el-select popper-class"popper-class" :popper-append-to-body"false" v-model"value" placeholder"请选择"><el-optionv-for"item in opt…

Win10 WSL2 Ubuntu 22.04 配置深度学习环境

文章目录 WSL安装Anaconda下载Anaconda安装包安装配置conda命令conda换国内源conda初始化shell环境conda init手动源激活脚本&#xff1a; 安装Windows上的NVIDIA GPU驱动WSL安装CUDA Toolkit安装12.1版本环境配置报错1报错2 内存不足导致安装崩溃问题描述问题分析问题解决 WSL…

Topaz Photo AI for Mac:专业级照片处理软件

Topaz Photo AI for Mac是一款专为Mac用户设计的专业级照片处理软件。它集成了先进的人工智能技术&#xff0c;为用户提供了强大的照片处理功能。无论是照片修复、增强还是转换&#xff0c;Topaz Photo AI都能轻松应对。 这款软件具备强大的AI技术&#xff0c;能够自动识别和修…

您的文件和驱动器上的“密码保护”有多安全?

某些行业&#xff08;例如医疗保健、法律和公司&#xff09;的人们在通过电子邮件发送文件时通常依赖密码保护&#xff0c;认为它可以提供足够的安全性来防止窥探。然而&#xff0c;对 PDF 或 Excel 文件进行简单的密码保护并不像看起来那样万无一失。 使用密码保护文件而不加…

JAVA 项目<果园之窗>_完结

目录 1、前言&#xff1a;2、视频展示&#xff1a;3、环境配置&#xff1a;4、工程代码&#xff1a;5、原理&#xff1a;6、原理补充&#xff1a;7、综上&#xff1a; 1、前言&#xff1a; 因为没有足够的时间这个项目用的是别人搭好的框架&#xff0c;在此基础上做调整并根据前…

verilog中输入序列连续的序列检测

编写一个序列检测模块&#xff0c;检测输入信号a是否满足01110001序列&#xff0c;当信号满足该序列&#xff0c;给出指示信号match。 模块的接口信号图如下&#xff1a; 代码如下&#xff1a; &#xff08;CSDN代码块不支持Verilog&#xff0c;代码复制到notepad编辑器中&am…

知识库文档系统源码部署/搭建/上线/运营/售后/更新

一款基于ThinkPHPFastAdmin开发的知识库文档系统&#xff0c;可用于企业工作流程的文档管理&#xff0c;结构化记录沉淀高价值信息&#xff0c;形成完整的知识体系&#xff0c;能够轻松提升知识的流转和传播效率&#xff0c;更好地成就组织和个人。为部门、团队或项目搭建知识库…

STM32_HAL_RTC_中断实现闹钟

1STM32设置 在STM32Cude中设置RTC//具体设置看先前发的文章 再打开闹钟中断&#xff08;如下图&#xff09; 2代码思路 2.1启动闹钟&#xff08;HAL_RTC_SetAlarm_IT(&hrtc,&sAlarm,FORMAT_BCD)&#xff09; 2.2设置回调函数&#xff08;void HAL_RTC_AlarmAEventC…

EXPLORER - Stone Age

一个程式化的包,包含史前建筑、巨石结构、角色、自然资产、工具和各种道具,可以添加到你的游戏中。 包装内容: + 570 资产。 男性和女性角色,包括数十件服装、皮肤和配饰。 - 8 - 预制角色变体 安装后即可直接使用。 - 15 - 包括动画(8个男性动画和7个女性动画),与Mecan…

node pnpm修改默认包的存储路径

pnpm与npm的区别 PNPM和NPM是两个不同的包管理工具。 NPM&#xff08;Node Package Manager&#xff09;是Node.js的官方包管理工具&#xff0c;用于安装、发布和管理Node.js模块。NPM将包安装在项目的node_modules目录中&#xff0c;每个包都有自己的依赖树。 PNPM&#xf…

定时任务执行 报错command not found 解决方案

目录 写在前面所需知识 问题复现解决方式方法1. 使用绝对路径的命令&#xff1a;方法2. 重新加载环境变量&#xff1a;成功解决截图 原理 写在前面 定时任务脚本出现command not found报错&#xff0c;解决方案。 所需知识 定时任务shell脚本环境变量 问题复现 编写了一个…

2024 年最新使用 ntwork 框架搭建企业微信机器人详细教程

NTWORK 概述 基于 PC 企业微信的 api 接口&#xff0c;支持收发文本、群、名片、图片、文件、视频、链接卡片等。 下载安装 ntwork pip install ntwork国内源安装 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple ntwork企业微信版本下载 官方下载&#xff1a;h…

2024年湖北省专升本C语言程序设计大题真题解析

2024年湖北省的专升本考试已于4月30日举行&#xff0c;考试中&#xff0c;出现了许多不同的考试题目&#xff0c;我在网上找到一所高校专升本的大题&#xff08;好像是湖北师范的&#xff0c;后续会有湖北理工的大题真题解析&#xff0c;敬请期待&#xff09;&#xff0c;那么我…

024.反转链表

给定单链表的头节点 head &#xff0c;请反转链表&#xff0c;并返回反转后的链表的头节点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1]示例 3&#xff1a; 输…

Web数字孪生引擎

Web数字孪生引擎是指用于在Web上创建和运行数字孪生的软件平台。它们通常提供一组API和工具&#xff0c;用于连接到实时数据源、可视化数据并创建交互式体验。Web数字孪生引擎被广泛应用于各种应用&#xff0c;例如工业物联网、智能建筑、城市管理和公共安全等。北京木奇移动技…

SpringCloudAlibaba:5.1Sentinel的基本使用

概述 简介 Sentinel是阿里开源的项目&#xff0c;提供了流量控制、熔断降级、系统负载保护等多个维度来保障服务之间的稳定性。 官网 https://sentinelguard.io/zh-cn/ Sentinel的历史 2012 年&#xff0c;Sentinel 诞生&#xff0c;主要功能为入口流量控制。 2013-2017 年…