Microsoft Word - Broker.doc

Similar documents

Swing-02.pdf

1.3 最终效果图 : 2 内部布局代码 2.1 按键按钮代码 // 初始化计算器上键的按钮, 将键放在一个画板内 JPanel keypanel = new JPanel(); // 用网格布局器,4 行,5 列的网格, 网格之间的水平方向间隔为 3 个象素, 垂直方向间隔为 3 个象素 keyp

EJB-Programming-4-cn.doc

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj

untitled

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

Chapter 9: Objects and Classes

JavaIO.PDF

《大话设计模式》第一章

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

chp6.ppt

untitled

PowerPoint 簡報

untitled

java2d-4.PDF

untitled

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款

untitled

untitled

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

Microsoft Word - 01.DOC

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

Chapter 9: Objects and Classes

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌

CC213

EJB-Programming-3.PDF

图形学 Project 2 要求 任意两个多边形, 求出其相交的区域 使用说明 例 1 第一步, 与 Project 1 画多边形的方法相同, 画一个多边形 ; 第二步, 单击 INTERSECT WITH, 随后画出第二个多边形 ; 第三步, 单击 FILL 进行填充

Chapter 9: Objects and Classes

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

3.1 num = 3 ch = 'C' 2

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9

Java

Microsoft Word - ch04三校.doc

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

团 学 要 闻 我 校 召 开 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 3 月 17 日, 我 校 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 在 行 政 办 公 楼 五 楼 会 议 室 举 行, 校 团 委 委 员 各 院 ( 系 ) 团 委 书 记 校 学 生

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF

untitled

(6) 要 求 付 款 管 理 员 从 预 订 表 中 查 询 距 预 订 的 会 议 时 间 两 周 内 的 预 定, 根 据 客 户 记 录 给 满 足 条 件 的 客 户 发 送 支 付 余 款 要 求 (7) 支 付 余 款 管 理 员 收 到 客 户 余 款 支 付 的 通 知 后, 检

1.5招募说明书(草案)

[Short Essay:] 1. (5 points) Use state-of-memory diagram to describe the differences between x and y declared as follows: double[] x = new double[4];

基于CDIO一体化理念的课程教学大纲设计

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

第一章

PowerPoint 簡報

<4D F736F F D20AC4FBDBDA4FBB67DA96CAABA2DA743A67EAFC5AAA95FA7B9BD5A5F2E646F63>

ex

使用MapReduce读取XML文件

第3章.doc

全国计算机技术与软件专业技术资格(水平)考试

软件工程文档编制

壹 前言 一 研究動機 現今社會大眾近視比例逐年增加, 原因在於電腦不當且過度使用, 說其根本便是因為並無注意時間因此導致眼睛無法負荷, 然而使用者並非要使用如此長的時間, 或者家長規定小孩的電腦使用限制時間, 但卻沒有輔助的工具來提醒休息時間, 因此我們想了這個程式來幫助改善這個問題 二 研究目的

javaexample-02.pdf

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

untitled

2 Java 语 言 程 序 设 计 教 程 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难

三种方法实现Hadoop(MapReduce)全局排序(1)

拦截器(Interceptor)的学习

ZW1.PDF

FileMaker 16 ODBC 和 JDBC 指南

<4D F736F F D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF>

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

建模与图形思考

LEFT, RIGHT // 左 // 右 (2) 当图片移动后, 按钮的坐标发生改变, 此操作通过 setloca tion() 方法实现 setlocation() 方法是从 Component 类继承的, 其定义如下 : public void setlocation(int x, int y

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

epub83-1

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

新版 明解C++入門編

untitled

JBuilder Weblogic

设计模式 Design Patterns

Topic

FileMaker 15 ODBC 和 JDBC 指南

ebook39-6

Go构建日请求千亿微服务最佳实践的副本

C 1

Microsoft Word - 新1-12.doc

Microsoft Word - Learn Objective-C.doc

untitled

untitled

输入 project name 选择完成

建模与图形思考

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B

Microsoft PowerPoint - 09Future

第一章 章标题-F2 上空24,下空24

Guava学习之Resources

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

概述

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

C/C++语言 - C/C++数据

ebook39-5

在 ongodb 中实现强事务

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

Transcription:

Broker 模式 采用 broker 模式对分布式计算进行简单模拟 系统在一个进程内模拟分布式环境, 因此不涉及网络编程和进程间通信,Broker 通过本地函数调用的方式实现 request 和 response 的转发 采用 broker 模式对分布式计算进行简单的模拟, 要求如下 : 设计四个 server, 一个 server 接收两个整数, 求和并返回结果, 一个 server 接收两个整数, 求差并返回结果, 一个 server 接收两个整数, 求积并返回结果, 一个 server 接收两个整数, 求商并返回结果 客户端通过 ID 访问所需的服务, 即 : 将服务 ID 和将两个整数发送给 Broker, 由 broker 找到正确的服务器并将整数发送给相应的服务器, 服务器计算结果, 再将结果交给 broker 转发给客户, 客户显示结果 搭建 Broker 系统框架 按照 Broker 模式的要求, 实现 Client,Broker,Server 三种组件 ( 设计为三个 class), 不要求设计 Client-side Proxy 和 Server-side Proxy 必须实现如下功能 : Server 可以注册到 Broker( 使用 ID 号 ) Broker 为 Server 提供注册服务 Broker 可将 client 的 request 转发到正确的 server Broker 可见 server 的 response 转发到 client main 函数实现如下功能 : 创建一个 broker 对象 创建两个 server 对象并注册到 broker 创建一个 client 对象 接收用户输入, 由 Client 发起 request, 并等待 response 输出 response 详细实现 : Broker.java import java.util.vector; public class Broker // 记录 server 的 ID 号, 从 0 递增 private int serverid; // 将所有注册的 server 保存到 vector 容器内 private Vector<Server> servervector;

