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

Apache Hive--排序函数解析

在大数据处理与分析中,Apache Hive是一个至关重要的数据仓库工具。其丰富的函数库为数据处理提供了诸多便利,排序函数便是其中一类非常实用的工具。通过排序函数,我们能够在查询结果集中为每一行数据分配一个排名值,这对于数据分析、报表生成等工作具有重要意义。本文将深入探讨Apache Hive中的排序函数,通过具体的HQL代码和数据实例进行说明,并阐述它们之间的区别。

0. 排序函数:ORDER、SORT、CLUSTER

ORDER BY

  1. 功能ORDER BY 会对整个数据集按照指定的列进行全局排序,确保最终输出的结果是完全有序的。
  2. 代码示例
    假设我们有之前创建的 student_scores 表,包含 student_name(学生姓名)和 score(成绩)字段。
SELECT student_name, score
FROM student_scores
ORDER BY score DESC;
  1. 结果展示
student_namescore
David95
Bob90
Cathy90
Alice85
Charlie85

整个结果集按照成绩从高到低进行了全局排序。

SORT BY

  1. 功能SORT BY 用于在每个Reducer内对数据进行排序。它不会对整个数据集进行全局排序,而是在每个Reducer的分区内进行排序,在处理大规模数据时可提高处理效率。
  2. 代码示例
SET mapreduce.job.reduces = 3; -- 设置Reducer数量为3
SELECT student_name, score
FROM student_scores
SORT BY score DESC;
  1. 结果展示
    由于 SORT BY 是在每个Reducer内排序,结果会根据Reducer的处理情况而有所不同。假设每个Reducer处理的数据如下(实际情况可能因数据分配方式不同而不同):
  • Reducer 1
student_namescore
David95
  • Reducer 2
student_namescore
Bob90
Cathy90
  • Reducer 3
student_namescore
Alice85
Charlie85

每个Reducer内的数据按成绩降序排列,但整体结果集并非全局有序。

CLUSTER BY

  1. 功能CLUSTER BY 用于对数据进行分桶操作,它会根据指定的列对数据进行哈希运算,将数据均匀分布到不同的桶(bucket)中,同时在每个桶内对数据按指定列进行排序。这在数据量较大时,有助于提升查询性能,特别是在进行连接(join)操作以及与排序相关的操作时。
  2. 代码示例
-- 创建按score分桶的学生成绩表
CREATE TABLE student_scores_clustered (student_name STRING,score INT
)
CLUSTERED BY (score) INTO 2 BUCKETS;-- 将数据插入到分桶表
INSERT INTO TABLE student_scores_clustered
SELECT student_name, score
FROM student_scores;-- 查询分桶表
SELECT student_name, score
FROM student_scores_clustered;
  1. 结果展示
    数据会根据 score 列的哈希值分配到不同的桶中,并且在每个桶内按 score 排序。假设分桶结果如下(实际情况可能因哈希算法和数据分布不同而不同):
  • Bucket 1
student_namescore
David95
Bob90
Cathy90
  • Bucket 2
student_namescore
Alice85
Charlie85

每个桶内的数据按 score 排序。

小结

ORDER BY 用于全局排序,适用于需要最终结果完全有序的场景,但处理大数据时性能可能较低。
SORT BY 在每个 Reducer 内排序,适用于大规模数据处理,提高处理效率,但不保证全局有序。
CLUSTER BY 进行分桶并在桶内排序,主要用于优化特定查询(如 join)的性能,同时结合了分桶和局部排序的功能。

1. ROW_NUMBER窗口函数

1.1 功能概述

ROW_NUMBER窗口函数为结果集中的每一行分配一个唯一的连续排名值,从1开始,按照ORDER BY子句指定的顺序递增。无论数据值是否相同,其排名都不会出现重复,且是连续的。

1.2 代码示例

假设有一个学生成绩表student_scores,包含student_name(学生姓名)和score(成绩)字段:

CREATE TABLE student_scores (student_name STRING,score INT
);INSERT INTO student_scores VALUES
('Alice', 85),
('Bob', 90),
('Cathy', 90),
('Charlie', 85),
('David', 95);

使用ROW_NUMBER函数对学生成绩进行排名的查询如下:

SELECTstudent_name,score,ROW_NUMBER() OVER (ORDER BY score DESC) AS rank
FROMstudent_scores;

上述代码中,ROW_NUMBER() OVER (ORDER BY score DESC)表示按照score降序排列,为每一行数据分配一个唯一的排名。

1.3 结果展示

执行上述查询后,结果如下:

student_namescorerank
David951
Bob902
Cathy903
Alice854
Charlie855

2. RANK窗口函数

2.1 功能概述

RANK窗口函数同样用于为结果集的行分配排名。但当遇到相同值时,会分配相同的排名,并且下一个排名会跳过相应的数量。例如,如果有两个并列第2名,那么下一个排名将是第4名。

2.2 代码示例

仍以上述student_scores表为例,使用RANK函数进行排名的查询为:

SELECTstudent_name,score,RANK() OVER (ORDER BY score DESC) AS rank
FROMstudent_scores;

2.3 结果展示

执行该查询后,结果如下【相同分数的排名是随机的】:

student_namescorerank
David951
Bob902
Cathy902
Alice854
Charlie854

可以看到,Bob和Cathy成绩相同,排名都是2,下一个排名直接跳到了4。

3. DENSE_RANK窗口函数

3.1 功能概述

DENSE_RANK窗口函数也用于排名,与RANK函数不同之处在于,当遇到相同值时,虽然也会分配相同的排名,但下一个排名不会跳过。即即使有并列情况,排名依然是连续的。

3.2 代码示例

还是针对student_scores表,使用DENSE_RANK函数排名的查询为:

SELECTstudent_name,score,DENSE_RANK() OVER (ORDER BY score DESC) AS rank
FROMstudent_scores;

3.3 结果展示

执行查询后,结果如下【相同分数的排名是随机的】:

student_namescorerank
David951
Bob902
Cathy902
Alice853
Charlie853

这里Bob和Cathy并列第2名,下一个排名是第3名,没有跳过。

结合partition by 进行使用实现组内排序

在 Apache Hive 中,PARTITION BY 子句与排序窗口函数结合使用时,会先将数据按照指定的列进行分区,然后在每个分区内分别应用排序函数。这在处理需要分区统计排名的场景中非常有用。
ROW_NUMBER 窗口函数结合 PARTITION BY
功能说明:在每个分区内,ROW_NUMBER 函数为每一行分配一个唯一的连续排名值,从 1 开始,按照 ORDER BY 子句指定的顺序递增。不同分区之间的排名相互独立。
代码示例:假设 student_scores 表新增 class(班级)字段,现在要查询每个班级内学生成绩的排名。

-- 创建包含班级字段的学生成绩表
CREATE TABLE student_scores (student_name STRING,score INT,class STRING
);-- 插入数据
INSERT INTO student_scores VALUES
('Alice', 85, 'Class1'),
('Bob', 90, 'Class1'),
('Charlie', 85, 'Class2'),
('David', 95, 'Class2');-- 使用ROW_NUMBER函数结合PARTITION BY查询
SELECTstudent_name,score,class,ROW_NUMBER() OVER (PARTITION BY class ORDER BY score DESC) AS rank
FROMstudent_scores;

结果展示:

student_namescoreclassrank
Bob90Class11
Alice85Class12
David95Class21
Charlie85Class22

在这个结果中,PARTITION BY class 将数据按班级分为 Class1 和 Class2 两个分区,ROW_NUMBER 函数在每个分区内分别对学生成绩进行排名。
RANK 窗口函数结合 PARTITION BY
功能说明:与 ROW_NUMBER 类似,不过在每个分区内,当遇到相同值时,RANK 函数会分配相同的排名,并且下一个排名会跳过相应的数量。
代码示例:

