Apache Paimon:Streaming Lakehouse is Coming

摘要:本文整理自阿里云智能开源表存储负责人,Founder of Paimon,Flink PMC 成员李劲松(花名:之信)、同程旅行大数据专家,Apache Hudi & Paimon Contributor 吴祥平、汽车之家大数据计算平台负责人邸星星、联通数科大数据高级技术专家,Apache Paimon Contributor 王云朋在 Flink Forward Asia 2023 主会场的分享。内容主要分为以下三部分:

  1. 数据分析架构从 Hive 到 Lakehouse
  2. Apache Paimon
  3. 用户对话环节:Paimon 企业实践分享

点击查看原文视频

一、数据分析架构从 Hive 到 Lakehouse

旧的数据分析架构如 Hive、Hadoop、HDFS、MapReduce、HiveSQL、Hive 存储等,如今国内外的各大企业都在逐步转向 Lakehouse 架构,即 Spark、Flink、Presto,底层的湖存储格式:Iceberg、Delta、Hudi,以及下面数据存储在 HDFS、对象存储 OSS 或 S3。

1

1.1 Lakehouse 架构的优势

之所以进行架构的转变与迁移,是因为湖仓架构为数据分析与存储带来了诸多益处。

  • 实现了计算存储分离

    旧的架构 Hadoop 计算存储都在一个集群中,若要扩容,就要计算与存储部分同时扩容,但目前,各行各业都会有庞大的数据,却不一定可以匹配足够的计算,行业现状催生了计算存储分离的需求。如此,可以实现存储变大的同时,计算资源基本维持不变,当落到 OSS 对象存储上之后,计算存储分离变得非常简单。

  • 实现了存储冷热分层

    这是对象存储带来的独特优势。对于对象存储,我们可以利用它的冷存,因为其价格相对低廉,但其冷存访问成本会上升,因此,不常使用的数据可以使用冷存,从而大大降低成本。

  • 操作更加灵活

    前面提到的两点实际上 Hive 存储也可以实现,但相较而言,Lakehouse 操作更加灵活,因为湖存储格式提供了更多的 ACID,包括 DELETE、UPDATE 之类的语法,可以让数仓的操作更加方便,而不像 Hive 只能 INSERT OVERWRITE。

  • 查询速度更快

    因为湖存储带来的 Meta 上的 skipping 可使得数据根据 Filter 条件做出更多的下推,查询性能更高。

  • 时效性到分钟级

    或许前面四点对许多企业来说没有足够的吸引力,而且旧的 Hive 非常稳定,这可能会导致企业数据分析架构的迁移动力大大降低。但是,除前面提到的四点之外,Lakehouse 架构真正给业务带来价值的是可以使得时效性从 T+1 降低到分钟级。在这个方面,Flink 是当之无愧的专家。真正能打动企业迁移湖仓架构的关键是,能否将 Flink 融入湖仓架构中。

时效性是业务迁移的核心动力,而 Flink 是降低时效性的核心计算引擎,如下图所示:

2

首先是从 Hive 架构到 Lakehouse 架构的转变来看,Lakehouse 具有许多优势,它可以让计算更加方便,可以让部分时效性有一定程度的降低。

接下来是最右侧展示的是实时数仓 Flink + Kafka + OLAP 系统,它可以将时效性给降低到每秒级。Flink 也希望将它的时效性融入离线数仓中。

但是,目前 Lakehouse 与 Flink 实时数仓两者之间是割裂的,也对应到批计算和流计算,它们是完全割裂的两套,玩法大幅不同。

那是否能有一个中间的架构将 Flink 融入到 Lakehouse,把 Streaming 和 Lakehouse 的技术做一定的结合,解锁出样新的 Streaming Lakehouse 架构,实现整条链路的实时流动,达到分钟级的延时。此外,实现所有数据的沉淀可查,数据沉淀到 Lakehouse 中。

这套架构是完全的流批一体,它是通过结合 Flink 的 Streaming 计算和 Lakehouse 实现的。

综上,Lakehouse 架构一旦实现,将会对企业产生巨大的吸引力。但是这个融合并不容易,它的运行伴随着非常多的挑战。其面临的最大的挑战来自于湖格式。因为流技术与流当中产生的大量更新对湖存储格式带来了非常巨大的挑战。

