eclipes提示“资源服务器上不存在该共享不存在”怎么解决

 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
移动环境下图片多维组织与管理系统服务器端的研究与实现毕业论文
下载积分:1000
内容提示:移动环境下图片多维组织与管理系统服务器端的研究与实现毕业论文
文档格式:PDF|
浏览次数:1|
上传日期: 10:50:15|
文档星级:
全文阅读已结束,如果下载本文需要使用
 1000 积分
下载此文档
该用户还上传了这些文档
移动环境下图片多维组织与管理系统服务器端的研究与
关注微信公众号您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
基于BS技术的警务态势系统的设计与实现.pdf 76页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
基于BS技术的警务态势系统的设计与实现论文
你可能关注的文档:
··········
··········
学 位 论 文
基于B/S 技术的警务态势系统的设计与实现
(题名和副题名)
(作者姓名)
电子科技大学
杭州双叶服饰有限公司
(姓名、职称、单位名称)
申请学位级别 硕士 专业学位类别
工 程 硕 士
工程领域名称
软 件 工 程
提交论文日期
论文答辩日期
学位授予单位和日期 电子科技大学
2013 年6 月23
答辩委员会主席
注1:注明《国际十进分类法UDC》的类号。
DESIGN AND IMPLEMENTATION OF POLICE
SITUATION SYSTEM BASED ON B/S
TECHNOLOGY
A Master Thesis Submitted to
University of Electronic Science and Technology of China
Software Engineering
Huang Xianfeng
School of Information and Software Engineering
独创性声明
本人声明所呈交的学位论文是本人在导师指导下进行的研究工
作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地
方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含
为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。
与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明
确的说明并表示谢意。
作者签名:
日期:2013
年 5 月 24
论文使用授权
本学位论文作者完全了解电子科技大学有关保留、使用学位论文
的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁
盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文
的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或
正在加载中,请稍后...您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
课设个人总结(共10篇).doc 32页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
课设个人总结(共10篇)
你可能关注的文档:
··········
··········
课设个人总结(共10篇)
fpga课设总结
课设是什么
篇一:课程设计个人小结
三周的课程设计结束了,我和同学们一起度过了这段忙碌而充实的时光。这次的课程设计深刻的反映出实践是检验真理的唯一标准这句话的真谛。课程设计是我们专业课程知识综合应用的实践训练,是我们迈向社会,从事职业工作前一个必不少的过程。“千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义。我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。
这次的课程设计的主题是考试系统的开发设计,首先老师先介绍了这次课程设计的主要内容和实施步骤,然后同学们进行分组并选出组长和集成组组员,各组进行分工安排、制定计划,组员明确各自的任务后,互相合作完成工作。我们组在这次课程设计中负责的是面向教师的主观题的开发设计,主要部分是试题的删除、添加、修改,以及试卷生成和评分等。而我自己在组内主要负责需求分析、表单设计、实习报告撰写等部分。在明确各自任务后,我们就开始了真正的系统开发。在需求分析阶段,我们通过各种渠道查阅了许多资料,以及已有的样例等,然后根据资料做了需求分析,根据需求分析进行了表单的设计,运用各种部件、菜单、按钮等达到用户体验更真实、流畅的目的。
在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。
在这次设计过程中,体现出了自己设计开发系统的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。在今后的学习中,我们应该发现自己的不足然后虚心学习,更加完善自己,为今后步入社会参加工作打下足够的基础。
篇二:课设个人总结1
企业战略管理课程设计个人总结
本次课程设计持续了2个多星期,时间非常紧张,我们的题目是医药行业的分析研究,我们小组由2个人组成,需要完成的文档有:(1)医药行业基本状况;
(2)医药行业演化及发展趋势;(3)医药行业环境分析;(4)医药行业竞争态势分析;(5)医药行业成功的关键因素分析;(6)医药行业竞争的特点归纳总结;
(7)医药行业技术进步与创新状况分析;(8)医药行业内典型企业的商业模式归纳总结;(9)医药行业内典型企业的公司战略及其特点分析;(10)医药行业内典型企业的基本竞争战略及其特点分析;(11)提出提升企业竞争优势的策略;
(12)提出提升企业竞争优势的具体措施,我主要负责1—7个文档,但实际上每个文档之间都有着联系,仅仅做自己分配到的部分是不够的,系统分为哪些模块以及各模块的功能都需要大家一起讨论确定,统一思路,否则文档无法衔接,课程设计无法完成。
做课程设计时,指导老师给了我们很大帮助,发现了很多我们没有想到的问题,提了很多改进意见。在此对老师的耐心辅导表示感谢。
课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,这次课程设计虽然很累,但我学到了不少东西,对课程设计过程和方法有了更深入的了解,培养了我们的团队精神,锻炼了我们的沟通和表达能力。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
通过此次课程设计,使我更加扎实的掌握了有关战略管理方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次与队友的讨论,一篇又一篇的查阅资料终于解决了问题,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。
在课程设计过程中,我们不断发现问题,不断解决,不断领悟,不断获取。这让我觉得在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩应该相信队友,相信团队的力量,群力群策,进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上披荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可! 课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我莫大的空间。同时,设计让我感触很深。使我对抽象的理论有了具体的认识。通过这次课程设计,我了解了医药业的基本状况,医药业的发展趋势,医药业的竞争态势,医药业如何进行环境分析等等方面的内容,使我对医药行业有了更全面的认识。在这次的课程设计
正在加载中,请稍后...当前位置:&&
本页文章导读:
&&&&?施用脚本程序管理Windows网络(9) &&&&&& 使用脚本程序管理Windows网络(9)
使用脚本程序管理Windows网络(9) 日  使用脚本程序管理Windows网络 第九部分:理解远程脚本  在这一系列中将学习如何使用远程脚本来管理Windows.........&&&&? windows上进程间通信的 &&&&&& windows下进程间通信的
windows下进程间通信的 日  windows下进程间通信的手段有哪些? 收藏   摘 要 随着人们对应用程序的要求越来越高,单进程应用在许多场合已不能满足人们.........&&&&? [004] 详解Windows平台筹建Androiod开发环境&&&&&& [004] 详解Windows平台搭建Androiod开发环境
[004] 详解Windows平台搭建Androiod开发环境 日  Android开发所需工具   1)JDK   Android应用主要采用Java语言开发,因为必须要安装JDK。开发A.........
[1]施用脚本程序管理Windows网络(9)
&&&&来源:&互联网& 发布时间:&
使用脚本程序管理Windows网络(9)
使用脚本程序管理Windows网络(9) 日  使用脚本程序管理Windows网络 第九部分:理解远程脚本  在这一系列中将学习如何使用远程脚本来管理Windows网络的脚本编写基本知识,原文发表于WindowsNetworking.com。  让我们回顾一下目前我们所了解到的关于使用WMI的远程脚本:  在这个系列文章的第六部分“远程脚本初探”一文中,我们尝试修改我们的ChangeIPAddress.vbs脚本,以便我们可以通过它来远程修改计算机的IP地址。通过这个方法我们了解到,我们需要使用“分组策略(Group Policy)”来激活目标计算机上的Windows防火墙的“远程管理例外”,否则脚本将无法工作。虽然最终我们让脚本工作了,但它超时了并且还返回了一个错误。  然后,在第七部分“修复神秘的错误”,我们发现可以在脚本中添加“On Error Resume Next”语句来绕过错误。但是,脚本仍然超时或者是用了很长的时间来完成运行。我向某个脚本高手请教了这个问题,我们对这个错误得到一个初步的解释,但是为了看看问题是否是普遍性的,我们创建了一个新的脚本ChangeGateway.vbs ,并且当我们远程运行此脚本时,它正常工作了。  最后,在第八部分“使用Network Monitor 3.0脚本修复远程脚本故障”,我们的一个读者提出一个简单的可能导致错误的原因:更改远程计算机的IP地址中断了计算机连接,从而导致脚本运行出错并最终超时退出。这听起来很合理,所以,当我们运行脚本时,我们尝试使用Network Monitor 3.0来监测当我们运行脚本会发生什么情况,同时我们确信我们的网络跟踪分析证实这位读者的观点是正确的。  然而,是时候是该回顾一下了。在我们继续更深入地之前,我们应该先学习的一些远程脚本的技术细节。不断地尝试是一件很好的事,但是有时候缺乏足够的知识积累我们就会很容易碰壁了。而学习这些基本知识往往可以帮助我们避免(或绕过去或者跳过去)碰壁。现在就让我们开始吧。  两种类型的远程脚本  确实有两种远程脚本。第一种是当我们在计算机A运行脚本时,脚本以计算机B为目标并在B上执行一些操作。之前我们使用了脚本ChangeIPAddress.vbs来尝试远程脚本,我们是将脚本中的这一行:  strComputer = "."  修改成:  strComputer = "xp2"  如果我们使用上面的第一行,并在计算机A上运行脚本 ,脚本以计算机A为目标(本地计算机或“.”)并修改了计算机A的IP地址。然而,如果我们使用上面的第二行,并在计算机A上运行脚本,脚本将以计算机B为目标(NetBIOS名为“xp2”的计算机)并修改了计算机B的IP地址。  但是,这里还有第二种远程脚本,它是这样运行的:我是登录到计算机A上的管理员,同时,我想使用一个脚本对计算机B上进行一些操作。但是,我想直接在计算机B上运行脚本,而不是在计算机A上运行脚本并计算机B作为脚本的操作目标。因此,我必须将我计算机A上的脚本转移到计算机B上并且在计算机B上运行脚本。如何才能做到这一点?如果我有一个Active Directory环境,那么我可以在远程计算机上尝试将脚本作为一个登录脚本运行。在接下来的文章中我们会研究如何做到这一点,但现在我们只要知道有这两种类型的远程脚本:  ●在本地计算机上运行脚本,目标指向另一台远程计算机  ●直接在远程计算机上运行脚本  让我们总结一下这2种远程脚本方法之间的区别:  ●第一种远程脚本需要连接到远程计算机,然后运行脚本。  ●第二类远程脚本需要部署脚本到远程计算机,然后运行脚本。  知道它们的区别了吗?  理解远程脚本连接  现在我们把重点放在第一类型的远程脚本(这在前面的几章中我们所尝试的做法)。一个脚本在本地计算机上运行的然后连接到远程计算机并对它运行操作,这意味着什么呢?这意味着三件事:  ●网络连接  ●用户身份  ●适当的权限  网络连接  对于要在远程计算机上进行了一些操作的脚本,首先脚本需要与远程计算机建立网络连接。有哪些问题可能会阻止网络连接呢?  首先,可能会有一个域名解析问题。如果我们的脚本不能将远程计算机的主机名或FQDN(Fully-Qualified Domain Name,完整域名)解析为有效的IP地址,那么远程脚本将会运行失败。  第二,可能会有一个防火墙问题。我们在前一篇文章中看到,为了让我们的WMI脚本在远程计算机运行,我们必须打开远程计算机上的Windows防火墙的远程管理例外。如果你现在打开控制面板上的Windows防火墙,并选择“例外”选项卡,你将无法找到一个用来打开防火墙例外的“远程管理”的复选框。这其中的原因当然是,“控制面板”主要是提供给家庭用户来配置防火墙的。在一个Active Directory启用的业务环境下,首选的管理Windows防火墙的方式是使用“分组策略(Group Policy)”。我们在较早前的文章已经提到,我们需要配置的分组策略设置是这样的:  Computer Configuration\Administrative
  Templates\Network\NetworkConnections\Windows Firewall\Domain
  Profile\Windows Firewall: Allow inbound remote administration exception  ●当你将这个策略指向一台远程计算机时,它会打开计算机上的两个TCP端口: 445和135 :  TCP端口445是Server Message Block (SMB)流量进入的端口,如果远程计算机上的防火墙关闭了这个端口,那么不仅你无法使用WMI连接它,而且你也无法使用标准的MMC控制台工具来连接它,如Computer Management。所以当端口关闭时,如果你尝试运行脚本操作远程的计算机,你可能会收到隐藏的错误,如“System error 53 has occurred. The network path was not found.”等等。  ●TCP端口135是Distributed COM (DCOM)流量进入的端口。更具体地说,端口135是DCOM Service Control Manager (SCM )的一个监听端口,它提供了基于RPC的服务用于初始化COM对象等。  概括而言,如果想要从本地计算机运行WMI查询可以成功地使用RCP封装连接到在远程计算机上的WMI服务,并且可以在远程计算机上成功实例化DCOM对象,TCP端口135和445都必须在远程计算机上的防火墙上打开。  用户身份  当你运行一个脚本操作远程计算机时,同时该脚本能够与远程计算机建立网络连接,那么该脚本就能够在远程计算机上执行相应的操作。但是,所执行的操作成功与否取决于在远程计算机上运行该脚本的用户身份。所以举例说,如果我使用普通域用户帐户登录到计算机A上。然后,我运行脚本ChangeIPAddress.vbs操作远程计算机B。脚本使用RPC连接到计算机B的WMI服务上 ,然后它尝试修改计算机B的IP地址。但是结果脚本失败了。这是为什么?那么,到底是谁在远程计算机上尝试执行这个行动呢?是你――而你是一个本地计算机的域用户,当你在默认情况下运行该脚本时,它借用了你的身份,即脚本试图使用你的身份(你的域用户帐户)来执行操作。所以,当脚本试图改变远程计算机的IP地址时,实际上是你,一个域用户,在试图这样执行这个操作。这样做当然会失败,因为修改一个IP地址要求有本地管理员权限。  所以,如果你在计算机A上,以一个域用户登录,同时你还想要用你的脚本来改变计算机B的IP地址。你应该怎么做呢?  其实,你可以硬编码地将远程计算机的本地管理员帐户的密码直接写到我们的脚本中去。换言之,在我们的ChangeIPAddress.vbs脚本上,我们可以这样将:  Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")  替换成:  strUser = "Administrator" strPassword = "Pa$$w0rd" Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2", strUser, strPassword)  问题是,这是不安全的――在你的脚本上,所有的人都可以从脚本中看到以文本方式记录的远程计算机的本地管理员帐户的密码!  如何删掉上面两行代码,然后在脚本运行时,以命令参数传递的形式给变量strUser和strPassword赋值,是否可行呢?显然这是优于硬编码这些值到脚本上的方法,但是如果有任何人运行网络监测器(如Network Monitor 3.0 ),那么他们可以发现这些本应保密的认证信息,于是你可能又危害了你的远程计算机。  那么如果我们使用runas /user:Administrator cmd.exe运行命令提示符,然后在没有指定其他任何验证的情况下,在命令提示符上运行该脚本,又是否可行呢?这可能是你在需要确保脚本有适当的运行身份(通常是本地管理员的目标计算机)时的远程脚本运行的最好,尽管这个是有一点麻烦的。当然,你也可以简单地作为一个域管理员帐户登录到工作站,并只需打开一个命令提示符运行该脚本。  适当的权限  现在情况是这样,你正在计算机A上运行你的脚本,而该脚本准备在远程计算机B上执行一些操作。脚本已经和计算机B上的WMI服务建立了网络连接,并且该脚本正以其适当的身份(通常是本地管理员)在计算机B上尝试执行它的操作。那么在这个时候,到底还有什么可能会导致脚本运行失败呢?权限不够!如果脚本正在执行一些由ACL(比如修改文件系统对象或者在Active Directory创建一个对象或者激活DCOM对象)控制的操作,而如果你(脚本所使用的你的身份)没有合适的权限来执行这一行动,该脚本将失败。不幸的是,对于远程脚本来说,这往往是最难的一部分,因为在Windows平台上有NTFS权限、DCOM权限,以及大量的其他类型的权限。另外,你可能有正确的权限组,但是没有特定的权限,如执行一些操作的权限。例如,假设你要使用脚本来清除远程计算机上事件日志,但你的身份缺乏关于该远程计算机的SeSecurityPrivilege。结果会怎么样?你的脚本将失败。  对于远程脚本,还有很多需要学习的,不是吗?在我们的下一篇文章中,我们将继续对这个问题进行阐述。
