Apache DolphinScheduler 3.1.8 保姆级教程【安装、介绍、项目运用、邮箱预警设置】轻松拿捏!

news/2024/2/25 13:11:12/文章来源:https://blog.csdn.net/DolphinScheduler/article/details/135625824

概述

Apache DolphinScheduler 是一个分布式易扩展的可视化 DAG 工作流任务调度开源系统。适用于企业级场景,提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方案。

Apache DolphinScheduler 旨在解决复杂的大数据任务依赖关系,并为应用程序提供数据和各种 OPS 编排中的关系。解决数据研发 ETL 依赖错综复杂,无法监控任务健康状态的问题。DolphinScheduler 以 DAG(Directed Acyclic Graph,DAG)流式方式组装任务,可以及时监控任务的执行状态,支持重试、指定节点恢复失败、暂停、恢复、终止任务等操作。

file

特性

1.*简单易用 *

可视化 DAG,对待用户友好,通过拖拽定义工作流的,模块化操作,轻松定制和维护。

2.丰富的使用场景
支持多种任务类型,例如:Shell、MR、Spark、SQL 等 10 余种任务类型,支持跨语言,易于扩展。

3.丰富的工作流操作
工作流程可以定时、暂停、恢复和停止,便于维护和控制全局和本地参数。

  1. High Reliability 高可靠性
    去中心化设计,确保稳定性,原生 HA 任务队列支持,提供过载容错能力。DolphinScheduler 能提供高度稳健的环境。

5.High Scalability 高扩展性
支持多租户和在线资源管理,支持每天 10 万个数据任务的稳定运行。

去中心化设计,让系统的控制和决策权分散到不同的节点或组件,而不是集中在单一中心节点。这意味着系统中的各个组件可以独立运作和做出决策,而不必依赖于一个中心控制节点。 在 DolphinScheduler 中,去中心化的设计意味着任务调度和管理系统的各个组件能够独立运作,而不需要依赖于一个单一的中心节点。

架构

DolphinScheduler 的架构设计允许分布式任务调度和管理,以满足大规模数据处理和工作流需求。

1. Master Server(主服务器):

  • DolphinScheduler 主服务器是整个系统的核心,它负责调度、管理和监控所有任务和工作流。

  • 主服务器维护任务元数据和工作流定义,包括任务依赖关系、任务类型、调度计划等信息。

  • 主服务器接收用户提交的任务和工作流,并决定如何调度和执行它们。

2. Worker Server(工作节点):

  • DolphinScheduler 工作节点是执行任务的节点,它们分布在集群中,可以是物理机器或虚拟机器。

  • 工作节点根据主服务器的调度计划执行任务,可以处理各种不同类型的任务,如 Shell 脚本、Python 脚本、Hive、Spark、Flink 等。

  • 工作节点还负责监控任务的执行状态和性能,并将信息报告给主服务器。

3. ZooKeeper:

  • DolphinScheduler 使用 Apache ZooKeeper 来协调主服务器和工作节点之间的通信和状态管理。

  • ZooKeeper 负责维护一致性和协调,以确保系统的高可用性和容错性。

4. 数据存储:

  • DolphinScheduler 使用关系型数据库(如 MySQL)来存储任务元数据、工作流定义和调度计划等信息。

  • 数据存储用于持久化和管理系统的状态和元数据。

5. Web界面:

  • DolphinScheduler 提供了一个可视化的 Web 界面,用户可以使用该界面来配置任务和工作流,监控任务的执行状态,以及管理系统的权限和用户。

工作流程

整个 DolphinScheduler 系统的工作流程如下:

  1. 用户使用 Web 界面创建和配置任务和工作流。

  2. 主服务器接收用户的任务和工作流定义,然后根据定义生成调度计划。

  3. 主服务器将调度计划发送给工作节点。

  4. 工作节点执行任务,监控任务的状态和性能,并将信息报告给主服务器。

  5. 用户可以通过 Web 界面查看任务的执行状态和日志,同时系统支持告警功能,以便在任务失败或性能下降时通知管理员。

