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

大数据面试问答-Hadoop/Hive/HDFS/Yarn

1. Hadoop

1.1 MapReduce

1.1.1 Hive语句转MapReduce过程

可分为 SQL解析阶段、语义分析阶段、逻辑计划生成阶段、逻辑优化阶段、物理计划生成阶段。

SQL解析阶段
词法分析(Lexical Analysis):使用Antlr3将SQL字符串拆分为有意义的token序列
语法分析(Syntax Analysis):根据Hive语法规则构建抽象语法树(AST)
示例转换:SELECT a FROM t WHERE b > 10会被解析为:

TOK_QUERYTOK_FROM (TOK_TABREF (TOK_TABNAME t))TOK_INSERTTOK_DESTINATION (TOK_DIR TOK_TMP_FILE)TOK_SELECTTOK_SELEXPR (TOK_TABLE_OR_COL a)TOK_WHERE (> (TOK_TABLE_OR_COL b) 10)

语义分析阶段
元数据验证:检查表、列是否存在,类型是否匹配
隐式类型转换:如将字符串与数字比较时的自动转换
UDF解析:确定用户定义函数的实现类
权限验证:检查用户是否有执行该查询的权限

逻辑计划生成
Operator Tree构建:将AST转换为由TableScanOperator、FilterOperator、SelectOperator等组成的DAG
初始逻辑计划:对于SELECT a FROM t WHERE b > 10会生成:

TableScanOperator(t)FilterOperator(b > 10)SelectOperator(a)FileSinkOperator(output)

逻辑优化阶段
优化规则应用:
列剪枝(Column Pruning):只读取需要的列
谓词下推(Predicate Pushdown):尽早过滤数据
分区裁剪(Partition Pruning):只扫描相关分区
MapJoin优化:自动将小表JOIN转换为Map端JOIN
合并操作:如合并相邻的FilterOperator

物理计划生成
Operator到MR任务的映射:
TableScanOperator → Map任务输入
FilterOperator/SelectOperator → Map任务处理逻辑
GroupByOperator → Reduce阶段聚合
JoinOperator → 根据大小决定CommonJoin或MapJoin

1.1.2 MapReduce过程

“MapReduce是Hadoop的核心计算模型,其过程可分为Map、Shuffle、Reduce三个阶段”

阶段一:Map阶段
输入分片:HDFS数据按块(默认128MB)划分成多个Split,每个Split启动一个Map Task
数据处理:
列剪枝:若查询仅涉及部分列,Hive优化器会跳过无关列解析(如ORC文件只读取所需列)
谓词下推:将WHERE条件推送到存储层,减少数据读取量(例如Parquet文件的行组过滤)
Map逻辑:执行投影、转换、打标签(Join时标记表来源),输出<k,v>对(k通常是group by/join key)
示例:处理SELECT user_id, SUM(order_amt) FROM orders WHERE dt='2023-01' GROUP BY user_id时:
Map Task过滤dt='2023-01’的记录
提取user_id和order_amt,输出<user_id, order_amt>

阶段二:Shuffle阶段
环形缓冲区:Map输出先写入内存缓冲区(默认100MB),达到阈值后spill到磁盘
分区排序:
按key的hash值分区(确保相同key进入同一Reducer)
每个分区内按key排序(为Reduce阶段的归并排序做准备)
Combiner优化:在Map端进行本地聚合(如sum操作),减少网络传输量
调优经验:曾通过调整mapreduce.task.io.sort.mb提升shuffle效率20%

阶段三:Reduce阶段
数据拉取:Reducer通过HTTP从各Map节点抓取对应分区的数据
归并排序:对来自不同Map的相同key数据进行多路归并
聚合计算:执行最终聚合(如SUM)、Join关联等逻辑
结果输出:通过OutputFormat写入HDFS,Hive默认使用TextOutputFormat

总结:map阶段从hdfs取数据块,并根据查询语句输出kv键值对;shuffle阶段将相同k的键值对分到同一个reduce里;reduce阶段将键值对根据查询语句进行聚合得到结果。

Reduce 节点
Map 节点
Map Task1
Map Task2
Reduce Task1
Reduce Task2
聚合数据
Reduce 阶段拉取数据
聚合数据
处理分片数据
Map 阶段
处理分片数据
Input 数据
Split 分片
Map 输出写入本地磁盘
Shuffle 阶段
Reduce 结果写入 HDFS
1.1.2.1 MapReduce引申问题