SELECTstudent_name,score,class,RANK() OVER (PARTITION BY class ORDER BY score DESC) AS rank
FROMstudent_scores;

结果展示:

student_namescoreclassrank
Bob90Class11
Alice85Class12
David95Class21
Charlie85Class22

同样,在每个班级分区内,按照成绩排名,相同成绩的学生排名相同,下一个排名会跳过相应数量。
DENSE_RANK 窗口函数结合 PARTITION BY
功能说明:在每个分区内,DENSE_RANK 函数遇到相同值时也会分配相同的排名,但下一个排名不会跳过,保持排名的连续性。
代码示例:

SELECTstudent_name,score,class,DENSE_RANK() OVER (PARTITION BY class ORDER BY score DESC) AS rank
FROMstudent_scores;

结果展示:

student_namescoreclassrank
Bob90Class11
Alice85Class12
David95Class21
Charlie85Class22

在每个班级分区内,排名是连续的,即使有相同成绩的学生,下一个排名也不会跳过。

小结

  • ROW_NUMBER:分配唯一且连续的排名,无论数据值是否重复,排名都不会间断。
  • RANK:相同数据值分配相同排名,下一个排名会跳过相应数量,导致排名可能不连续。
  • DENSE_RANK:相同数据值分配相同排名,但下一个排名不会跳过,排名始终连续。

排序函数的优化

在Apache Hive中优化排序函数的性能,可从以下几个关键方面着手:

1. 数据预处理

  • 数据过滤:在使用排序函数前,尽量通过WHERE子句对数据进行过滤,减少参与排序的数据量。例如,在上述student_scores表中,如果我们只关心成绩大于80分的学生排名,可在查询中添加WHERE条件:
SELECTstudent_name,score,ROW_NUMBER() OVER (ORDER BY score DESC) AS rank
FROMstudent_scores
WHEREscore > 80;
  • 数据抽样:对于大规模数据集,可先进行抽样处理,对抽样数据进行排序分析,获取大致结果。这在对数据整体趋势有初步了解时很有用。比如,从海量销售数据中抽取1%的数据来分析销售排名趋势。

2. 合理使用分区

  • 分区表设计:将数据按合适的列进行分区,可显著提高排序性能。比如,在销售数据中,按日期分区,查询某段时间内的销售排名时,Hive可直接在相关分区内操作,减少扫描的数据量。
-- 创建按日期分区的销售表
CREATE TABLE sales (product STRING,quantity INT
)
PARTITIONED BY (sale_date STRING);
  • 分区裁剪:查询时,Hive会自动进行分区裁剪,只读取相关分区的数据。例如:
SELECTproduct,quantity,RANK() OVER (ORDER BY quantity DESC) AS rank
FROMsales
WHEREsale_date BETWEEN '2023-01-01' AND '2023-01-31';

3. 选择合适的排序函数

  • 根据业务需求:明确业务场景对排名的具体要求,合理选择ROW_NUMBERRANKDENSE_RANK。如果需要唯一且连续的排名,ROW_NUMBER是最佳选择;若允许并列排名且排名可间断,RANK更合适;若要并列排名且排名连续,DENSE_RANK是正确之选。避免因错误选择函数导致不必要的计算。
  • 函数性能差异:虽然这三个排序函数在功能上有差异,但性能差异相对较小。不过,ROW_NUMBER由于不需要处理并列排名情况,在数据量极大且无并列值的情况下,理论上可能会稍快一些。

4. 配置参数调整

  • 内存分配:适当增加Hive任务的内存分配,可使排序操作更高效。通过修改hive-site.xml文件中的相关参数,如mapreduce.map.memory.mbmapreduce.reduce.memory.mb,为排序操作提供足够内存。
  • 并行度调整:合理调整MapReduce任务的并行度,可充分利用集群资源。例如,根据集群节点数量和数据量,设置mapreduce.job.mapsmapreduce.job.reduces参数,提高排序任务的执行效率。

