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

Spark-SQL核心编程3

数据加载与保存

通用方式:

        SparkSQL 提供了通用的保存数据和数据加载的方式。这里的通用指的是使用相同的API,根据不同的参数读取和保存不同格式的数据,SparkSQL 默认读取和保存的文件格式为parquet

 

数据加载方法

        spark.read.load 是加载数据的通用方法。如果读取不同格式的数据,可以对不同的数据格式进行设定。

        spark.read.format("…")[.option("…")].load("…")

三种加载数据的方法:

        使用 option 参数加载数据,在"jdbc"格式下需要传入 JDBC 相应参数,url、user、password 和 dbtable
                        (适用于需要传入数据库连接信息的情况。)

        使用 load方法加载数据,在"csv"、"jdbc"、"json"、"orc"、"parquet"和"textFile"格式下需要传入加载数据的路径。

                        (适用于指定数据路径和类型的情况。)

         使用format 加载数据,指定加载的数据类型,包括"csv"、"jdbc"、"json"、"orc"、"parquet"和

"textFile"。

前面都是使用 read API 先把文件加载到 DataFrame 然后再查询,其实,我们也可以直接在文件上进行查询: 文件格式.'文件路径'

spark.sql("select * from json.’ Spark-SQL/input/user.json’").show

 

数据保存方法

主要介绍了两种保存数据的方法,一种是df write.save的通用方法,另一种是通过指定format、option和save(需要指定数据格式和保存路径的情况)路径来保存。

format("…"):指定保存的数据类型,包括"csv"、"jdbc"、"json"、"orc"、"parquet"和"textFile"。

save ("…"):在"csv"、"orc"、"parquet"和"textFile"格式下需要传入保存数据的路径。

option("…"):在"jdbc"格式下需要传入 JDBC 相应参数,url、user、password 和 dbta

        save mode的不同选项,如append、error、overwrite和ignore,以及它们在文件已存在时的处理方式。

 

Parquet

        Spark SQL 的默认数据源为 Parquet 格式。Parquet 是一种能够有效存储嵌套数据的列式

存储格式。

        加载数据:

                val df = spark.read.load("examples/src/main/resources/users.parquet")

        保存数据:

                var df = spark.read.json("/opt/module/data/input/people.json")

                df.write.mode("append").save("/opt/module/data/output")

 

 

 

 

数据格式与数据源

默认数据源介绍了 Spark 的默认数据源,能够存储嵌套数据,简化了数据操作。强调了默认数据源的便利性,通常不需要修改配置。

JSON

        JSON数据处理

        spark SQL自动检测JSON数据集的结构,并将其加载为dataset。

        可以通过 SparkSession.read.json()去加载 JSON 文件。

        强调了spark中读取的JSON文件每一行应为一个json串。

加载json文件

val path = "/opt/module/spark-local/people.json"

val peopleDF = spark.read.json(path)

创建临时表

peopleDF.createOrReplaceTempView("people")

数据查询

val resDF = spark.sql("SELECT name FROM people WHERE age BETWEEN 13 AND 19")

 

CSV 数据

 CSV 文件的读取方法,通常用于简单的数据导入。

Spark SQL 可以配置 CSV 文件的列表信息,读取 CSV 文件,CSV 文件的第一行设置为

数据列。

spark.read.format("csv").option("sep",";").option("inferSchema","true")

.option("header", "true").load("data/user.csv")

 

MySQL 数据操作

连接与加载

通过 JDBC 连接 MySQL 数据库并加载数据的方法。

强调:驱动版本与 MySQL 版本匹配的重要性。

介绍了三种加载数据的方式:使用 option 参数逐个设置连接信息。使用 options 参数在 URL 中融合连接信息。使用 spark.read.jdbc 方法直接传入 JDBC 参数。

写入数据

通过 JDBC 将数据写入 MySQL 数据库的方法。

举例说明了如何创建 RDD 并将其转换为 DataFrame 进行写入操作。

强调了 save mode 在写入操作中的应用。

