通信协议 远程调用RPC
package com.nefu.rpc;public interface RPCprotocol {long versionID = 666;void mkdirs(String path);
}
这段代码定义了一个 Java 接口(interface)叫做 RPCprotocol,它主要用于描述一个远程过程调用(RPC)的协议。让我们逐行解释:
1.接口定义:
2.RPCprotocol 是一个接口,接口在 Java 中是一种规范,用于描述一组方法的集合,而不提供这些方法的具体实现。其他类可以实现这个接口,并提供方法的具体实现。
3.常量 versionID:
4.versionID 是一个接口中的常量,其值为 666。这个常量被用于标识协议的版本号。在某些情况下,这样的版本号可以用来确保通信的双方使用相同或兼容的协议版本。
5.抽象方法 mkdirs:
6.接口定义了一个抽象方法 mkdirs,该方法没有具体的实现。这个方法的目的是用于创建目录,接受一个字符串类型的参数 path,表示要创建的目录路径。综合起来,这个接口定义了一个协议,规定了远程调用的版本号以及远程调用的方法。实际的使用场景需要有一个实现了这个接口的类,该类提供了 mkdirs 方法的具体实现。其他系统的组件可以通过这个接口调用 mkdirs 方法,实现在远程系统上创建目录的功能。例如,可以有一个服务器实现这个接口,并在客户端通过远程调用执行相应的操作。
package com.nefu.rpc;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
import org.apache.hadoop.ipc.Server;import java.io.IOException;public class NamenodeServer implements RPCprotocol{public void mkdirs(String path){System.out.println("在服务端,创建路径" + path);}public static void main(String[] args) throws IOException{Server server = new RPC.Builder(new Configuration()) .setBindAddress("localhost") .setPort(9999) .setProtocol(RPCprotocol.class) .setInstance(new NamenodeServer()) .build();System.out.println("服务器开始工作 "); server.start(); }}
这段代码实现了一个简单的Hadoop RPC服务。让我们逐行解释:
1.导包语句:
2.import org.apache.hadoop.conf.Configuration;:导入Hadoop配置相关的类。
3.import org.apache.hadoop.ipc.RPC;:导入Hadoop IPC(Inter-Process Communication)相关的类。
4.import org.apache.hadoop.ipc.Server;:导入Hadoop IPC中的服务器类。
5.import java.io.IOException;:导入处理输入输出异常的类。
6.类定义:
7.public class NamenodeServer implements RPCprotocol:定义了一个名为 NamenodeServer 的类,该类实现了之前提到的 RPCprotocol 接口。
8.mkdirs 方法实现:
9.public void mkdirs(String path):实现了 RPCprotocol 接口中的 mkdirs 方法。在这个具体的实现中,它简单地在服务器端打印一条消息,指示在服务端创建了指定路径的目录。
10.main 方法:
11.public static void main(String[] args) throws IOException:主方法,是程序的入口点。
12.Server server = new RPC.Builder(new Configuration())...:创建了一个 Server 实例,通过 RPC.Builder 构建。指定了服务器的配置、绑定地址(localhost)、端口号(9999)、使用的协议(RPCprotocol.class),以及服务器实例(NamenodeServer 的一个实例)。
13.System.out.println("服务器开始工作 ");:打印一条消息,指示服务器开始工作。
14.server.start();:启动服务器,开始监听指定的端口,等待客户端的远程调用请求。综合起来,这段代码实现了一个简单的Hadoop RPC服务器,该服务器监听在本地地址(localhost)的9999端口上,并实现了RPCprotocol接口中的mkdirs方法。当客户端通过RPC调用mkdirs方法时,服务器会在控制台上打印一条消息,指示在服务端创建了指定路径的目录。
package com.nefu.rpc;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;import java.io.IOException;
import java.net.InetSocketAddress;public class HdfsClient {public static void main(String[] args) throws IOException {RPCprotocol client = RPC.getProxy(RPCprotocol.class, RPCprotocol.versionID, new InetSocketAddress("localhost", 9999), new Configuration());System.out.println("我是客户端");client.mkdirs("/input");}
}
这段代码实现了一个简单的Hadoop RPC客户端。让我们逐行解释:
1.导包语句:
2.import org.apache.hadoop.conf.Configuration;:导入Hadoop配置相关的类。
3.import org.apache.hadoop.ipc.RPC;:导入Hadoop IPC(Inter-Process Communication)相关的类。
4.import java.io.IOException;:导入处理输入输出异常的类。
5.import java.net.InetSocketAddress;:导入处理网络地址的类。
6.类定义:
7.public class HdfsClient:定义了一个名为 HdfsClient 的类。
8.main 方法实现:
9.public static void main(String[] args) throws IOException:主方法,是程序的入口点。
10.RPCprotocol client = RPC.getProxy(RPCprotocol.class, RPCprotocol.versionID, new InetSocketAddress("localhost", 9999), new Configuration());:通过 RPC.getProxy 方法创建了一个代理对象 client,该对象实现了 RPCprotocol 接口。这个代理对象将用于向服务器发起RPC调用。
11.System.out.println("我是客户端");:打印一条消息,指示这是客户端的输出。
12.client.mkdirs("/input");:通过代理对象调用远程服务器的 mkdirs 方法,传递了一个路径参数 "/input"。综合起来,这段代码实现了一个Hadoop RPC客户端,该客户端连接到在本地地址(localhost)的9999端口上运行的RPC服务器,并通过RPC调用向服务器发送了一个 mkdirs 请求,创建了名为 "/input" 的目录。客户端在控制台上输出了一条消息,指示它是客户端。
相关文章:
通信协议 远程调用RPC
1.通讯协议 所有的HDFS通讯协议都是建立在TCP/IP协议之上。 客户端通过一个可配置的TCP端口连接到Namenode,通过ClientProtocol协议与Namenode交 互。而Datanode使用DatanodeProtocol协议与Namenode交互。 一个远程过程调用(RPC)模型被抽象出来封装ClientProtoc…...