二、Apache Paimon

2.1 Flink + Lakehouse 架构的探索

这部分分享包括 Flink 社区、阿里云在 Flink + Lakehouse 架构上的探索。

3

2023 年我们在 Lakehouse 做了很多改进。但早在 2020 年,阿里云就试图把 Flink 融入 Iceberg 中,在 Iceberg 中做了很多 Flink 的集成。Iceberg 是一种非常优秀的湖存储格式,它的架构非常简单,生态非常开放,设计非常简单。在把 Flink 融入 Iceberg 后,Iceberg 就有了 Flink 流读流写的能力,也在 Iceberg 社区推动方面支持更新能力。

但在使用过程中,我们也逐渐发现了一些问题,Iceberg 整体是针对离线设计的,它必须保持很简单的架构设计来面向各种计算引擎,这也对流更新过程中对其内核的改进带来了阻碍。因此,目前 Flink 写入 Iceberg,并不能太实时,我们更推荐在 1 小时左右的更新 SLA 保障。

在 Iceberg 中遇到困难之后,我们也在 Flink + Hudi 做了很多集成,许多企业也对这种架构进行过尝试。Hudi 原本面向 Spark,它是在 Spark 上增强其 Upsert 更新能力的 Format。Flink 在接入之后,Hudi Spark 的更新时延从小时级降低到 10 分钟。但是,在后续的进一步探索过程中也遇到了较多的问题,因为 Hudi 本身是面向 Spark,面向批计算设计的,它在架构上不符合流计算及更新的架构设计,同时 Hudi 历时已久,它有大量的 Future,这会给后面的设计带来很多架构上的挑战。 所以对于 Flink + Hudi,我们更推荐 10 分钟的 SLA 保障。

我们需要更实时的湖格式。因此,在总结了 Iceberg 和 Hudi 遇到的架构上的挑战之后,我们重新设计了新的流式数据湖格式,即 Apache Paimon,其前身是 Flink Table Store,他有着湖存储 + LSM 原生的设计,面向流更新而设计,与 Flink、Spark 都有的较好集成。

从一开始就面向两套引擎设计:Flink 的流与 Spark 的批,重新设计 Paimon 使其架构能与 Flink、Spark 集成效果都优良。它有着强大的流读流写支持,给流式湖存储带来仅 1-5 分钟的延迟。

2.2 Apache Paimon

2.2.1 架构

下图展示了 Apache Paimon 的架构图:

4

Paimon 是流批一体的湖存储格式,首先它只是一个文件格式,只是一堆代码将数据存储在 OSS 或者 HDFS 上,没有任何的服务。

可以使用 Flink CDC 来一键入湖到 Paimon 中,也可以通过 Flink SQL 或 Spark SQL 来批写、流写到 Paimon 当中。Paimon 也支持主流开源引擎,包括几乎现在所有的开源引擎。最后,Paimon 也可以被 Flink 或 Spark 流读,这也是它作为流式数据湖的特有能力之一。

目前,Paimon 有以下典型使用场景:

  1. CDC 更新入湖,可被准实时查询,并大幅简化入湖架构。

  2. 支持 Partial-Update 能力,基于相同的主键可以各个流实时地打宽,在 Paimon 当中能被分钟级给下游各种计算引擎查询。

  3. 支持流入的数据生成变更日志,给下游更好的流计算。简化流计算链路。

  4. Paimon 作为湖存储格式,有很强的 Append 处理,并给 Append 表上多了流读流写、Z-Order 排序后加速查询的能力。

2.2.2 Apache Paimon 社区发展

5

2022 年 1 月,Flink Table Store 诞生,其实两年前 Flink Forward 时,就设想过要建设新的存储,直到 Flink Table Store 第一行代码在 Flink 社区诞生;孵化一年后,2023 年 1 月份产生了正式 0.3 的版本,之后我们决定从 Flink 和社区迁到 Apache 社区,并改名为 Apache Paimon,加强了生态,不再是 Flink 存储,而是面向社区所有计算引擎的存储;同年 9 月、12 月,随着版本的相继发布,Paimon 取得了巨大的进步;今年 12 月发布 0.6 版本,更新表和 Append 表都已达到完全生产可用的状态。