1)	导入依赖
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.27</version>
</dependency>
MySQL8  <version>8.0.11</version>2)	读取数据
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("SQL")
val spark:SparkSession = SparkSession.builder().config(sparkConf).getOrCreate()import spark.implicits._
//通用的load方式读取spark.read.format("jdbc").option("url","jdbc:mysql://localhost:3306/system").option("driver","com.mysql.jdbc.Driver")//com.mysql.cj.jdbc.Driver.option("user","root").option("password","123456").option("dbtable","user").load().show()spark.stop()//通用的load方法的另一种形式
spark.read.format("jdbc").options(Map("url"->"jdbc:mysql://localhost:3306/system?user=root&password=123456","dbtable"->"user","driver"->"com.mysql.jdbc.Driver")).load().show()//通过JDBC
val pros :Properties = new Properties()
pros.setProperty("user","root")
pros.setProperty("password","123456")
val df :DataFrame = spark.read.jdbc("jdbc:mysql://localhost:3306/system","user",pros)
df.show()3)	写入数据
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("SQL")
val spark:SparkSession = SparkSession.builder().config(sparkConf).getOrCreate()import spark.implicits._
val rdd: RDD[Stu] = spark.sparkContext.makeRDD(List(Stu("lisi", 20),Stu("zs", 30)))
val ds:Dataset[Stu] = rdd.toDS()ds.write.format("jdbc").option("url","jdbc:mysql://localhost:3306/system").option("driver","com.mysql.jdbc.Driver").option("user","root").option("password","123456").option("dbtable","user2").mode(SaveMode.Append).save()spark.stop()

 

Spark-SQL连接Hive

连接方式:内嵌Hive、外部Hive、Spark-SQL CLI、Spark beeline 以及代码操作。

        内嵌HIVE:在生产环境中几乎不使用内嵌Hive模式。

        外部HIVE:需要与虚拟机中的Hive相连,需下载并配置PS ML、CORE杠set SML、HDFS等文件,并修改配置文件以指向虚拟机的Have。

在虚拟机中下载以下配置文件

如果想在spark-shell中连接外部已经部署好的 Hive,需要通过以下几个步骤:

Spark 要接管 Hive 需要把 hive-site.xml 拷贝到 conf/目录下,并将url中的localhost改为node01

 

 

驱动放置:MySQL驱动 copy 需要放到 jars/目录下

把 core-site.xml 和 hdfs-site.xml 拷贝到 conf/目录下

重启 spark-shell

 

运行Spark-SQL CLI

Spark SQL CLI 可以很方便的在本地运行 Hive 元数据服务以及从命令行执行查询任务。在 Spark 目录下执行如下命令启动 Spark SQL CLI,直接执行 SQL 语句,类似于 Hive 窗口。

操作步骤:

  1. 将mysql的驱动放入jars/当中;
  2. 将hive-site.xml文件放入conf/当中;
  3. 运行bin/目录下的spark-sql.cmd 或者打开cmd,在

D:\spark\spark-3.0.0-bin-hadoop3.2\bin当中直接运行spark-sql

可以直接运行SQL语句,如下所示:

 

运行Spark-SQL CLI的使用

        通过spark-sql. cmd运行,可以直接输入MySQL语句,不需要SQL括号和双引号。

        驱动和配置文件的放置位置与外部Hive相同。

 

导入依赖:需要导入与Spark版本一致的依赖包(如3.0.0版本),并与Hive版本保持一致。

虚拟机运行:强调所有操作需要在虚拟机运行的情况下进行,除非使用IDEA。

代码实现:导入必要的包。创建配置对象和SQL对象,输入SQL语句以展示数据库和数据表。

 

相关文章:

Spark-SQL核心编程3

数据加载与保存 通用方式&#xff1a; SparkSQL 提供了通用的保存数据和数据加载的方式。这里的通用指的是使用相同的API&#xff0c;根据不同的参数读取和保存不同格式的数据&#xff0c;SparkSQL 默认读取和保存的文件格式为parquet 数据加载方法&#xff1a; spark.read.lo…...

利用XShell 创建隧道(tunnel)在本地可视化远程服务器上的Visdom

