云原生ETL方案:AWS Glue vs Azure Data Factory

云原生ETL方案:AWS Glue vs Azure Data Factory

关键词:云原生、ETL、AWS Glue、Azure Data Factory、数据处理

摘要:本文旨在对比云原生环境下的两大ETL方案——AWS Glue和Azure Data Factory。我们将深入剖析它们的核心概念、工作原理、算法实现,通过实际案例展示它们在不同场景下的应用,并探讨它们的未来发展趋势与挑战。希望通过本文,能帮助读者更好地选择适合自己业务需求的ETL方案。

背景介绍

目的和范围

在当今数字化时代,数据的价值愈发凸显。企业需要从海量的数据中提取有价值的信息,而ETL(Extract, Transform, Load,即提取、转换、加载)过程是数据处理的关键环节。云原生技术的发展为ETL提供了更高效、灵活的解决方案。本文将聚焦于AWS Glue和Azure Data Factory这两个云原生ETL方案,对比它们的优缺点、适用场景等,帮助读者在实际应用中做出更明智的选择。

预期读者

本文适合对云原生ETL技术感兴趣的技术人员、数据分析师、企业IT决策者等。无论你是初学者想了解云原生ETL的基本概念,还是有一定经验的专业人士想对比不同方案的优劣,都能从本文中获得有价值的信息。

文档结构概述

本文将首先介绍相关的核心概念,包括ETL、AWS Glue和Azure Data Factory的基本原理。然后详细分析它们的核心算法原理和具体操作步骤,通过数学模型和公式进一步阐述。接着给出项目实战案例,展示如何使用这两个方案进行数据处理。之后探讨它们的实际应用场景、推荐相关工具和资源,以及分析未来发展趋势与挑战。最后进行总结,并提出一些思考题供读者进一步思考。

术语表

核心术语定义
  • ETL:即提取、转换、加载,是将数据从源系统提取出来,进行必要的转换,然后加载到目标系统的过程。
  • AWS Glue:亚马逊云科技提供的一种无服务器ETL服务,可自动发现、准备和组合数据,以便进行分析。
  • Azure Data Factory:微软Azure云平台提供的云原生数据集成服务,可用于创建数据驱动的工作流,实现数据的提取、转换和加载。
相关概念解释
  • 无服务器:是一种云计算模型,用户无需管理服务器基础设施,云服务提供商负责底层资源的管理和维护。
  • 数据集成:将来自不同数据源的数据整合到一起,以便进行统一的分析和处理。
缩略词列表
  • ETL:Extract, Transform, Load
  • AWS:Amazon Web Services
  • ADF:Azure Data Factory

核心概念与联系

故事引入

想象一下,你是一家大型超市的老板,每天都会产生大量的销售数据,包括不同商品的销售数量、价格、顾客信息等。这些数据分散在各个收银机、库存系统和会员管理系统中。你想要分析这些数据,找出哪些商品最受欢迎,哪些时间段销售最好,以便更好地进行商品采购和促销活动。但是,这些数据格式不同,存储位置也不同,就像一堆杂乱无章的拼图碎片。这时候,你就需要一个工具来把这些碎片收集起来,整理好,再拼接到一起,形成一幅完整的画面。这就是ETL的作用,而AWS Glue和Azure Data Factory就是帮助你完成这个任务的两个强大工具。

核心概念解释(像给小学生讲故事一样)

** 核心概念一:ETL **
ETL就像一个神奇的厨师。厨师会从不同的地方采购食材(提取),比如从菜市场买蔬菜,从海鲜市场买鱼。然后,厨师会对这些食材进行清洗、切配、烹饪等加工(转换),把它们变成美味的菜肴。最后,厨师会把做好的菜肴端上餐桌(加载),供大家享用。同样,ETL会从不同的数据源(如数据库、文件系统等)提取数据,对数据进行清洗、转换、聚合等操作,然后把处理好的数据加载到目标系统(如数据仓库、数据分析平台等)中。

** 核心概念二:AWS Glue **
AWS Glue就像一个超级智能的助手,它是亚马逊云科技为我们准备的。这个助手会自动去寻找数据,就像在一个大仓库里自动找到我们需要的货物一样。它还能帮我们把找到的数据整理得井井有条,就像把杂乱的房间收拾干净一样。而且,我们不需要自己去管理服务器,亚马逊云科技会帮我们处理好一切,我们只需要告诉它我们想要做什么就行了。

