CMU 95-702 Project 2 代写

95 – 702 信息系统管理分布式系统 Distributed Systems for ISM 项目2 客户端 – 服务器计算 Client-Server Computing 五个任务 :checkered_flag: 向Canvas提交一个名为Your_Last_Name_First_Name_Project2.pdf的单个PDF文件,以及一个包含以下五个IntelliJ项目(任务0至4)的单个zip文件。单个PDF将包含您对标记有方格旗的问题的回答。重要的是,您要清晰地标记每个答案,并提供下面提供的标签。同样重要的是,要准备好展示您的工作代码,以防我们需要验证您的提交。确保在PDF提交的顶部提供您的姓名和电子邮件地址。五个IntelliJ项目将作为五个zip文件提交,每个文件将是任务0、1、2、3和4的整个IntelliJ项目的zip。除任务1外,每个IntelliJ项目都将包含一个客户端和一个服务器。任务1将包含一个客户端、一个服务器和一个中间的恶意玩家。对于每个项目,压缩整个项目,您需要在IntelliJ中使用“File->Export Project->To Zip”。当您完成所有工作后,将一个PDF和五个项目zip文件压缩到一个大的zip文件中进行提交。将此最终文件命名为your_andrew_id.zip。 学习目标: 我们的第一个目标是让您能够使用用户数据报协议(UDP)。UDP用于许多互联网应用程序。域名服务(DNS)和动态主机配置协议(DHCP)都使用UDP。大多数视频和音频流量使用UDP。在线游戏和IP语音(VoIP)使用UDP。当我们需要高性能并且不介意偶尔丢失数据包时,我们使用UDP。另一方面,TCP也被广泛使用。它努力确保在传输过程中不会丢失任何一点信息。超文本传输协议(HTTP)使用TCP。在这个项目中我们不使用TCP。我们的第二个目标是了解中间恶意玩家的影响。我们的第三个目标是让您了解远程过程调用(RPC)提供的抽象。我们通过要求您使用代理设计并隐藏通信代码并将其与应用程序代码分开来实现这一点。RPC已经使用了四十年,是许多分布式系统的基础。我们的第四个目标是学习如何分发独立应用程序。我们使用一个简单的神经网络作为我们的应用程序。我们的意图不是在分布式系统课程中研究神经网络。但是你们中的一些人可能决定深入研究神经网络并将此应用程序作为起点。可选地,您可以使用大型语言模型(基于神经网络),如ChatGPT或Copilot,来创建您的一些代码。任务0、任务1和任务4必须在没有大型语言模型帮助的情况下完成。考试问题将具体询问关于这三个任务的代码。虽然您可以使用AI工具完成这三个任务,但这完全是可选的。也会有关于这些任务的问题,但这些问题将更具通用性(因为不同的学生可能使用不同的技术来编码这些任务)。 提交注意事项: 当您被要求提交Java代码(在单个pdf上)时,它应该有文档说明。如果代码没有良好的文档说明,将扣除分数。每个重要的代码块都将包含一个注释,描述该代码块的用途。请参阅Canvas/Home/Documentation以获取良好和不良文档的示例。 评分标准 请参阅Canvas上的一般课程评分标准。我们将使用此作业的特定未发布评分标准,但一般评分标准提供了关于此作业如何评估的大致指导。 一些简化: 在接下来的所有内容中,我们关注的是设计服务器来处理一次一个客户端。我们不探讨围绕多个同时访问者的重要问题。如果您编写一个多线程服务器来同时处理多个访问者,那很好,但不是必需的。它不会获得额外的学分。此外,对于接下来的所有内容,我们假设服务器在客户端运行之前运行。如果您想处理客户端首先运行而没有运行服务器的情况,那很好,但不会获得额外的学分。在任务1中,我们假设服务器在恶意玩家之前运行,恶意玩家在客户端之前运行。在这个作业中,您不需要关心数据验证。您可以假设用户输入的数据格式正确。一般来说,如果这些要求没有明确要求某个功能,那么您不需要提供该功能。不会为额外的功能授予额外的分数。 引用您的来源 如果您使用任何不属于您的代码(包括来自大型语言模型的代码),您需要清楚地引用来源 – 在代码上方包含完整的URL并将其放在复制的代码上方。如果您使用大型语言模型生成代码,请确保说明。请注意引用您的来源。如果您提交的代码不是您自己创建的并且您没有包含适当的引用,那么这将被报告为学术违规。 任务0介绍UDP。将IntelliJ项目命名为“Project2Task0”。 在任务0中,您将对EchoServerUDP.java和EchoClientUDP.java进行一些修改。请注意,这两个程序是标准的Java,我们不需要在IntelliJ中构建Web应用程序。这两个程序都将放在同一个IntelliJ项目中。来自Coulouris文本的EchoServerUDP.java 请注意DatagramSocket和DatagramPacket之间的区别。服务器使用DatagramPacket从客户端接收数据(在request对象中)。并且它使用DatagramPacket将数据发送回客户端(在reply对象中)。DatagramPacket始终基于字节数组。因此,要在DatagramPacket中发送消息,我们必须首先将消息转换为字节数组。要从DatagramPacket接收消息,我们必须将字节数组转换为字符串消息(如果我们期望的是字符串消息)。请注意下面客户端如何做同样的事情。客户端想要发送字符串消息。因此,它从字符串(变量m)中提取字节数组。然后我们使用m来构建DatagramPacket。当客户端接收回复时,方法reply.getData()返回字节数组 – 我们用它来构建字符串对象。来自Coulouris文本的EchoClientUDP.java 任务1说明了对UDP的恶意玩家中间攻击。将IntelliJ项目命名为“Project2Task1”。 在任务1中,您将尝试恶意玩家中间攻击。这个恶意玩家不仅仅对窃听客户端和服务器之间的对话感兴趣。它是一个主动的恶意玩家。您可能想通过先处理一个被动的恶意玩家开始 – 一个只窃听并将消息传递给服务器,然后再传递回客户端的玩家。我们将在一个项目中有三个UDP程序。将您的恶意玩家命名为EavesdropperUDP.java。您需要按照下面的描述设计并编写EavesdropperUDP.java。首先,运行在任务0中修改后的EchoServerUDP.java。EchoServerUDP将提示您输入其端口。为EchoServerUDP输入端口6789进行监听。其次,运行EavesdropperUDP.java。EavesdropperUDP将声明它正在运行,并会询问您两个端口。一个端口将是EavesdropperUDP.java将监听的端口,另一个端口将是服务器的端口号,Eavesdropper.java将伪装成该服务器。我们希望Eavesdropper.java在其控制台上显示(通过它的控制台)所有通过它的消息。我们希望它窃听线路。它将在端口6798上监听,希望一个愚蠢的客户端会犯转录错误。第三,当您运行EchoClientUDP.java时,为其提供正确的端口(真正服务器的端口)或Eavesdropper正在监听的端口。也就是说,它将与6789或6798一起工作。Eavesdropper是一个主动攻击者。如果客户端发送包含单词“like”的字符串,窃听者将用单词“dislike”替换“like”。如果“like”作为另一个单词的子字符串包含在内,例如“dislike”,窃听者将不会理会“like”这个字符串。窃听者只需要将单词“like”的第一次出现替换为单词“dislike”,并且它将不理会服务器的响应。换句话说,当它从客户端收到“like”时,它将“dislike”发送到服务器,然后不理会服务器的响应。客户端将收到“dislike”。如果客户端发送消息“halt!”,则服务器将像往常一样响应,然后停止执行。客户端在收到服务器的消息后将停止。我们的恶意玩家将永远运行。并且它将其看到的所有内容显示到其控制台。:checkered_flag:在您的单个pdf上,复制您记录的EavesdropperUDP.java程序。 :checkered_flag:截取显示您的客户端、服务器和窃听者控制台的屏幕截图。该截图将显示客户端发送的几行数据以及服务器对“halt!”请求的响应。它还将显示窃听者控制台 – 显示客户端和服务器之间的整个交互。在您的单个pdf上,将此屏幕截图标记为“Project2Task1ThreeConsoles”。确保显示客户端使用端口6789(正确的服务器)和6798(恶意玩家)。这个想法是提供屏幕截图,证明客户端可以与两个服务器一起工作。您还需要显示单词“like”被替换为单词“dislike”**在其余任务(任务2至4)中,我们没有为客户端提供停止服务器的能力。我们只在任务0和1中这样做。在其余任务中,服务器将一直运行。在其余任务中,我们不使用窃听者。 任务2说明了使用UDP的代理设计。将IntelliJ项目命名为“Project2Task2”。 对“EchoServerUDP.java”和“EchoClientUDP.java”进行以下修改: 注意:UDP消息由字节数组组成。您需要将一个整数放入一个四字节(32位)的字节数组中,然后再发送。在接收时,您需要从字节数组中提取一个整数。您可以使用来自外部源的代码来帮助您完成此操作。但请注意使用清晰的URL引用您的来源。另一种方法是只传输包含字符串数据的字节数组。您可以使用任何一种方法。:checkered_flag:在您的单个pdf上,复制您的客户端并清楚地标记为“Project2Task2Client”。:checkered_flag:在您的单个pdf上,复制您的服务器并清楚地标记为“Project2Task2Server”。:checkered_flag:截取您的客户端控制台屏幕的屏幕截图。它将包括五个整数输入(1,2,-3,4和5),并显示从服务器返回的和。它还将显示客户端被停止,然后重新运行第二次,输入(6,7,-8,9和10),以及客户端对用户“halt!”请求的响应。在您的单个pdf上,将此屏幕截图标记为“Project2Task2ClientConsole”。

