目录

一、概述

1.1、软件介绍

1.2、解决问题​

1.3、软件特性​

1.4、使用用户

1.5、产品对比

二、架构

2.1、运行流程

2.2、连接器​

2.3、引擎

2.3.1、设计理念

2.3.2、集群管理​

2.3.3、核心功能​

2.3.4、引擎对比

三、软件部署

3.1、Docker部署

3.2、发布包部署

3.2.1、Apache SeaTunnel部署与使用 

3.2.1.1、软件解压

3.2.1.2、安装插件

3.2.1.2.1 更换maven地址 

3.2.1.2.2 减少插件下载

3.2.1.3、测试

3.2.1.4、启动服务

3.2.2、 SeaTunnel-Web部署与使用

1、下载解压

2、配置环境变量 

3、 初始化数据库脚本

4、修改 application.yml文件

5、配置引擎配置信息

6、配置版本号

7、下载依赖包 

8、拷贝依赖包 

9、启动web服务

10、检验

11、浏览器验证


一、概述

1.1、软件介绍

SeaTunnel是一个非常易用、超高性能的分布式数据集成平台,支持实时海量数据同步。 每天可稳定高效同步数百亿数据,已被近百家企业应用于生产。

Apache SeaTunnel是中国开发者主导的项目,也是Apache基金会中第一个诞生自中国的数据集成平台项目。

SeaTunnel原名Waterdrop,于2017年由乐视创建,并于同年在GitHub上开源
2021年10月改名为SeaTunnel
2021年12月9日SeaTunnel进入Apache孵化
2023年6月1日Apache SeaTunnel 毕业成为 Apache 顶级项目

Seatunnel的中文是"水滴",来自中国当代科幻小说作家刘慈欣的《三体》系列,它是三体人制造的宇宙探测器,会反射几乎全部的电磁波,表面绝对光滑,温度处于绝对零度,全部由被强互作用力紧密锁死的质子与中子构成,无坚不摧。在末日之战中,仅一个水滴就摧毁了人类太空武装力量近2千艘战舰

官网地址:

Apache SeaTunnel | Apache SeaTunnel

1.2、解决问题​

SeaTunnel专注于数据集成和数据同步,主要旨在解决数据集成领域的常见问题:

  • 数据源多样:常用数据源有数百种,版本不兼容。 随着新技术的出现,更多的数据源不断出现。 用户很难找到一个能够全面、快速支持这些数据源的工具。
  • 同步场景复杂:数据同步需要支持离线全量同步、离线增量同步、CDC、实时同步、全库同步等多种同步场景。
  • 资源需求高:现有的数据集成和数据同步工具往往需要大量的计算资源或JDBC连接资源来完成海量小表的实时同步。 这增加了企业的负担。
  • 缺乏质量和监控:数据集成和同步过程经常会出现数据丢失或重复的情况。 同步过程缺乏监控,无法直观了解任务过程中数据的真实情况。
  • 技术栈复杂:企业使用的技术组件不同,用户需要针对不同组件开发相应的同步程序来完成数据集成。
  • 管理和维护困难:受限于底层技术组件(Flink/Spark)不同,离线同步和实时同步往往需要分开开发和管理,增加了管理和维护的难度。

1.3、软件特性​

  • 丰富且可扩展的Connector:SeaTunnel提供了不依赖于特定执行引擎的Connector API。 基于该API开发的Connector(Source、Transform、Sink)可以运行在很多不同的引擎上,例如目前支持的SeaTunnel引擎(Zeta)、Flink、Spark等。
  • Connector插件:插件式设计让用户可以轻松开发自己的Connector并将其集成到SeaTunnel项目中。 目前,SeaTunnel 支持超过 100 个连接器,并且数量正在激增。
  • 批流集成:基于SeaTunnel Connector API开发的Connector完美兼容离线同步、实时同步、全量同步、增量同步等场景。 它们大大降低了管理数据集成任务的难度。
  • 支持分布式快照算法,保证数据一致性。
  • 多引擎支持:SeaTunnel默认使用SeaTunnel引擎(Zeta)进行数据同步。 SeaTunnel还支持使用Flink或Spark作为Connector的执行引擎,以适应企业现有的技术组件。 SeaTunnel 支持 Spark 和 Flink 的多个版本。
  • JDBC复用、数据库日志多表解析:SeaTunnel支持多表或全库同步,解决了过度JDBC连接的问题; 支持多表或全库日志读取解析,解决了CDC多表同步场景下需要处理日志重复读取解析的问题。
  • 高吞吐量、低延迟:SeaTunnel支持并行读写,提供稳定可靠、高吞吐量、低延迟的数据同步能力。
  • 完善的实时监控:SeaTunnel支持数据同步过程中每一步的详细监控信息,让用户轻松了解同步任务读写的数据数量、数据大小、QPS等信息。
  • 支持两种作业开发方法:编码和画布设计。 SeaTunnel Web 项目 GitHub - apache/seatunnel-web: SeaTunnel is a distributed, high-performance data integration platform for the synchronization and transformation of massive data (offline & real-time). 提供作业、调度、运行和监控功能的可视化管理。

