Flink架構概覽,Flink DataStream API 的使用,FlinkCDC的使用

一、Flink與其他組件的協同

Flink 是一個分布式、高性能、始終可用、準確一次(Exactly-Once)語義的流處理引擎,廣泛應用于大數據實時處理場景中。它與 Hadoop 生態系統中的組件可以深度集成,形成完整的大數據處理鏈路。下面我們從 Flink 的 核心架構 出發,結合與 Hadoop 組件協同方式,詳細剖析 Flink 的作用。


1. Flink 核心架構詳解

1)架構組件圖概覽

+-------------------------+
|       Client            |
+-------------------------+|v
+-------------------------+
|    JobManager (JM)      |  <-- Master 負責調度
+-------------------------+|v
+-------------------------+
|    TaskManagers (TM)    |  <-- Worker 執行算子任務
+-------------------------+|v
+-------------------------+
|         Slot            |  <-- 執行資源單位
+-------------------------+

2)核心組件職責

組件描述
Client提交作業到 Flink 集群,觸發作業執行。
JobManager (JM)管理作業生命周期,負責調度任務、故障恢復、協調檢查點(Checkpoint)等。
TaskManager (TM)具體執行作業的物理任務(算子),負責數據交換、狀態管理等。
SlotTaskManager 內部的資源單位,用于任務部署。每個 TaskManager 有多個 Slot。

3)狀態管理與容錯

  • Checkpoint/Savepoint:可恢復一致性狀態(Exactly Once)

  • State Backend:保存狀態(如 RocksDB、FsStateBackend)

  • Recovery:通過重放 Checkpoint 恢復任務


2. Flink 與 Hadoop 各組件的協同關系

Flink 雖然是獨立系統,但能與 Hadoop 生態的多個關鍵組件協同工作,構建完整的大數據平臺。

1)與 HDFS(Hadoop Distributed File System)

協同方式描述
輸入源Flink 可直接讀取 HDFS 中的批量數據(如 ORC、Parquet、Text 等格式)
狀態后端Flink Checkpoint/Savepoint 可存儲到 HDFS 上,保證高可用與容災
輸出目標Flink 作業可以將計算結果輸出到 HDFS,作為后續離線處理的數據
fs.defaultFS: hdfs://namenode:8020
state.backend: filesystem
state.checkpoints.dir: hdfs://namenode:8020/flink/checkpoints/

2)與 Hive

協同方式描述
讀取表數據Flink 可通過 Hive Catalog 與 Hive 元數據打通,直接讀取 Hive 表
寫入表Flink SQL 可將流式數據寫入 Hive(使用 INSERT INTO)
統一元數據Flink + Hive Catalog 支持表結構共享,便于湖倉一體實踐
CREATE CATALOG my_hive WITH ('type' = 'hive','hive-conf-dir' = '/etc/hive/conf'
);

3)與 Kafka(實時采集)

協同方式描述
實時數據源Flink 通過 Kafka Source 接收實時數據流(如日志、訂單等)
下游結果寫入Flink 可將流式計算結果寫入 Kafka(供下游消費)
Exactly Once 語義Flink + Kafka + Checkpoint 可實現端到端的精確一次語義
FlinkKafkaConsumer<String> consumer = new FlinkKafkaConsumer<>("topic", new SimpleStringSchema(), properties);
consumer.setStartFromGroupOffsets();
consumer.setCommitOffsetsOnCheckpoints(true);

4)與 HBase(實時查詢)

協同方式描述
維表關聯Flink 可使用 HBase 作為維表進行流批 Join,實時補充維度數據
實時寫入計算結果可實時寫入 HBase,支持下游查詢系統使用(如用戶畫像等)
tableEnv.executeSql("CREATE TABLE hbase_dim (...) WITH ('connector' = 'hbase-2.2', ...)");

5)與 YARN

