当前位置: 首页 > news >正文

官宣|Apache Flink 1.20 发布公告

作者:郭伟杰(阿里云), 范瑞(Shopee)


Apache Flink PMC(项目管理委员)很高兴地宣布发布 Apache Flink 1.20.0。与往常一样,这是一个充实的版本,包含了广泛的改进和新功能。总共有 142 人为此版本做出了贡献,完成了 13 个 FLIPs、解决了 300 多个问题。感谢各位贡献者的支持!

站在 Flink 2.0 的前夜

Apache Flink 1.0 发布至今已经 8 年了。因此,最近几个月以来,社区一直在积极朝着下一个大版本(Flink 2.0)迈进。最新发布的 Flink 1.20 版本将会是 Flink 2.0 (预计 2024 年底发布) 之前的最后一个小版本。

从 Flink 1.19 开始,社区决定正式开始废弃过时的公共 API。在 1.20 中,我们进一步整理了所有可能需要被替换或弃用的API,为 2.0 版本铺平道路:

  • 为了提升易用性和可维护性,我们重新审视了所有运行时、Table、SQL 以及状态和检查点相关的配置项,对它们进行了归类,增强和废弃。

  • 废弃过时的 SinkFunction 接口: Flink 1.12 引入了 Unified Sink V2,经过了多个版本的开发和迭代后, 它已经变得比较稳定和完善。根据社区在 FLIP-197 中提出的关于 API 演进的要求,我们把 Unified Sink V2 提升为了公共接口,并且废弃了 SinkFunction 接口。

历经 8 年的发展,我们对 Flink 2.0 寄予厚望,并且计划在 2.x 中发布几个重量级的新功能。其中一些已在 Flink 1.20 中完成了最小可行产品(MVP)的开发:

  • 提升数据加工链路开发体验:FLIP-435引入了物化表功能,允许用户在动态表中通过统一的 SQL 语句来定义数据的流式/批式转换逻辑,从而加速 ETL 管道开发,并自动管理任务调度。完整内容和更多细节请参考FLIP-435。

  • 统一的检查点文件合并机制:Flink 1.20 中引入了统一的检查点文件合并机制,允许将零散的小的检查点文件合并到大文件中,减少文件创建和文件删除的次数,缓解大量小文件对文件系统元数据管理带来的压力。完整内容和更多细节请参考FLIP-306。

Flink SQL 提升

引入物化表

Flink 1.20 版本 为 Flink SQL 引入了物化表(Materialized Table)抽象。这是一种新的表类型,旨在同时简化流和批处理的数据加工链路,同时提供一致的开发体验。

通过定义查询语句和数据新鲜度,引擎会自动推导出表结构并创建对应的数据加工链路,以保证查询结果满足所要求的数据新鲜度。用户无需理解流处理和批处理之间的概念和差异,也不必直接维护 Flink 流处理或批作业,所有操作都在物化表上完成,这可以显著加快 ETL 数据加工链路的开发速度。

下面是创建一个具备自动刷新能力的物化表的示例,数据新鲜度为 3 分钟。

-- 1. 创建物化表并定义新鲜度
CREATE MATERIALIZED TABLE dwd_orders
(PRIMARY KEY(ds, id) NOT ENFORCED
)
PARTITIONED BY (ds)
FRESHNESS = INTERVAL '3' MINUTE
AS SELECT o.dso.id,o.order_number,o.user_id,
...
FROM orders as oLEFT JOIN products FOR SYSTEM_TIME AS OF proctime() AS prodON o.product_id = prod.idLEFT JOIN order_pay AS payON o.id = pay.order_id and o.ds = pay.ds;-- 2. 暂停数据刷新
ALTER MATERIALIZED TABLE dwd_orders SUSPEND;-- 3. 恢复数据刷新
ALTER MATERIALIZED TABLE dwd_orders RESUME
-- Set table option via WITH clause
WITH('sink.parallesim' = '10'
);-- 手动刷写历史数据
ALTER MATERIALIZED TABLE dwd_orders REFRESH PARTITION(ds='20231023');

更多信息

  • 物化表文档

  • FLIP-435: Introduce a New Materialized Table for Simplifying Data Pipelines

