告别数据泥潭:PySpark性能调优的黄金法则

阿佑今天给大家带来个一张藏宝图——使用PySpark进行性能调优的黄金法则,从内存管理到执行计划,再到并行度设置,每一步都是提升数据处理速度的关键!

文章目录

  • Python Spark 详解
    • 1. 引言
    • 2. 背景介绍
      • 2.1 大数据处理技术演变
      • 2.2 Apache Spark简介
      • 2.3 PySpark概述
    • 3. PySpark基础
      • 3.1 安装与环境配置
      • 3.2 SparkContext与SparkSession
      • 3.3 RDD操作
    • 4. PySpark高级功能
      • 4.1 DataFrame与SQL查询
      • 4.2 数据处理与分析
      • 4.3 机器学习库MLlib
      • 4.4 流处理:Structured Streaming
    • 5. PySpark性能优化与调优
      • 5.1 内存管理与调优
      • 5.2 执行计划与资源分配
      • 5.3 并行度与任务调度
    • 6. PySpark在实际项目中的应用案例
      • 6.1 大规模数据处理案例
      • 6.2 实时数据分析
      • 6.3 机器学习应用
    • 7. 结论
      • 回顾PySpark的核心价值与应用范围
      • 展望PySpark在大数据与AI领域的前景
    • 参考文献
      • 官方文档链接
      • 关键书籍推荐
      • 相关研究论文与博客文章
      • 在线课程与教程

Python Spark 详解

1. 引言

在当今这个信息爆炸的时代,我们每天都在产生海量的数据。想象一下,当你走进超市,拿起一瓶饮料,这个简单的动作可能就被摄像头捕捉下来,成为数据的一部分。再比如,当你在网上浏览新闻,点击广告,你的浏览习惯和偏好也在无声无息中被记录。这些数据,如果能够被有效地收集和分析,就能为我们的生活和工作带来巨大的价值。

但是,大数据处理并不是一件容易的事。数据量巨大,类型多样,处理速度要求高,这些都是挑战。就像是一位厨师面对着堆积如山的食材,想要做出一桌色香味俱全的佳肴,没有一把好刀和一套精湛的厨艺是不行的。

这时候,Apache Spark 出现了,它就像是一位技艺高超的厨师,能够快速、高效地处理这些数据。而PySpark,作为Spark的Python接口,更是让这把“刀”更加锋利,让数据的处理变得更加简单和直观。

接下来,让我们一起走进这个大数据的世界,探索PySpark的奥秘吧!

2. 背景介绍

2.1 大数据处理技术演变

在大数据的江湖里,曾经有一位霸主,名叫Hadoop。它以其强大的分布式文件系统HDFS和MapReduce编程模型,一度成为大数据处理的代名词。但随着时间的推移,人们发现MapReduce虽然在批处理大数据方面表现出色,但在面对需要实时处理和更复杂计算的场景时,就显得有些力不从心了。

这时,Apache Spark横空出世,它以其创新的内存计算能力和灵活的数据处理能力,迅速赢得了人们的青睐。Spark不仅能够处理大规模的批处理任务,还能够轻松应对实时数据流的处理,以及复杂的数据聚合和交互式查询。这就像是从一把沉重的斧头进化到了一把多功能的瑞士军刀,让数据处理变得更加得心应手。

2.2 Apache Spark简介

Apache Spark的核心概念是围绕着三个核心抽象构建的:RDD(弹性分布式数据集)、DataFrame和Dataset。

  • RDD:它是Spark的基本抽象,代表了一个不可变、分布式的数据集合,可以通过一系列的并行操作进行转换和行动。
  • DataFrame:是建立在RDD之上的一个更高级的抽象,提供了结构化的数据操作,类似于SQL表。它使得对结构化数据的处理变得更加简单。
  • Dataset:是DataFrame的进化版,它结合了RDD的强类型和DataFrame的结构化,提供了更优化的性能和更强大的类型安全。

