五、Hive表类型、分区及数据加载
在 Hive 中高效构建、管理和查询数据仓库,核心在于精准运用表类型(内部/外部)与分区策略(静态/动态/多重)。这不仅决定数据的生命周期归属,更是优化海量数据查询性能的关键手段。
一、表的身份权责:内部表 vs 外部表
内部表 (Managed Table)
- 定义: Hive 默认。Hive 同时管理元数据和 HDFS 数据(通常在仓库目录创建专属子目录)。
- 数据控制: Hive 拥有并控制数据完整生命周期。
- 生命周期:
DROP TABLE
会删除元数据和 HDFS 数据。 - 适用: 临时表、中间结果,或完全由 Hive 控制的数据。
代码:创建内部表
CREATE TABLE clicks_internal (session_id STRING,click_url STRING
)
COMMENT '内部表,数据由Hive管理';
外部表 (External Table)
- 定义: 需显式用
EXTERNAL
,必须用LOCATION
指定 HDFS 路径。Hive 仅管理元数据。 - 数据控制: Hive 不拥有数据,数据保留在
LOCATION
原始位置。 - 生命周期:
DROP TABLE
仅删元数据,HDFS 数据保留。 - 适用: 管理已存在数据、需共享数据、防误删关键数据。
代码:创建外部表
CREATE EXTERNAL TABLE impressions_external (ad_id STRING,user_id STRING)COMMENT '外部表,数据独立于Hive'
LOCATION '/data/raw/impressions'; -- 指定数据存储路径
关键操作:若手动在外部表 LOCATION
路径下增删分区目录,需执行 MSCK REPAIR TABLE table_name;
同步元数据。
代码:修复外部表分区
MSCK REPAIR TABLE impressions_external;
核心对比: DROP TABLE
是否删 HDFS 数据;Hive 是否移动/拥有数据。
二、查询加速核心:分区表及其数据加载
分区通过分区键将大表数据物理划分到 HDFS 不同子目录,实现查询剪枝,极大提升性能。
创建分区表
- 分区键不是表中实际存储的列,但表现如普通列。
- 支持多重分区,形成层级目录。
代码:创建单分区表
CREATE TABLE daily_activity (user_id BIGINT,type STRING)
PARTITIONED BY (dt DATE);
代码:创建多重分区表
CREATE TABLE page_views (user_id BIGINT, page_url STRING)
PARTITIONED BY (view_date DATE, country STRING) -- 按日期和国家分区
STORED AS ORC;
数据加载到分区表
关键:必须确保数据被放入正确的分区目录。Hive 不推荐直接用 hadoop fs -put
到分区目录(因为这不会更新元数据,除非后续 MSCK REPAIR
或 ALTER TABLE ADD PARTITION
)。主要有两种方式:
1. 静态分区加载
-
机制: 在加载命令中 明确指定目标分区的所有键值。Hive 知道数据确切的目的地。
-
方式一:
LOAD DATA
(通常用于加载已准备好的文件到特定分区)LOCAL
关键字表示文件在运行 Hive 命令的本地机器上(对 HiveServer2 来说是 Server 所在机器)。省略LOCAL
表示文件在 HDFS 上。OVERWRITE
会先清空目标分区再加载。省略则追加。
代码:从本地加载到单分区
LOAD DATA LOCAL INPATH '/path/to/local/activity_20231103.txt' OVERWRITE INTO TABLE daily_activity PARTITION (dt='2023-11-03');
代码:从 HDFS 加载到多重分区
LOAD DATA INPATH '/user/data/views_us_20231103' INTO TABLE page_views PARTITION (view_date='2023-11-03', country='US');
-
方式二:
INSERT OVERWRITE/INTO ... PARTITION
(通常用于从其他表查询结果并写入特定分区)INSERT OVERWRITE
覆盖分区,INSERT INTO
追加(Hive 0.14+)。
代码:从源表查询插入到特定分区
INSERT OVERWRITE TABLE page_views PARTITION (view_date='2023-11-03', country='CA') -- 静态指定分区 SELECT user_id, page_url FROM source_views WHERE event_date = '2023-11-03' AND user_country = 'CA';
-
静态分区特点: 控制精准;适合分区值已知/固定;分区组合多时语句繁琐。
2. 动态分区加载
- 机制: 仅用于
INSERT ... SELECT
。在PARTITION
子句中不指定(或部分不指定)分区键的值,让 Hive 根据SELECT
查询结果中对应列(必须是最后几列)的实际值,自动推断、创建分区目录并写入数据。 - 核心配置:
SET hive.exec.dynamic.partition=true;
(必须启用)SET hive.exec.dynamic.partition.mode=nonstrict;
(推荐。允许所有分区键动态。strict
模式至少需一个静态键,防误操作)- (可选)
hive.exec.max.dynamic.partitions...
等参数控制资源。
SELECT
列顺序: 极其重要!SELECT
列表中的最后几列 必须按照PARTITION
子句中动态分区键的顺序排列,且类型兼容。
代码:全动态分区加载 (单分区键)
SET hive.exec.dynamic.partition.mode=nonstrict;
INSERT OVERWRITE TABLE daily_activity
PARTITION (dt) -- dt 是动态分区键
SELECT user_id, type, event_date -- event_date 的值将决定 dt 分区值
FROM source_table;
代码:全动态分区加载 (多重分区键)
SET hive.exec.dynamic.partition.mode=nonstrict;
INSERT OVERWRITE TABLE page_views
PARTITION (view_date, country) -- view_date, country 都是动态分区键
SELECT user_id, page_url, event_date, user_country -- 最后两列对应分区键
FROM source_views;
代码:混合分区加载 (多重分区,静态+动态)
-- 静态指定 view_date, 动态指定 country
INSERT OVERWRITE TABLE page_views
PARTITION (view_date='2023-11-03', country) -- 静态在前,动态在后
SELECT user_id, page_url, user_country -- 最后一列对应动态分区键 country
FROM source_views
WHERE event_date = '2023-11-03';
- 动态分区特点: 自动化、便捷,尤其适合批量转换或分区值多样/未知;需小心配置,谨防意外产生过多小分区或数据倾斜。
手动管理分区
- 除加载外,可直接操作分区元数据。
代码:手动添加/删除/修改分区
ALTER TABLE page_views ADD IF NOT EXISTS PARTITION (view_date='2023-11-04', country='CA');
ALTER TABLE page_views DROP IF EXISTS PARTITION (view_date='2023-11-01', country='UK');
ALTER TABLE page_views PARTITION (view_date='2023-11-03', country='US') SET LOCATION 'hdfs:///new/path/...'; -- 修改路径 (不移动数据)
三、实战演练与深度思考
练习题 1:
/data/shared_logs
有需长期保留、多部门共享的日志。应创建内部表还是外部表?为何?若手动在 HDFS 增新分区目录及数据,如何让 Hive 感知?
练习题 2:
源表 orders_source
(含 order_id
, user_id
, order_amount
, order_country
, order_date
DATE)。创建按国家和日期分区的外部表 orders_partitioned
(ORC格式,数据存 /data/orders_part
),并写动态分区导入数据的 INSERT 语句。
练习题 3:
静态分区 PARTITION
子句的值与源数据列值必须一致吗?动态分区呢?解释原因。
练习题 4:
表 daily_activity
按 dt
分区。SELECT COUNT(*) FROM daily_activity WHERE user_id = 123;
会利用分区提速吗?为什么?如何设计能让基于 user_id
的查询提速?
练习题 5:
解释 hive.exec.dynamic.partition.mode=strict
与 nonstrict
的区别及 strict
设计意图。
练习题 6:
如何将内部表 prod_data
无风险转为外部表?写 ALTER
语句。
练习题 7 (代码):
查看 orders_partitioned
表的完整 DDL (创建语句)。
练习题 8 (代码):
列出 orders_partitioned
表中 order_country='CA'
的所有分区。
练习题 9 (代码):
为分区表 metrics_table
(分区键 report_date DATE
) 批量添加 2023-12-01
到 2023-12-05
的分区元数据(假设 HDFS 目录结构已备好)。
练习题 10 (代码):
从 orders_partitioned
表中一次性删除多个分区:country='JP', date='2023-06-18'
和 country='KR', date='2023-06-19'
。
练习题 11 (代码):
写查询计算 orders_partitioned
表中 order_country
为 ‘DE’ 或 ‘FR’,且 order_date
在 2023年第三季度的总订单数。
练习题 12 (代码):
查看 page_views
表的分区键信息。
练习题 13 (代码):
使用 INSERT OVERWRITE DIRECTORY
将 page_views
表特定分区 (date='2023-11-03', country='US'
) 数据导出到本地目录 /tmp/exported_data
,字段分隔符为 |
。
练习题 14 (代码):
假设 daily_activity
表你想按 dt
和 type
进行动态分区,源表 source_table
包含 user_id, activity_type, event_date
。写出正确的 INSERT … SELECT 语句,确保动态分区列顺序正确。
练习题 15 (代码):
创建一个内部表 user_profiles
,包含 user_id INT, profile MAP<STRING,STRING>
,字段分隔符为 ,
,Map 键值对分隔符为 #
,Map 内 KV 分隔符为 :
。
答案解析
答案 1:
外部表。原因:数据独立、需共享/保留;DROP
安全。执行 MSCK REPAIR TABLE table_name;
同步新分区。
答案 2:
DDL:
CREATE EXTERNAL TABLE orders_partitioned (
order_id BIGINT,
user_id BIGINT,
order_amount DECIMAL(18,2))
PARTITIONED BY (order_country STRING, order_date DATE) STORED AS ORC
LOCATION '/data/orders_part';
INSERT:
SET hive.exec.dynamic.partition.mode=nonstrict;
INSERT OVERWRITE TABLE orders_partitioned PARTITION (order_country, order_date)
SELECT order_id, user_id, order_amount, order_country, order_date FROM orders_source;
答案 3:
- 静态:不必。指定值决定目录。
- 动态:必须。分区值源自 SELECT 列实际值。
答案 4:
不会。WHERE
未用分区键 dt
。基于 user_id
提速可考虑分桶 (CLUSTERED BY (user_id) ...
)。
答案 5:
strict
要求至少一个静态分区键。意图:防误操作(如忘加 WHERE)全表扫描创海量分区。nonstrict
无此限制。
答案 6:
ALTER TABLE prod_data SET TBLPROPERTIES('EXTERNAL'='TRUE');
答案 7:
SHOW CREATE TABLE orders_partitioned;
答案 8:
SHOW PARTITIONS orders_partitioned PARTITION(order_country='CA');
答案 9:
标准 HiveQL 不支持日期范围批量 ADD PARTITION
。需脚本循环或 MSCK REPAIR
。
脚本思路 (伪代码):
for day in {01..05}; do
hive -e "ALTER TABLE metrics_table ADD IF NOT EXISTS PARTITION (report_date='2023-12-${day}');"
done
答案 10:
需执行多次 ALTER TABLE ... DROP PARTITION
。
ALTER TABLE orders_partitioned DROP IF EXISTS PARTITION (order_country='JP', order_date='2023-06-18');
ALTER TABLE orders_partitioned DROP IF EXISTS PARTITION (order_country='KR', order_date='2023-06-19');
答案 11:
SELECT COUNT(*) FROM orders_partitioned
WHERE order_country IN ('DE', 'FR')
AND order_date >= '2023-07-01' AND order_date <= '2023-09-30';
答案 12:
DESCRIBE FORMATTED page_views; -- 查看 "# Partition Information"
-- 或
DESCRIBE page_views; -- 分区键列在最后
答案 13:
INSERT OVERWRITE LOCAL DIRECTORY '/tmp/exported_data' -- LOCAL 指本地
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
SELECT user_id, page_url, view_time -- 选择需要的列,而不是 *
FROM page_views
WHERE view_date='2023-11-03' AND country='US';
答案 14:
需要创建 daily_activity
表时定义分区键为 PARTITIONED BY (dt DATE, type STRING)
。
SET hive.exec.dynamic.partition.mode=nonstrict;
INSERT OVERWRITE TABLE daily_activity
PARTITION (dt, type) -- dt 和 type 都是动态
SELECT user_id, event_date, activity_type -- 最后两列 event_date, activity_type 对应分区键
FROM source_table;
答案 15:
CREATE TABLE user_profiles (
user_id INT,
profile MAP<STRING,STRING>
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
COLLECTION ITEMS TERMINATED BY '#' -- Map 内 KVP 分隔符
MAP KEYS TERMINATED BY ':'; -- Map 内 K 和 V 分隔符
结语:因地制宜,优化存储与查询
精准运用 Hive 的表类型与分区策略是数据仓库建设和性能调优的核心。根据数据生命周期、共享需求、查询模式等因素,审慎设计,能显著提升数据管理效率和查询响应。
相关文章:
五、Hive表类型、分区及数据加载
在 Hive 中高效构建、管理和查询数据仓库,核心在于精准运用表类型(内部/外部)与分区策略(静态/动态/多重)。这不仅决定数据的生命周期归属,更是优化海量数据查询性能的关键手段。 一、表的身份权责&#x…...
在选择合适的实验室铁地板和铸铁试验平板,帮分析
铸铁测试底板是一种采用铸铁材料经过加工制成的基准测量工具,主要用于工业检测、机械加工和实验室等高精度要求的场合。其核心功能是为各类测量、检验、装配工作提供稳定的水平基准面,确保测量数据的准确性和一致性。 一、铸铁测试底板的基本特性 1.材质…...
阿里云人工智能大模型通义千问Qwen3开发部署
本文主要描述阿里云人工智能大模型开源社区ModelScope提供的通义千问Qwen3开发部署。 与阿里云一起 轻松实现数智化 让算力成为公共服务:用大规模的通用计算,帮助客户做从前不能做的事情,做从前做不到的规模。让数据成为生产资料:…...
网络基础知识梳理和Muduo库使用
文章目录 网络基础知识梳理和Muduo库使用1.知识储备2.阻塞、非阻塞、同步、异步我的总结 3.Unix/Linux上的五种IO模型0.铺垫1.阻塞IO(blocking)2.非阻塞IO(non-blocking)3.IO复用(IO multiplexing)4.信号驱…...
IDEA 插件推荐:提升编程效率
通过安装和使用合适的插件,可以大幅提升开发效率和代码质量。本文将从多个维度推荐实用的 IDEA 插件,并提供安装与使用指南。 一、代码辅助类插件 1. Key Promoter X —— 快捷键学习利器 功能介绍:当你使用鼠标点击某个功能时,…...
001大模型-认识大模型以及大模型应用场景
大模型是一种基于海量数据训练的人工智能系统,具备强大的语言理解和生成能力。其工作原理是通过深度学习算法,分析大量文本数据,学习语言模式和知识,从而能够处理复杂的任务。大模型的应用广泛,包括自然语言处理、机器…...
Qt进阶开发:QTcpServer的的详解
文章目录 一、QTcpServer 简介二、常用成员函数的使用三、信号函数的使用四、虚函数的使用五、连接多客户端-服务端示例一、QTcpServer 简介 QTcpServer 是 Qt 网络模块中的一个核心类,用于实现 基于 TCP 协议的服务端(Server),它负责监听端口、接收客户端连接请求,并通过…...
Spark,集群搭建之Yarn模式
以下是Spark基于Yarn模式的集群搭建关键步骤(需先部署Hadoop Yarn集群): 一、环境准备 1. 确认Hadoop已运行 - 确保HDFS、Yarn ResourceManager和NodeManager正常启动。 2. 安装Java - 所有节点安装JDK 8,配置 JAVA_HOME 环境变量…...
fiddler 配置ios手机代理调试
平时做移动移动端开必的时候经常需要抓包手机,用于接口请求跟踪,但iOS的抓包经常性的配不成功,经过踩过不少坑后终于知道了整个配置流程,此文记录Fiddler抓包iOS手机的配置流程。 Step 1:Fiddler配置 通过工具栏Tool…...
iOS即时通信的技术要点
iOS即时通信开发的关键技术要点总结: 一、通讯协议选择 Socket通信 基础实现:使用原生BSD Socket或CFNetwork框架(复杂),推荐第三方库如CocoaAsyncSocket(封装GCDAsyncSocket),简化T…...
Windows 安装 Milvus
说明 操作系统:Window 中间件:docker desktop Milvus:Milvus Standalone(单机版) 安装 docker desktop 参考:Window、CentOs、Ubuntu 安装 docker-CSDN博客 安装 Milvus 参考链接:Run Mil…...
5G网络:能源管理的“智能电网“革命,Python如何成为关键推手?
5G网络:能源管理的"智能电网"革命,Python如何成为关键推手? 大家好,我是Echo_Wish。今天咱们聊一个既硬核又接地气的话题——5G网络如何用Python代码重构全球能源管理。 不知道你们有没有注意过: • 家里装…...
解决WSL、Ubuntu的.ico图标不正确显示缩略图
解决WSL、Ubuntu的.ico图标不正确显示缩略图 问题描述 Win10系统中由于更新了某些软件,篡改了默认的图像显示软件,导致WSL等软件未能成功显示图标,表现如下: 解决方法 将ico文件的默认打开方式更改为“画图”,如下…...
Redis+Caffeine构造多级缓存
一、背景 项目中对性能要求极高,因此使用多级缓存,最终方案决定是RedisCaffeine。其中Redis作为二级缓存,Caffeine作为一级本地缓存。 二、Caffeine简单介绍 Caffeine是一款基于Java 8的高性能、灵活的本地缓存库。它提供了近乎最佳的命中…...
Redis+Caffeine构建高性能二级缓存
大家好,我是摘星。今天为大家带来的是RedisCaffeine构建高性能二级缓存,废话不多说直接开始~ 目录 二级缓存架构的技术背景 1. 基础缓存架构 2. 架构演进动因 3. 二级缓存解决方案 为什么选择本地缓存? 1. 极速访问 2. 减少网络IO 3…...
【机器人】复现 UniGoal 具身导航 | 通用零样本目标导航 CVPR 2025
UniGoal的提出了一个通用的零样本目标导航框架,能够统一处理多种类型的导航任务。 支持 对象类别导航、实例图像目标导航和文本目标导航,而无需针对特定任务进行训练或微调。 本文分享UniGoal复现和模型推理的过程~ 查找沙发,模…...
LeetCode 373 查找和最小的 K 对数字题解
LeetCode 373 查找和最小的 K 对数字题解 题目描述 给定两个以升序排列的整数数组 nums1 和 nums2,以及一个整数 k。定义一对值 (u,v),其中第一个元素来自 nums1,第二个元素来自 nums2。请找到和最小的 k 个数对。 解题思路 最小堆优化法…...
搜索二维矩阵 II 算法讲解
搜索二维矩阵 II 算法讲解 一、问题描述 给定一个 m x n 的二维矩阵 matrix ,需要在其中搜索一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。每列的元素从上到下升序排列。要求编写一个高效的算法来完成搜索任务。 二、解题思路 方法一:暴力枚举 …...
三层交换机,单臂路由(用DHCP自动配置ip+互通+ACL
三层交换机,单臂路由(用DHCP自动配置ip互通ACL 任务 1.用DHCP自动配置ip 2.三层交换机SVI、 3.单臂路由 4.互通 5.ACL三层交换机SVI 交换机 Switch>en Switch#conf t Enter configuration commands, one per line. End with CNTL/Z. Switch(conf…...
OpenCV CUDA 模块中在 GPU 上对图像或矩阵进行 翻转(镜像)操作的一个函数 flip()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::cuda::flip 是 OpenCV 的 CUDA 模块中的一个函数,用于在 GPU 上对图像或矩阵进行 翻转(镜像)操作。它类似…...
链表面试题7之相交链表
来了来了,这道题才是值得我们奇思妙想的题,链接在下面。 160. 相交链表 - 力扣(LeetCode) 看完题目一脸懵吗,没关系,我们还得看示例 还是一脸懵怎么办?? 两个链表相交的方式有几种?…...
Excel-to-JSON插件专业版功能详解:让Excel数据转换更灵活
前言 在数据处理和系统集成过程中,Excel和JSON格式的转换是一个常见需求。Excel-to-JSON插件提供了一套强大的专业版功能,能够满足各种复杂的数据转换场景。本文将详细介绍这些专业版功能的应用场景和使用方法。 订阅说明 在介绍具体功能之前…...
【C++】”如虎添翼“:模板初阶
泛型编程: C中一种使用模板来实现代码重用和类型安全的编程范式。它允许程序员编写与数据类型无关的代码,从而可以用相同的代码逻辑处理不同的数据类型。模板是泛型编程的基础 模板分为两类: 函数模板:代表了一个函数家族&#x…...
【K8S学习之探针】详细了解就绪探针 readinessProbe 和存活探针 livenessProbe 的配置
参考 Pod健康检查 Kubernetes 学习笔记Kubernetes 就绪探针(Readiness Probe) - 人艰不拆_zmc - 博客园Kubernetes存活探针(Liveness Probe) - 人艰不拆_zmc - 博客园 Pod健康检查 Pod的健康状态由两类探针来检查:…...
WSL 安装 Debian 12 后,Linux 如何安装 redis ?
在 WSL 的 Debian 12 上安装 Redis 的步骤如下: 1. 更新系统包列表 sudo apt update && sudo apt upgrade -y2. 安装 Redis sudo apt install redis-server -y3. 启动 Redis 服务 sudo systemctl start redis4. 设置开机自启 sudo systemctl enable red…...
python打卡day22
复习日 仔细回顾一下之前21天的内容,没跟上进度的同学补一下进度。 作业: 自行学习参考如何使用kaggle平台,写下使用注意点,并对下述比赛提交代码 kaggle泰坦里克号人员生还预测 就是很简单很草率地走了一遍机器学习的经典流程&am…...
国产化Excel处理控件Spire.XLS系列教程:如何通过 C# 删除 Excel 工作表中的筛选器
在 Excel 文件中,筛选器(Filter)是一个常用的数据处理工具,可以帮助用户快速按条件筛选数据行。但在数据整理完成、导出、共享或打印之前,往往需要 删除 Excel 工作表中的筛选器,移除列标题中的下拉筛选按钮…...
使用 DMM 测试 TDR
TDR(时域反射计)可能是实验室中上升时间最快的仪器,但您可以使用直流欧姆表测试其准确性。 TDR 测量什么 在所有高速通道中,反射都很糟糕。我们尝试设计一个通道来减少反射,这些反射都会导致符号间干扰 (…...
基于卡尔曼滤波的传感器融合技术的多传感器融合技术(附战场环境模拟可视化代码及应用说明)
基于卡尔曼滤波的传感器融合技术的多传感器融合技术(附战场环境模拟可视化代码及应用说明) 1 目标运动状态空间建模1.1 状态向量定义1.2 状态转移方程1.3 观测模型构建2 卡尔曼滤波核心算法实现2.1 初始化2.2 预测步骤2.3 更新步骤3 多传感器融合仿真验证3.1 传感器模型模拟3…...
M8040A/M8199助力数据中心收发信机测试
随着数字通信和大数据的不断发展,误码率测试变得越来越重要。高性能误码率测试仪作为一种关键的测试设备,可以对数字信号进行高速、高精度的误码率测试,广泛应用于通信、数据中心、半导体等行业。 M8040A误码仪系统当前不仅在上游IP和顶层芯…...
傲云源墅:以五傲价值重构北京主城别墅格局
在高端别墅市场中,产品自身的品质与特色是吸引客户的关键。北京傲云源墅以其独特的 “五傲” 价值,重新定义了北京主城别墅的标准。 首先是低密之傲,傲云源墅的容积率低至约 0.9,与市场上 1.0 以上容积率的别墅相比,为…...
精益数据分析(56/126):创业阶段的划分与精益数据分析实践
精益数据分析(56/126):创业阶段的划分与精益数据分析实践 在创业和数据分析的探索之旅中,理解创业阶段的划分以及与之对应的精益数据分析方法至关重要。今天,依旧怀揣着与大家共同进步的心态,深入研读《精…...
[redis进阶六]详解redis作为缓存分布式锁
目录 一 什么是缓存 缓存总结板书: 二 使⽤Redis作为缓存 三 缓存的更新策略 1) 定期⽣成 2) 实时⽣成 四 面试重点:缓存预热,缓存穿透,缓存雪崩 和缓存击穿 1)缓存预热 2)缓存穿透 3)缓存雪崩 4)缓存击穿 五 分布式锁 板书: 1)什么是分布式锁 2)分布式锁的基…...
【RabbitMQ】应用问题、仲裁队列(Raft算法)和HAProxy负载均衡
🔥个人主页: 中草药 🔥专栏:【中间件】企业级中间件剖析 一、幂等性保障 什么是幂等性? 幂等性是指对一个系统进行重复调用(相同参数),无论同一操作执行多少次,这些请求…...
国产密码新时代!华测国密 SSL 证书解锁安全新高度
在数字安全被提升到国家战略高度的今天,国产密码算法成为筑牢网络安全防线的关键力量。华测国密SSL证书凭借其强大性能与贴心服务,为企业网络安全保驾护航,成为符合国家安全要求的不二之选! 智能兼容,告别浏览器适配…...
【Linux篇章】Linux 进程信号2:解锁系统高效运作的 “隐藏指令”,开启性能飞跃新征程(精讲捕捉信号及OS运行机制)
本篇文章将以一个小白视角,通俗易懂带你了解信号在产生,保存之后如何进行捕捉;以及在信号这个话题中;OS扮演的角色及背后是如何进行操作的;如何理解用户态内核态;还有一些可以引出的其他知识点;…...
C# 基础 try-catch代码块
try-catch代码块是C#中用于异常处理的核心机制。异常是在程序执行过程中可能出现的错误,而try-catch代码块允许您在执行代码时捕获并处理这些异常。 一、基础结构 try {//可能抛出异常的代码 } catch (ArgumentException ex) {//处理特定异常 } catch (Excepti…...
为什么 mac os .bashrc 没有自动加载?
原因说明 在macOS中,默认情况下,终端使用的是Bash或Zsh作为shell。对于较新版本的macOS(从Catalina开始),默认的shell已经切换为Zsh。因此,如果你正在使用Zsh,.bashrc文件不会自动生效…...
【HarmonyOS Next之旅】DevEco Studio使用指南(二十二)
目录 1 -> 开发静态共享包 1.1 -> 创建库模块 1.2 -> 编译库模块 2 -> 开发动态共享包 2.1 -> 使用约束 2.2 -> 开发动态共享包 2.2.1 -> 创建HSP模块 2.2.2 -> 编译HSP模块 3 -> 发布共享包 1 -> 开发静态共享包 HAR(Harmony Archive…...
QT6.8安装教程
官网下载 链接: Index of /official_releases/online_installers 这个比较慢 建议去 清华大学开源软件镜像站:Index of /qt/archive/online_installers/4.9/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 根据自己什么系统选择 点击打开…...
【Rust泛型】Rust泛型使用详解与应用场景
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
一周学完计算机网络之三:1、数据链路层概述
简单的概述 数据链路层是计算机网络体系结构中的第二层,它在物理层提供的基本服务基础上,负责将数据从一个节点可靠地传输到相邻节点。可以将其想象成一个负责在两个相邻的网络设备之间进行数据 “搬运” 和 “整理” 的 “快递中转站”。 几个重要概念…...
配置ssh无密登录
在root下有一个.ssh文件夹,它的下面有一个known_hosts文件,这个里面记录了哪些其他的主机通过ssh访问过当前的主机。 免密登录原理 (2)生成公钥和私钥 具体操作: 1. 进入 hadoop1001 2. 运行命令:ssh-keyg…...
南京邮电大学金工实习答案
一、金工实习的定义 金工实习是机械类专业学生一项重要的实践课程,它绝非仅仅只是理论知识在操作层面的简单验证,而是一个全方位培养学生综合实践能力与职业素养的系统工程。从本质上而言,金工实习是学生走出教室,亲身踏入机械加…...
无偿帮写毕业论文
以下教程教你如何利用相关网站和AI免费帮你写一个毕业论文。毕竟毕业论文只要过就行,脱产学习这么多年,终于熬出头了,完成毕设后有空就去多看看亲人好友,祝好! 一、找一个论文模板(最好是overleaf) 废话不多说&#…...
【高数上册笔记01】:从集合映射到区间函数
【参考资料】 同济大学《高等数学》教材樊顺厚老师B站《高等数学精讲》系列课程 (注:本笔记为个人数学复习资料,旨在通过系统化整理替代厚重教材,便于随时查阅与巩固知识要点) 仅用于个人数学复习,因为课…...
大数据从专家到小白
文章目录 数据湖技术Apache Iceberg FlinkHiveHadoopHDFS 数据湖技术 Apache Iceberg Iceberg是一个通用的表格式(数据组织格式),它可以适配Presto,Spark等引擎提供高性能的读写和元数据管理功能。 Flink Hive Hadoop HDFS...
特励达力科LeCroy推出Xena Freya Z800 800GE高性能的800G以太网测试平台
Xena Freya Z800 800GE 是由全球领先的测试与测量解决方案提供商特励达力科公司(Teledyne LeCroy)开发的高性能以太网测试平台,专为满足从10GE到800GE数据中心互连速度的需求而设计。特励达力科公司在网络测试领域拥有超过50年的技术积累&…...
LeetCode 热题 100 98. 验证二叉搜索树
LeetCode 热题 100 | 98. 验证二叉搜索树 大家好,今天我们来解决一道经典的二叉树问题——验证二叉搜索树。这道题在 LeetCode 上被标记为中等难度,要求判断给定的二叉树是否是一个有效的二叉搜索树(BST)。 问题描述 给你一个二…...
Linux文件编程——open函数
在 Linux 系统中,文件操作不仅仅通过高级语言的标准库进行,底层的文件操作是通过 系统调用 来实现的。系统调用 是用户空间与操作系统内核之间的接口,允许程序请求操作系统提供的服务,包括文件读写、内存管理、进程控制等。本文将…...