完善 Catalog 相关语法

随着 Flink SQL 的广泛采用,Flink Catalog 发挥着越来越重要的作用。Flink 内置了 JDBCHive Catalog 实现,而其他开源项目(如 Apache Paimon)也实现了自己的 Catalog

在 Flink 1.20 中,您可以使用 DQL 语法从现有 Catalog 中获取详细的元数据信息,并使用 DDL语法修改指定Catalog 的属性或注释等元数据。

Flink SQL> CREATE CATALOG `cat` WITH ('type'='generic_in_memory', 'default-database'='db');
[INFO] Execute statement succeeded.Flink SQL> SHOW CREATE CATALOG `cat`;
+---------------------------------------------------------------------------------------------+
|                                                                                      result |
+---------------------------------------------------------------------------------------------+
| CREATE CATALOG `cat` WITH ('default-database' = 'db','type' = 'generic_in_memory'
)
|
+---------------------------------------------------------------------------------------------+
1 row in setFlink SQL> DESCRIBE CATALOG `cat`;
+-----------+-------------------+
| info name |        info value |
+-----------+-------------------+
|      name |               cat |
|      type | generic_in_memory |
|   comment |                   |
+-----------+-------------------+
3 rows in setFlink SQL> ALTER CATALOG `cat` SET ('default-database'='new-db');
[INFO] Execute statement succeeded.Flink SQL> SHOW CREATE CATALOG `cat`;
+-------------------------------------------------------------------------------------------------+
|                                                                                          result |
+-------------------------------------------------------------------------------------------------+
| CREATE CATALOG `cat` WITH ('default-database' = 'new-db','type' = 'generic_in_memory'
)
|
+-------------------------------------------------------------------------------------------------+
1 row in set

更多信息

  • FLIP-436: Introduce Catalog-related Syntax

DDL 支持 DISTRIBUTED BY 语句

鉴于越来越多的 SQL 引擎对外暴露了 “分区”、“分桶”或“聚类”的概念,Flink 1.20 将“分桶”的概念引入了 Flink SQL。分桶操作通过将数据拆分为不相交的子集来实现数据在外部存储系统中的负载均衡。虽然它在很大程度上取决于底层连接器的语义,但是用户可以通过指定分桶数量、算法以及用于目标分桶计算的列(如果算法允许)来影响分桶的行为。所有分桶相关的关键字在 SQL 语法中都是可选的。

Apache Paimon 的分桶表和 Apache Kafka 的 topic 分区都将对接到该语法上,简化用户的建表操作,并让 Flink SQL 感知了外部数据的物理分布,为未来支持 bucket join 等优化打好了基础。

以下面的 SQL 语句为例:

-- 指定桶的个数和数据分配逻辑(按照 uid 列的哈希值进行分配)
CREATE TABLE MyTable (uid BIGINT, name STRING) DISTRIBUTED BY HASH(uid) INTO 4 BUCKETS;-- 不显示指定分桶算法,数据分配逻辑由 Connector 自己决定。
CREATE TABLE MyTable (uid BIGINT, name STRING) DISTRIBUTED BY (uid) INTO 4 BUCKETS;-- 不显式指定桶的数量,桶数量和数据分配逻辑均由 Connector 自己决定。
CREATE TABLE MyTable (uid BIGINT, name STRING) DISTRIBUTED BY (uid);-- 仅指定桶的数量
CREATE TABLE MyTable (uid BIGINT, name STRING) DISTRIBUTED INTO 4 BUCKETS;

更多信息

  • FLIP-376: Add DISTRIBUTED BY clause

  • 文档

状态 & 检查点提升

统一的检查点文件合并机制

Flink 1.20 引入了统一的检查点文件合并机制,它将多个小的检查点文件合并为数量较少的大文件,从而减少了文件创建和文件删除操作的次数,并减轻了检查点期间文件系统元数据管理的压力。

可以通过将 execution.checkpointing.file-merging.enabled 设置为 true来启用该功能。有关更多高级选项以及此功能背后的原理,请参阅文档。

更多信息

  • FLIP-306: Unified File Merging Mechanism for Checkpoints

  • 文档