1. 创建隧道 打开Xshell&#xff0c;选择你想要操作的终端&#xff0c;单击右键 -> 选择属性 打开属性对话框后&#xff0c;单击添加按钮。 在弹出的对话框中&#xff0c;先填写自己本地的浏览器的地址以及对应的端口号。然后呢&#xff0c;再填写autod远程服务器的地址和…...

React 高级特性与最佳实践

在掌握了 React 的基础知识后&#xff0c;我们可以进一步探索 React 的高级特性和最佳实践。这些特性将帮助你构建更高效、可维护和可扩展的 React 应用。本文重点介绍 Hooks、Context、Refs 和高阶组件等核心高级特性。 1. Hooks&#xff1a;函数组件的强大工具 Hooks 是 Rea…...

考研数据结构之图(一)(包含真题及解析)

考研数据结构之图的存储与基本操作&#xff1a;邻接矩阵、邻接表、十字链表、邻接多重表 图&#xff08;Graph&#xff09;是数据结构中的重要非线性结构&#xff0c;广泛应用于网络路由、社交关系分析等领域。本文将详细讲解图的四种主要存储方式——邻接矩阵法、邻接表法、十…...

Qt QML实现Windows桌面颜色提取器

前言 实现一个简单的小工具&#xff0c;使用Qt QML实现Windows桌面颜色提取器&#xff0c;实时显示鼠标移动位置的颜色值&#xff0c;包括十六进制值和RGB值。该功能在实际应用中比较常见&#xff0c;比如截图的时候&#xff0c;鼠标移动就会在鼠标位置实时显示坐标和颜色值&a…...

2025 年网络安全的挑战与机遇

2024 年是网络安全领域风云变幻的一年。从备受瞩目的勒索软件攻击所带来的影响&#xff0c;到人工智能工具日益商品化&#xff0c;挑战不断增加。 关键基础设施的漏洞变得极为明显&#xff0c;身份盗窃次数也达到了前所未有的程度。然而&#xff0c;在这一片混乱之中&#xff…...

Vue 3 中 ref和reactive的详细使用场景

一、核心区别 特性refreactive数据类型基本类型 对象/数组&#xff08;自动解包&#xff09;仅对象/数组响应式原理通过 .value 触发响应直接代理对象模板中使用自动解包&#xff08;无需 .value&#xff09;直接访问属性解构/传递保持响应性需用 toRefs 保持响应性 二、使用…...

react使用createFromIconfontCN,自定义iconfont 图标

记录reactantdesign项目中使用createFromIconfontCN&#xff0c;自定义iconfont 图标 效果图&#xff1a; import { createFromIconfontCN } from ant-design/icons;const MyIcon createFromIconfontCN({scriptUrl: //at.alicdn.com/t/font_8d5l8fzk5b87iudi.js, // 在 icon…...

危化品经营单位安全生产管理人员备考要点

危化品经营单位安全生产管理人员备考要点 &#x1f4cc; 考试核心内容 ✅ 必考法规&#xff1a; 《危险化学品安全管理条例》重点条款&#xff08;如经营许可条件&#xff09; GB 18218-2018《重大危险源辨识》新标准 安全生产法律责任&#xff08;罚款金额/刑事责任&…...

音频炼金术:Threejs 让 3D 场景「听」起来更真实

在 Three.js 中允许在场景中添加声音&#xff0c;将声音与 3D 对象关联&#xff0c;实现更丰富的交互体验。 Audio Three.js 中的Audio对象用于表示音频源&#xff0c;它是一个THREE.Object3D的子类&#xff0c;用于控制音频播放、暂停、是否循环等设置的对象&#xff0c;可以…...

【C++】Stack和Queue的底层封装和实现

目录 stack容器适配器stack的模拟实现 queue的模拟实现deque了解deque的结构deque的管理方式和遍历元素方式deque的缺陷为啥库里面的stack和queue使用deque end stack 容器适配器 Stack可以封装成前面三个变量的形式&#xff0c;但是这里我们提出一个概念叫容器适配器&#xf…...