5. 索引使用【高版本hive】

  • 创建索引:对排序依据的列创建索引,能加快排序速度。例如,在student_scores表中,对score列创建索引:
CREATE INDEX score_index ON TABLE student_scores(score);
  • 索引维护:定期维护索引,确保其有效性。当数据发生大量插入、更新或删除操作后,重建或优化索引,以保证排序性能。

总结

Apache Hive的排序函数在多种场景下都有广泛应用。在数据分析中,当我们需要明确数据的先后顺序,如找出成绩排名前几的学生、销售额排名靠前的产品等,ROW_NUMBER函数可提供精确且唯一的排名,适用于严格区分先后顺序的场景。而在一些竞赛排名、成绩评级等场景中,如果允许并列排名且需要体现排名的间断性,RANK函数更为合适。对于希望在并列排名时保持排名连续性的场景,比如分析员工绩效等级,DENSE_RANK函数则能满足需求。这些排序函数为数据处理和分析提供了灵活多样的方式,帮助数据分析师和工程师更高效地从海量数据中提取有价值的信息。

相关文章:

Apache Hive--排序函数解析

在大数据处理与分析中,Apache Hive是一个至关重要的数据仓库工具。其丰富的函数库为数据处理提供了诸多便利,排序函数便是其中一类非常实用的工具。通过排序函数,我们能够在查询结果集中为每一行数据分配一个排名值,这对于数据分析…...

LLMs之Dataset:中文互联网基础语料2.0的简介、下载和使用方法、案例应用之详细攻略

LLMs之Dataset:中文互联网基础语料2.0的简介、下载和使用方法、案例应用之详细攻略 目录 中文互联网基础语料2.0的简介 1、特点 中文互联网基础语料2.0的下载和使用方法 中文互联网基础语料2.0的案例应用 中文互联网基础语料2.0的简介 2025年1月发布&#xff0…...

深入剖析iOS网络优化策略,提升App性能

一、引言 在当今移动互联网时代,iOS 应用的网络性能直接关系到用户体验。无论是加载速度缓慢、频繁的网络错误,还是高额的流量消耗,都可能导致用户流失。因此,iOS 网络优化成为开发者提升应用质量、增强用户满意度的关键环节。本文…...

unity2022以上导出到AndroidStudio后更新步骤

