Hive 窗口函数与分析函数深度解析:开启大数据分析的新维度
Hive 窗口函数与分析函数深度解析:开启大数据分析的新维度
在当今大数据蓬勃发展的时代,Hive 作为一款强大的数据仓库工具,其窗口函数和分析函数犹如一把把精巧的手术刀,助力数据分析师们精准地剖析海量数据,挖掘出深藏其中的价值宝藏。本文将带领大家深入探索 Hive QL 中这些神奇函数的奥秘,从版本演进、功能特性到丰富多样的实际应用示例,全方位地呈现它们在大数据处理领域的卓越魅力。
一、版本回溯与知识宝库指引
Hive 窗口函数和分析函数的辉煌篇章始于 Hive 版本 0.11 的历史性登场。这一里程碑式的升级为数据处理带来了全新的范式转变。若您渴望深入探究其技术细节与设计精髓,“Windowing Specifications in HQL”(紧密依附于 HIVE - 4197)犹如一座知识的金矿,蕴含着无尽的智慧结晶。与此同时,HIVE - 896 则像一位贴心的向导,不仅提供了丰富的示例资源,其初始评论区中的早期文档链接更是为我们打开了一扇追溯历史的窗口,让我们得以见证这些函数从孕育到诞生的全过程,深刻理解其发展脉络与设计初衷。
二、函数家族大揭秘:功能特性全解析
(一)窗口函数:数据洞察的多面手
- LEAD 函数:前瞻数据的导航仪
LEAD 函数宛如一位目光长远的数据探险家,它赋予我们窥视未来数据行的神奇能力。在实际业务场景中,想象一下我们正在分析电商平台的用户购买行为数据。以订单时间为序,通过 LEAD 函数,我们能够轻松查看用户下一次购买商品的类别,从而精准预测用户的消费趋势,提前布局个性化推荐策略,为用户提供贴心的购物体验,同时也为商家挖掘潜在的销售增长点。当我们未明确指定领先行数时,它默认仅向前眺望一行,恰似在时间长河中迈出一小步,却能为我们带回珍贵的未来信息。然而,当它的探索之旅超出了窗口的边界,如同勇敢的航海家驶入未知的深海,便会返回null
值,提醒我们数据的尽头已近。 - LAG 函数:回溯数据的时光机
与 LEAD 函数遥相呼应,LAG 函数则是一台能够带我们穿越回过去的时光机。在金融领域的数据分析中,比如分析股票价格走势时,借助 LAG 函数,我们可以获取前一交易日的股价信息,通过对比相邻交易日的股价波动,计算涨跌幅、移动平均线等关键指标,进而洞察股价变化的趋势与规律,为投资者提供科学的决策依据。若未指定滞后行数,它也会贴心地为我们带回前一行的数据,让我们在数据的时光隧道中稳步回溯。一旦超出窗口的起始范围,同样会以null
值警示我们已抵达数据的源头。 - FIRST_VALUE 函数:分组数据的先锋旗手
FIRST_VALUE 函数犹如在分组数据海洋中竖起的一面先锋旗帜,标识出每组数据的起始特征。在日志数据分析中,假设我们按照用户会话 ID 对日志进行分组,想要获取每个会话的首次访问页面,FIRST_VALUE 函数便能精准地完成这一使命。通过设置第二个可选参数为true
,它还能巧妙地跳过null
值,确保我们获取到的首个有效数据点,为后续的数据分析奠定坚实的基础,如同在茫茫数据海洋中找到了可靠的灯塔。 - LAST_VALUE 函数:分组数据的收官之笔
LAST_VALUE 函数则是为分组数据画上完美句号的艺术家。在销售数据分析中,若按照销售区域对销售订单进行分组,我们可以利用 LAST_VALUE 函数获取每个区域最后一笔订单的金额、时间等关键信息,从而分析不同区域销售活动的收尾情况,评估销售策略在不同区域的长期效果,为下一轮销售计划的制定提供有力的参考依据,如同在一场盛大的商业演出中,捕捉到最后一个精彩的落幕瞬间。
(二)OVER 子句:数据聚合的魔法舞台
- 标准聚合函数与 OVER 子句的梦幻联动
COUNT
、SUM
、MIN
、MAX
、AVG
这些耳熟能详的标准聚合函数,在与OVER
子句携手之后,仿佛被赋予了全新的生命力,摇身一变成为数据聚合的魔法大师。以电商订单数据为例,我们可以使用SUM
函数结合OVER
子句,按照用户 ID 进行分区,轻松计算出每个用户的历史订单总金额,为用户价值评估提供直观的量化指标;或者运用AVG
函数,在按照产品类别分区的基础上,计算出各类产品的平均销售价格,帮助商家精准把握市场价格定位,制定合理的价格策略。 - PARTITION BY 与 ORDER BY:构建有序的数据分区世界
PARTITION BY
语句如同一位严谨的建筑师,精心构建起数据的分区大厦,而ORDER BY
则是大厦内的导航系统,为数据赋予了明确的顺序。在社交媒体数据分析中,我们可以依据用户的注册时间进行分区,并按照用户的活跃度(如发布内容数量、点赞评论数量等)进行排序,这样一来,在每个分区内,数据都按照活跃度有序排列。借助OVER
子句,我们能够在这个有序的分区世界中,针对不同活跃度层次的用户群体进行深入分析,例如计算每个分区内活跃度前 10% 的用户的平均互动率,为精准营销和用户运营提供极具价值的洞察。 - 窗口规范:定制化的数据视野窗口
窗口规范则像是为我们的数据视野量身定制的一扇扇窗户,通过不同的格式设置,我们可以灵活地调整看到的数据范围。例如,在物流配送数据分析中,对于订单配送时间数据,我们可以设定(ROWS | RANGE) BETWEEN 3 PRECEDING AND CURRENT ROW
的窗口规范,这样就能聚焦于当前订单及其前三个订单的配送时间信息,计算平均配送时长的滚动变化趋势,及时发现配送效率的波动情况并采取相应的优化措施。当指定了ORDER BY
但缺少WINDOW
子句时,默认的RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
窗口规范就像开启了一扇全景天窗,让我们能够纵览从数据起始点到当前行的所有数据信息;而若ORDER BY
和WINDOW
子句都缺失,ROW BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
则为我们呈现出一幅无边界的数据画卷,涵盖了整个数据集的全貌。
需要特别注意的是,OVER
子句在支持一些函数时存在着特定的限制与微妙之处。排名函数(Rank
、NTile
、DenseRank
、CumeDist
、PercentRank
)以及 Lead
和 Lag
函数本身在与窗口搭配使用时,就像在复杂的舞蹈中遵循着特定的舞步规则,需要我们深入理解并谨慎运用,以免在数据处理的舞台上出现意外的失误(参考 HIVE - 4797)。
(三)分析函数:数据排名与分布的智慧导师
RANK
、ROW_NUMBER
、DENSE_RANK
、CUME_DIST
、PERCENT_RANK
、NTILE
这些分析函数宛如一群智慧的导师,从不同的角度为我们解读数据的排名与分布奥秘。在学生成绩数据分析中,RANK
函数能够清晰地为每个学生在班级中的成绩排名定位,让我们一目了然地看出学生的相对位置;DENSE_RANK
函数则在排名时避免了名次的跳跃,为成绩相近的学生提供更合理的排名呈现,有助于更细致地评估学生的学业水平层次;CUME_DIST
函数可以计算出每个学生成绩在班级中的累积分布比例,帮助教师了解成绩的整体分布情况,判断教学效果是否呈现正态分布;PERCENT_RANK
函数进一步将排名转换为百分比形式,为跨班级、跨年级的成绩比较提供了统一的标准尺度;NTILE
函数则像一位公平的分配者,将数据按照指定的份数进行分桶,例如将学生按照成绩均匀地划分到高、中、低三个能力组,为分层教学和个性化辅导提供了有力的支持。
(四)Distinct 支持:数据去重的精准利器
在 Hive 2.1.0 及之后版本(参考 HIVE - 9534),聚合函数中的 DISTINCT
操作如同一把精准的手术刀,在数据的海洋中精准地剔除重复元素。以电商用户行为分析为例,我们可能想要统计每个用户在一段时间内访问过的不同商品类别数量。通过 COUNT(DISTINCT a) OVER (PARTITION BY c)
语句,我们可以按照用户 ID(列 c
)进行分区,然后对每个用户访问的商品类别(列 a
)进行去重计数,从而清晰地了解每个用户的兴趣广度和多样性。在早期实现中,出于对性能这一数据处理高速公路通行效率的考量,分区子句里暂时无法容纳 ORDER BY
或窗口规范这位“旅伴”。然而,随着 Hive 技术的不断演进,到了 Hive 2.2.0 版本(参考 HIVE - 13453),ORDER BY
和窗口规范终于可以与 DISTINCT
操作携手同行,为我们提供更强大、更灵活的去重计数功能,例如 COUNT(DISTINCT a) OVER (PARTITION BY c ORDER BY d ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)
,让我们能够在一个动态变化的窗口范围内对去重数据进行精细的统计分析,满足日益复杂的业务需求。
此外,自 Hive 2.1.0 及后续版本(参考 HIVE - 13475),OVER
子句内引用聚合函数的功能如同一座新搭建的桥梁,连接起了更多数据处理的可能性。例如,在企业销售数据分析中,我们可以通过 SELECT rank() OVER (ORDER BY sum(b)) FROM T GROUP BY a;
语句,先按照产品类别(列 a
)进行分组,然后在每个分组内计算销售金额(列 b
)的总和,并基于这些总和进行排名。这一功能为我们在多维度数据综合分析的复杂迷宫中开辟了一条新的通道,让我们能够更深入地挖掘数据之间的内在联系和潜在规律。
三、实战演练:示例代码全解析
(一)PARTITION BY 实战场景
- 单分区列无 ORDER BY 和窗口规范:基础分区统计
SELECT a, COUNT(b) OVER (PARTITION BY c)
FROM T;
在这个简洁而强大的示例中,我们以列 c
为分区依据,对表 T
中的数据进行划分。就如同将一个庞大的数据集按照某种特定的属性(例如地区、部门等)切割成多个相对独立的子集,然后在每个子集中统计列 b
的数量。在实际业务中,假设 T
是一张员工信息表,c
表示部门,b
表示员工的项目经验数量,那么这个查询就能快速告诉我们每个部门内员工项目经验数量的总和,为部门之间的人才资源对比提供了直观的数据支持。
2. 双分区列无 ORDER BY 和窗口规范:多维度分区细化
SELECT a, COUNT(b) OVER (PARTITION BY c, d)
FROM T;
此示例进一步拓展了分区的维度,通过列 c
和 d
两个维度对数据进行更为精细的划分。例如,在电商订单数据中,如果 c
表示订单的发货城市,d
表示订单的收货城市,那么这个查询就可以统计出从每个发货城市到每个收货城市的订单数量,帮助电商企业深入了解物流配送的地域流向和需求分布,优化物流网络布局和资源分配。
3. 单分区列单 ORDER BY 无窗口规范:有序分区聚合起步
SELECT a, SUM(b) OVER (PARTITION BY c ORDER BY d)
FROM T;
这里在分区的基础上引入了排序机制,按照列 c
分区后,再依据列 d
的顺序对数据进行组织。以在线教育课程学习数据为例,如果 c
表示课程类别,d
表示学生的学习时间顺序,那么这个查询可以计算出每个课程类别下,按照学习时间顺序累计的学习时长总和,有助于课程开发者分析不同课程的学习进度和学生参与度变化趋势,为课程优化和教学策略调整提供依据。
4. 双分区列双 ORDER BY 无窗口规范:复杂有序分区聚合
SELECT a, SUM(b) OVER (PARTITION BY c, d ORDER BY e, f)
FROM T;
此查询在多维度分区的基础上,结合了多列排序,构建了一个更为复杂而精细的数据处理场景。在金融交易数据分析中,如果 c
表示交易的市场板块,d
表示交易的账户类型,e
表示交易时间,f
表示交易金额大小顺序,那么这个查询能够计算出在每个市场板块和账户类型的组合下,按照交易时间和金额顺序累计的交易总量,为金融机构深入分析不同市场和客户群体的交易行为模式提供了强大的工具。
5. 带分区、ORDER BY 和窗口规范:灵活窗口分区聚合
SELECT a, SUM(b) OVER (PARTITION BY c ORDER BY d ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
FROM T;
SELECT a, AVG(b) OVER (PARTITION BY c ORDER BY d ROWS BETWEEN 3 PRECEDING AND CURRENT ROW)
FROM T;
SELECT a, AVG(b) OVER (PARTITION BY c ORDER BY d ROWS BETWEEN 3 PRECEDING AND 3 FOLLOWING)
FROM T;
SELECT a, AVG(b) OVER (PARTITION BY c ORDER BY d ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
FROM T;
这些示例展示了如何通过灵活调整窗口规范,在分区和排序的基础上实现多样化的聚合计算。以社交媒体用户互动数据为例,如果 c
表示用户所在的社交群组,d
表示用户的注册时间顺序,第一个查询可以计算出每个社交群组内,从最早注册的用户到当前用户的互动总量(如点赞、评论数量总和);第二个查询能够计算出当前用户及其前三个注册用户的平均互动频率;第三个查询则聚焦于当前用户及其前后三个注册用户的互动频率平均值,用于分析局部用户群体的互动活跃度;第四个查询可以获取从当前用户到最新注册用户的平均互动情况,为评估社交群组的互动发展趋势提供了多维度的视角。
6. 单查询多 OVER 子句:多元聚合并行出击
SELECT a,COUNT(b) OVER (PARTITION BY c),SUM(b) OVER (PARTITION BY c)
FROM T;
在这个查询中,我们同时运用了两个 OVER
子句,分别进行计数和求和操作。这就好比在一次数据探索之旅中,派遣了两支不同任务的探险队,一支负责统计每个分区内的元素数量,另一支负责计算分区内数据的总和。例如在企业库存管理数据分析中,如果 c
表示仓库地点,a
表示库存商品类别,b
表示库存商品数量,这个查询可以一次性获取每个仓库地点的商品类别数量以及库存总量,为库存调配和管理决策提供全面的数据支持。
7. 别名使用:数据结果清晰标识
SELECT a,COUNT(b) OVER (PARTITION BY c) AS b_count,SUM(b) OVER (PARTITION BY c) b_sum
FROM T;
通过使用别名,我们为基于窗口计算的结果列赋予了清晰易懂的名称。这就像在复杂的数据迷宫中为每个出口都贴上了明确的标识牌,方便我们在后续的数据处理和分析中快速定位和理解这些结果。无论是在生成报表还是在与其他数据处理步骤进行对接时,别名都能极大地提高数据的可读性和可操作性。
(二)WINDOW 子句实战应用
SELECT a, SUM(b) OVER w
FROM T
WINDOW w AS (PARTITION BY c ORDER BY d ROWS UNBOUNDED PRECEDING);
在这个示例中,WINDOW
子句将窗口规范单独定义,然后在 OVER
子句中引用。这就像是将数据处理的规则和流程进行了模块化封装,提高了代码的可维护性和复用性。在大型数据处理项目中,如果多个查询都需要使用相同的窗口规范,通过这种方式,我们只需定义一次 WINDOW
子句,然后在各个查询中直接引用即可,避免了重复编写相同的窗口定义代码,减少了出错的可能性,同时也使得代码结构更加清晰简洁,易于理解和优化。
(三)LEAD 和 LAG 函数实战演练
- LEAD 默认用法:未来数据初探
SELECT a, LEAD(a) OVER (PARTITION BY b ORDER BY C)
FROM T;
以电信用户通话记录数据为例,如果 b
表示用户电话号码,C
表示通话时间顺序,a
表示通话时长,这个查询可以查看每个用户下一次通话的时长情况。通过分析这些数据,电信运营商可以洞察用户的通话行为模式,例如是否存在长时间通话后短时间内再次通话的规律,为套餐设计和网络资源优化提供参考依据。
2. LAG 指定滞后:回溯历史数据洞察
SELECT a, LAG(a, 3, 0) OVER (PARTITION BY b ORDER BY C)
FROM T;
同样在电信用户通话记录数据中,这个查询可以获取每个用户前三次通话的时长信息(若不足三次则以 0 填充)。通过对比当前通话时长与前三次通话时长,能够分析用户通话时长的变化趋势,比如是否存在通话时长逐渐增加或减少的情况,进而为精准营销提供支持。例如,对于通话时长持续增加的用户,可以推荐更适合长时间通话的套餐;对于通话时长明显减少的用户,可以推送一些优惠活动以刺激其通话需求。
(四)分区内去重计数实战示例
SELECT a, COUNT(distinct a) OVER (PARTITION BY b)
FROM T;
假设 T
是一张用户访问网站页面的日志表,b
表示用户 ID,a
表示用户访问的页面 URL。此查询能够统计出每个用户访问过的不同页面数量,从而了解用户的兴趣广度和多样性。对于互联网公司来说,可以根据用户的兴趣多样性来进行个性化推荐。例如,对于访问页面种类丰富的用户,可以推荐更多元化的内容,包括新闻、娱乐、科技等不同领域的信息;而对于访问页面较为单一的用户,则可以集中推荐其感兴趣领域的深度内容或相关产品,提高用户的参与度和转化率。
相关文章:
Hive 窗口函数与分析函数深度解析:开启大数据分析的新维度
Hive 窗口函数与分析函数深度解析:开启大数据分析的新维度 在当今大数据蓬勃发展的时代,Hive 作为一款强大的数据仓库工具,其窗口函数和分析函数犹如一把把精巧的手术刀,助力数据分析师们精准地剖析海量数据,挖掘出深…...
Echart折线图属性设置 vue2
Echart折线图 官方配置项手册 Documentation - Apache ECharts 下面代码包含:设置标题、线条样式、图例圆圈的样式、显示名称格式、图片保存、增加Y轴目标值 updateChart(data) {const sortedData data.slice().sort((a, b) > new Date(a.deviceTime) - ne…...
蓝桥杯2117砍竹子(简单易懂 包看包会版)
问题描述 这天, 小明在砍竹子, 他面前有 n 棵竹子排成一排, 一开始第 i 棵竹子的 高度为 hi. 他觉得一棵一棵砍太慢了, 决定使用魔法来砍竹子。魔法可以对连续的一 段相同高度的竹子使用, 假设这一段竹子的高度为 H, 那么 用一次魔法可以 把这一段竹子的高度都变为 ⌊H2⌋…...
华为 生产网解决方案,加速制造业数字化转型
华为推出新一代融合架构的生产网解决方案,加速制造业数字化转型-企业频道-东方网 智慧生产网解决方案-华为企业业务 华为面向制造行业升级生产网解决方案。全新一代融合架构,解决了生产数据的孤岛化、烟囱式、数据的价值无法发挥等问题,以促…...
原型模式(Prototype Pattern)——对象克隆、深克隆与浅克隆及适用场景
原型模式(Prototype Pattern)是设计模式中的一种创建型模式,目的是通过复制现有的对象来创建新的对象,而不是通过传统的实例化方式。原型模式常常用于需要创建大量类似对象的场景,可以提高性能并减少资源的消耗。下面将…...
基于Transformer架构的扩散模型
Scalable Diffusion Models with Transformers 本文介绍一篇发表于2023年国际计算机视觉大会(ICCV)的研究论文,该论文提出了一种基于Transformer架构的扩散模型,称为Diffusion Transformers (DiTs)。 通过用Transformer替代传统的…...
服务器上部署前端页面-实现IP+端口/index.html在线访问你的网页
首先一点,不管是那个框架开发的网页前端,最后都需要Build,构建完毕以后都是原始的HTML CSS JS 三样文件! 所以不管用原始的三剑客(HTML CSS JS)开发的前端还是用各类框架开发的前端界面(只是让开发简单…...
2024年华中杯数学建模B题使用行车轨迹估计交通信号灯周期问题解题全过程文档及程序
2024年华中杯数学建模 B题 使用行车轨迹估计交通信号灯周期问题 原题再现 某电子地图服务商希望获取城市路网中所有交通信号灯的红绿周期,以便为司机提供更好的导航服务。由于许多信号灯未接入网络,无法直接从交通管理部门获取所有信号灯的数据&#x…...
【C语言】SWP 文件:临时缓存文件
SWP 文件:临时缓存文件(紧急保护机制) 在 Linux 系统(包括 Ubuntu)中,SWP 文件是一种临时缓存文件,主要用于在编辑器(如 Vim)中紧急保护未保存的工作内容。当系统或编辑…...
【日常记录-Git】git switch
1. 简介 git switch是Git 2.23.0版本引入的一个新命令,用于切换分支和恢复工作树文件。其旨在提供一个更清晰、更直观的分支切换体验,以替代git checkout命令中用于分支切换的部分功能。 2. 常规操作 2.1 切换到已存在的分支 git switch <分支名>…...
Qt学习笔记第51到60讲
第51讲 记事本实现打开功能 回到第24个功能文件Notepad,给UI中的各个控件添加槽函数。 ①开始按钮 void Widget::on_btnOpen_clicked() {QString fileNameQFileDialog::getOpenFileName(this,tr("Open File"),"E:\\6_Qt Projects\\24_Notepad\\fi…...
灵途科技亮相2024世界传感器大会 分享光纤光源技术突破
12月1日至2日,2024世界传感器大会(WSS)在郑州国际会展中心隆重举办,泛自动驾驶领域光电感知专家灵途科技受邀参加“光纤传感器与激光雷达”分论坛,并在大会上带来《激光雷达用一体化光纤光源》专题演讲,同与…...
LeetCode刷题 -- 分治快排
目录 颜色分类题目解析算法原理代码 排序数组题目解析算法原理代码 数组中第K个最大元素题目解析算法原理代码 LCR 159. 库存管理 III题目解析算法原理代码 颜色分类 题目链接 题目解析 数组分为三块 算法原理 1.如果nums[i] 0,left, i下标对应元素交换,…...
pyqtgraph绘制实时更新数据的图
PyQtGraph是一个基于PyQt和NumPy的Python库,它专为实时数据可视化而设计。以绘制0~2π范围的ysin(x)为例,基本用法的代码如下: # codingutf-8import pyqtgraph as pg from pyqtgraph.Qt import QtGui, QtCore import numpy as np# pyqtgraph…...
使用 MATLAB 绘制三维散点图:根据坐标和距离映射点的颜色和大小
在数据可视化中,三维散点图是一种非常直观的方式来展示数据的分布。MATLAB 提供了强大的 scatter3 函数,可以用来绘制三维散点图,而通过调整点的颜色和大小,可以进一步增强图形的表现力。 在本篇博客中,我们将逐步讲解…...
ubuntu离线安装docker
首先下载对应的版本amd64 就是x86的 https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/需要挑选其他版本 https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/下载之后上传到服务器目录,分别执行以下文件 sudo dpkg -…...
iOS如何操作更新推送证书
最近收到一份邮件,应该如何操作呢,证书还是跟以前一样冲钥匙串直接申请吗 Hello, As we announced in October, the Certification Authority (CA) for Apple Push Notification service (APNs) is changing. APNs will update the server certificates in sandbox on January…...
# issue 8 TCP内部原理和UDP编程
TCP 通信三大步骤: 1 三次握手建立连接; 2 开始通信,进行数据交换; 3 四次挥手断开连接; 一、TCP内部原理--三次握手 【第一次握手】套接字A∶"你好,套接字B。我这儿有数据要传给你,建立连接吧。" 【第二次…...
【Linux】-学习笔记08
第五章、DNS域名解析服务器 目录 第五章、DNS域名解析服务器 1.简介 1.1DNS简介 1.2因特网的域名结构 1.3域名服务器的类型划分 1.4DNS域名解析的过程 递归查询(左侧) 迭代查询(右侧) 2.DNS服务器配置 2.1关于服务端 …...
RFdiffusion Denoise类解读
Denoise 类为蛋白质结构扩散模型的实现提供了核心功能,通过灵活的噪声调度、潜力场引导和子结构对齐,使得模型可以生成物理合理的结构序列,并在每个时间步迭代更新蛋白质的坐标和结构信息。 源代码: def get_next_frames(xt, px0, t, diffuser, so3_type, diffusion_mask,…...
HTML5 拖拽 API 深度解析
一、HTML5 拖拽 API 深度解析 1.1 背景与发展 HTML5 的拖拽 API 是为了解决传统拖拽操作复杂而设计的。传统方法依赖鼠标事件和复杂的逻辑计算,而 HTML5 提供了标准化的拖拽事件和数据传递机制,使得开发者能够快速实现从一个元素拖拽到另一个元素的交互…...
Vue 的生命周期钩子函数是什么?常见的生命周期钩子有哪些?
Vue 的生命周期钩子函数 Vue 的生命周期钩子函数是 Vue 组件在不同生命周期阶段自动调用的函数。生命周期分为创建、挂载、更新和销毁等阶段。理解这些钩子函数对于开发和调试 Vue 应用至关重要,因为它们使我们能够在组件生命周期的不同阶段执行特定的操作。 目录…...
uniapp中导入uview或者uview plus
关于SCSS uview-plus依赖SCSS,您必须要安装此插件,否则无法正常运行。 如果您的项目是由HBuilder X创建的,相信已经安装scss插件,如果没有,请在HX菜单的 工具->插件安装中找到"scss/sass编译"插件进行安…...
3D 生成重建017-StyleGaussian用文本或图像对你的3DGS内容进行风格迁移
3D 生成重建017-StyleGaussian用文本或图像对你的3DGS内容进行风格迁移 文章目录 0 论文工作1 论文方法2 实验结果 0 论文工作 论文 “StyleGaussian: Instant 3D Style Transfer with Gaussian Splatting” 介绍了一种新颖的3D风格迁移方法 StyleGaussian,该方法通…...
【adb】iqoo系统精简垃圾内置应用
免责声明 这个得谨慎点,虽然我验证过两部手机和不同版本的系统,但是总会有特殊的存在、 本教程来自于互联网搜集整理, 按照本教程造成的用户设备硬件或数据损失,本人概不承担任何责任,如您不同意此协议,请不…...
Golang 字符串字面量表示方法
文章目录 1.普通字符串字面量(Double-Quoted String Literals)2.原始字符串字面量(Raw String Literals)3.字节字符串字面量(Byte Slice Literals)4.码值表示字符串字面量Unicode 转义序列UTF8 转义序列十六…...
【uni-app 微信小程序】新版本发布提示用户进行更新
知识准备 uni.getUpdateManager文档介绍 不支持APP与H5,所以在使用的时候要做好平台类型的判断,如何判断,参考条件编译处理多端差异 代码参考 export const updateApp () > {const updateManager uni.getUpdateManager()updateManag…...
Leetcode 739-每日温度
请根据每日 气温 列表 temperatures ,请计算在每一天需要等几天才会有更高的温度。如果气温在这之后都不会升高,请在该位置用 0 来代替。 题解(单调递减栈) 什么时候用单调栈呢? 通常是一维数组,要寻找任…...
Gitee配置以及如何将本地项目提交到远程仓库
文章目录 准备远程仓库配置注册新建仓库 配置git 生成ssh,输入以下命令,然后连敲三次回车键配置公钥本地代码上传 准备 1.本地下载git 2.注册远程仓库账号 远程仓库配置 注册 官网:https://gitee.com 完成注册 新建仓库 头像->设置-…...
爬虫项目基础知识详解
文章目录 Python爬虫项目基础知识一、爬虫与数据分析1.1 Python中的requests库Requests 库的安装Requests 库的 get() 方法爬取网页的通用代码框架HTTP 协议及 Requests 库方法Requests 库主要方法解析 1.2 python中的json库1.3 xpath学习之python中lxml库html了解html结构html…...
【Leetcode Top 100 - 扩展】876. 链表的中间结点
问题背景 给你单链表的头结点 h e a d head head,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 数据约束 链表的结点数范围是 [ 1 , 100 ] [1, 100] [1,100] 1 ≤ N o d e . v a l ≤ 100 1 \le Node.val \le 100 1≤…...
16-01、JVM系列之:内存与垃圾回收篇(一)
JVM系列之:内存与垃圾回收篇(一) ##本篇内容概述: 1、JVM结构 2、类加载子系统 3、运行时数据区之:PC寄存器、Java栈、本地方法栈一、JVM与JAVA体系结构 JAVA虚拟机与JAVA语言并没有必然的联系,它只是与特…...
经典蓝牙(BT/EDR)蓝牙配对与连接
经典蓝牙的连接过程包括跳频,扫描,配置交换等过程。对ACL链路以及sco的连接过程也做详细的分析。 1. 为什么不配对便无法建立连接? 任何无线通信技术都存在被监听和破解的可能,蓝牙SIG为了保证蓝牙通信的安全性,采用…...
用 Python 从零开始创建神经网络(十四):L1 和 L2 正则化(L1 and L2 Regularization)
L1 和 L2 正则化(L1 and L2 Regularization) 引言1. Forward Pass2. Backward pass到此为止的全部代码: 引言 正则化方法旨在降低泛化误差。我们首先讨论的正则化形式是L1正则化和L2正则化。L1和L2正则化用于计算一个数值(称为惩…...
特殊的数学性质
一个数模9的结果等于它的每一位数相加和模9...
最长递增子序列&什么是继承性?C++中如何实现继承?继承的好处和注意事项有哪些?
最长递增子序列 方法一:暴力二维dp,初始状态:每个元素至少和自己构成一个上升序列,大小为1,状态转移:找到前面结尾数字小于当前数组元素的最长序列,当前位置的长度就是lenpre1. class Solutio…...
汽车IVI中控开发入门及进阶(三十五):架构QML App Architecture Best Practices
在Qt/QML工程的架构中,架构很重要,虽然本身它有分层,比如QML调用资源文件(图片等)显示GUI界面,后面的CPP文件实现界面逻辑,但是这个分类还有点粗。在实际开发中,界面逻辑也就是基于类cpp的实现,也开始使用各种面向对象的设计模式,实现更加优秀的开发架构,这点尤其在…...
面试题整理(二)
芯冰乐知识星球入口:芯冰乐...
编码及其代码
编码 形成文字所需bit点------有相应代号(编码---有好多种8/16/24/32)都已提前形成好,放哪哪就会形成那个文字 同一个文字在不同编码存的码不一样 用一种编码存的话,如果用另一种编码解析就会出现乱码 Windows默认编码为ANSI …...
python selenium(4+)+chromedriver最新版 定位爬取嵌套shadow-root(open)中内容
废话不多说,直接开始 本文以无界作为本文测试案例,抓取shadow-root(open)下的内容 shadow Dom in selenium: 首先先讲一下shadow Dom in selenium 版本的区别,链接指向这里 在Selenium 4版本 以及 chrom…...
AutoClass加载预训练实例
AutoClass 由于 Transformer 架构种类繁多,AtuoClass可以创建一个你想要的做模型架构。作为 🤗 Transformer 核心理念的一部分,使库易于使用、简单且灵活,可以AutoClass从给定的检查点自动推断和加载正确的架构。该from_pretrain…...
在 CentOS 上安装 NFS 服务器
文章目录 1. 在 CentOS 上安装 NFS 服务器1.1 安装 NFS 服务器软件包1.2 配置 NFS 共享目录1.3 配置 NFS 导出文件1.4 启动并启用 NFS 服务1.5 导出共享目录1.6 配置防火墙1.7 检查 NFS 状态 2. 在 CentOS 上安装 NFS 客户端2.1 安装 NFS 客户端软件包2.2 挂载 NFS 共享2.3 配置…...
utf8mb4_unicode_ci、utf8mb4_general_ci、utf8mb4_0900_ai_ci; Mysql 排序字符集的优缺点和选择
标题内容 Mysql的排序字符集真让人头疼,如果两个表的排序字符集不一致,还会导致在进行字段比较的时候直接报错。下面分析几个常用的字符集的优劣和选择。 utf8mb4_unicode_ci 特点 Unicode 标准兼容性高:它是基于 Unicode 标准的排序规则&a…...
星宸SSC8836Q/SSC8836Q-H
SSC8836Q产品是高度集成的多媒体片上系统(SoC)产品,适用于汽车和运动/运动相机等高分辨率智能视频录制和播放应用。 该芯片包括64位双核RISC处理器,先进的图像信号处理器(ISP),高性能的H.265/H。264/MJPEG视频编解码器,智能处理单…...
rk3576 , android14 , 编译, 卡死,android.bp , ninja
问题:我在 编译 android14 的时候, 卡死再 analysing android.bp 这里 ,卡了 3,4 个小时。肯定是有问题的。 如图&…...
3、.Net UI库:MaterialSkin - 开源项目研究文章
MaterialSkin 是一个开源的 WinForms 第三方库,提供了许多仿谷歌设计风格的组件,使得 WinForms 窗体程序更加美观。以下是 MaterialSkin 的一些关键特点和使用方法: 主要特点: 仿谷歌设计风格:MaterialSkin 提供了大量…...
2024年构建PHP应用开发环境
文章目录 前言选择合适的PHP版本安装与配置PHP环境Windows平台Linux平台macOS平台 集成Web服务器数据库连接与管理使用Composer进行依赖管理调试工具的选择代码质量管理部署与持续集成安全性考虑参考资料结语 前言 随着互联网的发展,PHP作为一门成熟的服务器端编程…...
苹果手机iPad投屏到安卓电视,不只有AirPlay一种方法,还可以无线远程投屏!
苹果品牌的设备一般都可以使用airplay功能,将一个屏幕投射到另一个屏幕上。如果是跨品牌或跨系统投屏,airplay就未必能够适应。 提供无线投屏和airplay投屏两种方式的AirDroid Cast已经推出TV版本。苹果手机或iPad可以选择无线(远程ÿ…...
什么是内网什么是外网?区别是什么
内网和外网是计算机网络中的两个基本概念,它们在定义、特点和使用场景上有显著的区别。虎观代理小二将带大家详细了解内网与外网的定义以及它们之间的主要差异,帮助读者更好地理解和应用这两种网络。 内网(局域网,LAN࿰…...
基于Springboot+Vue的在线答题闯关系统
基于SpringbootVue的在线答题闯关系统 前言:随着在线教育的快速发展,传统的教育模式逐渐向互联网教育模式转型。在线答题系统作为其中的一个重要组成部分,能够帮助用户通过互动式的学习方式提升知识掌握度。本文基于Spring Boot和Vue.js框架&…...