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

六、Hive 分桶

作者:IvanCodes
日期:2025年5月13日
专栏:Hive教程

在 Hive 中,除了常见的分区(Partitioning)分桶(Bucketing)是另一种重要且有效数据组织性能优化手段。它允许我们将表或分区中的数据进一步细分固定数量“桶”中,从而在特定查询场景下(尤其是连接操作和数据抽样)带来显著的性能提升。我们这次将深入探讨 Hive 分桶的创建语法、数据加载方式、典型使用场景及其核心优势

一、创建分桶表:CLUSTERED BY 的魔力

要在 Hive 中创建分桶表,主要依赖 CREATE TABLE 语句中的 CLUSTERED BY 子句,并结合 INTO num_buckets BUCKETS 来指定桶的数量。还可以选择使用 SORTED BY 在每个桶内部对数据进行排序。

语法核心:

CREATE TABLE table_name (
column1_name column1_type,
column2_name column2_type,
...
)
[PARTITIONED BY (partition_column_name partition_column_type, ...)]
CLUSTERED BY (bucketing_column_name1 [, bucketing_column_name2 ...])
[SORTED BY (sorting_column_name1 [ASC|DESC] [, sorting_column_name2 [ASC|DESC] ...])]
INTO N BUCKETS
[ROW FORMAT row_format]
[STORED AS file_format]
[LOCATION hdfs_path];
  • CLUSTERED BY (bucketing_column_name1 [, bucketing_column_name2 ...]): 指定一个或多个用于分桶的列。Hive 会根据这些列的组合值的哈希结果来决定数据行应该放入哪个桶。
  • INTO N BUCKETS: 指定将数据分散到 N 个桶中。N 通常建议是 HDFS 块大小的整数倍,或者与集群中 Reducer 的数量相关联。
  • SORTED BY (...): 可选项,用于在每个桶内部,根据指定的列对数据进行排序。这对于后续的排序合并连接(Sort Merge Bucket Join)尤其有用。

代码案例:创建一个按 user_id 分桶的用户行为日志表
假设我们有一个用户行为日志表,希望按 user_id 将数据分散到 32 个桶中,并且在每个桶内按 event_timestamp 降序排序。

CREATE TABLE user_activity_bucketed (
user_id BIGINT,
event_type STRING,
event_timestamp TIMESTAMP,
page_url STRING
)
COMMENT 'User activity log table, bucketed by user_id'
CLUSTERED BY (user_id)
SORTED BY (event_timestamp DESC)
INTO 32 BUCKETS
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS ORC;

在这个例子中,user_id 是分桶键,数据将被哈希到 32 个桶中。每个桶内的数据会根据 event_timestamp 从新到旧排序。使用 ORC 文件格式通常能带来更好的压缩和查询性能。

二、加载数据到分桶表:激活分桶机制

仅仅创建了分桶表结构还不够,关键在于如何在加载数据时真正触发分桶逻辑,使数据按照定义的方式写入到各个桶文件中。

核心要点:
当从一个非分桶表一个分桶表插入数据时,Hive 通常需要执行 MapReduce 或 Tez 作业计算哈希值并将数据分发到正确的桶。在较早的 Hive 版本中,可能需要设置 hive.enforce.bucketing = true;。然而,在现代 Hive 版本中(尤其是 Hive 2.0 及以后),当目标表定义了分桶,Hive 在执行 INSERT OVERWRITE TABLE ... SELECT ...CREATE TABLE ... AS SELECT ... 时,通常会自动进行分桶写入。

在这里插入图片描述
在这里插入图片描述

代码案例:从一个临时表加载数据到分桶表
假设我们有一个未分桶的临时表 temp_user_activity 存储了原始日志数据。

-- 假设 temp_user_activity 表已存在且包含数据
-- user_id BIGINT, event_type STRING, event_timestamp TIMESTAMP, page_url STRING-- 设置(在某些旧版本Hive中可能需要,现代版本通常自动处理)
-- SET hive.enforce.bucketing = true; -- 将数据从临时表插入到分桶表
INSERT OVERWRITE TABLE user_activity_bucketed
SELECT
user_id,
event_type,
event_timestamp,
page_url
FROM
temp_user_activity;