MR过程中存在2次聚合:
1是map阶段生成键值对后,输出到磁盘之前,会先根据k值进行聚合,此过程为Combiner阶段,可以通过// 在MapReduce作业中显式设置Combiner类 job.setCombinerClass(SumCombiner.class);开启,好处在于可以提前聚合,减少shuffle阶段的数据量,提升效率,但需注意,因为同一个k的键值对并不一定处在同一个map任务里,所以Combiner只能解决部分聚合,而不是所有。
2是在reduce阶段从shuffle阶段获取的键值对,对其进行聚合,可以理解reduce是全局聚合,而combiner是局部聚合。

2. Hive

Hive 不是传统的关系型数据库,而是一个基于Hadoop的数据仓库工具,提供类SQL(HiveQL)的查询功能。
核心差异:
存储与计算:Hive依赖HDFS存储数据,依赖MapReduce/Tez/Spark进行计算。
延迟:Hive适用于高延迟的批处理场景(OLAP),而非低延迟的实时事务处理(OLTP)。
功能特性:支持表结构定义、数据加载、复杂查询,但不支持事务和实时更新(Hive 3+支持有限的事务)。

2.1 内部表和外部表

特性内部表外部表
数据管理Hive管理数据和元数据Hive仅管理元数据,数据由用户维护
删除表时删除元数据和HDFS数据仅删除元数据,HDFS数据保留
语法CREATE TABLE table_name (…)CREATE EXTERNAL TABLE table_name (…) LOCATION ‘/path’
适用场景临时数据、测试场景多系统共享数据(如Spark、Presto)

2.2 SORT BY vs ORDER BY vs DISTRIBUTE BY vs CLUSTER BY

ORDER BY全局排序但性能低,SORT BY局部排序,CLUSTER BY为分桶,DISTRIBUTE BY为分区,分区和分桶在性能优化文章有详细介绍。

2.3 Join的类型

Join 类型别称触发条件核心原理适用场景资源消耗
Map JoinBroadcast Join小表 + 大表将小表广播到所有 Map 任务内存中小表可完全装入内存低(无 Shuffle)
Bucket Map Join分桶优化 Join分桶对齐的大表 + 大表利用分桶的物理分布,跳过 Shuffle大表预先分桶且 JOIN Key 对齐低(无 Shuffle)
Sort-Merge JoinSMB Join分桶且排序对齐的大表 + 大表分桶排序后按序合并大表分桶且排序,JOIN Key 对齐中(部分排序开销)
Common JoinReduce Join默认策略(无优化条件时)Shuffle + Reduce 阶段处理通用场景高(Shuffle 开销大)

Map Join 和 Bucket Map Join 是避免 Shuffle 的核心优化手段,前者依赖小表广播,后者依赖分桶对齐。
Sort-Merge Join 是对分桶场景的进一步优化,适合排序对齐的大表。
Common Join 是保底策略,但应尽量避免其触发(通过分桶、分区、过滤条件优化)。
实际场景中,分桶 + Bucket Map Join 是大表 Join 的黄金组合,而 Map Join 是小表 Join 大表的标准方案。通过合理设计表结构和参数配置,可显著提升 Hive 查询性能。

3. Hdfs

HDFS(Hadoop Distributed File System)是Hadoop生态的分布式文件系统,设计用于存储超大规模数据集(PB级以上),并在廉价硬件集群上提供高容错性和高吞吐量访问。
特点是:
容错优先:硬件故障是常态而非异常,HDFS通过自动冗余和故障恢复保障数据可靠性。
流式数据访问:适合批处理(如MapReduce),而非低延迟的随机读写。
大文件存储:优化大文件存储(如TB级),避免小文件导致的元数据膨胀。

3.1 核心架构与组件

主从架构:
NameNode(主节点):
管理文件系统元数据(命名空间、块映射、访问控制)。
单点问题(早期版本)通过HA(High Availability)解决:双NameNode(Active/Standby)+ JournalNodes(元数据同步)。
DataNode(从节点):
存储实际数据块,定期向NameNode发送心跳和块报告。
Secondary NameNode(辅助角色):
合并FsImage与EditLog(非HA方案下),防止EditLog过大。
数据存储机制:
分块存储:文件按块(Block,默认128MB/256MB)切分,分散存储在多台DataNode。
副本机制:默认3副本,按机架感知策略(Rack Awareness)分布(同机架→跨机架),平衡容错与网络效率。

3.2 读写流程与原理