CMU 95-702 Project 2 代写 Read More »

CMU 95702 Project 1

95 – 702 分布式系统代写 Distributed Systems 这个项目有五个目标:第一,介绍 IntelliJ 和 TomEE。你已经对这些有了一些实践。在这个作业中,你将构建几个 Web 应用程序以获得更多经验。第二,构建你的第一套分布式系统。这是两个使用 Servlet 和 Java Server Pages 的小型 Web 应用程序。第三,介绍网页抓取、API 处理和 JSON 记录。第四,如果你之前没有使用过,将介绍 MVC 模式。第五,与本学期的所有项目一样,你应该反思解决方案的功能和非功能特性(例如安全性、可扩展性、故障处理、互操作性)。期末考试将有关于这些特性的问题。你应该能够展示对课程内容的细致理解,并能够解释与潜在实际应用相关的技术方面。对于每个项目任务,都需要软件文档。你编写的软件(Java 文件等)必须包含注释,描述每个重要代码段的意图。如果代码没有良好的文档记录,将扣分。阅读课程表(第 1 节课)上提供的与文档相关的链接,以了解预期的内容。确保查阅评分标准以了解评分细节。并且第六,可选地,你可以在任务 3 中使用 ChatGPT 和 Copilot 来创建一些代码。任务 1 和任务 2 必须自己完成。考试中将有关于所有三个任务中代码的具体问题。虽然你可以使用 AI 工具来帮助完成任务 3,但这完全是可选的。也会有关于此代码的问题。同时注意更一般的问题,例如,什么是 MVC 以及使用它的好处是什么?网页抓取意味着什么? 交付物 有两部分需要交付,全部压缩成一个文件上传,文件名为 Project1_andrewID.zip,其中“andrewID”替换为你的实际 andrew ID: 任务 1 使用 IntelliJ 项目名称:Project1Task1 创建一个 index.jsp