Vue3 SSR 工程化实践:日常工作中的性能优化与实战技巧

一、流式渲染与分块传输&#xff08;面向性能的关键优化&#xff09; 1.1 流式响应基础实现 // Node.js Express 示例&#xff08;Vite SSR同理&#xff09;import { renderToWebStream } from vue/server-rendererapp.get(/, async (req, res) > { res.setHeader(Conten…...

【Python进阶】字符串操作全解与高效应用

目录 前言&#xff1a;技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块技术选型对比 二、实战演示环境配置要求核心代码实现&#xff08;10个案例&#xff09;案例1&#xff1a;基础操作案例2&#xff1a;高效格式化…...

LeetCode[28]找出字符串中第一个匹配项的下标(KMP版本)

思路&#xff1a; 一开始我使用暴力过的&#xff0c;但是感觉还是不完美&#xff0c;想学习一下KMP的写法&#xff0c;所以这篇笔记就来了&#xff0c;首先KMP算法就要先维护一个最长相等前后缀的一个数组&#xff08;统称前缀表&#xff09;&#xff0c;那么这个数组为什么能找…...

Cesium实现雨、闪电、雪、雾天气效果

基于 Cesium 的三维地理信息场景&#xff0c;集成了天气效果后处理、3D 模型加载、水域渲染等功能。以下是详细功能总结&#xff1a; 1. 场景初始化与基础配置 三维地球初始化 创建 Cesium Viewer 实例&#xff0c;隐藏默认控件&#xff08;时间轴、动画控件等&#xff09;&…...

上门送水小程序区域代理模块框架设计

一、逻辑分析 代理申请流程&#xff1a; 潜在代理商通过小程序提交代理申请&#xff0c;需要填写个人或企业基本信息、联系方式、期望代理区域等。系统收到申请后&#xff0c;进行初步审核&#xff0c;检查信息的完整性和合规性。运营人员进行人工审核&#xff0c;根据公司政策…...

GIS开发笔记(6)结合osg及osgEarth实现半球形区域绘制

一、实现效果 输入中心点坐标及半径&#xff0c;绘制半球形区域&#xff0c;地下部分不显示。 二、实现原理 根据中心点及半径绘制半球形区域&#xff0c;将其挂接到地球节点。 三、参考代码 void GlobeWidget::drawSphericalRegion(osg::Vec3d point,double radius) {// 使…...

UE5在场景3D物体上播放本地视频(带声音)

UE5在场景3D物体上播放本地视频&#xff08;带声音&#xff09; 0.在Map中创建一个立方体,调整大小看起来像屏幕一样 1.创建文件夹Movies在根目录下 2.把准备的视频复制到Movies文件夹下 3.把Movies文件夹下的视频拖入到UE自己创建的文件夹下&#xff0c;此时会有个文件媒体源…...

安装部署RabbitMQ

一、RabbitMQ安装部署 1、下载epel源 2、安装RabbitMQ 3、启动RabbitMQ web管理界面 启用插件 rabbitmq数据目录 创建rabbitmq用户 设置为管理员角色 给用户赋予权限 4、访问rabbitmq...

STM32启动流程详解

STM32启动流程详解 本文档详细介绍STM32微控制器从上电到main函数执行的完整启动流程。 1. 上电与复位过程 当STM32芯片上电或复位时&#xff0c;硬件会执行以下步骤&#xff1a; 上电复位(POR)/低电平复位(PDR): 芯片接通电源或NRST引脚置低时触发初始PC值设置: 程序计数器…...

【正点原子STM32MP257连载】第四章 ATK-DLMP257B功能测试——CPU温度CPU主频

1&#xff09;实验平台&#xff1a;正点原子ATK-DLMP257B开发板 2&#xff09;浏览产品&#xff1a;https://www.alientek.com/Product_Details/135.html 3&#xff09;全套实验源码手册视频下载&#xff1a;正点原子资料下载中心 第四章 ATK-DLMP257B功能测试——CPU主频&…...

LVDS系列8:Xilinx 7系可编程输入延迟(一)