** 核心概念三:Azure Data Factory **
Azure Data Factory就像一个灵活的流水线工人,它是微软Azure云平台的一员。这个工人可以根据我们的需求,设计出不同的工作流程。它可以把不同来源的数据按照我们设定的规则进行处理,就像在流水线上把不同的零件组装成一个完整的产品一样。它也能很好地和其他Azure服务集成,让整个数据处理过程更加顺畅。

核心概念之间的关系(用小学生能理解的比喻)

ETL、AWS Glue和Azure Data Factory就像一个团队。ETL是团队的目标,就像我们要建造一座房子。AWS Glue和Azure Data Factory是两个不同的建筑工人,它们都有自己的工具和方法来帮助我们实现这个目标。AWS Glue更像是一个自动化程度很高的工人,它能自动完成很多任务;而Azure Data Factory则更像是一个灵活的工人,能根据不同的设计图纸建造出不同风格的房子。

** 概念一和概念二的关系:**
ETL和AWS Glue的关系就像做菜和智能厨房助手的关系。ETL是做菜的整个过程,而AWS Glue就是那个智能厨房助手,它能帮助我们完成提取食材、处理食材、装盘等一系列做菜的步骤,让整个做菜过程更加轻松、高效。

** 概念二和概念三的关系:**
AWS Glue和Azure Data Factory就像两个不同的小朋友,他们都有自己的优点和特长。AWS Glue小朋友很聪明,能自动完成很多事情;Azure Data Factory小朋友很灵活,能根据不同的要求做出不同的东西。他们都可以帮助我们完成ETL这个任务,但在不同的情况下,可能会有不同的表现。

** 概念一和概念三的关系:**
ETL和Azure Data Factory就像画画和绘画工具的关系。ETL是画画的整个过程,包括构思、选色、绘制等。Azure Data Factory就是那些绘画工具,比如画笔、颜料等,它能帮助我们更好地完成绘画过程,让我们的画更加漂亮。

核心概念原理和架构的文本示意图

ETL原理和架构

ETL的基本原理是从数据源提取数据,经过转换后加载到目标系统。其架构通常包括数据源层、提取层、转换层、加载层和目标系统层。数据源层可以是各种类型的数据库、文件系统等;提取层负责从数据源中获取数据;转换层对提取的数据进行清洗、转换、聚合等操作;加载层将处理好的数据加载到目标系统;目标系统可以是数据仓库、数据分析平台等。

AWS Glue原理和架构

AWS Glue的架构主要包括数据目录、爬虫、作业和触发器。数据目录用于存储数据的元数据,就像一个图书馆的目录,记录了数据的位置、格式等信息。爬虫用于自动发现数据源中的数据,并将其元数据添加到数据目录中。作业是用户定义的数据处理任务,它可以使用AWS Glue提供的脚本或库来完成ETL操作。触发器用于在特定的时间或事件发生时启动作业。

Azure Data Factory原理和架构

Azure Data Factory的架构由管道、活动、数据集和链接服务组成。管道是一组相关活动的逻辑分组,就像一个生产线。活动是管道中的具体操作,如数据复制、数据转换等。数据集是对数据的抽象,定义了数据的位置和格式。链接服务用于连接数据源和目标系统,就像桥梁一样。

Mermaid 流程图

Azure Data Factory

AWS Glue

数据源

提取

转换

加载

目标系统

数据目录

爬虫

作业

触发器

管道

活动

数据集

链接服务

核心算法原理 & 具体操作步骤

AWS Glue

核心算法原理

AWS Glue主要使用Apache Spark作为其数据处理引擎。Apache Spark是一个快速、通用的集群计算系统,它可以在内存中高效地处理大规模数据。AWS Glue的作业可以使用Python(PySpark)或Scala编写,通过调用Spark的API来完成数据的提取、转换和加载操作。

具体操作步骤
  1. 创建数据目录:在AWS Glue控制台中创建数据目录,用于存储数据的元数据。
  2. 配置爬虫:配置爬虫来自动发现数据源中的数据,并将其元数据添加到数据目录中。例如,如果数据源是一个Amazon S3存储桶,可以配置爬虫定期扫描该存储桶,发现新的数据文件。
  3. 创建作业:在AWS Glue控制台中创建作业,选择要使用的数据源和目标系统,编写作业脚本。以下是一个简单的PySpark作业示例:
importsysfromawsglue.transformsimport*fromawsglue.utilsimportgetResolvedOptionsfrompyspark.contextimportSparkContextfromawsglue.contextimportGlueContextfromawsglue.jobimportJob## @params: [JOB_NAME]args=getResolvedOptions(sys.argv,['JOB_NAME'])sc=SparkContext()glueContext=GlueContext(sc)spark=glueContext.spark_session job=Job(glueContext)job.init(args['JOB_NAME'],args)## Read data from sourcedatasource0=glueContext.create_dynamic_frame.from_catalog(database="my_database",table_name="my_table")## Apply transformationstransformed_data=ApplyMapping.apply(frame=datasource0,mappings=[("column1","string","new_column1","string"),("column2","int","new_column2","int")])## Write data to targetglueContext.write_dynamic_frame.from_options(frame=transformed_data,connection_type="s3",connection_options={"path":"s3://my-bucket/output"},format="csv")job.commit()
  1. 设置触发器:设置触发器来控制作业的执行时间。可以选择按时间间隔(如每天、每周)或事件触发(如文件上传到S3存储桶)。

Azure Data Factory

核心算法原理

Azure Data Factory使用多种数据处理引擎,如Azure Databricks、Azure HDInsight等,根据不同的活动类型选择合适的引擎。例如,数据复制活动可以直接使用Azure Data Factory的内置复制引擎,而数据转换活动可以使用Azure Databricks的Spark集群。

具体操作步骤
  1. 创建链接服务:在Azure Data Factory中创建链接服务,用于连接数据源和目标系统。例如,如果数据源是一个Azure SQL数据库,可以创建一个Azure SQL数据库链接服务。
  2. 创建数据集:创建数据集来定义数据的位置和格式。例如,创建一个Azure SQL数据库数据集,指定要读取的表名。
  3. 创建管道:在Azure Data Factory中创建管道,添加活动。以下是一个简单的管道示例,包含一个数据复制活动:
{"name":"CopyPipeline","properties":{"activities":[{"name":"CopyActivity","type":"Copy","inputs":[{"referenceName":"InputDataset","type":"DatasetReference"}],"outputs":[{"referenceName":"OutputDataset","type":"DatasetReference"}],"typeProperties":{"source":{"type":"AzureSqlSource"},"sink":{"type":"AzureBlobSink"}}}]}}
  1. 发布和运行管道:将创建的管道发布到Azure Data Factory中,并手动或按计划运行管道。

数学模型和公式 & 详细讲解 & 举例说明

数据处理复杂度分析

在ETL过程中,数据处理的复杂度通常与数据量、数据处理操作的类型和数量有关。我们可以使用大O符号来分析数据处理的时间复杂度。

数据提取复杂度

假设我们要从一个包含n nn条记录的数据源中提取数据。如果提取操作是简单的顺序读取,那么时间复杂度为O ( n ) O(n)O(n),即处理时间与数据量成正比。例如,从一个文本文件中逐行读取数据,每行读取的时间是固定的,那么读取n nn行数据的总时间就是O ( n ) O(n)O(n)

数据转换复杂度

数据转换操作的复杂度取决于具体的操作类型。例如,如果是简单的字段映射,即将一个字段的值复制到另一个字段,那么时间复杂度仍然是O ( n ) O(n)O(n)。但如果是复杂的聚合操作,如计算分组总和,假设分组数为m mm,那么时间复杂度可能为O ( n + m ) O(n + m)O(n+m)

数据加载复杂度

数据加载的复杂度也与数据量有关。如果是顺序写入目标系统,时间复杂度通常为O ( n ) O(n)O(n)。例如,将处理好的数据逐行写入一个新的文件,每行写入的时间是固定的,那么写入n nn行数据的总时间就是O ( n ) O(n)O(n)

举例说明

假设我们有一个包含1000 10001000条记录的数据源,要进行简单的字段映射和数据复制操作。数据提取、转换和加载的时间复杂度都是O ( n ) O(n)O(n),即处理这1000 10001000条记录的总时间与记录数成正比。如果处理一条记录的平均时间是1 11毫秒,那么处理1000 10001000条记录的总时间大约是1000 10001000毫秒,即1 11秒。

项目实战:代码实际案例和详细解释说明

开发环境搭建