2.3 PySpark概述

而当我们谈论PySpark时,我们实际上是在谈论如何将Python语言的强大功能与Spark的数据处理能力结合起来。Python以其简洁的语法和丰富的库,已经成为数据科学家和开发者的首选语言。PySpark的出现,让这些用户能够无缝地使用他们熟悉的Python语言,来操作和分析大规模的数据集。

通过PySpark,我们可以使用Python的简洁语法来创建RDD、DataFrame和Dataset,执行复杂的数据转换和分析任务,而无需深入了解底层的分布式计算细节。这就像是给瑞士军刀装上了一个智能芯片,让它不仅功能强大,而且更加易于使用。


在这一章节中,我们简要介绍了大数据处理技术的演变,Apache Spark的核心概念,以及PySpark如何将Python的便捷性与Spark的强大数据处理能力结合起来。接下来,我们将深入探讨PySpark的基础知识,包括安装、环境配置以及如何使用SparkContext与SparkSession

在这里插入图片描述

3. PySpark基础

3.1 安装与环境配置

想象一下,你刚买了一套全新的厨具,准备在厨房大展身手。但在开始烹饪前,你需要先安装好这些工具,调整好火候,这正是我们使用PySpark前需要做的准备工作。

安装PySpark就像是安装新软件一样简单。如果你使用的是Anaconda,PySpark通常已经包含在内。否则,你可以通过pip安装:

pip install pyspark

安装完成后,配置环境变量使得你可以在命令行中直接使用PySpark。这就像是调整好你的炉火,让它达到最佳烹饪温度。

3.2 SparkContext与SparkSession

现在,你的厨房已经准备就绪,是时候开始烹饪了。在PySpark中,SparkContextSparkSession就像是你的主要烹饪工具。

SparkContext是与Spark集群交互的接口,而SparkSession则是一个更高级别的API,它提供了简化的DataFrame和SQL操作。创建它们的过程就像是点燃炉火,准备开始烹饪:

from pyspark.sql import SparkSession# 创建SparkSession
spark = SparkSession.builder \.appName("SparkExample") \.getOrCreate()# 创建SparkContext
sc = spark.sparkContext

3.3 RDD操作

终于,我们来到了食材处理的环节。在PySpark中,RDD(弹性分布式数据集)就像是你的基本食材,它可以是任何可以并行计算的数据集合。

创建RDD就像是挑选食材,你可以选择本地的文件,或者是远在HDFS上的大数据集:

# 创建一个RDD
rdd = sc.textFile("path_to_your_data.txt")

转换操作就像是食材的预处理,比如切片、切块:

# 转换操作:将每一行数据拆分为单词
words = rdd.flatMap(lambda line: line.split(" "))

行动操作就像是开始烹饪,把处理好的食材变成最终的菜肴。比如,计算单词的总数:

# 行动操作:计算单词总数
word_count = words.count()
print("Total words: ", word_count)

通过这些基础操作,咱们已经可以开始在PySpark的厨房里烹饪出美味的数据大餐了。接下来,我们将深入探索PySpark的高级功能,让你的数据处理技艺更上一层楼。如果你准备好了,就让我们一起继续这场数据烹饪之旅吧!


4. PySpark高级功能

4.1 DataFrame与SQL查询

在PySpark的世界里,DataFrame就像是一个多才多艺的艺术家,它能够从各种不同的舞台上汲取灵感,创造出美妙的数据乐章。无论是结构化的数据库,还是半结构化的JSON文件,亦或是无结构的文本数据,DataFrame都能将它们转化为统一的格式,让数据的查询和处理变得轻松而优雅。

想象一下,你是一位厨师,面前有各种各样的食材:新鲜的蔬菜、冷冻的肉类、干货的香料。DataFrame就像你的万能料理机,不管这些食材原本是什么形态,都能帮你把它们变成你需要的样子,然后进行烹饪。