压缩小的 SST 文件

在某些情况下,RocksDB 状态后端生成的文件数量会无限制地增长。除了许多小文件造成的开销之外,此行为还可能导致任务状态信息超出 RPC 消息大小限制,从而导致检查点失败。从 1.20 版开始,Flink 可以使用 RocksDB API 在后台合并此类文件。

更多信息

  • FLINK-2605

批处理能力提升

JobMaster 发生故障时更好的错误恢复机制

在 Flink 1.20 中,我们支持了一种新的批处理作业恢复机制,使批处理作业能够在 JobMaster故障转移后尽可能多地恢复进度,避免重新运行已经完成的任务。

更多信息

  • FLIP-383: Support Job Recovery from JobMaster Failures for Batch Jobs

  • 文档

HiveSource 支持动态并发推断

在 Flink 1.20 中,我们为 Hive 数据源连接器增加了对动态并发推断的支持,这允许它基于动态分区修剪(DPP)的结果动态决定并行度。

此外,我们引入了一个新的配置选项 table.exec.hive.infer-source-parallelism.mode,使用户能够在数据源并行度的静态和动态推断模式之间进行切换。需要注意的是,在 Flink 1.20 中,以前的配置选项 table.exec.hive.infer-source-parallelism已被标记为弃用。

更多信息

  • FLIP-445: Support dynamic parallelism inference for HiveSource

DataStream API 提升

DataSetAPI 已正式弃用,并将在 Flink 2.0 版本中被删除。我们建议 Flink 用户根据数据处理需求将作业从 DataSet API 逐步迁移到 DataStream API、TableAPI 和 SQL

支持 DataStream API 上的全量分区数据处理

在 Flink 1.20 之前,DataStream API 不支持对非分区流上的数据做全量的数据聚合操作,这阻碍了用户从 DataSetAPI 的迁移。作为一种替代方案,用户可以将子任务的编号关联到数据上,并以此为数据键来构建分区流,但这会产生很大的额外开销。为此,Flink 1.20 引入了 FullPartitionWindow API,从而补齐了对全量分区数据处理的内置支持。

假设我们想要计算每个分区中的总记录数并输出到下游,可以按如下方式完成:

inputStream.fullWindowPartition().mapPartition(new MapPartitionFunction<Record, Long>() {@Overridepublic void mapPartition(Iterable<Record> values, Collector<Long> out)throws Exception {long counter = 0;for (Record value : values) {counter++;}out.collect(counter));}})

更多信息

  • FLIP-380: Support Full Partition Processing On Non-keyed DataStream

重要配置项变更

随着 Apache Flink 即将来到 2.0 版本,一大批配置项在 Flink 1.20 版本被更改或弃用,以提高易用性和可维护性。

更新配置项为合适的类型

  • 一系列与时间相关的配置项(例如 client.heartbeat.interval)的类型被更新为了 Duration。完整列表可在FLINK-35359 中找到。

  • 配置项 taskmanager.network.compression.codectable.optimizer.agg-phase-strategy的类型被更新为了Enum

  • 配置项yarn.application-attempts的类型被更新为了 Int

更多信息

  • FLINK-35359

弃用多个配置项