協同方式描述
資源調度Flink 可部署在 YARN 上,利用 Hadoop 的資源調度管理能力
Session / Per-Job 模式支持多租戶資源隔離或每個作業獨立資源隔離部署
flink run -m yarn-cluster -ynm my-flink-job myjob.jar

6)與 Zookeeper

協同方式描述
高可用 JobManager使用 Zookeeper 實現 JobManager 的 leader election
Checkpoint HA 元數據存儲配合 HDFS 存儲 Checkpoint 元數據路徑
high-availability: zookeeper
high-availability.zookeeper.quorum: zk1:2181,zk2:2181,zk3:2181
high-availability.storageDir: hdfs://namenode:8020/flink/ha/

3. Flink 的作用總結

模塊Flink 的角色
實時數據處理核心組件,進行低延遲、高吞吐流處理計算
數據清洗與 ETL提供強大 SQL / DataStream API 進行多源數據處理與聚合
實時指標計算支持實時 KPI、UV/PV、訂單流等分析
數據湖構建可作為流式數據入湖的計算引擎(結合 Hudi/Iceberg)
實時監控預警搭配 Kafka + Prometheus,構建告警與監控系統
實時數倉建設聯合 Kafka + Hive + HDFS + HBase 構建流批一體數倉體系

4. Flink 架構在 Hadoop 平臺的實際部署圖

                     +-------------+|  Flume/Nginx|+------+------+|Kafka集群|+-------------------+--------------------+|                                        |+---v---+                               +----v----+| Flink |--> 清洗 → 維表 Join → 計算    |  Spark  |+---+---+                               +----+----+|                                        |
+-------v---------+                     +--------v--------+
| HBase/Redis     |                     |  HDFS / Hive    |
+-----------------+                     +-----------------+

二、Flink DataStream API的使用

現在以 Flink DataStream API 為核心,深入剖析一個真實生產場景的 從 Kafka 到 Kafka 的流式處理全流程,包括:

  1. 項目結構與依賴

  2. 數據模型與清洗

  3. 水位線與亂序處理

  4. 異步維表查詢(HBase/MySQL/Redis)

  5. 窗口聚合邏輯

  6. 數據下發(Kafka Sink)

  7. 容錯機制與 Checkpoint 配置


1. 項目結構與依賴

1)Maven 依賴(pom.xml

<dependencies><dependency><groupId>org.apache.flink</groupId><artifactId>flink-java</artifactId><version>1.17.1</version></dependency><dependency><groupId>org.apache.flink</groupId><artifactId>flink-streaming-java</artifactId><version>1.17.1</version></dependency><dependency><groupId>org.apache.flink</groupId><artifactId>flink-connector-kafka</artifactId><version>3.0.1-1.17</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.14.2</version></dependency><dependency><groupId>org.apache.flink</groupId><artifactId>flink-connector-hbase-2.2</artifactId><version>1.17.1</version></dependency>
</dependencies>

2. 數據模型定義

1)訂單數據結構(OrderEvent)

public class OrderEvent {public String orderId;public String userId;public String productId;public double price;public int quantity;public long orderTime; // epoch millis
}

2) 商品維度(ProductInfo)

public class ProductInfo {public String productId;public String categoryId;public String productName;
}

3)聚合結果結構(OrderStat)

public class OrderStat {public String categoryId;public long windowStart;public long windowEnd;public double totalAmount;
}

3. Kafka Source + JSON 反序列化

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.enableCheckpointing(60000, CheckpointingMode.EXACTLY_ONCE);KafkaSource<String> kafkaSource = KafkaSource.<String>builder().setBootstrapServers("kafka:9092").setTopics("order_events").setGroupId("flink-consumer").setStartingOffsets(OffsetsInitializer.latest()).setValueOnlyDeserializer(new SimpleStringSchema()).build();DataStream<OrderEvent> orderStream = env.fromSource(kafkaSource, WatermarkStrategy.noWatermarks(), "KafkaSource").map(json -> new ObjectMapper().readValue(json, OrderEvent.class)).returns(OrderEvent.class);

