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

Spark-SQL3

Spark-SQL

一.Spark-SQL核心编程(四)

1.数据加载与保存:

1)通用方式:

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

2)加载数据:

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

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

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

load("…"):在"csv"、"jdbc"、"json"、"orc"、"parquet"和"textFile"格式下需要传入加载数据的路径。

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

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

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

3)保存数据:

df.write.save 是保存数据的通用方法。如果保存不同格式的数据,可以对不同的数据格式进行设定。

df.write.format("…")[.option("…")].save("…")

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

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

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

保存操作可以使用 SaveMode, 用来指明如何处理数据,使用 mode()方法来设置。

 

例如:df.write.mode("append").json("Spark-SQL/output")

 

 

2.Parquet

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

存储格式。数据源为 Parquet 文件时,Spark SQL 可以方便的执行所有的操作,不需要使用 format。修改配置项 spark.sql.sources.default,可修改默认数据源格式。

1)加载数据:

Val df =s park.read.load("examples/src/main/resources/users.parquet")

2)保存数据:

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

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

3.JSON

Spark SQL 能够自动推测 JSON 数据集的结构,并将它加载为一个 Dataset[Row]. 可以

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

注意:Spark 读取的 JSON 文件不是传统的 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")

4.CSV

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

数据列。

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

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

5.MySQL

Spark SQL 可以通过 JDBC 从关系型数据库中读取数据的方式创建 DataFrame,通过对

DataFrame 一系列的计算后,还可以将数据再写回关系型数据库中。

IDEA通过JDBC对MySQL进行操作:

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()

 

1)写入数据

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核心编程(五)

1.Spark-SQL连接Hive

Apache Hive 是 Hadoop 上的 SQL 引擎,Spark SQL 编译时可以包含 Hive 支持,也可以不包含。包含 Hive 支持的 Spark SQL 可以支持 Hive 表访问、UDF (用户自定义函数)、Hive 查询语言(HQL)等。需要强调的一点是,如果要在 Spark SQL 中包含Hive 的库,并不需要事先安装 Hive。一般来说,最好还是在编译 Spark SQL 时引入 Hive支持,这样就可以使用这些特性了。

使用方式分为内嵌Hive、外部Hive、Spark-SQL CLI、Spark beeline 以及代码操作。

1)内嵌的 HIVE

如果使用 Spark 内嵌的 Hive, 则什么都不用做, 直接使用即可。但是在实际生产活动当中,几乎没有人去使用内嵌Hive这一模式。

2)外部的 HIVE

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

 

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

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

 

 

 

把 MySQL 的驱动 copy 到 jars/目录下

 

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

重启 spark-shell

 

 

3)运行 Spark beeline(了解)

Spark Thrift Server 是 Spark 社区基于 HiveServer2 实现的一个 Thrift 服务。旨在无缝兼容HiveServer2。因为 Spark Thrift Server 的接口和协议都和 HiveServer2 完全一致,因此我们部署好 Spark Thrift Server 后,可以直接使用 hive 的 beeline 访问 Spark Thrift Server 执行相关语句。Spark Thrift Server 的目的也只是取代 HiveServer2,因此它依旧可以和 Hive Metastore进行交互,获取到 hive 的元数据。

如果想连接 Thrift Server,需要通过以下几个步骤:

Spark 要接管 Hive 需要把 hive-site.xml 拷贝到 conf/目录下

把 Mysql 的驱动 copy 到 jars/目录下

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

启动 Thrift Server

使用 beeline 连接 Thrift Server

beeline -u jdbc:hive2://node01:10000 -n root

4)运行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语句,如下所示:

5)代码操作Hive

1.导入依赖。

<dependency>

    <groupId>org.apache.spark</groupId>

    <artifactId>spark-hive_2.12</artifactId>

    <version>3.0.0</version>

</dependency>

<dependency>

    <groupId>org.apache.hive</groupId>

    <artifactId>hive-exec</artifactId>

    <version>2.3.3</version>

</dependency>

 

可能出现下载jar包的问题:

D:\maven\repository\org\pentaho\pentaho-aggdesigner-algorithm\5.1.5-jhyde

 