[2] windows上进程间通信的
&&&&来源:&互联网& 发布时间:&
windows下进程间通信的
windows下进程间通信的 日  windows下进程间通信的手段有哪些? 收藏   摘 要 随着人们对应用程序的要求越来越高,单进程应用在许多场合已不能满足人们的要求。编写多进程/多线程程序成为现代程序设计的一个重要特点,在多进程程序设计中,进程间的通信是不可避免的。Microsoft Win32 API提供了多种进程间通信的方法,全面地阐述了这些方法的特点,并加以比较和分析,希望能给读者选择通信方法提供参考。   关键词 进程 进程通信 IPC Win32 API   1 进程与进程通信   进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码、数据以及它可利用的系统资源(如文件、管道等)组成。多进程/多线程是Windows操作系统的一个基本特征。Microsoft Win32应用编程接口(Application Programming Interface, API)提供了大量支持应用程序间数据共享和交换的机制,这些机制行使的活动称为进程间通信(InterProcess Communication, IPC),进程通信就是指不同进程间进行数据共享和数据交换。   正因为使用Win32 API进行进程通信方式有多种,如何选择恰当的通信方式就成为应用开发中的一个重要问题,下面本文将对Win32中进程通信的几种方法加以分析和比较。   2 进程通信方法   2.1 文件映射   文件映射(Memory-Mapped Files)能使进程把文件内容当作进程地址区间一块内存那样来对待。因此,进程不必使用文件I/O操作,只需简单的指针操作就可读取和修改文件的内容。   Win32 API允许多个进程访问同一文件映射对象,各个进程在它自己的地址空间里接收内存的指针。通过使用这些指针,不同进程就可以读或修改文件的内容,实现了对文件中数据的共享。   应用程序有三种方法来使多个进程共享一个文件映射对象。   (1)继承:第一个进程建立文件映射对象,它的子进程继承该对象的句柄。   (2)命名文件映射:第一个进程在建立文件映射对象时可以给该对象指定一个名字(可与文件名不同)。第二个进程可通过这个名字打开此文件映射对象。另外,第一个进程也可以通过一些其它IPC机制(有名管道、邮件槽等)把名字传给第二个进程。   (3)句柄复制:第一个进程建立文件映射对象,然后通过其它IPC机制(有名管道、邮件槽等)把对象句柄传递给第二个进程。第二个进程复制该句柄就取得对该文件映射对象的访问权限。   文件映射是在多个进程间共享数据的非常有效方法,有较好的安全性。但文件映射只能用于本地机器的进程之间,不能用于网络中,而开发者还必须控制进程间的同步。   2.2 共享内存   Win32 API中共享内存(Shared Memory)实际就是文件映射的一种特殊情况。进程在创建文件映射对象时用0xFFFFFFFF来代替文件句柄(HANDLE),就表示了对应的文件映射对象是从操作系统页面文件访问内存,其它进程打开该文件映射对象就可以访问该内存块。由于共享内存是用文件映射实现的,所以它也有较好的安全性,也只能运行于同一计算机上的进程之间。   2.3 匿名管道   管道(Pipe)是一种具有两个端点的通信通道:有一端句柄的进程可以和有另一端句柄的进程通信。管道可以是单向-一端是只读的,另一端点是只写的;也可以是双向的一管道的两端点既可读也可写。   匿名管道(Anonymous Pipe)是 在父进程和子进程之间,或同一父进程的两个子进程之间传输数据的无名字的单向管道。通常由父进程创建管道,然后由要通信的子进程继承通道的读端点句柄或写 端点句柄,然后实现通信。父进程还可以建立两个或更多个继承匿名管道读和写句柄的子进程。这些子进程可以使用管道直接通信,不需要通过父进程。   匿名管道是单机上实现子进程标准I/O重定向的有效方法,它不能在网上使用,也不能用于两个不相关的进程之间。   2.4 命名管道   命名管道(Named Pipe)是服务器进程和一个或多个客户进程之间通信的单向或双向管道。不同于匿名管道的是命名管道可以在不相关的进程之间和不同计算机之间使用,服务器建立命名管道时给它指定一个名字,任何进程都可以通过该名字打开管道的另一端,根据给定的权限和服务器进程通信。   命名管道提供了相对简单的编程接口,使通过网络传输数据并不比同一计算机上两进程之间通信更困难,不过如果要同时和多个进程通信它就力不从心了。   2.5 邮件槽   邮件槽(Mailslots)提 供进程间单向通信能力,任何进程都能建立邮件槽成为邮件槽服务器。其它进程,称为邮件槽客户,可以通过邮件槽的名字给邮件槽服务器进程发送消息。进来的消 息一直放在邮件槽中,直到服务器进程读取它为止。一个进程既可以是邮件槽服务器也可以是邮件槽客户,因此可建立多个邮件槽实现进程间的双向通信。   通过邮件槽可以给本地计算机上的邮件槽、其它计算机上的邮件槽或指定网络区域中所有计算机上有同样名字的邮件槽发送消息。广播通信的消息长度不能超过400字节,非广播消息的长度则受邮件槽服务器指定的最大消息长度的限制。   邮件槽与命名管道相似,不过它传输数据是通过不可靠的数据报(如TCP/IP协议中的UDP包)完成的,一旦网络发生错误则无法保证消息正确地接收,而命名管道传输数据则是建立在可靠连接基础上的。不过邮件槽有简化的编程接口和给指定网络区域内的所有计算机广播消息的能力,所以邮件槽不失为应用程序发送和接收消息的另一种选择。   2.6 剪贴板   剪贴板(Clipped Board)实质是Win32 API中一组用来传输数据的函数和消息,为Windows应用程序之间进行数据共享提供了一个中介,Windows已建立的剪切(复制)-粘贴的机制为不同应用程序之间共享不同格式数据提供了一条捷径。当用户在应用程序中执行剪切或复制操作时,应用程序把选取的数据用一种或多种格式放在剪贴板上。然后任何其它应用程序都可以从剪贴板上拾取数据,从给定格式中选择适合自己的格式。   剪贴板是一个非常松散的交换媒介,可以支持任何数据格式,每一格式由一无符号整数标识,对标准(预定义)剪贴板格式,该值是Win32 API定义的常量;对非标准格式可以使用Register Clipboard Format函数注册为新的剪贴板格式。利用剪贴板进行交换的数据只需在数据格式上一致或都可以转化为某种格式就行。但剪贴板只能在基于Windows的程序中使用,不能在网络上使用。   2.7 动态数据交换   动态数据交换(DDE)是使用共享内存在应用程序之间进行数据交换的一种进程间通信形式。应用程序可以使用DDE进行一次性数据传输,也可以当出现新数据时,通过发送更新值在应用程序间动态交换数据。   DDE和剪贴板一样既支持标准数据格式(如文本、位图等),又可以支持自己定义的数据格式。但它们的数据传输机制却不同,一个明显区别是剪贴板操作几乎总是用作对用户指定操作的一次性应答-如从菜单中选择Paste命令。尽管DDE也可以由用户启动,但它继续发挥作用一般不必用户进一步干预。DDE有三种数据交换方式:   (1) 冷链:数据交换是一次性数据传输,与剪贴板相同。   (2) 温链:当数据交换时服务器通知客户,然后客户必须请求新的数据。   (3) 热链:当数据交换时服务器自动给客户发送数据。   DDE交换可以发生在单机或网络中不同计算机的应用程序之间。开发者还可以定义定制的DDE数据格式进行应用程序之间特别目的IPC,它们有更紧密耦合的通信要求。大多数基于Windows的应用程序都支持DDE。   2.8 对象连接与嵌入   应用程序利用对象连接与嵌入(OLE)技术管理复合文档(由多种数据格式组成的文档),OLE提供使某应用程序更容易调用其它应用程序进行数据编辑的服务。例如,OLE支持的字处理器可以嵌套电子表格,当用户要编辑电子表格时OLE库可自动启动电子表格编辑器。当用户退出电子表格编辑器时,该表格已在原始字处理器文档中得到更新。在这里电子表格编辑器变成了字处理器的扩展,而如果使用DDE,用户要显式地启动电子表格编辑器。   同DDE技术相同,大多数基于Windows的应用程序都支持OLE技术。   2.9 动态连接库   Win32动态连接库(DLL)中的全局数据可以被调用DLL的所有进程共享,这就又给进程间通信开辟了一条新的途径,当然访问时要注意同步问题。   虽然可以通过DLL进行进程间数据共享,但从数据安全的角度考虑,我们并不提倡这种方法,使用带有访问权限控制的共享内存的方法更好一些。   2.10 远程过程调用   Win32 API提供的远程过程调用(RPC)使应用程序可以使用远程调用函数,这使在网络上用RPC进行进程通信就像函数调用那样简单。RPC既可以在单机不同进程间使用也可以在网络中使用。   由于Win32 API提供的RPC服从OSF-DCE(Open Software Foundation Distributed Computing Environment)标准。所以通过Win32 API编写的RPC应用程序能与其它操作系统上支持DEC的RPC应用程序通信。使用RPC开发者可以建立高性能、紧密耦合的分布式应用程序。   2.11 NetBios函数   Win32 API提供NetBios函数用于处理低级网络控制,这主要是为IBM NetBios系统编写与Windows的接口。除非那些有特殊低级网络功能要求的应用程序,其它应用程序最好不要使用NetBios函数来进行进程间通信。   2.12 Sockets   Windows Sockets规范是以U.C.Berkeley大学BSD UNIX中流行的Socket接口为范例定义的一套Windows下的网络编程接口。除了Berkeley Socket原有的库函数以外,还扩展了一组针对Windows的函数,使程序员可以充分利用Windows的消息机制进行编程。   现在通过Sockets实现进程通信的网络应用越来越多,这主要的原因是Sockets的跨平台性要比其它IPC机制好得多,另外WinSock 2.0不仅支持TCP/IP协议,而且还支持其它协议(如IPX)。Sockets的唯一缺点是它支持的是底层通信操作,这使得在单机的进程间进行简单数据传递不太方便,这时使用下面将介绍的WM_COPYDATA消息将更合适些。   2.13 WM_COPYDATA消息   WM_COPYDATA是一种非常强大却鲜为人知的消息。当一个应用向另一个应用传送数据时,发送方只需使用调用SendMessage函数,参数是目的窗口的句柄、传递数据的起始地址、WM_COPYDATA消息。接收方只需像处理其它消息那样处理WM_COPY DATA消息,这样收发双方就实现了数据共享。   WM_COPYDATA是一种非常简单的方法,它在底层实际上是通过文件映射来实现的。它的缺点是灵活性不高,并且它只能用于Windows平台的单机环境下。   3 结束语   Win32 API为应用程序实现进程间通信提供了如此多种选择方案,那么开发者如何进行选择呢?通常在决定使用哪种IPC方法之前应考虑以下一些问题:   (1)应用程序是在网络环境下还是在单机环境下工作。 进程间通信与应用程序间通信及其实现技术 收藏   摘要 本文讨论了进程间通信与应用程序间通信的含义及相应的实现技术,并对这些技术的原理、特性等进行了深入的分析和比较。
关键词 信号 管道 消息队列 共享存储段 信号灯 远程过程调用 Socket套接字 MQSeries 1 引言   进程间通信的主要目的是实现同一计算机系统内部的相互协作的进程之间的数据共享与信息交换,由于这些进程处于同一软件和硬件环境下,利用操作系统提供的的编程接口,用户可以方便地在程序中实现这种通信;应用程序间通信的主要目的是实现不同计算机系统中的相互协作的应用程序之间的数据共享与信息交换,由于应用程序分别运行在不同计算机系统中,它们之间要通过网络之间的协议才能实现数据共享与信息交换。进程间通信和应用程序间通信及相应的实现技术有许多相同之处,也各有自己的特色。即使是同一类型的通信也有多种的实现方法,以适应不同情况的需要。
为了充分认识和掌握这两种通信及相应的实现技术,本文将就以下几个方面对这两种通信进行深入的讨论:问题的由来、解决问题的策略和方法、每种方法的工作原理和实现、每种实现方法的特点和适用的范围等。 2 进程间的通信及其实现技术   用户提交给计算机的任务最终都是通过一个个的进程来完成的。在一组并发进程中的任何两个进程之间,如果都不存在公共变量,则称该组进程为不相交的。在不相交的进程组中,每个进程都独立于其它进程,它的运行环境与顺序程序一样,而且它的运行环境也不为别的进程所改变。运行的结果是确定的,不会发生与时间相关的错误。
但是,在实际中,并发进程的各个进程之间并不是完全互相独立的,它们之间往往存在着相互制约的关系。进程之间的相互制约关系表现为两种方式:
(1) 间接相互制约:共享CPU
(2) 直接相互制约:竞争和协作
竞争--进程对共享资源的竞争。为保证进程互斥地访问共享资源,各进程必须互斥地进入各自的临界段。
协作--进程之间交换数据。为完成一个共同任务而同时运行的一组进程称为同组进程,它们之间必须交换数据,以达到协作完成任务的目的,交换数据可以通知对方可以做某事或者委托对方做某事。
共享CPU问题由操作系统的进程调度来实现,进程间的竞争和协作由进程间的通信来完成。进程间的通信一般由操作系统提供编程接口,由程序员在程序中实现。UNIX在这个方面可以说最具特色,它提供了一整套进程间的数据共享与信息交换的处理方法--进程通信机制(IPC)。因此,我们就以UNIX为例来分析进程间通信的各种实现技术。
在UNIX中,文件(File)、信号(Signal)、无名管道(Unnamed Pipes)、有名管道(FIFOs)是传统IPC功能;新的IPC功能包括消息队列(Message queues)、共享存储段(Shared memory segment)和信号灯(Semapores)。
(1) 信号
信号机制是UNIX为进程中断处理而设置的。它只是一组预定义的值,因此不能用于信息交换,仅用于进程中断控制。例如在发生浮点错、非法内存访问、执行无效指令、某些按键(如ctrl-c、del等)等都会产生一个信号,操作系统就会调用有关的系统调用或用户定义的处理过程来处理。
信号处理的系统调用是signal,调用形式是:
signal(signalno,action)
其中,signalno是规定信号编号的值,action指明当特定的信号发生时所执行的动作。
(2) 无名管道和有名管道
无名管道实际上是内存中的一个临时存储区,它由系统安全控制,并且独立于创建它的进程的内存区。管道对数据采用先进先出方式管理,并严格按顺序操作,例如不能对管道进行搜索,管道中的信息只能读一次。
无名管道只能用于两个相互协作的进程之间的通信,并且访问无名管道的进程必须有共同的祖先。
系统提供了许多标准管道库函数,如: pipe()--打开一个可以读写的管道; close()--关闭相应的管道; read()--从管道中读取字符; write()--向管道中写入字符;
  有名管道的操作和无名管道类似,不同的地方在于使用有名管道的进程不需要具有共同的祖先,其它进程,只要知道该管道的名字,就可以访问它。管道非常适合进程之间快速交换信息。