4. 水位線處理(亂序數據支持)

WatermarkStrategy<OrderEvent> watermarkStrategy = WatermarkStrategy.<OrderEvent>forBoundedOutOfOrderness(Duration.ofSeconds(5)).withTimestampAssigner((event, ts) -> event.orderTime);DataStream<OrderEvent> orderStreamWithWM = orderStream.assignTimestampsAndWatermarks(watermarkStrategy);

5. 異步維表關聯(以 HBase 為例)

使用 AsyncFunction 實現異步查詢(支持 Redis/HBase/MySQL)

示例實現:AsyncProductEnrichmentFunction

public class AsyncProductEnrichmentFunction extends RichAsyncFunction<OrderEvent, Tuple2<OrderEvent, ProductInfo>> {private transient HBaseClient hBaseClient;@Overridepublic void open(Configuration parameters) throws Exception {hBaseClient = new HBaseClient("hbase.zookeeper.quorum");}@Overridepublic void asyncInvoke(OrderEvent input, ResultFuture<Tuple2<OrderEvent, ProductInfo>> resultFuture) {CompletableFuture.supplyAsync(() -> hBaseClient.queryProductInfo(input.productId)).thenAccept(productInfo -> resultFuture.complete(Collections.singletonList(Tuple2.of(input, productInfo))));}@Overridepublic void close() throws Exception {hBaseClient.close();}
}

應用異步函數

DataStream<Tuple2<OrderEvent, ProductInfo>> enrichedStream = AsyncDataStream.unorderedWait(orderStreamWithWM,new AsyncProductEnrichmentFunction(),5, TimeUnit.SECONDS, 100
);

6. 按類目 ID 滾動窗口聚合

DataStream<OrderStat> resultStream = enrichedStream.map(tuple -> new Tuple3<>(tuple.f1.categoryId, tuple.f0.orderTime, tuple.f0.price * tuple.f0.quantity)).returns(Types.TUPLE(Types.STRING, Types.LONG, Types.DOUBLE)).assignTimestampsAndWatermarks(WatermarkStrategy.<Tuple3<String, Long, Double>>forBoundedOutOfOrderness(Duration.ofSeconds(5)).withTimestampAssigner((t, ts) -> t.f1)).keyBy(t -> t.f0).window(TumblingEventTimeWindows.of(Time.minutes(1))).aggregate(new AggregateFunction<Tuple3<String, Long, Double>, Double, OrderStat>() {private long windowStart, windowEnd;private String categoryId;public Double createAccumulator() { return 0.0; }public Double add(Tuple3<String, Long, Double> value, Double acc) {categoryId = value.f0;return acc + value.f2;}public OrderStat getResult(Double acc) {return new OrderStat(categoryId, windowStart, windowEnd, acc);}public Double merge(Double acc1, Double acc2) {return acc1 + acc2;}}, new ProcessWindowFunction<OrderStat, OrderStat, String, TimeWindow>() {@Overridepublic void process(String key, Context context, Iterable<OrderStat> elements, Collector<OrderStat> out) {OrderStat stat = elements.iterator().next();stat.windowStart = context.window().getStart();stat.windowEnd = context.window().getEnd();out.collect(stat);}});

7. 寫入 Kafka Sink

KafkaSink<OrderStat> kafkaSink = KafkaSink.<OrderStat>builder().setBootstrapServers("kafka:9092").setRecordSerializer(KafkaRecordSerializationSchema.builder().setTopic("order_stats").setValueSerializationSchema(stat -> {ObjectMapper mapper = new ObjectMapper();return mapper.writeValueAsBytes(stat);}).build()).setDeliverGuarantee(DeliveryGuarantee.EXACTLY_ONCE).build();resultStream.sinkTo(kafkaSink);

8.? 容錯與 HA 配置(關鍵)

1)Checkpoint 配置

