Apache SeaTunnel詳解與部署(最新版本2.3.11)

目錄

一、概述

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的存儲后端(推薦…