(3) 消息队列(MQ)
消息队列是内存中独立于生成它的进程的一段存储区,一旦创建消息队列,任何进程,只要具有正确的的访问权限,都可以访问消息队列,消息队列非常适合于在进程间交换短信息。
消息队列的每条消息由类型编号来分类,这样接收进程可以选择读取特定的消息类型--这一点与管道不同。消息队列在创建后将一直存在,直到使用msgctl系统调用或iqcrm -q命令删除它为止。
系统提供了许多有关创建、使用和管理消息队列的系统调用,如:
int msgget(key,flag)--创建一个具有flag权限的MQ及其相应的结构,并返回一个唯一的正整数msqid(MQ的标识符);
int msgsnd(msqid,msgp,msgsz,msgtyp,flag)--向队列中发送信息;
int msgrcv(msqid,cmd,buf)--从队列中接收信息;
int msgctl(msqid,cmd,buf)--对MQ的控制操作;
(4) 共享存储段(SM)
共享存储段是主存的一部分,它由一个或多个独立的进程共享。各进程的数据段与共享存储段相关联,对每个进程来说,共享存储段有不同的虚拟地址。系统提供的有关SM的系统调用有:
int shmget(key,size,flag)--创建大小为size的SM段,其相应的数据结构名为key,并返回共享内存区的标识符shmid;
char shmat(shmid,address,flag)--将当前进程数据段的地址赋给shmget所返回的名为shmid的SM段;
int shmdr(address)--从进程地址空间删除SM段;
int shmctl (shmid,cmd,buf)--对SM的控制操作;
SM的大小只受主存限制,SM段的访问及进程间的信息交换可以通过同步读写来完成。同步通常由信号灯来实现。SM非常适合进程之间大量数据的共享。
(5) 信号灯
在UNIX中,信号灯是一组进程共享的数据结构,当几个进程竞争同一资源时(文件、共享内存或消息队列等),它们的操作便由信号灯来同步,以防止互相干扰。
信号灯保证了某一时刻只有一个进程访问某一临界资源,所有请求该资源的其它进程都将被挂起,一旦该资源得到释放,系统才允许其它进程访问该资源。信号灯通常配对使用,以便实现资源的加锁和解锁。
进程间通信的实现技术的特点是:操作系统提供实现机制和编程接口,由用户在程序中实现,保证进程间可以进行快速的信息交换和大量数据的共享。但是,上述方式主要适合在同一台计算机系统内部的进程之间的通信。 3 应用程序间的通信及其实现技术   同进程之间的相互制约一样,不同的应用程序之间也存在竞争和协作的关系。UNIX操作系统也提供一些可用于应用程序之间实现数据共享与信息交换的编程接口,程序员可以通过自己编程来实现。如远程过程调用和基于TCP/IP协议的套接字(Socket)编程。但是,相对普通程序员来说,它们涉及的技术比较深,编程也比较复杂,实现起来困难较大。
于是,一种新的技术应运而生--通过将有关通信的细节完全掩盖在某个独立软件内部,即底层的通讯工作和相应的维护管理工作由该软件内部来实现,用户只需要将通信任务提交给该软件去完成,而不必理会它的具体工作过程--这就是所谓的中间件技术。
我们在这里分别讨论这三种常用的应用程序间通信的实现技术--远程过程调用、会话编程技术和MQSeries消息队列技术。其中远程过程调用和会话编程属于比较低级的方式,程序员参与的程度较深,而MQSeries消息队列则属于比较高级的方式,即中间件方式,程序员参与的程度较浅。
4.1 远程过程调用(RPC)
远程过程调用是按下述方式工作的:当一个应用程序A需要与远程的另一个应用程序B交换信息或要求B提供协助时,A将在本地产生一个请求,通过通讯链路,通知B接收信息或提供相应的服务,B完成相关处理后将确认信息或结果返回给A。
RPC机制强调通信的两个应用程序所处的环境和平台中必须是相同的,而且必须同时处于运行状态。做远程调用时,两者必须先建立连接,而且通讯链路质量对它的效果影响很大。
RPC的优点是应用程序采用调用/返回方式通讯,拥有很高的潜在效率,但需要应用程序间的紧密藕合,通讯线路必须在通信期间一直保持良好的状态,而且必须进行大量的底层通讯的编程工作。
4.2 会话编程
会话编程类似于人们打电话,拨号--接通--说话--对方回答--挂机。基于TCP/IP协议的Socket编程就是一种典型的会话编程方式。它可适用于客户/服务通信方式,还能适用于点--点通信方式。
下面,我们分别介绍服务器端和客户端的具体任务。
(1) 服务器端
服务进程首先创建一个套接口,使用Socket()调用;然后,将该套接口与本机的IP地址和某一空闲端口相关联,使用Bind()调用;这时,服务端就可以用Listen()调用来侦听来自客户程序的数据;套接口一旦处于听模式,服务进程将可以接收一个连接,并允许传递数据,使用Accept()调用来完成;最后使用Read()调用来读入数据,同时,还可以用Write()调用来向发送进程写回一些数据,如确认信息或回显信息。 客户端   客户进程也是首先创建一个套接口,使用Socket()调用;然后,客户进程就使用Connect()调用试图连接一个服务;连接成功之后,就可以利用Write()调用向服务器发送数据,同时,还可以使用Read()调用读取服务器写回的数据。
目前的网络一般都支持TCP/IP协议,UNIX和WINDOWS也都提供相应的编程接口,用户可以随心所欲地编制出合乎自己要求的通信程序。现行大多数的应用程序间的通信采取的就是这种方式。但是,这种Socket编程技术,要求程序员必须熟悉相关概念,自己设计控制流程,客户和服务进程必须相互配合且必须都处于运行状态,技术上有一定的难度。
4.3 MQSeries消息队列
为了简化应用程序间的通信,使得通信既具有较高的可靠性,又保证实现的简单性,我们希望能有一种独立的通信软件,应用程序只需将任务提交给该软件,由该软件自动去完成信息的传递工作,这即是我们前面提到的中间件技术。IBM公司的MQSeries就是基于这种技术的商业化产品。
应用程序A和B位于同一计算机,而应用程序C位于远程的其它计算机系统中。当应用程序A需要和B通讯时,它通过调用MQSeries接口将消息放入队列Q1,应用程序B在适当的时候读取该消息,或消息本身到达后唤醒应用程序B。当应用程序A需要和C通讯时,它通过相同的方式将消息放入队列Q2,应用程序C在适当的时候读取该消息。
应用程序之间的消息传递是通过队列来实现的,是间接的。由于不存在直接连接,C关闭时A仍然能正常运行,不仅如此,当C不在运行时,消息还可以触发该程序。
MQSeries优点可以确保信息是永久的、可恢复的;确保信息成功发送且仅有一次发送,可以支持关键业务,如证券交易信息的传递;确保信息传递是保密的;同时,使用MQSeries,不需要应用程序和通讯介质以及远程应用程序之间的耦合,也不需要应用程序同时运行。MQSeries是应用程序间通信的首选技术。
MQSeries接口提供的调用主要有:
MQCONN--连接一个队列管理器,以后它发送和读入的消息的所有消息都由这个队列管理器管理;
MQOPEN--打开该应用程序所连接的队列;
MQPUT--将消息写入已打开的队列中;
MQGET--从该队列中读出消息;
MQINQ--获得关于队列的属性;
MQCLOSE--关闭队列(对队列执行完所有操作后);
MQPUT1--它执行三个操作,先调用MQOPEN打开队列,然后调用MQPUT写入一条消息,最后调用MQCLOSE关闭队列;
MQDISC--断开和队列管理器的连接(对队列管理器的所有操作完成后);
4.4 三种实现技术的特性比较
表1清楚地列出了RPC、 Socket编程、MQSeries的不同特性。
  比较项目 Socket编程 RPC MQSeries
  属性 会话 远程调用 消息队列
  类型 会话 调用/返回 队列
  编程接口 非阻塞 阻塞 非阻塞
  通信对方运行 是 是 否
  应用程序类型 面向连接 面向连接 无连接
  数据流模式 点-点,客户机/服务器 客户机/服务器 所有模式
  逻辑路由 否 否 是
  永久数据 否 否 是
  表1 三种中间件的特性比较 4 结束语   各种进程间通信和应用程序间通信的实现技术都具有自己的特点和使用范围。管道、消息队列、共享内存等技术最适用于同一计算机系统内部的进程间通信,以保证高效率。而远程过程调用、Socket会话编程、MQSeries则最适用于远程的应用程序之间通信,可以简化通信的编程,当然也保证通信的可靠性。尤其是MQSeries,它是一个比较完善的中间件产品,为许多的信息系统所选用。如我公司的帐务系统与各金融系统的话费信息的交换选择的就是MQSeries。有时,在一个信息系统里面,既存在进程间通信的需求,也存在应用程序间通信的需求,这时就必须分别选择两种不同的实现技术。因此,在实际信息系统建设的过程中,我们在选择哪种实现技术时,应根据信息系统的不同情况和不同需求,根据系统开发和维护的成本,选择一种或是几种实现技术,以求得整个系统的优化。
