大数据平台简介
一、分布式系统基础架构
(一)定义与核心特征
分布式系统是由多台计算机(节点)通过网络协作组成的系统,对外表现为一个统一整体。其核心特征包括:
-
去中心化:节点平等或分角色协作(如主从架构)。
-
高容错性:部分节点故障不影响整体服务(通过冗余实现)。
-
可扩展性:可动态增加节点以提升性能或容量。
-
透明性:用户无需感知底层分布细节(如数据位置)。
(二) 关键组件
- 计算节点
- 服务器节点 :这些是分布式系统中的主要处理单元。例如,在一个大型的分布式计算集群中,有多台服务器节点,每台服务器都有自己的 CPU、内存和存储设备。它们可以执行各种计算任务,如运行应用程序、处理数据查询等。
- 客户端节点 :用于向分布式系统发送请求并接收结果。比如,用户的计算机作为客户端节点,通过浏览器向分布式的 Web 服务系统发送 HTTP 请求,获取网页内容。
- 网络通信子系统
- 协议 :分布式系统中的节点通过网络协议进行通信。常见的协议有 TCP/IP 协议,它保证了数据在网络中的可靠传输。例如,在分布式文件系统中,节点之间通过 TCP/IP 协议来传输文件数据块。
- 消息传递机制 :节点之间通过消息传递来协同工作。这些消息可以是请求消息(如请求某个数据块)、响应消息(如返回计算结果)等。例如,在分布式数据库系统中,当一个节点需要查询另一个节点上的数据时,会发送查询消息,接收节点处理后返回结果消息。
- 存储子系统
- 分布式存储架构 :数据在多个节点上进行存储。例如,分布式文件系统(如 Hadoop 分布式文件系统 HDFS)将文件分割成多个数据块,存储在不同的节点上。这样可以提高数据的存储容量和可靠性。
- 数据副本机制 :为了保证数据的高可用性和容错性,数据通常会有多个副本存储在不同的节点上。如果一个节点出现故障,系统可以从其他有副本的节点获取数据。
(三) 架构模式
- 主从架构(Master - Slave)
- Master节点:负责协调与管理(如分配任务、监控状态)多个从节点(Slave)。主节点通常处理诸如任务分配、状态监控等管理工作。
- Slave节点:执行具体任务(如存储数据、运行计算)。
- 典型案例: 例如,在 Hadoop 的 YARN 资源管理框架中,ResourceManager (主节点),它负责分配计算资源给各个 NodeManager(从节点),NodeManager 则负责管理单个节点上的资源。
- 对等架构(P2P == Peer-to-Peer)
- 原理 :所有节点地位平等,每个节点既可以作为客户端请求服务,也可以作为服务器提供服务。
- 优势: 无单点故障,但协调复杂度高
- 典型案例: 比如,BitTorrent 文件共享系统就是基于 P2P 架构。每个下载文件的用户(节点)在下载的同时也向其他节点上传自己已有的文件片段,提高了文件传输的效率。
(四)一致性模型
-
强一致性: 所有节点数据实时一致(如金融系统,实现成本高)
-
最终一致性: 允许短暂不一致,但最终同步(如电商库存,高可用优先)
(五) CAP定理
- 分布式系统最多同时满足以下两项:
-
一致性(consistency): 所有节点数据一致
-
可行性(availability): 每个请求都能获得响应
-
分区容错性(partition tolerance): 网络分区时系统仍可运行
例如:HBase选择CP(一致性与分区容错),Cassandra选择AP
(六) 容错与扩展机制
-
数据冗余: 副本机制(如HDFS默认3副本)
-
心跳检测: Mater定期检查Slave存活状态
-
弹性伸缩: 动态增减节点(如云平台的自动扩缩容)
二、Hadoop 生态圈中分布式组件的作用及架构原理
(一) HDFS
- 作用
- HDFS(Hadoop 分布式文件系统) 是 Hadoop 生态系统中的存储层,它提供了高吞吐量的数据访问,适合大规模数据集的存储。它可以存储海量的数据,如互联网公司的日志数据、用户行为数据等,这些数据可能达到 PB 级别。它将数据块(默认 128MB)分布存储在多个节点上,为上层应用提供高可靠的数据存储服务。
- 架构原理
-
NameNode 和 DataNode :
- NameNode :主节点,管理元数据(文件目录结构、块位置),单点故障可通过HA(高可用)方案解决;管理文件系统的命名空间,维护文件与数据块的映射关系以及数据块与 DataNode 的映射关系。例如,当用户要读取一个文件时,NameNode 会告诉客户端该文件由哪些数据块组成,以及这些数据块存储在哪些 DataNode 上。
- DataNode :从节点,负责存储实际的数据块。它们定期向 NameNode 发送心跳信号和块列表,汇报自己的状态和存储的数据块信息。当 NameNode 接收到写入文件的请求时,它会挑选合适的 DataNode 来存储数据块。
-
数据读写流程 :
- 写数据 :客户端切分文件→联系NameNode获取DataNode列表→直接写入多个DataNode副本。DataNode 之间会进行数据校验和存储操作,确保数据的正确性和可靠性。
- 读数据 :客户端向 NameNode 请求文件,从NameNode获取块位置→从最近DataNode读取数据 → 再将数据块组合成完整的文件。
(二)YARN(Yet Another Resource Negotiator)
- 作用
- YARN 是 Hadoop 的资源管理框架,它负责管理整个集群的计算资源(CPU、内存等),并将这些资源分配给各个应用程序(如 MapReduce 作业、Spark 作业等)。它使得多种类型的分布式应用可以共享同一个集群资源,提高了集群资源的利用率。
- 架构原理
-
ResourceManager(RM)和 NodeManager(NM) :
- ResourceManager :主节点,负责整个集群资源的管理和分配。它有一个全局的资源视图,了解每个节点的资源情况和各个应用的资源需求。例如,当一个 MapReduce 作业提交到集群时,ResourceManager 会根据作业的资源请求(如需要的 CPU 核心数、内存大小等)来分配合适的节点资源。
- NodeManager :从节点,运行在每个集群节点上,负责管理单个节点上的资源。它向 ResourceManager 汇报节点的资源使用情况,并执行RM指令来启动或停止容器(Container)。容器是 YARN 中资源分配的单位,它封装了 CPU、内存等资源。
-
ApplicationMaster(AM) :
- 每个应用专属,负责任务调度与容错。它是每个应用的一个特殊任务,负责与 ResourceManager 协商资源,并与 NodeManager 交互来启动和管理任务。
- 例如,MapReduce作业的AM管理Map/Reduce任务:在 MapReduce 作业中,ApplicationMaster 会向 ResourceManager 申请 Map 任务和 Reduce 任务所需的资源,当资源分配好后,它会在相应的 NodeManager 上启动这些任务。
(三)MapReduce
- 作用
- 分布式批处理框架,适用于离线计算:MapReduce 是一种分布式计算模型,主要用于大规模数据的并行处理。它可以将一个大型的计算任务分解成多个小的子任务(Map 任务),在多个节点上并行执行这些子任务,然后通过 Reduce 任务将子任务的结果汇总。例如,在对海量的网页数据进行关键词统计时,Map 任务可以统计每个网页中的关键词出现次数,Reduce 任务将来自不同网页的相同关键词出现次数进行汇总。
- 架构原理
-
Map 阶段 :
- 用户定义的 Map 函数接收输入的键值对(如文件中的每一行文本及其行号),对数据进行处理,输出中间键值对。例如,对文本数据进行单词统计,Map 函数会将每个单词作为中间键,单词出现的次数(初始为 1)作为中间值输出。这些中间键值对会被分区(Partition)和排序,相同键的键值对会被分到同一个 Reduce 任务。
-
Reduce 阶段 :
- 用户定义的 Reduce 函数接收经过排序和分组后的中间键值对,对相同键对应的值进行汇总等操作,输出最终结果。例如,在单词统计中,Reduce 函数会将所有相同单词对应的中间值相加,得到该单词在所有输入数据中的总出现次数。整个 MapReduce 过程由 JobTracker(在旧版本 Hadoop 中,是主节点,负责作业调度和任务分配)和 TaskTracker(从节点,负责执行具体的 Map 和 Reduce 任务)等组件协同完成。
(四)HBase
- 作用:分布式列式数据库,支持低延迟随机读写(如实时查询)。
- 架构原理:
- RegionServer:存储数据Region(按行键范围划分),处理读写请求。
- HMaster:管理Region分配与负载均衡。
- 依赖组件:ZooKeeper管理集群状态,HDFS持久化数据。
- LSM树结构:数据先写入内存MemStore,定期合并到磁盘StoreFile。
(五) Hive
- 作用:数据仓库工具,通过类SQL(HiveQL)查询HDFS数据。
- 架构原理:
- 元数据存储:使用MySQL等数据库存储表结构信息。
- 执行引擎:将HiveQL转换为MapReduce/Tez/Spark作业(通过Hive on Spark加速)。
- 适用场景:离线数据分析(如生成每日报表)。
(六) Spark
- 作用:内存计算引擎,支持批处理、流处理与机器学习。
- 架构原理:
- 弹性分布式数据集(RDD):不可变数据集合,支持转换(Transformation)与行动(Action)操作。
- DAG调度器:将任务拆分为有向无环图优化执行流程。
- 优势:通过内存缓存减少磁盘IO,比MapReduce快10~100倍。
(七) ZooKeeper
- 作用:分布式协调服务,解决集群一致性、选主节点等问题。
- 架构原理:
- Zab协议:确保所有节点状态一致(类似Paxos算法)。
- 持久节点+临时节点:实现服务注册与发现(如HBase RegionServer注册)。
- 典型应用:HDFS HA(通过ZKFC监控NameNode状态)。
(八)其他关键组件
- Flume:日志采集工具,通过Agent(Source+Channel+Sink)传输数据至HDFS。
- Sqoop:关系数据库与HDFS间数据迁移工具(基于MapReduce实现并行导入导出)。
- Kafka:分布式消息队列,解耦生产者与消费者,支持高吞吐流数据传输。
总结:Hadoop生态协作流程
- 数据采集:Flume/Sqoop将数据导入HDFS/HBase。
- 存储:HDFS提供底层存储,HBase支持实时访问。
- 资源管理:YARN统一调度MapReduce、Spark等计算任务。
- 计算与分析:MapReduce处理离线任务,Spark加速计算,Hive提供SQL查询。
- 协调与监控:ZooKeeper管理集群状态,确保服务高可用。
通过以上组件协同,Hadoop生态构建了一个从数据存储、计算到分析的全链路分布式处理平台。
三 Paxos算法
(一)Paxos算法的背景与目标
- Paxos 是分布式系统中用于在多个节点之间达成一致性(Consensus)的核心算法,由Leslie Lamport于1990年提出。
- 核心目标是在允许节点故障(包括网络分区、消息丢失等)的异步网络环境中,确保多数派(Quorum)节点对某个值(Value)达成一致。
- 典型应用场景: 分布式锁服务(如ZooKeeper)、数据库主节点选举(如Google Chubby)、分布式事务提交(如Spanner)等。
(二)Paxos的核心角色与流程
Paxos算法涉及三类角色:
- Proposer(提案者):提出提案(Proposal),包含一个唯一的提案编号(Proposal ID)和一个值(Value)。
- Acceptor(接受者):对提案进行投票,决定是否接受某个提案。
- Learner(学习者):学习最终被选定的值(可能不参与投票)。
算法的核心分为两个阶段:
- Prepare阶段(Phase 1):Proposer尝试获取多数派Acceptor的承诺。
- Accept阶段(Phase 2):Proposer将提案提交给Acceptor,由多数派确认后达成共识。
三、算法步骤分解
1. Prepare阶段
-
Proposer行为:
- 生成一个全局唯一的提案编号N(通常由时间戳+节点ID组成)。
- 向所有Acceptor发送
Prepare(N)
请求,要求它们承诺不再接受编号小于N的提案。
-
Acceptor行为:
- 若收到的
Prepare(N)
是当前最大的提案编号:- 返回
Promise(N, accepted_value)
,其中accepted_value
是该Acceptor已接受的最高编号提案的值(若存在)。 - 承诺不再接受编号小于N的提案。
- 返回
- 若编号小于已承诺的提案编号,则忽略该请求。
- 若收到的
2. Accept阶段
-
Proposer行为:
- 若收到多数派Acceptor的
Promise
响应:
- 从所有响应中选择最高编号的提案值作为本次提案的值(若存在)。
- 若所有响应中均无已接受的提案,则Proposer可自由选择一个值(如业务逻辑中的初始值)。
- 向所有Acceptor发送
Accept(N, Value)
请求。
- 若收到多数派Acceptor的
-
Acceptor行为:
- 若收到的
Accept(N, Value)
请求的编号N 不小于 其已承诺的编号:- 接受该提案,并持久化存储
(N, Value)
。 - 返回
Accepted(N, Value)
给Proposer和Learner。
- 接受该提案,并持久化存储
- 若收到的
3. Learner学习最终值
- 当Learner发现某个提案被多数派Acceptor接受时,该值即为最终选定值,并通知所有节点。
四、Paxos的数学保证
Paxos通过以下约束保证一致性:
- 唯一性(Safety):
- 每个提案编号唯一,且Acceptor仅接受更高编号的提案。
- 一旦某个值被多数派接受,后续所有更高编号的提案必须选择该值(通过Prepare阶段传递历史值实现)。
- 活性(Liveness):
- 只要存在一个Proposer能持续生成更高编号的提案,且网络通信恢复,最终能达成共识。
- 可能因竞争导致活锁(多个Proposer不断生成更高编号提案),需通过随机退避或选举主Proposer解决。
五、Paxos的变种与优化
- Multi-Paxos:
- 针对连续提案的优化,通过选举一个Leader(主Proposer)减少Prepare阶段的重复通信。
- 核心思想:一旦Leader被选出,后续提案可跳过Prepare阶段,直接进入Accept阶段,提升效率。
- Fast Paxos:
- 允许客户端直接向Acceptor发送提案,减少Proposer的中间角色,降低延迟。
- 需要更高的容错条件(多数派需满足
2f+1
节点中的f+1
同意)。
- Cheap Paxos:
- 在非关键路径上减少节点数量,降低成本,但牺牲部分容错能力。
六、Paxos的实际应用
- Google Chubby:
- 分布式锁服务,使用Paxos选举主节点并维护配置信息。
- ZooKeeper的Zab协议:
- 基于Paxos思想改进,通过主从架构+事务日志实现原子广播。
- 分布式数据库(如Spanner、TiDB):
- 使用Paxos协议跨副本同步数据,保证强一致性。
七、Paxos的局限性
- 复杂度高:算法逻辑复杂,实现容易出错(Lamport曾称“Paxos的简单性是其最难理解的部分”)。
- 性能开销:两阶段通信(Prepare + Accept)导致延迟较高,Multi-Paxos优化后仍可能成为瓶颈。
- 活锁问题:需额外机制(如Leader选举)避免无限竞争。
八、Paxos与其他共识算法的对比
算法 | 核心思想 | 优点 | 缺点 |
---|---|---|---|
Paxos | 基于提案编号的多数派承诺机制 | 理论严谨,容错性强 | 实现复杂,活锁风险 |
Raft | 通过Leader选举简化流程 | 易于理解与实现 | 强依赖Leader,扩展性受限 |
Zab | 主从架构+事务日志原子广播 | 高吞吐,适合顺序一致性场景 | 需依赖ZooKeeper的特定设计 |
九、代码示例(伪代码)
# Proposer逻辑
def proposer_run(value):n = generate_proposal_id()prepare_responses = send_prepare(n)if len(prepare_responses) >= majority:highest_value = select_highest_accepted_value(prepare_responses)if highest_value is None:chosen_value = valueelse:chosen_value = highest_valueaccept_responses = send_accept(n, chosen_value)if len(accept_responses) >= majority:broadcast_learn(chosen_value)# Acceptor逻辑
class Acceptor:def __init__(self):self.promised_id = 0self.accepted_id = 0self.accepted_value = Nonedef on_prepare(self, n):if n > self.promised_id:self.promised_id = nreturn Promise(n, self.accepted_id, self.accepted_value)else:return Ignore()def on_accept(self, n, value):if n >= self.promised_id:self.accepted_id = nself.accepted_value = valuereturn Accepted(n, value)else:return Reject()
(十)总结
Paxos是分布式系统领域的基石算法,通过严谨的数学证明保证了在异步不可靠网络中的一致性。尽管其实现复杂度较高,但通过Multi-Paxos等优化仍被广泛应用于工业级系统。理解Paxos的核心思想(如提案编号、多数派承诺)是掌握分布式共识机制的关键。对于实际系统设计,可结合场景选择Raft等简化版本,或在Paxos基础上进行定制化改进。
相关文章:
大数据平台简介
一、分布式系统基础架构 (一)定义与核心特征 分布式系统是由多台计算机(节点)通过网络协作组成的系统,对外表现为一个统一整体。其核心特征包括: 去中心化:节点平等或分角色协作(如…...
电脑端移植至手机平板:攻克难题,仙盟架构显神通——仙盟创梦IDE
在将电脑端应用移植到手机和平板的过程中,常面临诸多棘手问题。像 1.x 号关闭按钮因位置设计欠佳,难以被用户精准点击,字体过小导致阅读与操作不便等。未来之窗仙盟创梦凭借创新的仙盟架构,巧妙且高效地化解了这些困扰开发者与用户…...
基于Python的中国象棋小游戏的设计与实现
基于Python的中国象棋小游戏的设计与实现 第一章 绪论1.1 研究背景1.2 研究意义 第二章 需求分析2.1 需求分析2.1.1核心功能需求2.1.2 用户体验需求2.1.3 衍生功能需求 2.2 可行性分析2.2.1 技术可行性2.2.2 经济可行性2.2.3 市场可行性2.2.4 法律与合规性 第三章 概要设计3.1 …...
HCIP --- OSPF综合实验
一、拓扑图 二、实验要求 1,R5为ISP,其上只能配置IP地址;R4作为企业边界路由器,出口公网地址需要通过PPP协议获取,并进行chap认证。 2,整个0SPF环境IP基于172.16.0.8/16划分。 3,所有设备均可访问R5的环…...
【OpenGL】OpenGL学习笔记-1:VS2019配置OpenGL开发环境
在Visual Studio 2019中可以通过手动配置库文件或NuGet包管理器快速安装的方法配置OpenGL环境,详细步骤如下: 一、打开VS2019,创建新的控制台项目 二、方法一:手动配置GLEW/GLFW/GLAD库 GLFW是窗口管理和输入事件的基础设施&…...
GWAS_LD
局部LDblock 绘图 1. 查看显著位点附近基因情况 链接pvalue显著位点文件 ln -s ~/yiyaoran/GWAS/my_GWAS_J/P3.GWAS/01.tassel/mlm_output.manht_figure.sigSite.out . #也可以自己筛选awk $2 9 && $4 < 0.000028481 mlm_output.manht_input>368_GWAS.snpsnp两…...
WinForms开发基础:实现带X按钮的ClearableTextBox控件
前言 我们经常看到这样的带X按钮的输入框 如果使用WinForms开发中,该如何进行设计,普通的TextBox控件如何进行改造?为了提升用户体验,在TextBox文本框内添加一个“x”按钮,方便用户一键清除内容。本文将介绍如何通过继…...
直线轴承常规分类知多少?
直线轴承的分类方式多样,以下是从材质、结构形状和常规系列三个维度进行的具体分类: 按主要材质分类 外壳材质:常见的有不锈钢,具有良好的耐腐蚀性,适用于一些对环境要求较高、易受腐蚀的工作场景;轴承…...
算法期末复习
算法期末复习 1.单选题 \1. 二分搜索算法是利用( A)实现的算法。 A. 分治策略 B. 动态规划法 C. 贪心法 D. 回溯法 \2. 回溯法解旅行售货员问题时的解空间树时( C ) 。 A. 子集树 B. 深度优先生成树 C. 排序树 D. 广度优先生成树 \3. 下列算法中通常以自底向上的方式求解最…...
LeetCode 5:最长回文子串
1、题目描述 给你一个字符串 s,找到 s 中最长的 回文 子串。 示例 1: 输入:s "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。 示例 2: 输入:s "cbbd" 输出&#…...
2025年4月19日 记录大模型出现的计算问题
2025年4月19日 记录大模型出现的计算问题,用了四个大模型计算json的数值,3个错误,1个正确 问题 Class Train Val answer 2574 853 screen 5025 1959 blackBoard 7847 3445 teacher 8490 3228 stand…...
Python语法系列博客 · 第3期 数据结构入门(列表、元组、字典、集合)
上一期小练习解答(第2期回顾) ✅ 练习1:判断一个数是正数、负数还是零 num float(input("请输入一个数:")) if num > 0:print("正数") elif num < 0:print("负数") else:print("零&q…...
【对Linux文件权限的深入理解】
Linux文件权限 Linux下权限概念概念相关命令 Linux的文件权限管理1.文件访问者的分类(⼈)文件类型和访问权限(事物属性)文件权限值的表示方法⽂件访问权限的相关设置方法目录的权限(比较重要)粘滞位 Linux下…...
2025.04.19【Spider】| 蜘蛛图绘制技巧精解
Basic multi-group radar chart Start with a basic version, learn how to format your input dataset Radar chart with ggradar A Spider chart made using the ggradar package and a lot of customization.A work by Tuo Wang 文章目录 Basic multi-group radar chartRa…...
AtCoder ABC402 A~D 题解
A - CBC 题目大意 给点字符串 S S S,输出其中所有大写字母。 思路 根据题意模拟即可。 代码 #include <cstdio> #include <iostream> #include <algorithm> using namespace std;int main() {string s;cin >> s;for (int i 0; i &l…...
双指针算法(部分例题解析)
快慢指针左右指针 前言 双指针,它通过设置两个指针来遍历数据,从而实现高效的查找、排序、去重等操作。双指针算法的核心在于通过合理地移动这两个指针,减少不必要的遍历,提高算法的效率。 283. 移动零 - 力扣(LeetCo…...
PHP怎样判断浏览器类型和浏览器语言?
获取浏览器类型 $_SERVER[HTTP_USER_AGENT]包含了用户代理字符串,该字符串包含了浏览器、操作系统等信息。通过分析这个字符串,可以大致判断用户使用的浏览器类型。 <?phpfunction getBrowserType() {$userAgent $_SERVER[HTTP_USER_AGENT];$brow…...
利用 i2c 快速从 Interface 生成 Class
利用 i2c 快速从 Interface 生成 Class(支持 TS & ArkTS) 在日常 TypeScript 或 ArkTS 开发中,需要根据 interface 定义手动实现对应的 class,这既重复又容易出错。分享一个命令行工具 —— interface2class,简称…...
Vue+Notification 自定义消息通知组件 支持数据分页 实时更新
效果图: message.vue 消息组件 子组件 <template><div class"custom-notification"><div class"content"><span click"gotoMessageList(currentMessage.split()[1])">{{ currentMessage.split()[0] }}</…...
机械设计【】技术要求(实际使用)
目录 台板技术要求加工件技术要求钣金件技术要求工装型腔技术要求铝型材框架技术要求装配体技术要求焊接件技术要求1(外形尺寸≥1500mm)焊接件技术要求2(外形尺寸<1500mm)焊接件技术要求3(不锈钢)其他要求台板技术要求 1.台板下表面周边不倒角,其余未注倒角C0.5; 2.去…...
遨游科普:防爆平板是指什么?有哪些应用场景?
在石油开采平台的炽热甲板、化工园区的反应釜旁、矿井巷道的瓦斯弥漫区,总能看到一群手持特殊设备的作业人员。他们手中的平板并非寻常消费电子产品,而是专门应对极端环境的防爆平板。防爆平板承载着工业安全的核心诉求,其技术演进与应用拓展…...
【GCC】gcc编译学习
文章目录 1. 过程2. 常用命令选项3. 多个源文件编译参考内容 1. 过程 step1 : 预处理,生成.i文件(预处理器cpp) gcc -E [源文件] -o [生成的.i文件] gcc -E test.c -o test.istep2 : 汇编,将预处理后的文件转换为汇编语言生成.s…...
不确定与非单调推理的可信度方法
可信度方法是肖特里菲(E.H.Shortliffe)等人在确定性理论(Theoryof Comfirmation)的基础上,结合概率论等提出的一种不确定性推理方法,首先在专家系统MYCIN中得到了成功的应用。由于该方法比较直观、简单,而且效果也比较好,因而受到人们的重视。目前,许多专家系统都是基于…...
个人自用-导入安装Hexo
因为本人原来就有备份好的资料,所以重新安装起来会很方便,这个教程也只适合我自己用 但是所有的命令行都要在Git的命令行里面使用(因为我就是这样操作的) 1 安装Git Git的官网 Git git --version 这个是查看Git的版本 git --…...
2025年最新版 Git和Github的绑定方法,以及通过Git提交文件至Github的具体流程(详细版)
文章目录 Git和Github的绑定方法与如何上传至代码仓库一. 注册 GitHub 账号二.如何创建自己的代码仓库:1.登入Github账号,完成登入后会进入如下界面:2.点击下图中红色框选的按钮中的下拉列表3.选择New repostitory4.进入创建界面后࿰…...
Java 动态代理实现
Java 动态代理实现 一、JDK动态代理二、CGLIB动态代理三、动态代理的应用场景四、JDK代理与CGLIB代理比较 动态代理是Java中一种强大的技术,它允许在运行时创建代理对象,用于拦截对目标对象的方法调用。 一、JDK动态代理 JDK动态代理是Java标准库提供的代…...
从零开始搭建CLIP模型实现基于文本的图像检索
目录 CLIP原理简介代码实现参考链接 CLIP原理简介 论文链接,源码链接 CLIP模型由OpenAI在2021年提出,利用双Decoder(Dual Encoder)的架构来学习图像和文本之间的对应关系,是多模态大模型的开创之作,为后续许…...
健康养生之道
在快节奏的现代生活中,健康养生不再是中老年人的专属话题,越来越多的人开始意识到,合理的养生方式是保持良好身体状态和生活质量的关键。 饮食养生是健康的基石。遵循 “食物多样、谷类为主” 的原则,保证每天摄入足够的蔬菜、…...
基于autoware.1.14与gazebo联合仿真进行Hybrid A* 算法规划控制代价地图版
1.首先安装autoware ,大家可以以下一下博客进行安装,如果缺少库什么的直接问ai安装对应的库就行。ubuntu18.04安装Autoware1.14---GPU版 最全环境配置说明_autoware1.14安装教程-CSDN博客 安装成功后运行: source install/setup.bash roslau…...
5G基站设计难题:尺寸、重量、功耗和散热
设计5G基站的工程师们必须应对能源消耗、重量、尺寸和散热等问题,这些因素会影响到设计决策。 5G新空口(NR)采用了多用户大规模多输入多输出(MU-MIMO)技术、集成接入与回传(IAB)技术࿰…...
【leetcode100】分割等和子集
1、题目描述 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 输入:nums [1,5,11,5] 输出:true 解释:数组可以分割成 [1, 5, 5] 和 [11…...
sed命令笔记250419
sed命令笔记250419 sed(Stream Editor)是 Linux/Unix 系统中强大的流编辑器,主要用于对文本进行过滤和转换(按行处理)。它支持正则表达式,适合处理文本替换、删除、插入等操作。以下是 sed 的详细解析&…...
LinearLayout 线性布局
目录 Android LinearLayout(线性布局)简单介绍与使用示例 一、效果介绍 二、布局文件(XML) 三、Java 代码 四、程序运行效果 五、总结 在 Android 移动应用开发中,LinearLayout(线性布局)…...
System.in 详解
System.in 详解 System.in 是 Java 提供的标准输入流(InputStream 类型),默认关联键盘输入,通常用于从控制台读取用户输入。由于它是字节流(InputStream),直接使用较麻烦,一般会配合…...
JAVA IO、BIO、NIO、AIO及零拷贝
概述 IO,常写作 I/O,是 Input/Output 的简称,是 Input/Output 的简称,即输入/输出。通常指数据在内部存储器(内存)和外部存储器(硬盘、优盘等)或其他周边设备之间的输入和输出。 目前有三种 IO 共存。分别是 BIO、NIO 和 AIO。 BIO 全称 Block-IO 是一种同步且阻塞的…...
AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年4月19日第57弹
从今天开始,咱们还是暂时基于旧的模型进行预测,好了,废话不多说,按照老办法,重点8-9码定位,配合三胆下1或下2,杀1-2个和尾,再杀6-8个和值,可以做到100-300注左右。 (1)定…...
REST 架构详解:从概念到应用的全面剖析
REST(Representational State Transfer)即表述性状态转移,是一种用于构建网络应用程序的架构风格和设计理念,由计算机科学家罗伊・菲尔丁(Roy Fielding)在 2000 年提出。以下是关于它的详细介绍:…...
SICAR程序标准功能块 FB1512 “Robot_kuka_FB“
1、FB1512功能块截图 2、FB1512 功能块引脚功能定义 一、输入引脚 EN:使能输入,决定功能块是否执行。IDENTIFIER(WSTRING#"FW010_R01"):设备标识,指定关联的机器人设备。OPMODE_USER_INTERFACE_OUT:操作模式输入,定义机器人工作模式(如手动、自动),数据源…...
win安装软件
win安装软件 jdk安装 jdk安装 首先去官网下载适合系统版本的JDK,下载地址: http://www.oracle.com/technetwork/java/javase/downloads/index.html进入下载页面,如下图: 首先选择:Accept License Agreement单选按钮&…...
文本生成与采样策略 (Text Generation Sampling)
我们已经学习了如何构建和训练一个基于 Transformer Decoder-only 的语言模型。模型训练的目标是学习预测给定前缀下下一个 token 的概率分布。但是,训练完成后,我们如何利用这个模型来生成全新的、连贯的文本呢? 这就涉及到推理过程和采样策略。推理是模型投入实际使用、生…...
为什么 waitress 不支持 WebSocket?
waitress 是一个纯 Python 实现的 WSGI 服务器,主要用于生产环境部署 Python Web 应用。但它不支持 WebSocket 协议,因为它只实现了 WSGI 规范,而 WebSocket 协议需要 ASGI(Asynchronous Server Gateway Interface)支持…...
[C++] 高精度加法(作用 + 模板 + 例题)
高精度加法-目录 高精度加法用途高精度加法模板string转数位数组int 转数位数组(附加型知识点)高精度输出高精度加法函数大合集!!! 高精度加法用途 高精度加法通常用于加很大的数(真的很大, 超unsigned long long的那种). 高精度加法模板 注: 本篇数组下标0(x[0])存储的是该…...
python程序的流程
三大基本流程: 顺序结构、分支结构(又称为选择结构)、循环结构 分支结构又分为单分支、双分支、多分支 从键盘上输入一个数字,并输出奇数或偶数 #从键盘上输入一个数字,并输出奇数或偶数 nint(input("n ")…...
基于大模型的下肢静脉曲张全流程预测与诊疗方案研究报告
目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 1.3 研究方法与数据来源 二、下肢静脉曲张概述 2.1 定义与病理生理 2.2 风险因素与临床表现 2.3 诊断方法与现有治疗手段 三、大模型预测原理与构建 3.1 大模型技术简介 3.2 预测模型的数据收集与预处理 3.…...
Android 应用wifi direct连接通信实现
一. 打开Wi-Fi direct 1.必须启用Wi-Fi功能:在设备设置中开启Wi-Fi主开关(即使未连接路由器) 关闭冲突功能:若已开启「热点共享」或连接到其他Wi-Fi网络,需先关闭相关功能以避免硬件占. <!-- Wi-Fi Direct 核心权限…...
AI写代码工具分享:Cursor 高效使用攻略与实战秘籍
写在前面 在软件开发领域,效率和生产力是永恒的追求。集成开发环境(IDE)作为开发者的核心工具,其能力直接影响着开发速度和质量。近年来,人工智能(AI)的浪潮席卷了各个行业,编程领域也不例外。Cursor IDE 正是这股浪潮中的佼佼者,它以 AI-First 的理念,在广受欢迎的…...
关于viewpager常见的泄漏
在一个页面中 如果有用到tab,有需要进行fragment的切换,经常就看到了private var fragments arrayListOf<Fragment>()private fun initFragment() {arguments?.let {hopeToPosition it.getInt(IntentConstant.MAIN_PAGE_GO, 0)workoutType it.…...
vue3专题1------父组件中更改子组件的属性
理解 Vue 3 中父组件如何引用子组件的属性是一个很重要的概念。 这里涉及到 defineExpose 和 ref 这两个关键点。 方法:使用 defineExpose 在子组件中暴露属性,然后在父组件中使用 ref 获取子组件实例并访问暴露的属性。 下面我将详细解释这个过程&…...
代谢组数据分析(二十四):基于tidymass包从质谱原始数据到代谢物注释结果的实践指南
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据准备原始数据处理导入massDataset数据对象交互图数据探索更新样本表格信息峰分布情况缺失值情况数据清洗数据质量评估去除噪声代谢特征过滤立群样本填补缺失值数据标准化…...
Java使用javacv实现的多种音视频格式播放器
一、前言 最近写了一款图形界面版的音视频播放器,可以支持多种音视频格式的播放,比如MP4、avi、mkv、flv、MP3、ogg、wav等多种格式,非常好用,可以本地打开多种格式音视频。 二、实现 1.通过引入javacv相关依赖实现,如…...