2. 将hive-site.xml 文件拷贝到项目的 resources 目录中。

3.代码实现。

val sparkConf = new SparkConf().setMaster("local[*]").setAppName("hive")

val spark:SparkSession = SparkSession.builder()

  .enableHiveSupport()

  .config(sparkConf)

  .getOrCreate()

 

spark.sql("show databases").show()

spark.sql("create database spark_sql")

spark.sql("show databases").show()

 

 

注意:

1.如果在执行操作时,出现如下错误:

 

可以在代码最前面增加如下代码解决:

System.setProperty("HADOOP_USER_NAME", "node01")

此处的 node01 改为自己的 hadoop 用户名称

2.在开发工具中创建数据库默认是在本地仓库,通过参数修改数据库仓库的地址: config("spark.sql.warehouse.dir", "hdfs://node01:9000/user/hive/warehouse")

 

相关文章:

Spark-SQL3

Spark-SQL 一.Spark-SQL核心编程&#xff08;四&#xff09; 1.数据加载与保存&#xff1a; 1&#xff09;通用方式&#xff1a; SparkSQL 提供了通用的保存数据和数据加载的方式。这里的通用指的是使用相同的API&#xff0c;根据不同的参数读取和保存不同格式的数据&#…...

Redis字符串类型实战:解锁五大高频应用场景

精心整理了最新的面试资料和简历模板&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 Redis的字符串&#xff08;String&#xff09;类型是最基础的数据结构&#xff0c;但其灵活性和原子性操作使其成为解决高并发场景问题的利器。本文通过真实项…...

通信算法之266: 无人机信号带宽计算

pwelch 通常返回功率谱密度&#xff08;PSD&#xff09;和对应的频率向量。带宽的计算可能涉及到找到 PSD 的有效频率范围&#xff0c;比如半功率点&#xff08;-3dB&#xff09;或者根据信号的能量集中区域。 pwelch 的参数设置&#xff0c;比如窗函数、重叠、FFT 点数&#x…...

【MySQL】前缀索引、索引下推、访问方法,自适应哈希索引

最左前缀原则 对于INDEX(name, age)来说最左前缀可以是联合索引的最左N个字段, 也可以是字符串索引的最左M个字符。 SELECT * FROM t WHERE name LIKE 张%其效果和单独创建一个INDEX(name)的效果是一样的若通过调整索引字段的顺序, 可以少维护一个索引树, 那么这个顺序就是需要…...

【C++游戏引擎开发】第16篇:ImGui指南

ImGui官方Github ImGUI(即时模式图形用户界面)是一种颠覆传统GUI开发范式的界面系统,由Casey Muratori于2005年提出概念,后经Omar Cornut开发为Dear ImGui开源库。其核心设计理念彻底改变了开发者构建交互式工具的方式。 一、vcpkg安装与特点介绍 1.1 安装 vcpkg install…...

分享一下这几天在公司学到的东西

这几天我学到了很多东西 &#xff08;1&#xff09;我自己原来写项目&#xff0c;前后端联调用的都是postman&#xff0c;然后直接测试接口&#xff0c;然后连一下就完了。这几天我接触到了apifox的Mock这个东西&#xff01;我知道了一个前端工程师进行前后端链条的时候&#…...

C# 将Excel格式文件导入到界面中,用datagridview显示

界面按钮不做介绍。 主要代码: //用于获取从上一个页面传过来datagridview标题 public DataTable GetHeader { get; set; } private void UI_EXPINFO_Load(object sender, EventArgs e) { //页面加载显示listbox1中可…...

Shell编程之正则表达式与文本

目录 一 正则表达式 1 正则表达式的定义 2 正则表达式用途 二 正则表达式类型 1 基础正则表达式示例 &#xff08;1&#xff09;查找特定字符 &#xff08;2&#xff09;利用中括号” [] “来查找集合字符 &#xff08;3&#xff09;查找行首” ^ “与行尾字符”$“ &…...

Spring JDBC 与数据访问:从性能优化到事务协同