AWS Glue
  1. 创建AWS账户:如果还没有AWS账户,需要先创建一个。
  2. 配置AWS CLI:安装并配置AWS命令行界面(CLI),以便在本地进行AWS资源的管理。
  3. 创建S3存储桶:用于存储数据和作业脚本。
  4. 创建AWS Glue角色:为AWS Glue作业创建一个具有必要权限的角色。
Azure Data Factory
  1. 创建Azure账户:如果还没有Azure账户,需要先创建一个。
  2. 创建Azure Data Factory实例:在Azure门户中创建一个新的Azure Data Factory实例。
  3. 配置Azure Storage账户:用于存储数据和管道配置文件。

源代码详细实现和代码解读

AWS Glue

以下是一个完整的AWS Glue作业示例,用于从Amazon S3存储桶中读取CSV文件,进行简单的字段映射和过滤,然后将处理好的数据写回另一个S3存储桶:

importsysfromawsglue.transformsimport*fromawsglue.utilsimportgetResolvedOptionsfrompyspark.contextimportSparkContextfromawsglue.contextimportGlueContextfromawsglue.jobimportJob## @params: [JOB_NAME]args=getResolvedOptions(sys.argv,['JOB_NAME'])sc=SparkContext()glueContext=GlueContext(sc)spark=glueContext.spark_session job=Job(glueContext)job.init(args['JOB_NAME'],args)## Read data from S3datasource0=glueContext.create_dynamic_frame.from_options(connection_type="s3",connection_options={"path":"s3://my-source-bucket/input.csv"},format="csv")## Apply transformationstransformed_data=ApplyMapping.apply(frame=datasource0,mappings=[("column1","string","new_column1","string"),("column2","int","new_column2","int")])filtered_data=Filter.apply(frame=transformed_data,f=lambdax:x["new_column2"]>10)## Write data to S3glueContext.write_dynamic_frame.from_options(frame=filtered_data,connection_type="s3",connection_options={"path":"s3://my-target-bucket/output.csv"},format="csv")job.commit()

代码解读:

  1. 导入必要的库:导入AWS Glue和PySpark相关的库。
  2. 初始化作业:获取作业名称,初始化SparkContext、GlueContext和Job对象。
  3. 读取数据:使用create_dynamic_frame.from_options方法从S3存储桶中读取CSV文件。
  4. 数据转换:使用ApplyMapping进行字段映射,使用Filter进行数据过滤。
  5. 写入数据:使用write_dynamic_frame.from_options方法将处理好的数据写回另一个S3存储桶。
  6. 提交作业:调用job.commit()方法提交作业。
Azure Data Factory

以下是一个完整的Azure Data Factory管道示例,用于从Azure SQL数据库中复制数据到Azure Blob存储:

{"name":"CopyPipeline","properties":{"activities":[{"name":"CopyActivity","type":"Copy","inputs":[{"referenceName":"AzureSqlInputDataset","type":"DatasetReference"}],"outputs":[{"referenceName":"AzureBlobOutputDataset","type":"DatasetReference"}],"typeProperties":{"source":{"type":"AzureSqlSource","query":"SELECT * FROM my_table"},"sink":{"type":"AzureBlobSink"}}}]}}

代码解读:

  1. 定义管道名称:在name字段中定义管道的名称。
  2. 添加活动:在activities数组中添加一个数据复制活动CopyActivity
  3. 指定输入和输出数据集:在inputsoutputs字段中分别指定输入和输出数据集的引用。
  4. 配置活动属性:在typeProperties字段中配置活动的源和目标信息。在这个示例中,源是一个Azure SQL数据库,使用SQL查询语句SELECT * FROM my_table读取数据;目标是一个Azure Blob存储。

代码解读与分析

AWS Glue
  • 优点:使用Python(PySpark)编写作业脚本,对于熟悉Python和Spark的开发者来说非常容易上手。AWS Glue提供了丰富的内置转换函数和工具,如ApplyMappingFilter等,可以方便地进行数据处理。
  • 缺点:对于复杂的ETL任务,可能需要编写较多的代码,尤其是在处理大规模数据时,需要考虑性能优化。
Azure Data Factory
  • 优点:使用JSON格式定义管道和活动,配置简单,易于理解和维护。Azure Data Factory可以与其他Azure服务很好地集成,如Azure Databricks、Azure HDInsight等,提供更强大的数据处理能力。
  • 缺点:对于一些复杂的自定义数据处理逻辑,可能需要编写额外的代码或使用其他工具。

