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

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】5.2 数据分组与透视(CUBE/ROLLUP/GROUPING SETS)

👉 点击关注不迷路
👉 点击关注不迷路
👉 点击关注不迷路


文章大纲

  • 5.2 数据分组与透视:CUBE/ROLLUP/GROUPING SETS深度解析
    • 5.2.1 数据准备与分析目标
      • 数据集与表结构
      • 分析目标
    • 5.2.2 ROLLUP:`层级化分组汇总`
      • 功能与语法
      • 示例:按品类+区域层级汇总
    • 5.2.3 CUBE:全组合分组汇总
      • 功能与语法
      • 示例:全维度组合分析
    • 5.2.4 GROUPING SETS:自定义分组集合
      • 功能与语法
      • 示例:按需生成特定分组
    • 5.2.5 三大功能对比与选择
    • 5.2.6 高级应用:处理多维度NULL值
      • 识别汇总行的两种方式
      • 示例:标记汇总行类型
    • 5.2.7 性能优化与最佳实践
      • 1. 索引优化
      • 2. 避免过度使用CUBE
      • 3. NULL值的业务含义
      • 4. 与窗口函数结合
    • 5.2.8 业务场景实战:销售仪表盘构建
      • 需求:生成包含以下指标的多维报表
      • 使用CUBE实现:
      • 报表展示:
    • 5.2.9 总结与扩展

5.2 数据分组与透视:CUBE/ROLLUP/GROUPING SETS深度解析

在数据分析中,多维分组汇总(如按时间、类别、区域等维度组合统计)是核心需求。

  • PostgreSQL提供的CUBEROLLUPGROUPING SETS函数,能够高效生成多维度组合的聚合结果,避免编写重复的GROUP BY语句。
  • 本章通过电商订单数据分析场景,深入讲解这三个高级分组功能的原理、用法及业务价值。
    在这里插入图片描述

5.2.1 数据准备与分析目标

数据集与表结构

继续使用5.1节的order_data表,新增region字段表示购买区域(华北/华东/华南):

ALTER TABLE order_data ADD COLUMN region VARCHAR(20);

测试数据包含以下维度组合:

order_idorder_datecategoryregionsales_amount
12023-01-01服装华北150.00
22023-01-02数码华东800.00
32023-01-03家居华南200.00
CREATE TABLE public.order_data (order_id int8 NULL,order_date date NULL,product_id varchar(50) NULL,category varchar(50) NULL,sales_amount numeric(10, 2) NULL,quantity int4 NULL,customer_age int4 NULL,region varchar(20) NULL
);
CREATE INDEX idx_sales_amount ON public.order_data USING btree (sales_amount);INSERT INTO public.order_data
(order_id, order_date, product_id, category, sales_amount, quantity, customer_age, region)
VALUES(1, '2023-01-01', 'P001', '服装', 150.00, 2, 25, '华北');
INSERT INTO public.order_data
(order_id, order_date, product_id, category, sales_amount, quantity, customer_age, region)
VALUES(2, '2023-01-02', 'P002', '数码', 800.00, 1, 30, '华北');
INSERT INTO public.order_data
(order_id, order_date, product_id, category, sales_amount, quantity, customer_age, region)
VALUES(3, '2023-01-03', 'P003', '家居', 200.00, 3, 35, '华北');
INSERT INTO public.order_data
(order_id, order_date, product_id, category, sales_amount, quantity, customer_age, region)
VALUES(4, '2023-01-04', 'P004', '服装', 250.00, 1, 22, '华东');
INSERT INTO public.order_data
(order_id, order_date, product_id, category, sales_amount, quantity, customer_age, region)
VALUES(5, '2023-01-05', 'P005', '数码', 1200.00, 1, 40, '华东');
INSERT INTO public.order_data
(order_id, order_date, product_id, category, sales_amount, quantity, customer_age, region)
VALUES(6, '2023-01-06', 'P006', '家居', 180.00, 2, 45, '华东');
INSERT INTO public.order_data
(order_id, order_date, product_id, category, sales_amount, quantity, customer_age, region)
VALUES(7, '2023-01-07', 'P007', '服装', 300.00, 2, 28, '华南');
INSERT INTO public.order_data
(order_id, order_date, product_id, category, sales_amount, quantity, customer_age, region)
VALUES(8, '2023-01-08', 'P008', '数码', 600.00, 1, 32, '华南');
INSERT INTO public.order_data
(order_id, order_date, product_id, category, sales_amount, quantity, customer_age, region)
VALUES(9, '2023-01-09', 'P009', '家居', 220.00, 2, 38, '华南');
INSERT INTO public.order_data
(order_id, order_date, product_id, category, sales_amount, quantity, customer_age, region)
VALUES(10, '2023-01-10', 'P010', '服装', 180.00, 2, 26, '华南');