在高并发场景&#xff08;如电商、金融等行业&#xff09;&#xff0c;数据库访问的性能和事务一致性是系统稳定性的关键。 Spring JDBC通过模板化操作和事务管理机制&#xff0c;大幅简化了传统 JDBC 繁琐的 API 处理&#xff0c;使数据库操作更加高效、安全、可维护。 一、…...

Markdown 编辑器的使用

欢迎使用 Markdown 编辑器 你好&#xff01; 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章&#xff0c;了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持&…...

自动化浏览器环境与 Node.js 环境的逆向分析:完整教程

在当今的 Web 开发中&#xff0c;了解浏览器环境与 Node.js 环境之间的差异是非常重要的&#xff0c;特别是当你希望进行自动化操作、逆向工程或进行跨平台开发时。在这篇教程中&#xff0c;我们将探讨如何通过 JavaScript 在浏览器中自动化环境检测、分析并对比 Node.js 和浏览…...

脉冲编码调制(PCM)在三角形信号中的应用

基于MATLAB平台&#xff0c;详细阐述脉冲编码调制&#xff08;PCM&#xff09;在三角形信号处理中的全流程实现。我这里将变量名更改为具有辨识度的Dogness_、Lhuu_&#xff0c;包括信号生成、均匀量化、编码、解码及解量化过程&#xff0c;为数字信号处理提供实践参考。 Dogne…...

# 03_Elastic Stack 从入门到实践(三)-- 4

03_Elastic Stack 从入门到实践&#xff08;三&#xff09;-- 4 七、Elasticsearch之中文分词器&#xff08;IK分词器&#xff09; 1、什么是分词&#xff1f; 分词&#xff1a;就是指将一个文本转化成一系列单词的过程&#xff0c;也叫文本分析&#xff0c;在Elasticsearch…...

前端VUE框架理论与应用(10)

1、记住全局注册的行为必须在根 Vue 实例 (通过 new Vue) 创建之前发生。 2、要注意,以 / 开头的嵌套路径会被当作根路径。 这让你充分的使用嵌套组件而无须设置嵌套的路径。 3、注意:在 Vue 实例内部,你可以通过 $router 访问路由实例。因此你可以调用 this.$router.push…...

基础学习:(6)nanoGPT

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言1 nanoGPT 浅尝1.1 基础环境1.2 prepare.py1.2 train.py1.3 sample.py 2 再探gpt2.1 layer_norm2.2 KQV 和 self attention2.3 masked self-attention2.4 调用构…...

python支持自定义基准的相对误差计算

def is_within_tolerance_custom(a, b, tolerance0.1, reference“max”): “”" 支持自定义基准的相对误差计算。 参数:reference (str): 基准类型&#xff0c;可选 "max"&#xff08;默认&#xff09;、"min"、"mean"、"a"&am…...

力扣DAY52-54 | 热100 | 图论:腐烂的橘子、课程表、前缀树

前言 中等 √ 腐烂的橘子用层次遍历&#xff0c;课程表用俩哈希表&#xff0c;前缀树基本与题解一致。however不太规范。 腐烂的橘子 我的题解 层次遍历&#xff0c;先找出所有腐烂的橘子进入队列并记录数量&#xff0c;接着内层遍历第一层腐烂的橘子&#xff0c;上下左右四…...

java CountDownLatch用法简介

CountDownLatch倒计数锁存器 CountDownLatch&#xff1a;用于协同控制一个或多个线程等待在其他线程中执行的一组操作完成&#xff0c;然后再继续执行 CountDownLatch用法 构造方法&#xff1a;CountDownLatch(int count)&#xff0c;count指定等待的条件数&#xff08;任务…...

科技项目验收测试报告有哪些作用?需要多长时间和费用?

在当今快速发展的科技环境中&#xff0c;科技项目的有效验收至关重要。对于公司、开发团队以及客户来说&#xff0c;科技项目验收测试报告更是一个不可缺少的一项重要环节。 科技项目验收测试报告是对一个项目在开发完成后所进行的一系列测试结果的总结。这份报告不仅用于证明…...

网络原理面试题

1.如何理解 URI? URI, 全称为(Uniform Resource Identifier), 也就是统一资源标识符,它的作用很简单,就是区分互联网上不同的资源。但是,它并不是我们常说的网址, 网址指的是URL, 实际上URI包含了URN和URL两个部分,由于 URL 过于普及,就默认将 URI 视为 URL 了。 URI 的…...