DolphinScheduler 和 Azkaban 的比较

DolphinScheduler 和 Azkaban 都是用于任务调度和工作流管理的开源工具,但它们之间存在一些区别,包括以下方面:

1. 开发背景和社区支持

  • DolphinScheduler 是中国社区开源项目,得到了国内外开发者和组织的积极支持和贡献。

  • Azkaban 是由 LinkedIn 开发的,后来成为了开源项目,得到了 LinkedIn 和其他组织的支持。

2. 历史和成熟度

  • Azkaban 的项目起源较早,因此在一些组织中有更广泛的应用和更成熟的生态系统。

  • DolphinScheduler 是一个相对较新的项目,仍在不断发展中。

3. 特性和功能

  • DolphinScheduler 提供了更多种类的任务类型,包括Shell、Python、Hive、Spark、Flink等,以满足不同数据处理需求。

  • Azkaban 也支持多种任务类型,但其生态系统不如 DolphinScheduler 多样化。

4. 去中心化和架构设计

  • DolphinScheduler 强调去中心化的设计,允许任务调度和管理系统的各个组件独立运作。

  • Azkaban 通常具有中心化的控制节点来协调任务的调度和执行。

就我个人而言更喜欢用 DolphinScheduler,去中心化的设计更加便利,生态也特别丰富,前端 UI 也十分人性化,编辑任务流等方面都比 Azkaban 使用起来更加舒适。

DolphinScheduler 分布式安装

基础环境说明与配置

官方给出的系统要求以及服务器配置如下所示:

file

服务器资源没有那么多也无所谓,官方的配置是生产环境的配置,学习或者测试环境低点也能玩。

请在进行下列步骤前,确保集群之间已经设置好了免密登录,且指定用户具有 sudo 权限, 集群中已经安装 JDK1.8、MySQL、Zookeeper(3.4.6+) 并能正常使用。

sudo 用户权限添加

这里以创建 dolphinscheduler 用户进行举例,开始前,请先切换到 root 用户

创建用户及授权的指令在主从节点都要执行!

# 先切换到 root 用户
su root# 添加用于部署的用户
useradd dolphinscheduler# 添加密码
echo "123456" | passwd --stdin dolphinscheduler# 配置 sudo 免密
sed -i '$adolphinscheduler  ALL=(ALL)  NOPASSWD: NOPASSWD: ALL' /etc/sudoers
sed -i 's/Defaults    requirett/#Defaults    requirett/g' /etc/sudoers# 修改目录权限,使得部署用户对二进制包解压后的 apache-dolphinscheduler-*-bin 目录有操作权限(主节点执行)
chown -R dolphinscheduler:dolphinscheduler apache-dolphinscheduler-*-bin

免密配置

因为是分布式部署,所以需要设置主机免密登录从机。

# 先切换到部署用户
su dolphinscheduler# 在主机执行(生成公钥与私钥)
ssh-kegen -t rsa# 在主机执行,分发公钥(主机自身也要设置免密)
ssh-copy-id hadoop120
ssh-copy-id hadoop121
ssh-copy-id hadoop122
获取安装包

官网下载:DolphinScheduler V3.1.8

下拉选择二进制包:

file

点击后跳转到 Apache 进行下载: file

下载进程树分析
# macOS 安装 pstree
# Fedora/Red/Hat/CentOS/Ubuntu/Debian 安装 psmisc# CentOS 示例,每台机器都需要安装:
sudo yum install -y psmisc
解压缩
tar -zxvf apache-dolphinscheduler-3.1.8-bin.tar.gz -C /opt/module/

解压后的文件目录如下所示:

file

这个目录并不是最后实际使用的,它只是一个安装包目录,还需要进一步配置安装。