from pyspark.sql import SparkSession# 创建SparkSession
spark = SparkSession.builder.appName("DataFrameExample").getOrCreate()# 从CSV文件创建DataFrame
df = spark.read.csv("path_to_your_data.csv", header=True, inferSchema=True)# 使用SQL查询DataFrame
df.createOrReplaceTempView("people")  # 创建临时视图
teenagers = spark.sql("SELECT name, age FROM people WHERE age >= 13 AND age <= 19")# 展示结果
teenagers.show()

4.2 数据处理与分析

数据处理就像是烹饪过程中的调味,需要恰到好处才能让菜肴的味道达到最佳。在PySpark中,GroupBy操作就像是你的香料,能够将数据按照不同的维度进行分组,然后进行聚合操作,就像是将食材按照不同的口味进行搭配。

而Window函数则像是你的高级烹饪技巧,它能够对数据进行更加复杂的分析,比如计算移动平均值,或者是根据时间序列进行数据分析。这就像是在烹饪中加入了分子料理的元素,让数据的分析变得更加精细和创新。

from pyspark.sql import functions as F# 对DataFrame进行分组和聚合
grouped_data = df.groupBy("category").agg(F.sum("amount").alias("total_amount"))# 使用Window函数进行复杂数据分析
from pyspark.sql.window import Windowwindow_spec = Window.partitionBy("category").orderBy("date")
ranked_data = df.withColumn("rank", F.rank().over(window_spec))# 展示排名结果
ranked_data.show()

4.3 机器学习库MLlib

在PySpark的厨房里,MLlib就像是一瓶珍贵的老酒,它能够为数据的风味增添一抹独特的香气。MLlib是Spark的机器学习库,它提供了一系列的算法和工具,让你能够轻松地构建和训练机器学习模型。

无论是简单的线性回归,还是复杂的决策树,MLlib都能够帮你实现。而且,它还提供了数据预处理和模型评估的工具,让你能够更好地调整和优化你的模型。

from pyspark.ml.regression import LinearRegression
from pyspark.ml.feature import VectorAssembler# 数据预处理
assembler = VectorAssembler(inputCols=["feature1", "feature2"], outputCol="features")
data = assembler.transform(df)# 构建线性回归模型
lr = LinearRegression(featuresCol="features", labelCol="label")# 训练模型
model = lr.fit(data)# 模型评估
evaluator = RegressionEvaluator(labelCol="label", predictionCol="prediction", metricName="rmse")
rmse = evaluator.evaluate(model.transform(data))print("Root Mean Squared Error (RMSE) on training data = %g" % rmse)

4.4 流处理:Structured Streaming

流处理就像是烹饪中的即兴表演,它需要你对食材的新鲜度和火候有极高的掌控力。在PySpark中,Structured Streaming就是这样一种即兴表演的艺术,它能够让你实时地处理数据流,就像是在烹饪中对食材进行即时处理。

通过Structured Streaming,你可以创建实时数据处理的应用程序,对数据进行实时的转换和分析。而且,它还提供了输出和故障恢复机制,确保你的数据处理既高效又可靠。

from pyspark.sql import functions as F# 创建流式DataFrame
streaming_df = spark.readStream.schema(df.schema).csv("path_to_streaming_data")# 进行实时转换
enriched_stream = streaming_df.selectExpr("CAST(timestamp AS TIMESTAMP)", "value")# 启动流处理
query = enriched_stream.writeStream.outputMode("append").csv("path_to_output_stream")# 开始执行流处理
query.start().awaitTermination()

在这一章节中,咱们一块探索了PySpark的高级功能,包括DataFrame与SQL查询、数据处理与分析、机器学习库MLlib以及流处理Structured Streaming。通过这些功能,PySpark不仅能够处理大规模的批处理任务,还能够轻松应对实时数据流的处理,以及复杂的数据聚合和交互式查询。接下来,我们将通过一些实际项目中的应用案例,进一步展示PySpark的强大能力~