专为路由器和嵌入式设备设计的OpenWrt是什么?

OpenWrt是一款基于Linux内核的开源嵌入式操作系统,专为路由器和嵌入式设备设计。自2004年诞生以来,它已成为替代商业固件的首选方案,凭借其高度可定制性、模块化架构和活跃的开发者社区,广泛应用于家庭网络、企业级设备、物联网(IoT)及安全领域。以下从多个维度展开详细介…...

NVIDIA RTX™ GPU 低成本启动零售 AI 场景开发

零售行业正在探索应用 AI 升级客户体验&#xff0c;同时优化内部流程。面对多重应用场景以及成本优化压力&#xff0c;团队可采用成本相对可控的方案&#xff0c;来应对多重场景的前期项目预演和落地&#xff0c;避免短期内大规模投入造成的资源浪费。 客户体验 AI 场景的研究…...

element-ui自定义主题

此处的element-ui为基于vue2.x的 由于https://element.eleme.cn/#/zh-CN/theme/preview&#xff08;element的主题&#xff09;报错503&#xff0c; 所以使用https://element.eleme.cn/#/zh-CN/component/custom-theme 自定义主题文档中&#xff0c;在项目中改变scss变量的方…...

PhotoShop学习10

1.画板功能的使用 使用画板功能可以轻松针对不同的设备和屏幕尺寸设计网页和 APP。画板是一种容器&#xff0c;类似于特殊图层组。画板中的图层在图层面板中&#xff0c;按画板进行分组。 使用画板&#xff0c;一个文档中可以有多个设计版面&#xff0c;这样可以在画板之间轻…...

基于LLVM设计领域专用语言(DSL)的步骤——以激光微加工为例

1. 明确DSL的设计目标 在激光微加工领域&#xff0c;DSL需解决以下问题&#xff1a; • 工艺参数抽象化&#xff1a;激光功率、频率、扫描路径等需用高阶语法描述&#xff0c;而非底层G代码。 • 实时性要求&#xff1a;控制指令需低延迟编译为机器码&#xff08;如FPGA或运动控…...

【MAUI】IOS保活

文章目录 概述sevice使用 概述 每种方法都是独立的&#xff0c;可以根据应用的需求单独使用。例如&#xff0c;如果应用的主要功能是跟踪用户的地理位置&#xff0c;则可以仅使用后台定位&#xff1b;若是为了保持应用在后台运行以完成特定任务&#xff08;比如上传数据&#…...

shardingsphere-jdbc集成Seata分布式事务

1、导入相关依赖 <!-- shardingsphere-jdbc --><dependency><groupId>org.apache.shardingsphere</groupId><artifactId>shardingsphere-jdbc</artifactId><version>5.5.1</version></dependency><!-- shardingspher…...

基于区块链的技术应用探索

文章目录 前言一、区块链技术的核心特性1.1 去中心化1.2 不可篡改性1.3 透明性与可追溯性1.4 智能合约机制 二、区块链的典型应用场景2.1 金融与支付2.2 溯源与供应链管理2.3 数字身份与数据隐私2.4 数字资产与NFT2.5 公共服务与政务透明 三、区块链的分类1.按权限管理方式分类…...

MQ(RabbitMQ)消息重复消费问题的全面解决方案

MQ消息重复消费是分布式系统中的常见问题&#xff0c;主要由网络问题、消费者故障、消息重试机制等引起。以下是针对RabbitMQ的完整解决方案体系&#xff1a; 一、消息生产端解决方案 1. 消息幂等设计 全局唯一消息ID&#xff1a; MessageProperties props MessagePropert…...

windows Cursor 配置MCP的小坑

以高德地图MCP举例 按需求配置好以后&#xff0c;会提示 Client closed 解决方案&#xff0c; windows 需要更改一下 commandargs 新增一个npx保存后Cursor设置MCP页面Refresh一下即可&#xff0c;打开的终端不要关闭 最后贴一下文本代码&#xff0c;方便复制粘贴 {"m…...

探秘串口服务器厂家:背后的故事与应用