CMU 95702 Project 1 Read More »

CSC373 F24 作业1

截止日期:9月30日,午夜 指南:(请完整阅读!) 问题1.(11分) 在这个问题中,你将得到实线上的n个区间I1 = [a1, b1],…,In = [an, bn]作为输入。每个区间$I_{j}$由两个数$a_{j}$和$b_{j}$指定。我们假设对于所有j,$a_{j} < b_{j}$。我们还假设没有两个区间共享它们的任何端点,即所有的数$a_{1},…,a_{n},b_{1},…,b_{n}$都是不同的。这些区间在两个数组A[1…n]和B[1…n]中给出,其中$A[j] = a_{j}$,$B[j] = b_{j}$。 我们说区间$I_{j}$和$I_{k}$交叉,如果$I_{j} \cap I_{k} ≠ \emptyset$,但两个区间都不包含另一个。换句话说,如果$I_{k}$的恰好一个端点包含在$I_{j}$中,那么$I_{j}$和$I_{k}$交叉。 部分a.(3分)假设存在某个数x,使得对于所有j,$a_{j} < x$,并且对于所有j,$b_{j} > x$。给出一个在最坏情况下时间复杂度为$O(n log n)$的算法来计算满足$j < k$且$I_{j}$和$I_{k}$交叉的对数。证明你的答案。 提示:使用课堂上的一种分治算法。 部分b.(8分)给出一个分治算法来计算满足$j < k$且$I_{j}$和$I_{k}$交叉的对数,而不使用前一个子问题中的假设。你的算法应在最坏情况下的时间复杂度为$O(n log ^{2} n)$。证明你的答案。 部分c.(7分)(加分问题 – 可选)。修改你的算法,使其在最坏情况下的时间复杂度为$O(n log n)$。证明你的答案。 提示:尝试仅调用一次时间复杂度为$O(n log n)$的任何子例程,而不是递归调用。 问题2.(19分) 在这个问题中,你需要为k家杂货店确定位置,以服务于街道上的n所房屋。假设我们将街道建模为从0到1的区间,并且房屋的位置由实数$x_{1},…,x_{n} \in [0,1]$给出。你可以假设$x_{1} < x_{2}… < x_{n}$,即位置是从左到右排序的,并且它们以数组$x[1…n]$的形式提供给你,其中$x[i] = x_{i}$。每周,每个房屋中的一个人会前往最近的杂货店购买食品杂货。你的目标是计算$y_{1},…,y_{k}