创建 MySQL 库

这里使用 MySQL 对 DolphinScheduler 的元数据进行管理,不使用默认的数据库 H2

在 MySQL 中创建 DolphinScheduler 的专用用户与存储库,并给予其访问权限:

-- 创建指定存储库
CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;-- 创建 DolphinScheduler 用户
CREATE USER 'dolphinscheduler'@'%' IDENTIFIED BY '000000';-- 给予库的访问权限
GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'%';flush privileges;

如果提示密码安全等级过低,但还想使用该密码,则需要调整 MySQL 密码安全验证策略,如下所示:

set global validate_password_policy=0;
set global validate_password_length=4;
拷贝 MySQL 驱动文件

MySQL 驱动文件必须使用 JDBC Driver 8.0.16 及以上的版本,需要手动下载 mysql-connector-java 并移动到 DolphinScheduler 的每个模块的 libs 目录下,其中包括 5 个目录:

  • api-server/libs

  • alert-server/libs

  • master-server/libs

  • worker-server/libs

  • tools/libs

# 进入解压目录中(略)
# 复制驱动
cp /opt/software/mysql-connector-j-8.0.31.jar ./api-server/libs/
cp /opt/software/mysql-connector-j-8.0.31.jar ./alert-server/libs/
cp /opt/software/mysql-connector-j-8.0.31.jar ./master-server/libs/
cp /opt/software/mysql-connector-j-8.0.31.jar ./worker-server/libs/
cp /opt/software/mysql-connector-j-8.0.31.jar ./tools/libs/
修改 install_env.sh 文件

文件 install_env.sh 描述了哪些机器将被安装 DolphinScheduler 以及每台机器对应安装哪些服务。

在解压路径下 bin/env/install_env.sh 中找到此文件,配置详情如下所示:

# 进入解压目录中(略)
vim ./bin/env/install_env.sh# 修改下列配置信息

file

file

修改 dolphinscheduler_env.sh 文件

修改文件 ./bin/env/dolphinscheduler_env.sh 中的配置,其中包括 DolphinScheduler 的数据库配置、一些任务类型外部依赖路径或库文件,如 JAVA_HOMESPARK_HOME 都是在这里定义的。

# 进入解压目录中(略)
vim ./bin/env/dolphinscheduler_env.sh# 文件配置信息如下所示:# JAVA_HOME 用于启动 DolphinScheduler 
export JAVA_HOME=${JAVA_HOME:-/opt/module/jdk}# 数据库配置信息
export DATABASE=${DATABASE:-mysql}
export SPRING_PROFILES_ACTIVE=${DATABASE}
export SPRING_DATASOURCE_URL="jdbc:mysql://hadoop120:3306/dolphinscheduler?useSSL=false&useUnicode=true&allowPublicKeyRetrieval=true&characterEncoding=UTF-8"
export SPRING_DATASOURCE_USERNAME=dolphinscheduler
export SPRING_DATASOURCE_PASSWORD=000000# DolphinScheduler服务器相关配置,这里用默认的就好了
export SPRING_CACHE_TYPE=${SPRING_CACHE_TYPE:-none}
export SPRING_JACKSON_TIME_ZONE=${SPRING_JACKSON_TIME_ZONE:-UTC}
export MASTER_FETCH_COMMAND_NUM=${MASTER_FETCH_COMMAND_NUM:-10}# 注册表中心配置(Zookeeper),确定注册表中心的类型和链接
export REGISTRY_TYPE=${REGISTRY_TYPE:-zookeeper}
export REGISTRY_ZOOKEEPER_CONNECT_STRING=${REGISTRY_ZOOKEEPER_CONNECT_STRING:-hadoop120:2181,hadoop121:2181,hadoop122:2181}# 任务相关组件路径配置,如果使用相关任务,则需要更改配置
export HADOOP_HOME=${HADOOP_HOME:-/opt/module/hadoop-3.3.4}
export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-/opt/module/hadoop-3.3.4/etc/hadoop}
export SPARK_HOME=${SPARK_HOME:-/opt/module/spark-3.3.1}
export HIVE_HOME=${HIVE_HOME:-/opt/module/hive-3.1.3}
export DATAX_HOME=${DATAX_HOME:-/opt/module/datax}#export PYTHON_LAUNCHER=${PYTHON_LAUNCHER:-/opt/soft/python}
#export FLINK_HOME=${FLINK_HOME:-/opt/soft/flink}# 配置路径导出
export PATH=$HADOOP_HOME/bin:$SPARK_HOME/bin:$JAVA_HOME/bin:$HIVE_HOME/bin:$DATAX_HOME:/bin:$PATH