实际应用场景

AWS Glue

  • 大数据分析:AWS Glue可以与Amazon Redshift、Amazon Athena等数据分析服务集成,用于处理和分析大规模数据。例如,电商企业可以使用AWS Glue将销售数据从多个数据源提取出来,进行清洗和转换后,加载到Amazon Redshift中进行数据分析,以便了解用户行为和市场趋势。
  • 数据湖建设:AWS Glue可以自动发现和管理数据湖中的数据。企业可以将各种类型的数据(如日志文件、传感器数据等)存储在Amazon S3中,使用AWS Glue的爬虫功能自动发现数据,并将其元数据添加到数据目录中,方便后续的数据查询和分析。

Azure Data Factory

  • 企业数据集成:Azure Data Factory可以与Azure SQL数据库、Azure Cosmos DB等企业级数据库集成,用于实现企业内部不同系统之间的数据集成。例如,企业可以使用Azure Data Factory将财务系统的数据同步到人力资源系统中,以便进行统一的数据分析和管理。
  • 混合云场景:Azure Data Factory支持在本地数据中心和Azure云之间进行数据传输和集成。企业可以使用Azure Data Factory将本地数据库中的数据复制到Azure云中,进行更高级的数据分析和处理。

工具和资源推荐

AWS Glue

  • AWS Glue控制台:提供了可视化的界面,用于创建和管理数据目录、爬虫、作业和触发器。
  • AWS SDK:提供了多种编程语言的SDK,如Python、Java等,方便开发者在代码中调用AWS Glue的API。
  • AWS官方文档:详细介绍了AWS Glue的功能、使用方法和最佳实践。

Azure Data Factory

  • Azure门户:提供了可视化的界面,用于创建和管理Azure Data Factory实例、管道、活动和数据集。
  • Azure CLI:提供了命令行工具,用于在本地进行Azure Data Factory资源的管理。
  • Azure官方文档:详细介绍了Azure Data Factory的功能、使用方法和最佳实践。

未来发展趋势与挑战

未来发展趋势

  • 智能化:AWS Glue和Azure Data Factory都将朝着智能化的方向发展,例如自动识别数据模式、自动优化数据处理流程等,减少人工干预,提高数据处理效率。
  • 集成化:与更多的云服务和第三方工具进行集成,提供更全面的数据处理解决方案。例如,与机器学习平台集成,实现数据处理和机器学习模型训练的无缝衔接。
  • 无代码/低代码:提供更多的无代码/低代码工具,让非技术人员也能轻松创建和管理ETL任务。

挑战

  • 数据安全:随着数据量的不断增加和数据来源的多样化,数据安全问题变得越来越重要。AWS Glue和Azure Data Factory需要提供更强大的安全机制,保护数据的隐私和完整性。
  • 性能优化:处理大规模数据时,性能优化是一个挑战。需要不断优化算法和架构,提高数据处理的速度和效率。
  • 跨云集成:在多云环境下,实现不同云平台之间的数据集成是一个挑战。AWS Glue和Azure Data Factory需要提供更好的跨云集成能力,满足企业的多样化需求。

总结:学到了什么?

核心概念回顾

  • ETL:是数据处理的关键环节,包括提取、转换和加载三个步骤。
  • AWS Glue:是亚马逊云科技提供的无服务器ETL服务,自动发现、准备和组合数据。
  • Azure Data Factory:是微软Azure云平台提供的云原生数据集成服务,可创建数据驱动的工作流。

概念关系回顾

  • ETL是目标,AWS Glue和Azure Data Factory是实现ETL的工具。
  • AWS Glue自动化程度高,Azure Data Factory灵活性强,它们都能帮助我们完成ETL任务,但在不同场景下有不同的优势。

思考题:动动小脑筋

思考题一

在实际项目中,如何根据数据量和复杂度选择合适的ETL方案(AWS Glue或Azure Data Factory)?

思考题二

如果要实现一个实时ETL任务,AWS Glue和Azure Data Factory分别有哪些方法和工具可以使用?

附录:常见问题与解答

AWS Glue常见问题

  • :AWS Glue作业的运行时间有限制吗?
    :AWS Glue作业的最长运行时间为24小时。如果需要处理更长时间的任务,可以考虑将任务拆分成多个小任务。
  • :AWS Glue可以处理哪些类型的数据源?
    :AWS Glue可以处理多种类型的数据源,包括Amazon S3、Amazon RDS、Amazon Redshift、Apache Kafka等。