整体来看,目前有来自社区各行各业的 120 个 Contributers,大家把 Paimon 做得更好,Star 达到 1.5k。

在 Flink Forward Asia 里,有包括来自阿里云、同程旅行、汽车之家、联通,平安等企业关于 Paimon 的实践。

三、用户对话环节:Paimon 企业实践分享

下面通过同程旅行、汽车之家、联通数字科技有限公司用户的对话,让大家更加直接地了解基于 Flink + Paimon 构建 Streaming Lakehouse 的应用实践,以及选用 Flink + Paimon 黄金组合带来的业务收益。

3.1 同程旅行基于 Apache Paimon 的湖仓应用实践

对话嘉宾

李劲松|阿里云智能开源表存储负责人,Founder of Paimon,Flink PMC 成员

吴祥平|同程旅行大数据专家,Apache Hudi & Paimon Contributor

6

用户对话环节 1 - 精彩回顾

点击观看用户对话环节 1 视频

吴祥平从事同程旅行大数据计算、湖仓相关的工作。

李劲松:早在 Flink Table Store 时期,同程旅行就已经使用了 Flink Table Store,从 Flink Table Store 生产应用上反馈了很多功能,可以分享一下同程旅行是如何发现 Flink Table Store 的?是经过了怎样的进化路线最终应用到 Paimon 的呢?

吴祥平:同程旅行实时湖仓,发展历程大概有三个:

1

(1)Spark + Apache Kudu

最开始,同程旅行与其他厂商一样,都是基于 Hive 做离线数仓,但随着实时需求的增多,引入了 Apache Kudu 组件。这条链路的特点,包括把原先发往 Hive ODS 层的数据,再发一份到 Apache Kudu 中,让一些依赖较少的项目在 Apache Kudu 上做应用。在此基础上,调起离线的 Spark 任务,使用 10 分钟或者 1 小时的调度去基于 Kudu 的原始表产生一些中间数据。

这个链路满足了一部分的需求,但我们在实践过程中也发现了很多问题,整个 Kudu 是基于 Spark 的离线调度,时延约为 10 分钟-1 小时,无法满足业务的时效性;同时 ODS 的数据一部分存在了 Hive 中,一部分存在 Kudu 中,两份数据有一定的重复,不太好复用;此外,Kudu 的维护性对数仓人员有一定难度;最后,整个 Kudu 是基于 SSD 构建的,因此整个数仓构建的成本相对较高。

(2)Flink + Apache Hudi

基于以上痛点,同程旅行在 2022 年引入了 Flink + Apache Hudi 的模式,基于此解决了一部分原先 Kudu 流式数仓的问题。首先数据复用性,我们基于 Hudi 实时更新了整个 ODS 层的表,这些表不仅可以做实时更新,在下游也可以使用。同时,也迸发出了基于 Hudi 做流读的需求。

随着实践的深入,我们发现该链路也有些问题,首先是 Hudi的同步效率,如 10+G 的表要同步 10+小时,同时同步资源也随着表的数据量加大,资源消耗也很大;其次是整个数据的一致性;此外查询效率也无法满足我们的应用场景。

(3)Flink + Paimon

因此,在今年 6 月甚至更早的时候就开始调研 Paimon。我们基于 Flink + Paimon 的实践解决了在 Hudi 上遇到的问题,包括全链路实时实践,提升了数据的读写效率,同时得益于 Paimon 的优秀设计,整个湖仓一体以及其更简单的状态管理,保障了最终数据的一致性,以及较全的表格式、主键更新等。

李劲松:目前,Paimon 在同程内部大致有多少生产作业?大约有多大的规模呢?

吴祥平:同程旅行目前已将原有基于 Hudi 的湖仓切换了约 80%到 Paimon 中,其中约有 500+任务,也基于整个 Paimon 的全链路实时化场景构建了 10+个场景,还基于 Paimon 的 Lookup 引擎做“批”,也有 10+个场景,数据量在 100TB 左右。整体的数据条数是 1000 亿左右。

李劲松:您可以分享一下整体的架构和具体的收益吗?

