TAGS: 毕业论文 计算机 基于 远程 对象 RMI 方法 实现 调用 哪位老兄有计算机毕业设计论文啊?是基于java的,小弟急用,谢谢!用RMI开发基于Java的企业分布式应用我站还提供更多的免费计算机论文,但免费论文仅供参考,建议广大网友下载后不要轻易采用。摘要由于Java具有跨平台、代码可移植性、安全高效等广泛而强大的功能,因而在开发网络分布式应用的时候,可以用它自身的机制实现分布式计算,一种基于Java的远程方法调用(RMI)为我们开发企业分布式应用提供了行之有效的解决方案。关键词 Java RMI 企业分布式应用 1 概述随着电力企业信息化建设的不断深入和发展,企业内部和企业与企业之间对信息、对数据的交换量大大增加,这些信息与数据越来越需要在不同的计算机网络间传送和交流。同时,由于各单位、各部门之间的现存的计算机网络硬件设备与操作系统千差万别,应用水平也参差不齐,因此,开发出跨平台、可移植、高效安全的网络分布式应用来服务于电力企业,就显得尤为重要。在当今的编程术语里,分布式计算已经成为很常见的词,它将企业的业务数据和程序分布在网络的不同物理位置上,通过调动网络上多台计算机的处理能力,发挥远程调用数据的功能。远程方法调用(Remote Method Invocation ,RMI),可以在不同的Java虚拟机(JVM)之间实现对象与对象的通信。JVM可以位于相同或不同计算机上,在多个JVM中,一个JVM可以调用存储在其它JVM的对象的方法。本文主要介绍RMI的特点,分析应用RMI进行企业分布式计算的原理,以及利用RMI实现基于Java的企业分布式应用的具体步骤。2 远程方法调用(RMI)的特点 TCP编程的缺点由于Java编程语言设计之初就是面向对象和支持网络的,因此,基于对象的RMI机制已经内置在Java平台中。我们经常会在网络开发中使用TCP/IP编程,这样,自然而然地就会涉及到Socket(套接字)编程。但是,使用Socket编程需要大量重复编码,在复杂分布式操作时显得非常麻烦,而且易于出错。因此,如何快速、高效、安全、可扩展地进行网络分布式计算,是开发者们一贯追求和倡导的主题。直到RMI的出现,这种繁杂、低效的开发情况才有很大改观。 RMI编程的特点当我们利用对象序列化在网络上分配对象时,RMI提供了非Java平台无法匹敌的独特而强电子商务资料库)*!%267'$#7'455大的分布式计算模型,RMI主要有以下特点:? 客户机可以向本地方法一样调用远程服务器上的方法;? 可以根据接口指定客户机/服务器编程合约;? 可以从服务器对象缺省二进制类文件,自动生成调动/反调动代码;? 将Java编程模型扩展到机器边界(和Java虚拟机(JVM)边界之外),不需要任何特殊语法;? 还可以和一个远程方法调用中的数据同时传输行为(代码)。尽管RMI不是唯一的企业级远程对象访问方案,但它却是最容易实现的。 RMI与CORBA作为分布式应用程序框架的规范,COBRA首当其冲,它是由对象管理组织(OMG)开发的。与CORBA不同的是,CORBA能够利用不同编程语言(例如C/C++、Basic等)开发实现分布式应用,而RMI是一种纯Java解决方案。在RMI中,程序的所有部分都由Java语言编写,这样,开发出来的程序完全符合Java规范,便于实现跨平台访问、扩展和移植。按照笔者所在西北电力建设集团公司的情况看,服务器操作系统主要有Linux和Windows2000 Server,分别存在于公司和部门当中,它们是不同的系统平台;同时,公司下属各个工程项目部又距离很远,近的几十公里,远则达到上千公里甚至位于国外,因此跨平台和远程访问这两大功能在开发企业应用系统时就必须考虑,而RMI恰恰能够用它的自身特点来满足编程需要。3 RMI基本体系结构简介RMI通过TCP/IP在内部使用Socket,象其名称暗示的那样,它能够帮助我们查找并执行远程对象的方法。RMI的目的是让位于不同JVM中的对象,在外观及行为上都像是本地的对象。通常,我们把调用这种远程对象的JVM,称为客户机;而把包括这种远程对象的JVM,称为服务器。尽管对一个远程对象的引用和获得对本地对象的引用有所不同,但我们可以把远程对象像本地对象一样使用。应用程序并不知道一个对象是远程的还是本地的。实际上,远程对象上被调用的方法与本地对象上调用的方法,具有相同的语法结构。作为RMI的底层(会包含复杂的Socket操作),它会自动截获方法调用,找到远程对象,然后处理远程请求。笔者认为,RMI设计的重要之处,就在于不但在设计上实现了远程访问功能,而且实现了设计的透明性。RMI的基本体系结构,概括起来说,由三个抽象层组成: 存根/框架层(Stubs/Skeletons Layer)
一切一切…网上搜搜…给我分吧…
就是以数据诸如文字,声音,图像等为主要内容,以检索文献资料的内容而不是外表特征的一种检索技术·主要该系统有TRS系统·天宇系统·等与其他搜索引擎相比,全文搜索引擎的显著特点是它能够以文中任何一个有检索意义的词作为检索入口,而且取得的检索结果是原始文献,而不是文献线索随着计算机产业的发展,以计算机存储设备为载体的电子信息愈来愈多,这些信息大致可分为两类:结构化数据和非结构化数据,结构化数据指的是诸如企业财务帐目和生产数据、学生的分数数据等等,非结构化数据的则是一些文本数据、图象声音等多媒体数据等等。据统计,非结构化数据占有整个信息量的80%以上。对于结构化数据,用RDBMS(关系数据库管理系统)技术来管理是目前最好的一种方式。但是由于RDBMS自身底层结构的缘故使得它管理大量非结构化数据显得有些先天不足,特别是查询这些海量非结构化数据的速度较慢。而通过全文检索技术就能高效地管理这些非结构化数据。经过几年的发展,全文检索从最初的字符串匹配程序已经演进到能对超大文本、语音、图像、活动影像等非结构化数据进行综合管理的大型软件。由于内涵和外延的深刻变化,全文检索系统已成为新一代管理信息系统的代名词,衡量全文检索系统的基本指标也逐渐形成规范。首先,我们关注的是查全率,即系统在进行某一检索时,检索出的相关资料量与系统资料库中相关资料总量的比率。查准率则是保证我们找到最有用资料的一个关键,是系统在进行某一检索时,检索出的有用资料数量与检索出资料总量的比率。检索速度或者说响应时间是提高工作效率的保障,指的是从提交检索课题到查出资料结果所需的时间。最基本的检索速度是应该达“千万汉字,秒级响应"。还有诸如收录范围(所查找的范围)、用户负担(用户在检索过程中付出精力的总和)、输出形式 (输出信息表现形式)等指标也是衡量全文检索系统优劣的要素。搜索引擎应该是全文检索技术最主要的一个应用。目前,搜索引擎的使用已成为排在收发电子邮件之后的第二大互联网应用技术。搜索引擎起源于传统的信息全文检索理论,即计算机程序通过扫描每一篇文章中的每一个词,建立以词为单位的到排文件,检索程序根据检索词在每一篇文章中出现的频率和每一个检索词在一篇文章中出现的概率,对包含这些检索词的文章进行排序,最后输出排序的结果。全文检索技术是搜索引擎的核心支撑技术。一个好的检索引擎是一个理想站点的关键。很多人在访问一个站点时喜欢使用站点检索,站点检索应是分类目录导航和全文检索的完美结合,具体包括以下几个方面:分类目录导航的关键是检索范围,检索范围的限制能使得检索结果不会太多、太滥;全文检索对于站点检索是必不可少的,在通常情况下能够帮助人们很快地找到所要的网页;有时利用分类目录导航和全文检索还很难定位到所要的信息,这时就要组合检索辅助;必须有相关排序功能,因为当检索结果太多时,用户不可能一一浏览,大多数用户只浏览前面几条,没有相关排序,可能准确的检索结果排在后面,用户不能浏览到,而排在前面的检索结果却相关性很少,造成用户的错觉。此外,我们还要考虑HTML/XML的特殊性、支持大量并发用户突发访问、Web站点的动态特性、要求索引维护效率很高等方面。目前的技术实现有Lucene,Solr,ElasticSearch等。全文检索过程分为索引、搜索两个过程: 索引(Indexing)从关系数据库中、互联网上、文件系统采集源数据(要搜索的目标信息),源数据的来源是非常广泛的。将源数据采集到一个统一的地方,例如存储系统,要创建索引,将索引创建到一个索引库(文件系统)中,从源数据库中提取关键信息,从关键信息中抽取一个一个词,词和源数据是有关联的。也即创建索引时,词和源数据有关联,索引库中记录了这个关联,如果找到了词就说明找到了源数据(http的网页、电子书、新闻等……)。搜索(Search)用户执行搜索(全文检索)编写查询关键字。从索引库中搜索索引,根据查询关键字搜索索引库中的一个一个词。展示搜索的结果。
目 录一、概要设计……………………………………………………………3二、程序整体设计说明…………………………………………….…..4三、程序部分源代码及注释…………………………………………….9四、测试结果………………………………………………………….24五、设计心得…………………………………………………………25六、致 谢…………………………………………………………25七、参考文献…………………………………………………………25【摘 要】该程序是一个图形界面的java文档编辑器,其界面主要采用了awt包, 程序实现了文本编辑器的基本功能有:新建文件、打开文件、文件保存、文件另存为、剪切、复制、粘贴、删除、查找/替换、改变字体大小,另外还利用Time类的schedule方法实现了文件的定时自动更新功能,并创建备份文件,由于该编辑器是用的awt包,所以在技术上没有实现将Java的关键字以不同颜色显示功能。【关键字】java 编辑器一、概要设计Java程序编辑器是:图形界面、线程、流与文件等技术的综合应用。图形界面的实现:考虑到简单、实用、高效等特点,就选择了AWT来完成实现,在选择组件上,文本编辑区就选用了TaxtArea作为主要的部件。线程实现文件自动保存:在相关的参考书上查阅到在Time类中有一个schedule方法可以在后台自动完成一定的功能,而且调用起来相当简单,于是就用了Time类中的schedule方法来实现文件自动保存及备份功能。文件操作的实现:利用了字符文件流FileReader和FileWriter类来实现。由于Java的特性,可能用任何一个编辑器来编辑,于是就将Windows中的记事本作为模仿对象,根据实现情况删减了其中的一些功能,如自动换行,设置字体,打印等功能。在设计类的时候,考虑到简单明了,就用了两个类,一个主类和一个默认属性类作为程序的整体框架,所有的对象和方法都是在默认属性类中创建和实现的,以及为各组件注册事件监听程序也是在默认属性类中实现的。主类完成对象的实例化及显示。这们设计的优点是:条理清晰,容易理解,容易修改。这样设计的缺点是:不利于共享类中的方法。二、程序整体设计说明、程序框架图、程序中所用类说明(1)用户自定义类类名:EditInstantiation作用:实例化对象继承的父类:WindowAdapter主要成员变量:Frame myFrm // 定义主窗体TextArea myText // 定义文本编辑区Dialog myDlgFind,myDlgFindont //查找及设置字体对话框TextField TFfind, TFreplace, TffontSize//查找对话框和字体窗体中的文本行Button BfontOK, Bfind, Breplace, Bnext, Bcancel //定义和创建各按钮Label Lf, Lr, Ls //定义和创建各标签MenuBar Mbbar //定义和创建主菜单Menu Mfile,Medit,Mformation,Mhelp //定义和创建主菜单中的选项Toolkit toolKitClipboard myCB //剪切板对象FileDialog myFDlg //定义文件对话框Choice ChfontName //定义和创建字体选择框private int VIindex = 1; //构成文件名后缀变量private String VSsubFixStr=".java"; //构成文件名扩展名变量private String VSmyFileName = "Document1",VSmyBFileName;//文件名及备份文件名变量private File VFmyFile=new File(VSmyFileName+VIindex+".java");//文件名变量private int VIsearchPosition=0; //查找位置指针private Timer VTtime; //实例化一个Time类private int VImin=1; // schedule方法中的一个时间参数private int VItype=;//提示对话框类型private String VStitle; //提示对话框标题private String VSmessage; //提示对话框信息private boolean VBchanged = true; //改变字体的一个标识private int VIfontSizeMin = 8, VIfontSizeMax = 40, VIfontSizeChangedStep = 2; //设置字体大小及步长主要成员方法:public void init() //初始化各部件菜单的定义和事件的监听public void displayEdit ()//显示窗体及调用Time中的schedule方法public void windowClosing () //关闭窗体public void save //保存文件方法a.内部类类名:KeyEvents作用:实现菜单的事件的响应功能继承的父类:KeyAdapter主要成员变量:无成员方法:actionPerformed()、keyPressed()b.内部类类名:FindKeyEvent作用:实现查找中各部件事件的响应功能继承的父类:无主要成员变量:无成员方法:actionPerformed ()c.内部类类名:fontEvent作用:实现字体中各部件事件的响应功能继承的父类:无主要成员变量:无成员方法:ItemListener(),ActionListener()(2)用户自定义类与Java类的继承关系图如下:自定义类 Java 类线程使用说明、实现接口方法本程序用到的方法有:schedule其方法描述如下:schedule(事件,启动时间,间隔时间);、线程应用本程序为文本编辑器,为实现自动更新,应用到了线程,每隔1分钟对文件进行自动更新、异常处理说明(1)打开文件时的异常处理需要处理的异常:IOException处理方法:捕获异常后,显示捕获的异常(2)保存文件时的异常处理需要处理的异常:IOException处理方法:捕获异常后,显示捕获的异常、程序运行效果及存在的问题(1)程序运行主要界面如下:a、主界面b、打开文件对话框c、保存文件对话框d、另存为文件对话框e、查找/替换对话框f.字体对话框.程序尚还存在的问题我花费了近一个多星期的时间,查阅了许多相关的资料,终于把这个Java编辑器,程序基本实现了该课程设计的基本要求。但由于自己水平有限,使得程序还有不是很完善,首先,最重要的一点是该设计的最重要的功能自动改变java关键字的颜色没有实现。三、程序部分源代码及注释//****************************************************// class name :Edit// implements :none// extends :none// attribute :public// founction :entrance of the class//*****************************************************public class Edit{ //主类public static void main(String args[]){EditInstantiation myEdit= new EditInstantiation();(); //初始化(); //显示窗体}//****************************************************// class name :EditInstantiation// implements :none// extends :WindowAdapter// attribute :default// founction :EditInstantiation of the main class//*****************************************************class EditInstantiation extends WindowAdapter{ //默认属性类//define sources 定义各部件Frame myFrm=new Frame("我的编辑器"); //定义窗体TextArea myText=new TextArea(); //定义窗体Dialog myDlgFind=new Dialog(myFrm,"查找",true); //定义查找对话框Dialog myDlgFindont=new Dialog(myFrm,"字体",true); //定义字体对话框TextField TFfind=new TextField(30);//定义查找对话中的查找输入框TextField TFreplace=new TextField(30); //定义查找对话中的替换输入框TextField TFfontSize,TFfontDemo;//定义字体大小文本框和示例框Choice CHfontName;//定义字体大小选择框List LTfontSize; //定义字体大小标签Button BfontOK,BfontCancel; //定义字体大小对话中的确定及取消按钮Button Bfind=new Button("查找");//定义查找对话中的查找按钮Button Breplace=new Button("替换");//定义查找对话中的替换及取消按钮Button Bnext=new Button("下一个");//定义查找对话中的下一个及取消按钮Button Bcancel=new Button("取消");//定义查找对话中的确定及取消按钮Label Lf=new Label("查找内容:");Label Lr=new Label("替换为: ");Label Ls=new Label("字体大小:");FileDialog myFDlg;Clipboard myCB=().getSystemClipboard(); //剪切板对象Menu Mfile,Medit,Mformation,Mhelp;MenuBar MBbar;//define varities //定义各变量private int VIindex = 1;private String VSsubFixStr=".java";private String VSmyFileName = "Document1",VSmyBFileName;private File VFmyFile=new File(VSmyFileName+VIindex+".java");private int VIsearchPosition=0;private Timer VTtime;private int VImin=1; // parameter in time schedulprivate int VItype=;private String VStitle;private String VSmessage;// flag of the changeingprivate boolean VBchanged = true;// the scope of the fontprivate int VIfontSizeMin = 8, VIfontSizeMax = 40, VIfontSizeChangedStep = 2;//************************************************//founction name:init()//parameter :none//attribute :public//founction :initia all compont//************************************************public void init(){ //初始化各部件//------------------ set menu ------------------MBbar=new MenuBar();(MBbar);Mfile=new Menu("文件");Medit=new Menu("编辑");Mformation=new Menu("格式");Mhelp=new Menu("帮助");(Mfile);(Medit);(Mformation);(Mhelp);//文件菜单 add File (new MenuItem("新建",new MenuShortcut()));(new MenuItem("打开",new MenuShortcut()));(new MenuItem("保存",new MenuShortcut()));(new MenuItem("另存为"));();//分隔线(new MenuItem("退出",new MenuShortcut()));//编辑菜单 add Edit (new MenuItem("剪切"));//,new MenuShortcut()));(new MenuItem("复制"));//new MenuShortcut()));(new MenuItem("粘贴"));//new MenuShortcut()));(new MenuItem("删除"));//new MenuShortcut()));();//分隔线(new MenuItem("查找/替换",new MenuShortcut()));();//分隔线(new MenuItem("全选",new MenuShortcut()));//格式菜单 add Formation (new MenuItem("字体",new MenuShortcut()));//帮助菜单 add Formation (new MenuItem("关于作者"));//----------------- menu add end -------------------------//add Menu Action (new KeyEvents());(new KeyEvents());(new KeyEvents());(new FindKeyEvent());//--------------------------- Find (350,115);(250,150);(new FlowLayout());();(false);(false);(false);(Lf);(TFfind);(Lr);(TFreplace);(Bfind);(Breplace);(Bnext);(Bcancel);(new WindowAdapter(){public void windowClosing(WindowEvent e){(false);}});//为查找对话框窗体注册事件监听(new KeyEvents());//注册事件监听(new FindKeyEvent());(new FindKeyEvent());(new FindKeyEvent());(new FindKeyEvent());//--------------- end add action listener ------------//================set font dialog ==============//font size text fieldTFfontSize = new TextField("8",14);();//font size list fieldLTfontSize = new (5, false);(new fontEvent());for(int i = VIfontSizeMin; i <= VIfontSizeMax; i = i + VIfontSizeChangedStep)(i + "");//添加字体大小(0);//two Button Ok CancelBfontOK = new Button("确定");(new fontEvent());BfontCancel = new Button("取消");(new fontEvent());//a TextField for demo the fontTFfontDemo = new TextField("Java awt",37);(false);// my font dialog设置字体对话框(new FlowLayout());();(Ls);(TFfontSize);(BfontOK);(BfontCancel);(LTfontSize);(TFfontDemo);(300,200);(300,200);(false);(new WindowAdapter() {public void windowClosing(WindowEvent e) {(false);}}); //为字体对话框窗体注册事件监听//=============end set font dialog// =======set Edit frame设置编辑器窗休(myText,);(500,400);();(this);(500,400);(200,100);("Java编辑器");}//************************************************//founction name:displayEdit()//parameter :none//attribute :public//founction :initial and display the frame//************************************************public void displayEdit(){ //显示窗体(true);//---------------------- auto save ---------------------VTtime = new Timer(true);(new (){public void run(){if(VSmyFileName!=null){save(VSmyFileName+".java");VSmyBFileName=VSmyFileName+".bak";} //添加自动保存功能save(VSmyBFileName);}}, VImin*60*1000,VImin*60*1000);//parament 1 the task//parament 2 when to start the task//parament 3 set the interval time }//****************************************************// class name :KeyEvents// implements :ActionListener// extends :KeyAdapter// attribute :default// founction :implement the mouse and key action//*****************************************************class KeyEvents extends KeyAdapter implements ActionListener{//********************************************************//founction name:actionPerformed()//parameter :none//attribute :public//return :void//founction :realize the key action in the menu//*********************************************************public void actionPerformed(ActionEvent e){//完成菜单事件的功能// File Menuif (()=="新建"){//remind youJFrame aFrame=new JFrame();();JOptionPane optionPane=new JOptionPane();String choices[]={"是","否","取消"};int n=(aFrame,"文件正文已更改,是否保存更改","文本编辑器",[0]);//保存文件后新建if(n==0){//若文件存在,保存在原文件中,再新建文件try{if(()){save(VSmyFileName); // call the save ("");VIindex++;}else{//若文件不存在,则保存后再新建myFDlg=new FileDialog(myFrm,"保存文件",);(VSmyFileName);();VSmyFileName=()+();save(VSmyFileName);("");VIindex++;}}catch(Exception ne){}}//不保存文件新建if(n==1){("");VIindex++;}//取消新建if(n==0){return;}}//打开菜单 Open Menuif (()=="打开") {myFDlg=new FileDialog(myFrm,"打开",);();if (()!="") {VFmyFile=new File(()+());VSmyFileName=()+();if( ()){try{FileReader fr=new FileReader(VFmyFile);BufferedReader br=new BufferedReader(fr);String text;("");while ((text=())!=null)(text+"\r\n");();();}catch(IOException ioe){VStitle="提示";VSmessage="打开文件出错";(myFrm,VSmessage,VStitle,VItype);}}}}//保存菜单 Save Menuif (()=="保存"){myFDlg=new FileDialog(myFrm,"保存文件",);(VSmyFileName);();VSmyFileName=();if(VSmyFileName!=null){VSmyFileName=()+();save(VSmyFileName);}}//另存为菜单 SaveAs Menuif (()=="另存为"){myFDlg=new FileDialog(myFrm,"文件另存为",1);(VSmyFileName);();VSmyFileName=();if(VSmyFileName!=null){VSmyFileName=()+();save(VSmyFileName);}}//退出菜单 exit Menuif (()=="退出")(0);//编辑 Edit Menuif (()=="剪切"){//CutString text =();StringSelection selection = new StringSelection(text);(selection, null);("",(),());}if (()=="复制"){//copyString text=();if(text!=null){StringSelection selection=new StringSelect
什么c语言?这个问题说难不难,说易不易。粗浅的c语言一般可以在中国中学生联盟网技术论坛上拷贝一份,里面有一些可以作参考。
102 浏览 4 回答
226 浏览 6 回答
111 浏览 2 回答
104 浏览 6 回答
151 浏览 5 回答
214 浏览 4 回答
358 浏览 3 回答
102 浏览 4 回答
197 浏览 3 回答
125 浏览 5 回答
269 浏览 5 回答
217 浏览 3 回答
284 浏览 4 回答
283 浏览 6 回答
331 浏览 3 回答