决策树 算法原理
决策树 算法原理 决策树的原理 决策树: 从训练数据中学习得出一个树状结构的模型 决策树属于判别模型 决策树是一种树状结构,通过做出一系列决策 (选择) 来对数据进行划分,这类似于针对一系列问题进行选择。 决策树的决策过程就是从根节点开始&#…...
Git全局设置命令---设置提交人邮箱
介绍 使用git命令设置提交人邮箱。 命令 git config --global user.email "xxxxxxxx.com"...

3DCAT+上汽奥迪:打造新零售汽车配置器实时云渲染解决方案
在 5G、云计算等技术飞速发展的加持下,云渲染技术迎来了突飞猛进的发展。在这样的背景下,3DCAT应运而生,成为了业内知名的实时云渲染服务商之一。 交互式3D实时云看车作为云渲染技术的一种使用场景,也逐步成为一种新的看车方式&a…...

物联网+AI智慧工地云平台源码(SaaS模式)
智慧工地云平台充分运用数字化技术,聚焦施工现场岗位一线,依托物联网、互联网、AI等技术,围绕施工现场管理的人、机、料、法、环五大维度,以及施工过程管理的进度、质量、安全三大体系为基础应用,实现全面高效的工程管…...
python打开相机,用鼠标左键框选矩形区域,支持一次框选多个矩形区域,通过鼠标右标清除上一次画的矩形。
方案一 import cv2# Global variables rectangles [] current_rectangle [] drawing False# Mouse callback function def mouse_callback(event, x, y, flags, param):global rectangles, current_rectangle, drawingif event cv2.EVENT_LBUTTONDOWN:drawing Truecurren…...
卷积之后通道数为什么变了
通道数增多与卷积之后得到的图像特征数量有关 卷积层的作用本来就是把输入中的特征分离出来变成新的 feature map,每一个输出通道就是一个卷积操作提取出来的一种特征。在此过程中ReLU激活起到过滤的作用,把负相关的特征点去掉,把正相关的留…...
ubuntu18.04安装opencv-4.5.5+opencv_contrib-4.5.5
一、安装opencv依赖 sudo apt-get install build-essential sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-d…...