吴祥平:同程旅行目前主要是以联邦的 HDFS 做存储底座,中间采用全新的湖仓架构,基于 Paimon 做实时和离线的混合湖仓,使用 Paimon 不同的表引擎,上层基于 Flink、Spark、Trino、StarRocks 做查询引擎。使用这套架构之后,整个 ODS 层的同步资源节省了 30%左右,读写性能也有很大的提升,写入约提升三倍,部分查询有七倍左右的提升,效果非常明显;其次,基于 tag 能力,因为可以复用大部分重复数据,所以在导出场景上也节省了 40%左右的存储;另外,由于整个中间数据可复用,指标开发人员可以基于中间可复用的数据,开发效率提升约 50%,原先要花两个小时甚至一天的时间,现在很快就可以开发出来。

2

李劲松:可以看出,Paimon 对生产实践有很大的业务价值,可以再分享一下未来的规划吗?

吴祥平:首先,随着整个 Paimon 应用的发展,我们发现其实湖仓与原先的 Hive 有很大区别,包括一些额外的管理服务、清理服务、合并服务等,我们还希望用户能够像使用 Hive 一样使用湖仓表,所以未来会把管理服务做更好的集成;此外,我们会把现有的 Hive 数仓逐步往 Paimon 上转换,把存量的尽量都往 Lakehouse 架构上转;同时,我们也会跟进整个社区的流式血缘和数据修复能力;最后,在基于 Paimon 的流式湖仓上面更快速地构建链路。

3.2 汽车之家基于 Apache Paimon 的流式湖仓应用(邸星星&李劲松)

对话嘉宾

李劲松|阿里云智能开源表存储负责人,Founder of Paimon,Flink PMC 成员

邸星星|汽车之家大数据计算平台负责人

7

用户对话环节 2 - 精彩回顾

点击观看用户对话环节 2 视频

邸星星来自汽车之家大数据计算平台,汽车之家涵盖了看车、买车、用车、换车全生命周期,致力于帮助用户省心省时省钱。本人在大数据行业从事了九年的工作,是 Flink 较早的深度用户,在大数据方向上和开源社区有较多的互动。

3

李劲松:可以分享一下汽车之家的大数据的架构吗?以及 Flink 和 Paimon 在其中主要发挥了哪些作用?

邸星星:与前面老师分享的架构类似,同样也分了几层,如下图:

4

  • 在接入层,业务数据主要分为两部分,一部分主要来自于关系数据库,其中包括 SQLServer、MySQL 和TiDB;另一部分来自日志数据,其中日志数据有端上的,如点击流的数据,也有各种应用日志。

  • 在传输层,也是通过 AutoKafka,根据不同的业务划分出很多的集群。

  • 在计算层,以 Flink 引擎为基础,其底层运行在 YARN 或 K8S 上。

  • 在存储层我们支持各类应用场景,如关系数据库,KV 存储(特征工程或线上业务),日志检索场景的 Elasticsearch、OLAP 场景的 StarRocks、还有今天的主角 Paimon。Flink 是实时计算引擎的底座,同样的我们把 Paimon 看做是湖格式的底座,Flink + Paimon 承载了流式湖仓的能力。

李劲松:汽车之家为什么要选用 Paimon 呢?Paimon 为汽车之家解决了什么问题呢?Flink + Paimon + StarRocks 这个铁三角具体解决什么问题呢?

邸星星:其实汽车之家与前面的老师都有过类似的经历,如同程旅行,不同的是汽车之家其实是从 Iceberg 切换到 Paimon 的。因为汽车之家在 2021 年与 Iceberg 社区有比较深度的合作,当时我们也在讨论如何做湖格式的落地,最终认为 Iceberg 在流式计算上支持效果不好,在更新场景下其写吞吐能力非常高,但在数据查询效率上有一些问题,需要额外的任务把数据合并之后才能达到较好的性能。因此,汽车之家当时也是出于在流方面支持的角度选择了 Paimon。因为 Paimon 在流上支持更完备,与 Flink 有深度的集成,包括流式的读取,数据在写到 Paimon 中后,下游还可以用 Flink 再去消费 Paimon 的增量数据,同时能保证数据的有序性。还有在社区支持方面,Iceberg 是外国人的主导的社区,而 Paimon 包括 Flink 社区,与国内的人交流沟通成本低,效率高。