在这里插入图片描述

在这里插入图片描述

5. PySpark性能优化与调优

5.1 内存管理与调优

在PySpark的世界里,内存就像是我们的厨房空间,如果管理得当,就能让数据处理的“烹饪”过程更加流畅。想象一下,如果你的厨房堆满了杂物,连转身的空间都没有,那还怎么做菜呢?同样,在处理大量数据时,如果内存管理不当,就会导致频繁的垃圾回收,甚至内存溢出。

RDD的持久化策略就像是我们对厨房空间的合理规划。通过将中间结果持久化到内存或磁盘,我们可以避免重复计算,节省时间和资源。就像是把常用的调料放在容易拿到的地方,需要时可以快速取用。

from pyspark import SparkConfconf = SparkConf().setAppName("MemoryTuning")
conf = conf.set("spark.memory.fraction", "0.8")  # 设置内存使用比例
conf = conf.set("spark.memory.storageFraction", "0.1")  # 设置内存用于存储的比例# 创建SparkContext
sc = SparkContext(conf=conf)

Shuffle操作在Spark中是不可避免的,它就像是在厨房里准备食材时的“大混战”。但是,如果Shuffle操作不当,就会造成资源浪费和性能下降。优化Shuffle,比如通过合理设置数据分区,可以提高数据处理的效率。

# 通过repartition方法重新分区
rdd = sc.parallelize(range(1, 100), 10)  # 初始分区数为10
rdd = rdd.repartition(20)  # 增加分区数以优化Shuffle

5.2 执行计划与资源分配

Spark UI就像是我们的厨房监控器,它能够实时地展示出当前的数据处理状态,让我们对整个“烹饪”过程了如指掌。通过Spark UI,我们可以分析执行计划,找出性能瓶颈。

资源配置和动态分配就像是对厨房设备的合理分配。通过合理配置Executor的数量、内存大小以及核心数,我们可以确保数据处理既不会因为资源不足而受限,也不会因为资源浪费而造成不必要的开销。

# 设置资源配置
conf = conf.setExecutorMemory("4g")  # 设置Executor内存为4GB
conf = conf.set("spark.executor.cores", "2")  # 设置每个Executor使用2个核心

5.3 并行度与任务调度

并行度的设置就像是我们决定一次炒几个菜。如果并行度太高,就像是一次炒太多菜,可能会导致手忙脚乱,而且有些菜可能会因为火候掌握不当而炒糊。反之,如果并行度太低,就像是一次只炒一个菜,效率就会很低。

任务调度策略就像是我们的炒菜顺序。通过优化任务调度,比如使用延迟调度或优先级调度,我们可以确保关键任务优先执行,从而提高整体的数据处理效率。

# 设置并行度
rdd = sc.parallelize(range(1, 100), 10)  # 设置并行度为10# 使用任务调度策略
conf = conf.set("spark.locality.wait", "3s")  # 设置本地数据本地处理的等待时间

小结: 我们探讨了PySpark性能优化与调优的三个关键方面:内存管理与调优、执行计划与资源分配、并行度与任务调度。通过这些调优技巧,我们可以确保PySpark在处理大规模数据时既高效又稳定!

6. PySpark在实际项目中的应用案例

6.1 大规模数据处理案例

想象一下,你是一家大型电商公司的数据分析员,面对着海量的交易数据,你的任务是要从这些数据中提取有价值的信息,比如识别出最受欢迎的商品、预测未来的销售趋势等。这就像是要在一座巨大的矿山中挖掘出闪闪发光的金子。

使用PySpark,你可以轻松地对这些大规模数据进行ETL(提取、转换、加载)操作。比如,你可以使用Spark SQL来清洗数据,使用DataFrame API来转换数据,最后将处理后的数据加载到数据仓库中。