CSC373 F24 作业1 Read More »

CSC373 F24: Assignment 1

Due: September 30, by midnight Guidelines: (read fully!!) Question 1. (11 marks) In this question you are given as input n intervals I1 = [a1, b1],…, In = [an, bn] on the real line. Each intervals $I_{j}$ is specified by the two numbers $a_{j}$ nd $b_{j}$. We assume that $a_{j}<b_{j}$ for all j. We also

CSC373 F24: Assignment 1 Read More »

COMP5415 Multimedia Design and Authoring

2025 单元信息本单元提供创建交互式和有效多媒体产品的原则和实践。它概述了不同媒体平台的完整范围以及多媒体制作中使用的当前创作技术。涵盖的关键主题包括:支持多媒体技术;多媒体设计问题;交互式 2D 和 3D 计算机动画;多媒体对象建模和渲染;多媒体脚本编程;多媒体应用的后期制作和交付。 单元详情和规则管理学院或大学学院:工程 详情 学习水平 研究生 学术单位 计算机科学 学分 6 注册规则 先决条件: 无 共修条件: 无 禁止条件: COMP4415 假定知识: 具有 SOFT2412 或 COMP9103 或 COMP9003(或来自不同机构的同等课程)所涵盖的软件开发经验 学习成果在完成本单元后,您应该能够:LO1. 使用当代开发程序创建交互式多媒体应用程序LO2. 阐明不同多媒体构建块之间的关系以及相关设计问题LO3. 为各种多媒体应用操作和解释各种数字媒体LO4. 展示在关键多媒体创作程序的使用能力。 单元可用性本节列出了单元可用的学期、出勤模式和地点。每个单元可用性都有一个单元大纲,它为您提供有关单元的信息,包括评估细节和每周活动的时间表。大纲在教学第一天前 2 周发布。您可以查看以前的大纲作为单元细节的指南。 本年度未来年度往年 学期 出勤模式(MoA) 地点 大纲(Outline) 2024 年第二学期 正常晚间 Camperdown / Darlington, Sydney 查看(View) 2025 年第二学期 正常晚间 Camperdown / Darlington,

COMP5415 Multimedia Design and Authoring Read More »

MECH4305 PROBLEM SET 1

傅里叶分析与卷积代写截止日期第 3 周周五下午 5 点(9 月 27 日)提交说明请在截止日期前使用提供的模板在 Moodle 上提交您的问题集。在您的提交中,您需要展示完整的工作过程(手写或打字),说明任何假设,并包括任何讨论、图表和任何 MATLAB 代码的副本。问题 1“旅居者” 于 1997 年作为 “探路者” 任务的一部分登陆火星,是第一辆在地球以外行星上运行的火星车。在部署之前,喷气推进实验室(JPL)环境测试实验室对其进行了振动测试,以确定 “旅居者” 是否能够承受其在任务中预期遇到的动态力。该火星车可以建模为图 1 所示的单自由度系统,质量为 11.5 千克,等效刚度为 126 牛 / 米。在测试的第一阶段,“旅居者” 受到图 2 所示的重复力(对所有 t 都是周期性的),其中给出了每个力的一个周期。图 1.对于每个力(力 A 和 B,分别),完成以下操作:a) 推导该力的傅里叶级数表示。b) 绘制原始力(如图 2 所示)与您从 t = -20 到 20 秒的傅里叶级数表示的力的对比图,n = 100 项。c) 从图 1 所示系统的运动方程开始,推导火星车的稳态响应。d) 绘制火星车从 t