执行上述 INSERT OVERWRITE 语句时,Hive 会读取 temp_user_activity 表的数据,对每一行的 user_id 计算哈希值,然后根据哈希结果将数据写入 user_activity_bucketed 表对应的桶文件中。如果定义了 SORTED BY,在写入桶之前还会进行排序。

三、分桶的好处与使用场景:为何选择分桶?

分桶的主要优势在于提升特定类型查询的性能优化数据管理

核心好处:

  1. 高效的连接操作 (Join Optimization)
    • 场景:当两个大表需要根据分桶键进行连接时。
    • 优势:如果两个表都使用相同的列进行分桶,并且桶的数量相同(或者是倍数关系),Hive 可以采用更高效的连接策略,如桶映射连接 (Bucket Map Join)排序合并桶连接 (Sort Merge Bucket Join, SMBJ)。这些策略可以显著减少避免大规模的数据混洗 (Shuffle),因为具有相同连接键值的数据已经被预先组织对应的桶中。
    • 代码案例:分桶连接
      假设我们还有另一个分桶表 user_profiles_bucketed,同样按 user_id 分桶到 32 个桶。
-- 创建另一个分桶表 (简化示例)
CREATE TABLE user_profiles_bucketed (
user_id BIGINT,
user_name STRING,
registration_date DATE
)
CLUSTERED BY (user_id) INTO 32 BUCKETS
STORED AS ORC;-- 假设 user_profiles_bucketed 也已加载数据-- 执行分桶连接查询
-- Hive 优化器会自动尝试使用 SMBJ 或 Bucket Map Join
SELECT
ua.user_id,
ua.event_type,
up.user_name
FROM
user_activity_bucketed ua
JOIN
user_profiles_bucketed up ON ua.user_id = up.user_id
WHERE
ua.event_type = 'purchase';
  1. 高效的数据抽样 (Efficient Sampling)
    • 场景:需要从大表中快速获取一部分具有代表性的数据进行探索性分析测试
    • 优势:分桶使得基于桶的抽样非常高效。可以直接读取指定桶的全部或部分数据,而无需扫描整个表。
    • 代码案例:基于桶的数据抽样
      user_activity_bucketed 表中抽取第 3 个桶(总共 32 个桶)的数据。
SELECT
*
FROM
user_activity_bucketed TABLESAMPLE(BUCKET 3 OUT OF 32 ON user_id);

这里的 ON user_id 指明了抽样是基于 user_id 这个分桶列进行的。

  1. 数据组织更规整
    • 优势:分桶有助于将数据相对均匀地分散到固定数量的文件中,避免在某些分区下出现单个文件过大过多小文件(相对于没有分桶的情况)的问题,这对于文件系统管理MapReduce/Tez任务并行度可能更有利

结语:善用分桶,为 Hive 查询加速

Hive 的分桶机制是一项强大数据组织工具。虽然它增加了一些表定义的复杂性数据加载考量,但在合适的场景下(特别是涉及大表连接和数据抽样时),其带来的性能收益非常可观的。理解其工作原理掌握创建和使用方法,对于每一位使用 Hive 进行数据分析和处理工程师来说,都是一项宝贵技能。选择合适的分桶列桶的数量,是发挥分桶威力关键


练习题

一、选择题
  1. 在 Hive 中,声明一个表按 product_id 列分桶到 16 个桶,正确的子句是:
    A. BUCKETED BY (product_id) INTO 16 FILES
    B. CLUSTERED ON (product_id) INTO 16 BUCKETS
    C. CLUSTERED BY (product_id) INTO 16 BUCKETS
    D. PARTITIONED BY (product_id) BUCKETS 16

  2. 分桶表最主要的性能优化体现在哪类操作上?
    A. 对表进行 COUNT(*) 操作
    B. 对分桶键进行 GROUP BY 聚合
    C. 两个大表基于分桶键的等值连接
    D. 对非分桶键进行范围查询

  3. 当使用 TABLESAMPLE(BUCKET x OUT OF y ON col)进行抽样时,y 参数通常代表:
    A. 抽样的百分比
    B. 表的总桶数
    C. 表中 col 列的不同值的数量
    D. 抽样后得到的记录数