写入流程:
客户端向NameNode申请写入,获取可写入的DataNode列表。
数据按管道(Pipeline)写入:客户端→DN1→DN2→DN3,确保副本顺序写入。
写入成功后,NameNode更新元数据。

读取流程:
客户端向NameNode获取文件块的位置信息。
直接从最近的DataNode读取数据(就近原则),支持并行读取多个块。

3.2 小文件

HDFS 默认块大小确实为 128MB(或 256MB,取决于版本),但实际应用中仍然存在大量小文件,主要原因如下:
(1)用户直接上传小文件
场景:用户直接将大量小文件(如日志、图片、CSV 文件)上传到 HDFS,未做合并。
原因:业务需求需要保留原始文件(如用户上传的图片需按原文件访问)。
缺乏对小文件合并的意识或工具支持。
(2)日志切割
场景:日志收集工具(如 Flume、Logstash)按时间或大小切割日志文件。
示例:Flume 配置按小时滚动日志文件,若每小时日志量仅 10MB,则会生成大量 10MB 的小文件。
(3)ETL 过程的分区输出
场景:数据处理任务(如 Hive、Spark)按分区字段(如日期、城市)输出结果。
示例:
某 Hive 任务按 dt=20231001、city=beijing 分区,若每个分区的数据量仅 1MB,则每个分区生成一个小文件。

危害:即使文件只有1KB,也会在NameNode中占用元数据,并且存储时占用一个块的空间,导致资源浪费

小文件合并的方法:
Hadoop Archive (HAR)
原理:
将多个小文件打包成一个HAR文件,减少NameNode元数据条目。
HAR文件在HDFS中表现为一个索引文件(.har.index)和数据文件(part-0…part-N),通过har://协议访问内部文件。
命令示例:

hadoop archive -archiveName output.har -p /input/dir /output/dir

优点:
显著减少NameNode元数据量。
兼容HDFS原生操作,无需修改上层应用。
缺点:
访问HAR内文件时需额外解析索引,性能略低。
不支持修改,仅适用于归档冷数据。

Hive表分区与ORC/Parquet格式
原理:
将小文件导入Hive表,按分区(如日期、类型)组织数据,并使用列式存储格式(ORC/Parquet)合并文件。
列式格式自动合并小文件为更大的块,并支持压缩。
实现方式:

-- 插入数据时合并小文件
SET hive.merge.mapfiles = true;
SET hive.merge.size.per.task = 256000000; -- 合并后目标大小
INSERT OVERWRITE TABLE target_table PARTITION(dt='20231001')
SELECT * FROM source_table;

优点:同时优化存储和计算性能,适合数仓场景。

3.3 Secondary NameNode

Secondary NameNode(SNN)是 HDFS 早期版本(非 HA 架构)中的一个关键角色,主要用于辅助 NameNode 管理元数据,但其名称容易引起误解——它并不是 NameNode 的热备节点,无法直接接管 NameNode 的工作。

非 HA 集群:Secondary NameNode 是元数据管理的“辅助清洁工”,负责定期合并 FsImage 和 EditLog,防止日志文件过大占用空间增加风险。
HA 集群:其职责由 Standby NameNode 承担,实现高可用性与实时元数据同步。

4. Yarn

YARN(Yet Another Resource Negotiator)是Hadoop 2.0引入的分布式资源管理框架,核心职责是解耦资源管理与计算框架,实现统一的集群资源调度。

4.1 核心架构与组件

(1)核心角色
ResourceManager(RM):
全局资源调度器:负责整个集群的资源分配(通过Scheduler模块)。
核心功能:
接收客户端提交的应用(如MapReduce/Spark作业)。
启动ApplicationMaster(AM)并监控其状态。
处理NodeManager(NM)心跳,管理节点资源状态。
高可用(HA):通过Active/Standby双节点避免单点故障。

NodeManager(NM):
单节点资源代理:管理单个节点的资源(如CPU、内存、磁盘)。
职责:
向RM汇报资源状态。
启动/监控Container(资源容器),执行具体任务(如Map Task)。

ApplicationMaster(AM):
应用级管家:每个应用(如一个Spark作业)对应一个AM。
职责:
向RM申请资源(Container)。
与NM协作启停任务,监控任务状态。
容错处理(如任务失败重试)。

4.2 Yarn的工作流程

以提交一个MapReduce作业为例:

作业提交:客户端向RM提交应用(包含JAR包、配置、资源需求)。
启动AM:RM分配一个Container启动AM。
资源申请:AM向RM申请运行任务的Container资源。
任务分配:RM根据调度策略(如容量调度器)分配资源,AM与NM协作启停任务。
任务执行与监控:AM监控任务状态,失败时重试或上报RM。
作业完成:AM向RM注销,释放资源。

4.2 Yarn的资源调度策略

(1)调度器类型
FIFO Scheduler:先进先出,简单但易导致资源饥饿(大作业阻塞小作业)。
Capacity Scheduler(默认):划分多个队列,每个队列设置资源容量,队列内采用FIFO。
适用场景:多租户共享集群,需资源隔离。
Fair Scheduler:动态平衡资源分配,保证所有作业公平共享资源。
适用场景:交互式分析(如临时查询需快速响应)。

(2)资源分配模型
基于资源预留:AM可预先申请资源,避免资源碎片。
资源超卖:支持配置虚拟核(vCore),物理核可超量分配。

相关文章:

大数据面试问答-Hadoop/Hive/HDFS/Yarn

1. Hadoop 1.1 MapReduce 1.1.1 Hive语句转MapReduce过程 可分为 SQL解析阶段、语义分析阶段、逻辑计划生成阶段、逻辑优化阶段、物理计划生成阶段。 SQL解析阶段 词法分析(Lexical Analysis)&#xff1a;使用Antlr3将SQL字符串拆分为有意义的token序列 语法分析(Syntax An…...

【小沐学GIS】基于C++绘制三维数字地球Earth(QT5、OpenGL、GIS、卫星)第五期

&#x1f37a;三维数字地球系列相关文章如下&#x1f37a;&#xff1a;1【小沐学GIS】基于C绘制三维数字地球Earth&#xff08;OpenGL、glfw、glut&#xff09;第一期2【小沐学GIS】基于C绘制三维数字地球Earth&#xff08;OpenGL、glfw、glut&#xff09;第二期3【小沐学GIS】…...

初始图形学(3)

昨天休息了一天&#xff0c;今天继续图形学的学习 向场景发射光线 现在我们我们准备做一个光线追踪器。其核心在于&#xff0c;光线追踪程序通过每个像素发送光线。这意味着对于图像中的每个像素点&#xff0c;程序都会计算一天从观察者出发&#xff0c;穿过该像素的光线。并…...

如果想在 bean 创建出来之前和销毁之前做一些自定义操作可以怎么来实现呢?

使用生命周期扩展接口&#xff08;最灵活&#xff09;​ 创建前拦截可以通过实现 InstantiationAwareBeanPostProcessor 接口的 postProcessBeforeInstantiation 方法&#xff0c;在Bean实例化前执行逻辑 在销毁前拦截可以通过实现 DestructionAwareBean 接口的 postProcessBe…...

【甲子光年】DeepSeek开启AI算法变革元年

目录 引言人工智能的发展拐点算力拐点&#xff1a;DeepSeek的突破数据拐点&#xff1a;低参数量模型的兴起算法创新循环算法变革推动AI普惠应用全球AI科技竞争进入G2时代结论 引言 2025年&#xff0c;人工智能的发展已经走到了一个战略拐点。随着技术能力的不断提升&#xff0…...

Go语言--语法基础4--基本数据类型--整数类型

整型是所有编程语言里最基础的数据类型。 Go 语言支持如下所示的这些整型类型。 需要注意的是&#xff0c; int 和 int32 在 Go 语言里被认为是两种不同的类型&#xff0c;编译器也不会帮你自动做类型转换&#xff0c; 比如以下的例子会有编译错误&#xff1a; var value2 in…...

MCP基础学习计划详细总结

MCP基础学习计划详细总结 1.MCP概述与基础 • MCP&#xff08;Model Context Protocol&#xff09;&#xff1a;由Anthropic公司于2024年11月推出&#xff0c;旨在实现大型语言模型&#xff08;LLM&#xff09;与外部数据源和工具的无缝集成。 • 核心功能&#xff1a; • 资…...

大模型到底是怎么产生的?一文揭秘大模型诞生全过程

前言 大模型到底是怎么产生的呢? 本文将从最基础的概念开始,逐步深入,用通俗易懂的语言为大家揭开大模型的神秘面纱。 大家好,我是大 F,深耕AI算法十余年,互联网大厂核心技术岗。 知行合一,不写水文,喜欢可关注,分享AI算法干货、技术心得。 【专栏介绍】: 欢迎关注《…...

Node.js介绍