注意:上列配置中的主机地址、相关组件存储路径请修改为你的对应值!

Python 网关配置项关闭

Python 网关服务会默认与 api-server 一起启动,如果不想启动则需要更改 api-server 配置文件 api-server/conf/application.yaml 中的 python-gateway.enabled : false 来禁用它。

vim ./api-server/conf/application.yaml

file

初始化数据库并安装 DolphinScheduler
# 进入解压目录中(略)
# 初始化数据库
bash tools/bin/upgrade-schema.sh

正常初始化完成如下所示:

file

现在开始进行分布式部署,使用上面( install_env.sh 文件中)指定的部署用户执行如下命令完成部署,部署后的运行日志将存放在 logs 文件夹内。

# 先启动Zookeeper,主从节点都要启动
zkServer.sh startbash ./bin/install.sh

安装脚本执行完成后,会出现各个节点的状态信息:

file

我们去对应的安装目录下,可以看到已经安装好的 DolphinScheduler 相关文件夹(每台机器都在指定的相同目录下):

file

启停命令

启动 DolphinScheduler 前,请先启动 Zookeeper 服务!

下列部分命令注意与 Hadoop 中的进行区分,脚本名字是一样的,不要启动错了。

# 进入 DolphinScheduler 安装后的目录
# 一键开启集群所有服务
bash ./bin/start-all.sh# 一键停止集群所有服务
bash ./bin/stop-all.sh# 启停 Master
bash ./bin/dolphinscheduler-daemon.sh stop master-server
bash ./bin/dolphinscheduler-daemon.sh start master-server# 启停 Worker
bash ./bin/dolphinscheduler-daemon.sh start worker-server
bash ./bin/dolphinscheduler-daemon.sh stop worker-server# 启停 Api
bash ./bin/dolphinscheduler-daemon.sh start api-server
bash ./bin/dolphinscheduler-daemon.sh stop api-server# 启停 Alert
bash ./bin/dolphinscheduler-daemon.sh start alert-server
bash ./bin/dolphinscheduler-daemon.sh stop alert-server

执行脚本启动命令(bash ./bin/start-all.sh)后,如果运行正常,可以通过 jps 命令查询到节点的启动情况,如下所示:

file

到此为止,DolphinScheduler 分布式就已经部署完成了。

登录 DolphinScheduler

通过浏览器访问地址 http://hadoop120:12345/dolphinscheduler/ui 即可登录系统UI(替换为你的主机地址),进入网站后会来到登录界面:

file

默认的用户名和密码是:admin / dolphinscheduler123,该用户为管理员用户。

登录成功后,进入首页,如下所示:

file

登录 DolphinScheduler 操作完成。

安全中心介绍

安全中心只有管理员账户才有权限操作,其中包括 Yarn 队列管理、租户管理、用户管理、告警组管理、worker 分组管理、令牌管理等功能,在用户管理模块可以对资源、数据源、项目等授权

file

租户管理

租户管理允许管理员配置和管理不同租户的权限和资源使用情况。

租户是 DolphinScheduler 中的一个概念,其实就是对应着 Linux 系统的一个用户,代表着一个独立的业务单位或用户组。