分析目标

    1. 实现多维度组合汇总(如按category+regioncategoryregion等分组)
    1. 生成层级化汇总结果(如先按类别汇总,再按区域汇总)
    1. 高效处理包含NULL值的超聚合结果
    1. 支持业务场景:
    • 各区域各品类销售额统计
    • 全国各品类总销售额
    • 各区域所有品类总销售额

5.2.2 ROLLUP:层级化分组汇总

功能与语法

ROLLUP用于生成层级化的分组组合,按指定维度的顺序生成从细到粗的汇总结果。语法格式:

GROUP BY ROLLUP(dim1, dim2, dim3)

生成的分组组合包括:

  • (dim1, dim2, dim3)
  • (dim1, dim2)
  • (dim1)
  • ()(全表汇总)

示例:按品类+区域层级汇总

  • 需求:统计不同品类(category)、不同区域(region)的销售额,同时生成品类维度汇总和区域维度汇总。
SELECT category, region, SUM(sales_amount) AS total_sales,GROUPING(category) AS cat_grouping,  -- 0表示非汇总行,1表示汇总行GROUPING(region) AS reg_grouping
FROM order_data
GROUP BY ROLLUP(category, region)
ORDER BY category, region;
  • 结果解析
    在这里插入图片描述
  • GROUPING(column)函数:返回0表示该列是分组列,1表示该列是汇总生成的NULL值
  • 层级顺序:ROLLUP(a,b)等价于GROUPING SETS((a,b), (a), ())

5.2.3 CUBE:全组合分组汇总

功能与语法

CUBE生成所有维度的组合汇总,包括每个维度的单独汇总和所有可能的组合。语法格式:

GROUP BY CUBE(dim1, dim2, dim3)

生成的分组组合数为2^n(n为维度数),例如2个维度生成4种组合:

  • (dim1,dim2)
  • (dim1)
  • (dim2)
  • ()

示例:全维度组合分析

  • 需求:分析品类(category)和区域(region)的所有可能组合汇总。
SELECT category, region, SUM(sales_amount) AS total_sales,GROUPING_ID(category, region) AS grouping_id  -- 二进制编码表示分组组合
FROM order_data
GROUP BY CUBE(category, region)
ORDER BY grouping_id;
  • 结果解析

    categoryregiontotal_salesgrouping_id
    服装华北12000.000
    服装NULL27000.001
    数码华东80000.002
    NULLNULL167000.003
    家居华南15000.000
    家居NULL32000.001
    NULL华南77000.002
  • GROUPING_ID(dim1,dim2):将分组状态转换为整数编码,例如(NULL,NULL)对应3(二进制11),(dim1,NULL)对应1(二进制01)

  • 适用场景:需要穷举所有维度组合的报表生成,如多维数据立方体(OLAP Cube)

5.2.4 GROUPING SETS:自定义分组集合

功能与语法

GROUPING SETS允许显式指定需要的分组组合,支持任意维度的子集。语法格式:

GROUP BY GROUPING SETS ((dim1, dim2),  -- 组合1(dim1),        -- 组合2(dim2),        -- 组合3()             -- 全汇总
)

