当前位置: 首页 > 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;并提供具体的代码示例…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...