在解析LVDS信号时&#xff0c;十分重要的一环就是LVDS输入信号线在经过PCB输入到FPGA中后&#xff0c;本来该严格对齐的信号线会出现时延&#xff0c;所以需要在FPGA内部对其进行延时对齐后再进行解析。 Xilinx 7系器件中用于输入信号延时的组件为IDELAYE2可编程原语&#xff0…...

iotdb时序数据库使用

iotdb https://github.com/apache/iotdb.git 安装maven3.9.6以上版本执行编译 iotdb启动&#xff0c;使用安装包sbin目录下的start-standalone.bat sbin\start-standalone.bat 执行报错如果是内存问题&#xff0c;可以在对应的node配置中修改&#xff0c;如conf\datanode-ev…...

【Caddy】:现代化、自动 HTTPS 的 Web 服务器新星

&#x1f680; Caddy&#xff1a;现代化、自动 HTTPS 的 Web 服务器新星&#xff01; 在构建和部署 Web 应用时&#xff0c;你可能听说过或用过如 Nginx、Apache 等经典的 Web 服务器。但在今天&#xff0c;有一个越来越受欢迎的新选择——Caddy。 本文将带你认识 Caddy&…...

用 DeepSeek 精准解析,PDF 一键转电子书!

经常需要阅读大量的 PDF 文档&#xff0c;但在移动设备上阅读 PDF 通常体验极差。屏幕小、排版固定&#xff0c;需要不断放大缩小&#xff0c;眼睛容易疲劳&#xff0c;长时间阅读简直是一种折磨。 虽有不少 PDF 转换工具&#xff0c;但对扫描书籍支持不佳&#xff0c;经常丢失…...

【AIoT】智能硬件GPIO通信详解(二)

前言 上一篇我们深入解析了智能硬件GPIO通信原理(传送门:【AIoT】智能硬件GPIO通信详解(一))。接下来,我们将结合无人售货机控制场景,通过具体案例进一步剖析物联网底层通信机制的实际应用。 在智能零售领域,无人售货机通过AI技术升级为智能柜,其设备控制的底层通信…...

Mac OS系统下kernel_task占用大量CPU资源导致系统卡顿

CPU负载突然飙升&#xff0c;如截图&#xff1a; 根本原因&#xff0c;大家从各种博主上已知晓&#xff0c;现在提供自己的解决办法&#xff0c;亲测有效 一、设置开机自动禁用温度管理守护进程 1.创建脚本文件 mkdir -p ~/Scripts touch ~/Scripts/disable_thermald.sh …...

镜舟科技助力某大型电网企业破解数据架构升级难题,打造国产化湖仓标杆

在 “十四五” 规划全面推进国产化替代的背景下&#xff0c;某大型电网企业联合镜舟科技与腾讯云&#xff0c;基于全球领先的开源分析型数据库 StarRocks 及腾讯 TBDS 大数据平台&#xff0c;构建电力行业国产化湖仓一体架构。该项目实现 PB 级电力数据的统一管理&#xff0c;为…...

Linux内核内存管理单元 详解Linux 内核伙伴系统(Buddy System)的快速路径分配函数get_page_from_freelist

一、函数核心作用 get_page_from_freelist 是 Linux 内核伙伴系统&#xff08;Buddy System&#xff09;的快速路径分配函数&#xff0c;负责从指定的内存区域&#xff08;Zone&#xff09;中高效分配连续的物理内存页。其核心逻辑是遍历允许的 Zone 列表&#xff0c;检查水位…...

网络原理 - 初识网络 2

目录 OSI 七层协议 TCP / IP 五层模型 网络设备所在分层 网络分层对应 封装和分用&#xff08;网络传输数据过程中&#xff0c;最核心的流程&#xff09; 用一个具体例子来梳理以下封装和分用的过程 封装 1. 应用层&#xff08;应用程序&#xff09; -- QQ 2. 传输层 …...

如何利用GM DC Monitor快速监控一台网络类设备