二、代码题
  1. 场景:你有一个电商订单表 orders_raw,包含以下列:order_id STRING, customer_id STRING, order_date DATE, total_amount DECIMAL(12,2)。你希望创建一个新的分桶表 orders_bucketed 以优化按 customer_id 的查询和连接。
    要求

    • orders_bucketed 表应包含与 orders_raw 相同的列。
    • customer_id 列分桶,分为 32 个桶。
    • 桶内数据按 order_date 升序排序。
    • 存储格式为 Parquet。
      请编写创建 orders_bucketed 表的 HQL 语句。
  2. 场景:接上题,orders_raw 表中已经包含了大量订单数据。
    要求:请编写 HQL 语句,将 orders_raw 表中的所有数据加载到新创建的 orders_bucketed 表中,确保数据按照分桶定义进行组织。


练习题答案

一、选择题答案

  1. C. CLUSTERED BY (product_id) INTO 16 BUCKETS
  2. C. 两个大表基于分桶键的等值连接
  3. B. 表的总桶数

二、代码题答案

  1. 创建 orders_bucketed 表的 HQL 语句:
CREATE TABLE orders_bucketed (
order_id STRING,
customer_id STRING,
order_date DATE,
total_amount DECIMAL(12,2)
)
COMMENT 'Customer orders table, bucketed by customer_id'
CLUSTERED BY (customer_id)
SORTED BY (order_date ASC)
INTO 32 BUCKETS
STORED AS PARQUET;
  1. 加载数据到 orders_bucketed 表的 HQL 语句:
-- 确保 Hive 配置允许或自动处理分桶写入
-- (现代 Hive 版本通常不需要额外设置,但旧版本可能需要 SET hive.enforce.bucketing = true;)INSERT OVERWRITE TABLE orders_bucketed
SELECT
order_id,
customer_id,
order_date,
total_amount
FROM
orders_raw;

相关文章:

六、Hive 分桶

作者:IvanCodes 日期:2025年5月13日 专栏:Hive教程 在 Hive 中,除了常见的分区(Partitioning),分桶(Bucketing)是另一种重要且有效的数据组织和性能优化手段。它允许我们…...

INFINI Console 纳管 Elasticsearch 9(一):指标监控、数据管理、DSL 语句执行

Elasticsearch v9.0 版本最近已发布,而 INFINI Console 作为一款开源的非常轻量级的多集群、跨版本的搜索基础设施统一管控平台,是否支持最新的 Elasticsearch v9.0 集群管理呢?本文以 INFINI Console v1.29.2 为例,从指标监控、数…...

ansible进阶版01

ansible进阶版01 欢迎使用Markdown编辑器最佳实践保持简单 保持井然有序(有组织的)经常测试 git工作原理 chapter 2编写ymal格式的主机清单 欢迎使用Markdown编辑器 最佳实践 保持简单 使用yaml的原生语法使用自带模块尽量使用专用模块,不…...

python文件打包成exe文件

✅ 一、安装 PyInstaller 打开cmd,输入以下代码 pip install pyinstaller✅ 二、打包指令 比如说你有如下的文件需要打包。 首先复制你的文件所在目录,比如我的是C:\Users\Administrator\Desktop\BearingSearchSystem 在cmd中切换到该目录来&#xf…...

人脸识别系统中的隐私与数据权利保障

首席数据官高鹏律师创作 如今人脸识别技术以其高效、便捷的特性广泛应用于各个领域,从安防监控到移动支付,从门禁系统到社交媒体。然而,这项技术在为我们的生活带来诸多便利的同时,也引发了一系列关于隐私与数据权利的深刻担忧。…...

电脑关机再开机会换IP吗?深入解析分配机制

在日常使用电脑时,许多用户可能会好奇:‌关机后再开机,IP地址会不会变化?‌ 这个问题看似简单,但实际上涉及多个因素。本文将详细解析电脑IP地址的变化机制,帮助大家理解其中的原理,并提供相关的…...

经典中的经典-比特币白皮书中文版