1.4、使用用户

SeaTunnel 拥有大量用户

1.5、产品对比

对比项Apache SeaTunnelDataXApache SqoopApache FlumeFlink CDC
部署难度容易容易中等,依赖于 Hadoop 生态系统容易中等,依赖于 Hadoop 生态系统
运行模式分布式,也支持单机单机本身不是分布式框架,依赖 Hadoop MR 实现分布式分布式,也支持单机分布式,也支持单机
健壮的容错机制无中心化的高可用架构设计,有完善的容错机制易受比如网络闪断、数据源不稳定等因素影响MR 模式重,出错处理麻烦有一定的容错机制主从模式的架构设计,容错粒度比较粗,容易造成延时
支持的数据源丰富度支持 MySQL、PostgreSQL、Oracle、SQLServer、Hive、S3、RedShift、HBase、Clickhouse等过 100 种数据源支持 MySQL、ODPS、PostgreSQL、Oracle、Hive 等 20+ 种数据源仅支持 MySQL、Oracle、DB2、Hive、HBase、S3 等几种数据源支持 Kafka、File、HTTP、Avro、HDFS、Hive、HBase等几种数据源支持 MySQL、PostgresSQL、MongoDB、SQLServer 等 10+ 种数据源
内存资源占用中等
数据库连接占用少(可以共享 JDBC 连接)多(每个表需一个连接)
自动建表支持不支持不支持不支持不支持
整库同步支持不支持不支持不支持不支持(每个表需配置一次)
断点续传支持不支持不支持不支持支持
多引擎支持支持 SeaTunnel Zeta、Flink、Spark 3 个引擎选其一作为运行时只能运行在 DataX 自己引擎上自身无引擎,需运行在 Hadoop MR 上,任务启动速度非常慢支持 Flume 自身引擎只能运行在 Flink 上
数据转换算子(Transform)支持 Copy、Filter、Replace、Split、SQL 、自定义 UDF 等算子支持补全,过滤等算子,可以 groovy 自定义算子只有列映射、数据类型转换和数据过滤基本算子只支持 Interceptor 方式简单转换操作支持 Filter、Null、SQL、自定义 UDF 等算子
单机性能比 DataX 高 40%  - 80%较好一般一般较好
离线同步支持支持支持支持支持
增量同步支持支持支持支持支持
实时同步支持不支持不支持支持支持
CDC同步支持不支持不支持不支持支持
批流一体支持不支持不支持不支持支持
精确一致性MySQL、Kafka、Hive、HDFS、File 等连接器支持不支持不支持不支持精确,提供一定程度的一致性MySQL、PostgreSQL、Kakfa 等连接器支持
可扩展性插件机制非常易扩展易扩展扩展性有限,Sqoop主要用于将数据在Apache Hadoop和关系型数据库之间传输易扩展易扩展
统计信息
Web UI正在实现中(拖拉拽即可完成)
与调度系统集成度已经与 DolphinScheduler 集成,后续也会支持其他调度系统不支持不支持不支持
社区非常活跃非常不活跃已经从 Apache 退役非常不活跃非常活跃

二、架构

2.1、运行流程

SeaTunnel的运行流程如上图所示。

用户配置作业信息并选择提交作业的执行引擎。

Source Connector负责并行读取数据并将数据发送到下游Transform或直接发送到Sink,Sink将数据写入目的地。 值得注意的是,Source、Transform 和 Sink 可以很容易地自行开发和扩展。