添加租户

添加需要执行任务的租户,为其分配队列,如果当前 Yarn 中没有配置多个队列,那么就只有 default 默认队列。
file

用户管理

用户管理模块允许管理员创建、编辑和删除用户账户,并配置用户的访问权限。通过用户管理,可以细粒度地控制用户对 DolphinScheduler 的操作权限。

添加用户

设置登录 DolphinScheduler 的新用户,关联指定租户、队列、邮件以及手机号。

file

告警组与告警实例管理

告警组管理用于配置系统中的告警组,定义告警的接收人和通知方式。这样,在系统出现异常或故障时,相关人员可以迅速得到通知,以便及时采取行动。

添加告警实例

定义一个告警的类别以及实例信息,填写对应的信息。

file

添加告警组

为设置的告警实例分配告警组。

file

Worker 分组管理

Worker 分组管理允许管理员对 DolphinScheduler 中的 Worker 节点进行分组和管理,这有助于优化任务调度和资源利用。

添加 Worker 分组管理

file

Yarn 队列管理

DolphinScheduler 允许管理员配置和管理 YARN 中的队列。

队列是资源管理的基本单位,通过它可以为不同的工作流、任务或用户分配不同的资源配额。

添加 Yarn 队列

file

环境管理

用于自定义环境信息,为某些任务定制处理环境。

添加环境

file

令牌管理

令牌管理模块用于生成和管理访问令牌,这些令牌可以作为一种身份验证凭据,限制对敏感操作的访问。

添加令牌管理

file

监控中心介绍

用于查看当前主从节点的运行状态,其中包括 CPU与内存的使用情况、磁盘可用空间、负载量等信息。

file

数据源中心介绍

DolphinScheduler 的数据源中心(Data Source Center)是一个重要模块,主要用于集中管理和配置各种数据源的连接信息,为工作流和任务提供可靠的数据访问。

file

数据质量介绍

数据质量任务是用于检查数据在集成、处理过程中的数据准确性。本版本的数据质量任务包括单表检查、单表自定义SQL检查、多表准确性以及两表值比对。

官方说明:数据质量任务的运行环境为 Spark2.4.0,其他版本尚未进行过验证,用户可自行验证。

file

资源中心介绍

DolphinScheduler 的资源中心包括文件管理、UDF 管理以及任务组管理,其作用主要就是管理这些资源,让用户管理起来更加方便、简洁明了。

file

资源中心默认不开启,上传文件或新建文件时会提示【存储未启用】:

file

如果想要使用,需要修改配置文件参数,以集群模式或者伪集群模式部署 DolphinScheduler,要对 DolphinScheduler 安装路径下的两个文件进行配置:

  • api-server/conf/common.properties

  • worker-server/conf/common.properties

file

file

这两个文件修改的参数一样。

如果是分布式,修改完成后,需要进行分发,同步这两个文件到其它机器上。

# 进入 DolphinScheduler 安装目录
cd /opt/module/dolphinschedulerrsync api-server/conf/common.properties hadoop121:/opt/module/dolphinscheduler/api-server/conf/rsync api-server/conf/common.properties hadoop122:/opt/module/dolphinscheduler/api-server/conf/rsync worker-server/conf/common.properties hadoop121:/opt/module/dolphinscheduler/worker-server/confrsync worker-server/conf/common.properties hadoop122:/opt/module/dolphinscheduler/worker-server/conf

在 HDFS 上创建指定资源存储路径并授权:

# 创建资源存储目录
hadoop fs -mkdir -p /dolphinscheduler# 创建文件夹组设定为 DolphinScheduler 的用户
hadoop fs -chown -R dolphinscheduler:dolphinscheduler /dolphinscheduler# 添加权限
hadoop fs -chmod 777 /dolphinscheduler

最后,重启 DolphinScheduler 即可完成:

# 进入 DolphinScheduler 的安装目录,注意与Hadoop的启动命令进行区分!
cd /opt/module/dolphinscheduler# 一键停止集群所有服务
bash ./bin/stop-all.sh# 一键开启集群所有服务
bash ./bin/start-all.sh

项目管理介绍

在 DolphinScheduler 中,项目是一个逻辑上的容器,用于组织和管理相关联的任务和工作流。项目提供了一种层次结构,帮助用户将调度系统中的任务按照业务或项目的逻辑进行划分。

在项目中,用户可以创建和组织各种任务和工作流。任务可以是简单的脚本任务、MapReduce 任务等,而工作流则可以是一系列有序的任务组合。通过项目管理,用户可以更好地组织和管理这些任务和工作流,实现更加清晰的任务调度和执行。

file

项目运用

创建租户与用户

使用管理员账户进入安全中心,创建租户与用户,后面创建项目都是使用普通用户进行操作,而不是直接使用管理用户进行创建。

创建租户
file

创建用户

file

注意,用户创建完成后,需要启用,否则不生效。

创建项目

点击【项目管理】—— 【创建项目】

file

项目创建完成后,点击项目名称,进入工作流的设置界面:

file

创建工作流

点击工作流定义,选择需要创建的工作流类型,然后编辑工作流相关参数。

file

多个节点之间如果要建立依赖关系,可以直接通过鼠标拖动的方式来实现,将鼠标放置到圆点上,就会出现一个 + 号,然后连接到需要关联的任务。

file

也可以直接双击某个节点建立依赖关系,在任务的编辑窗口中,下拉到最后面,可以看到有个前置任务的选项:

file

我这里创建了三个 Shell 任务,每个任务打印它们的节点名称,设置依赖关系:A > B > C,如下所示:

file

添加完成后,一定要点击保存,不然刚刚设置的内容都要重新配置。

file

点击执行策略,选择你需要的策略,然后点击【确定】。

授权

如果你上面的几步操作是在管理员用户中进行的,那么你需要进行授权,通过普通用户去执行任务(这里不建议直接用管理员账户执行工作流)。

授权

file

指定授权项目

file

授权完成后,使用刚刚授权的普通用户登录到 DolphinScheduler。

工作流上线

工作流创建完成后,默认为下线状态,也就是不可使用的状态,如果我们需要使用工作流,需要先进行上线操作,激活该工作流。

file

直接点击上线按钮,无需进行确定,即可进行上线。

执行工作流

上线完成后,点击运行按钮,将开始运行定义的工作流。

file

点击运行按钮后,弹出窗口,需要设置相关启动参数,点击【是否是补数】,选择依赖模式、执行方式以及调度日期。

file

开始运行后,可以点击工作流实例,查看任务的执行状态:

file

点击工作流实例名称,可以查看各个节点的执行状态:

file

邮箱预警设置

1. 开启 SMTP 服务

进入发送者邮箱的服务网站,这里以为网易 163 邮箱进行举例。

登录后,点击邮箱设置:
file

跳转到邮箱安全设置,点击【POP3/SMTP/IMAP】选项,进入管理界面,开启 IMAP/SMTP 服务与 POP3/SMTP 服务。

file

下滑选择授权码管理,新增一个授权码: file

授权码生成后马上复制保存起来(授权密码只显示一次),防止丢失或遗忘,不然又得重新搞个授权码。

2.创建告警实例

使用管理员账户登录 DolphinScheduler,点击【安全中心 —— 告警实例管理】,创建一个告警实例,类型选择【Email】。

file

还没有填完,下拉继续填:

file

注意,加密策略前提是需要该邮箱服务器支持。

全部填写完成后,点击确定。

3.创建告警组

告警实例创建完成之后,还需要将其放到告警组里面,点击【安全中心 —— 告警组管理】,创建一个告警组。

file

4.执行工作流

切换到普通用户,任意创建一个项目并定义一个工作流,这里不再赘述。

