大数据ETL数据提取转换和加载处理

什么是 ETL?
提取转换加载(英语:Extract, transform, load,简称ETL),用来描述将资料从来源端经过抽取、转置、加载至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。
ETL(提取、转换、加载)指数据驱动型组织从多个来源收集数据,然后将数据集中起来以满足数据发现、报告、分析和决策需求的过程。
在 ETL 流程中,各种数据源的类型、格式、规模和可靠性可能大不相同,因此数据要经过处理才能供组织和用户使用。同时,面对不同的目标和技术实施条件,组织可能使用数据库、数据仓库或数据湖来存储目标数据。
ETL 的三个步骤
提取
在提取阶段,ETL 将识别数据并从数据源复制数据,以便将数据传输到目标数据存储。其中,数据源包括结构化数据源和非结构化数据源,例如文档、电子邮件、业务应用、数据库、设备、传感器、第三方等等。
转换
ETL 对上一步骤提取的原始格式的原始数据进行映射和转换,为最终数据存储做好准备。在转换过程中,ETL 将按照适当方式校验和验证数据,进行数据去重和/或聚合,确保数据可靠、可查询。
加载
ETL 将转换后的数据移动到目标数据存储。加载操作可分为两种,一种是初始加载所有源数据,另一种是加载源数据的增量变更。另外,您既可以实时加载数据,也可以按计划分批加载。
ELT 和 ETL 的区别
转换是 ETL 流程中最复杂的步骤。因此,ETL 和 ELT 的区别主要体现在两点上:
- 转换操作时间
- 转换操作位置
对于传统的数据仓库,企业首先从“源系统”(ERP 系统、CRM 系统等等)提取数据。然后,由于需要对数据集维度进行标准化,获取聚合数据,才能使用 OLAP 工具和运行 SQL 查询,企业必须对数据进行一系列转换操作。
过去,数据转换是在将数据加载到目标系统(通常为关系数据仓库)之前完成的。
如今,数据仓库的底层数据存储和处理技术的发展,让企业得以在目标系统中进行转换操作。ETL 和 ELT 流程都包含数据中转区域。在 ETL 中,中转区域位于专有或定制工具中,位于源系统(例如 CRM 系统)和目标系统(例如数据仓库)之间。
而在 ELT 中,中转区域位于数据仓库中,由 DBMS 的数据库引擎执行转换操作。因此,ELT 消除了 ETL 旨在辅助数据转换的数据准备和清洗功能。
ETL 和企业数据仓库
过去,ETL 工具主要用于向企业数据仓库交付数据,满足商务智能 (BI) 应用需求。数据仓库用于提供一个关于企业内所有活动的可靠信息源,其中的数据是基于严格的模式、元数据和验证规则构建的。
面向企业数据仓库的 ETL 工具必须满足数据集成需求,例如高容量、高性能批次加载;事件驱动、滴流馈给的集成流程;可编程转换;以及编排。只有这样,它们才能满足最严苛的转换任务和工作流要求,为多样化的数据源提供连接器。
在加载数据后,企业可使用多种策略确保数据源与目标数据存储同步,例如定期重新加载完整数据集,定期更新最新数据,或在数据源与目标数据仓库之间执行全量同步。这种实时集成又被称为变更数据捕获 (CDC)。对于这一高级流程,ETL 工具必须能够洞悉源数据库的事务语义,并正确地将事务传输到目标数据仓库。
ETL 和数据集市
与企业数据仓库相比,数据集市规模更小,更多是用作目标数据存储。它们通常专注于某一个部门或某一个产品线的信息。因此,面向数据集市的 ETL 工具的用户主要是业务线 (LOB) 专家、数据分析师和/或数据科学家。
面向数据集市的 ETL 工具必须适合业务人员和数据经理使用,而不是编程人员和 IT 人员。因此,它们应搭载可视化工作流,以此简化 ETL 管道设置。
ETL、ELT 和数据湖
数据湖与数据仓库、数据集市不同,它一般通过对象存储或 Hadoop 分布式文件系统 (HDFS) 存储数据,因此可以存储无模式的、结构化程度较低的数据;支持使用多种工具来查询非结构化数据。
数据湖也支持 ETL(提取、转换和加载)。它能够以 “as-is” 状态存储数据,支持在捕获数据后转换、分析和处理数据。这带来了以下优势:
- 全面记录所有数据,避免因聚合或过滤而丢失任何信号。
- 超快速摄取数据,尤其适用于物联网 (IoT) 流处理、日志分析、网站指标等场景。
- 在捕获数据时发现趋势。
- 支持部署新型人工智能 (AI) 技术,从而检测大规模的非结构化数据集中的模式。
面向数据湖的 ETL 工具应提供可视化数据集成工具,这有助于提高数据科学家和数据工程师效率。数据湖架构中的其他常见工具还包括:
- Cloud Streaming 服务:将大规模的实时数据流摄取到数据湖,满足消息传递、应用日志、运营遥测、Web 点击流数据跟踪、事件处理以及安全分析服务需求。此外,与 Kafka 兼容可确保这些服务能够从近乎无限的数据源检索数据。
- 基于 Spark 的云技术服务:快速对大型数据集执行数据处理和转换。Spark 服务可从对象存储或 HDFS 加载数据集,然后跨可扩展计算实例集群,在内存中处理和转换数据,最后将数据写回数据湖或数据集市和/或数据仓库。
ETL 使用场景
ETL 流程能够极其快速、可靠地将数据摄取到数据湖,满足数据科学和分析需求,同时创建高质量的模式,对于众多行业都至关重要。同时,ETL 解决方案还可以规模化地加载和转换事务性数据,为大规模数据创建有序视图。这样,企业可以可视化地展现和预测行业趋势。在现实中,众多行业都采用 ETL 流程来捕获切实可行的洞察,实现快速决策并提高效率。
金融服务
金融服务机构通常要采集大量的结构化数据和非结构化数据,以此捕获客户行为洞察。基于这些洞察,金融服务机构可以更好地分析风险,优化银行金融服务和线上平台,甚至为 ATM 供应现金。
石油和天然气
石油和天然气行业一般使用 ETL 解决方案来生成特定地理区域油气资源的使用、存储和趋势预测。ETL 可充分收集一个提炼站点所有传感器的信息,然后处理信息,使信息易于读取。
汽车
ETL 解决方案可帮助汽车经销商和制造商洞悉销售模式,调整营销活动,补充库存以及跟进销售线索。
电信
面对当今前所未来的数据规模和数据类型,电信服务提供商采用 ETL 解决方案来更好地管理和洞悉数据。在处理和分析数据后,企业可基于数据洞察改善广告、社交媒体、SEO、客户满意度和盈利能力等等。
医疗保健
为降低成本和改善服务,医疗保健行业采用 ETL 解决方案管理患者记录、收集保险信息和满足不断变化的监管要求。
生命科学
临床实验室采用 ETL 解决方案和人工智能 (AI) 技术来处理研究机构生成的各种类型的数据。例如,在疫苗开发协作中,实验室需要收集、处理和分析大量数据。
公共部门
随着物联网 (IoT) 功能的迅猛发展,智慧城市使用 ETL 和人工智能技术来优化流量、监视水质、提高停车率等等。
ETL常用工具
- OWB(Oracle Warehouse Builder)
- ODI(Oracle Data Integrator)
- Informatic PowerCenter
- AICloudETL、DataStage
- Repository Explorer
- Beeload
- Canal
- DataSpider
- DataX
- Kettle
- Flink
- Spark Streaming
- TASCTL
- Confluent
- Fivetran
- FlyData
- Matillion
- SnapLogic
- StreamSets
- Striim
- Alooma
- Flume
- Sqoop
- Lambda Architecture
比较常用的是:Sqoop、Kettle、Canal、DataX、StreamSets。笔者用过Datax对各种数据源的支持较好。
ETL工作原理
ETL架构