from pyspark.sql import SparkSession
from pyspark.sql.functions import col# 创建SparkSession
spark = SparkSession.builder.appName("DataETL").getOrCreate()# 读取原始交易数据
df = spark.read.csv("path_to_transaction_data.csv", header=True, inferSchema=True)# 数据清洗:去除空值和异常值
cleaned_df = df.na.drop().filter(col("amount") > 0)# 数据转换:计算每个商品的总销售额
sales_df = cleaned_df.groupBy("product_id").agg({"amount": "sum"}).rename(columns={"sum(amount)": "total_sales"})# 将处理后的数据写入数据仓库
sales_df.write.mode("overwrite").parquet("path_to_data_warehouse")

6.2 实时数据分析

现在,让我们把场景切换到一个实时监控系统。假设你负责监控一个大型网站的访问情况,需要实时地分析访问日志,以便于及时发现并处理异常流量。

使用PySpark的Structured Streaming,你可以构建一个实时数据处理的管道,对访问日志进行实时的聚合和分析。

from pyspark.sql import functions as F# 创建流式DataFrame,读取Kafka中的数据
streaming_df = spark.readStream.schema(df.schema).kafka("topic_name")# 实时聚合:计算每分钟的访问次数
minutely_counts = streaming_df.groupBy(F.window("timestamp", "1 minute"), "page_id").agg({"visits": "count"})# 将结果输出到控制台,也可以输出到其他系统
query = minutely_counts.writeStream.outputMode("complete").format("console").start()query.awaitTermination()

6.3 机器学习应用

最后,让我们看看如何使用PySpark的MLlib库来构建一个推荐系统。推荐系统在电商、视频平台、新闻网站等领域都有着广泛的应用。通过分析用户的浏览和购买历史,推荐系统可以向用户推荐他们可能感兴趣的商品或内容。

from pyspark.ml.recommendation import ALS
from pyspark.sql import Row# 准备数据:用户-商品评分矩阵
ratings = [(1, 1, 5.0), (2, 2, 3.0), (1, 2, 3.0)]
ratings_rdd = sc.parallelize(ratings)
ratings_df = ratings_rdd.map(lambda x: Row(userId=x[0], productId=x[1], rating=x[2])).toDF()# 构建ALS模型
als = ALS(maxIter=5, regParam=0.01, userCol="userId", itemCol="productId", ratingCol="rating", coldStartStrategy="drop")# 训练模型
model = als.fit(ratings_df)# 为用户推荐商品
user_recs = model.recommendForAllUsers(5)
product_recs = model.recommendForAllItems(5)# 展示推荐结果
user_recs.show()
product_recs.show()

在这一章节中,我们通过三个实际的应用案例,展示了PySpark在大规模数据处理、实时数据分析和机器学习应用中的强大能力。从数据的ETL操作,到实时的数据处理和分析,再到构建推荐系统,PySpark都能提供简单、高效、灵活的解决方案。这些案例只是PySpark应用的冰山一角,实际上,PySpark的应用范围远不止这些。如果您对PySpark的其他应用感兴趣,或者有任何问题,请随时告知。
在这里插入图片描述

7. 结论

随着我们对PySpark的探索之旅即将画上句号,就像一部精彩的剧集迎来大结局,我们不禁要回顾一下,PySpark这位主角给我们带来了哪些精彩的表现和深刻的启示。

回顾PySpark的核心价值与应用范围

PySpark不仅仅是一个数据分析的工具,它更像是一位多才多艺的艺术家,能够在大数据的舞台上,演奏出各种动听的乐章。从大规模数据的批处理到实时数据的流处理,从简单的数据转换到复杂的机器学习模型,PySpark都能游刃有余。

