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

SparkSQL数据源与数据存储

文章目录

  • 1. 大数据分析流程
  • 2. Spark SQL数据源
    • 2.1 SparkSQL常见数据源
    • 2.2 SparkSQL支持的文本格式
    • 2.3 加载外部数据源步骤
  • 3. 本地文件系统加载数据
    • 3.1 本地文件系统加载JSON格式数据
      • 3.1.1 概述
      • 3.1.2 案例演示
    • 3.2 本地文件系统加载CSV格式数据
      • 3.2.1 概述
      • 3.2.2 案例演示
    • 3.3 本地文件系统加载TEXT格式数据
      • 3.3.1 概述
      • 3.3.2 案例演示
    • 3.4 本地文件系统加载Parquet格式数据
      • 3.4.1 概述
      • 3.4.2 案例演示
    • 3.5 通用加载文件方式加载各种格式数据
      • 3.5.1 概述
      • 3.5.2 案例演示
  • 4. 大数据存储概述
    • 4.1 数据存储的重要性
    • 4.2 常见的数据持久化外部系统
    • 4.3 大数据计算框架的基石
  • 5. 数据存储核心API使用
    • 5.1 持久化数据到外部文件系统步骤
    • 5.2 将数据帧保存到本地文件
    • 5.3 将数据帧保存到HDFS文件
  • 6. 数据源与数据存储小结

1. 大数据分析流程

  • 在互联网产业中大数据生态体系的主要作用就是存储、处理海量数据为企业创造价值、推动社会进步,数据分析流程存在三个主要流程:
    • 计算系统可以加载外部数据源
    • 资源系统可以为计算系统分配运行资源
    • 计算系统数据分析最终结果可以持久化到外部系统
      在这里插入图片描述
  • 通过图片可以得知存储系统才是大数据计算体系中的基石,学习一个计算框架应该先从如何使用当前计算框架加载外部数据源开始。

2. Spark SQL数据源

  • Spark SQL 是 Apache Spark 的模块之一,提供对结构化数据的查询能力。它支持多种数据源,包括 HDFS、S3、Hive、Parquet、JSON 等,允许用户通过 SQL 语句或 DataFrame API 访问和处理数据。Spark SQL 的优化器可以自动优化查询计划,提高执行效率。此外,它还支持外部数据源的集成,使得在不同存储系统间进行数据交换和分析变得简单快捷。

2.1 SparkSQL常见数据源

  • Hive 数据仓库
  • MySQL 关系型数据库
  • FileSystem 文件系统:本地文件系统、分布式文件系统
  • 由 RDD 生成 SparkSQL 数据源

2.2 SparkSQL支持的文本格式

数据格式描述
csvCSV(字段与字段之间的分隔符为逗号)
jsonJSON(是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。
简洁和清晰的层次结构、易于人阅读和编写,同时也易于机器解析和生成)
textText(文本数据,字段与字段之间的分隔符没有限制)
parquetParquet(Parquet是一种面向列存储的文件格式,主要用于Hadoop生态系统。
对数据处理框架、数据模型和编程语言无关)

2.3 加载外部数据源步骤

  • 创建 SparkSession 实例对象
  • 通过 SparkSession 实例对象提供的方法加载外部数据

3. 本地文件系统加载数据

3.1 本地文件系统加载JSON格式数据

3.1.1 概述

  • JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,也易于机器解析和生成。在本地文件系统中加载JSON格式数据时,可以使用DataFrameReaderjson()方法或通过format("json")指定格式。

3.1.2 案例演示

  • 在项目根目录创建data目录
    在这里插入图片描述
  • data里创建users.json文件
{"name": "李小玲", "gender": "女", "age": 45}
{"name": "童安格", "gender": "男", "age": 26}
{"name": "陈燕文", "gender": "女", "age": 18}
{"name": "王晓明", "gender": "男", "age": 32}
{"name": "张丽华", "gender": "女", "age": 29}
{"name": "刘伟强", "gender": "男", "age": 40}
{"name": "赵静怡", "gender": "女", "age": 22}
{"name": "孙强东", "gender": "男", "age": 35}