Azure Data Factory常见问题

  • :Azure Data Factory的管道可以并行运行吗?
    :可以。Azure Data Factory支持管道的并行运行,可以通过配置管道的并发设置来实现。
  • :Azure Data Factory可以与非Azure数据源集成吗?
    :可以。Azure Data Factory支持与多种非Azure数据源集成,如SQL Server、Oracle、MySQL等。

扩展阅读 & 参考资料

  • AWS Glue官方文档:https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html
  • Azure Data Factory官方文档:https://docs.microsoft.com/en-us/azure/data-factory/
  • 《大数据技术原理与应用》
  • 《云计算与大数据》

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

免费听书神器喜马拉雅v9.4.32.3精简版分享 解锁付费内容 无限畅听

平时喜欢听音频的小伙伴,应该都对喜马拉雅不陌生吧?作为国内最大的音频分享平台,上面的内容真的太丰富了,不管是通勤路上解闷的段子、睡前助眠的小说,还是学习提升的培训课程、了解时事的新闻资讯,基本上想…

牛批了,Windows搬家神器

C盘有的时候会出现空间不够的情况,大部分老机器会经常出现,解决办法是重做系统,但是这种方法非常耗时间,而且安装的各种软件需要重新装一遍,非常的麻烦。如果不想做系统的话,可以用今天给大家推荐的C盘软件…

Katalon StudioAssist:智能化测试助手

在自动化测试领域,高效地设计、生成和维护测试脚本一直是测试工程师面临的核心挑战。Katalon Studio作为一款广泛使用的集成测试平台,其内置的AI助手——StudioAssist,正致力于通过人工智能技术重塑这一工作流程。本文将系统性地介绍StudioAs…

FTP登陆工具SmartFTP Client Enterprise v10.0.3300 多语便携版下载 FTP文件传输神器

经常需要在本地电脑和远程服务器之间传输文件的小伙伴,肯定都遇到过这些糟心事:用的FTP客户端只支持单一协议,遇到SFTP、WebDAV格式的文件就束手无策;大文件传输到一半突然断网,重新传输又要从零开始,既浪费…

Katalon StudioAssist Ask模式:工作区内的AI测试助手

在自动化测试领域,高效地编写脚本、理解复杂概念或排查问题是日常工作的一部分。传统上,这需要开发者翻阅大量文档、在社区提问或反复调试。Katalon Studio 推出的 StudioAssist Ask 模式,就像一位始终在线的专家伙伴,将人工智能的…

如何打开大文件不崩溃不卡顿?EmEditor v25.4.4绿色便携版下载

经常处理大文件的小伙伴,肯定都遭遇过这样的崩溃时刻:用系统记事本打开几GB的日志文件,直接无响应卡死;换其他文本编辑器,要么加载半天打不开,要么打开后滚动卡顿、编辑延迟,甚至直接闪退丢失内…

敏捷的质量合伙人

在敏捷项目中,测试团队不是被弱化的角色,而是从 “事后验证者” 升级为 “全程质量赋能者”,核心价值是把质量内建于敏捷交付的全流程,而非仅在迭代末尾做 “验收把关”。即使是 PO 程序员就能推进的小型项目,测试的介…

php+nginx在cookie中设置了HttpOnly属性

该网站cookie没有设置HttpOnly标志。如果您在cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,是防止XSS攻击的一种安全措施。 攻击者可以通过document对象获取Cookie,进行xss等攻击。 需要在网站服务器代码上修改,设置办法举例:heade…

2026必备!本科生论文写作软件TOP9测评

2026必备!本科生论文写作软件TOP9测评 2026年本科生论文写作软件测评:为何需要一份权威榜单? 随着高校学术要求的不断提升,本科生在撰写论文过程中面临越来越多挑战,包括文献检索效率低、格式规范复杂、内容逻辑性不足…

NVIDIA Rubin平台重磅亮相CES:六芯协同重塑AI算力,2026下半年量产落地

从行业演进视角来看,CES虽仍冠以消费电子展之名,但如今已成为科技巨头发布前沿算力技术的重要阵地,其技术辐射范围早已突破消费端边界。NVIDIA作为AI算力领域的领军者,此次率先召开芯片厂商发布会,重磅推出下一代Rubin…