在科技飞速发展的今天&#xff0c;串口服务器作为连接串口设备与网络的桥梁&#xff0c;在工业自动化、智能交通、智能家居等众多领域发挥着关键作用。你是否好奇&#xff0c;那些生产串口服务器的厂家究竟有着怎样的故事&#xff1f;它们的产品背后又蕴含着怎样的原理呢&#…...

二叉树详细讲解(2/2)

4. 实现链式结构二叉树 ⽤链表来表⽰⼀棵⼆叉树&#xff0c;即⽤链来指⽰元素的逻辑关系。通常的⽅法是链表中每个结点由三个域组成&#xff0c;数据域和左右指针域&#xff0c;左右指针分别⽤来给出该结点左孩⼦和右孩⼦所在的链结点的存储地址&#xff0c;其结构如下&#…...

SpringBoot整合Redis限流

通过一个完整的Spring Boot项目演示如何用Redis实现简单的API限流功能。我们将从零开始搭建项目。 一、环境准备 1.1 开发环境要求 JDK 1.8IntelliJ IDEA&#xff08;推荐&#xff09;Redis 5.0&#xff08;本地安装&#xff09;Postman&#xff08;测试用&#xff09; 1.2…...

(Matlab)自动驾驶仿真 设计驾驶场景、配置传感器并生成合成 数据

驾驶场景仿真平台核心功能 一、场景搭建与编辑 ‌可视化场景构建‌ 使用拖放界面创建道路网络和角色模型&#xff08;车辆、行人等&#xff09;支持欧洲新车评估计划&#xff08;Euro NCAP&#xff09;测试协议及其他预置场景模板 二、传感器配置 ‌车载传感器系统‌ 支持…...

接口测试(get请求方法)-----------实战演练

1.最简单的get请求方法 eg:请求一个王者荣耀语音包的接口 接口文档如下&#xff1a; 2.把接口地址、请求方法、请求参数写到postman相应位置 3.填写请求参数的值&#xff0c;点击发送按钮&#xff0c;即可获得到返回参数...

【赵渝强老师】TiDB的列存引擎:TiFlash

TiDB的TiFlash提供列式存储&#xff0c;且拥有借助ClickHouse高效实现的协处理器层。除此以外&#xff0c;它与TiKV非常类似&#xff0c;依赖同样的Multi-Raft体系&#xff0c;以Region为单位进行数据复制和分散。TiFlash以低消耗不阻塞TiKV写入的方式&#xff0c;实时复制TiKV…...

《vue3学习手记3》

标签的ref属性 vue3和vue2中的ref属性&#xff1a; 用在普通DOM标签上&#xff0c;获取的是DOM节点 ref用在组件标签上&#xff0c;获取的是组件实例对象 区别在于&#xff1a; 1.vue3中person子组件中的数据父组件App不能直接使用&#xff0c;需要引入并使用defineExpose才可…...

【Vue】从 MVC 到 MVVM:前端架构演变与 Vue 的实践之路

个人博客&#xff1a;haichenyi.com。感谢关注 一. 目录 一–目录二–架构模式的演变背景​三–MVC&#xff1a;经典的分层起点​四–MVP&#xff1a;面向接口的解耦尝试​五–MVVM&#xff1a;数据驱动的终极形态​​六–Vue&#xff1a;MVVM 的现代化实践​​​ 二. 架构模…...

Docker Compose 命令实现动态构建和部署

Docker Compose 命令实现动态构建和部署 一、编写支持动态版本号的 docker-compose.yml version: 3.8services:myapp:build: context: . # Dockerfile所在目录args:APP_VERSION: ${TAG:-latest} # 从环境变量获取版本号&#xff0c;默认latestimage: myapp:${TAG:-latest} …...

工厂模式实现案例

场景一&#xff1a;配置文件解析&#xff08;工厂模式实现&#xff09; 1. 定义解析器接口与具体实现 from abc import ABC, abstractmethod import json import yaml # 需要安装PyYAML库&#xff1a;pip install pyyamlclass ConfigParser(ABC):"""配置文件解…...

Vue3.5 企业级管理系统实战(十五):其他全局设置项