ETL过程概览
提取、转换、加载(ETL)的工作是定期将数据从源系统移动到目标系统。ETL 过程分三个步骤:
- 从源数据库中提取相关数据
- 转换数据,使其更适合分析
- 将数据加载到目标数据库

数据集市数据采集示意图:

Extract提取
在数据提取过程中,原始数据将从源位置复制或导出到暂存区域。数据管理团队可以从各种结构化或非结构化数据源中提取数据。这些来源包括但不限于:
- SQL 或 NoSQL 服务器
- CRM 和 ERP 系统
- 平面文件
- 电子邮件
- 网页
什么是数据提取?
在数据提取中,提取、转换、加载(ETL)工具从多个来源提取或复制原始数据并将其存储在暂存区域中。暂存区(或登录区)是用于临时存储提取数据的中间存储区。数据暂存区通常是暂时的,这意味着它们的内容在数据提取完成后会被删除。但是,暂存区也可能会出于故障排除的目的而保留数据存档。
系统将数据从数据来源发送到目标数据存储的频率取决于底层变更数据捕获机制。数据提取通常通过以下三种方式之一进行。
更新通知
在更新通知中,源系统会在数据记录发生更改时通知您。然后,您可以针对该更改运行提取过程。大多数数据库和 Web 应用程序都提供更新机制来支持这种数据集成方法。
增量提取
某些数据来源无法提供更新通知,但可以识别和提取在给定时间段内经过修改的数据。在这种情况下,系统会定期检查更改,例如每周一次、每月一次或活动结束时。您只需要提取已更改的数据。
完全提取
某些系统无法识别数据更改或发出通知,因此重新加载所有数据是唯一的选择。这种提取方法要求您保留上次提取的副本以检查哪些记录是新的。由于此方法涉及大量数据传输,因此我们建议您仅将其用于小型表格。
Transform转换
在暂存区,会对原始数据进行数据处理。在这里,数据得到转换和整合,以用于其预期的分析用例。此阶段可能涉及以下任务:
- 过滤、清理、去重、验证和认证数据。
- 基于原始数据进行计算、转换或汇总。这可能包括更改行标题和列标题以保持一致性、转换货币或其他计量单位、编辑文本字符串等。
- 进行审计以确保数据质量和合规性。
- 删除、加密或保护受行业或政府监管机构管理的数据。
- 将数据格式化为表或联接表,以匹配目标数据仓库的模式。
什么是数据转换?
在数据转换中,提取、转换、加载(ETL)工具将转换和整合暂存区域中的原始数据,为目标数据仓库做好准备。数据转换阶段可能涉及以下类型的数据更改。
基本数据转换
基本转换通过消除错误、清空数据字段或简化数据来提高数据质量。这些转换的示例如下。
数据清理
数据清理可消除错误并将源数据映射到目标数据格式。例如,您可以将空数据字段映射到数字 0,将数据值“Parent”映射到“P”,或将“Child”映射到“C”。
数据去重复
数据清理中的去重复将识别并删除重复记录。
数据格式修订
格式修订会将字符集、测量单位和日期/时间值等数据转换为一致的格式。例如,一家食品公司可能有不同的配方数据库,其成分以千克和磅为单位。ETL 会将所有单位转换为磅。
高级数据转换
高级转换使用业务规则来优化数据以便于分析。这些转换的示例如下。
推导
推导将业务规则应用于您的数据,以根据现有值计算新值。例如,您可以通过减去费用或通过将每件商品的价格乘以订购的商品数量来计算购买的总成本来将收入转换为利润。
联结
在数据准备中,联结将链接来自不同数据来源的相同数据。例如,您可以通过将不同供应商的采购价值相加,并仅将最终总计存储在目标系统中来找出某件物品的总采购成本。
拆分
您可以在目标系统中将列或数据属性划分为多个列。例如,如果数据来源将客户名称保存为“Jane John Doe”,您可以将其拆分为名字、中间名和姓氏。
汇总
汇总通过将大量数据值减少到较小的数据集中来提高数据质量。例如,客户订单发票值可以有许多不同的小金额。您可以通过将给定时间段内的数据相加来汇总数据,以构建客户生命周期价值(CLV)指标。
加密
您可以通过在数据流到目标数据库之前添加加密来保护敏感数据,以遵守数据法律或数据隐私。
Load加载
在这最后一步中,将转换后的数据从暂存区域移至目标数据仓库。通常,这涉及到对所有数据进行初始加载,然后定期加载增量数据变化,偶尔需要进行完全刷新以擦除和替换仓库中的数据。对于大多数使用 ETL 的组织而言,该流程是一个自动化流程,且定义明确、可连续执行和批量驱动。通常,ETL 发生在非工作时间,此时源系统和数据仓库的流量最低。
什么是数据加载?
在数据加载中,提取、转换、加载(ETL)工具会将转换后的数据从暂存区移动到目标数据仓库。对于大多数使用 ETL 的组织来说,该过程是自动化的、定义明确的、连续的和批处理驱动的。下面是两种加载数据的方法。
完全加载
在完全加载时,来自源的全部数据被转换并移动到数据仓库。完全加载通常发生在您第一次将数据从源系统加载到数据仓库中时。
增量加载
在增量加载中,ETL 工具会定期加载目标系统和源系统之间的增量(或差异)。它会存储最后提取日期,以便仅加载在此日期之后添加的记录。有两种方法可以实现增量加载。
流式增量加载
如果您的数据量较小,您可以通过数据管道将持续更改流式传输到目标数据仓库。当数据速度增加到每秒数百万个事件时,您可以使用事件流处理来监控和处理数据流,从而更及时地做出决策。
批量增量加载
如果您的数据量很大,您可以定期分批收集将负载数据更改。在此设定的时间段内,由于数据同步,源系统或目标系统都不会发生任何操作。
ETL算法