它的核心价值在于:

  • 易用性:Python语言的简洁和强大,让PySpark易于上手,同时保持了高效的数据处理能力。
  • 灵活性:支持多种数据操作和分析方式,无论是批处理还是流处理,都能灵活应对。
  • 高效性:内存计算和优化的执行引擎,让PySpark在处理大规模数据时表现出色。
  • 扩展性:丰富的库支持,如SQL、MLlib和Structured Streaming,让PySpark能够轻松扩展到不同的应用场景。

展望PySpark在大数据与AI领域的前景

展望未来,PySpark在大数据和人工智能领域的应用前景非常广阔。随着数据量的不断增长和计算能力的提升,PySpark将在以下几个方面发挥更大的作用:

  1. 实时数据处理:随着物联网(IoT)设备的普及,实时数据流的处理需求将持续增长,PySpark的Structured Streaming将在这一领域扮演重要角色。
  2. 机器学习与深度学习:PySpark与机器学习库MLlib的结合,以及与深度学习框架的集成,将使得构建和部署机器学习模型变得更加容易。
  3. 跨平台与云服务:PySpark的跨平台特性和对云服务的支持,将使其在多云和混合云环境中发挥更大的作用。
  4. 数据科学教育:由于Python语言在教育领域的普及,PySpark也将成为数据科学教育的重要工具。

随着技术的不断进步,PySpark也将继续进化,带来更多令人激动的新特性和优化。


最后,咱们不仅总结了PySpark的核心价值和应用范围,还展望了它在大数据与AI领域的未来。PySpark的故事还在继续,而每一位使用PySpark的开发者、数据科学家和分析师,都将成为这个故事的续写者!如果你对PySpark有更多想要探索的地方,或者希望在实际项目中应用PySpark,那么现在就是你拿起这把“瑞士军刀”,开始你的大数据之旅的最佳时机。

如果你对PySpark有任何疑问,或者想要了解更多关于大数据和机器学习的有趣话题,请随时评论区与阿佑交流。阿佑期待着与你一起,探索数据的无限可能!!!

参考文献

官方文档链接

  1. Apache Spark 官方文档
    https://spark.apache.org/docs/latest/
    Apache Spark的官方文档是学习PySpark的基础,提供了从安装到高级使用的全面指南。

  2. PySpark 官方Python文档
    https://spark.apache.org/docs/latest/api/python/index.html
    这里是PySpark的Python API文档,详细描述了各个模块和函数的使用方法。

关键书籍推荐

  1. 《Python for Data Analysis》
    作者: Wes McKinney
    出版社: O’Reilly Media
    这本书虽然不是专门针对PySpark的,但它介绍了使用Python进行数据分析的基础知识,对理解PySpark的数据操作非常有帮助。

  2. 《Learning Spark》
    作者: Holden Karau, Andy Konwinski, Patrick Wendell, Ryan Cox
    出版社: O’Reilly Media
    这本书提供了对Apache Spark的全面介绍,包括PySpark的使用,适合初学者和有经验的开发者。

  3. 《Advanced Analytics with Spark》
    作者: Joseph Bradley, Martin Anderson, Ted Dunning, Ellen Friedman
    出版社: O’Reilly Media
    针对已经具备一定Spark知识的读者,深入探讨了使用Spark进行高级分析的技术和案例。

相关研究论文与博客文章

  1. “A Survey of Machine Learning for Big Data Processing Platforms”
    作者: Muhammad Intizar Ali, Muhammad Usama, Muhammad Imran
    发表在《IEEE Access》上,这篇论文提供了对大数据平台机器学习技术的综述,包括对Spark MLlib的讨论。

  2. “Efficient Data Processing on Hadoop and Spark”
    作者: Holden Karau
    这篇博客文章由Databricks的联合创始人撰写,讨论了在Hadoop和Spark上进行高效数据处理的技巧。

  3. “Real-time Analytics with Apache Spark”
    作者: Sandy Ryza, Uri Laserson, Sean Owen, Josh Wills
    这篇博客文章详细介绍了使用Spark进行实时数据分析的方法,适合想要探索Structured Streaming的读者。