public Broker() serverid = 0; servervector = new Vector<Server>(); 号 // 为 server 提供注册 broker 的功能, 为每个 server 设置一个从 0 递增的 ID public void Register(Server s) servervector.add(serverid, s); serverid++; // broker 根据 server 的 ID 号获得 response, 以便转发给客户端显示结果 public int GetResponseByRequestId(int x, int y, int id) Server s = (Server) servervector.get(id); s.getrequest(x, y); return s.setresponse(); Server.java public class Server private int firstnum; private int secondnum; private int serverid; private int rusult; // 每次新增 server, 都要给他一个 ID public Server(int id) this.serverid = id; // server 获得 request, 即获取传入的两个整数 public void GetRequest(int num1, int num2) this.firstnum = num1; this.secondnum = num2;

// 根据 ID 号调用对应的服务计算结果, 得到 response public int SetResponse() if (serverid == 0) rusult = firstnum + secondnum; else if(serverid == 1) rusult = firstnum - secondnum; else if(serverid == 2) rusult = firstnum * secondnum; else rusult = firstnum / secondnum; Client.java import java.awt.gridlayout; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.text.decimalformat; import javax.swing.jbutton; import javax.swing.jcombobox; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.joptionpane; import javax.swing.jpanel; import javax.swing.jtextfield;

public class Client extends JFrame implements ActionListener /** * */ private static final long serialversionuid = 1L; private int firstnum; private int secondnum; private int serverid; private int rusult; private Broker broker; private JButton submitbtn; private JButton clearbtn; private JTextField firtinput; private JTextField secinput; private JTextField displayresult; // 提供加 减 乘 除四种服务供用户选择 private String[] item = "addition", "subtraction", "multiplication", "division" ; private JComboBox<String> combobox = new JComboBox<String>(item); public Client(Broker b) this.settitle("broker Pattern"); broker = b; // 添加各种组件并注册相应的监听器 setlayout(new GridLayout(5, 1)); JPanel panel = new JPanel(); panel.setlayout(new GridLayout(1, 2)); JPanel panel2 = new JPanel(); panel2.setlayout(new GridLayout(1, 2)); JLabel label1 = new JLabel("First Number"); firtinput = new JTextField(); JLabel label2 = new JLabel("Second Number"); secinput = new JTextField();

panel.add(label1); panel.add(firtinput); panel2.add(label2); panel2.add(secinput); JPanel panel3 = new JPanel(); panel3.setlayout(new GridLayout(1, 2)); JLabel label3 = new JLabel("Server"); panel3.add(label3); panel3.add(combobox); JPanel panel4 = new JPanel(); panel4.setlayout(new GridLayout(1, 2)); submitbtn = new JButton("Sunmit"); clearbtn = new JButton("Clear"); submitbtn.addactionlistener(this); clearbtn.addactionlistener(this); panel4.add(submitbtn); panel4.add(clearbtn); JPanel panel5 = new JPanel(); panel5.setlayout(new GridLayout(1, 2)); JLabel label5 = new JLabel("Result:"); displayresult = new JTextField(); displayresult.seteditable(false); panel5.add(label5); panel5.add(displayresult); add(panel); add(panel2); add(panel3); add(panel4); add(panel5); // 实现监听事件处理程序 public void actionperformed(actionevent e)

if (e.getactioncommand() == "Sunmit") try int a = Integer.parseInt(firtInput.getText().trim()); int b = Integer.parseInt(secInput.getText().trim()); // 发送请求, 包含两个整数以及服务 ID SetRequest(a, b, combobox.getselectedindex()); // 获得由 broker 转发的 response 并显示到客户端 int out = GetResponse(); displayresult.settext(integer.tostring(out)); catch (Exception ex) JOptionPane.showMessageDialog(null, "Your input should be a type of integer!"); else if (e.getactioncommand() == "Clear") // 清空输入框 firtinput.settext(""); secinput.settext(""); displayresult.settext(""); // 添加 request, 发送两个整数以及 server 的 ID 号 public void SetRequest(int num1, int num2, int id) this.firstnum = num1; this.secondnum = num2; this.serverid = id; // 获取 broker 转发的 response, 记录计算结果 public int GetResponse() rusult = broker.getresponsebyrequestid(firstnum, secondnum, serverid);

public static void main(string[] args) Broker b = new Broker(); final Client client = new Client(b); // totalserver 记录提供的服务总数 int totalserver = client.item.length; // 为每个 server 注册 broker,id 号依次为 0 到 maxid for (int i = 0; i < totalserver; i++) Server server = new Server(i); b.register(server); client.setvisible(true); client.setsize(300, 200); // client.pack(); // 自动调节窗口大小 client.setdefaultcloseoperation(exit_on_close); 运行效果 :