在设置面板中&#xff0c;除了主题颜色的选择设置&#xff0c;还可以添加其他全局配置选项&#xff0c;如 tagsView 导航栏&#xff0c;Logo 的显示隐藏配置等。 1 Settings 的 Pinia 配置 在 src/stores/settings.ts 中添加要持久存储的全局配置项&#xff0c;这里是 tagsVi…...

L2-052 吉利矩阵分

L2-052 吉利矩阵 - 团体程序设计天梯赛-练习集 所有元素为非负整数&#xff0c;且各行各列的元素和都等于 7 的 33 方阵称为“吉利矩阵”&#xff0c;因为这样的矩阵一共有 666 种。 本题就请你统计一下&#xff0c;把 7 换成任何一个 [2,9] 区间内的正整数 L&#xff0c;把矩…...

408 计算机网络 知识点记忆(9)

前言 本文基于王道考研课程与湖科大计算机网络课程教学内容&#xff0c;系统梳理核心知识记忆点和框架&#xff0c;既为个人复习沉淀思考&#xff0c;亦希望能与同行者互助共进。&#xff08;PS&#xff1a;后续将持续迭代优化细节&#xff09; 往期内容 408 计算机网络 知识…...

矩阵基础+矩阵转置+矩阵乘法+行列式与逆矩阵

GPU渲染过程 矩阵 什么是矩阵&#xff08;Matrix&#xff09; 向量 &#xff08;3&#xff0c;9&#xff0c;88&#xff09; 点乘&#xff1a;计算向量夹角 叉乘&#xff1a;计算两个向量构成平面的法向量。 矩阵 矩阵有3行&#xff0c;2列&#xff0c;所以表示为M32 获取固…...

如何在 .NET 环境中使用 Npgsql 驱动连接 KaiwuDB

在现代软件开发中&#xff0c;数据库连接和操作是任何应用程序的核心部分。本文将介绍如何在 .NET 环境下&#xff0c;使用 Npgsql 驱动连接 KaiwuDB&#xff0c;并执行基本的数据库操作&#xff0c;包括创建表、插入数据和查询操作。我们假设您已经安装并配置好了 KaiwuDB 数据…...

【代理错误 django】Request error: HTTPSConnectionPool(host=‘‘, port=443): 、

❗问题 ❶&#xff1a;仍然是代理错误&#xff08;ProxyError&#xff09; 错误日志&#xff1a; Request error: HTTPSConnectionPool(hostxueshu.baidu.com, port443): Max retries exceeded ... Caused by ProxyError(Unable to connect to proxy, FileNotFoundError(2, N…...

5.9 《GPT-4调试+测试金字塔:构建高可靠系统的5大实战策略》

5.4 测试与调试:构建企业级质量的保障体系 关键词:测试金字塔模型、GPT-4调试助手、LangChain调试模式、异步任务验证 测试策略设计(测试金字塔实践) #mermaid-svg-RblGbJVMnCIShiCW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill…...

Maven 多仓库和多镜像配置

Maven是一个流行的Java项目构建和管理工具。在Maven中&#xff0c;我们可以配置多个仓库源来下载和管理依赖项。同时&#xff0c;我们还可以使用repositories和mirrors进行配置&#xff0c;以满足特定的需求。 首先&#xff0c;让我们了解一下repositories和mirrors的作用。在M…...

案例驱动的 IT 团队管理:创新与突破之路:第五章 创新管理:从机制设计到文化养成-5.1 创新激励体系-5.1.3失败案例的价值转化机制

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 失败案例的价值转化机制&#xff1a;IT团队创新管理中的"黑天鹅"炼金术1. 认知重构&#xff1a;重新定义失败的价值1.1 传统失败管理的困境1.2 失败价值转化模型 …...

华为纯血 卓易通 使用记录

&#xff08;1&#xff09;我们在测试华为纯血的时候&#xff0c;发现了&#xff0c;使用咱们的基站上的wifi, wifi与手机终端是互相ping 通的&#xff0c; 手机可以发信号到基站&#xff0c;但基站收到信号后&#xff0c;也发出信号 &#xff0c;但信号 不能到达手机。 这个是…...