GM DC Monitor v2.0在网络类设备监控的效率非常高&#xff01; 如果您需要管理运维大量的网络类设备&#xff0c;GM DC Monitor是个不错的选择。 如果您具备一定的采集脚本编写能力&#xff0c;可以在平台的定制属于自己的监控模板&#xff01; 1&#xff09;首先建立数据中…...

类和对象终

一、初始化列表 再谈构造函数 我们之前实现构造函数的时候&#xff0c;初始化成员变量在函数体内赋值的&#xff0c;构造函数还有一种初始化方式&#xff0c;就是初始化列表 我们先实现一个栈来举例&#xff1a; // 实现一个栈 typedef int DataType; class Stack { public:…...

教程:批量提取图片pdf固定位置文字然后保存为新的文件名,基于Python和阿里云的实现方案

一、项目背景 在实际工作和生活中,存在大量需要对图片或 PDF 进行批量处理的场景。例如,在档案管理中,工作人员可能会扫描大量文件,生成图片或 PDF 格式的档案资料。这些资料通常包含特定位置的关键信息,如文件编号、日期等。通过批量提取这些关键信息并将其作为文件名,…...

JVM:堆、方法区

一、堆 概念&#xff1a;堆用于存储对象和数组&#xff0c;主要分为新生代和老年代&#xff0c;新生代又细分为伊甸园区、幸存者 0 区&#xff08;S0&#xff09;和幸存者 1 区&#xff08;S1&#xff09;内存设置&#xff1a;可用 -Xmx 和 -Xms 设置堆内存大小&#xff0c;-X…...

JVM-基于Hotspot

前言 Java虚拟机&#xff08;Java Virtual Machine简称JVM&#xff09;是运行所有Java程序的抽象计算机&#xff0c;是Java语言的运行环境&#xff0c;其主要任务为将字节码装载到内部&#xff0c;解释/编译为对应平台上的机器指令执行。 Java虚拟机规范定义了一个抽象的——…...

Android 10.0 第三方Launcher设置默认Launcher后导致Recent最近任务键无效

1.前言 在10.0的系统rom定制化开发中,在进入launcher的定制过程中,在某些产品中,需要设置第三方launcher为默认Launcher功能, 所以在设置以后,会发现最近recent键无效,所以接下来需要分析相关流程来实现相关功能的实现 2.第三方Launcher设置默认Launcher后导致Recent最…...

状态模式详解与真实场景案例(Java实现)

模式定义 状态模式&#xff08;State Pattern&#xff09; 允许对象在其内部状态改变时改变它的行为&#xff0c;使对象看起来像是修改了它的类。属于行为型设计模式&#xff0c;核心思想是将状态抽象为独立对象&#xff0c;不同状态下行为封装在不同状态类中。 解决的问题 …...

uniapp-商城-26-vuex 使用流程

为了能在所有的页面都实现状态管理,我们按照前面讲的页面进行状态获取,然后再进行页面设置和布局,那就是重复工作,vuex 就会解决这样的问题,如同类、高度提炼的接口来帮助我们实现这些重复工作的管理。避免一直在造一样的轮子。 https://vuex.vuejs.org/zh/#%E4%BB%80%E4…...

科技快讯 | 智谱开源最新GLM模型系列;“AI 洗头店”现身广州;ChatGPT上线图库功能

智谱开源最新GLM模型系列&#xff0c;启用全球域名“Z.ai” 4月15日&#xff0c;智谱开源最新GLM模型系列&#xff0c;包括32B和9B尺寸&#xff0c;涵盖基座、推理、沉思三类模型&#xff0c;全部遵循MIT开源许可协议。推理模型GLM-Z1-32B-0414实测推理速度达200 tokens/秒&…...

LeetCode 2537.统计好子数组的数目:滑动窗口(双指针)

【LetMeFly】2537.统计好子数组的数目&#xff1a;滑动窗口(双指针) 力扣题目链接&#xff1a;https://leetcode.cn/problems/count-the-number-of-good-subarrays/ 给你一个整数数组 nums 和一个整数 k &#xff0c;请你返回 nums 中 好 子数组的数目。 一个子数组 arr 如果…...