SeaTunnel 是一个 EL(T) 数据集成平台。 因此,在SeaTunnel中,Transform只能用于对数据进行一些简单的转换,例如将一列的数据转换为大写或小写,更改列名,或者将一列拆分为多列。

SeaTunnel 使用的默认引擎是 SeaTunnel Engine。 如果您选择使用Flink或Spark引擎,SeaTunnel会将Connector打包成Flink或Spark程序并提交给Flink或Spark运行。

2.2、连接器​

  • 源连接器 SeaTunnel 支持从各种关系、图形、NoSQL、文档和内存数据库读取数据; 分布式文件系统,例如HDFS; 以及各种云存储解决方案,例如S3和OSS。 我们还支持很多常见SaaS服务的数据读取。 您可以在[此处] 访问详细列表。 如果您愿意,您可以开发自己的源连接器并将其轻松集成到 SeaTunnel 中。

  • 转换连接器 如果源和接收器之间的架构不同,您可以使用转换连接器更改从源读取的架构,使其与接收器架构相同。

  • Sink Connector SeaTunnel 支持将数据写入各种关系型、图形、NoSQL、文档和内存数据库; 分布式文件系统,例如HDFS; 以及各种云存储解决方案,例如S3和OSS。 我们还支持将数据写入许多常见的 SaaS 服务。 您可以在[此处]访问详细列表。 如果您愿意,您可以开发自己的 Sink 连接器并轻松将其集成到 SeaTunnel 中。

2.3、引擎

2.3.1、设计理念

SeaTunnel Engine 是一个由社区开发的用于数据同步场景的引擎,作为 SeaTunnel 的默认引擎,它支持高吞吐量、低延迟和强一致性的数据同步作业操作,更快、更稳定、更节省资源且易于使用。

SeaTunnel Engine 的整体设计遵循以下路径:

  • 更快,SeaTunnel Engine 的执行计划优化器旨在减少数据网络传输,从而减少由于数据序列化和反序列化造成的整体同步性能损失,使用户能够更快地完成数据同步操作。同时,支持速度限制,以合理速度同步数据。
  • 更稳定,SeaTunnel Engine 使用 Pipeline 作为数据同步任务的最小粒度的检查点和容错。任务的失败只会影响其上游和下游任务,避免了任务失败导致整个作业失败或回滚的情况。同时,SeaTunnel Engine 还支持数据缓存,用于源数据有存储时间限制的场景。当启用缓存时,从源读取的数据将自动缓存,然后由下游任务读取并写入目标。在这种情况下,即使由于目标失败而无法写入数据,也不会影响源的常规读取,防止源数据过期被删除。
  • 节省空间,SeaTunnel Engine 内部使用动态线程共享技术。在实时同步场景中,对于每个表数据量很大但每个表数据量很小的表,SeaTunnel Engine 将在共享线程中运行这些同步任务,以减少不必要的线程创建并节省系统空间。在读取和写入数据方面,SeaTunnel Engine 的设计目标是最小化 JDBC 连接的数量;在 CDC 场景中,SeaTunnel Engine 将重用日志读取和解析资源。
  • 简单易用,SeaTunnel Engine 减少了对第三方服务的依赖,并且可以独立于如 Zookeeper 和 HDFS 等大数据组件实现集群管理、快照存储和集群 HA 功能。这对于目前缺乏大数据平台的用户,或者不愿意依赖大数据平台进行数据同步的用户来说非常有用。

未来,SeaTunnel Engine 将进一步优化其功能,以支持离线批同步的全量同步和增量同步、实时同步和 CDC。

2.3.2、集群管理​

  • 支持独立运行;
  • 支持集群运行;
  • 支持自治集群(去中心化),使用户无需为 SeaTunnel Engine 集群指定主节点,因为它可以在运行过程中自行选择主节点,并且在主节点失败时自动选择新的主节点;
  • 自治集群节点发现和具有相同 cluster_name 的节点将自动形成集群。