邸星星:关于铁三角,我们前面介绍了 Flink,Flink 是实时计算的底座,Paimon 是湖格式的底座,他们本身解决了数据的时效性问题。时效性的问题是我们最大的痛点,在很多场景下,前面曹操出行的老师也提到,高层的经营决策分析,包括一线的运营,其实不一定要实现秒级时效性,5 分钟的时效性完全满足其分析的需求。可以说大部分的分析场景无需纯实时的方案,而 Flink+Paimon 构建的流式湖仓,时效性方面刚好可以做到批和流的中间状态,实现流批一体。

而数据的应用效率方面,不得不提到 StarRocks,数据近实时地写到 Paimon 后,还可以基于 StarRocks 做查询的加速。我们内部的各个系统已经把 Paimon + StarRocks 整个应用链路都打通了,比如 IDE 开发平台、报表系统、多维分析等系统。

总之,Flink + Paimon 解决了数据时效性的问题,Paimon + StarRocks 解决了数据分析效率的问题。

李劲松:那关于上面提到的这些,汽车之家在哪些场景有相关的应用呢?

邸星星:因为 Paimon 的功能在湖格式中比较全面的,汽车之家的场景与前面大家提到的类似,如支持模型训练的实时样本,今年我们把推荐的训练样本从原来的 T+1、H+1 提升到了分钟级的时效性,主要用到了 Paimon 的部分更新能力。因为标签的拼接就是一个 Join 的操作,用传统的方式 Join,会保存大量的状态数据,如说多个流间 Join 较复杂,资源占用较高,开发成本较高。使用 Paimon 的 Partial-Update 能力,提前定义主键,然后每个流里写自己的数据,开发成本大幅降低,逻辑也比较简单。另外在一些时效性要求较高的分析、报表场景也在应用。

5

3.3 用户对话环节 3 - 联通基于 Apache Paimon 的流式数据湖应用实践

对话嘉宾

李劲松|阿里云智能开源表存储负责人,Founder of Paimon,Flink PMC 成员

王云朋|联通数科大数据高级技术专家,Apache Paimon Contributor

8

用户对话环节 3 - 精彩回顾

点击观看用户对话环节 3 视频

王云朋来自联通数字科技有限公司,今天主要介绍 Paimon 在联通的一些实践和应用。中国联通 2021 年初将原本的五家专业子公司合并成立了联通数字科技有限公司,全面整合了云计算、大数据、物联网、AI、区块链、安全等一些基础能力,打造综合的数字化产品和运营体系,来更好的赋能千行百业。我从事数据研发工作多年,目前服务于数据智能事业部的数据计算研发团队,主要负责公司的万亿级实时计算平台和流式湖仓的建设工作。

6

李劲松:联通是怎么开始使用 Paimon 的呢?以前的架构是怎样的演化过程呢?

王云朋:联通引入 Paimon 是在实时计算平台的演进中产生了一些数据关联、融合的需求,进而引进 Paimon 来解决。大家可以看到早期平台的实时处理技术是通过使用 Spark Streaming 进行微批的处理,此时主要问题是时延较高,状态支持不好。后来为了提高时效性,实现有状态的流计算,就引入了 Flink 作为计算框架。但最初的业务主要是基于事件的规则匹配它的数据的关联性比较低,随着业务的发展,有一些流流关联、流批关联、流批融合场景出现。我们当时实现的方案主要是通过使用 Flink 的状态来实现数据的关联和融合。还有一种依赖外部数据库,如 HBase Redis,因为联通的数据量级非常大,单表数据量也很大,会导致一些大状态的问题,对外部数据库的依赖也无法实现海量数据的处理。最根本的问题是在存储层面流批数据割裂,导致了数据冗余,数据一致性也难以保证,整个处理的链路非常复杂,就需要把流数据、批数据融合。后来我们希望通过使用 Flink + Paimon 架构,利用 Paimon 的流批一体读写的特性和高效实时更新能力,在流式湖仓实践方面进行探索,希望能够达到流批一体的存储、计算,简化处理架构的效果。

7

李劲松:刚刚您提到了数据量很大,那么具体有多少呢?