工作流创建完成后,点击保存并上线该工作流,点击运行,设置启动参数,为其分配告警组:

file

我这里选择的通知策略是不管成功或失败都发送通知,设置完成后,点击确定,等待工作流执行完成后,就会收到发送过来的通知邮件了(有 10 秒左右的延迟)。

file

邮箱预警设置完成。

本文由 白鲸开源科技 提供发布支持!

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浏览器网页内嵌Qt-C++音视频播放器的实现,支持软硬解码,支持音频,支持录像截图,支持多路播放等,提供源码工程下载

一.前言 在浏览器中实现播放RTSP实时视频流,⼤体上有如下⼏个⽅案: ⽅案一:浏览器插件⽅案 ActiveX、NPAPI、PPAPI ActiveX插件适用于IE浏览器,NPAPI与PPAPI插件适用于谷歌浏览器,不过这些插件都已经不被浏览器所支持…

HashData湖仓一体方案:方案概览与Hive数据同步

随着云计算、大数据、AI的发展和普及,各行各业的业务场景日益复杂,数据呈现出大规模、多样性的特点,企业对数据仓库的需求也进一步拓展至对多元化数据实时处理的场景。 数据湖是多元数据存储与使用的便捷选择,而云原生具有数据资…

GBASE南大通用提问:如果程序检索到 NULL 值,该怎么办?

可在数据库中存储 NULL 值,但编程语言支持的数据类型不识别 NULL 状态。程序必须 采用某种方式来识别 NULL 项,以免将它作为数据来处理。 在 SQL API 中,指示符变量满足此需要。指示符变量是与可能收到 NULL 项的主变量相 关联的一个附加的变…

PHP面试小结(20240108)

PHP 部分 1. php的包管理工具是如何实现自动加载的 换句话问:composer 实现原理是什么?spl_autoload_register() 首先,Composer 是 PHP 的一个包管理和包依赖管理的工具 , 打开安装之后生成的 "vendor" 文件, 里面有个…

opencv_角点检测

文章内容 一个opencv检测角点的程序 运行效果 #include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <iostream>using namespace cv; using namespace std;void detectCorners(M…

uniapp中按钮点击跳转页面失效,纠正错误(亲测可用)

不知道伙伴你的错误和我是否一致&#xff1f; 我当时为了点击跳转按钮发现跳转不了&#xff0c;如下错误提示&#xff1a; worker.js?libNameWAAccelerateWorker.js:1 [Deprecation] SharedArrayBuffer will require cross-origin isolation as of M92, around July 2021. S…

Debian12 安装jenkins 公钥配置

jenkins公钥配置 参考&#xff1a;Debian Jenkins 软件包 这是 Jenkins 的 Debian 软件包存储库&#xff0c;用于自动安装和升级。 要使用此存储库&#xff0c;请先将密钥添加到您的系统&#xff08;对于每周发布行&#xff09;&#xff1a; sudo wget -O /usr/share/keyring…

36.有效的数独

36.有效的数独 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 &#xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#xff08;请参考示例图…

企业微信开发:自建应用:access_token

access_token 过期后接口响应 access_token 已经过期&#xff08;2小时&#xff09;后&#xff0c;调用接口的响应&#xff1b;本文中以发送消息接口为例&#xff0c;说明接口响应的情况。 官方开发文档链接&#xff1a;获取access_token access_token 过期后调用接口 响应体 …

2024年腾讯云主机价格表,附报价明细

腾讯云服务器租用价格表&#xff1a;轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三年、2核4G5M带宽218元一年&#xff0c;2核4G5M带宽756元三年、轻量4核8G12M服务器446元一年、646元15个月&#xff0c;云服务器CVM S5实例2核2G配置280.8元一年…

机器学习小记——KNN(K近邻)