一、Node.js 核心定义 本质&#xff1a;基于 Chrome V8 引擎构建的 JavaScript 运行时环境&#xff0c;用于在服务器端执行 JavaScript 代码。 定位&#xff1a;非阻塞、事件驱动的 I/O 模型&#xff0c;专为高并发、实时应用设计。 诞生&#xff1a;2009 年由 Ryan Dahl 发布…...

DRABP_NSGA2最新算法神圣宗教算法优化BP做代理模型,NSGA2反求最优因变量和对应的最佳自变量组合,Matlab代码

一、神圣宗教算法&#xff08;DRA&#xff09;优化BP代理模型 1. DRA的核心原理 DRA是一种模拟宗教社会层级互动的元启发式算法&#xff0c;通过“追随者学习”、“传教士传播”和“领导者引导”三种行为模式优化搜索过程。在BP神经网络优化中&#xff0c;DRA通过以下步骤调整…...

Android Studio 在 Windows 上的完整安装与使用指南

Android Studio 在 Windows 上的完整安装与使用指南—目录 一、Android Studio 简介二、下载与安装1. 下载 Android Studio2. 安装前的依赖准备3. 安装步骤 三、基础使用指南1. 首次启动配置2. 创建第一个项目3. 运行应用4. 核心功能 四、进阶功能配置1. 配置 SDK 和工具2. 自定…...

Matlab学习笔记五十:循环语句和条件语句的用法

1.说明 循环语句&#xff1a;for…end&#xff0c;while…end 条件语句&#xff1a;if…end&#xff0c;switch…case…end 其中if语句语法还可以是&#xff1a;for…else…end&#xff0c;for…elseif…else…end 2.简单for程序实例 for x1:5 %循环遍历1~5 yx5 end [1…...

大漠流光:科技牧歌的未来-内蒙古鄂尔多斯

故事背景 故事发生在中国内蒙古鄂尔多斯&#xff0c;这里是蒙古族文化的摇篮&#xff0c;也是科技与自然交织的未来舞台。在这片广袤的土地上&#xff0c;蒙古族少女、老牧人和工程师们共同谱写着一曲科技与传统共生的赞歌。未来的鄂尔多斯&#xff0c;不再是单一的沙漠或草原…...

MySQL与Oracle深度对比

MySQL与Oracle深度对比&#xff1a;数据类型与SQL差异 一、数据类型差异 1. 数值类型对比 数据类型MySQLOracle整数TINYINT, SMALLINT, MEDIUMINT, INT, BIGINTNUMBER(精度) 或直接INT(内部仍为NUMBER)小数DECIMAL(p,s), FLOAT, DOUBLENUMBER(p,s), FLOAT, BINARY_FLOAT, BI…...

GESP2023年12月认证C++七级( 第一部分选择题(6-10))

选择题第八题&#xff1a; #include <iostream> #include <cstring> #include <algorithm> using namespace std;const int MAXN 1005; // 假设字符串长度不超过1000 char s1[MAXN], s2[MAXN]; int dp[MAXN]; // 一维DP数组int main() {while (cin >>…...

腾势品牌欧洲市场冲锋,科技豪华席卷米兰

在时尚与艺术的交汇点&#xff0c;米兰设计周的舞台上&#xff0c;一场汽车界的超级风暴正在酝酿&#xff0c;腾势品牌如一头勇猛无畏的雄狮&#xff0c;以雷霆万钧之势正式向欧洲市场发起了冲锋。其最新力作——腾势Z9GT的登场&#xff0c;仿佛是一道闪电划破夜空&#xff0c;…...

双指针、滑动窗口

一、双指针 双指针是指在算法中使用两个指针&#xff08;通常是索引或迭代器&#xff09;来解决问题&#xff0c;通过移动这两个指针来扫描数据结构&#xff08;如数组或链表&#xff09;&#xff0c;从而达到高效的目的。双指针的核心思想是利用两个指针的相对位置或移动方式…...

《数据密集型应用系统设计》读书笔记:第二章

我们继续拆解 第2章&#xff1a;数据模型与查询语言。这章讲的是如何组织数据、如何访问数据&#xff0c;也是你选择数据库种类的根本依据。 第2章&#xff1a;数据模型与查询语言 一、为何数据模型重要&#xff1f; Martin 开篇就强调&#xff0c;数据模型影响&#xff1a; …...

ubuntu24.04LTS安装向日葵解决方案