在线课程与教程

  1. Databricks 的 Apache Spark 教程
    https://docs.databricks.com/
    Databricks提供了丰富的Apache Spark教程,涵盖了从基础到高级的多个方面。

  2. Coursera 上的 “Scala and Spark for Big Data”
    https://www.coursera.org/specializations/scala-spark-big-data
    由加州大学伯克利分校提供的课程,虽然侧重于Scala,但对理解Spark的内部原理非常有帮助。

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

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

相关文章

2024最新商业视频打赏系统源码 多套模板 有代理后台 已对接支付

简介&#xff1a; 2024最新商业视频打赏系统源码 多套模板 有代理后台 已对接支付 图片&#xff1a; 源码下载

自存 js course 工厂函数

如图 就是 像工厂一样 生产对象 对象里的函数可以写成简下

Oracle11g账户频繁被锁定的3种解决办法

方法1&#xff1a;创建触发器 方法1&#xff1a;数据库中创建触发器(只记录失败)&#xff0c;但是需要开发同意或者开发自己创建。找到密码输入错误的服务器&#xff0c;进行数据源配置的更改。 该方法适用于要求找到密码错误用户所在服务器的场景下。 CREATE OR REPLACE TR…

【一键录音,轻松转换:用Python打造个性化音频记录工具】

在数字化时代,音频记录已成为日常学习、工作和娱乐不可或缺的一部分。想象一下,只需简单按下几个键,即可随时随地捕捉灵感,记录会议要点,或是珍藏孩子的童言稚语。本文将引领您步入Python编程的奇妙世界,展示如何借助几个强大的库,构建一个既简单又实用的音频录制及转换…

STM32快速入门(总线协议之I2C一主多从(软件实现 硬件实现))

STM32快速入门&#xff08;总线协议之I2C一主多从&#xff08;软件实现 & 硬件实现&#xff09;&#xff09; 前言 支持一对多&#xff08;一主多从&#xff09;、多对多传输&#xff08;多主多从&#xff09;&#xff0c;只支持半双工&#xff0c;一般有两根数据线&…

Android性能:高版本Android关闭硬件加速GPU渲染滑动卡顿掉帧

Android性能&#xff1a;高版本Android关闭硬件加速GPU渲染滑动卡顿掉帧 如果在Androidmanifest.xml配置&#xff1a; <application android:hardwareAccelerated"false" > 或者某个特点View使用代码&#xff1a; myView.setLayerType(View.LAYER_TYPE_SOFT…

合并连个有序链表(递归)

21. 合并两个有序链表 - 力扣&#xff08;LeetCode&#xff09; 2.讲解算法原理 2.1重复子问题 2.2只关心其中的一个子问题是如何解决的 2.3细节&#xff0c;递归出口 3.小总结 &#xff08;循环&#xff08;迭代&#xff09;VS 递归&#xff09;&#xff08;递归VS深搜&…

从零开始的软件测试学习之旅(九)jmeter直连数据库及jmeter断言,关联

jmeter直连数据库及断言,关联 jmeter直连数据库步骤jmeter断言jmeter逻辑控制器if控制器ForEach控制器循环控制器 Jmeter关联Jmeter关联XPath提取器Jmeter关联正则表达式提取器二者比较跨线程组关联 每日复习 jmeter直连数据库 概念 这不叫直连:Jmeter -> java/python 提供的…

一套MySQL读写分离分库分表的架构,被秀到了!

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验&#xff0c; Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、My…

数据增强,迁移学习,Resnet分类实战

目录 1. 数据增强&#xff08;Data Augmentation&#xff09; 2. 迁移学习 3. 模型保存 4. 102种类花分类实战 1. 数据集 2.导入包 3. 数据读取与预处理操作 4. Datasets制作输入数据 5.将标签的名字读出 6.展示原始数据 7.加载models中提供的模型 8.初始化…