在这里插入图片描述

  • net.huawei.sql包里创建LoadJSON对象
    在这里插入图片描述
package net.huawei.sqlimport org.apache.spark.sql.SparkSession/*** 功能:加载JSON数据* 作者:华卫* 日期:2025年01月17日*/
object LoadJSON {def main(args: Array[String]): Unit = {// 获取或创建Spark会话对象val spark = SparkSession.builder() // 创建Builder对象.appName("LoadJSON") // 设置应用程序名称.master("local[*]") // 运行模式:本地运行.getOrCreate() // 获取或创建Spark会话对象// 使用json()方法加载本地JSON文件val df_json = spark.read.json("data/users.json")// 显示数据df_json.show()// 关闭会话对象spark.stop()}
}
  • 运行程序,查看结果
    在这里插入图片描述

3.2 本地文件系统加载CSV格式数据

3.2.1 概述

  • CSV(Comma-Separated Values)是一种常用的表格数据存储格式,数据以纯文本形式存储,字段间用逗号分隔。加载CSV格式数据时,可以使用DataFrameReadercsv()方法或通过format("csv")指定格式。

3.2.2 案例演示

  • data里创建users.csv文件
    在这里插入图片描述
name,gender,age
李小玲,女,45
童安格,男,26
陈燕文,女,18
王晓明,男,32
张丽华,女,29
刘伟强,男,40
赵静怡,女,22
孙强东,男,35
  • net.huawei.sql包里创建loadCSV对象
    在这里插入图片描述
package net.huawei.sqlimport org.apache.spark.sql.SparkSession
import org.apache.spark.sql.execution.datasources.csv.MultiLineCSVDataSource.inferSchema
import org.json4s.scalap.scalasig.ClassFileParser.header/*** 功能:加载CSV数据* 作者:华卫* 日期:2025年01月17日*/
object LoadCSV {def main(args: Array[String]): Unit = {// 获取或创建Spark会话对象val spark = SparkSession.builder() // 创建Builder对象.appName("LoadCSV") // 设置应用程序名称.master("local[*]") // 运行模式:本地运行.getOrCreate() // 获取或创建Spark会话对象// 使用csv()方法加载本地CSV文件val df_csv = spark.read.option("header", "true").option("inferSchema", "true").csv("data/users.csv")// 显示数据df_csv.show()// 关闭会话对象spark.stop()}
}
  • 运行程序,查看结果
    在这里插入图片描述

3.3 本地文件系统加载TEXT格式数据

3.3.1 概述

  • TEXT格式数据通常指纯文本文件,每行数据作为一个字符串处理。加载TEXT格式数据时,可以使用DataFrameReadertext()方法或通过format("text")指定格式。

3.3.2 案例演示

  • data里创建users.txt文件
    在这里插入图片描述
李小玲 女 45
童安格 男 26
陈燕文 女 18
王晓明 男 32
张丽华 女 29
刘伟强 男 40
赵静怡 女 22
孙强东 男 35
  • net.huawei.sql包里创建LoadText对象
    在这里插入图片描述
package net.huawei.sqlimport org.apache.spark.sql.{DataFrame, SparkSession}/*** 功能:加载TEXT数据* 作者:华卫* 日期:2025年01月17日*/
object LoadText {def main(args: Array[String]): Unit = {// 获取或创建Spark会话对象val spark = SparkSession.builder() // 创建Builder对象.appName("LoadTEXT") // 设置应用程序名称.master("local[*]") // 运行模式:本地运行.getOrCreate() // 获取或创建Spark会话对象// 使用text()方法加载本地TEXT文件val df_text = spark.read.text("data/users.txt")// 显示数据df_text.show()// 关闭会话对象spark.stop()}
}
  • 运行程序,查看结果
    在这里插入图片描述

3.4 本地文件系统加载Parquet格式数据

3.4.1 概述