2.3.3、核心功能​

  • 支持在本地模式下运行作业,作业完成后集群自动销毁;
  • 支持在集群模式下运行作业(单机或集群),通过 SeaTunnel 客户端将作业提交给 SeaTunnel Engine 服务,作业完成后服务继续运行并等待下一个作业提交;
  • 支持离线批同步;
  • 支持实时同步;
  • 批流一体,所有 SeaTunnel V2 Connector 均可在 SeaTunnel Engine 中运行;
  • 支持分布式快照算法,并支持与 SeaTunnel V2 Connector 的两阶段提交,确保数据只执行一次。
  • 支持在 Pipeline 级别调用作业,以确保即使在资源有限的情况下也能启动;
  • 支持在 Pipeline 级别对作业进行容错。任务失败只影响其所在 Pipeline,只需要回滚 Pipeline 下的任务;
  • 支持动态线程共享,以实时同步大量小数据集。

2.3.4、引擎对比

Apache SeaTunne默认使用的是自研的SeaTunne Zeta引擎,还支持Spark、Flink计算引擎

三、软件部署

3.1、Docker部署

参考:使用Docker进行部署 | Apache SeaTunnel

3.2、发布包部署

下载地址:

Apache SeaTunnel

或:

apache-seatunnel-2.3.11安装包下载_开源镜像站-阿里云

3.2.1、Apache SeaTunnel部署与使用 

3.2.1.1、软件解压
cd usr/local/soft/
tar -zxvf apache-seatunnel-2.3.11-bin.tar.gz
3.2.1.2、安装插件

安装插件前需要进行Maven镜像地址更换与一些不用的插件不需要下载

cd /usr/local/soft/apache-seatunnel-2.3.11/
sh bin/install-plugin.sh
3.2.1.2.1 更换maven地址 

整个过程非常慢…从国外maven中央仓库下载东西,可以使用maven的阿里云镜像

setting文件地址:/root/.m2/wrapper/dists/apache-maven-3.8.4-bin/52ccbt68d252mdldqsfsn03jlf/apache-maven-3.8.4/conf/

 换成阿里云镜像

<mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>https://maven.aliyun.com/repository/central</url>
</mirror>
<mirror> <id>aliyun-maven</id><mirrorOf>*</mirrorOf> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

 

更换后再下载速度很快

3.2.1.2.2 减少插件下载

默认插件全部下载,如果自己用不到,可以注释掉,因为即便下载了也不用,占用空间,如果下载有需要可以再下载,配置地址如下:/usr/local/soft/apache-seatunnel-2.3.11/config/plugin_config

#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
# This mapping is used to resolve the Jar package name without version (or call artifactId)
#
# corresponding to the module in the user Config, helping SeaTunnel to load the correct Jar package.
# Don't modify the delimiter " -- ", just select the plugin you need
--connectors-v2--
#connector-amazondynamodb
connector-assert
#connector-cassandra
connector-cdc-mysql
connector-cdc-mongodb
#connector-cdc-sqlserver
connector-cdc-postgres
#connector-cdc-oracle
#connector-cdc-tidb
connector-clickhouse
connector-datahub
connector-dingtalk
#connector-doris
connector-elasticsearch
connector-email
connector-file-ftp
connector-file-hadoop
connector-file-local
connector-file-oss
connector-file-jindo-oss
#connector-file-s3
connector-file-sftp
connector-file-obs
#connector-google-sheets
#connector-google-firestore
connector-hive
connector-http-base
connector-http-feishu
connector-http-gitlab
connector-http-github
connector-http-jira
connector-http-klaviyo
connector-http-lemlist
connector-http-myhours
connector-http-notion
connector-http-onesignal
connector-http-wechat
connector-hudi
connector-iceberg
connector-influxdb
connector-iotdb
connector-jdbc
connector-kafka
connector-kudu
#connector-maxcompute
connector-mongodb
connector-neo4j
#connector-openmldb
#connector-pulsar
connector-rabbitmq
connector-redis
connector-druid
#connector-s3-redshift
#connector-sentry
#connector-slack
connector-socket
#connector-starrocks
#connector-tablestore
#connector-selectdb-cloud
connector-hbase
#connector-amazonsqs
#connector-easysearch
#connector-paimon
#connector-rocketmq
#connector-tdengine
connector-web3j
#connector-milvus
#connector-activemq
#connector-sls
#connector-qdrant
#connector-typesense
#connector-cdc-opengauss

连接器下载到/usr/local/soft/apache-seatunnel-2.3.11/connectors/,可以单独保存,以后安装就不用再下载