AI是一切假的集合,如果任凭AI如此聪明下去,所有的人都将被AI愚弄与股掌之间,那么能限制AI的只有区块链这个让一切数据都无处遁形的真神,而比特币作为区块链的鼻祖,开创了公开账本的先河,当互联网上所有的信…...

Spring事务失效的全面剖析

文章目录 1. Spring事务基础1.1 什么是Spring事务1.2 Spring事务的实现原理1.3 `@Transactional`注解的主要属性1.4 使用Spring事务的简单示例2. Spring事务失效的常见场景及解决方案2.1 方法不是public的问题描述问题示例解决方案技术原理解释2.2 自调用问题(同一个类中的方法…...

本地的ip实现https访问-OpenSSL安装+ssl正式的生成(Windows 系统)

1.下载OpenSSL软件 网站地址:Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions 安装: 一直点击下一步就可以了 2.设置环境变量 在开始菜单右键「此电脑」→「属性」→「高级系统设置」→「环境变量」 在Path 中添加一个: xxxx\OpenSSL-…...

【go】binary包,大小端理解,read,write使用,自实现TCP封包拆包案例

binary.LittleEndian 是 Go 语言 encoding/binary 包中的一个常量,用于指定字节序(Byte Order)。字节序是指多字节数据在内存中存储的顺序,有两种主要方式: 小端序(Little Endian):…...

[万字]qqbot开发记录,部署真寻bot+自编插件

这是我成功部署真寻bot以及实现一个自己编写的插件(连接deepseek回复内容)的详细记录,几乎每一步都有截图。 正文: 我想玩玩qqbot。为了避免重复造轮子,首先选一个github的高星项目作为基础吧。 看了一眼感觉真寻bot不…...

国内USB IP商业解决方案新选择:硬件USB Server

在数字化办公日益普及的今天,USB OVER NETWORK技术,即USB IP技术,为企业带来了前所未有的便捷与高效。作为这一领域的佼佼者,朝天椒USB Server以其卓越的性能和贴心的设计,正逐步成为众多中国企业的首选USB IP商业解决…...

百度导航广告“焊死”东鹏特饮:商业底线失守,用户安全成隐忧

近日,百度地图因导航时植入“广告”的问题登上社交媒体热搜,并引发广泛争议。 截图自微博 导航途中出现“焊死”在路面的广告 安全隐患引争议 多位网友发帖称,在使用百度地图导航时,导航界面中的公路路面上出现了“累了困了喝东…...

yolo11n-obb训练rknn模型

必备: 准备一台ubuntu22的服务器或者虚拟机(x86_64) 1、数据集标注: 1)推荐使用X-AnyLabeling标注工具 2)标注选【旋转框】 3)可选AI标注,再手动补充,提高标注速度 …...

GNU Screen 曝多漏洞:本地提权与终端劫持风险浮现

SUSE安全团队全面审计发现,广泛使用的终端复用工具GNU Screen存在一系列严重漏洞,包括可导致本地提权至root权限的缺陷。这些问题同时影响最新的Screen 5.0.0版本和更普遍部署的Screen 4.9.x版本,具体影响范围取决于发行版配置。 尽管GNU Sc…...

无人机避障——如何利用MinumSnap进行对速度、加速度进行优化的轨迹生成(附C++python代码)

🔥轨迹规划领域的 “YYDS”——minimum snap!作为基于优化的二次规划经典,它是无人机、自动驾驶轨迹规划论文必引的 “开山之作”。从优化目标函数到变量曲线表达,各路大神疯狂 “魔改”,衍生出无数创新方案。 &#…...

2025 3D工业相机选型及推荐

3D工业相机是专门为工业应用设计的三维视觉采集设备,能够获取物体的三维空间信息,在智能制造、质量检测、机器人引导等领域有广泛应用。 一、主要类型 1.结构光3D相机 通过投射特定光斑或条纹图案并分析变形来重建三维形状 典型代表:双目结构…...

芋道(yudao-cloud)项目,后端接口报401-账号未登录解决方案