env.enableCheckpointing(60000);
env.getCheckpointConfig().setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE);
env.getCheckpointConfig().setMinPauseBetweenCheckpoints(30000);
env.setStateBackend(new RocksDBStateBackend("hdfs://namenode/flink/checkpoints"));

2)高可用配置(flink-conf.yaml)

high-availability: zookeeper
high-availability.zookeeper.quorum: zk1:2181,zk2:2181
state.checkpoints.dir: hdfs://namenode/flink/checkpoints
state.savepoints.dir: hdfs://namenode/flink/savepoints

9. 運行命令(on YARN)

flink run -m yarn-cluster -c com.company.OrderRealtimeJob your-job.jar

10. 監控與排障建議

工具功能
Flink Web UI監控 Task、Checkpoint、Watermark
Prometheus指標采集
Grafana可視化
AlertManager告警配置
Savepoint容錯恢復點

三、FlinkCDC實時采集數據入湖

解析Flink CDC(Change Data Capture)在大數據體系中的使用方法,并結合 Kafka、Hudi、Iceberg、Hive、HDFS 等大數據組件,提供一套 可落地、可執行、可擴展的完整集成方案


1. Flink CDC 簡介

Flink CDC 是 Apache Flink + Debezium 的組合,用于實時采集 MySQL/PostgreSQL 等數據庫的變更數據(INSERT/UPDATE/DELETE),并以 流式方式傳遞到下游系統(Kafka、Hudi、Iceberg、HBase 等)。


2. 典型架構場景:Flink CDC + Hudi + Hive 實時數據湖方案

           +-------------+               +---------------------+| MySQL/Postgres            |                     ||    Source DB   +-------->  | Flink CDC Connector |+-------------+             |                     |+----------+----------+|| Row-level ChangeLogv+----------+----------+|     Flink Job       ||   (數據清洗/處理)   |+----------+----------+|v+----------+----------+| Hudi Sink (Flink)   |+----------+----------+|v+-------------+-------------+| Hive / Presto / Trino     || 實時查詢(支持 ACID)      |+---------------------------+

3. 方案目標

  • 實時采集 MySQL 數據(基于 Binlog)

  • 支持變更(Insert/Update/Delete)語義

  • 數據存入 Hudi 表(支持 MOR/COW 格式)

  • Hive/Presto 端可直接查詢


4. 組件版本建議

組件版本建議
Flink1.17.x 或 1.18.x
Flink CDC2.4.1
Debezium內嵌于 Flink CDC
Hudi0.13.1+
Hive2.3.x / 3.1.x
Hadoop/HDFS3.x

5. 部署準備

1)安裝 Kafka(可選)

用于做 CDC 中轉(可選,支持 Flink 直接接 Hudi)

2)安裝 Hive Metastore + Hadoop HDFS

用于管理 Hudi 表元數據和 HDFS 存儲

3)準備 MySQL 源數據庫

配置 binlog,設置 binlog_format = ROW,并開啟 server_idbinlog_row_image = full


6. 關鍵配置代碼與步驟

1)添加 Maven 依賴

<dependencies><!-- Flink CDC --><dependency><groupId>com.ververica</groupId><artifactId>flink-connector-mysql-cdc</artifactId><version>2.4.1</version></dependency><!-- Hudi Sink --><dependency><groupId>org.apache.hudi</groupId><artifactId>hudi-flink-bundle_2.12</artifactId><version>0.13.1</version></dependency>
</dependencies>

2)Flink SQL 示例(CDC → Hudi)