去向日葵官方下载ubuntu使用的deb包 向日葵 输入如下命令安装&#xff0c;将具体版本修改成自己下载的版本 andrew in ~/下载 λ sudo dpkg -i SunloginClient_15.2.0.63064_amd64.deb 正在选中未选择的软件包 sunloginclient。 (正在读取数据库 ... 系统当前共安装有 290947…...

Python基础语法1

目录 1、认识Python 1.1、计算机 1.2、编程 1.3、编程语言的类别 1.4、Python背景 1.5、Python的应用场景 1.6、Python的优缺点 1.7、Python前景 1.8、Python 环境 2、常量和表达式 3、变量和类型 3.1、定义变量 3.2、使用变量 3.3、变量的类型 3.3.1、整形 3.3…...

深度学习中多机训练概念下的DP与DDP

在进行单机多卡/多机多卡训练时&#xff0c;通常会遇到DP与DDP的概念&#xff0c;为此基于kimi大模型对二者的差异进行梳理。使用DP/DPP的核心是数据并行&#xff0c;也就是根据显卡数量对数据集进行分治&#xff0c;每一个显卡都有一个独立完整的模型和一个局部数据。在多个显…...

设计模式(结构型)-桥接模式

目录 摘要 定义 类图 角色 具体实现 优缺点 优点 缺点 使用场景 使用案例 JDBC 和桥接模式 总结 摘要 在软件开发领域&#xff0c;随着系统规模和复杂性的不断攀升&#xff0c;如何设计出具有良好扩展性、灵活性以及可维护性的软件架构成为关键挑战。桥接模式作为一…...

精品推荐 | 湖仓一体电商数据分析平台实践教程合集(视频教程+设计文档+完整项目代码)

精品推荐&#xff0c;湖仓一体电商数据分析平台实践教程合集&#xff0c;包含视频教程、设计文档及完整项目代码等资料&#xff0c;供大家学习。 1、项目背景介绍及项目架构 2、项目使用技术版本及组件搭建 3、项目数据种类与采集 4、实时业务统计指标分析一——ODS分层设计与数…...

【LangChain少样本提示工程实战】FewShotPromptTemplate原理与应用解析——附运行代码

目录 引言 重点提炼 一、FewShotPromptTemplate作用 1. ​​整合示例与模板&#xff0c;构建结构化提示​​ 2. ​​引导模型理解任务逻辑​​ 3. ​​提升少样本场景下的模型性能​​ 4. ​​支持动态示例选择&#xff08;扩展功能&#xff09;​​ 5. ​​与其他模块…...

基于LSTM的文本分类3——模型训练

前言 之前已经完成了模型搭建和文本数据处理&#xff0c;现在做一下模型训练。 源码 # -*- coding: UTF-8 -*- import numpy as np import torch import torch.nn as nn import torch.nn.functional as F from sklearn import metrics # 导入评估指标 import time from uti…...

【JS】关于原型/原型链

本文会讲解什么是原型&#xff0c;什么是原型链&#xff0c;以及查找原型的方法&#xff0c;最后会实现一个函数&#xff1a;判断某对象是否有某属性。 定义 原型&#xff1a;函数都有prototype属性&#xff0c;称作原型/原型对象 原型可以放一些方法和属性&#xff0c;共享…...

猫咪如厕检测与分类识别系统系列【五】信息存储数据库改进+添加猫咪页面制作+猫咪躯体匹配算法架构更新

前情提要 家里养了三只猫咪&#xff0c;其中一只布偶猫经常出入厕所。但因为平时忙于学业&#xff0c;没法时刻关注牠的行为。我知道猫咪的如厕频率和时长与健康状况密切相关&#xff0c;频繁如厕可能是泌尿问题&#xff0c;停留过久也可能是便秘或不适。为了更科学地了解牠的如…...

k8s的配置文件总结

在 Kubernetes 中&#xff0c;配置文件 是定义集群资源的核心&#xff0c;通常以 YAML 或 JSON 格式编写。以下是 Kubernetes 中关键的配置文件类型及其作用&#xff1a; 1. 核心工作负载配置 (1) Deployment • 用途&#xff1a;定义无状态应用的 Pod 副本管理策略&#xff…...

插值算法 - 最近邻插值实现

目录 1. 导入必要的库 2. nearest_neighbor_interpolation 3. 测试代码 数学原理 完整代码 本文实现了基于最近邻插值算法的图像缩放功能。 它使用 Python 编写,主要依赖于NumPy和PIL(Python Imaging Library)库。 NumPy用于高效的数值计算,而PIL仅用于图像的加载和…...

QEMU源码全解析 —— 块设备虚拟化(19)