示例:按需生成特定分组

  • 需求:仅生成category+regioncategoryregion三种分组,不包含全汇总。
SELECT category, region, SUM(sales_amount) AS total_sales
FROM order_data
GROUP BY GROUPING SETS ((category, region),(category),(region)
)
ORDER BY category, region;
  • 结果对比
    在这里插入图片描述

  • 灵活性:可混合不同维度组合,避免生成不需要的汇总行(如全汇总)

  • 等价写法:ROLLUP(a,b)等价于GROUPING SETS((a,b),(a),())CUBE(a,b)等价于GROUPING SETS((a,b),(a),(b),())

5.2.5 三大功能对比与选择

功能分组组合生成方式分组数量典型场景NULL含义
ROLLUP层级化汇总(从细到粗)n+1(n为维度数)层级报表(如按年-季-月汇总)维度汇总值
CUBE全组合生成(所有子集)2^n多维分析(OLAP立方体)维度被忽略
GROUPING SETS自定义组合(显式指定)用户指定按需生成特定分组维度被忽略或汇总
  • 选择建议
      1. 层级汇总用ROLLUP(如按时间维度生成年→季→月汇总)
      1. 全维度分析用CUBE(如同时分析产品+区域+时间的所有组合)
      1. 灵活组合用GROUPING SETS(如只需要(A,B)(C)两种分组)

5.2.6 高级应用:处理多维度NULL值

识别汇总行的两种方式

    1. GROUPING(column)函数:返回0(分组列有值)或1(汇总生成的NULL)
    1. GROUPING_ID(column1,column2)函数:将分组状态编码为整数,例如:
    • (A,B)0(二进制00)
    • (A,NULL)1(二进制01)
    • (NULL,B)2(二进制10)
    • (NULL,NULL)3(二进制11)

示例:标记汇总行类型

SELECT category, region, SUM(sales_amount) AS total_sales,CASE WHEN GROUPING_ID(category, region) = 0 THEN '明细数据'WHEN GROUPING_ID(category, region) = 1 THEN '按品类汇总'WHEN GROUPING_ID(category, region) = 2 THEN '按区域汇总'ELSE '全汇总'END AS row_type
FROM order_data
GROUP BY CUBE(category, region);

5.2.7 性能优化与最佳实践

1. 索引优化

对分组字段建立复合索引,提升分组效率:

CREATE INDEX idx_grouping ON order_data(category, region, sales_amount);

2. 避免过度使用CUBE

  • 维度数超过4时CUBE生成的分组数呈指数级增长(如5个维度生成32种组合),可能导致性能问题。建议:
    • 优先使用GROUPING SETS指定必要的分组
    • 对大表进行预聚合,将结果存入汇总表

3. NULL值的业务含义

  • 分组结果中的NULL表示“该维度被汇总”,而非数据缺失
  • 通过COALESCE函数美化输出,例如:
    COALESCE(category, '所有品类') AS category_desc
    

4. 与窗口函数结合

使用CUBE生成的汇总数据可结合窗口函数进行同比分析:

WITH cube_data AS (SELECT category, region, SUM(sales_amount) AS total_sales,GROUPING_ID(category, region) AS gidFROM order_dataGROUP BY CUBE(category, region)
)
SELECT COALESCE(category, '全品类') AS cat,COALESCE(region, '全区域') AS reg,total_sales,LAG(total_sales) OVER (ORDER BY gid) AS prev_total  -- 上一汇总级别的销售额
FROM cube_data;

5.2.8 业务场景实战:销售仪表盘构建

需求:生成包含以下指标的多维报表

    1. 各区域各品类销售额(明细)
    1. 各品类总销售额(按品类汇总)
    1. 各区域总销售额(按区域汇总)
    1. 全平台总销售额(全汇总)

使用CUBE实现:

SELECT COALESCE(category, '所有品类') AS category,COALESCE(region, '所有区域') AS region,SUM(sales_amount) AS total_sales,COUNT(DISTINCT order_id) AS order_count
FROM order_data
GROUP BY CUBE(category, region)
ORDER BY category, region;

报表展示:

在这里插入图片描述

5.2.9 总结与扩展

PostgreSQL的CUBE/ROLLUP/GROUPING SETS提供了从简单层级汇总到复杂多维分析的全场景支持,核心优势在于:

  • 一次查询生成多维度结果,避免多次分组的性能损耗
  • 标准化SQL语法,兼容其他数据库(如MySQL、Oracle)的分组扩展
  • 灵活处理NULL值语义,清晰区分明细数据与汇总数据

以上内容系统讲解了PostgreSQL的高级分组功能。
你可以告诉我是否需要补充特定维度组合的案例,或对性能优化策略进行更深入的探讨。

  • 在实际应用中,建议先明确分析维度的层级关系和组合需求,选择最合适的分组函数。
  • 对于超大规模数据,结合分区表、物化视图等技术进行性能优化,可构建高效的多维数据分析体系
  • 下一章节将探讨数据透视表的实现(PIVOT操作),进一步完善数据分组与可视化分析能力。

相关文章:

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】5.2 数据分组与透视(CUBE/ROLLUP/GROUPING SETS)

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 5.2 数据分组与透视:CUBE/ROLLUP/GROUPING SETS深度解析5.2.1 数据准备与分析目标数据集与表结构分析目标 5.2.2 ROLLUP:层级化分组汇总功能与语法示…...

20、数据可视化:魔镜报表——React 19 图表集成

一、魔镜的预言本质 "数据可视化是霍格沃茨的预言水晶球,将混沌的数据星尘转化为可解读的命运轨迹!" 魔法部占卜司官员挥舞魔杖,Echarts与Three.js的图表矩阵在空中交织成动态星图。 ——基于《国际魔法联合会》第9号可视化协议&a…...

笔记本电脑升级计划(2017———2025)

ThinkPad T470 (2017) vs ThinkBook 16 (2025) 完整性能对比报告 一、核心硬件性能对比 1. CPU性能对比(i5-7200U vs Ultra9-285H) 参数i5-7200U (2017)Ultra9-285H (2025)提升百分比核心架构2核4线程 (Skylake)16核16线程 (6P8E2LPE)700%核心数制程工…...

Flutter——数据库Drift开发详细教程(四)

目录 参考正文表达式1.比较2.布尔代数3.算术BigIn 4.空值检查6.日期和时间7.IN和NOT IN8.聚合函数(例如 count 和 sum)8.1比较8.2算术8.4计数8.5group_concat8.9窗口函数 9.数学函数和正则表达式10.子查询10.1 标量子查询10.2 isInQuery10.3 存在10.4完整…...

android-ndk开发(6): 查看反汇编

android-ndk开发(6): 查看反汇编 2025/05/05 1. 概要 android-ndk 是基于 clang 的工具链, clang 则保持了和 gcc 的高度兼容。 在 Linux 开发机上, GCC 套件里的 objdump 提供了反汇编的功能。 实际上 android-ndk 也提供了一份 objdump,…...

浅析AI大模型为何需要向量数据库?【入门基础】

文章目录 引言:大模型时代的存储挑战一、向量数据库:大模型的"海马体"1.1 什么是向量数据库?1.2 为什么大模型离不开向量数据库?(1) 嵌入(Embedding)的本质(2) 突破上下文窗口限制 二、相似性度量:欧氏距离与…...

Java面试:微服务与大数据场景下的技术挑战

面试对话场景 第一轮:基础知识考察 面试官:谢先生,您能简单介绍一下Java SE 8的新特性吗? 谢飞机:当然,Java SE 8引入了Lambda表达式、Stream API和新的日期时间API,大大简化了代码编写。 面…...

[前端]异步请求的竞态问题