-- 1. 源表:MySQL CDC 表
CREATE TABLE ods_orders (id STRING,user_id STRING,amount DOUBLE,ts TIMESTAMP(3),PRIMARY KEY (id) NOT ENFORCED
) WITH ('connector' = 'mysql-cdc','hostname' = 'mysql-host','port' = '3306','username' = 'flink','password' = 'flink123','database-name' = 'srm','table-name' = 'orders','scan.startup.mode' = 'initial'
);-- 2. 目標表:Hudi 表(MOR 模式)
CREATE TABLE dwd_orders (id STRING PRIMARY KEY NOT ENFORCED,user_id STRING,amount DOUBLE,ts TIMESTAMP(3)
) PARTITIONED BY (`user_id`)
WITH ('connector' = 'hudi','path' = 'hdfs://namenode/data/hudi/dwd_orders','table.type' = 'MERGE_ON_READ','hoodie.datasource.write.recordkey.field' = 'id','write.tasks' = '4','compaction.async.enabled' = 'true','hive_sync.enabled' = 'true','hive_sync.mode' = 'hms','hive_sync.metastore.uris' = 'thrift://hive-metastore:9083','hive_sync.db' = 'ods','hive_sync.table' = 'dwd_orders'
);-- 3. 實時寫入
INSERT INTO dwd_orders
SELECT * FROM ods_orders;

7. 關鍵功能說明

功能配置字段說明
主鍵變更支持PRIMARY KEY ... NOT ENFORCED支持 upsert
增量采集模式scan.startup.mode = initial首次全量 + 后續增量
實時 compactioncompaction.async.enabled = trueMOR 表性能保障
Hive 數據同步hive_sync.enabled = trueHudi 自動注冊 Hive 元數據

8. 整合優化建議

1)多表 CDC 同步統一處理

使用 Flink CDC 的 schema-name.table-name通配符

'database-name' = 'srm',
'table-name' = '.*',

配合 Flink SQL Catalog + Dynamic Table Factory,可實現一拖 N 的多表處理邏輯。


2)增加清洗邏輯(如空值過濾、轉換)

SELECTid,user_id,amount * 1.13 AS amount_tax,ts
FROM ods_orders
WHERE amount IS NOT NULL;

3)寫入 Kafka(替代 Hudi) → 用于事件總線或下游消費

CREATE TABLE kafka_sink (id STRING,user_id STRING,amount DOUBLE,ts TIMESTAMP(3)
) WITH ('connector' = 'kafka','topic' = 'ods.orders','properties.bootstrap.servers' = 'kafka:9092','format' = 'json','scan.startup.mode' = 'latest-offset'
);

9. Flink CDC 整合場景匯總

場景描述推薦組件
實時數據入湖MySQL → HudiFlink CDC + Hudi
數據倉庫加速Oracle → IcebergFlink CDC + Iceberg
數據中臺構建MySQL → Kafka → 多下游Flink CDC + Kafka
數據回流校驗Kafka → Flink → MySQLFlink SQL + JDBC Sink
DWD建模ODS → DWD/DWM → ADSFlink SQL + 維表 JOIN

10. 可視化監控

工具功能
Flink UICheckpoint、Watermark、吞吐
Prometheus指標采集
Grafana監控儀表盤
HiveSQL 查詢驗證

四、自定義 Flink CDC Job 的完整實現

自定義 Flink CDC Job 的完整實現,采用 Java DataStream API 編寫,支持:

  • 多表接入(MySQL 為例)

  • 自定義清洗、轉換邏輯

  • 支持寫入 Kafka、Hudi、Iceberg 等下游系統

  • 可部署為標準 Flink 應用(flink run 執行)


1. 自定義 Flink CDC Job 場景說明

目標:

  • 從 MySQL 采集訂單表 srm.orders

  • 做清洗(如金額換算、字段過濾)

  • 輸出到 Hudi 表(或 Kafka/Console)


2. 依賴配置(Maven)

<dependencies><!-- Flink CDC --><dependency><groupId>com.ververica</groupId><artifactId>flink-connector-mysql-cdc</artifactId><version>2.4.1</version></dependency><!-- Flink 通用 --><dependency><groupId>org.apache.flink</groupId><artifactId>flink-streaming-java</artifactId><version>1.17.2</version></dependency><!-- 可選:Sink 依賴,如 Kafka、Hudi、Iceberg -->
</dependencies>

3. 完整代碼示例:CustomCdcJob.java