为了让绝大多数人都可以看懂&#xff0c;所以我就用简单的话语来讲解机器学习每一个算法 第一次写ML的博文&#xff0c;所以可能会有些地方出错&#xff0c;欢迎各位大佬提出意见或错误 祝大家开心进步每一天&#xff5e; 博文代码全部为python 简单的说一下什么是机器学习…

adb wifi 远程调试 安卓手机 命令

使用adb wifi 模式调试需要满足以下前提条件&#xff1a; 手机 和 PC 需要在同一局域网下。手机需要开启开发者模式&#xff0c;然后打开 USB 调试模式。 具体操作步骤如下&#xff1a; 将安卓手机通过 USB 线连接到 PC。&#xff08;连接的时候&#xff0c;会弹出请求&#x…

Android 系统启动过程纪要(基于Android 10)

前言 看过源码的都知道&#xff0c;Launcher系统启动都会经过这三个进程 init ->zygote -> system_server。今天我们就来讲解一下这三个进程以及Launcher系统启动。 init进程 准备Android虚拟机环境&#xff1a;创建和挂载系统文件目录&#xff1b;初始化属性服务&…

AI大模型预先学习笔记二:prompt提问大模型、langchain使用大模型框架、fine tune微调大模型

文章目录 一、Prompt Engineering&#xff08;怎么去提问大模型&#xff09;1&#xff09;环境准备2&#xff09;交互代码的参数备注3&#xff09;交互代码 二、LangChain&#xff08;一个框架去使用大模型&#xff09;1&#xff09;LangChain核心介绍&#xff1a;I/O模块、数据…

Java NIO (二)NIO Buffer类的重要方法

1 allocate()方法 在使用Buffer实例前&#xff0c;我们需要先获取Buffer子类的实例对象&#xff0c;并且分配内存空间。需要获取一个Buffer实例对象时&#xff0c;并不是使用子类的构造器来创建&#xff0c;而是调用子类的allocate()方法。 public class AllocateTest {static…

四、Sharding-JDBC系列04:分库分表后,如何不停机迁移数据?

目录 停机迁移方案 双写迁移方案 一般会有两种方案&#xff1a; 停机迁移方案 这种方案最简单也是最low的。 数据迁移前&#xff0c;在网站或者app挂个公告&#xff0c;说0点到早上6点系统进行维护&#xff0c;无法访问。 接着到0点停机&#xff0c;系统停掉&#xff0c;…

k8s---配置资源管理

目录 配置资源管理的方式 secret pod如何来引用secret&#xff1f;&#xff1f;&#xff1f; 陈述式创建&#xff1a; 声明式创建 Secret创建加密文件 使用token挂载 环境变量使用 docker-registry ConfigMap 陈述式 热更新 总结&#xff1a; 配置资源管理的方式 …

Go-gin-example 第二部分 jwt验证

文章目录 使用 JWT 进行身份校验jwt知识点补充认识JWTTOKEN是什么jwt的使用场景jwt的组成headerpayloadsignature 下载依赖包编写 jwt 工具包jwt中间件编写如何获取token 编写获取token的Apimodels逻辑编写路由逻辑编写修改路由逻辑 验证token将中间件接入Gin功能验证模块 续接…

【开源】基于JAVA语言的固始鹅块销售系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 鹅块类型模块2.3 固始鹅块模块2.4 鹅块订单模块2.5 评论管理模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 鹅块类型表3.2.2 鹅块表3.2.3 鹅块订单表3.2.4 鹅块评论表 四、系统展示五、核心代码5.…

FPGA之初探

FPGA的构成 基本逻辑单元CLB CLB是FPGA的基本逻辑单元&#xff0c; 一个 CLB 包括了 2 个 Slices&#xff0c;所以知道Slices的数量就可以知道FPGA的“大概”逻辑资源容量了。一个 Slice 等于 4 个6输入LUT8个触发器(flip-flop)算数运算逻辑&#xff0c;每个 Slice 的 4 个触发…