竞态条件简介 遇到的问题 切换标签请求数据,但又快速切换标签请求数据,展示的是前一个标签的数据, 需要在切换标签时添加取消请求的机制,使用AbortController来取消正在进行的请求。当用户快速切换标签时,取消之前的请…...

【PDF拆分+提取内容改名】批量拆分PDF提取拆分后的每个PDF物流面单数据改名或导出表格,基于WPF的PDF物流面单批量处理方案

应用场景 物流行业每天需要处理大量包含物流面单的PDF文件,这些文件通常包含运单号、收发货人信息、货物详情等重要数据。传统手动处理方式效率低下且容易出错。本方案通过WPF实现一个自动化工具,能够: 批量拆分多页PDF为单页文件提取每页面单中的关键信息(如运单号、收件人…...

adb无线调试步骤

环境: macOS; 换成 linux 或 windows 也支持的小米15 Pro; 换成其他 android 手机也支持的 电脑和手机接入相同Wifi在电脑上,确保安装了 adb 对于 Android 开发者, 一般是是通过 Android Studio 安装对于 ndk 开发者…...

RocketMQ与Kafka的区别

文章目录 相同之处不同之处存储形式性能对比传输系统调用存储可靠性单机支持的队列数延时消息消息重复消息过滤消息失败重试死信队列 DLQ回溯消息分布式事务服务发现开发语言友好性开源社区活跃度商业支持成熟度 总结Kafka 和 RocketMQ 怎么选? 本文参考&#xff1a…...

剥开 MP4 的 千层 “数字洋葱”:从外到内拆解通用媒体容器的核心

在当今数字化时代,MP4 格式随处可见,无论是在线视频、手机拍摄的短片,还是从各种渠道获取的音频视频文件,MP4 都占据着主流地位。它就像一个万能的 “数字媒体集装箱”,高效地整合和传输着各种视听内容。接下来&#x…...

设计模式(结构型)-组合模式

定义 组合模式的定义为:将对象组合成树形结构以表示 “部分 - 整体” 的层次结构,并且使得用户对单个对象和组合对象的使用具有一致性。其最关键的实现要点在于,简单对象和复合对象必须实现相同的接口,这一特性正是组合模式能够对…...

使用 IDEA + Maven 搭建传统 Spring MVC + Thymeleaf 项目的详细步骤

使用 IDEA Maven 搭建传统 Spring MVC Thymeleaf 项目 环境准备步骤 1:创建 Maven 项目步骤 2:添加依赖(pom.xml)步骤 3:配置 web.xml步骤 4:Spring 配置类(Java Config)步骤 5&am…...

「Mac畅玩AIGC与多模态19」开发篇15 - 判断节点与工具节点联动示例

一、概述 本篇在引入工具节点的基础上,进一步结合判断节点(条件分支),实现根据用户输入内容动态控制是否调用外部接口。通过构建“用户是否需要天气信息”的条件逻辑,开发人员将掌握如何在 Dify 工作流中通过条件判断…...

docker 外部能访问外网,内部不行(代理问题)

如果宿主机访问外网依赖代理(比如 http_proxy 环境变量),容器默认不会继承。需要显式传入代理: docker run -e http_proxy... -e https_proxy... ...在 docker-compose 中配置 HTTP/HTTPS 代理 version: 3 services:app:image: …...

模糊控制理论(含仿真)

本文讲解模糊控制理论、设计步骤以及案例。 1. 模糊控制原理: 模糊控制(Fuzzy Control)是一种基于模糊逻辑推理的人类经验规则实现的控制方法,适用于对系统模型不精确或难以建立精确数学模型的复杂系统。它利用“如果…那么…”&…...

《 C++ 点滴漫谈: 三十六 》lambda表达式

一、引言 在 C98 和 C03 时代,尽管 C 拥有强大的泛型编程能力和丰富的面向对象特性,但在表达局部逻辑、回调行为或一次性函数处理时,程序员却常常需要冗长的代码来定义函数对象(functor),或者使用函数指针…...

【C/C++】函数模板

🎯 C 学习笔记:函数模板(Function Template) 本文是面向 C 初学者的函数模板学习笔记,内容包括基本概念、定义与使用、实例化过程、注意事项等,附带示例代码,便于理解与复现。 📌 一…...

电赛经验分享——模块篇

1、前言 打算在这一个专栏中,分享一些本科控制题电赛期间的经验,和大家共同探讨,也希望能帮助刚刚参加电赛的同学,了解一些基本的知识。一些见解和看法可能不同或有错误,欢迎批评指正。 在本文中,主要介绍笔…...

LeetCode 热题 100 70. 爬楼梯

LeetCode 热题 100 | 70. 爬楼梯 大家好,今天我们来解决一道经典的动态规划入门题——爬楼梯。这道题在LeetCode上被标记为简单难度,要求我们计算爬到第n阶楼梯的不同方法数,每次可以爬1或2个台阶。下面我将详细讲解解题思路,并附…...

浔川AI测试版内测报告

浔川AI测试版内测报告 一、引言 本次对浔川AI测试版进行内测,旨在全面评估其功能表现与性能状况,为后续的优化升级及正式上线提供有力依据。 二、测试环境 1. 硬件环境:[Windows 10】 2. 软件环境:操作系统为【核桃编程]&#xff…...

Leetcode刷题记录31——旋转图像

题源:https://leetcode.cn/problems/rotate-image/description/?envTypestudy-plan-v2&envIdtop-100-liked 题目描述: 思路一: 💡 解题思路:分两步完成旋转 虽然“直接旋转”看起来有点抽象,但我们…...

攻防世界-php伪协议和文件包含

fileinclude 可以看到正常回显里面显示lan参数有cookie值表示为language 然后进行一个判断,如果参数不是等于英语,就加上.php,那我们就可以在前面进行注入一个参数,即flag, payload:COOKIE:languageflag …...

[C++] 小游戏 决战苍穹

大家好,各位看到这个标题,斗破苍穹什么时候改叫决战苍穹了?其实,因为版权等一系列问题,斗破苍穹正式改名为决战苍穹,这个版本主要更新内容为解决了皇冠竞技场太过影响游戏平衡,并且提高了一些装…...

项目成本管理_挣得进度ES

在项目成本管理的新实践中, 通过挣值管理(EVM) 的扩展,引入 挣得进度ES 这一概念, ES是EVM理论和实践的延伸,挣得进度理论用ES和实际时间(AT) 替代了传统EVM所使用的进度偏差测量指标SV(挣值—计划价值)。 使用这种替代方法计算…...

矩阵快速幂 快速求解递推公式

文章目录 习题790.多米诺和托米诺平铺 对于一个给定的递推公式,例如dp[i] dp[i-1] * a dp[i-2] * b,那么常用的做法,肯定是使用o(n)的时间复杂度进行线性求解,但是如果 n 10 18 n{10}^{18} n1018,那么肯定超时的,这…...

驱动开发硬核特训 · Day 28(上篇):pinctrl 子系统详解与实战分析

📅 日期:2025-05-05 📚 技术平台:嵌入式Jerry(B站) 一、引言 在嵌入式系统中,SoC 芯片的引脚通常具有多种功能,如 GPIO、UART、I2C、SPI 等。为了在不同的应用场景中灵活配置引脚功…...

20250505下载VLC for Android

20250505下载VLC for Android 2025/5/5 14:35 缘起:做Rockchip的RK3566的Android13下的跨网段PING。 酷芯的图传网段 和 softAP/以太网RJ45共享网段之间互相PING通。 图传的原厂/供应商说可以使用ffmpeg进行rtsp流的转发。 后来确认VLC for Android版本只有接受流&a…...

Jetpack Compose 响应式布局实战:BoxWithConstraints 完全指南

深入理解 Jetpack Compose 中的 BoxWithConstraints 前言 在构建现代 Android 应用时,响应式设计已成为必不可少的要求。Jetpack Compose 作为 Android 的现代 UI 工具包,提供了 BoxWithConstraints 这一强大组件,帮助我们轻松创建能够适应…...

ZYNQ笔记(十七):IP核封装与接口定义

版本:Vivado2020.2(Vitis) 任务:将“HDMI彩条显示实验”(正点原子 ZYNQ FPGA 开发视频)中所实现的 RGB2DVI 模块封装成一个 IP 核。 目录 一、介绍 (1)IP核 (2&#x…...

学习笔记msp430f5529lp

注:本文仅用于个人学习使用,记录笔记。 学习视频msp430f5529库函数入门教程 00.序言_哔哩哔哩_bilibili 向大佬致敬理工男小帅-CSDN博客 CCS环境快捷键使用 代码注释:Ctrl/ 提示/补全: CtrlShiftC 放大:Ctrl 缩小:Ctrl- 切换选择模式&…...

人工智能应用:从技术突破到生态重构的演进之路

一、人工智能的发展历程:从符号主义到通用智能探索 人工智能(AI)的发展始于20世纪中叶,其历程可划分为四个关键阶段: ​符号主义与早期探索(1950s-1970s)​​ 以逻辑推理和专家系统为核心&…...

【ZYNQ Linux移植】4-内核移植

文章目录 0 写在前面1 内核源码的文件结构2 Linux内核移植2.1 移植配置文件2.2 移植设备树2.3 创建脚本进行编译2.4 备份相关文件 3 测试4 总结5 参考资料 0 写在前面 这是一个系列博客,详细介绍如何在 ZYNQ 与 ZYNQ MP 平台上如何移植 Linux 系统。目前网络上的大部…...

代码随想录算法训练营第三十二天

LeetCode/卡码网题目: 518. 零钱兑换 II377. 组合总和 Ⅳ790. 多米诺和托米诺平铺(每日一题)57. 爬楼梯(第八期模拟笔试) 其他: 今日总结 往期打卡 背包问题特点: 滚动数组背包遍历顺序 完全背包从小到大,即基于当前物品更新过的继续更新01背包从大到…...

java CompletableFuture 异步编程工具用法1

1、测试异步调用: static void testCompletableFuture1() throws ExecutionException, InterruptedException {// 1、无返回值的异步任务。异步线程执行RunnableCompletableFuture.runAsync(() -> System.out.println("only you"));// 2、有返回值的异…...

Spring Boot 集成 Solr 的详细步骤及示例

环境准备 安装 Solr :从 Solr 官网(Welcome to Apache Solr - Apache Solr)下载并安装最新版本,然后通过命令 bin/solr start 启动 Solr 服务,使用 bin/solr create -c mycore 创建一个新的 Solr 核心。 安装 JDK &am…...

Nemotron-Research-Tool-N1 如何提升大语言模型工具使用能力?

Nemotron-Research-Tool-N1如何提升大语言模型工具使用能力? 如今,大语言模型(LLMs)发展迅猛,给它配备外部工具成为研究热点。但传统方法存在不少问题。这篇论文提出的Nemotron-Research-Tool-N1系列模型带来新突破&a…...

OpenCV进阶操作:图像直方图、直方图均衡化

文章目录 一、图像直方图二、图像直方图的作用三、使用matplotlib方法绘制直方图2.使用opencv的方法绘制直方图(划分16个小的子亮度区间)3、绘制彩色图像的直方图 四、直方图均衡化1、绘制原图的直方图2、绘制经过直方图均衡化后的图片的直方图3、自适应…...

Android控件VideoView用法

一 控件UI <VideoViewandroid:id="@+id/videoView"android:layout_width="match_parent"android:layout_height="match_parent"android:scaleType="fitCenter" /> 二 配置 <?xml version="1.0" encoding="u…...

人工智能数学基础(十)—— 图论

图论作为数学的重要分支&#xff0c;为人工智能提供了强大的建模和分析工具。无论是社交网络分析、路径规划还是数据结构设计&#xff0c;图论都发挥着不可替代的作用。今天&#xff0c;我将带领大家深入浅出地探索图论的核心概念&#xff0c;并结合 Python 实例&#xff0c;让…...

深入探索Anthropic Claude与Spring AI的融合应用

深入探索Anthropic Claude与Spring AI的融合应用 前言 在人工智能的蓬勃发展进程中&#xff0c;自然语言处理领域不断涌现出强大的模型和工具。Anthropic Claude系列基础AI模型凭借其出色的性能&#xff0c;在各种应用场景中展现出巨大潜力&#xff0c;为开发者和企业提供了丰…...

Python爬虫实战:获取优美图库各类高清图片,为用户提供设计素材

一、引言 在互联网时代,高清壁纸资源丰富多样,而优美图库作为一个提供大量精美壁纸的网站,吸引了众多用户。通过 Python 爬虫技术,可以自动化地从该网站获取所需的壁纸资源,为用户节省时间和精力。然而,网站通常会采取反爬措施来防止数据被恶意抓取,因此需要在爬虫程序…...

Java常用注解大全(基于JDK17+SpringBoot3)

一、基础注解(Java原生) 编译相关 @Override:方法重写校验 java 复制 下载 @Override public String toString() { return "CustomObj"; } @Deprecated:标记过时元素 java 复制 下载 @Deprecated(since="1.8", forRemoval=true) public void oldMethod…...

【NLP】30. 深入理解 In-Context Learning 的核心机制与策略

In-Context Learning&#xff08;ICL&#xff09;详解&#xff1a;提示学习时代的语言理解 一、什么是 In-Context Learning&#xff08;ICL&#xff09;&#xff1f; In-Context Learning 是指&#xff1a; 不改变模型参数&#xff0c;通过在输入中加入示例&#xff08;demon…...

数字化工厂中央控制室驾驶舱系统 - Windows 部署笔记

数字化工厂中央控制室驾驶舱系统 - Windows 部署笔记 环境准备 这篇笔记记录了我在 Windows 10/11 上部署数字化工厂中央控制室驾驶舱系统的全过程&#xff0c;包括各种常见问题的解决方法。部署过程中使用了国内镜像源来加快下载速度。 前置需求 Python&#xff1a;3.8 到…...

数据库的原子事务

原子事务 11.1 全有或全无效应 二级索引需要原子性的多键更新&#xff0c;这不仅对数据库内部一致性至关重要&#xff0c;也对应用数据的一致性非常有用&#xff08;例如考虑账户余额和账户交易&#xff09;。 我们将放弃get-set-del接口&#xff0c;并添加一个新的接口来允…...

基于51单片机的红外人体感应报警器

基于51单片机的人体监测报警 &#xff08;仿真&#xff0b;程序&#xff0b;原理图&#xff0b;PCB&#xff09; 功能介绍 具体功能&#xff1a; 1.按下报警按钮会发生红LED蜂鸣器声光报警&#xff1b; 2.若检测到人&#xff0c;黄LED打开&#xff1b; 3.按下布防按键&…...

从Excel到高级工具:数据分析进阶指南

从Excel到高级工具&#xff1a;数据分析进阶指南 在数据分析的世界里&#xff0c;Excel曾经是众多人的第一站。它简单、直观、功能强大&#xff0c;从普通用户到专业人士&#xff0c;无不对其依赖。然而&#xff0c;随着数据规模增长、分析需求升级&#xff0c;Excel渐渐显得力…...

Excel VBA 自定义函数

一、VBA 函数基础概念 在 Excel VBA 中&#xff0c;函数主要分为两种类型&#xff1a; Sub 过程&#xff1a;执行操作但不返回值Function 函数&#xff1a;执行操作并返回结果 基本语法示例 1. Function 函数示例 定义一个返回字符串的公共函数 Public Function GetGreetin…...