public class CustomCdcJob {public static void main(String[] args) throws Exception {// 1. 創建執行環境StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();env.setParallelism(1);// 2. 配置 CDC 源:MySQLMySqlSource<Order> mysqlSource = MySqlSource.<Order>builder().hostname("mysql-host").port(3306).databaseList("srm").tableList("srm.orders").username("flink").password("flink123").deserializer(new OrderDeserializationSchema()) // 自定義反序列化.build();// 3. 接入 SourceDataStreamSource<Order> orderStream = env.fromSource(mysqlSource,WatermarkStrategy.noWatermarks(),"MySQL CDC Source");// 4. 數據清洗/轉換SingleOutputStreamOperator<Order> cleaned = orderStream.filter(order -> order.amount > 0).map(order -> {order.amount = order.amount * 1.13; // 加稅return order;});// 5. Sink:控制臺 / Kafka / Hudicleaned.print();env.execute("Custom Flink CDC Job");}
}

4. 自定義反序列化器:OrderDeserializationSchema

public class OrderDeserializationSchema implements DebeziumDeserializationSchema<Order> {@Overridepublic void deserialize(SourceRecord sourceRecord, Collector<Order> collector) {Struct value = (Struct) sourceRecord.value();if (value == null) return;Struct after = value.getStruct("after");if (after != null) {Order order = new Order();order.id = after.getString("id");order.userId = after.getString("user_id");order.amount = after.getFloat64("amount");order.ts = Instant.ofEpochMilli(after.getInt64("ts")).atZone(ZoneId.of("UTC")).toLocalDateTime();collector.collect(order);}}@Overridepublic TypeInformation<Order> getProducedType() {return TypeInformation.of(Order.class);}
}

5. 定義 POJO 類:Order.java

public class Order implements Serializable {public String id;public String userId;public Double amount;public LocalDateTime ts;@Overridepublic String toString() {return String.format("[Order] id=%s, user=%s, amt=%.2f, ts=%s",id, userId, amount, ts.toString());}
}

6. Sink 可選方案

1)控制臺輸出(開發調試)

cleaned.print();

2)Kafka Sink(事件總線)

KafkaSink<String> kafkaSink = KafkaSink.<String>builder().setBootstrapServers("kafka:9092").setRecordSerializer(KafkaRecordSerializationSchema.builder().setTopic("srm.orders.cdc").setValueSerializationSchema(new SimpleStringSchema()).build()).build();cleaned.map(order -> JSON.toJSONString(order)).sinkTo(kafkaSink);

3)寫入 Hudi 表(通過 Flink Hudi Sink)

cleaned.addSink(HudiSinkUtil.getSink());

自定義 Hudi Sink 工具類可基于 HoodieSink 封裝。


七、打包部署方式

1)使用 maven-shade-plugin 打 fat-jar:

mvn clean package -DskipTests

輸出:custom-cdc-job-1.0-SNAPSHOT.jar


2)提交到 Flink 集群

flink run -m yarn-cluster -c com.example.CustomCdcJob custom-cdc-job.jar

8. 擴展功能(可選)

功能實現方式
多表同步.tableList("srm.orders,srm.invoice")
動態 schema 推導使用 JsonDebeziumDeserializationSchema
維表 joinFlink SQL / Broadcast Join
自定義狀態存儲Flink KeyedState
exactly-once 寫入 Kafka/Hudi使用 checkpoint 支持

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/906465.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/906465.shtml
英文地址,請注明出處:http://en.pswp.cn/news/906465.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux 查看java的安裝路徑

一、驗證Java安裝狀態 java -version正常安裝會顯示版本信息&#xff1a; openjdk version "1.8.0_65" OpenJDK Runtime Environment (build 1.8.0_65-b17) OpenJDK 64-Bit Server VM (build 25.65-b01, mixed mode)二、檢查環境變量配置 若已配置JAVA_HOME&#…

2025-5-21 個人筆記篇matlab小筆記和clang基礎使用(簡單記錄)