MECH4305 PROBLEM SET 1 Read More »

FIT2014 代写 Assignment 2

截止日期:2024年10月4日星期五晚上11:55 在这些练习中,你将: – 使用lex实现词法分析器(问题3); – 使用lex和yacc实现解析器(问题1 – 6); – 编程实现图灵机(问题7); – 通过应用相关方法进行计算,了解量子电路和量子寄存器的一些方面(问题2 – 6); – 练习与泵引理和上下文无关语言相关的技能(问题8)。 问题7的解决方案必须在模拟器Tuatara中实现。提供的版本是2.1,在Moodle的第8周可以找到,文件名是tuatara – monash – 2.1.jar。必须使用这个版本,而不是从互联网上下载的其他版本。不要解压此文件,必须直接使用Java运行时运行。 如何管理此作业 指令 指令与作业1大致相同,只是一些文件名发生了变化,现在每个问题都有自己的目录。要开始处理作业,请从Moodle下载工作台asgn2.zip。创建一个新的Ed工作区并上传此文件,让Ed自动解压它。编辑student – id文件以包含你的姓名和学生ID。参考实验0,以提醒如何执行这些任务。 打开一个终端并切换到asgn2目录。你会发现该目录中已经有另外四个文件:plus – times – power.l,plus – times – power.y,quant.h和prob6.awk。你不会直接修改这些文件;你将制作前两个文件的副本并修改副本,而quant.h和prob6.awk必须保持不变(尽管在其他目录中拥有它们的副本是可以的)。 原始目录结构和文件位置必须保留。对于每个问题,你提交的文件必须在相应的子目录中,即问题x的文件在problemx子目录中。 每个这些问题子目录都包含具有所需文件名的空文件。这些文件必须分别被你编写的文件替换,如上文所述。在提交之前,请检查这些空文件中的每一个确实被你自己的文件替换。 要提交你的工作,请通过在文件管理器面板中单击“下载全部”将Ed工作区下载为zip文件。“下载全部”选项保留zip文件的目录结构,这有助于标记过程。你必须在上述给定的截止日期之前将此zip文件提交到Moodle。 一些关于Lex和Yacc的有用参考: – T. Niemann,Lex & Yacc Tutorial,http://epaperpress.com/lexandyacc/ – Doug Brown,John Levine,和Tony Mason,lex and yacc(第2版),O’Reilly,2012。 – lex和yacc的手册页。 我们将用一种基于简单算术表达式的语言PLUS – TIMES – POWER来说明这些程序的使用,该语言涉及非负整数,仅使用加法,乘法和幂运算。然后,你将在与量子计算相关的一些语言上使用lex和yacc。 PLUS – TIMES – POWER PLUS – TIMES – POWER语言由涉及加法,乘法和非负整数幂的表达式组成,没有任何括号(除了函数Power所需的括号)。示例表达式包括:

FIT2014 代写 Assignment 2 Read More »

MIPS 汇编

问题描述: 要求:编写一个 MIPS 程序的机器代码,该程序修改倒数第二条指令。使其不是将与相加并将结果放入,而是将与相加并将结果放入(即寄存器中值对应的寄存器)。 输入示例:输入寄存器 1 的值:19输入寄存器 2 的值:0xAAAA5555 运行结果:运行 MIPS 程序。MIPS 程序正常完成

MIPS 汇编 Read More »

MIPS assembly

Problem Description: Requirements:Write a MIPS program in machine code that modifies the second last instruction. Instead of adding $$0$2$0$, it will add $$0$2$x$1$). Input Example:Enter value for register 1: 19Enter value for register 2: 0xAAAA5555 Running Result:Running MIPS program.MIPS program completed normally. $$01 = 0×00000013$, $$05 = 0×00029820$, $$02 = 0xaaaa5555$, $$06 = 0×00000000$, $$03

MIPS assembly Read More »