上述内容也可以直接上传,地址如下
链接: https://pan.baidu.com/s/1Q4lTMtiBWlP5-3epmCC6jw?pwd=ejkx 提取码: ejkx 

3.2.1.3、修改配置文件

vi /usr/local/soft/apache-seatunnel-2.3.11/config/seatunnel-env.sh

修改路径

# Home directory of spark distribution.
SPARK_HOME=${SPARK_HOME:-/usr/local/soft/spark-4.0.0-bin-hadoop3}
# Home directory of flink distribution.
FLINK_HOME=${FLINK_HOME:-/opt/flink}

3.2.1.3、测试
cd /usr/local/soft/apache-seatunnel-2.3.11/
./bin/seatunnel.sh --config ./config/v2.batch.config.template -m local

3.2.1.4、启动服务

用于web端连接

seatunnel-cluster.sh

或 

cd /usr/local/soft/apache-seatunnel-2.3.11/bin/
nohup sh seatunnel-cluster.sh 2>&1 &

关闭

stop-seatunnel-cluster.sh

3.2.2、 SeaTunnel-Web部署与使用

1、下载解压

下载地址:Apache SeaTunnel

或:apache-seatunnel-seatunnel-web-1.0.2安装包下载_开源镜像站-阿里云

cd /usr/local/soft/
tar -zxvf apache-seatunnel-web-1.0.2-bin.tar.gz

2、配置环境变量 

vim /etc/profile

添加

export SEATUNNEL_HOME=/usr/local/soft/apache-seatunnel-2.3.11
export SEATUNNEL_WEB_HOME=/usr/local/soft/apache-seatunnel-web-1.0.2-bin
export PATH=$PATH:$SEATUNNEL_HOME/bin:$SEATUNNEL_WEB_HOME/bin

使环境变量生效

source /etc/profile

3、 初始化数据库脚本

登录数据库

mysql -u root -p

输入密码后执行脚本

source /usr/local/soft/apache-seatunnel-web-1.0.2-bin/script/seatunnel_server_mysql.sql

 

4、修改 application.yml文件
 vi /usr/local/soft/apache-seatunnel-web-1.0.2-bin/conf/application.yml

修改数据库相关参数 

添加secretkey

代码生成:

        <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>0.11.2</version></dependency><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-impl</artifactId><version>0.11.2</version></dependency>
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.security.Keys;import javax.crypto.SecretKey;
import java.util.Base64;public class App {public static void main(String[] args) {SecretKey secretKey = Keys.secretKeyFor(SignatureAlgorithm.HS256);String key =  Base64.getEncoder().encodeToString(secretKey.getEncoded());System.out.println(key);}}

 运行结果

RrvTLM4y/+J5HU1lB2NM0/9dVnlhpF5fuV9v1z2+M9w=

5、配置引擎配置信息
cp /usr/local/soft/apache-seatunnel-2.3.11/config/hazelcast-client.yaml /usr/local/soft/apache-seatunnel-web-1.0.2-bin/conf/
cp /usr/local/soft/apache-seatunnel-2.3.11/connectors/plugin-mapping.properties /usr/local/soft/apache-seatunnel-web-1.0.2-bin/conf/
6、配置版本号
vi /usr/local/soft/apache-seatunnel-web-1.0.2-bin/bin/download_datasource.sh

修改版本号为1.0.2 

7、下载依赖包 
cd /usr/local/soft/apache-seatunnel-web-1.0.2-bin/bin/
download_datasource.sh

 下载后的包在/usr/local/soft/apache-seatunnel-web-1.0.2-bin/datasource/文件夹中

8、拷贝依赖包 

将/usr/local/soft/apache-seatunnel-web-1.0.2-bin/datasource/所有文件拷贝到/usr/local/soft/apache-seatunnel-web-1.0.2-bin/libs/文件夹下