一、需求 最近公司有新的业务需求,调研了一下,决定使用芋道(yudao-cloud)框架,于是从github(https://github.com/YunaiV/yudao-cloud)上克隆项目,选用的是jdk17版本的。根据项目启动手册&#…...

动态域名服务ddns怎么设置?如何使用路由器动态域名解析让外网访问内网?

设置路由器的动态域名解析(DDNS),通常需先选择支持 DDNS 的路由器和提供 DDNS 服务的平台,然后在路由器管理界面中找到 DDNS 相关设置选项,填入在服务平台注册的账号信息,完成配置后保存设置并等待生效。 …...

论文《Collaboration-Aware Graph Convolutional Network for Recommender Systems》阅读

论文《Collaboration-Aware Graph Convolutional Network for Recommender Systems》阅读 论文概况Introduction and MotivationMethodologyLightGCN 传播形式CIRCAGCNImplementation Experiments 论文概况 论文《Collaboration-Aware Graph Convolutional Network for Recomm…...

Codis集群搭建和集成使用的详细步骤示例

以下是Codis集群搭建和集成使用的详细步骤示例: 环境准备 安装Go语言环境 下载并安装适配操作系统的Go语言版本。配置环境变量GOROOT和GOPATH。 安装ZooKeeper 下载ZooKeeper压缩包,解压并进入目录。复制conf/zoo_sample.cfg为conf/zoo.cfg。启动ZooKe…...

利用比较预言机处理模糊的偏好数据

论文标题 ComPO:Preference Alignment via Comparison Oracles 论文地址 https://arxiv.org/pdf/2505.05465 模型地址 https://huggingface.co/ComparisonPO 作者背景 哥伦比亚大学,纽约大学,达摩院 动机 DPO算法直接利用标注好的数据来做偏好对…...

《数据库原理》部分习题解析

《数据库原理》部分习题解析 1. 课本pg196.第1题。 (1)函数依赖 若对关系模式 R(U) 的任何可能的关系 r,对于任意两个元组 t₁ 和 t₂,若 t₁[X] t₂[X],则必须有 t₁[Y] t₂[Y],则称属性集 Y 函数依赖…...

【HCIA】浮动路由

前言 我们通常会在出口路由器配置静态路由去规定流量进入互联网默认应该去往哪里。那么,如果有两个运营商的路由器都能为我们提供上网服务,我们应该如何配置默认路由呢?浮动路由又是怎么一回事呢? 文章目录 前言1. 网络拓扑图2. …...

基于机器学习的卫星钟差预测方法研究HPSO-BP

摘要 本文研究了三种机器学习方法(BP神经网络、随机森林和支持向量机)在卫星钟差预测中的应用。通过处理GPS和GRACE卫星的钟差数据,构建了时间序列预测模型,并比较了不同方法的预测性能。实验结果表明,优化后的BP神经…...

机器学习中分类模型的常用评价指标

评价指标是针对模型性能优劣的一个定量指标。 一种评价指标只能反映模型一部分性能,如果选择的评价指标不合理,那么可能会得出错误的结论,故而应该针对具体的数据、模型选取不同的的评价指标。 本文将详细介绍机器学习分类任务的常用评价指…...

AI 检测原创论文:技术迷思与教育本质的悖论思考

当高校将 AI 写作检测工具作为学术诚信的 "电子判官",一场由技术理性引发的教育异化正在悄然上演。GPT-4 检测工具将人类创作的论文误判为 AI 生成的概率高达 23%(斯坦福大学 2024 年研究数据),这种 "以 AI 制 AI&…...

langchain学习

无门槛免费申请OpenAI ChatGPT API搭建自己的ChatGPT聊天工具 https://nuowa.net/872 基本概念 LangChain 能解决大模型的两个痛点,包括模型接口复杂、输入长度受限离不开自己精心设计的模块。根据LangChain 的最新文档,目前在 LangChain 中一共有六大…...

蓝桥杯 10. 全球变暖

全球变暖 原题目链接 题目描述 你有一张某海域 N x N 像素的照片: . 表示海洋# 表示陆地 例如如下所示: ....... .##.... .##.... ....##. ..####. ...###. .......在照片中,“上下左右”四个方向上连在一起的一片陆地组成一座岛屿。例…...

OpenTiny icons——超轻量的CSS图标库,引领图标库新风向

我们非常高兴地宣布 opentiny/icons 正式发布啦! 源码:https://github.com/opentiny/icons(欢迎 Star ⭐) 官网:https://opentiny.github.io/icons/ 图标预览:https://opentiny.github.io/icons/brow…...

python使用OpenCV 库将视频拆解为帧并保存为图片

python使用OpenCV 库将视频拆解为帧并保存为图片 import cv2 import osdef video_to_frames(video_path, output_folder, frame_prefixframe_, interval1, target_sizeNone, grayscaleFalse):"""将视频拆分为帧并保存为图片参数:video_path (str): 视频文件路径…...

[论文阅读]ControlNET: A Firewall for RAG-based LLM System

ControlNET: A Firewall for RAG-based LLM System [2504.09593] ControlNET: A Firewall for RAG-based LLM System RAG存在数据泄露风险和数据投毒风险。相关研究探索了提示注入和投毒攻击,但是在控制出入查询流以减轻威胁方面存在不足 文章提出一种ai防火墙CO…...

机器学习 --- 数据集

机器学习 — 数据集 文章目录 机器学习 --- 数据集一,sklearn数据集介绍二,sklearn现实世界数据集介绍三,sklearn加载数据集3.1 加载鸢尾花数据集3.2 加载糖尿病数据集3.3 加载葡萄酒数据集 四,sklearn获取现实世界数据集五&#…...

在Ubuntu服务器上部署Label Studio

一、拉取镜像 docker pull heartexlabs/label-studio:latest 二、启动容器 &#xff08;回到用户目录&#xff0c;例&#xff1a;输入pwd&#xff0c;显示 /home/<user>&#xff09; docker run -d --name label-studio -it -p 8081:8080 -v $(pwd)/mydata:/label-st…...

机器学习07-归一化与标准化

归一化与标准化 一、基本概念 归一化&#xff08;Normalization&#xff09; 定义&#xff1a;将数据缩放到一个固定的区间&#xff0c;通常是[0,1]或[-1,1]&#xff0c;以消除不同特征之间的量纲影响和数值范围差异。公式&#xff1a;对于数据 ( x )&#xff0c;归一化后的值…...

用vue和go实现登录加密

前端使用CryptoJS默认加密方法&#xff1a; var pass CryptoJS.AES.encrypt(formData.password, key.value).toString()使用 CryptoJS.AES.encrypt() 时不指定加密模式和参数时&#xff0c;CryptoJS 默认会执行以下操作 var encrypted CryptoJS.AES.encrypt("明文&quo…...

服务器制造业中,L2、L6、L10等表示什么意思

在服务器制造业中&#xff0c;L2、L6、L10等是用于描述服务器生产流程集成度的分级体系&#xff0c;从基础零件到完整机架系统共分为L1-L12共12个等级。不同等级对应不同的生产环节和交付形态&#xff0c;以下是核心级别的具体含义&#xff1a; L2&#xff08;Level 2&#xf…...

mysql8常用sql语句

查询结果带行号 -- 表名为 mi_user&#xff0c; 假设包含列 id &#xff0c;address SELECT ROW_NUMBER() OVER (ORDER BY id) AS row_num, t.id, t.address FROM mi_user t ; SELECT ROW_NUMBER() OVER ( ) AS row_num, t.id, t.address FROM mi_user t ; 更新某列数…...

多模态RAG与LlamaIndex——1.deepresearch调研

摘要 关键点&#xff1a; 多模态RAG技术通过结合文本、图像、表格和视频等多种数据类型&#xff0c;扩展了传统RAG&#xff08;检索增强生成&#xff09;的功能。LlamaIndex是一个开源框架&#xff0c;支持多模态RAG&#xff0c;提供处理文本和图像的模型、嵌入和索引功能。研…...

汽车工厂数字孪生实时监控技术从数据采集到三维驱动实现

在工业智能制造推动下&#xff0c;数字孪生技术正成为制造业数字化转型的核心驱动力。今天详细介绍数字孪生实时监控技术在汽车工厂中的应用&#xff0c;重点解析从数据采集到三维驱动实现的全流程技术架构&#xff0c;并展示其在提升生产效率、降低成本和优化决策方面的显著价…...

深度解码双重订阅用户:高价值流量池的掘金指南

在流量红利消退的当下&#xff0c;内容平台与电商平台的竞争已进入白热化阶段。数据显示&#xff0c;2023年全球用户平均每日切换应用频次超过200次&#xff0c;但仅有3%的用户愿意为多个平台持续付费。这3%的群体——“双重订阅用户”&#xff0c;正成为商业价值最高的流量金矿…...

MATLAB Simulink在Autosar和非Autosar工程下的开发流程

软件开发有两种方法&#xff1a;自上而下和自下而上。自上而下就是从整体出发去设计各个模块和模块间的接口&#xff0c;要求架构设计人员对产品功能非常清楚&#xff1b;自下而上就是从一个一个模块出发去设计&#xff0c;进而组成一个整体。自下而上可能会带来冗余代码过多和…...

使用DevEco Studio性能分析工具高效解决鸿蒙原生应用内存问题

目录 一、内存问题的识别与初步判断 1.1 内存问题的常见表现 1.2 使用 DevEco Profiler 的实时监控功能 1.2.1 打开 Profiler 工具 1.2.2 监控内存变化 1.2.3 判断内存异常 1.2.4 示例代码:模拟内存泄漏 二、内存问题的定界与定位 2.1 使用 Snapshot/Allocation 模板分…...

AI视频生成工具开发与搭建:从技术到应用的全方位指南

随着AI技术的飞速发展&#xff0c;视频创作的门槛被大幅降低。无论是个人用户还是企业开发者&#xff0c;都能通过AI工具实现照片转动态、视频爆改创意、小程序开发等多样化需求。本文将从技术开发、工具应用及行业趋势三个维度&#xff0c;深度解析AI视频生成的核心技术与实践…...

【android bluetooth 框架分析 02】【Module详解 7】【VendorSpecificEventManager 模块介绍】

1. 背景 我们在 gd_shim_module 介绍章节中&#xff0c;看到 我们将 VendorSpecificEventManager 模块加入到了 modules 中。 // system/main/shim/stack.cc modules.add<hci::VendorSpecificEventManager>();在 ModuleRegistry::Start 函数中我们对 加入的所有 module…...

Docker环境下的Apache NiFi安装实践踩坑记录

引言:由于最近用到数据同步&#xff0c;故打算采用中间件工具来做数据同步&#xff0c;谁知第一步部署Apache NiFi环境就耽搁了好久&#xff0c;其中遇到一些问题&#xff0c;故记录下来部署成功记录 问题1&#xff1a;HTTPS访问 HTTP ERROR 400 Invalid SNI问题2&#xff1a;…...

flutter Stream 有哪两种订阅模式。

Flutter 中的 Stream 有两种订阅模式&#xff1a; ​单订阅模式 (Single Subscription)​​ 只能有一个订阅者&#xff08;listen 只能调用一次&#xff09;&#xff0c;后续调用会抛出异常。数据仅在订阅后开始传递&#xff0c;适用于点对点通信场景&#xff08;如文件读取流…...

删除购物车中一个商品

一. 删除购物车中一个商品 删除商品时我们要考虑一个问题&#xff0c;当商品数量等于1时&#xff0c;删除商品就直接将其从数据库中删除即可。但是当数量大于1时&#xff0c;删除商品就是让商品数量-1。因此我们在删除一个商品时首先要判断该商品在购物车中的数量。 Controlle…...

EF Core 数据库迁移命令参考

在使用 Entity Framework Core 时&#xff0c;若你希望通过 Package Manager Console (PMC) 执行迁移相关命令&#xff0c;以下是常用的 EF Core 迁移命令&#xff1a; PMC 方式 ✅ 常用 EF Core PMC 命令&#xff08;适用于迁移&#xff09; 操作PMC 命令添加迁移Add-Migra…...

5月13日day24日打卡

元组和OS模块 知识点回顾&#xff1a; 元组可迭代对象os模块 作业&#xff1a;对自己电脑的不同文件夹利用今天学到的知识操作下&#xff0c;理解下os路径。 元组 元组的特点&#xff1a; 有序&#xff0c;可以重复&#xff0c;这一点和列表一样元组中的元素不能修改&#xf…...