個人筆記篇 再不記錄就找不到了&#xff0c;之前學的一點基礎&#xff0c;看看就行,請不要提問,因為很久了>_<(至少我看來是這樣的) matlab小筆記 % 開繪制(新建) figure % 設置繪制標題 title(標題); % 設置繪制的X軸Lable xlabel(x); % 設置繪制的y軸Lable ylabel(cos…

前端JavaScript-嵌套事件

點擊 如果在多層嵌套中&#xff0c;對每層都設置事件監視器&#xff0c;試試看 <!DOCTYPE html> <html lang"cn"> <body><div id"container"><button>點我&#xff01;</button></div><pre id"output…

網感驅動下開源AI大模型AI智能名片S2B2C商城小程序源碼的實踐路徑研究

摘要&#xff1a;在數字化浪潮中&#xff0c;網感已成為內容創作者與商業運營者必備的核心能力。本文以開源AI大模型、AI智能名片及S2B2C商城小程序源碼為技術載體&#xff0c;通過解析網感培養與用戶需求洞察的內在關聯&#xff0c;提出"數據驅動-場景適配-價值重構"…

AG-UI:重構AI代理與前端交互的下一代協議標準

目錄 技術演進背景與核心價值協議架構與技術原理深度解析核心功能與標準化事件體系典型應用場景與實戰案例開發者生態與集成指南行業影響與未來展望1. 技術演進背景與核心價值 1.1 AI交互的三大痛點 當前AI應用生態面臨三大核心挑戰: 交互碎片化:LangGraph、CrewAI等框架各…

游戲引擎學習第301天:使用精靈邊界進行排序

回顧并為今天的內容做準備 昨天&#xff0c;我們解決了一些關于排序的問題&#xff0c;這對我們清理長期存在的Z軸排序問題很有幫助。這個問題我們一直想在開始常規游戲代碼之前解決。雖然不確定是否完全解決了問題&#xff0c;但我們提出了一個看起來合理的排序標準。 有兩點…

Ajax快速入門教程

輸入java時&#xff0c;頁面并沒有刷新但是下面自動聯想出了跟java有關的東西&#xff0c;像這種就叫異步交互 它不會妨礙你的輸入&#xff0c;同時還能夠同步進行對于java相關聯想詞的推送 發送異步請求需要借助工具axios 引入axios&#xff0c;可以直接在scripts中引入 get和…

Anti Spy安卓版:智能防護,守護手機安全

Anti Spy安卓版是一款專為安卓設備設計的智能防護應用&#xff0c;旨在幫助用戶實時防護手機安全&#xff0c;抵御間諜軟件、惡意軟件和其他潛在威脅。它基于人工智能和啟發式搜索方法的引擎&#xff0c;能夠檢測并阻止已知和未知的間諜軟件、后門程序、賬單欺詐、短信欺詐、電…

超低延遲音視頻直播技術的未來發展與創新

引言 音視頻直播技術正在深刻改變著我們的生活和工作方式&#xff0c;尤其是在教育、醫療、安防、娛樂等行業。無論是全球性的體育賽事、遠程醫療、在線教育&#xff0c;還是智慧安防、智能家居等應用場景&#xff0c;都離不開音視頻技術的支持。為了應對越來越高的需求&#x…

系統架構設計(十二):統一過程模型(RUP)

簡介 RUP 是由 IBM Rational 公司提出的一種 面向對象的軟件工程過程模型&#xff0c;以 UML 為建模語言&#xff0c;是一種 以用例為驅動、以架構為中心、迭代式、增量開發的過程模型。 三大特征 特征說明以用例為驅動&#xff08;Use Case Driven&#xff09;需求分析和測…

海康相機連接測試-極簡版

文章目錄 1、下載客戶端 1、下載客戶端 海康機器人官網下載軟件 軟件下載地址 先下載客戶端測試連接 按照你的相機的類型選擇客戶端 安裝完畢后&#xff0c;確保USB線插的是3.0的端口 軟件會自動識別相機型號 在上方有播放按鈕&#xff0c;可以采集圖像信息顯示