王云朋:联通的数据体量非常大,目前在流平台上面运行的流任务总数近 700 个,日增数据量约为 1000TB,日处理量的在万亿级别。目前 Paimon 表 100 多张,主要是一些主键表,单表的主键数一般在 8 亿左右,最大的表的主键数是 170 亿,写入的流量最大的一张 Paimon 表约为每天写入 1000 亿的运营商数据。

李劲松:联通目前大致的大数据的架构和应用场景能简单分享一下吗?

王云朋:在联通中,一般针对分钟级时延要求的业务,并且实时数据和离线数据有关联和融合的业务,我们会使用 Paimon 来实现。下面时比较典型的场景,即建设以用户为中心的全景视图:

8

它要将用户相关的一些基本信息、使用信息、行为信息进行关联整合、实时更新,统一支撑上层的实时订阅、实时特征、实时安全等业务。我们的建设思路是:存储层是使用 Paimon 表作为存储,数据处理层使用 Flink,数据源主要包括数据库的变更日志、用户的行为数据、最新位置、上网偏好等。数据源接入之后,ODS 先入湖,在湖上进行分层建设,建设主题湖表,主要是一些关联打宽的操作,简单的关联使用 Paimon 和 Flink 在存储层实现关联,减少状态量,实现流批一体的存储,保证了数据的一致性,处理架构也简化了很多。

据实践经验,主机资源减少了 50%左右,包括数据的订正、批量的分析,以及中间结果的实时查询都有了更好的支持。此外,社区很活跃,使用过程中遇到的问题会很快得到解决。

四、总结

综上所述,Paimon 真正实现了流批一体,把流和批融合到了一起,加上 Flink 和流批一体的计算、存储,真正融合了流和批的架构。

点击查看原文视频

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

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

相关文章

Nginx快速入门:worker、master进程的作用和热部署原理(十)

0. 引言 我们通过查询nginx进程,可以发现nginx有两个进程:worker和master。一个程序启动了两个进程,那么这两个进程的作用和区别是什么呢?nginx又是如何利用这两个进程进行工作的呢?nginx不停机热部署又是如何实现的&…

AI绘画Midjourney绘画提示词Prompt大全

一、Midjourney绘画工具 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭…

通俗易懂的15个Java Lambda表达式案例

文章目录 1. **实现Runnable接口**:2. **事件监听器**(如Swing中的ActionListener):3. **集合遍历**(使用forEach方法):4. **过滤集合**(使用Stream API):5. …

OS_lab——bochs源码的编译与安装

1. 实验环境VMware station 15 Ubuntu 14.04.6 32位。2. 实验步骤2.1 安装虚拟机,并在虚拟机根目录下编译并安装bochs环境。 2.2 使用bochs自带工具bximage创建虚拟软驱。 2.3 编写引导程序boot.asm并用nasm编译得到引导文件boot.bin和boot.com。 2.4 修改bochs…

C# Emgu.CV4.8.0读取rtsp流录制mp4可分段保存

【官方框架地址】 https://github.com/emgucv/emgucv 【算法介绍】 EMGU CV(Emgu Computer Vision)是一个开源的、基于.NET框架的计算机视觉库,它提供了对OpenCV(开源计算机视觉库)的封装。EMGU CV使得在.NET应用程序…

二刷Laravel 教程(用户注册)总结Ⅳ

一、显示用户信息 1)resource Route::resource(users, UsersController); 相当于下面这7个路由 我们先用 Artisan 命令查看目前应用的路由: php artisan route:list 2) compact 方法 //我们将用户对象 $user 通过 compact 方法转化为一个关联…

Linux-v4l2框架

框架图 从上图不难看出,v4l2_device作为顶层管理者,一方面通过嵌入到一个video_device中,暴露video设备节点给用户空间进行控制;另一方面,video_device内部会创建一个media_entity作为在media controller中的抽象体&a…

亲,你相信数据吗?

对于这个问题,我们首先要看一下数据的属性,数据本身是中性的,只是信息的一个载体,从这个属性定义来看,我们是不能盲目相信或者不相信数据的。相不相信数据,其实是数据可靠性的问题,而数据可靠性…

我的NPI项目之设备系统启动(二) -- 系统启动阶段和分区的区别

