Hadoop架构再探讨
文章目录
- 1.Hadoop的优化与发展
- 1.1Hadoop的局限与不足
- 1.2针对Hadoop的改进与提升
- 2.HDFS2.0新特性
- 2.1HDFS HA
- 1.HDFS 1.0 组件及功能回顾
- 2. HDFS 1.0 的单点故障问题
- 3. HDFS HA(高可用)解决方案
- 2.2HDFS Federation
- 1.HDFS1.0中存在的问题
- 2.HDFS Federation的设计
- 3.HDFS Federation的访问模式
- 4.HDFSFederation相对于HDFS1.0的优势
- 3.YARN
- 3.1MapReduce1.0的缺陷
- 3.2YARN设计思路
- 1.核心设计目标
- 2.架构分层
- 3.与 HDFS Federation 的对比
- 3.3YARN体系结构
- 3.4YARN工作流程
- 3.5YARN框架与MapReduce1.0框架的对比分析
- 3.6YARN的发展目标
1.Hadoop的优化与发展
1.1Hadoop的局限与不足
Hadoop1.0的核心组件(仅指MapReduce和HDFS,不包括Hadoop生态系统内的Pig、Hive、HBase等其他组件),主要存在以下不足:
- 抽象层次低,需人工编码
- 表达能力有限
- 开发者自已管理作业(Job)之间的依赖关系
- 难以看到程序整体逻辑
- 执行迭代操作效率低
- 资源浪费(Map和Reduce分两阶段执行)
- 实时性差(适合批处理,不支持实时交互式)
1.2针对Hadoop的改进与提升
Hadoop的优化与发展主要体现在两个方面:
- 一方面是Hadoop自身两大核心组件MapReduce和HDFS的架构设计改进。
组件 | Hadoop 1.0的问题 | Hadoop 2.0的改进 |
---|---|---|
HDFS | 单一名称节点,存在单点失效问题 | 设计了HDFS HA,提供名称节点热备机制 |
HDFS | 单一命名空间,无法实现资源隔离 | 设计了HDFS Federation,支持管理多个命名空间 |
MapReduce | 资源管理效率低 | 设计了新的资源管理框架YARN(Yet Another Resource Negotiator) |
- 另一方面是Hadoop生态系统其它组件的不断丰富,加入了Pig、Tez、Spark和 Kafka等新组件。
组件 | 功能 | 解决Hadoop中存在的问题 |
---|---|---|
Pig | 处理大规模数据的脚本语言,用户编写简单语句即可自动转换为MapReduce作业 | 抽象层次低,需手工编写大量代码 |
Spark | 基于内存的分布式并行编程框架,支持高实时性和迭代计算 | MapReduce延迟高,不擅长迭代计算 |
Oozie | 工作流引擎,协调Hadoop上不同任务的运行 | 原生缺乏作业间依赖关系管理机制,需手动处理依赖 |
Tez | 支持DAG作业的计算框架,重组操作形成大DAG以减少冗余 | MapReduce任务间存在重复操作(如重复读写HDFS),效率低下 |
Kafka | 分布式消息系统,作为数据枢纽统一连接Hadoop组件 | 生态组件间缺乏高效统一的数据交换中介(如Flume与HDFS需定制对接) |
2.HDFS2.0新特性
2.1HDFS HA
1.HDFS 1.0 组件及功能回顾
HDFS 1.0 的核心架构由 NameNode(名称节点) 和 DataNode(数据节点) 组成,各自承担不同的职责:
组件 | 功能 | 存储方式 |
---|---|---|
NameNode | - 管理文件系统元数据(如文件目录结构、块映射关系) - 处理客户端读写请求 | - 内存:实时元数据映射 - 磁盘: FsImage (元数据快照) + EditLog (操作日志) |
DataNode | - 存储实际文件数据块 - 定期向NameNode汇报存储状态 | - 磁盘:数据块(默认3副本存储) |
关键机制
• FsImage:文件系统元数据的完整快照(如文件路径、块列表),存储在磁盘,启动时加载到内存。
• EditLog:记录所有文件系统变更(如创建/删除文件),确保元数据实时更新。
• Secondary NameNode:定期合并FsImage
和EditLog
生成新检查点(fsimage.cpt
),防止EditLog
过大影响恢复效率。
2. HDFS 1.0 的单点故障问题
HDFS 1.0 的核心缺陷是 NameNode 单点故障(SPOF),具体表现如下:
问题点 | 影响 | 临时解决方案(Secondary NameNode)的局限 |
---|---|---|
单NameNode架构 | NameNode宕机导致整个集群不可用 | Secondary NameNode 非热备份,无法自动接管故障节点 |
元数据恢复依赖磁盘文件 | 重启NameNode需加载FsImage 并重放EditLog ,海量操作日志导致恢复耗时极长 | 仅通过定期合并减少EditLog 大小,无法解决实时高可用需求 |
内存元数据易丢失 | 内存中的元数据映射未持久化,故障后需重建 | 无实时元数据同步机制 |
Secondary NameNode的局限性
- 角色误解:常被误认为备份节点,实际仅用于离线合并元数据。
- 手动切换:故障后需人工干预,无法实现秒级故障转移。
3. HDFS HA(高可用)解决方案
HDFS 2.0 引入 HA架构,通过 主备NameNode 和 共享存储 彻底解决单点故障问题。
核心改进
机制 | 实现方式 | 优势 |
---|---|---|
主备NameNode | - 主NameNode(Active)处理请求 - 备NameNode(Standby)实时同步元数据 | 故障时自动切换(秒级恢复) |
共享存储(QJM) | 使用 Quorum Journal Manager 集群同步EditLog ,确保主备元数据一致性 | 避免依赖本地磁盘,防止脑裂问题 |
ZKFC(故障控制器) | 通过ZooKeeper监控NameNode状态,触发主备切换 | 自动化故障检测与恢复 |
客户端透明重定向 | 客户端通过重试机制自动连接新Active NameNode | 业务无感知中断 |
HA架构关键流程
- 元数据同步:Active NameNode将
EditLog
写入共享JournalNode集群,Standby实时读取并更新内存元数据。 - 故障检测:ZKFC监控心跳,超时后判定Active节点失效。
- 切换触发:ZooKeeper选举新Active节点,并更新全局状态。
2.2HDFS Federation
1.HDFS1.0中存在的问题
- 单点故障问题
- 不可以水平扩展(是否可以通过纵向扩展来解决?)
- 系统整体性能受限于单个名称节点的吞吐量
- 单个名称节点难以提供不同程序之间的隔离性
- HDFSHA是热备份,提供高可用性,但是无法解决可扩展性、系统性能和隔离性
2.HDFS Federation的设计
- 在HDFS Federation中,设计了多个相互独立的名称节点,使得HDFS的命名服务能够水平扩展,这些名称节点分别进行各自命名空间和块的管理,相互之间是联盟(Federation)关系,不需要彼此协调。并且向后兼容。
- HDFSFederation中,所有名称节点会共享底层的数据节点存储数据资源,数据节点向所有名称节点汇报
- 属于同一个命名空间的块构成一个“块池”
3.HDFS Federation的访问模式
- 对于Federation中的多个命名空间,可以采用客户端挂载表(Client Side MountTable)方式进行数据共享和访问。
- 客户可以访问不同的挂载点来访问不同的子命名空间
- 把各个命名空间挂载到全局挂载表(mount-table)中,实现数据全局共享
- 同样的命名空间挂载到个人的挂载表中,就成为应用程序可见的命名空间
4.HDFSFederation相对于HDFS1.0的优势
HDFSFederation设计可解决单名称节点存在的以下几个问题:
(1)HDFS集群扩展性。多个名称节点各自分管一部分目录,使得一个集群可以扩展到更多节点,不再像HDFS1.0中那样由于内存的限制制约文件存储数目。
(2)性能更高效。多个名称节点管理不同的数据,且同时对外提供服务,将为用户提供更高的读写吞吐率。
(3)良好的隔离性。用户可根据需要将不同业务数据交由不同名称节点管理,这样不同业务之间影响很小。
需要注意的,HDFSFederation并不能解决单点故障问题,也就是说,每
个名称节点都存在在单点故障问题,需要为每个名称节点部署一个后备名
称节点,以应对名称节点挂掉对业务产生的影响
3.YARN
3.1MapReduce1.0的缺陷
- 存在单点故障
- JobTracker“大包大揽”导致任务过重(任务多时内存开销大,上限4000节点)
- 容易出现内存溢出(分配资源只考虑MapReduce任务数,不考虑CPU、内存)
- 资源划分不合理(强制划分为slot,包括Map slot和Reduce slot)
3.2YARN设计思路
YARN架构思路:将原JobTacker三大功能拆分
1.核心设计目标
• 解耦资源管理与作业调度:
将 Hadoop 1.0 中 JobTracker 的职能拆分为:
• 全局资源管理(ResourceManager)
• 应用级任务调度(ApplicationMaster)
2.架构分层
组件 | 职责 |
---|---|
ResourceManager | 全局资源分配,管理所有 NodeManager 的资源(CPU、内存等) |
NodeManager | 单个节点上的资源执行者,向 RM 汇报资源状态,运行容器(Container) |
ApplicationMaster | 每个应用(如 MapReduce、Spark)独享的进程,负责任务调度和容错 |
3.与 HDFS Federation 的对比
维度 | HDFS Federation | YARN |
---|---|---|
解决的问题 | 单一命名空间扩展性不足 | 单一 JobTracker 资源管理效率低 |
核心机制 | 客户端挂载表 + 多命名空间 | 资源调度与任务执行解耦 |
应用场景 | 数据存储与访问 | 计算资源管理与作业调度 |
3.3YARN体系结构
组件 | 角色 | 核心功能 |
---|---|---|
ResourceManager (RM) | 全局资源管理器,集群唯一(支持高可用主备切换) | - 处理客户端请求:接收作业提交,分配首个Container(用于启动AM) - 资源分配与调度:通过调度器(如Capacity/FairScheduler)全局协调资源分配 - 监控AM:跟踪AM状态,失败时重启 - 管理NM:接收NM心跳,监控节点健康与资源使用 |
NodeManager (NM) | 单个节点资源与任务管理者(每个从节点一个NM) | - 节点资源管理:管理本地CPU、内存,定期向RM汇报 - 执行命令:处理RM指令(启停Container)和AM请求(创建/销毁Container) - 隔离与监控:通过Cgroups隔离资源,监控Container运行状态 |
ApplicationMaster (AM) | 每个应用独享的进程(如MRAppMaster、Spark AM),由框架实现 | - 资源协商:向RM动态申请/释放Container资源 - 任务调度:拆分应用为任务(如Map/Reduce Task)并分配到Container - 容错处理:监控任务,失败时重新申请资源执行 - 进度报告:向RM和客户端汇报应用状态与进度 |
graph TD;subgraph Master nodesResourceManager -->|Manages| NodeManager1[NodeManager];ResourceManager -->|Manages| NodeManager2[NodeManager];NameNode -->|Coordinates| NodeManager1;NameNode -->|Coordinates| NodeManager2;subgraph NodeManager1ApplicationMaster1[ApplicationMaster];DataNode1[DataNode];endsubgraph NodeManager2ApplicationMaster2[ApplicationMaster];DataNode2[DataNode];endendsubgraph Slave nodesNodeManager1 -->|Controls| Container11[Container];NodeManager1 -->|Controls| Container12[Container];NodeManager2 -->|Controls| Container21[Container];NodeManager2 -->|Controls| Container22[Container];subgraph Container11DataNode11[DataNode];endsubgraph Container12DataNode12[DataNode];endsubgraph Container21DataNode21[DataNode];endsubgraph Container22DataNode22[DataNode];endendClient1[Client] -->|Requests| ResourceManager;Client2[Client] -->|Requests| ResourceManager;
3.4YARN工作流程
- 用户编写客户端应用程序,向YARN提交应用程序,提交的内容包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等
- YARN中的ResourceManager负责接收和处理来自客户端的请求,为应用程序分配一个容器,在该容器中启动一个ApplicationMaster
- ApplicationMaster被创建后会首先向ResourceManager注册
- ApplicationMaster采用轮询的方式向ResourceManager申请资源
- ResourceManager以“容器”的形式向提出申请的ApplicationMaster分配资源
- 在容器中启动任务(运行环境、脚本)
- 各个任务向ApplicationMaster汇报自己的状态和进度
- 应用程序运行完成后,ApplicationMaster向ResourceManager的应用程序管理器注销并关闭自己
3.5YARN框架与MapReduce1.0框架的对比分析
对比维度 | MapReduce 1.0(Hadoop 1.0) | YARN(Hadoop 2.0+) |
---|---|---|
框架角色 | 既是计算框架,又是资源管理调度框架(耦合设计) | 纯粹的资源调度管理框架(解耦设计),可运行多种计算框架(如MapReduce、Spark、Flink等) |
客户端兼容性 | 客户端API与YARN保持兼容,旧代码无需修改即可在Hadoop 2.0+运行 | 继承MapReduce 1.0的客户端接口,兼容原有生态 |
资源管理单元 | 以Slot(槽位)为单位,分为Map Slot和Reduce Slot,静态划分 | 以Container(容器)为单位,动态分配资源(支持CPU、内存等) |
中心服务负载 | JobTracker同时负责资源调度和任务监控,负载高且易成为单点瓶颈 | ResourceManager仅负责全局资源调度,负载大幅降低;任务监控分散到各ApplicationMaster(AM) |
任务调度与监控 | 由JobTracker集中调度和监控所有任务 | 由各作业的ApplicationMaster分布式管理任务调度和监控(如MapReduce作业的MRAppMaster) |
多框架支持 | 仅支持MapReduce编程模型 | 支持多计算框架,只需实现对应的AM(如Spark AM、Flink AM) |
资源利用率 | Slot静态分配导致资源利用率低(Map Slot空闲时Reduce任务无法使用) | Container动态申请,资源利用率高(按需分配) |
扩展性与容错性 | JobTracker单点故障影响全局;扩展性差 | ResourceManager支持高可用;AM故障后可由RM重新启动,扩展性更强 |
3.6YARN的发展目标
YARN的目标:统一资源调度,实现“一个集群多个框架”
1. 企业面临的挑战
在企业中,不同的业务场景需要使用多种计算框架,例如:
• MapReduce:离线批处理
• Impala:实时交互式查询分析
• Storm:流式数据实时分析
• Spark:迭代计算
由于这些框架来自不同的开发团队,各自拥有独立的资源调度机制,企业通常采用 “一个框架一个集群” 的部署方式,即:
• 为每个计算框架单独部署一套集群
• 不同集群之间资源隔离
2. 传统方式的问题
问题 | 具体表现 |
---|---|
集群资源利用率低 | 每个集群独立运行,资源无法共享,导致部分集群空闲而其他集群资源紧张。 |
数据无法共享 | 不同集群的数据存储分离,数据集需要在集群间复制,增加存储和传输成本。 |
维护代价高 | 需要管理多个独立集群,运维复杂度高,升级和监控成本增加。 |
3. YARN的解决方案
YARN 的目标是 “一个集群多个框架”,即:
• 统一资源调度:在单个集群上部署 YARN,由 YARN 统一管理资源(CPU、内存等)。
• 多框架共存:在 YARN 上运行 MapReduce、Spark、Impala、Storm 等不同计算框架。
• 资源共享与弹性伸缩:根据各框架的负载需求,动态调整资源分配,提高利用率。
4. YARN的优势
优势 | 具体表现 |
---|---|
提高集群利用率 | 不同应用混搭运行,避免资源浪费(如批处理+实时计算互补使用资源)。 |
数据共享 | 所有计算框架共享 HDFS 存储,避免数据跨集群移动。 |
降低运维成本 | 只需维护一个集群,减少管理复杂度。 |
弹性资源分配 | 根据业务优先级动态调整资源(如白天优先给交互式查询,夜间给批处理)。 |
相关文章:
Hadoop架构再探讨
文章目录 1.Hadoop的优化与发展1.1Hadoop的局限与不足1.2针对Hadoop的改进与提升 2.HDFS2.0新特性2.1HDFS HA1.HDFS 1.0 组件及功能回顾2. HDFS 1.0 的单点故障问题3. HDFS HA(高可用)解决方案 2.2HDFS Federation1.HDFS1.0中存在的问题2.HDFS Fed…...
ffmpeg录音测试
ffmpeg ffmpeg 是一个强大的多媒体处理工具,可以用于录音、音频处理、视频录制等多种功能。以下是使用 ffmpeg 进行录音的详细指令和参数说明。 基本录音指令 以下是一个简单的 ffmpeg 录音命令,将音频录制为 WAV 格式文件: ffmpeg -f …...
Kotlin-解构声明
我们在使用对象时可能需要访问它们内部的一些属性: class Student(var name: String, var age: Int) fun main() {val student Student("小明", 18)println(student.name)println(student.age) }这样看起来不太优雅,我们可以像下面这样编写: class Student(var na…...
【MCP Node.js SDK 全栈进阶指南】专家篇(2):MCP多模型支持架构
引言 在实际应用中,单一模型往往难以满足所有业务需求,这就需要一种灵活的架构来支持多模型集成和智能调度。Model Context Protocol (MCP) 作为连接应用与AI模型的标准协议,为多模型支持提供了理想的基础架构。 本文作将深入探讨如何基于MCP构建多模型支持架构,包括多LL…...
使用阿里AI的API接口实现图片内容提取功能
参考链接地址:如何使用Qwen-VL模型_大模型服务平台百炼(Model Studio)-阿里云帮助中心 在windows下,使用python语言测试,版本:Python 3.8.9 一. 使用QVQ模型解决图片数学难题 import os import base64 import requests# base 64 …...
mapbox基础,加载Fog云雾效果
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️fog 云雾 api1.3.1 ☘️配置项二、🍀…...
数据可视化与分析
数据可视化的目的是为了数据分析,而非仅仅是数据的图形化展示。 项目介绍 项目案例为电商双11美妆数据分析,分析品牌销售量、性价比等。 数据集包括更新日期、ID、title、品牌名、克数容量、价格、销售数量、评论数量、店名等信息。 1、数据初步了解…...
git的push.default配置详解
Git的push.default配置用于定义执行git push时未指定远程和分支的默认行为。以下是各选项的详解及使用场景: 1. simple(默认值,Git ≥2.0) 行为:仅推送当前分支到与其关联的上游分支(即remote-tracked分支…...
高频电流探头:通信测试中的隐形守护者
在5G基站调试现场,工程师李工正手持一个火柴盒大小的装置贴近电路板,示波器屏幕上瞬间显示出精确的电流波形——这个看似普通的场景,背后折射出高频电流探头在通信测试中的关键作用。随着通信技术迈入毫米波时代,这类精密测试工具…...
淘宝拍立淘 API 接口探秘:如何通过图片挖掘海量商品信息
在互联网技术飞速发展的当下,传统的文字搜索商品方式已无法完全满足用户日益增长的个性化需求。基于图像识别技术的以图搜物模式应运而生,成为电商行业的新宠。淘宝拍立淘 API 接口作为这一技术的重要载体,能够帮助开发者和企业通过一张图片&…...
第二章:langchain文本向量化(embed)搭建与详细教程-本地服务方式(下)
文章目录 前言一、本地构建模型与服务端搭建代码1、完整代码2、结果示例 二、基于flask服务端构建langchain调用的向量方法代码1、完整代码2、结果示例 总结 前言 在上篇文章介绍了langchain源码embed方法与基于api key方式构建向量模型。然而,某些情况,…...
飞牛云如何开启及使用ssh:小白用户上手指南-家庭云计算专家
最近很多用户希望提供飞牛云下的可道云onlyoffice的安装服务,但是很多都是萌新小白,不知道怎么启用ssh和使用ssh客户端.这里提供简单的方法,统一答复: 重要的事情说3遍:一定不要自己发挥,全部按说明的来;一定要在内网环境用内网ip访问;不要用域名和端口号,谢谢各位萌新了!!! 一…...
12.模方ModelFun工具-立面修整
摘要:本文主要介绍模方ModelFun修模工具——立面修整的操作方法。 点击工具栏即可找到立面修整工具,点击可打开并使用该工具,如下图: 图 工具菜单栏 (1)截面绘制: 快速绘制竖直矩形࿱…...
消失的两个数字 --- 位运算
目录 一:题目 二:算法原理 三:代码实现 一:题目 题目链接:面试题 17.19. 消失的两个数字 - 力扣(LeetCode) 二:算法原理 只出现一次的数字III:常见位运算总结-CSDN…...
centos的根目录占了大量空间怎么办
问题 当根目录磁盘不够时,就必须删除无用的文件了 上面的,如果删除/usr 或/var是可以释放出系统盘的 定位占空间大的文件 经过命令,一层层查哪些是占磁盘的。 du -sh /* | sort -rh | head -n 10 最终排查,是有个系统日志占了20…...
Protobuf的速成之旅
注意事项:本文使用Linux下的Ubuntu C/C 一.Protobuf的安装 在安装Protobuf前需要先安装protobuf的依赖库 sudo apt-get install autoconf automake libtool curl make g unzip -y Protobuf的安装链接:https://github.com/protocolbuffers/protobuf/releases 这里根据自己的环…...
使用 Python 监控系统资源
使用 Python 监控系统资源 在开发分布式系统或性能敏感的应用时,实时监控系统资源(如 CPU、内存、磁盘、网络和 GPU 使用率)至关重要。本文介绍一个基于 Python 的 SystemMonitor 类,它以单例模式持续采集系统资源信息࿰…...
【Qt4】Qt4中实现PDF预览
方案一: 在Qt4中预览PDF文件,你可以使用多种方法,但最常见和简单的方法之一是使用第三方库。Qt本身并没有内置直接支持PDF预览的功能,但你可以通过集成如Poppler、MuPDF等库来实现这一功能。下面我将展示如何使用Poppler库在Qt4中…...
从试错到智能决策:Python与强化学习优化自动驾驶策略
从试错到智能决策:Python与强化学习优化自动驾驶策略 一、引言:自动驾驶如何更聪明? 自动驾驶技术的发展,已经从简单的感知与规则控制,迈向更加智能化的强化学习(Reinforcement Learning,RL)决策优化时代。过去,自动驾驶更多依赖 传统算法(如A、Dijkstra路径规划)…...
【免费下载】全国范围的城市用地类型数据
该数据以路网及水系切分得到的交通小区为最小地块,并基于卫星影像、夜间灯光数据、POI数据、手机信令数据对地块进行分类。 需要这份数据,请在文末查看下载方法。 一、数据介绍 该数据的用地类型可分为居住用地、商务办公用地、商业服务用地、工业用地…...
小程序问题(记录版)
1、样式不生效 在h5上生效 但是 小程序上没反应 解决办法:解除组件样式隔离 1、isolated 表示启用样式隔离,在自定义组件内外,使用 class 指定的样式将不会相互影响(一般情况下的默认值) 2、apply-shared 表示页面 wxs…...
STL之stackqueue
stack的介绍(可以想象成栈) 1.stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作 2.stack是作为容器适配器被实现的,容器适配器即是对特点类封装作为其…...
学习海康VisionMaster之间距检测
一:进一步学习了 今天学习下VisionMaster中的间距检测工具:主要类似于卡尺工具,测量物体的长度或者宽度或者间距 二:开始学习 1:什么是间距检测? 间距测量模块用于检测两特征边缘之间的间距,首…...
【SpringBoot教程】SpringBoot自定义注解与AOP实现切面日志
🙋大家好!我是毛毛张! 🌈个人首页: 神马都会亿点点的毛毛张 文章目录 1.前言2.SpringAOP实现切面日志快速入门1.1 创建SpringBoot项目1.2 依赖配置pom.xml1.3 自定义日志注解1.4 配置 AOP 切面1.5 怎么使用呢?1.6 实…...
C++学习之路,从0到精通的征途:stack_queue的模拟实现及deque原理介绍
目录 一.容器适配器 1.什么是适配器 2.STL标准库中stack和queue的底层结构 3.deque的原理介绍 deque是如何借助其迭代器维护其假想连续的结构呢? 头插 尾插 遍历 4.deque的优缺点 二.stack的模拟实现 三.queue的模拟实现 一.容器适配器 1.什么是适配…...
文件上传漏洞篇:upload-labs靶场搭建
一、文件上传漏洞简述 文件上传漏洞是一种常见的Web安全漏洞,当网站或应用程序允许用户上传文件(如图片、文档等)时,若未对上传的文件进行充分的安全检查,攻击者可能利用此漏洞上传恶意文件(如Web Shell、…...
TikTok 矩阵账号运营实操细节:打造爆款矩阵
在 TikTok 的流量版图里,打造 TikTok 矩阵账号能显著提升影响力与吸粉能力。而借助 AI 工具,更可为 TikTok 矩阵运营效率的提升赋能,让运营如虎添翼。下面就为大家详细讲讲其中的实操细节,并结合一些伪代码示例辅助理解。 一、矩…...
Nginx安全防护与HTTPS部署实战
一.核心安全配置 1.编译安装Nginx (1)安装支持软件 Nginx的配置及运行需要pcre、zlib等软件包的支持,因此应预先安装这些软件的开发包(devel),以便提供相应的库和头文件,确保Nginx的安装顺利…...
【C语言】初阶数据结构相关习题(一)
🎆个人主页:夜晚中的人海 今日语录:人的生命似洪水在奔流,不遇着岛屿、暗礁,难以激起美丽的浪花。——奥斯特洛夫斯基 文章目录 ⭐一、判定是否互为字符重排🎉二、 回文排列🚀三、字符串压缩&am…...
MySQL从入门到精通(一):MySQL介绍及数据库相关概念
目录 一、MySQL 介绍 二、数据库相关概念 (一)数据库基础知识 (二)主流的关系型数据库管理系统 三、关系型数据库与非关系型数据库 (一)定义 (二)数据模型对比 (…...
宁德时代区块链+数字孪生专利解析:去中心化身份认证重构产业安全底座
引言:当动力电池巨头瞄准数字孪生安全 2025年5月6日,金融界披露宁德时代未来能源(上海)研究院与母公司宁德时代新能源科技股份有限公司联合申请的一项关键专利——“身份验证方法、系统、电子设备及存储介质”。这项技术将区块链…...
Kotlin数据类在Android开发中的应用
在 Android 开发中,Kotlin 的数据类(Data Class)因其简洁性和自动生成的功能特性,成为了提升开发效率的利器。以下是我总结的 7 大核心妙用场景,配合代码示例助您快速掌握: 1️⃣ JSON 解析利器 → 网络请求模型 与 Retrofit/Moshi 完美配合,自动生成 equals()/hashCod…...
程序员学商务英语之Shipment Claim 运输和索赔
Dia-3: Claim 1 索赔 1. He claimed that he would quit smoking. 他宣布他将要禁烟。 2. BYD is inferior to Tesla. 差 be worse than… 比亚迪比特斯拉差。 Tesla is superior to BYD. 特斯拉比比亚迪好。 be better than… 3. The survey report reveals/s…...
Kotlin密封类优化Android状态管理
Kotlin 的密封类(Sealed Class)确实是 Android 开发中管理复杂 UI 状态的利器。它通过类型安全的层次结构,让状态管理代码更加清晰简洁。让我们从实际开发场景出发,深入探讨其应用: 一、密封类核心优势 受限的类继承…...
基于图像处理的道路监控与路面障碍检测系统设计与实现 (源码+定制+开发) 图像处理 计算机视觉 道路监控系统 视频帧分析 道路安全监控 城市道路管理
博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...
依赖注入详解与案例(前端篇)
依赖注入详解与案例(前端篇) 一、依赖注入核心概念与前端价值 依赖注入(Dependency Injection, DI) 是一种通过外部容器管理组件/类间依赖关系的设计模式,其核心是控制反转(Inversion of Control, IoC&…...
Spark 的 Shuffle 机制:原理与源码详解
Apache Spark 是一个分布式数据处理框架,专为大规模数据分析设计。其核心操作之一是 Shuffle,这是一个关键但复杂的机制,用于在某些操作期间在集群中重新分配数据。理解 Shuffle 需要深入探讨其目的、机制和实现,既包括概念层面&a…...
IdeaVim配置指南
一、什么是 IdeaVim? IdeaVim 是 JetBrains 系列 IDE(如 IntelliJ IDEA, WebStorm, PyCharm 等)中的一个插件,让你在 IDE 里使用 Vim 的按键习惯,大大提升效率。 安装方法: 在 IDE 中打开 设置(Settings) →…...
[监控看板]Grafana+Prometheus+Exporter监控疑难排查
采用GrafanaPrometheusExporter监控MySQL时发现经常数据不即时同步,本示例也是本地搭建采用。 Prometheus面板 1,Detected a time difference of 11h 47m 22.337s between your browser and the server. You may see unexpected time-shifted query res…...
P56-P60 统一委托,关联游戏UI,UI动画,延迟血条
这一部分首先把复杂的每个属性委托全部换成了简洁可复用的委托,之后重新修改了UI蓝图,然后在新增了一个与之前表格关联的动画与血条延迟下降的蓝图 OverlayAuraWidgetController.h // Fill out your copyright notice in the Description page of Project Settings. #pragma …...
智能修复大模型生成的 JSON 字符串:Python 实现与优化
在使用大语言模型(LLM)生成 JSON 格式数据时,常因模型输出不完整、语法错误或格式不规范导致 JSON 解析失败。本文介绍如何通过 json_repair 库实现对 LLM 生成 JSON 字符串的自动修复,并改进原始提取函数以提升容错能力。 一、LLM 生成 JSON 的常见问题 LLM 输出的 JSON …...
【PPT制作利器】DeepSeek + Kimi生成一个初始的PPT文件
如何基于DeepSeek Kimi进行PPT制作 步骤: Step1:基于DeepSeek生成文本,提问 Step2基于生成的文本,用Kimi中PPT助手一键生成PPT 进行PPT渲染-自动渲染 可选择更改模版 生成PPT在桌面 介绍的比较详细,就是这个PPT模版…...
华为设备端口隔离
端口隔离的理论与配置指南 一、端口隔离的理论 基本概念 端口隔离(Port Isolation)是一种在交换机上实现的安全功能,用于限制同一VLAN内指定端口间的二层通信。被隔离的端口之间无法直接通信,但可通过上行端口访问公共资源&#…...
YOLO12改进-C3K2模块改进-引入离散余弦变换DCT 减少噪声提取图像的细节、边缘和纹理等微观特征
离散余弦变换(Discrete Cosine Transform, DCT)由 Nasir Ahmed 于 1974 年提出,最初是为了优化数据压缩。其核心思想是将信号从空间域转换为频率域,从而实现冗余信息的压缩。DCT 在图像和视频处理领域应用广泛,例如 JP…...
基于大模型的自然临产阴道分娩全流程预测与方案研究报告
目录 一、引言 1.1 研究背景与目的 1.2 研究意义 1.3 国内外研究现状 二、大模型技术原理与应用概述 2.1 大模型基本原理 2.2 在医疗领域的应用现状 2.3 用于分娩预测的优势 三、术前预测与准备方案 3.1 产妇身体状况评估指标 3.2 大模型预测流程与方法 3.3 基于预…...
用 Tailwind CSS 优化你的 Vue 3 项目! ! !
Vue 3 的响应式魅力 TailwindCSS 的原子级美学 前端开发的舒适巅峰! 在现代前端开发中,组件驱动 原子化 CSS 正在成为新的标准。如果你已经在使用 Vue 3,那不妨试试 Tailwind CSS —— 一个强大的原子化 CSS 框架,它能让你几乎…...
PostgreSQL数据库的array类型
PostgreSQL数据库相比其它数据库,有很多独有的字段类型。 比如array类型,以下表的pay_by_quarter与schedule两个字段便是array类型,即数组类型。 CREATE TABLE sal_emp (name text,pay_by_quarter integer[],schedule t…...
融智学视角集大成范式革命:文理工三类AI与网络大数据的赋能
融智学视角下的“集大成”范式革命:AI与大数据的终极赋能 一、化繁为简的工具革命:AI与大数据的三重解构 信息压缩的数学本质 Kolmogorov复杂度极限突破: K_AI(x)min_p∈P_NN ℓ(p)λ⋅dist(U(p),x) (神经网络程序p的描述长度语…...
【2025】Visio 2024安装教程保姆级一键安装教程(附安装包)
前言 大家好!最近很多朋友在问我关于Visio 2024的安装问题,尤其是对于那些需要制作专业流程图和组织结构图的小伙伴来说,这款软件简直是必不可少的办公神器!今天就给大家带来这篇超详细保姆级的Visio 2024安装教程,不…...
C++【继承】
继承 1.继承1.1 继承的概念1.2继承的定义1.2.1定义格式1.2.2继承基类成员访问方式的变化 1.3继承模板 2.基类和派生类之间的转换 1.继承 1.1 继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许我们在保持原有类特性的基础上…...