接前一篇文章:QEMU源码全解析 —— 块设备虚拟化(18) 本文内容参考: 《趣谈Linux操作系统》 —— 刘超,极客时间 《QEMU/KVM源码解析与应用》 —— 李强,机械工业出版社 《KVM实战 —— 原理、进阶与性能调优》—— 任永杰 程舟,机械工业出版社 特此致谢! QEMU启动…...

常见的归一化(Normalization)方法

本文详解深度学习中常见的归一化方法。 【归一化是将数据按比例缩放&#xff0c;使之落入一个特定的区间】目录 1. 批量归一化&#xff08;Batch Normalization&#xff0c;BN&#xff09;1.1 数学原理1.2 代码示例 2. 层归一化&#xff08;Layer Normalization&#xff0c;LN&…...

架构师面试(二十九):TCP Socket 编程

问题 今天考察网络编程的基础知识。 在基于 TCP 协议的网络 【socket 编程】中可能会遇到很多异常&#xff0c;在下面的相关描述中说法正确的有哪几项呢&#xff1f; A. 在建立连接被拒绝时&#xff0c;有可能是因为网络不通或地址错误或 server 端对应端口未被监听&#x…...

【高性能缓存Redis_中间件】二、redis进阶 高级特性及应用

一、前言 在第一篇文章中&#xff0c;我们已经对 Redis 消息队列有了基础的认识&#xff0c;掌握了其基本使用方法。然而&#xff0c;在实际的复杂业务场景中&#xff0c;仅仅运用基础功能是远远不够的。本篇文章将深入探讨 Redis 消息队列的高级特性&#xff0c;如消息确认机…...

vs2022 pcl1.15.0注意点

pcl1.15.0的版本变化很大&#xff0c;其中有一个地方需要设置成如下图所示 如果不设置生成的时候可能有以下错误&#xff1a; 严重性 代码 说明 项目 文件 行 禁止显示状态 详细信息 错误 C1189 #error: "Potential runtime error due to…...

React Router路由

例子 // 创建Router实例对象 const router createBrowserRouter([{path:/login,element:<div>我是登录</div>},{path:/article,element:<div>我是文章</div> }])在jsx中配置一个RouterProvider组件 绑定 router{router} 常规的组件配置...

深度学习(一)

(Ⅰ)神经网络和深度学习 一&#xff0c;ReLU激活函数 ReLU(Rectified Linear Unit)函数&#xff0c;输入大于0时&#xff0c;直接输出该值&#xff1b;输入小于0时&#xff0c;输出0 代码实现&#xff1a; 图中的每个节点都可以是ReLU激活函数的一部分 二&#xff0c;循环神经…...

【LeetCode 热题100】二叉树遍历入门:从中序遍历到层序与右视图(力扣94 / 102/199)(Go语言版)

&#x1f333; 二叉树遍历入门&#xff1a;从中序遍历到层序与右视图 本文涵盖 LeetCode 上的三道基础但极具代表性的二叉树遍历题&#xff1a; 二叉树的中序遍历 二叉树的层序遍历 二叉树的右视图 通过这些题目&#xff0c;我们将从 DFS 到 BFS&#xff0c;深入理解如何处理…...

Tauri 2.3.1+Leptos 0.7.8开发桌面应用--Sqlite数据库的写入、展示和选择删除

在前期工作的基础上&#xff08;Tauri2Leptos开发桌面应用--Sqlite数据库操作_tauri sqlite-CSDN博客&#xff09;&#xff0c;尝试制作产品化学成分录入界面&#xff0c;并展示数据库内容&#xff0c;删除选中的数据。具体效果如下&#xff1a; 一、前端Leptos程序 前端程序主…...

MySQL 5.7.43 二进制安装指南:从零开始的高效快速实现安装部署

目录 引言&#xff1a;为什么选择二进制安装&#xff1f; 1 环境准备 1.1 基础环境检查 1.2 系统安全设置 2 系统优化配置 2.1 磁盘调度策略 2.2 系统资源限制 3 mariadb删除 4 依赖包安装 5 MySQL二进制安装包下载 6 MySQL安装部署 6.1 解压安装包 6.2 创建用户以…...

使用U盘安装 ubuntu 系统

1. 准备U 盘制作镜像 1.1 下载 ubuntu iso https://ubuntu.com/download/ 这里有多个版本以供下载&#xff0c;本文选择桌面版。 1.2 下载rufus https://rufus.ie/downloads/ 1.3 以管理员身份运行 rufus 设备选择你用来制作启动项的U盘&#xff0c;不能选错了&#xff1b;点…...