人工智能之核心基础 机器学习 第八章 无监督学习概述

人工智能之核心基础 机器学习 第八章 无监督学习概述 文章目录人工智能之核心基础 机器学习8.1 什么是无监督学习?📌 定义:从“没有答案”的数据中找规律8.2 无监督学习的三大核心任务1️⃣ 聚类(Clustering)——“物…

有哪些好的服务器托管服务商推荐?—— 以尚航科技为核心的专业测评​

在数字化转型加速的背景下,服务器托管服务的选择直接关系到企业业务的稳定性、数据安全与长期运营成本。本文将以国内知名服务商尚航科技为主要案例,结合行业标准与公开数据,从基础设施、网络能力、安全合规、运维服务等维度进行客观测评&…

黑马反弹抄底之短炒选股指标公式

{}N:7; M:3; VAR1:(CLOSE-LLV(LOW,60))/(HHV(HIGH,60)-LLV(LOW,60))*80; B:SMA(VAR1,N,1); VAR2:SMA(B,M,1); 短炒:crOSS(B,VAR2) AND B<65 AND CLOSE>OPEN AND (C/REF(C,1))>0.5,LINETHICK1,COLORGREEN;

全新网址二维码与Ai文字转语音技术,助力电子画册轻松生成

全新网址二维码和Ai文字转语音技术的结合&#xff0c;让电子画册的生成变得更简便。这些技术使用户能轻松创建独特的二维码&#xff0c;集成网址、文档和多媒体内容。使用这些二维码&#xff0c;观众能够直接访问丰富的信息&#xff0c;提升互动体验。另外&#xff0c;Ai文字转…

基于SpringBoot的宠物店管理系统(源码+lw+部署文档+讲解等)

课题介绍 本课题聚焦宠物店日常运营规范化管理与服务效率提升的核心需求&#xff0c;设计并实现基于SpringBoot框架的宠物店管理系统。当前宠物店运营领域存在宠物信息记录零散、商品库存管控混乱、服务预约流程繁琐、客户档案管理滞后等问题&#xff0c;制约了宠物店的运营效率…

基于SpringBoot的传统手工艺文化展示平台的设计与实现(源码+lw+部署文档+讲解等)

课题介绍本课题聚焦传统手工艺文化传承与传播的核心需求&#xff0c;开展基于SpringBoot的传统手工艺文化展示平台的设计与实现工作。当前传统手工艺文化传播领域普遍存在文化资源分散碎片化、展示渠道单一有限、手工艺人作品推广受阻、年轻群体了解途径匮乏等问题&#xff0c;…

中小企业服务器托管哪家好?尚航科技综合实力解析

数字化浪潮下&#xff0c;选择一家靠谱的服务器托管商&#xff0c;对中小企业来说至关重要。对于中小企业而言&#xff0c;服务器托管不仅是将服务器放在机房那么简单&#xff0c;它关系到业务连续性、数据安全性和长期成本控制。一个好的IDC服务商能够为企业提供稳定可靠的数字…

主力上班之选股指标公式

{}ZTJ:ZTPRICE(REF(CLOSE,1),0.1); DTJ:DTPRICE(REF(CLOSE,1),0.1); 阳线:C>O; 上影线:(H-MAX(C,O))/REF(C,1); k线实体:Abs(C-O)/REF(C,1); 涨停:C/REF(C,1)>1.098&&HC; 昨日涨停:REF(C,1)REF(ZTJ,1); 两连板:EVERY(涨停,2); 五连板:EVERY(涨停,5); 昨日非涨停:…

如何快速生成说明书二维码和音频二维码?

在现代使用中&#xff0c;二维码成为共享信息的重要工具。通过二维码&#xff0c;用户可以快速访问电子说明书和音频内容&#xff0c;提高了获取信息的效率。生成二维码的过程简单&#xff0c;只需要几步。不论是将说明书转化为二维码还是处理音频文件&#xff0c;首先需选定一…

必看!2026年企业宣传二维码推荐,解锁协同操作与录音转二维码的全新体验

在2026年&#xff0c;企业宣传二维码正迎来新的机遇。协同操作二维码能够提高信息共享的效率&#xff0c;团队成员通过扫描二维码可以快速获取项目更新。这种便捷的方式&#xff0c;帮助企业保持沟通畅通&#xff0c;提升整体运营效率。同时&#xff0c;录音转二维码的应用为企…