[3] [004] 详解Windows平台筹建Androiod开发环境
&&&&来源:&互联网& 发布时间:&
[004] 详解Windows平台搭建Androiod开发环境
[004] 详解Windows平台搭建Androiod开发环境 日  Android开发所需工具   1)JDK   Android应用主要采用Java语言开发,因为必须要安装JDK。开发Android需要安装JDK1.5以上的版本   2)Android SDK   Android SDK是Google提供的Android软件开发包。   3)Eclipse   Eclipse是开发Android的首选IDE(集成开发环境),也是Google官方所推荐的,建议使用Eclipse3.4以后的版本。   4)ADT   ADT是Android Development Tools的缩写,即Android开发工具,这是Android开发团队专门为Eclipse定制的用于开发Android的插件。   Android开发环境的搭建   1、JDK的下载与安装   JDK的下载地址:http://www.oracle.com/technetwork/java/javase/down loads/index.html,这里我们下载JDK1.6,找到如下图所示内容,点击"Download JDK"     紧接着进入下面的页面:     首先勾选"Accept License Agreement"。可以看到在上图中下载列表的最后3个都是Windows平台的JDK,具体需要下载哪一个,需要取决于你电脑的硬件。我就不对"x86"、"Intel Itaninum"和"X64"进行解释了,网上有很多关于这方面的介绍。如果你还是不清楚应该下载哪一个,那么我建议你下载适用于"Windows x86"的JDK版本"jdk-6u25-windows-i586.exe"。   下载完成后双击开始安装,安装完成后,需要配置环境变量。如下图是我电脑上JDK的安装位置:     右键点击"我的电脑",依次选择"属性"-"高级"-"环境变量",在这里需要为JDK配置两个环境变量:classpath和path。它们的值分别为:   classpath=D:\Program Files\Java\jre1.6.0_06\lib\rt. D:\Program Files\Java\jdk1.6.0_06\lib\tools.jar   path=D:\Program Files\Java\jdk1.6.0_06\$path   说明:上面的$path表示系统环境变量path原有的值。即"系统变量"中默认就应该有一个名为"Path"的环境变量,我们只需要点击"编辑",然后将D:\Program Files\Java\jdk1.6.0_06\追加在Path环境变量原有值的最前面即可,一定要注意不要丢了后面的那个分号;。   2、Android SDK的下载与安装   首先需要说明一点:在Android SDK1.6以后的版本Google只提供了一个大约22MB左右的SDK Setup工具,这是一个SDK管理器,用于统一下载管理各版本的SDK。这就意味着Android SDK的安装将分为两步:首先安装SDK管理器;再通过SDK管理器下载更新具体的SDK版本。   1)Android SDK管理器的下载与安装   安装哪个版本的SDK管理器,对后面安装具体的SDK版本几乎是没有影响的,也就是说即使你安装的是Android1.6的SDK管理器,一样可以下载管理Android1.6、Android2.0、Android2.0.1、Android2.1、Android2.2等版本的SDK。因此,我们随便选择一个版本的SDK管理器,比如以Android2.0.1的SDK管理器为例。   下载地址https://dl-ssl.google.com/android/repository/andro id-2.0.1_r01-windows.zip,下载后只需解压即可。注意:解压后SDK管理器的路径中不要包含中文,通常建议将其解压在某个磁盘根目录。例如,在我的电脑上,解压后的SDK管理器的路径为D:\android-sdk_r06-windows   2)Android SDK的安装   一定要明白,步骤1)只是完成了SDK管理器的安装,现在你电脑上还没有任何一个版本的SDK(具体版本的SDK位于android-sdk_r06-windows\platforms\目录下,此时查看该目录,应该是空的,因为我们还没有安装任何版本的SDK),接下来的任务就是安装SDK。SDK的安装有两种方式:在线安装和离线安装。那么这两种安装方式有什么区别呢?我该采用哪种安装方式?   如果你的电脑能够上网(联网状态)并且下载速度较快,建议你采用在线安装方式,通过SDK管理器来下载各版本的SDK;如果你的电脑不能够上网(非联网状态)或者下载速度比较慢,建议你采用离线安装方式,即通过其它联网的环境将各版本的SDK下载好,再拷贝到你的电脑上,配置到SDK管理器中即可。下面将分别介绍这两种安装方式。   在线方式安装SDK   刚才我们将SDK管理器安装到了D:\android-sdk-windows,在该目录下有个exe可执行文件"SDK Setup.exe",双击运行它,将会看到如下图所示界面:     如果你看到的和上图不一样,请忽略这里。从上图可以看出,SDK管理器是通过访问地址https://dl-ssl.google.com/android/repository/repos itory.xml来获取能够下载的SDK资源信息的,同时也会发现提示信息"Failed to fetch URL... ...",这时只需要点击左侧的"Settings"选项,勾选右侧"Misc"一栏的"Force https://... sources to be fetched using http://..."即可。如下图所示:     做了上面的设置后,SDK管理器马上就开始连接到google服务器检测能够下载更新的SDK版本信息,等检测完成后,点击窗口左侧的"Available Packages",即可在右侧看到当前能够更新的相关SDK资源,如下图所示:     勾选在上图中右侧列出的所有可更新内容,再点击窗口右下角的"Install Selected",将看到如下图所示界面:     选中"Accept All",再点击"Install"即开始下载更新、安装SDK,剩下的事就是等待它更新完成,这个时间可能会有点长,取决于你电脑的网速。更新完成后整个SDK的在线安装工作也就完成了。这时再去查看android-sdk_r06-windows\platforms\目录,就不再是空目录了,里面包含了以"android-"开头的目录,每一个目录都代表着一个版本的SDK。   离线方式安装SDK   离线方式安装SDK就需要我们在能够联网的环境下载好我们需要的SDK版本,然后将其配置到SDK管理器中即可。例如:我们只需要Android1.6和Android2.2的SDK,这两个版本的SDK下载地址分别是:   Android1.6 SDK下载地址:https://dl-ssl.google.com/android/repository/andro id-1.6_r02-windows.zip   Android2.2 SDK下载地址:https://dl-ssl.google.com/android/repository/andro id-2.2_r02-windows.zip   下载完成后,将它们解压到SDK管理器安装目录的platforms目录下,在我的电脑上是D:\android-sdk_r06-windows\platforms,解压后的目录如下图所示:     这样就完成了两个版本SDK的离线安装。   3、Eclipse的下载与安装   建议安装Eclipse3.4以上的版本。访问http://www.eclipse.org/downloads/,将会看到如下图所示页面:     将会看到Eclipse当前的最新版本为3.6.2,这里我们下载第一个"Eclipes IDE for Java Developers",点击右上方的"Windows 32 Bit",根据提示进行下载。下载完成后,将其解压即可,这样就完成了Eclipse的安装。   4、ADT的安装   在安装ADT前,需要说明的是,ADT与我们先前安装的Android SDK管理器有个版本对应关系,如果安装的是不匹配的版本,很可能会造成ADT不能正常使用的问题。ADT与SDK管理器的版本对应关系如下:   ADT 0.9.4 对应于 Android1.5的SDK管理器;   ADT 0.9.5 对应于 Android1.6的SDK管理器;   ADT 0.9.6 对应于 Android2.0的SDK管理器;   ADT 0.9.7 对应于 Android2.0.1的SDK管理器;   ADT 0.9.8 已被废止,不再使用   ADT 0.9.9 对应于 Android2.1的SDK管理器;   ADT 8.0.0 对应于 Android2.2的SDK管理器;   ADT 8.0.1 对应于 Android2.2的SDK管理器;   ADT 9.0.0 对应于 Android2.3的SDK管理器;   ADT 10.0.0 对应于 Android2.3.3的SDK管理器;   因为我们先前安装的SDK管理器的版本是2.0.1,因此我们需要下载安装ADT 0.9.7。下载地址:http://dl.google.com/android/ADT-0.9.7.zip,如果你需要下载其它版本的ADT插件,只需要修改这里的版本号即可。   下载完成后,不要去解压它。这时,开启前面安装的Eclipse,点击标题栏中的"Help",选择"Install New Software...",将弹出如下图所示窗口:     点击上图中右上方的"Add..."按钮,将会看到如下所示窗口:     点击上图中的"Archive..."按钮,将会看到如下图所示窗口:     可以看到这是一个打开文件窗口,在这里找到刚才下载好的ADT-0.9.7.zip,点击"打开"按钮,将看到如下所示窗口:     将上面列出的内容全部勾选上,即勾选"Android DDMS"和"Android Development Tools",再将下面选项"Contact all update sites during install to find required software"前的勾去掉,点击"Next"按钮,进入到如下窗口:     继续点击"Next"     选择"I accept the terms of the license agreements",再点击"Finish"则开始安装。     这时将弹出如上图所示的安全警告窗口,点击"OK"。几秒钟后ADT就安装完成了,这时会弹出一个提示,询问是否启动Eclipse,选择"Restart Now",待Eclipse重启完成后,ADT的安装工作就完成了。     5、将Eclipse ADT与Android SDK管理器进行关联   依次点击Eclipse的"Window"-"Preferences"-"Android",这时将弹出一个错误提示,如下图所示:     它的大致意思是"Android SDK的安装位置还没有指定,请在Preferences&Android中设置",其实我们的关联工作就是来做该设置的。关闭错误提示小窗口后,点击上图中的"Browse..."按钮,找到SDK管理器所在目录,即"D:\android-sdk_r06-windows",如下图所示:     点击确定后将看到如下图所示窗口:     接着点击上图中的"Apply"按钮,如果看到的结果类似于下面的窗口,则说明ADT与SDK管理器关联成功。     我们可以看到,Eclipse ADT插件已经检测到我们通过离线方式安装的两个SDK版本:Android1.6和Android2.2,点击"OK"按钮完成。   好了,到这里"Windows平台搭建Androiod开发环境"就全部介绍完了。其实我们还少了最后一个环节:"创建一个Android应用程序,来验证我们的环境配置是否正确",因为这将涉及到Android虚拟设备的创建、Eclipse下开发Android应用程序,考虑到这节讲解的内容过多,验证将放在后面的文章中单独作介绍。
最新技术文章:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!
(C)9IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

我要回帖

更多关于 下梗不存在的世界资源 的文章

 

随机推荐