Linux 磁盤擴容實戰案例:從問題發現到完美解決

Linux 磁盤擴容實戰案例&#xff1a;從問題發現到完美解決 案例背景 某企業服務器根目錄 (/) 空間不足&#xff0c;運維人員通過 df -h 發現 /dev/vda1 分區已 100% 占滿&#xff08;99G 已用&#xff09;。檢查發現物理磁盤 /dev/vda 已擴展至 200G&#xff0c;但分區和文件…

深入解析FramePack:高效視頻幀打包技術原理與實踐

摘要 本文深入探討FramePack技術在視頻處理領域的核心原理&#xff0c;解析其在不同場景下的應用優勢&#xff0c;并通過OpenCV代碼示例演示具體實現方法&#xff0c;為開發者提供可落地的技術解決方案。 目錄 1. FramePack技術背景 2. 核心工作原理剖析 3. 典型應用場景 …

RVTools 官網遭入侵,被用于分發攜帶 Bumblebee 惡意軟件的篡改安裝包

VMware 環境報告工具 RVTools 的官方網站遭黑客入侵&#xff0c;其安裝程序被植入惡意代碼。安全研究人員 Aidan Leon 發現&#xff0c;從該網站下載的受感染安裝程序會側加載一個惡意 DLL 文件&#xff0c;經確認是已知的 Bumblebee 惡意軟件加載器。 官方回應與風險提示 RV…

mysql故障排查與環境優化

一、mysql運行原理 mysql的運行分為三層 客戶端和連接服務 核心服務功能&#xff08;sql接口、緩存的查詢、sql的分析和優化以及部分內置函數的執行等。&#xff09; 存儲引擎層&#xff08;負責mysql中數據的存儲和提取。&#xff09; 二、示例 1、實驗環…

Codex與LangChain結合的智能代理架構:重塑軟件開發的未來

??「炎碼工坊」技術彈藥已裝填! 點擊關注 → 解鎖工業級干貨【工具實測|項目避坑|源碼燃燒指南】 引言:當代碼生成遇見智能決策 想象以下場景: 凌晨三點:你需要緊急修復一個遺留系統的內存泄漏漏洞,但代碼注釋缺失且邏輯復雜; 產品經理需求變更:要求在24小時內將現有…

【開源Agent框架】CAMEL:角色扮演+任務分解

一、項目概覽:重新定義智能體協作范式 CAMEL(Communicative Agents for “Mind” Exploration of Large Language Model Society)是由camel-ai社區開發的開源多智能體框架,致力于探索智能體的規模法則(Scaling Laws)。該項目通過構建包含百萬級智能體的復雜社會系統,研…

第32節:基于ImageNet預訓練模型的遷移學習與微調

1. 引言 在深度學習領域,遷移學習(Transfer Learning)已經成為解決計算機視覺任務的重要方法,特別是在數據量有限的情況下。其中,基于ImageNet數據集預訓練的模型因其強大的特征提取能力而被廣泛應用于各種視覺任務。本文將詳細介紹遷移學習的概念、ImageNet預訓練模型的特…

celery獨立部署接入數據庫配置

目錄結構&#xff1a; config下配置&#xff1a; __init__: import os import sys sys.path.append(os.getcwd()) from celery import CeleryappCelery(celeryTester) # 創建一個Celery實例&#xff0c;名字自定義 app.config_from_object(config.celery_config) # 從celery_…

攻防世界-題目名稱-文件包含

進入環境 看到 include()&#xff0c;想到文件包含&#xff0c;用php偽協議 /?filenamephp://filter/readconvert.base64-encode/resourceflag.php do not hack!猜測可能是黑名單檢測的敏感字符 輸入單個字符串/?filenamebase64 還是顯示do not hack&#xff01; 構造payl…