  • Parquet 是一种列式存储格式,广泛用于大数据处理。相比行式存储(如 CSV),Parquet 具有高效压缩、高性能查询和广泛兼容性(支持 Spark、Hive 等)。在 Spark 中,可通过 parquet()format("parquet") 加载 Parquet 文件,适合大规模数据存储与处理。

3.4.2 案例演示

  • 将CSV格式数据转换成Parquet格式数据
  • net.huawei.sql包里创建CSVToParquet对象
    在这里插入图片描述
package net.huawei.sql/*** 功能:将CSV转成Parquet* 作者:华卫* 日期:2025年01月17日*/
import org.apache.spark.sql.SparkSessionobject CSVToParquet {def main(args: Array[String]): Unit = {// 获取或创建Spark会话对象val spark = SparkSession.builder() // 创建Builder对象.appName("CSV To Parquet") // 设置应用程序名称.master("local[*]") // 运行模式:本地运行.getOrCreate() // 获取或创建Spark会话对象// 读取CSV文件val df = spark.read.option("header", true) // 第一行作为列名.option("inferSchema", true) // 自动推断数据类型.csv("data/users.csv") // CSV文件路径// 打印Schema和数据println("===模式===")df.printSchema()println("===数据===")df.show()// 将DataFrame保存为Parquet文件df.write.parquet("data/users.parquet")println("成功生成users.parquet文件~")// 关闭Spark会话对象spark.stop()}
}
  • 运行程序,查看结果
    在这里插入图片描述
  • 查看users.parquetParquet文件是二进制格式,无法直接查看,但可以通过Spark或其他工具读取。
    在这里插入图片描述
  • net.huawei.sql包里创建LoadParequet对象
    在这里插入图片描述
package net.huawei.sqlimport org.apache.spark.sql.SparkSession/*** 功能:加载Parquet数据* 作者:华卫* 日期:2025年01月17日*/
object LoadParquet {def main(args: Array[String]): Unit = {// 获取或创建Spark会话对象val spark = SparkSession.builder() // 创建Builder对象.appName("LoadParquet") // 设置应用程序名称.master("local[*]") // 运行模式:本地运行.getOrCreate() // 获取或创建Spark会话对象// 使用parquet()方法加载本地Parquet文件val df_parquet = spark.read.parquet("data/users.parquet")// 显示数据df_parquet.show()// 显示数据结构df_parquet.printSchema()// 关闭会话对象spark.stop()}
}
  • 运行程序,查看结果
    在这里插入图片描述

3.5 通用加载文件方式加载各种格式数据

3.5.1 概述

  • 通过DataFrameReaderformat()load()方法,可以灵活地加载不同格式的数据文件。这种方式不仅适用于JSON格式,还可以用于CSV、TEXT、Parquet等其他格式。

3.5.2 案例演示

  • net.huawei.sql包里创建LoadData对象
    在这里插入图片描述
package net.huawei.sqlimport org.apache.spark.sql.SparkSession/*** 功能:加载各种格式数据* 作者:华卫* 日期:2025年01月17日*/
object LoadData {def main(args: Array[String]): Unit = {// 获取或创建Spark会话对象val spark = SparkSession.builder() // 创建Builder对象.appName("LoadData") // 设置应用程序名称.master("local[*]") // 运行模式:本地运行.getOrCreate() // 获取或创建Spark会话对象//使用format()和load()方法加载本地JSON文件val df_json = spark.read.format("json").load("data/users.json")//使用format()和load()方法加载本地CSV文件val df_csv = spark.read.format("csv").option("header", true).option("inferSchema",true).load("data/users.csv")//使用format()和load()方法加载本地TEXT文件val df_text = spark.read.format("text").load("data/users.txt")//使用format()和load()方法加载本地Parquet文件val df_parquet = spark.read.format("parquet").load("data/users.parquet")// 显示数据println("===显示加载的JSON数据===")df_json.show()println("===显示加载的CSV数据===")df_csv.show()println("===显示加载的TEXT数据===")df_text.show()println("===显示加载的Parquet数据===")df_parquet.show()// 关闭会话对象spark.stop()}
}
  • 运行程序,查看结果
    在这里插入图片描述

4. 大数据存储概述

4.1 数据存储的重要性

  • 在大数据生态系统中,存储系统是核心组成部分。无论是数据采集、数据处理,还是数据分析,都离不开高效、可靠的存储系统。存储系统不仅需要保存原始数据,还需要存储经过分析后的有价值的结果,以供各部门使用。

4.2 常见的数据持久化外部系统

  • 文件系统:包括本地文件系统和分布式文件系统(如HDFS)。文件系统适合存储大规模的非结构化或半结构化数据。
  • 关系型数据库:适用于结构化数据的存储和高效查询,常用于事务处理和复杂查询。
  • Hive数据仓库:基于Hadoop的数据仓库工具,适合大规模数据的批处理和分析。
  • 其他存储系统:如果以上系统不能满足业务需求,我们可以将DataFrame或DataSet转换为RDD,利用RDD支持的多种外部存储系统。

4.3 大数据计算框架的基石

  • 存储系统是大数据计算框架的基石。一个计算框架首先需要从存储系统中加载数据,形成可处理的数据模型(如DataFrameDataSetRDD)。基于这些数据模型,我们可以进行各种数据分析操作。最终,分析结果需要持久化到外部存储系统,以便各部门使用。

5. 数据存储核心API使用

5.1 持久化数据到外部文件系统步骤

  • 创建SparkSession实例对象
  • 通过SparkSession实例对象提供的方法加载外部数据
  • 数据分析
  • 对数据分析结果进行持久化

5.2 将数据帧保存到本地文件

  • net.huawei.sql包里创建SaveData对象
    在这里插入图片描述
package net.huawei.sqlimport org.apache.spark.sql.SparkSession/*** 功能:保存数据到本地文件* 作者:华卫* 日期:2025年01月17日*/
// 声明用户样例类
case class User(name: String, gender: String, age: Long)object SaveData {def main(args: Array[String]): Unit = {// 获取或创建Spark会话对象val spark = SparkSession.builder() // 创建Builder对象.appName("SaveData") // 设置应用程序名称.master("local[*]") // 运行模式:本地运行.getOrCreate() // 获取或创建Spark会话对象// 导入隐式转换import spark.implicits._// 基于序列创建数据帧val userDF = Seq(User("陈燕文", "女", 20),User("张小文", "男", 27),User("王丽霞", "女", 18)).toDF()// 显示数据userDF.show()// 保存数据到本地文件userDF.write.mode("overwrite").save("log/users.parquet")println("users.parquet保存成功~")userDF.write.mode("overwrite").csv("log/users.csv")println("users.csv保存成功~")userDF.write.mode("overwrite").json("log/users.json")println("users.json保存成功~")// 关闭会话对象spark.stop()}
}
  • 运行程序,查看结果
    在这里插入图片描述
  • 查看保存在本地的各种格式的数据文件
    在这里插入图片描述

5.3 将数据帧保存到HDFS文件

  • net.huawei.sql包里创建SaveDataToHDFS对象
    在这里插入图片描述
package net.huawei.sqlimport org.apache.spark.sql.SparkSession/*** 功能:保存数据到HDFS* 作者:华卫* 日期:2025年01月17日*/
object SaveDataToHDFS {def main(args: Array[String]): Unit = {// 获取或创建Spark会话对象val spark = SparkSession.builder() // 创建Builder对象.appName("SaveDataToHDFS") // 设置应用程序名称.master("local[*]") // 运行模式:本地运行.config("dfs.client.use.datanode.hostname", "true") // 设置HDFS节点名称.getOrCreate() // 获取或创建Spark会话对象// 导入隐式转换import spark.implicits._// 基于序列创建数据帧val userDF = Seq(User("陈燕文", "女", 20),User("张小文", "男", 27),User("王丽霞", "女", 18)).toDF()// 显示数据userDF.show()// 保存数据到HDFS文件userDF.write.mode("overwrite").json("hdfs://bigdata1:9000/log/users.json")println("hdfs://bigdata1:9000/log/users.json保存成功~")// 关闭会话对象spark.stop()}
}
  • 运行程序,查看结果
    在这里插入图片描述

  • 执行命令:hdfs dfs -ls /log/users.json
    在这里插入图片描述

  • 执行命令:hdfs dfs -cat /log/users.json/*
    在这里插入图片描述

6. 数据源与数据存储小结

  • 在大数据生态系统中,数据源和数据存储是核心组成部分。Spark SQL 支持多种数据源,包括 HDFS、S3、Hive、Parquet、JSON 等,能够灵活加载和处理结构化数据。通过 DataFrameReaderDataFrameWriter,用户可以轻松地从本地文件系统或分布式文件系统加载数据,并将分析结果持久化到外部存储系统。常见的存储格式如 CSV、JSON、Parquet 各有优势:CSV 适合人类阅读,JSON 灵活易用,而 Parquet 则以高效的列式存储和压缩性能著称。数据存储不仅是数据处理的起点,也是分析结果的归宿,选择合适的存储格式和系统对提升数据处理效率至关重要。

相关文章:

SparkSQL数据源与数据存储

文章目录 1. 大数据分析流程2. Spark SQL数据源2.1 SparkSQL常见数据源2.2 SparkSQL支持的文本格式2.3 加载外部数据源步骤 3. 本地文件系统加载数据3.1 本地文件系统加载JSON格式数据3.1.1 概述3.1.2 案例演示 3.2 本地文件系统加载CSV格式数据3.2.1 概述3.2.2 案例演示 3.3 本…...

【BQ3568HM开发板】开箱测试

引言 很荣幸入选了“电子发烧友”的贝启科技BQ3568HM开源鸿蒙开发板评测活动,上周在出差,今天才有机会开箱一下开发板,简单测试一下。 开机测试 插上电源开机后,系统显示的是润和的DAYU的logo,看来厂商提供的软件包…...

3D 模型格式转换之 STP 转 STL 深度解析

在 3D 模型的多元世界中,格式如同语言,不同格式适用于不同场景。STP 和 STL 是两种常见格式,本文将深入剖析 STP 转 STL 的相关内容。 一、STP 与 STL 格式基础 (一)STP 格式剖析 STP,即标准交换格式&am…...

MySQL数据库的数据文件保存在哪?MySQL数据存在哪里

在安装好MySQL数据库使用一段时间后,会产生许多的数据库和数据。那这些数据库的数据文件存放在本地文件夹的什么位置呢 一、默认位置 一般来说MySQL数据库的数据文件都是存放在data文件夹之中,但是根据使用的存储引擎不同,产生的一些文件也…...

低代码系统-UI设计器核心介绍

为什么会有UI设计器 最开始的UI设计器其实是为了满足企业门户的需求而产生的,后面因为表单设计器的功能有限,所以干脆就用了一套设计器。 UI设计器从功能使用上来说,跟表单设计器没有多大区别,只是多了组件和加强了事件和组件的能…...

ubuntu20.04有亮度调节条但是调节时亮度不变

尝试了修改grub文件,没有作用,下载了brightness-controllor,问题解决了。 sudo add-apt-repository ppa:apandada1/brightness-controller sudo apt update sudo apt install brightness-controller 之后在应用软件中找到brightness-contro…...

USART_串口通讯轮询案例(HAL库实现)

引言 前面讲述的串口通讯案例是使用寄存器方式实现的,有利于深入理解串口通讯底层原理,但其开发效率较低;对此,我们这里再讲基于HAL库实现的串口通讯轮询案例,实现高效开发。当然,本次案例需求仍然和前面寄…...

【前端】CSS学习笔记(2)

目录 CSS3新特性圆角阴影动画keyframes 创建动画animation 执行动画timing-function 时间函数direction 播放方向过渡动画(transition) 媒体查询设置meta标签媒体查询语法 雪碧图字体图标 CSS3新特性 圆角 使用CSS3border-radius属性,你可以…...

【esp32小程序】小程序篇02——连接git

一、创建仓库 进入gitee官网,登录(如果没有gitee账号的就自行注册一下)。 点击号-->新建仓库 填写好必填信息,然后点击“创建” 二、微信开发者工具配置 在微信开发者工具打开我们的项目。按下面的步骤依次点击 三、验证 点…...

echarts柱状图象形图,支持横向滑动

展示效果 代码 let xData [2020,2021,2022,2023, 2024, 2025, 2026]; let yData [267,2667,2467,2667, 3234, 4436,666]; option {grid: {left: 5%,right: 5%,top: 15%,bottom: 5%,containLabel: true},// 滚动条dataZoom: [{show: true,type: inside,zoomLock: true,throt…...

YOLO系列代码

Test-Time Augmentation TTA (Test Time Augmentation)是指在test过程中进行数据增强。其思想非常简单,就是在评测阶段,给每个输入进行多种数据增广变换,将一个输入变成多个输入,然后再merge起来一起输出,形成一种ensemble的效果,可以用来提点。参考:​​​​​​​​​…...

HTML根元素<html>的语言属性lang:<html lang=“en“>

诸神缄默不语-个人CSDN博文目录 在编写HTML页面时&#xff0c;通常会看到<html lang"en">这行代码&#xff0c;特别是在网页的开头部分&#xff0c;就在<!DOCTYPE html>后面。许多开发者可能对这个属性的含义不太了解&#xff0c;它到底有什么作用&…...

opencv在图片上添加中文汉字(c++以及python)

opencv在图片上添加中文汉字&#xff08;c以及python&#xff09;_c opencv绘制中文 知乎-CSDN博客 环境&#xff1a; ubuntu18.04 desktopopencv 3.4.15 opencv是不支持中文的。 这里C代码是采用替换原图的像素点来实现的&#xff0c;实现之前我们先了解一下汉字点阵字库。…...

Perplexity AI 周六向 TikTok 母公司字节跳动递交了一项提案

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

Java连接TDengine和MySQL双数据源

git文件地址&#xff1a;项目首页 - SpringBoot连接TDengine和MySQL双数据源:SpringBoot连接TDengine和MySQL双数据源 - GitCode 1、yml配置 spring:datasource:druid:mysql:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/testusername: roo…...

Web3 游戏周报(1.13 - 1.19)

回顾上周的区块链游戏概况&#xff0c;查看 Footprint Analytics 与 ABGA 最新发布的数据报告。 【1.13–1.19】Web3 游戏行业动态 索尼区块解决方案实验室 (Sony BSL) 宣布其以太坊 L2 区块链 Soneium 主网上线。Hyve Labs 融资 275 万美元&#xff0c;推动 Web3 游戏基础设…...

[深度学习]机器学习和深度学习

机器学习和深度学习 文章目录 机器学习和深度学习人工智能与机器学习和深度学习的关系侠义的机器学习深度学习的概念常见的神经网络的输入形式想要的输出(任务类别)深度学习的流程 线性函数与多层神经元 人工智能与机器学习和深度学习的关系 所谓人工智能就是&#xff0c;让计算…...

区块链技术

区块链是一个信息技术领域的术语&#xff0c;它代表了去中心化、安全性高、透明度强的分布式账本技术。以下是对区块链的详细介绍&#xff1a; 一、定义与基本原理 区块链&#xff08;Blockchain&#xff09;是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术方案…...

vim函数定义跳转相关设置

修改下vim的一些ctags相关快捷键&#xff0c;个人用着顺手点。 小结如下&#xff1a; normal模式下的gk&#xff0c;用来打开一个预览窗口预览函数定义&#xff08;需要ctags生成好tags文件&#xff09;。normal模式下的gd&#xff0c;修改映射为ctrl]&#xff0c;即跳转到函…...

如何使用Python爬虫获取微店商品详情:代码示例与实践指南

在电商领域&#xff0c;获取商品详情数据对于商家和开发者来说至关重要。微店作为国内知名的电商平台&#xff0c;提供了丰富的商品数据接口&#xff0c;方便开发者通过API调用获取商品详情。本文将详细介绍如何使用Python爬虫获取微店商品详情&#xff0c;并提供具体的代码示例…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...