实验3.5 路由器的单臂路由配置
实验3.5 路由器的单臂路由配置 一、任务描述二、任务分析三、具体要求四、实验拓扑五、任务实施1.SWA的基本配置2.RA的基本配置3.在RA上查看接口状态 六、任务验收七、任务小结 一、任务描述 某公司对部门划分了需VLAN之后,发现两个部门之间无法通信,但…...

nodejs微信小程序+python+PHP的基于大数据的家电销售分析系统设计与实现-计算机毕业设计推荐django
目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…...
Windows server flask
1、Windows server 通过python的flask执行命令 from flask import Flask, request, abort import subprocess from flask_basicauth import BasicAuth app Flask(__name__) # 获取url是进行账号密码认证,设置url的账号密码 app.config[BASIC_AUTH_USERNAME] 账号…...

maven工程的pom.xml文件中增加了依赖,但偶尔没有下载到本地仓库
maven工程pom.xml文件中的个别依赖没有下载到本地maven仓库。以前没有遇到这种情况,今天就遇到了这个问题,把解决过程记录下来。 我在eclipse中编辑maven工程的pom.xml文件,增加对mybatis的依赖,但保存文件后,依赖的j…...

Navicat 技术指引 | 适用于 GaussDB 分布式的用户/权限功能
Navicat Premium(16.3.3 Windows 版或以上)正式支持 GaussDB 分布式数据库。GaussDB 分布式模式更适合对系统可用性和数据处理能力要求较高的场景。Navicat 工具不仅提供可视化数据查看和编辑功能,还提供强大的高阶功能(如模型、结…...
基于支持向量机SVM的新鲜度等级预测,基于自适应粒子群优化长短期神经网络的新鲜度等级预测
目录 背影 支持向量机SVM的详细原理 SVM的定义 SVM理论 粒子群算法原理 SVM应用实例,基于支持向量机SVM的新鲜度等级预测,基于自适应粒子群优化长短期神经网络的新鲜度等级预测 代码 结果分析 展望 完整代码:基于支持向量机SVM的新鲜度等级预测,基于自适应粒子群优化长短期…...

麒麟系统系统添加路由
系统添加路由 一、路由的解释: 路由工作在OSI参考模型第三层——网络层的数据包转发设备(TCP/IP)路由器根据收到数据包中的网络层地址以及路由器内部维护的路由表决定输出端口以及下一跳地址,并且重写链路层数据包头实现转发数据…...

考研真题数据结构
【2021年山西大学真题】将二叉树中所有非终端结点的左右子树交换位置,可以得到原二叉树的 镜像二叉树,如图。假设二叉树的存储形式为(lchild,data,rchild),给出求镜像二叉树的算法: ࿰…...

python爬取 HTTP_2 网站超时问题的解决方案
问题背景 在进行网络数据爬取时,使用 Python 程序访问支持 HTTP/2 协议的网站时,有时会遇到超时问题。这可能会导致数据获取不完整,影响爬虫程序的正常运行。 问题描述 在实际操作中,当使用 Python 编写的爬虫程序访问支持 HTT…...
学会用bash在linux写脚本 (二)
接着上一章继续 数值的对比 判断语句 循环语句 22.5 比较、对比、判断 在写脚本时,有时需要做一些比较,例如,两个数字谁大谁小,两个字符串是否相同等。 做对比的表达式有[]、[[]]、test,其中[]和 test这两种表达式的…...

QML中Dialog获取close与open状态
1.新建MyDialog.qml import QtQuick 2.15import QtQuick.Dialogs 1.2Dialog {id: rootvisible: falsetitle: qsTr("弹出对话框")width: 250height: 200} 2.main.qml中调用MyDialog import QtQuick 2.15 import QtQuick.Window 2.15 import QtQuick.Controls 2.15…...

用C语言实现队列的顺序结构
用C语言实现队列的初始化、队列的判空操作、入队操作、出队运算、取队头元素运算、顺序打印队列。 #include<stdio.h> #define QueueSize 100 typedef char ElemType; typedef struct//队列结构体 {ElemType data[QueueSize];//保存队中元素int front, rear;//队头和队尾…...

XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...

《Docker》架构
文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...
鸿蒙(HarmonyOS5)实现跳一跳小游戏
下面我将介绍如何使用鸿蒙的ArkUI框架,实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...