1、unity里面Export出unityLibrary 2、导出apk,里面才包含libil2cpp(新版unity无法直接导出libil2cpp 3、注释AS项目app下的build.gradle里面包含unityLibrary的代码 4、注释AS项目settings.gradle包含unityLibrary的代码 5、删除AS项目里面的unityLibrary文件夹 6、…...

03JavaWeb——Ajax-Vue-Element(项目实战)

1 Ajax 1.1 Ajax介绍 1.1.1 Ajax概述 我们前端页面中的数据,如下图所示的表格中的学生信息,应该来自于后台,那么我们的后台和前端是互不影响的2个程序,那么我们前端应该如何从后台获取数据呢?因为是2个程序&#xf…...

表单中在不设置required的情况下在label前加*必填标识

参考:https://blog.csdn.net/qq_55798464/article/details/136233718 需求:在发票类型前面添加*必填标识 我最开始直接给发票类型这个表单类型添加了验证规则required:true,问题来了,这个发票类型它是有默认值的,所以我点击保存…...

Mac 使用 GVM 管理多版本 Go 环境

使用 GVM 管理多版本 Go 环境 在本文中,我们将使用 gvm(Go Version Manager)工具管理本地多个 Go 语言版本。gvm 功能类似于 Python 的 Anaconda,可以方便地切换不同版本的 Go 环境,非常适合需要多版本开发与测试的场…...

3DsMax设置中文界面

按键盘上的“Win”键,直接输入3dsmax,选择Simplified Chinese打开,之后就都是中文了...

【PyCharm】连接 Git

【PyCharm】相关链接 【PyCharm】连接 Git【PyCharm】连接Jupyter Notebook【PyCharm】快捷键使用【PyCharm】远程连接Linux服务器【PyCharm】设置为中文界面 要在 PyCharm 中连接 Git,确保您的开发环境已经安装了 Git,并且 PyCharm 能够访问它。 以下…...

使用Python和PIL裁剪图片以适应屏幕宽高比

在本教程中,我们将介绍如何使用Python和PIL(Python Imaging Library)库来裁剪图片,使其适应特定的屏幕宽高比。我们将详细解释代码的每个部分,并展示如何根据不同的裁剪模式来调整图片。 1. 安装PIL库 首先&#xff…...

Django简介与虚拟环境安装Django

目录 1.Django简介 1.1 Django 的核心特点 1.2 Django 的核心组件 1.3 Django 的应用场景 1.4 总结 2.基础环境建立 2.1 创建虚拟环境 2.1.1 使用 virtualenv 创建虚拟环境 2.1.2 使用 venv 创建虚拟环境 2.2 激活虚拟环境 2.2.1 在 Windows 上 2.2.2 在 macOS 或 …...

python实现pdf转word和excel

一、引言   在办公中,我们经常遇收到pdf文件格式,因为pdf格式文件不易修改,当我们需要编辑这些pdf文件时,经常需要开通会员或收费功能才能使用编辑功能。今天,我要和大家分享的,是如何使用python编程实现…...

Ubuntu 24.04 LTS 更改软件源

Ubuntu 24.04 LTS 修改软件源...

从CRUD到高级功能:EF Core在.NET Core中全面应用(三)

目录 IQueryable使用 原生SQL使用 实体状态跟踪 全局查询筛选器 并发控制使用 IQueryable使用 在EFCore中IQueryable是一个接口用于表示可查询的集合,它继承自IEnumerable但具有一些关键的区别,使得它在处理数据库查询时非常有用,普通集…...

浅谈云计算22 | Kubernetes容器编排引擎

Kubernetes容器编排引擎 一、Kubernetes管理对象1.1 Kubernetes组件和架构1.2 主要管理对象类型 二、Kubernetes 服务2.1 服务的作用与原理2.2 服务类型 三、Kubernetes网络管理3.1 网络模型与目标3.2 网络组件3.2.1 kube-proxy3.2.2 网络插件 3.3 网络通信流程 四、Kubernetes…...

C 语言的void*到底是什么?

一、void* 的类型任意性 void* 是一种通用指针类型。它可以指向任意类型的数据。例如,它可以指向一个整数(int)、一个浮点数(float)、一个字符(char)或者一个结构体等。在C语言中,当…...

前端【3】--CSS布局,CSS实现横向布局,盒子模型

盒子分类 1、块级盒子 2、内联级盒子 3、内联块级盒子 4、弹性盒子 5、盒子内部分区 方法一:使用 float 普通盒子实现横向布局 方法二:使用 display: inline-block 内联块级元素实现横向布局 方法三:使用弹性盒子 flexbox&#xff0…...

JavaEE

一.web开发概述 1.服务器 解释1:服务器是一款软件,可以向其他发送请求,服务器会做出一个响应。可以在服务器中部署文件,让其他人访问。 解释2:也可以把运行服务器软件的计算机称为服务器 2.安装服务器 Tomcat官方…...

C语言之文本加密程序设计

🌟 嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 文本加密程序设计 摘要:本文设计了一种文本加密程序,旨在提高信息安…...

Spring-Data-Redis连接模式

Redis可以在各种设置中操作。每个操作模式都需要特定的配置,这些配置将在以下部分中进行解释。 一、Redis 单机模式 最简单的入门方法是将Redis Standalone与单个Redis服务器一起使用, 配置LettuceConnectionFactory或JedisConnectionFactor&#xff0…...

详细介绍下linux内核的高端地址

在32位系统中,内核空间通常占据1GB,用户空间占3GB,这主要是基于历史原因、内存管理需求和系统安全性考虑。 历史原因:早期的UNIX系统就采用了将内核空间和用户空间分离的设计,在32位系统设计时,延续了这种…...

ThinkPhp项目解决静态资源请求的跨域问题的解决思路

背景&#xff1a;我在前端使用vue语言开发的&#xff0c;请求的后端是用ThinkPhp项目开发的。我vue项目里的请求php接口&#xff0c;自带header参数的跨域问题通过网上查询到的server端配置方法已经解决了。我使用的 是中间件的配置方法&#xff1a; <?php//admin 项目 配…...

通过图形界面展现基于本地知识库构建RAG应用

1. 客户需求 快速完成概念验证(PoC)通过图形界面快速完成演示本地私有数据对比不同模型和成本&#xff0c;决定如何部署 2. 阿里云基于本地知识库构建RAG应用 参考方案&#xff1a; 百炼本地知识库方案 解决方案&#xff1a; FastAPI Gradio Llamaindex qwen-plus 主要三大…...

GCPAAS/DashBoard:完全免费的仪表盘设计,基于Vue+ElementUI+G2Plot+Echarts,开源代码,简单易用!还在等什么呢

嗨&#xff0c;大家好&#xff0c;我是小华同学&#xff0c;关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 GCPAAS/DashBoard&#xff0c;一款基于SpringBoot、MyBatisPlus、ElementUI、G2Plot、Echarts等技术栈的仪表盘设计器&#xff0c;具备仪表盘目录管理…...

深度学习笔记——循环神经网络RNN

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍面试过程中可能遇到的循环神经网络RNN知识点。 文章目录 文本特征提取的方法1. 基础方法1.1 词袋模型&#xff08;Bag of Words, BOW&#xff09;工作原…...

【Linux系统编程】—— 深度解析进程等待与终止:系统高效运行的关键

文章目录 进程创建再次认识fork()函数fork()函数返回值 写时拷贝fork常规⽤法以及调用失败的原因 进程终⽌进程终止对应的三种情况进程常⻅退出⽅法_exit函数exit函数return退出 进程等待进程等待的必要性进程等待的⽅法 进程创建 再次认识fork()函数 fork函数初识&#xff1…...

EPSANet2021笔记

来源&#xff1a; EPSANet: An Efficient Pyramid Squeeze Attention Block on Convolutional Neural Network 相关工作&#xff1a; #注意力机制 #多尺度特征表示 创新点&#xff1a; 贡献&#xff1a; 建立了长距离通道依赖关系有效获取利用不同尺度特征图的空间信息 问…...

CTTSHOW-WEB入门-信息搜集11-20

web11 1. 题目&#xff1a; 2. 解题步骤及思路&#xff1a;本题的flag已经给出&#xff0c;主要考点是考察域名的查询&#xff0c;通过查询有时候也可以得到一些有用的信息。 3. 相关知识点&#xff1a;查询域名可以使用nslookup命令使用方法如下&#xff1a;&#xff08;windo…...

2025年1月19日(理论力学动静法)

动静法&#xff08;Dynamic-Static Method&#xff09;是理论力学中常用的一种分析方法&#xff0c;用来求解多自由度系统的平衡问题&#xff0c;尤其适用于静力学分析和动力学分析之间的转化。动静法通过引入虚拟的动力学效应&#xff0c;将静力学问题转化为一个动力学问题&am…...

iOS 性能优化:实战案例分享

摘要&#xff1a; 本文将深入探讨 iOS 性能优化的重要性&#xff0c;并通过一系列实际开发案例&#xff0c;展示如何解决常见的性能问题&#xff0c;包括内存管理、CPU 性能、网络性能、UI 性能和启动性能等方面的优化&#xff0c;帮助 iOS 开发者打造更流畅、高效的应用程序。…...

基于本地消息表实现分布式事务

假设我们有一个电商系统,包含订单服务和库存服务。当用户下单时,需要在订单服务中创建订单,同时在库存服务中扣减库存。这是一个典型的分布式事务场景,我们需要保证这两个操作要么都成功,要么都失败,以保证数据的最终一致性。 项目结构: 订单服务(Order Service)库存服务(Inv…...

select函数

系统调用 select()可用于执行 I/O 多路复用操作&#xff0c;调用 select()会一直阻塞&#xff0c;直到某一个或多个文件描述符成为就绪态&#xff08;可以读或写&#xff09;。其函数原型如下所示&#xff1a; #include <sys/select.h> int select(int nfds, fd_set *re…...

自然语言处理——自注意力机制

一、文字表示方法 在自然语言处理中&#xff0c;如何用数据表示文字是基础问题。独热编码&#xff08;One-hot Encoding &#xff09;是一种简单的方法&#xff0c;例如对于 “我”“你”“他”“猫”“狗” 等字&#xff0c;会将其编码为如 “我 [1 0 0 0 0 ……]”“你 [0 …...

C语言初阶--函数

目录 1. 函数是什么&#xff1f; 2. C语言中函数的分类 2.1 库函数 2.2 自定义函数 3. 函数的参数 3.1 实际参数&#xff08;实参&#xff09; 3.2 形式参数&#xff08;形参&#xff09; 4. 函数调用 4.1 传值调用 4.2 传址调用 练习&#xff1a;写一个函数判断一个…...

探索基于机器学习的信用评分:从数据到洞察

友友们好! 我的新专栏《Python进阶》正式启动啦!这是一个专为那些渴望提升Python技能的朋友们量身打造的专栏,无论你是已经有一定基础的开发者,还是希望深入挖掘Python潜力的爱好者,这里都将是你不可错过的宝藏。 在这个专栏中,你将会找到: ● 深入解析:每一篇文章都将…...

Ubuntu 24.04 LTS 通过 docker desktop 安装 seafile 搭建个人网盘

准备 Ubuntu 24.04 LTSUbuntu 空闲硬盘挂载Ubuntu 安装 Docker Desktop [我的Ubuntu服务器折腾集](https://blog.csdn.net/jh1513/article/details/145222679。 安装 seafile 参考资料 Docker安装 Seafile OnlyOffice 并配置OnlyOffice到Seafile&#xff0c;实现在线编辑…...

【Golang 面试题】每日 3 题(三十六)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…...

Linux虚拟机安装与FinalShell使用:探索Linux世界的便捷之旅

文章目录 软件准备安装 VMware 虚拟机下载CentOS 光盘镜像文件选择适合的 CentOS 版本选择合适的镜像文件 本教程工具版本 第一部分&#xff1a;安装 Linux 虚拟机1. 启动 VMware 并创建新虚拟机2. 默认硬件兼容性设置3. 安装操作系统的设置4. 选择操作系统类型与版本5. 为虚拟…...

leetcode19-删除链表的第n结点

leetcode 19 思路 要删除倒数第n个元素&#xff0c;那么就要找到倒数第n1个元素&#xff0c;那么我们需要两个指针来记录&#xff0c;首先快指针需要先走n1步&#xff0c;然后快慢指针一起进行移动&#xff0c;直到快指针为null的时候&#xff0c;此时慢指针恰好走到倒数第n…...

多学科视角下探索开源Github、Git初步学习

​ Think 1.Github 作为现今最主流的代码托管平台、协作平台甚至是“社交平台”&#xff0c;本身是闭源的。一方面&#xff0c;它是和大多数开发者连接最紧密的开源阵地&#xff0c;另一方面&#xff0c;拥有传统“黑客精神”的人认为将用户身份绑定这样一个闭源平台上恰恰与…...

新星杯-ESP32智能硬件开发--ESP32的I/O组成-系统中断矩阵

本博文内容导读&#x1f4d5;&#x1f389;&#x1f525; ESP32开发板的中断矩阵、功能描述与实现、相关API和示例程序进行介绍 ESP32中断矩阵将任一外部中断源单独分配到每个CPU的任一外部中断上&#xff0c;提供了强大的灵活性&#xff0c;能适应不同的应用需求。 ESP32中断主…...

Android 右键后无Java class创建

Android studio 创建java class &#xff1a; 最近几个月用Android studio 开发&#xff0c;因为电脑设置了一个新的用户使用&#xff0c;原来的android studio,打开之前的正常的项目总是报一些奇奇怪怪的错误&#xff0c;就重新安装了最新的版本 问题描述 但是新的android s…...

leetcode-买卖股票问题

309. 买卖股票的最佳时机含冷冻期 - 力扣&#xff08;LeetCode&#xff09; 动态规划解题思路&#xff1a; 1、暴力递归&#xff08;难点如何定义递归函数&#xff09; 2、记忆化搜索-傻缓存法&#xff08;根据暴力递归可变参数确定缓存数组维度&#xff09; 3、严格表结构依…...

如何通过 Apache Airflow 将数据导入 Elasticsearch

作者&#xff1a;来自 Elastic Andre Luiz 了解如何通过 Apache Airflow 将数据导入 Elasticsearch。 Apache Airflow Apache Airflow 是一个旨在创建、安排&#xff08;schedule&#xff09;和监控工作流的平台。它用于编排 ETL&#xff08;Extract-Transform-Load&#xff0…...

LDPC (Low-Density Parity-Check) 码min_sum、n_0、block_length 和 rate参数

1. min_sum 1; min_sum 是与 最小和解码算法&#xff08;Min-Sum Decoding Algorithm&#xff09;相关的参数。最小和解码算法是 LDPC 码的一种常用解码方法&#xff0c;主要通过传递信号的信息在接收端进行解码。此参数表示最小和算法中的缩放因子。 在 LDPC 解码过程中&am…...

基于javaweb的SpringBoot景区旅游管理系统设计和实现(源码+文档+部署讲解)

个人名片 &#x1f525; 源码获取 | 毕设定制| 商务合作&#xff1a;《个人名片》 ⛺️心若有所向往,何惧道阻且长 文章目录 个人名片运行环境技术栈适用功能说明使用说明 运行环境 Java≥8、MySQL≥5.7 1.运行环境&#xff1a;最好是java jdk 1.8&#xff0c;我们在这个平台…...

(二)afsim第三方库编译(qt编译)

注意&#xff1a;源码编译的路径不能有中文否则报错&#xff0c;压缩包必须用官网下载的xz格式解压的才可以&#xff0c;否则sudo ./configure命令找不到 先编译openssl3.1.1软件包&#xff0c;否则编译的qt库将不支持network&#xff0c;相关库的编译(上文&#xff08;一&…...

重学SpringBoot3-Spring Retry实践

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞??收藏评论 重学SpringBoot3-Spring Retry实践 1. 简介2. 环境准备3. 使用方式 3.1 注解方式 基础使用自定义重试策略失败恢复机制重试和失败恢复效果注意事项 3.2 编程式使用3.3 监听重试过程 监…...

极域电子教室破解(JiyuTrainer)

JiyuTrainer下载 byebye极域电脑安装包也可以使用 如果只玩单机游戏最简单的办法就是拔网线 另一种办法安装360卫士通过360卫安全卫士上网设置来进行禁用JiyuTrainer网络跟拔网线一样...

Oracle数据库传统审计怎么用

Oracle数据库传统审计怎么用 审计功能开启与关闭By Session还是By AccessWhenever Successful数据库语句审计数据库对象审计查看审计策略和记录Oracle数据库审计功能分为传统审计(Traditional Auditing)和统一审计(Unified Auditing)。统一审计是从Oracle 12c版本开始引入的…...