系统启动的就几大阶段: 基于高通平台的Android OS启动过程,简单的说,可以分为一下几个部分: 之前一个比较老的平台大概是这样: 现在比较新的5G平台: 差别在这里,重点了解一下新平台的情况。xb…

大模型实战笔记02——大模型demo

大模型实战笔记02——大模型demo 1、大模型及InternLM模型介绍 2、InternLM-Chat-7B智能对话Demo 3、Lagent智能体工具调用Demo 4、浦语灵笔图文创作理解Demo 5、通用环境配置 注 笔记图片均为视频截图 笔记课程视频地址:https://www.bilibili.com/video/BV1Ci4y1…

彻底认识Unity ui设计中Space - Overlay、Screen Space - Camera和World Space三种模式

文章目录 简述Screen Space - Overlay优点缺点 Screen Space - Camera优点缺点 World Space优点缺点 简述 用Unity中开发了很久,但是对unity UI管理中Canvas组件的Render Mode有三种主要类型:Screen Space - Overlay、Screen Space - Camera和World Spa…

iptalbes详解

iptalbes防火墙 一、IPtables介绍 Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的完全自由的基于包过滤(对OSI模型的四层或者是四层以下进行过滤)的防火墙工具,它的功能十分强大,使用非常灵活,可以对流入和流出服务器…

深度学习|交叉熵

文章目录 什么是交叉熵如何构造信息量的函数关于 C 1 C_1 C1​参数的选择关于 C 2 C_2 C2​参数的选择 一个系统的熵如何比较两个系统的熵交叉熵在神经网络中的应用参考 什么是交叉熵 熵是用来衡量一个系统的混乱程度,混乱程度也其实代表着整个系统内部的不确定性。…

Oracle 日志路径查询介绍

数据库日志分析详解:  ORACEL RAC 体系架构分析  Oracle RAC 包含GI(Grid Infrastructure) 集群软件与Oracle数据库组成。  GI包含两个最主要的组件:Clusterware集群软件和ASM存储软件,这两个软件提供数据库高可用能力。  …

C++八股学习心得.6

1.C 异常处理 异常是程序在执行期间产生的问题。C 异常是指在程序运行时发生的特殊情况 异常提供了一种转移程序控制权的方式。C 异常处理涉及到三个关键字:try、catch、throw。 throw: 当问题出现时,程序会抛出一个异常。这是通过使用 throw 关键字来…

【动态规划】【 矩阵】【逆向思考】C++算法174地下城游戏

作者推荐 【动态规划】【字符串】扰乱字符串 本文涉及的基础知识点 动态规划 矩阵 逆向思考 LeetCode174地下城游戏 恶魔们抓住了公主并将她关在了地下城 dungeon 的 右下角 。地下城是由 m x n 个房间组成的二维网格。我们英勇的骑士最初被安置在 左上角 的房间里&#x…

Golang leetcode142 环形链表 暴力map 快慢指针法

文章目录 环形链表 leetcode142暴力遍历 map哈希记录快慢指针法 环形链表 leetcode142 该题目要求找到入环的第一个节点 我们可以通过map进行记录,没到新的节点查询是否经过原有节点 入环节点,上两个节点的next相同 若有入环节点,则一定能检…

TypeError: loaderUtils.getOptions is not a function

webpack 版本:^5.89.0 但是直接 pnpm add loader-utils 安装的版本比较新,会报错:TypeError: loaderUtils.getOptions is not a function。 解决方案:将低 loader-utils 版本,我这里使用 ^2.0.0 就不会再报这个错误了 …

【读书笔记】网空态势感知理论与模型(九)

对分析人员数据分类分流操作的研究 1.概述 本章节介绍一种以人员为中心的智能数据分类分流系统,该系统利用了入侵检测分析人员的认知轨迹。整合了3个维度的动态网络-人系统(cyber-humber system):网空防御分析人员、网络监测数据…

muduo网络库剖析——网络地址InetAddress类

muduo网络库剖析——网络地址InetAddress类 前情从muduo到my_muduo 概要socketaddr_in介绍成员用法 网络地址转换函数 框架与细节成员函数使用方法 源码 前情 从muduo到my_muduo 作为一个宏大的、功能健全的muduo库,考虑的肯定是众多情况是否可以高效满足&#xf…