cp /usr/local/soft/apache-seatunnel-web-1.0.2-bin/datasource/* /usr/local/soft/apache-seatunnel-web-1.0.2-bin/libs/
cp /usr/local/soft/apache-seatunnel-web-1.0.2-bin/datasource/* /usr/local/soft/apache-seatunnel-2.3.11/lib/

配置MySQL依赖包

同时将准备好的mysql-connector-java-8.0.15.jar添加到/usr/local/soft/apache-seatunnel-web-1.0.2-bin/libs/文件夹中

9、启动web服务
seatunnel-backend-daemon.sh start
 10、检验
jps

11、浏览器验证

浏览器输入:http://node11:8801/

默认登录的用户名和密码:admin

设置中文

FAQ:

1、

解决方案:

url: jdbc:mysql://node11:3306/seatunnel?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&allowPublicKeyRetrieval=true

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

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

相关文章

pytorch | minist手写数据集

一、神经网络神经网络&#xff08;Neural Network&#xff09;是一种受生物神经系统&#xff08;尤其是大脑神经元连接方式&#xff09;启发的机器学习模型&#xff0c;是深度学习的核心基础。它通过模拟大量 “人工神经元” 的互联结构&#xff0c;学习数据中的复杂模式和规律…

[C/C++安全编程]_[中级]_[如何避免出现野指针]

场景 在Rust里不会出现野指针的情况&#xff0c;那么在C里能避免吗&#xff1f; 说明 野指针是指指向无效内存地址的指针&#xff0c;访问它会导致未定义行为&#xff0c;可能引发程序崩溃、数据损坏或安全漏洞。它是 C/C 等手动内存管理语言中的常见错误&#xff0c;而 Rust…

机器学习基础:从数据到智能的入门指南

一、何谓机器学习​ 在我们的日常生活中&#xff0c;机器学习的身影无处不在。当你打开购物软件&#xff0c;它总能精准推荐你可能喜欢的商品&#xff1b;当你解锁手机&#xff0c;人脸识别瞬间完成&#xff1b;当你使用语音助手&#xff0c;它能准确理解你的指令。这些背后&a…

steam游戏搬砖项目超完整版实操分享

大家好&#xff0c;我是阿阳&#xff0c;今天再次最详细的给大家综合全面的分析讲解下steam搬砖&#xff0c;可以点击后面跳转往期文章了再次解下阿阳网客&#xff1a;关于steam游戏搬砖项目&#xff0c;我想说&#xff01;最早是21年5月份公开朋友圈&#xff0c;初次接触是在2…

vue2 面试题及详细答案150道(21 - 40)

《前后端面试题》专栏集合了前后端各个知识模块的面试题&#xff0c;包括html&#xff0c;javascript&#xff0c;css&#xff0c;vue&#xff0c;react&#xff0c;java&#xff0c;Openlayers&#xff0c;leaflet&#xff0c;cesium&#xff0c;mapboxGL&#xff0c;threejs&…

原生前端JavaScript/CSS与现代框架(Vue、React)的联系与区别(详细版)

原生前端JavaScript/CSS与现代框架&#xff08;Vue、React&#xff09;的联系与区别&#xff0c;以及运行环境和条件 目录 引言原生前端技术概述 JavaScript基础CSS基础 现代框架概述 Vue.jsReact 联系与相似性主要区别对比运行环境和条件选择建议总结 引言 在现代Web开发中&…

基于机器视觉的迈克耳孙干涉环自动计数系统设计与实现

基于机器视觉的迈克耳孙干涉环自动计数系统设计与实现 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 摘要 本文设计并实现了一种基于机器视觉的迈克耳孙干涉环自动计数系统。该系统…

设计模式笔记(1)简单工厂模式

最近在看程杰的《大话设计模式》&#xff0c;在这里做一点笔记。 书中主要有两个角色&#xff1a; 小菜&#xff1a;初学者&#xff0c;学生&#xff1b; 大鸟&#xff1a;小菜表哥&#xff0c;大佬。 也按图中的对话形式 01 简单工厂模式 要求&#xff1a;使用c、Java、C#或VB…

Vue3 学习教程,从入门到精通,Vue 3 声明式渲染语法指南(10)

Vue 3 声明式渲染语法指南 本文将详细介绍 Vue 3 中的声明式渲染语法&#xff0c;涵盖所有核心概念&#xff0c;并通过一个完整的案例代码进行演示。案例代码中包含详细注释&#xff0c;帮助初学者更好地理解每个部分的功能和用法。 目录 简介声明式渲染基础 文本插值属性绑…

React hooks——useReducer

一、简介useReducer 是 React 提供的一个高级 Hook&#xff0c;用于管理复杂的状态逻辑。它类似于 Redux 中的 reducer 模式&#xff0c;适合处理包含多个子值、依赖前一个状态或逻辑复杂的状态更新场景。与 useState 相比&#xff0c;useReducer 提供更结构化的状态管理方式。…

SEO中关于关键词分类与布局的方法有那些

前边我们说到关键词挖掘肯定很重要&#xff0c;但如何把挖掘出来的关键词用好更为重要&#xff0c;下边我们就来说说很多seo刚入行的朋友比较头疼的关键词分类问题&#xff0c;为了更直观的感受搭配了表格&#xff0c;希望可以给大家一些帮助!SEO优化之关键词分类​挖掘出的关键…

考研最高效的准备工作是什么

从性价比的角度来说&#xff0c;考研最高效的准备工作是什么呢&#xff1f; 其实就是“卷成绩”。 卷学校中各门课程的成绩&#xff0c;卷考研必考的数学、英语、政治和专业课的成绩。 因为现阶段的考研&#xff0c;最看重的仍然是你的成绩&#xff0c;特别是初试成绩。 有了…

【Linux】基于Ollama和Streamlit快速部署聊天大模型

1.环境准备 1.1 安装Streamlit 在安装Streamlit之前&#xff0c;请确保您的系统中已经正确安装了Python和pip。您可以在终端或命令行中运行以下命令来验证它们是否已安装 python --version pip --version一旦您已经准备好环境&#xff0c;现在可以使用pip来安装Streamlit了。…

Jetpack - ViewModel、LiveData、DataBinding(数据绑定、双向数据绑定)

一、ViewModel 1、基本介绍 ViewModel 属于 Android Jetpack 架构组件的一部分&#xff0c;ViewModel 被设计用来存储和管理与 UI 相关的数据&#xff0c;这些数据在配置更改&#xff08;例如&#xff0c;屏幕旋转&#xff09;时能够幸存下来&#xff0c;ViewModel 的生命周期与…

Go并发聊天室:从零构建实战

大家好&#xff0c;今天我将分享一个使用Go语言从零开始构建的控制台并发聊天室项目。这个项目虽然简单&#xff0c;但它麻雀虽小五脏俱全&#xff0c;非常适合用来学习和实践Go语言强大的并发特性&#xff0c;尤其是 goroutine 和 channel 的使用。 一、项目亮点与功能特性 …

疯狂星期四第13天运营日报

网站运营第13天&#xff0c;点击观站&#xff1a; 疯狂星期四 crazy-thursday.com 全网最全的疯狂星期四文案网站 运营报告 昨日访问量 昨天大概60个ip, 同比上个星期是高点的&#xff0c;但是与星期四差别还是太大了。&#x1f602; 昨日搜索引擎收录情况 百度依旧0收录 …

吴恩达《AI for everyone》第二周课程笔记

机器学习项目工作流程以Echo/Alexa&#xff08;语音识别AI&#xff09;作为例子解释&#xff1a; 1. collect data 收集数据——人为找很多人说 Alexa&#xff0c;并录制音频&#xff1b;并且还会让一群人说其他词语&#xff0c;比如hello 2. train model 训练模型——用机器学…

uniapp props、$ref、$emit、$parent、$child、$on

1. uniapp props、ref、ref、ref、emit、parent、parent、parent、child、$on 1.1. 父组件和子组件 propsPage.vue导入props-son-view.vue组件的时候,我们就称index.vue为父组件依次类推,在vue中只要能获取到组件的实例,那么就可以调用组件的属性或是方法进行操作 1.2. pr…

4、ubuntu | dify创建知识库 | 上市公司个股研报知识库

1、创建知识库步骤 创建一个知识库并上传相关文档主要涉及以下五个关键步骤&#xff1a; 创建知识库&#xff1a;首先&#xff0c;需要创建一个新的知识库。这可以通过上传本地文件、从在线资源导入数据或者直接创建一个空的知识库来实现。 指定分段模式&#xff1a;接下来是…

Kubernetes中为Elasticsearch配置多节点共享存储

在Kubernetes中为Elasticsearch配置多节点共享存储(ReadWriteMany)需结合存储后端特性及Elasticsearch架构设计。 由于Elasticsearch默认要求每个节点独立存储数据(ReadWriteOnce),直接实现多节点共享存储需特殊处理。 ​​方案一:使用支持ReadWriteMany的存储后端(推荐…