Android Studio在android Emulator中运行的项目黑屏

前言&#xff1a; 最近在做一个Android相关的小项目&#xff0c;因为之前这方面的项目做的比较的少。今天在使用虚拟机调试的时候经常出现一些莫名其妙的问题&#xff0c;经过自己多次的尝试和搜索终于解决了这些问题。 问题&#xff1a; 每次run&#xff08;运行&#xff09…

【机器学习300问】88、什么是Batch Norm算法?

一、什么是Batch Norm&#xff1f; &#xff08;1&#xff09;Batch Norm的本质 神经网络中的Batch Normalization&#xff08;批量归一化&#xff0c;简称BatchNorm或BN&#xff09;是一种改进神经网络训练过程的规范化方法&#xff0c;BatchNorm的主要目的是加速神经网络的训…

构建教育新未来:智慧校园平台的深度解读与全景呈现

引言 在全球数字化转型的大潮中&#xff0c;智慧校园平台作为教育信息化的重要载体&#xff0c;正以前所未有的姿态颠覆传统的教育模式&#xff0c;引领教育行业步入一个崭新的时代。这个融合了大数据、人工智能、云计算、物联网等一系列前沿科技的平台&#xff0c;以其强大的功…

mybatis-plus使用指南(1)

快速开始 首先 我们 在创建了一个基本的springboot的基础框架以后&#xff0c;在 pom文件中 引入 mybatisplus的相关依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5…

PyTorch的卷积和池化

卷积计算 input 表示输入的图像filter 表示卷积核, 也叫做滤波器input 经过 filter 的得到输出为最右侧的图像&#xff0c;该图叫做特征图 卷积的计算是将卷积核放入左上角&#xff0c;在局部区域间做点积&#xff0c;然后将卷积核在Input上面依次从左向右&#xff0c;从上到下…

免费证件照一键换底色

最近星期天在家搞了一个小工具&#xff0c;在这里分享下! 废话不多说看看效果&#xff1a; 效果还不错&#xff0c;需要的可以联系我!!!!!!!!! 别的网上可都是一次五块钱这种。太贵了。。&#xff01;&#xff01;

【Dash】开始学习dash

安装Dash 网上很多安装dash的教程&#xff0c;不再赘述 开始Dash 一个dash页面的基本写法 # dash 的基本写法 import dash from dash import html,dcc,callback,Input,Output# 创建一个 dash 应用 app dash.Dash()# 定义布局&#xff0c;定义一个输入框和一个输出框 app.l…

VS项目Debug下生成的EXE在生产机器上运行

使用Visual Studio开发应用程序时&#xff0c;为了临时在非开发机上看一下效果&#xff0c;就直接把Debug下的文件全部拷贝到该机器上&#xff0c;直接双击exe运行。双击之后&#xff0c;没有直接打开应用程序&#xff0c;而是弹出了一个Error弹框。  赶快在网上搜了一遍&…

MFC窗口更新与重绘

窗口更新与重绘 窗口或控件更新其外观的情况通常包括以下几种&#xff1a; 窗口大小变化&#xff1a; 当用户调整窗口大小时&#xff0c;窗口的客户区大小会改变&#xff0c;需要重新绘制窗口内容以适应新的大小。 窗口重叠或暴露&#xff1a; 当窗口被其他窗口遮挡部分或完…

「 安全设计 」68家国内外科技巨头和安全巨头参与了CISA发起的安全设计承诺,包含MFA、默认密码、CVE、VDP等七大承诺目标

美国网络安全和基础设施安全局&#xff08;CISA&#xff0c;CyberSecurity & Infrastructure Security Agency&#xff09;于2024年5月开始呼吁企业是时候将网络安全融入到技术产品的设计和制造中了&#xff0c;并发起了安全设计承诺行动&#xff0c;该承诺旨在补充和建立现…