在 Flink 1.20 中社区决定正式弃用多个即将在 Flink 2.0 停用的配置项:

  • 由于我们正在逐步淘汰基于哈希的 Blocking Shuffle,以下配置项已被弃用并将在 Flink 2.0 中被删除:

    • taskmanager.network.sort-shuffle.min-parallelism

    • taskmanager.network.blocking-shuffle.type

  • 由于我们正在逐步淘汰旧的Hybrid Shuffle 模式,以下配置项已被弃用并将在 Flink 2.0 中被删除:

    • taskmanager.network.hybrid-shuffle.spill-index-region-group-size

    • taskmanager.network.hybrid-shuffle.num-retained-in-memory-regions-max

    • taskmanager.network.hybrid-shuffle.enable-new-mode

  • 为了简化网络缓冲区相关配置,以下配置选项已被弃用并将在 Flink 2.0 中被删除:

    • taskmanager.network.memory.buffers-per-channel

    • taskmanager.network.memory.floating-buffers-per-gate

    • taskmanager.network.memory.max-buffers-per-channel

    • taskmanager.network.memory.max-overdraft-buffers-per-gate

    • taskmanager.network.memory.exclusive-buffers-request-timeout-ms (请使用 taskmanager.network.memory.buffers-request-timeout 代替)

  • 由于绝大多数批作业都会开启压缩,配置项 taskmanager.network.batch-shuffle.compression.enabled 已被弃用并将在 Flink 2.0 中被删除。如确有需要,请将 taskmanager.network.compression.codec 设置为 NONE以禁用压缩。

  • 以下与 Netty 相关的配置项过于底层,已在 Flink 1.20 被弃用,我们将在 Flink 2.0 中将其移除:

    • taskmanager.network.netty.num-arenas

    • taskmanager.network.netty.server.numThreads

    • taskmanager.network.netty.client.numThreads

    • taskmanager.network.netty.server.backlog

    • taskmanager.network.netty.sendReceiveBufferSize

    • taskmanager.network.netty.transport

  • 以下配置项是不必要的,已在 Flink 1.20 被弃用并且将在 Flink 2.0 中被删除:

    • taskmanager.network.max-num-tcp-connections(将在 Flink 2.0 中被硬编码为 1

    • fine-grained.shuffle-mode.all-blocking

  • 以下配置项用于微调 TPC 测试但当前 Flink 已不再需要,已被弃用并且将在 Flink 2.0 中被删除:

    • table.exec.range-sort.enabled

    • table.optimizer.rows-per-local-agg

    • table.optimizer.join.null-filter-threshold

    • table.optimizer.semi-anti-join.build-distinct.ndv-ratio

    • table.optimizer.shuffle-by-partial-key-enabled

    • table.optimizer.smj.remove-sort-enabled

    • table.optimizer.cnf-nodes-limit

  • 以下配置项是为现已过时的 FilterableTableSource 接口引入的,已被弃用并且将在 Flink 2.0 中被删除:

    • table.optimizer.source.aggregate-pushdown-enabled

    • table.optimizer.source.predicate-pushdown-enabled

  • 配置选项sql-client.display.max-column-width已被弃用并且将在 Flink 2.0 中被删除。请改用 table.display.max-column-width替代。

更多信息

  • Runtime 相关配置项变更

  • Table/SQL 相关配置项变更

配置项的其他变更

重新组织配置项

在 Flink 1.20 中,所有关于状态和检查点的配置项都被重新组织并按前缀分类:

  • execution.checkpointing.*:所有与检查点和保存点相关的配置选项。

  • execution.state-recovery.*:所有与状态恢复相关的配置选项。

  • state.*:所有与状态访问相关的配置选项。

  • state.backend.*: 各个状态后端的配置选项,例如 RocksDB 状态后端。

  • state.changelog.*:与状态变更日志相关的配置选项。

  • state.latency-track.*:与状态访问的延迟追踪相关的配置选项。

新的公开配置项
  • 以下与动态哈希聚合相关配置项已从 org.apache.flink.table.planner.codegen.agg.batch.HashAggCodeGenerator移动至 org.apache.flink.table.api.config 并提升为 @PublicEvolvingAPI:

  • table.exec.local-hash-agg.adaptive.enabled

  • table.exec.local-hash-agg.adaptive.sampling-threshold

  • table.exec.local-hash-agg.adaptive.distinct-value-rate-threshold

  • 以下与 LookupJoin 相关的配置项已从 org.apache.flink.table.planner.hint.LookupJoinHintOptions移动至 org.apache.flink.table.api.config.LookupJoinHintOptions并提升为 @PublicEvolvingAPI:

  • table

  • async

  • output-mode

  • capacity

  • timeout

  • retry-predicate

  • retry-strategy

  • fixed-delay

  • max-attempts

  • 以下与优化器有关的配置项已从 org.apache.flink.table.planner.plan.optimize.RelNodeBlock移动至 org.apache.flink.table.api.config.OptimizerConfigOptions并升级为 @PublicEvolvingAPI:

  • table.optimizer.union-all-as-breakpoint-enabled

  • table.optimizer.reuse-optimize-block-with-digest-enabled

  • table.optimizer.incremental-agg-enabled 已从 org.apache.flink.table.planner.plan.rules.physical.stream.IncrementalAggregateRule移动至 org.apache.flink.table.api.config.OptimizerConfigOptions 并升级为 @PublicEvolvingAPI.

更多信息

  • Runtime 相关配置项变更

  • Table/SQL 相关配置项变更

  • Checkpointing Options

  • Recovery Options

  • State Backend Options

  • State Changelog Options

  • Latency-track Options

升级说明

Apache Flink 社区努力确保升级过程尽可能平稳, 但是升级到 1.20 版本可能需要用户对现有应用程序做出一些调整。请参考Release Notes获取更多的升级时需要的改动与可能的问题列表细节。

贡献者列表

在 1.20 版本中,我们一如既往地看到了许多来自中国的开发者身影。他们积极参与并贡献社区,协助新版本的发布,四个版本发布管理者(Release Manager)中有两位均来自国内,分别是来自阿里云智能的郭伟杰和来自 Shopee 的范瑞。中国开发者在 1.20 备受期待的新功能上也作出了巨大贡献,例如来自阿里云的开发者们主导并贡献了物化表、检查点文件合并、JobMaster 发生故障时更好的错误恢复机制等特性。来自字节跳动,网易,小米等公司的开发者们也都为社区带来了非常多的重要功能贡献和 bug 修复。

Apache Flink 社区感谢对此版本做出贡献的每一位贡献者:

Ahmed Hamdy, Alan Sheinberg, Aleksandr Pilipenko, Alexander Fedulov, Andrey Gaskov, Antonio Vespoli, Anupam Aggarwal, Barak Ben-Nathan, Benchao Li, Brad, Cheng Pan, Chesnay Schepler, DamonXue, Danny Cranmer, David Christle, David Moravek, David Schlosnagle, Dawid Wysakowicz, Dian Fu, Dmitriy Linevich, Elphas Toringepi, Emre Kartoglu, Fang Yong, Feng Jin, Ferenc Csaky, Frank Yin, Gabor Somogyi, Gyula Fora, HCTommy, Hangxiang Yu, Hanyu Zheng, Hao Li, Hong Liang Teoh, Hong Teoh, HuangXingBo, Jacky Lau, James Hughes, Jane Chan, Jeyhun Karimov, Jiabao Sun, Jim Hughes, Jing Ge, Jinzhong Li, JunRuiLee, Juntao Hu, JustinLee, Kartikey Pant, Kumar Mallikarjuna, Leonard Xu, Lorenzo Affetti, Luke Chen, Martijn Visser, Mason Chen, Matthias Pohl, Mingliang Liu, Panagiotis Garefalakis, Peter Huang, Peter Vary, Piotr Nowojski, Puneet Duggal, Qinghui Xu, Qingsheng Ren, Ravi Dutt Singh, Robert Metzger, Robert Young, Roc Marshal, Roman, Roman Boyko, Roman Khachatryan, Ron, Rui Fan, Ryan Skraba, Samrat, Sergey Nuyanzin, Shilun Fan, Stefan Richter, SuDewei, Timo Walther, Ufuk Celebi, Vincent Woo, Wang FeiFan, Weijie Guo, Wencong Liu, Wouter Zorgdrager, Xiangyu Feng, Xintong Song, Xuyang, Yanfei Lei, Yangze Guo, Yu Chen, Yubin Li, Yuepeng Pan, Yun Tang, Yuxin Tan, Zakelly, Zhanghao Chen, Zhen Wang, Zhenqiu Huang, Zhu Zhu, Zmm, ammar-master, anupamaggarwal, bvarghese1, caicancai, caodizhou, chenzihao, drymatini, dsaisharath, eason.qin, elon-X, fengli, gongzhongqiang, hejufang, jectpro7, jiangxin, liming.1018, lincoln lee, liuyongvs, lxliyou001, oleksandr.nitavskyi, plugatarev, rmoff, slfan1989, spoon-lz, sunxia, sxnan, sychen, wforget, xiaogang, xingbo, yebukong, yunfengzhou-hub, yunhong, zhouyisha, 马越

相关文章:

官宣|Apache Flink 1.20 发布公告

作者&#xff1a;郭伟杰(阿里云), 范瑞(Shopee) Apache Flink PMC&#xff08;项目管理委员&#xff09;很高兴地宣布发布 Apache Flink 1.20.0。与往常一样&#xff0c;这是一个充实的版本&#xff0c;包含了广泛的改进和新功能。总共有 142 人为此版本做出了贡献&#xff0c;…...

HarmonyOS应用一之登录页面案例

目录&#xff1a; 1、代码示例2、代码分析3、注解分析 1、代码示例 实现效果&#xff1a; /** Copyright (c) 2023 Huawei Device Co., Ltd.* Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance w…...

KubeSphere 部署 Kafka 集群实战指南

本文档将详细阐述如何利用 Helm 这一强大的工具&#xff0c;快速而高效地在 K8s 集群上安装并配置一个 Kafka 集群。 实战服务器配置(架构 1:1 复刻小规模生产环境&#xff0c;配置略有不同) 主机名IPCPU内存系统盘数据盘用途ksp-registry192.168.9.904840200Harbor 镜像仓库…...

手把手教你安装音乐制作软件FL Studio 24.1.1.4285中文破解版

在当今数字化时代&#xff0c;音乐创作不再局限于传统的乐器和录音室&#xff0c;而是借助先进的音乐制作软件&#xff0c;如FL Studio&#xff0c;实现了前所未有的便捷与高效。FL Studio&#xff0c;以其强大的功能、直观的界面和丰富的插件资源&#xff0c;成为了众多音乐制…...

SDL 与 OpenGL 的关系

OpenGL 和 SDL 是两个不同的库&#xff0c;但它们可以配合使用来创建图形应用程序。 SDL&#xff08;Simple DirectMedia Layer&#xff09; SDL 是一个跨平台的多媒体库&#xff0c;用于处理图形、声音、输入和其他游戏开发所需的功能。它简化了窗口创建、事件处理和图形上下…...

考研数学 线性代数----行列式与矩阵

核心框架 前置知识 正式内容 知识点1:单位矩阵 知识点2:可逆矩阵 知识点3: |A|与可逆 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识…...

Golang实现简单的HTTP服务,响应RESTful请求判断形状大小

题目要求&#xff1a; 题目 1.shape 接口有面积Area() float64和 周长Perimeter()fioat64 两个法。为Circle Rectangle实现shape 接口。 2.实现isGreater(shape1&#xff0c;shape2 shape)boo1 函数&#xff0c;用于比较两个形状的大小,并使用单元测试验证 3.实现http.Handle…...

使用C语言构建Lua库

Lua 本身是用 C 语言编写的&#xff0c;因此使用 C 编写扩展可以更好地与 Lua 引擎集成&#xff0c;减少性能瓶颈&#xff0c;同时C 语言提供了对底层硬件和操作系统功能的直接访问能力&#xff0c;让 Lua 可以通过 C 扩展来实现对文件系统、网络等高级功能的支持。因为C 语言非…...

愤怒的江小白,这几年怎么了?

近日&#xff0c;东方甄选和江小白的纠纷引发了广泛关注。 8月8日晚间&#xff0c;东方甄选直播间中&#xff0c;主播天权在带货某款白酒产品时突然对比点评江小白产品&#xff0c;称江小白“不是白酒”&#xff1a;“你现在去看江小白的包装&#xff0c;上面是没有‘白酒’这…...

Unity教程(十)Tile Palette搭建平台关卡

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程&#xff08;零&#xff09;Unity和VS的使用相关内容 Unity教程&#xff08;一&#xff09;开始学习状态机 Unity教程&#xff08;二&#xff09;角色移动的实现 Unity教程&#xff08;三&#xff09;角色跳跃的实现 Unity教程&…...

如何防止员工私自拷贝公司内部文件?安企神帮你解决泄密之忧

在企业运营中&#xff0c;保护公司的机密信息至关重要。员工私自拷贝公司内部文件不仅可能导致商业秘密泄露&#xff0c;还可能损害公司的声誉和经济利益。下面我们将介绍一些有效的方法来防止这种情况的发生&#xff0c;并以“安企神”软件为例进行详细说明。 1. 明确规章制度…...

Linux应急响应检查工具

最近一直在优化的 linux 应急检查脚本&#xff0c;也是我一直在应急使用的工具 https://github.com/sun977/linuxcheckshoot 脚本包含两个检查工具&#xff0c;详情可看 README 或者 Banner linuxGun.sh 和 linuxcheck.sh 区别 1、linuxcheck.sh 是完整的 linux 系统检查脚本,…...

CP AUTOSAR标准之EEPROMAbstraction(AUTOSAR_SWS_EEPROMAbstraction)(更新中……)

1 简介和功能概述 EEPROM抽象层的功能、API和配置(见图1)。   图1:内存硬件抽象层模块概览   EEPROM抽象(EA)从设备特定的寻址方案和分段中抽象出来,并为上层提供虚拟寻址方案和分段以及“几乎”无限数量的擦除周期。 3 相关文献 3.1 输入文件 [1]基础软件模块列表AUTO…...

重启redis服务时报错:Failed to start redis.service: Unit not found

重启redis服务时报错&#xff1a;Failed to start redis.service: Unit not found redis配合安全修改了bind和auth配置&#xff0c;重启的时候报错了&#xff0c;试了很多方法&#xff0c;最后才通过日志解决了 1 重新加载systemd 配置并启动&#xff1a; sudo systemctl da…...

Hive3:识别内部表、外部表及相互转换

一、识别方法 查看内部表信息 desc formatted stu;查看外部表信息 desc formatted test_ext1;通过Table Type对应的值&#xff0c;我们可以区分外部表和内部表。 二、相互转换 内部表转外部表 alter table stu set tblproperties(EXTERNALTRUE);外部表转内部表 alter ta…...

Android笔试面试题AI答之Kotlin(7)

文章目录 29.简述Kotlin 中的内联类&#xff0c;什么时候需要内联类&#xff1f;内联类的特点何时需要内联类示例注意 30. 什么是 Coroutine Scope&#xff0c;它与 Coroutine Context 有什么不同&#xff1f;Coroutine Scope&#xff08;协程作用域&#xff09;Coroutine Cont…...

高辐照整车太阳辐照模拟系统试验舱

概览 高辐照整车太阳辐照模拟系统试验是一种模拟太阳辐照对汽车及其零部件影响的测试方法&#xff0c;主要用于评估汽车在长期日照条件下的性能和可靠性。该试验通常遵循特定的标准&#xff0c;如GB/T 2423.24-1995、DIN 75220、BMW PR306等&#xff0c;旨在模拟自然环境中的太…...

如何制作优秀的年终总结PPT?

制作优秀的年终总结PPT&#xff0c;是每位职场人士在年底时的一项重要任务。 一个优秀的年终总结PPT不仅能够清晰地展示你过去一年的工作成果&#xff0c;还能让领导对你的工作能力和态度留下深刻印象。 下面&#xff0c;我将从几个方面详细讲解如何制作这样的PPT&#xff0c…...

架构师第六周作业

目录 1.部署3节点mongodb复制集。 1.1 安装mongodb 1.2 部署复制集 2.部署3节点Kafka集群 1.部署3节点mongodb复制集。 1.1 安装mongodb MongoDB安装包下载 下载地址&#xff1a;https://www.mongodb.com/try/download/community 版本根据需求选择&#xff0c;Mongodb6.…...

解密Java中介者模式:代码实例带你深入理解

1. 引言&#xff1a;中介者模式的重要性 在软件设计的世界里&#xff0c;模块间的相互依赖往往会导致系统的复杂性和维护难度的增加。中介者模式&#xff08;Mediator Pattern&#xff09;作为一种行为设计模式&#xff0c;它的出现就是为了解决这一问题。通过引入一个中介者对…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...

MySQL 主从同步异常处理

阅读原文&#xff1a;https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主&#xff0c;遇到的这个错误&#xff1a; Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一&#xff0c;通常表示&#xff…...

6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙

Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...