【家政平台开发(42)】筑牢家政平台安全防线:安全测试与漏洞修复指南

本【家政平台开发】专栏聚焦家政平台从 0 到 1 的全流程打造。从前期需求分析,剖析家政行业现状、挖掘用户需求与梳理功能要点,到系统设计阶段的架构选型、数据库构建,再到开发阶段各模块逐一实现。涵盖移动与 PC 端设计、接口开发及性能优化,测试阶段多维度保障平台质量,…...

JavaWeb-04-Web后端基础(SpringBootWeb、HTTP协议、分层解耦、IOC和DI)

目录 一、SpringBootWeb入门 1.1 概述 1.2 入门程序 1.2.1 需求 1.2.2 开发步骤 1.3 入门解析 二、HTTP协议 2.1 HTTP概述 2.1.1 介绍 2.1.2 特点 2.2 HTTP请求协议 2.2.1 介绍 2.2.2 获取请求数据 2.3 HTTP响应协议 2.3.1 格式介绍 2.3.2 响应状态码 2.3…...

随笔 20250413 Elasticsearch 的 term 查询

你这个问题非常经典&#xff0c;来自于 Elasticsearch 的 term 查询是 ✅精确匹配&#xff08;case-sensitive&#xff0c;大小写敏感&#xff09;&#xff01; &#x1f9e8; 为什么查不到 "World"&#xff1f; 你的查询语句是&#xff1a; GET /movie/_search {&…...

zk(Zookeeper)实现分布式锁

Zookeeper实现分布式锁 1&#xff0c;zk中锁的种类&#xff1a; 读锁&#xff1a;大家都可以读&#xff0c;要想上读锁的前提&#xff1a;之前的锁没有写锁 写锁&#xff1a;只有得到写锁的才能写。要想上写锁的前提是&#xff1a;之前没有任何锁 2&#xff0c;zk如何上读锁 创…...

操作系统简要概述

操作系统是计算机系统的核心软件&#xff0c;它管理和控制计算机硬件与软件资源&#xff0c;为用户提供方便、高效、安全的使用环境。以下是关于操作系统的详细介绍&#xff1a; 一、定义 操作系统&#xff08;Operating System&#xff0c;简称 OS&#xff09;是计算机硬件与…...

开漏模式的触发条件和工作状态

MOS管的漏-栅-源三极 漏极开路--开漏 电路整体概述 这是开漏&#xff08;Open - Drain&#xff09;电路结构&#xff0c;核心由输出控制模块和一对互补的MOS管&#xff08;P - MOS和N - MOS&#xff09;组成。开漏电路的特点是MOS管漏极开路&#xff0c;这种结构常用于需要实现…...

【Java学习笔记】Java第一课,梦开始的地方!!!

目录 1. 基本内容介绍和软件安装 2. 快速入门之第一个程序 hello world 3. 学习方法 基本介绍和软件安装 一、 Java 岗位与应用场景 说明&#xff1a;java 基础也称javaSE 岗位 1. javaEE 软件工程师 电商领域 团购 众筹 sns&#xff08;社交网络&#xff09; 教育 金…...

共享内存技术

一、共享内存 共享内存是一种高效的 进程间通信&#xff08;IPC&#xff09; 机制&#xff0c;允许多个进程直接访问同一块物理内存区域&#xff0c;无需通过内核缓冲区或文件进行数据拷贝。它通常用于需要 低延迟、高吞吐量 的数据交换场景&#xff08;如实时系统、高频交易、…...

Lc 大数运算--快速幂 | 统计好数字的数目

快速幂算法是一种高效计算大数幂运算的方法&#xff0c;能将时间复杂度从传统算法的O(n)降低到O(log n)。它的核心思想是 分解指数分治思想&#xff0c;类似生活中的「拆快递」—— 把大包裹拆成小份&#xff0c;分批处理更高效。 一、生活示例&#xff1a;存钱罐的复利计算 假…...

Linux内存管理架构(2)

4.虚拟地址空间布局 4.1虚拟地址空间划分 对于64位处理器&#xff0c;目前不支持完全的64位虚拟地址 1.ARM64内核/用户虚拟地址划分 1. 虚拟地址的最大宽度 最大宽度&#xff1a;虚拟地址的最大宽度是48位。 内核虚拟地址&#xff1a; 在64位地址空间的顶部。高16位全是1。范围…...