精益数据分析(1/126):从《精益数据分析》探寻数据驱动增长之道

精益数据分析&#xff08;1/126&#xff09;&#xff1a;从《精益数据分析》探寻数据驱动增长之道 在当今数字化时代&#xff0c;数据无疑是企业发展的关键驱动力&#xff0c;对于竞争激烈的程序化广告行业更是如此。最近我在研读《精益数据分析》这本书&#xff0c;收获颇丰&…...

uniapp-商城-27-vuex 通用方法

1 概述 上节说了vuex 的基本使用方法,分析了基本的使用方法。 在使用中,常见使用,我们要针对状态,购物车,不同类事务的管理,如果按照上节课的通用方法,那么使用和维护是会很大的难度的。 所以这里就必须要进行处理,借助 modules 进行定义不同类事务的处理手段。便于…...

MetaLiveX:用AI重新定义直播互动的边界

“直播的核心价值,在于它能否让观众从‘旁观者’变为‘共創者’。”在近期一场数字技术峰会上,杜子程(Emma Zicheng Du)首次公开阐释了其团队研发的MetaLiveX平台核心理念。这一以AI为驱动的智能直播系统,正通过动态场景生成与情感化交互设计,重新定义虚拟社群的参与逻辑。目前…...

线程安全学习

1 什么是线程 线程是cpu调度的最小单位&#xff0c;在Linux 下 实现线程的方式为轻量级进程&#xff0c;复用进程的结构体&#xff0c;使用clone函数创建 2 线程安全 所谓线程安全&#xff0c;更确切的应该描述为内存安全 #include <stdio.h> #include <pthread.h…...

三层路由器,SSH远程登录访问路由器,通过telnet远程登录访问路由器(不安全),路由器的基本设置之多网络互联解决办法:单臂路由

三层路由器 默认路由器端口关闭&#xff1a;no shutdown &#xff08;开启&#xff09;需进入端口默认路由开启&#xff1a;无需 ip routing路由器充当网关&#xff0c;可以连接不同网络接口种类丰富&#xff0c;数量少 SSH远程登录访问路由器 记得设IP Would you like to e…...

分布式光伏电站运维难?Acrel-1000DP助力安全稳定运行

针对用户新能源接入后存在安全隐患、缺少有效监控、发电效率无法保证、收益计算困难、运行维护效率低等通点&#xff0c;提出的Acrel-1000DP分布式光伏监控系统平台&#xff0c;对整个用户电站全面监控&#xff0c;为用户实现降低能源使用成本、减轻变压器负载、余电上网&#…...

基于sherpa-onnx 安卓语音识别尝鲜

sherpa-onnx简介 Sherpa&#xff1a;是一个由 K2-FSA 团队 开发的 开源语音处理框架&#xff0c;旨在解决传统语音识别工具&#xff08;如 Kaldi&#xff09;在模型部署和跨平台适配中的复杂性问题。它通过整合现代深度学习技术和高效推理引擎&#xff0c;提供了从语音识别、合…...

利用 Python 和 AI 技术创作独特的图像艺术作品

1. 项目目标 生成艺术作品&#xff1a;利用 AI 模型&#xff08;如 Stable Diffusion&#xff09;生成具有艺术风格的图像。自定义风格&#xff1a;通过文本提示&#xff08;prompt&#xff09;控制图像的艺术风格&#xff08;如赛博朋克、印象派、超现实主义等&#xff09;。…...

Web自动化测试的详细流程和步骤

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 Web自动化测试是软件测试中非常重要的一种测试方法&#xff0c;它通过编写脚本来模拟人工操作网页&#xff0c;从而实现对Web应用程序进行自动化测试的过程。为了保…...

记录一个坑关于STM32 ARM Compiler Version

在用 Keil 进行 STM32 开发的时候&#xff0c;一开始下载&#xff0c;下载的 ARM 编译器是 Version6&#xff0c;他就不兼容老的代码&#xff0c;就很抽象。 所以必须要更换编译器。 可以去官网下载编译器 Downloads - Arm Developer &#xff0c;也可以自己找资源哈&#xff…...