ETL处理核心诉求
ETL 表示提取、转换、加载,ETL 是一个存在已久的数据集成流程,用于将多个来源的数据组合成单个一致的数据集,以便加载到数据仓库、数据湖或其他目标系统中。
提取、转换、加载(ETL)过程将多个来源的数据组合到称为数据仓库的大型中央存储库中。ETL 使用一组业务规则来清理和组织原始数据,并为存储、数据分析和机器学习(ML)做好准备。您可以通过数据分析满足特定的商业智能需求(例如预测业务决策的结果、生成报告和控制面板、减少无效运营等)。
为什么 ETL 很重要?
今天的组织拥有来自各种来源的结构化和非结构化数据,包括:
- 来自在线支付和客户关系管理(CRM)系统的客户数据
- 来自供应商系统的库存和运营数据
- 来自物联网(IoT)设备的传感器数据
- 来自社交媒体和客户反馈的营销数据
- 来自内部人力资源系统的员工数据
通过应用提取、转换、加载(ETL)过程,可以以更易于分析的格式和结构准备单个原始数据集,从而产生更有意义的见解。例如,在线零售商可以分析来自销售点的数据来预测需求和管理库存。营销团队可以将 CRM 数据与社交媒体上的客户反馈相结合,以研究使用器行为。
ETL 如何使BI商业智能受益?
提取、转换、加载(ETL)通过使流程更加可靠、准确、详细和高效来改进商业智能和分析。
历史背景
ETL 为组织的数据提供了深刻的历史背景。企业可以将遗留数据与来自新平台和应用程序的数据相结合。您可以查看较旧的数据集以及较新的信息,从而为您提供长期的数据视图。
合并数据视图
ETL 提供统一的数据视图,以便进行深入分析和报告。管理多个数据集需要时间和协调,并可能导致效率低下和延迟。ETL 会将数据库和各种形式的数据整合到一个统一的视图中。数据集成过程提高了数据质量并节省了移动、分类或标准化数据所需的时间。这使得分析、可视化和理解大型数据集变得更加容易。
准确的数据分析
ETL 提供更准确的数据分析,以满足合规性和监管标准。您可以将 ETL 工具与数据质量工具集成,对数据进行剖析、审计和清理,确保数据可信。
任务自动化
ETL 会自动执行可重复的数据处理任务以进行高效分析。ETL 工具会自动执行数据迁移过程,您可以将它们设置为定期,甚至在运行时集成数据更改。因此,数据工程师可以将更多时间用于创新,并减少在管理繁琐的任务(例如移动和格式化数据)上花费的时间。
更多参考资料
https://en.wikipedia.org/wiki/Extract,_transform,_load
什么是 ETL?| Oracle 中国
什么是 ETL(提取、转换、加载)?| IBM
什么是 ETL?- 提取、转换、加载简介 - AWS
https://zhuanlan.zhihu.com/p/352337320
一篇文章搞懂数据仓库:常用ETL工具、方法-腾讯云开发者社区-腾讯云
https://zhuanlan.zhihu.com/p/153315703
【知识】ETL大数据集成工具Sqoop、dataX、Kettle、Canal、StreamSets大比拼-腾讯云开发者社区-腾讯云
相关文章:
大数据ETL数据提取转换和加载处理
什么是 ETL? 提取转换加载(英语:Extract, transform, load,简称ETL),用来描述将资料从来源端经过抽取、转置、加载至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。 ETL&…...
物理与环境安全技术
目录 物理安全 环境安全 物理安全 物理安全是指通过实施一系列的防护措施,以保护人员、设备、设施和信息资源免受物理上的威胁、损坏或非法入侵。 访问控制:限制对数据中心、机房等关键设施的物理访问。通常采用的措施有门禁系统(使用门禁…...
手把手教你如何配置好VS Code的WEB基础开发环境(保姆级)
1. VS Code介绍 微软旗下的多场景开发环境软件,支持JAVA、C、C#、C、WEB、VUE、CSS、HTML、Python等等等 如果你刚刚开始编程或者准备学习WEB,那么我强烈建议你使用这款软件 缺点:(针对初学者) 需要安装各种各样的插…...
高性能、编译器编写语言、编程语言的高低贵贱
高性能 高性能是一个通用名词,可在服务器、客户端甚至浏览器实现高性能。对于大型网站、服务器后端、游戏后端,高性能是一个不可绕过的槛。 高性能技术 池机制 静态分配:就像编译型语言对代码的预处理,不像解释型语言动态解析。可…...
Python安装库时使用国内源pip install -i
普通 安装方式会从国外站点下载, 首先是慢,再有可能会下载失败 所以一般指定国内源 示例 正常情况下,安装pandas这个模块 pip install pandas指定源命令如下: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ pan…...
Linux 再入门整理:详解 /etc/fstab 文件
目录 1. 什么是 /etc/fstab2. /etc/fstab 文件的格式2.1 设备文件 (Device)2.2 挂载点 (Mount Point)2.3 文件系统类型 (File System Type)2.4 挂载选项 (Mount Options)2.5 Backup Operation(dump 参数)2.6 Pass Order (fsck 参数)2.6.1 参数设置2.6.2 …...
2.8 双绞线、同轴电缆、光纤与无线传输介质
传输介质及分类 传输介质也称为传输媒体,它是发送设备和接收设备之间的物理通路。 传输介质可分为导向传输介质和非导向传输介质。在导向传输介质中,电磁波被导向沿着固体媒介(铜线或光纤)传播,而非导向传输介质可以…...
OBOO鸥柏:布局于为无人机展厅行产业提供LCD液晶显示终端
新华网快讯,于10月9日消息,有投资者在互动平台向OBOO鸥柏公司提问:您好!目前有哪些工业/商用显示产品应用于无人机展厅展馆场景?能否着重介绍下贵司屏幕主要应用哪些品牌无人机数字化展厅展馆做保障? 鸥柏…...
win10状态栏中 “音量” 符号丢失,而在“打开或关闭系统图标”中音量开关无法调节的解决方法
最近在使用电脑需要调节音量时,突然发现电脑右下角的音量图标不见了,在网上搜索了,测试了许多种方法,都没有解决这个问题。 后面想想,使用其他途径,或许可以解决了我的这个问题,终于功夫不负有心…...
Mysql 学习——项目实战
MySQL 学习——项目实战 项目出处 博主:Asmywishi Linux-Ubuntu启动Mysql sudo mysqlData preparation Create Database and Table Create database : create database mysql_example1;Start database : use mysql_example1;Create Student table : # 学生表…...
Springboot 整合 logback 日志框架
文章目录 整合 Logback 日志框架第一步:导入依赖第二步:导入配置(logback.xml)详解 使用(记录日志) 遇到问题一解决方案 整合 Logback 日志框架 第一步:导入依赖 (Springboot 会自己…...
Hugging face简要介绍
1.注册使用huggingface 2.在Datasets下可以查看数据集 3.在Models下可以查看模型,左侧是对模型的分类 4.官方文档查看https://huggingface.co/docs 5.主要模型: 自回归:GPT、Transformer-XL、XLNet 自编码:BERT、ALBERT、RoBERT…...
A股知识答题pk小程序怎么做?
A股知识答题pk小程序怎么做?以下是制作A股知识答题PK小程序的一般步骤: 一、 需求分析与规划: 明确目标:确定小程序的主要目标,比如是为了帮助用户学习A股知识、进行趣味竞赛,还是作为金融教育工具等。 …...
单细胞转录组 —— kb-python 原始数据处理
单细胞转录组 —— kb-python 原始数据处理 前言 kallisto|bustools 是一种用于预处理 scRNA-seq 数据的工作流程。 数据预处理步骤包括: 将 reads 与其来源细胞关联起来;根据唯一分子标识符(UMI)对 reads 进行去重࿱…...
全同态加密算法概览
我们前面有谈到《Paillier半同态加密算法》,半同态加密算法除了支持密文加法运算的 Paillier 算法,还有支持密文乘法计算的 RSA 算法,早期的PSI(隐私求交)和PIR(匿踪查询)都有使用基于RSA盲签名技术来实现。今天我们来谈谈能够有效支持任意函…...
leetcode 刷题day38动态规划Part07 打家劫舍(198.打家劫舍、213.打家劫舍II、337.打家劫舍III)
198.打家劫舍 思路: 1、dp[i]为到第i家偷到的最高金额。 2、如果偷第i家,那么dp[i]dp[i-2]nums[i],如果不偷,则dp[i]dp[i-1],所以递推公式dp[i]max(dp[i-2]nums[i],dp[i-1])。 3、初始值,根据递推公式,我们…...
C0010.Qt5.15.2下载及安装方法
1. 下载及安装 Qt 添加链接描述下载地址:http://download.qt.io/ 选择 archive 目录 安装Qt **注意:**本人使用的是Qt5.15.2版本,可以按如下方法找到该版本;...
制造企业MES管理系统的应用策略与实施路径
在智能制造浪潮的席卷之下,MES管理系统作为连接生产计划与车间操作的核心桥梁,其战略地位愈发显著。本文旨在深入剖析MES管理系统在智能制造转型中的核心价值、实施策略及实践路径,为制造企业探索智能化生产之路提供实践指导与灵感启发。 MES…...
Halcon 3D应用 - 胶路提取
1. 需求 本文基于某手环(拆机打磨处理)做的验证性工作,为了项目保密性,只截取部分数据进行测试。 这里使用的是海康3D线激光轮廓相机直线电机的方式进行的高度数据采集,我们拿到的是高度图亮度图数据。 提取手环上的胶…...
【Redis】Redis线程模型
目录 1. Redis 是单线程的,还是多线程的?2. Redis单线程模式是怎么样的?Redis 单线程模式的优势Redis 单线程的局限性Redis 单线程的优化策略 3. Redis采用单线程为什么还这么快4. Redis 6.0 之前为什么使用单线程?5. Redis 6.0 之…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...
Java数组Arrays操作全攻略
Arrays类的概述 Java中的Arrays类位于java.util包中,提供了一系列静态方法用于操作数组(如排序、搜索、填充、比较等)。这些方法适用于基本类型数组和对象数组。 常用成员方法及代码示例 排序(sort) 对数组进行升序…...
Linux入门课的思维导图
耗时两周,终于把慕课网上的Linux的基础入门课实操、总结完了! 第一次以Blog的形式做学习记录,过程很有意思,但也很耗时。 课程时长5h,涉及到很多专有名词,要去逐个查找,以前接触过的概念因为时…...
MLP实战二:MLP 实现图像数字多分类
任务 实战(二):MLP 实现图像多分类 基于 mnist 数据集,建立 mlp 模型,实现 0-9 数字的十分类 task: 1、实现 mnist 数据载入,可视化图形数字; 2、完成数据预处理:图像数据维度转换与…...
