导航:首页 > 编程语言 > dabs编程是什么意思

dabs编程是什么意思

发布时间:2022-11-19 08:09:11

① C语言是哪个公司的产品

C语言之所以要起名为“C”,是取的“BCPL”的第二个字母(第一个字母用来命名之前被发明的B语言) 。当C语言发展到顶峰的时刻,出现了一个版本叫C with Class,那就是C++最早的版本,在C语言中增加class关键字和类,那个时候有很多版本的C都希望在C语言中增加类的概念;后来C标准委员会决定为这个版本的C起个新的名字,那个时候征集了很多种名字,最后采纳了其中一个人的意见,以C语言中的++运算符来体现它是C语言的进步,故而叫C++,成立了C++标准委员会。 美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)博士在20世纪80年代初期发明并实现了C++(最初这种语言被称作“C with Classes”)。一开始C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。虚函数(virtual function)、运算符重载(operator overloading)、多重继承(multiple inheritance)、模板(template)、异常(exception)、RTTI、命名空间(name space)逐渐被加入标准。1998年国际标准组织(ISO)颁布了C++程序设计语言的国际标准ISO/IEC 1988-1998。C++是具有国际标准的编程语言,通常称作ANSI/ISO C++。1998年是C++标准委员会成立的第一年,以后每5年视实际需要更新一次标准,下一次标准更新原定是在2009年,目前我们一般称该标准C++0x,但是由于对于新特性的争端激烈,除了在Technical Report 1(tr1)中的新增修改被基本确定外,完整的标准还遥遥无期。况且遗憾的是,由于C++语言过于复杂,以及经历了长年的演变,直到现在(2010年)都没有有一个编译器完全符合这个标准。
编辑本段组成部分
根据Effective C++第三版第一条款的描述,现在C++由以下四个“子语言”组成: 1、C子语言。C++支持C语言的几乎全部功能,主要是c89的部分,在语法上与C语言仅有极微妙的差别(如括号表达式的左右值性,具体请参考C++标准文献)。 2、面向对象的C++语言。C++语言原本不具备面向对象的设计功能,然而随着面向对象编程的概念的提出以及如Java等语言的发展成熟,C++语言也开发出了支持面向对象功能的版本. 3、泛型编程语言。C++强大(但容易失控的)模板功能使它能在编译期完成许多工作,从而大大提高运行期效率。 4、STL(C++标准模板库,Standard Template Library)。随着STL的不断发展,它已经逐渐成为C++程序设计中不可或缺的部分,其效率可能比一般的native代码低些,但是其安全性与规范性使它大受欢迎。 此外,包含在TR1等中的C++0x将实现的新功能在开发和测试中。
编辑本段语言发展
C++语言发展大概可以分为三个阶段: 第一阶段从80年代到1995年。这一阶段C++语言基本上是传统类型上的面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大份额; 第二阶段从1995年到2000年,这一阶段由于标准模板库(STL)和后来的Boost等程序库的出现,泛型程序设计在C++中占据了越来越多的比重性。当然,同时由于Java、C#等语言的出现和硬件价格的大规模下降,C++受到了一定的冲击; 第三阶段从2000年至今,由于以Loki、MPL等程序库为代表的产生式编程和模板元编程的出现,C++出现了发展历史上又一个新的高峰,这些新技术的出现以及和原有技术的融合,使C++已经成为当今主流程序设计语言中最复杂的一员。
编辑本段入门书籍
C++是一种语言,仅仅是它的语法、特性、标准类库就已经是一门非常高深的课程,所以在开始学习的时候,必须先要打好基础。在市面上有很多Visual C++的书,虽然其中可能会花1-2章来介绍C++的基本特性,但是那绝对不会让你入门。因此,初学者学习C++应该选择针对C++语言本身的书籍,而不能是针对Visual C++、MFC或者Windows API的。 学习C++应该由易至难,循序渐进。以前经常有人说学习C++之前应该学习C语言。事实上那不是必须的,C++和C语言虽然有关系,但仍然是两种不同的语言。当然,在学习C++之前学习过其他编程语言是很有好处的。那会使学习C++的速度更快,毕竟很多计算机语言的概念都是相通的。而对于零基础的初学者来说,则是应该静下心来,不要急躁。要成为C++的高手,不是那么容易的,必须要花很大的努力。 从入门教材的选择上,主要看学习者的自身情况。如果已经有过学习高级语言的经历,那么推荐使用谭浩强的《C++程序设计》。注意是04年版的,06年版的那本书是阉割版,上来就面向对象。虽然说C和C++是相似的,但是前面已经说了,C和C++应该作为两种语言来学习,所以06年的那本内容就稍微欠缺一点了。谭浩强04版的这本书内容比较规整的,条理也很清晰。如果有过其他高级语言的基础,那么估计半年就能对C++的概况有个了解了。谭浩强老师的书已经成为了全国各大高等院校的教科书,是比较受到认可的。 如果是从零基础开始学C++,那么推荐使用潘嘉杰的《易学C++》。这本书是2008年出的新书,听说是个学生在读书的时候写的。这本书网上有下载免费的电子版。这本书主要就是针对初学者的,讲得也比较生动有趣,比较提得起学习的兴趣。所以没有基础的初学者选这本书也是不错的,就是想要很快成为高手,可能看这本书还不够。 至于看完入门的书之后,就应该看一些高层次的书了。比如<<The C++ Programming Language>>和<<C++ Primer>>,同时也可以向STL、MFC、API等各个方向发展。如果对别的语言感兴趣,还能去看看C#和Java,它们和C++从语法和很多概念上都是类似的。
编辑本段设计原则
· C++设计成静态类型、和C同样高效且可移植的多用途程序设计语言。 · C++设计成直接的和广泛的支援多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。 · C++设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。 · C++设计成尽可能与C兼容,籍此提供一个从C到C++的平滑过渡。 · C++避免平台限定或没有普遍用途的特性。 · C++不使用会带来额外开销的特性。 · C++设计成无需复杂的程序设计环境。 出于保证语言的简洁和运行高效等方面的考虑,C++的很多特性都是以库(如STL)或其他的形式提供的,而没有直接添加到语言本身里。关于此类话题,C++之父的《C++语言的设计和演化》 里做了详尽的陈述。 Hello World程序
在使用兼容C89标准(也称为ANSI C)的编译器时,下面这个程序显示“Hello, world!”然后结束运行:
(事实上这并不是符合98标准[ISO C++]的C++程序,而且在多数编译器上这个程序也不能运行,若要在比较旧的编译器上编译该程序,应将stdio.h改为iostream.h)
#include <stdio.h>
int main()
{
printf("Hello, world!\n");
return 0;
}
(以上是c语言代码,c++语言是c语言高一级的版本)
在使用兼容C++98标准(ISO/IEC 14882-1998)的编译器时,下面的程序也是可以的:
#include <iostream.h>
int main()
{
cout << "Hello, world!" << endl;
return 0;
}
在使用兼容C++ STL的编译器时,应当是:
#include <iostream>
using namespace std;
int main()
{
cout<<"Hello,world!"<<endl;
return 0;
}
根据ISO C++的规定,main函数的形式只能是
int main(void)
{
...
}
以及
int main(int argc,char * argv[])
{
...
}
尽管如此,但在Visual C++ 2003以前的Microsoft Visual Studio编译器上,
void main()
{
...
}
也被支持,但这并不正确,也不标准。这样的写法会使程序代码丧失跨平台的特性。每年都有专业人士规定C++的语法,这也是C++优于其他编程语言的原因之一,由它衍生的Java已成为通用编程语言中广受欢迎的一种。

编辑本段代码性能
一般认为,使用Java或C#的开发成本比C++低。但是,如果你能够充分分析C++和这些语言的差别,会发现这句话的成立是有条件的。这个条件就是:软件规模和复杂度都比较小。如果不超过3万行有效代码(不包括生成器产生的代码),这句话基本上还能成立。否则,随着代码量和复杂度的增加,C++的优势将会越来越明显。造成这种差别的就是C++的软件工程性。在Java和C#大谈软件工程的时候,C++实际上已经悄悄地将软件工程性提升到一个前所未有的高度。这一点被多数人忽视,并且被大公司竭力掩盖。 语言在软件工程上的好坏,依赖于语言的抽象能力。从面向过程到面向对象,语言的抽象能力有了一个质的飞跃。但在实践中,人们发现面向对象无法解决所有软件工程中的问题。于是,精英们逐步引入、并拓展泛型编程,解决更高层次的软件工程问题。(实际上,面向对象和泛型编程的起源都可以追溯到1967年,但由于泛型编程更抽象,所以应用远远落后于面向对象)。
编辑本段应用实例
哪些程序是用C++写的: 主流的3种操作系统Windows内核都是用C语言和汇编写的,上层高级特性是用C++写的。 《魔兽世界》等几乎所有的网络游戏,网络搜索引擎,我们所用的大多数软件都是用C++写的(硬件也有很多用到C++的)。 以下是一些C++的应用: Amazon:Software for large-scale e-commerce Apple: OS X is written in a mix of language, but a few important parts are C++(当然最核心的部分都是汇编与c语言). AT&T:The largest US telecommunications provider. o provisioning systems o systems for rapid network recovery after failure Autodesk: A large number of major number of application in the CAD domain Ericsson: o server platform. o TDMA-CDMA HLR o GSM-TDMA-CDMA mobility gateway Google: web search engine, etc。 HP: Here is a tiny fraction of HP's C++ apps: o C, C++, Fortran90 compilers, and linker for the new HP IA64 platform (these add to more than 1 million lines of C++ code). IBM: o OS/400. o K42: a high performance, open source, general-purpose operating system kernel for cache-coherent multiprocessors. Intel: o Vtune performace analysis software o compilers and optimizers o lots of chip design and manufacturing software JPL (Jet Propulsion Lab, NASA): Mars rover autonomous driving system (incl. scene analysis and route planning). C++ on Mars! Also lots of supporting software "on the ground" (i.e. Earth). Microsoft: o Windows XP o Windows NT (NT4 and 2000) o Windows 9x (95, 98, Me) o Microsoft Office (Word, Excel, Access, PowerPoint, Outlook) o Internet Explorer (including Outlook Express) o Visual Studio o SQL Mozilla: Firefox browser and Thunderbird mail client (open source) MySQL: MySQL Server (about 250,000 lines of C++) and MySQL Cluster. Arguably the world's most popular open source database Nokia: o Mobile Communications radio-station/internet bridges: FlexiGGSN (Gateway GPRS Support Node) and FlexiSGSN (Server GPRS Support Node). o MSC/HLR Sun: o The HotSpot Java Virtual Machine is written in C++ Symbian OS: rationale: "[...] using C++ for all system code, from the kernel upwards." This is one of the most widespread OS's for cellular phones KDE from linux is written in C++. telephone systems: I think it would be almost easier to list the systems which aren't written in C++ C++写出的软件,还包括 VLC, 着名的开源视频播放器; LAMMPS,着名分子动力学模拟软件,其中包括一部分Fortran代码;
编辑本段编程技巧
使用new和delete进行动态内存分配和释放
运算符new和delete是C++新增的运算符,提供了存储的动态分配和释放功能。它的作用相当于C语言的函数malloc()和free(),但是性能更为优越。使用new较之使用malloc()有以下的几个优点: (1)new自动计算要分配类型的大小,不使用sizeof运算符,比较省事,可以避免错误。 (2)自动地返回正确的指针类型,不用进行强制指针类型转换。 (3)可以用new对分配的对象进行初始化。 使用例子: (1)int* p; p=new int[10]; //分配一个含有10个整数的整形数组 delete[] p; //删除这个数组 (2)int* p; p=new int (100);//动态分配一个整数并初始化
使用inline内联函数替代宏调用
对于频繁使用的函数,C语言建议使用宏调用代替函数调用以加快代码执行,减少调用开销。但是宏调用有许多的弊端,可能引起不期望的副作用。例如宏:#define abs(a)(a)<0?(-a):(a)),当使用abs(i++)时,这个宏就会出错。 所以在C++中应该使用inline内联函数替代宏调用,这样既可达到宏调用的目的,又避免了宏调用的弊端。 使用内联函数只须把inline关键字放在函数返回类型的前面。例如: inline int Add(int a,int b);//声明Add()为内联函数 这样编译器在遇到Add()函数时,就不再进行函数调用,而是直接嵌入函数代码以加快程序的执行。
使用函数重载
在C语言中,两个函数的名称不能相同,否则会导致编译错误。而在C++中,函数名相同而参数数据类型不同的两个函数被解释为重载。例如: void PutHz(char* str);//在当前位置输出汉字 void PutHz(int x,?int y,?char * str);//在x,y处输入数字 使用函数重载可以帮助程序员处理更多的复杂问题,避免了使用诸如intabs()、fabs()、dabs()等繁杂的函数名称;同时在大型程序中,使函数名易于管理和使用,而不必绞尽脑汁地去处理函数名。同时必须注意,参数数据类型相同,但是函数返回类型不同的两个函数不能重载。
用引用(reference)代替指针进行参数传递
在C语言中,如果一个函数需要修改用作参数的变量值的时候 ,参数应该声明为指针类型。例如: void Add(int *a) { (*a)++; } 调用时则使用 Add(&x); //其中x为int或可以转化为int的类型,如unsigned int, 但这时候编译器通常会给出warning 对于复杂的程序,使用指针容易出错,程序也难以读懂。在C++中,对于上述情况 可以使用引用来代替指针,使程序更加清晰易懂。引用就是对变量取的一个别名,对引用进行操作,这就相当于对原有变量进行操作。例如使用引用的函数定义为: void Add(int& a) { a++;//a为一个整数的引用 } 调用时使用 Add(x);//其中x为int 这个函数与使用指针的上一个函数的功能是一样的,然而代码却更为简洁和清晰易懂。
使用缺省参数
在C++中函数可以使用缺省参数,例如: void PutHzxy(char *str,int x=-1, int y=-1) { if(x==-1) x=wherex(); if(y==-1) x=wherex(); moveto(x,y); PutHx(str); } 可以有三种方式调用函数PutHzxy(),例如: PutHzxy("C++语言");//使用缺省参数,在当前位置输出 PutHzxy("C++语言",10,10);//没有使用缺省参数 PutHzxy("C++语言",10);//对y使用缺省参数,指定x的位置 通常的情况下,一个函数应该具有尽可能大的灵活性。使用缺省参数为程序员处理更大的复杂性和灵活性问题提供了有效的方法,所以在C++的代码中都大量地使用了缺省参数。 需要说明的是,所有的缺省参数必须出现在不缺省参数的右边。亦即,一旦开始定义缺省参数,就不可再说明非缺省的参数。否则当你省略其中一个参数的时候,编译器无法知道你是自定义了这个参数还是利用了缺省参数而定义了非缺省的参数。 例如: void PutHzxy(char*str,int x=-1,int y=-1)//正确 void PutHzxy(int x=-1,int y=-1,char*str)//错误
使用STL
STL(Standard Template Library,标准模板库), STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),并包括一些工具类如auto_ptr。几乎所有的代码都采用了模板类和模版函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。 #include<vector>// 包含相关的头文件/ typedef std::vector<int> intvector;//使用typedef 使代码看起来更简洁 int main() { intvector vi; for(int i=0;i<10,i++) vi.push_back(i);//使用push_back添加元素 for(int i=0;i<vi.size();i++) std::cout<<vi[i]<<" ";//[]操作符被重载,使得我们可以像访问数组一样访问vector中的元素 }
编辑本段开发方式
在unix世界有大量的程序员是传统的非IDE的方式进行软件开发。一般是如下组合: 1.编译器:gcc,clang等 2.编辑器:一般是vim/emacs 3.make:gnu make 或者bsd 的pmake等,功能与用法基本一样 4.版本管理:cvs,svn,git等 5.代码阅读:cscope,ctags,lxr等
编辑本段开发环境
1.Visual Studio(Visual C++) 2.Borland C++ Builder 3.Eclipse(Myln + CDT + Mingw32 + GCC) 4.Dev-C++(Mingw32 + GCC) 5.Code::Blocks(可配合多款编译核心使用) 6.Codelite 7.C-Free 如上所示,目前流行的GNU GCC和微软的Visual Studio系列各执一套基本的编译链,其他的IDE都是衍生产品

② GHOST是什么意思/来历是什么

ghost英文中是鬼魂的意思~
它是一个非常完善系统备份软件

使用方法
一、分区备份

使用Ghost进行系统备份,有整个硬盘(Disk)和分区硬盘(Partition)两种方式。在菜单中点击 Local(本地)项,在右面弹出的菜单中有3个子项,其中 Disk表示备份整个硬盘(即克隆)、Partition 表示备份硬盘的单个分区、Check 表示检查硬盘或备份的文件,查看是否可能因分区、硬盘被破坏等造成备份或还原失败。分区备份作为个人用户来保存系统数据,特别是在恢复和复制系统分区时具有实用价值。
选 Local→Partition→To Image 菜单,弹出硬盘选择窗口,开始分区备份操作。点击该窗口中白色的硬盘信息条,选择硬盘,进入窗口,选择要操作的分区(若没有鼠标,可用键盘进行操作: TAB键进行切换,回车键进行确认,方向键进行选择)。 在弹出的窗口中选择备份储存的目录路径并输入备份文件名称,注意备份文件的名称带有 GHO 的后缀名。 接下来,程序会询问是否压缩备份数据,并给出3个选择:No 表示不压缩,Fast表示压缩比例小而执行备份速度较快,High 就是压缩比例高但执行备份速度相当慢。最后选择 Yes 按钮即开始进行分区硬盘的备份。Ghost 备份的速度相当快,不用久等就可以完成,备份的文件以 GHO 后缀名储存在设定的目录中。

二、硬盘克隆与备份

硬盘的克隆就是对整个硬盘的备份和还原。选择菜单Local→Disk→To Disk,在弹出的窗口中选择源硬盘(第一个硬盘),然后选择要复制到的目标硬盘(第二个硬盘)。注意,可以设置目标硬盘各个分区的大小,Ghost 可以自动对目标硬盘按设定的分区数值进行分区和格式化。选择 Yes 开始执行。
Ghost 能将目标硬盘复制得与源硬盘几乎完全一样,并实现分区、格式化、复制系统和文件一步完成。只是要注意目标硬盘不能太小,必须能将源硬盘的数据内容装下。
Ghost 还提供了一项硬盘备份功能,就是将整个硬盘的数据备份成一个文件保存在硬盘上(菜单 Local→Disk→To Image),然后就可以随时还原到其他硬盘或源硬盘上,这对安装多个系统很方便。使用方法与分区备份相似。

三、备份还原

如果硬盘中备份的分区数据受到损坏,用一般数据修复方法不能修复,以及系统被破坏后不能启动,都可以用备份的数据进行完全的复原而无须重新安装程序或系统。当然,也可以将备份还原到另一个硬盘上。
要恢复备份的分区,就在界面中选择菜单Local→Partition→From Image,在弹出窗口中选择还原的备份文件,再选择还原的硬盘和分区,点击 Yes 按钮即可。

四、局域网操作

LPT 是通过并口传送备份文件,下面有两个选项:slave 和 master, 分别用以连接主机和客户机。 网络基本输入输出系统 NetBios 和 LPT 相似, 也有 slave 和 master 两个选项, 作用与 LPT 相同。
先和平时一样将要 ghost 的分区做成一个 *.gho 文件,再在一台 win98 上安装Symantec Ghost 企业版,重启。
1. 首先制作一张 ghost 带网卡驱动的启动盘。Start > Programs > Symantec Ghost > Ghost Boot Wizard->Network Boot Disk 如果你的网卡在列表内直接选择它就可以生成一张带 PC-DOS 的启动盘。(但 6.5版的生成的软盘经常有问题,不能成功启动)如果你的网卡不在列表内,你要建立专用的 Packet Driver。ADD->Packet Driver (网卡的驱动程序中有)往下根据提示一步一步走,填入工作站的 ip(ghost 一定要 tcp/ip 协议)。最后生成一张软盘,但此软盘仍不能使用,要改 autoexec.bat 文件在 net xxxx.dos 后面加一个16进制的地址,如 0X75 等。多台计算机只需改 wattcp.cfg 文件中的 ip 即可:
IP = 192.168.100.44
NETMASK = 255.255.255.0
GATEWAY = 192.168.100.1
2. 在 server 端运行 multicast server 出来的画面。先给 server一个Session Name(别名)如:bb,再选择 image file 就是你的 gho 文件。然后 ->Dump From Client->rtitions->More Options-> 在 auto start 的 client 中填入 50(如果你要同时复制50台)->accept client 就算完成了,当你的工作站数达到50台时,server就自动传送*.gho 文件。

3.详述:
目前,相当多的电子教室都采用了没有软驱、光驱的工作站。在没有软驱、光驱的情况下,当硬盘的软件系统出现问题时,能否实现网络硬盘克隆呢?PXE (Preboot Execution Environment,它是基于 TCP/IP、DHCP、TFTP 等 Internet 协议之上的扩展网络协议)技术提供的从网络启动的功能,让我们找到了解决之道。下面,我们就来讲解怎样采用Ghost 7.0来实现基于 PXE 的网络硬盘克隆。

网络硬盘克隆过程简述

网络硬盘克隆过程为:在装有软驱的工作站上,用一张引导盘来启动机器,连接到服务器,使用 Ghost 多播服务(Multicast Server)将硬盘或分区的映像克隆到工作站,这样就实现了不拆机、安全、快速的网络硬盘克隆。

实现 PXE 网络启动方式

对于没有软驱、光驱的工作站,要实现PXE网络启动方式,需要完成三个步骤:

1、工作站的PXE启动设置

PXE网络启动一般要求在网卡上加装 PXE 启动芯片(PXE Boot ROM);对于某些型号的网卡,也可以将 PXE 启动代码(Boot Code)写入主板的 Flash ROM;而一些主板上集成了网卡的品牌机(例如清华同方的商用机),可直接支持PXE启动。

常用的 RTL8139 芯片的网卡,其 PXE 启动设置方式是:机器启动时根据屏幕提示按下Shift+F10,在启动类型中选择PXE,开启网络启动选项即可。

2、制作 PXE 启动文件

制作 PXE 的启动文件,推荐使用 3Com 的 DABS(Dynamic Access Boot Services)。DABS 提供了功能强大的 PXE 启动服务、管理功能,但是,网上可供下载的是一个30天的试用版。所以,我们只用它的启动映像文件制作功能,而由 Windows 2000 Server 的 DHCP 服务器来提供 PXE 启动服务。

DABS 可以安装在任何一台运行 Windows 的机器上。安装后,运行 3Com Boot Image Editor,出现主界面图。选择“创建TCP/IP或PXE映像文件(Create a TCP/IP or PXE image file)”,出现对话窗口。为即将建立的映像文件命名,例如:pxeghost.img,其他采用默认选项,将经测试正常的网络启动盘放入软驱,选择 [OK],创建PXE启动映像 Pxeghost.img文件。

在 3Com Boot Image Editor 的主菜单中,选择“创建PXE菜单启动文件(Creat a PXE menu boot file)”,在出现的窗口中选择[添加(Add)],加入我们刚刚创建的启动映像文件Pxeghost.img,在“选项(Options)”标签中可以设置菜单标题和等待时间。

选择[保存(Save)],给保存的PXE菜单启动文件命名为 Pxemenu.pxe。

3、服务器的PXE启动服务设置

Windows 2000 Server 的 DHCP 服务支持两种启动协议:DHCP 和 BOOTP。我们可以设定以下三种选择:仅 DHCP、仅 BOOTP、两者。如果我们的局域网中由其他的 DHCP 服务器提供动态 IP 地址分配,那么这里选“仅BOOTP”即可;如果需要这台服务器提供动态 IP 地址分配,则需要选“两者”。

接下来,设置启动文件名。在DHCP服务器的作用域选项中配置选项“067:启动文件名”,字串值为我们创建的 PXE 菜单启动文件名 Pxemenu.pxe。注意:文件名不包含路径。

DHCP 服务器只是将启动文件名通知给 BOOTP 客户机,客户机通过什么方式下载启动文件呢?答案是,需要 TFTP 服务。3Com 的 DABS 包含了一个 TFTP 服务组件,当然,也可以下载一个免费的 TFTP 服务器软件长期使用。

在 TFTP 服务器的设置中,规定一个服务目录。将制作的 PXE 启动文件 Pxeghost.img、Pxemenu.pxe 放到 TFTP 的服务目录中。TFTP 服务器设置为自动运行。

用 Ghost 多播克隆硬盘

现在运行 Ghost 多播服务器,任务名称为 Restore。设置完毕,按下[接受客户(Accept Clients)]按钮。启动要接受硬盘克隆的无软驱工作站,如果以上步骤操作无误,应该能够实现 PXE 启动,加入到多播克隆的任务当中。所有的目标工作站连接到本次任务之后,按下[发送(Send)]按钮,开始克隆任务。

五、参数设置

在 Options 中可以设置参数。下面简单介绍一下:
1.image write buffering:在建立备份文件时, 打开写缓冲;
2.sure:选择此项后, 不再会出现最终确认询问 (建议不要选择此项);
3.no int 13:选择此项后, 不支持中断 13 (缺省时不选择);
4.reboot:在对硬盘或者分区操作完成之后, 自动重启计算机;
5.spanning:通过多个卷架构备份文件 (选择此项时, 关闭 write buffering);
6.autoname:自动为 spanning 文件命名;
7.allow 64k fat clusters:允许使用 64K FAT 簇 (仅在 Windows NT 中支持);
8.ignore CRC errors:忽略 CRC 错误;
9.override size limit:如果出现分区大小不相配, 可忽略执行;
10.image read buffering:打开生成备份文件时的读缓存 (缺省时选中此项)。

六、软件特性

1.存贮介质
Ghost 支持的存储介质超出了我们的想象,它支持对等 LPT 接口、对等 USB 接口、对等 TCP/IP 接口、SCSI磁带机、便携式设备(JAZ、ZIP、MO等)、光盘刻录机(CDR、CDRW)等。而这些特性不需要任何外带的驱动程序和软件,只需一张软盘就可以做到!特别是对光盘刻录机的支持,如今的刻录机和空白光盘都十分便宜,非常适合作备份的用途。

2.兼容性
Ghost 对现有的操作系统都有良好的支持,包括 FAT16、FAT32、NTFS、HPFS、UNIX、NOVELL 等文件存储格式。同以前版本不同的是,Ghost 2001 加入了对 Linux EX2的支持(FIFO 文件存储格式),这也就意味着 Linux 的用户也可以用 Ghost 来备份系统了。

3.配套软件

A.Ghost 浏览器
在以前的 Ghost版本中,我们只能对整个系统进行简单的备份、复制、还原,要恢复单个的文件和文件夹还要使用外带的 GhostEXP 软件。现在,Symantec 公司已经将 Ghost 浏览器整合在软件中。Ghost 浏览器采用类似于资源管理器的界面,通过它,我们可以方便迅速地在备份包中找出我们想要的文件和文件夹并还原。
使用Explorer可以备份整个硬盘或单个硬盘分区,点击工具栏上的圆柱形图标,弹出硬盘或分区选择对话窗口,然后再选择备份文件的储存目录并输入名称即可完成。要注意的是,非注册用户不能使用备份这项功能。
在 Ghost Explorer 中管理硬盘备份文件就非常方便了。首先选择打开一个备份文件(File/Open),这时备份中的文件就像资源管理器一样在程序界面窗口中列出,可以在其中非常方便地查看、打开文件,也可以查找文件,或者将某个文件删除(但不能删除目录)。
在 Ghost Explorer 中提供了多种还原硬盘备份文件的方法,最方便的方法是使用鼠标右键点击某个文件,在弹出菜单中选择 Restore,然后输入要还原到的目录,这样,单个文件就从整个磁盘备份中还原出来了。当然,如果要还原整个磁盘备份,只需选择左面目录列表栏中最上面的带磁盘图标的目录项,然后点击工具栏中的还原图标 (第二个) 就可以了。

B.GDisk
GDisk 是一个新加入的实用工具,它彻底取代了 FDisk 和 Format,功能有:
* 快速格式化。
* 隐藏和显示分区。此功能允许一个以上的主 DOS分区,并且每个分区上的操作系统有不同的版本。隐藏分区的能力使计算机习惯于引导到选定的可引导分区,忽略其他隐藏分区中相同操作系统的安装。
* 全面的分区报告。
* 高度安全的磁盘擦除。提供符合美国国防部标准和更高安全标准的磁盘擦除选项。
与使用交互式菜单的 FDisk 不同,GDisk是由命令行驱动的。这提供了更快的配置磁盘分区和在批处理文件中定义 GDisk操作的能力。但与此同时,几十个参数会令普通用户头疼,因此笔者不推荐一般用户使用,Symantec 公司也应该推出相应的GUI(图形用户界面)控制台以方便用户使用。具体的参数说明可以用命令行 gdisk/? 了解。

C.Live Update
Live Update 是 Symantec公司软件的一个通用升级程序,它能够检查当前系统中已安装的 Symantec 软件,并且通过英特网对软件进行在线升级。
在安装 Ghost 2001 时,安装程序自动升级了 Live Update 程序的版本。

七、命令行参数:(Ghost 的无人 备份/恢复/复制 操作)

其实 Ghost 2001 的功能远远不止它主程序中显示的那些,Ghost 可以在其启动的命令行中添加众多参数以实现更多的功能。命令行参数在使用时颇为复杂,不过我们可以制作批处理文件,从而“一劳永逸”(类似于无人安装 Windows 98 和Windows 2000)。现在让我们来了解一些常用的参数(了解更加详细的参数介绍可查看 Ghost 的帮助文件)。
1.-rb
本次 Ghost 操作结束退出时自动重启。这样,在复制系统时就可以放心离开了。
2.-fx
本次 Ghost 操作结束退出时自动回到DOS提示符。
3.-sure
对所有要求确认的提示或警告一律回答“Yes”。此参数有一定危险性,只建议高级用户使用。
4.-fro
如果源分区发现坏簇,则略过提示而强制拷贝。此参数可用于试着挽救硬盘坏道中的数据。
5.@filename
在 filename 中指定 txt 文件。txt文件中为 Ghost 的附加参数,这样做可以不受DOS命令行 150 个字符的限制。
6.-f32
将源 FAT16 分区拷贝后转换成 FAT32(前提是目标分区不小于 2G)。WinNT 4 和Windows95、97用户慎用。
7.-bootcd
当直接向光盘中备份文件时,此选项可以使光盘变成可引导。此过程需要放入启动盘。
8.-fatlimit
将 NT 的 FAT16 分区限制在 2G。此参数在复制 Windows NT 分区,且不想使用64k/簇的 FAT16 时非常有用。
9.-span
分卷参数。当空间不足时提示复制到另一个分区的另一个备份包。
10.-auto
分卷拷贝时不提示就自动赋予一个文件名继续执行。
11.-crcignore
忽略备份包中的 CRC ERROR。除非需要抢救备份包中的数据,否则不要使用此参数,以防数据错误。
12.-ia
全部映像。Ghost 会对硬盘上所有的分区逐个进行备份。
13.-ial
全部映像,类似于 -ia 参数,对 Linux 分区逐个进行备份。
14.-id
全部映像。类似于 -ia 参数,但包含分区的引导信息。
15.-quiet
操作过程中禁止状态更新和用户干预。
16.-script
可以执行多个 Ghost 命令行。命令行存放在指定的文件中。
17.-split=x
将备份包划分成多个分卷,每个分卷的大小为 x兆。这个功能非常实用,用于大型备份包复制到移动式存储设备上,例如将一个 1.9G 的备份包复制到 3 张刻录盘上。
18.-z
将磁盘或分区上的内容保存到映像文件时进行压缩。-z 或 -z1 为低压缩率(快速);-z2 为高压缩率(中速);-z3 至 -z9 压缩率依次增大(速度依次减慢)。
19.-clone
这是实现 Ghost 无人备份/恢复的核心参数。使用语法为:
-clone,MODE=(operation),SRC=(source),DST=(destination),[SZE(size),SZE(size)...]
此参数行较为复杂,且各参数之间不能含有空格。其中 operation意为操作类型,值可取::磁盘到磁盘;load:文件到磁盘;mp:磁盘到文件;p:分区到分区;pload:文件到分区;pmp:分区到文件。
Source 意为操作源,值可取:驱动器号,从1开始;或者为文件名,需要写绝对路径。
Destination 意为目标位置,值可取:驱动器号,从 1开始;或者为文件名,需要写绝对路径;@CDx,刻录机,x 表示刻录机的驱动器号,从1开始。

下面举例说明:

1.命令行参数:ghostpe.exe -clone,mode=,src=1,dst=2
完成操作:将本地磁盘1复制到本地磁盘2。

2.命令行参数:ghostpe.exe -clone,mode=p,src=1:2,dst=2:1
完成操作:将本地磁盘1上的第二分区复制到本地磁盘2的第一分区。

3.命令行参数:ghostpe.exe-clone,mode=load,src=g:\3prtdisk.gho,dst=1,sze1=450M,sze2=1599M,sze3=2047M
完成操作:从映像文件装载磁盘1,并将第一个分区的大小调整为450MB,第二个调整为1599MB,第三个调整为2047MB。

4.命令行参数:ghostpe.exe -clone,mode=pmp,src2:1:4:6,dst=d:\prt246.gho
完成操作:创建仅含有选定分区的映像文件。从磁盘2上选择分区1、4、6。

八、一些示例

ghost.exe -clone,mode=,src=1,dst=2 -sure
硬盘对拷

ghost.exe -clone,mode=p,src=1:2,dst=2:1 -sure
将一号硬盘的第二个分区复制到二号硬盘的第一个分区

ghost.exe -clone,mode=pmp,src=1:2,dst=g:\bac.gho
将一号硬盘的第二个分区做成映像文件放到 g 分区中

ghost.exe -clone,mode=pload,src=g:\bac.gho:2,dst=1:2
从内部存有两个分区的映像文件中,把第二个分区还原到硬盘的第二个分区

ghost.exe -clone,mode=pload,src=g:\bac.gho,dst=1:1 -fx -sure -rb
用 g 盘的 bac.gho 文件还原 c 盘。完成后不显示任何信息,直接启动

ghost.exe -clone,mode=load,src=g:\bac.gho,dst=2,SZE1=60P,SZE2=40P
将映像文件还原到第二个硬盘,并将分区大小比例修改成 60:40

自动还原磁盘:
首先做一个启动盘,包含 Config.sys, Autoexec.bat, Command.com, Io.sys, Ghost.exe 文件(可以用 windows 做启动盘的程序完成)。Autoexec.bat 包含以下命令:
Ghost.exe -clone,mode=pload,src=d:\bac.gho,dst=1:1 -fx -sure -rb
利用在 D 盘的文件自动还原,结束以后自动退出 ghost 并且重新启动。

自动备份磁盘:
ghost.exe -clone,mode=pmp,src=1:1,dst=d:\bac.gho -fx -sure -rb

自动还原光盘:
包含文件:Config.sys, Autoexec.bat, Mscdex.exe (CDROM 执行程序), Oakcdrom.sys (ATAPI CDROM 兼容驱动程序), Ghost.exe。
Config.sys 内容为:
DEVICE=OAKCDROM.SYS /D:IDECD001
Autoexec.bat 内容为:
MSCDEX.EXE /D:IDECE001 /L:Z
Ghost -clone,mode=load,src=z:\bac.gho,dst=1:1 -sure -rb

可以根据下面的具体说明修改示例:

1.-clone

-clone 在使用时必须加入参数,它同时也是所有的 switch{batch switch} 里最实用的。下面是 clone 所定义的参数:

mode={|load|mp|p|pload|pmp},
src={drive|file|driveartition},
dst={drive|file|driveartition}

mode 指定要使用哪种 clone 所提供的命令
硬盘到硬盘的复制 (disk to disk )
load 文件还原到硬盘 (file to disk load)
mp 将硬盘做成映像文件 (disk to file mp)
p 分区到分区的复制 (partition to partition )
pload 文件还原到分区 (file to partition load)
pmp 分区备份成映像文件(partition to file mp)

src 指定了 ghost 运行时使用的源分区的位置模式及其意义。对应 mode 命令 src 所使用参数例子:
COPY/DUMP 源硬盘号。以 1 代表第一号硬盘
LOAD 映像文件名。g:/back98/setup98.gho 或装置名称 (drive)
PCOPY/PDUMP 源分区号。1:2 代表的是硬盘1的第二个分区
PLOAD 分区映像文件名加上分区号或是驱动器名加上分区号。g:\back98.gho:2 代表映像文件里的第二个分区

dst 指定运行 Ghost 时使用的目标位置模式及其意义。对应 mode 命令 dst 所使用参数例子:
COPY/DUMP 目的硬盘号。2 代表第二号硬盘
LOAD 硬盘映像文件名。例 g:\back98\setup98.gho
PCOPY/PLOAD 目的分区号。2:2 代表硬盘 2 的第二个分区
PDUMP 分区映像文件名加分区号。g:\back98\setup98.gho:2
SZEn 指定所使用目的分区的大小:
n=xxxxM 指定第 n 目的分区的大小为 xxxxMB。如 SZE2=800M 表示分区 2 的大小为 800MB
n=mmP 指定第 n 目的分区的大小为整个硬盘的 mm 个百分比。

2.-fxo 当源物件出现坏块时,强迫复制继续进行

3.-fx 当ghost完成新系统的工作后不显示 press ctrl-alt-del to reboot 直接回到DOS下

4.-ia 完全执行扇区到扇区的复制。当由一个映像文件或由另一个硬盘为来源,复制一个分区时,Ghost将首先检查来源分区,再决定是要复制文件和目录结构还是要做映像复制(扇区到扇区)。预设是这种形式。但是有的时候,硬盘里特定的位置可能会放一些隐藏的与系统安全有关的文件。只有用扇区到扇区复制的方法才能正确复制

5.-pwd and -pwd=x 给映像文件加密

6.-rb 在还原或复制完成以后,让系统重新启动

7.-sure 可以和 clone 合用。Ghost 不会显示 proceed with disk clone-destination drive will be overwritten? 提示信息

九、注意事项

1.在备份系统时,单个的备份文件最好不要超过 2GB。
2.在备份系统前,最好将一些无用的文件删除以减少Ghost文件的体积。通常无用的文件有:Windows 的临时文件夹、IE 临时文件夹、Windows 的内存交换文件。这些文件通常要占去100 多兆硬盘空间。
3.在备份系统前,整理目标盘和源盘,以加快备份速度。
4.在备份系统前及恢复系统前,最好检查一下目标盘和源盘,纠正磁盘错误。
5.在恢复系统时,最好先检查一下要恢复的目标盘是否有重要的文件还未转移,千万不要等硬盘信息被覆盖后才后悔莫及啊。
6.在选择压缩率时,建议不要选择最高压缩率,因为最高压缩率非常耗时,而压缩率又没有明显的提高。
7.在新安装了软件和硬件后,最好重新制作映像文件,否则很可能在恢复后出现一些莫名其妙的错误。

③ c++的编程技巧

运算符new和delete提供了存储的动态内存分配和释放功能,它的作用相当于C语言的函数malloc()和free(),但性能更为优越。使用new较之使用malloc()有以下的几个优点:
(1)new自动计算要分配类型的大小,不使用sizeof运算符,比较省事,可以避免错误。
(2)自动地返回正确的指针类型,不用进行强制指针类型转换。
(3)可以用new对分配的对象进行初始化。 对于频繁使用的函数,C语言建议使用宏调用代替函数调用以加快代码执行,减少调用开销。但是宏调用有许多的弊端,可能引起不期望的副作用。例如宏:#define abs(a)(a)<0?(-a):(a)),当使用abs(i++)时,这个宏就会出错。
所以在C++中应该使用inline内联函数替代宏调用,这样既可达到宏调用的目的,又避免了宏调用的弊端。
使用内联函数只须把inline关键字放在函数返回类型的前面。 在C语言中,两个函数的名称不能相同,否则会导致编译错误。而在C++中,函数名相同而参数数据类型不同或参数个数不同或二者皆不同的两个函数被解释为重载。
使用函数重载可以帮助程序员处理更多的复杂问题,避免了使用诸如intabs()、fabs()、dabs()等繁杂的函数名称;同时在大型程序中,使函数名易于管理和使用,而不必绞尽脑汁地去处理函数名。同时必须注意,参数数据类型相同,但是函数返回类型不同的两个函数不能重载。 在C++中函数可以使用缺省参数。
通常的情况下,一个函数应该具有尽可能大的灵活性。使用缺省参数为程序员处理更大的复杂性和灵活性问题提供了有效的方法,所以在C++的代码中都大量地使用了缺省参数。
需要说明的是,所有的缺省参数必须出现在不缺省参数的右边。亦即,一旦开始定义缺省参数,就不可再声明非缺省的参数。否则当你省略其中一个参数的时候,编译器无法知道你是自定义了这个参数还是利用了缺省参数而定义了非缺省的参数。 STL(Standard Template Library,标准模板库),STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),并包括一些工具类如auto_ptr。几乎所有的代码都采用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。
作用符被重载,使得我们可以像访问数组一样访问vector中的元素。 模板的概念
模板是C++的一个特性,是函数和类可以作用于不同的类型上而不需要针对每一个具体类型重复相同的代码。与模板相反,我们已经学过的重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重载(Overload)版本。如果使用模板就可以只写一个通用的MAX模板,而不需要针对每个类型重复相同的逻辑。
指针与引用的区别
指针与引用看上去完全不同(指针用操作符“*”和“->”,引用使用操作符“&”),但是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。你如何决定在什么时候使用指针,在什么时候使用引用呢?
首先,要认识到在任何情况下都不能使用指向空值的引用。一个引用必须总是指向某些对象。因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明为指针,因为这样你可以赋空值给该变量。相反,如果变量肯定指向一个对象,例如你的设计不允许变量为空,这时你就可以把变量声明为引用。

④ 什么是C++

C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C plus plus”,“CPP”。 它是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。
在C基础上,一九八三年又由贝尔实验室的Bjarne Strou-strup推出了C++。 C++进一步扩充和完善了C语言,成为一种面向 对象的程序设计语言。C++目前流行的编译器最新版本是Borland C++4.5,Symantec C++6.1,和Microsoft VisualC++ 2012。C++提出了一些更为深入的概念,它所支持的这些面向对象的概念容易将问题空间直接地映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法。因而也增加了整个语言的复杂性,掌握起来有一定难度。
C++由美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普博士在20世纪80年代初期发明并实现(最初这种语言被称作“C with Classes”带类的C)。开始,C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。虚函数(virtual function)、运算符重载(operator overloading)、多重继承(multiple inheritance)、模板(template)、异常(exception)、RTTI、命名空间[1](name space)逐渐被加入标准。[2]
1998年国际标准组织(international standard organization, ISO)颁布了C++程序设计语言的国[3]际标准ISO/IEC 1988-1998。C++是具有国际标准的编程语言,通常称作ANSI/ISOC++。[4]

1998年是C++标准委员会成立的第一年,以后每5年视实际需要更新一次标准。C++0x最终国际投票已于2011年8月10日结束,并且所有国家都投出了赞成票,C++0x已经毫无疑义地成为正式国际标准。先前被临时命名为C++0x的新标准将被称为C++ 2011。C++ 2011将取代现行的C++标准ISO/IEC 14882,它公开于1998年并于2003年更新,通称C++98以及C++03。国际标准化组织于2011年9月1日出版发布ISO/IEC 14882:2011,名称是:Information technology -- Programming languages -- C++ Edition: 3。
计算机诞生初期, 人们要使用计算机必须用机器语言或汇编语言编写程序。世界上第一种计算机高级语言诞生于1954年, 它是FORTRAN语言。 先后出现了多种计算机高级语言。 其中使用最广泛、影响最大的当推BASIC语言和C语言。
BASIC语言是1964年在FORTRAN语言的基础上简化而成的, 它是为初学者设计的小型高级语言。
C语言是1972年由美国贝尔实验室的D.M.Ritchie研制成功的。 它不是为初学者设计的,而是为计算机专业人员设计的。 大多数系统软件和许多应用软件都是用C语言编写的。
但是随着软件规模的增大, 用C语言编写程序渐渐显得有些吃力了。
C++是由AT&T Bell(贝尔)实验室的Bjarne Stroustrup博士及其同事于20世纪80年代初在C语言的基础上开发成功的。 C++保留了C语言原有的所有优点, 增加了面向对象的机制。
C++是由C发展而来的, 与C兼容。 用C语言写的程序基本上可以不加修改地用于C++。 从C++的名字可以看出它是C的超越和集中。 C++既可用于面向过程的结构化程序设计, 又可用于面向对象的程序设计, 是一种功能强大的混合型的程序设计语言。
C++对C的“增强”,表现在六个方面:
(1) 类型检查更为严格。
(2) 增加了面向对象的机制。
(3)增加了泛型编程的机制(template)
(4)增加了异常处理
(5)增加了运算符重载
(6)增加了标准模板库(STL)
面向对象程序设计,是针对开发较大规模的程序而提出来的,目的是提高软件开发的效率。不要把面向对象和面向过程对立起来, 面向对象和面向过程不是矛盾的,而是各有用途、互为补充的。
学习C++, 既要会利用C++进行面向过程的结构化程序设计, 也要会利用C++进行面向对象的程序设计,更要会利用模板进行泛型编程。
C和C++关系
但是,C是C++的基础,C++语言和C语言在很多方面是兼容的。因此,掌握了C语言,再进一步学习C++就能以一种熟悉的语法来学习面向对象的语言,从而达到事半功倍的目的。
C timeline
1978 k&R C---->1988 ANSI C-->1995 ISO C
学习C语言最经典的还是The C Programming Language
发展历史
C++语言发展大概可以分为三个阶段:
第一阶段
从80年代到1995年。这一阶段C++语言基本上是传统类型上的面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大份额;
第二阶段
从1995年到2000年,这一阶段由于标准模板库(STL)和后来的Boost等程序库的出现,泛型程序设计在C++中占据了越来越多的比重性。当然,同时由于Java、C#等语言的出现和硬件价格的大规模下降,C++受到了一定的冲击;
第三阶段
从2000年至今,由于以Loki、MPL等程序库为代表的产生式编程和模板元编程的出现,C++出现了发展历史上又一个新的高峰,这些新技术的出现以及和原有技术的融合,使C++已经成为当今主流程序设计语言中最复杂的一员。[7]
优点

C++代码
· C++设计成静态类型、和C同样高效且可移植的多用途程序设计语言。
· C++设计成直接的和广泛的支持多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。
· C++设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。
· C++设计成尽可能与C兼容,借此提供一个从C到C++的平滑过渡。
· C++避免平台限定或没有普遍用途的特性。
· C++不使用会带来额外开销的特性。
· C++设计成无需复杂的程序设计环境。[8]
出于保证语言的简洁和运行高效等方面的考虑,C++的很多特性都是以库(如STL)或其他的形式提供的,而没有直接添加到语言本身里。关于此类话题,Bjarne Stroustrup的《C++语言的设计和演化》(1994)里做了详尽的陈述。
C++在一定程度上可以和C语言很好的结合,甚至目前大多数C语言程序是在C++的集成开发环境中完成的。C++相对众多的面向对象的语言,具有相当高的性能。
C++引入了面向对象的概念,使得开发人机交互类型的应用程序更为简单、快捷。很多优秀的程序框架包括MFC、QT、wxWidgets就是使用的C++。[9]
代码性能
人们一般认为,使用Java或C#的开发成本比C++低。但是,如果充分分析C++和这些语言的差别,会发现这句话的成立是有条件的。这个条件就是:软件规模和复杂度都比较小。如果不超过3万行有效代码(不包括生成器产生的代码),这句话基本上还能成立。否则,随着代码量和复杂度的增加,C++的优势将会越来越明显。造成这种差别的就是C++的软件工程性。[9]
缺点
C++由于语言本身过度复杂,这甚至使人类难于理解其语义。更为糟糕的是C++的编译系统受到C++的复杂性的影响,非常难于编写,即使能够使用的编译器也存在了大量的问题,这些问题大多难于被发现。[9]
由于本身的复杂性,复杂的C++程序的正确性相当难于保证。也有人提出不支持多线程的原语等缺陷。不过有如此多的知名人士提出了如此多的缺陷,正说明C++被广泛使用和成功。
c++语言由于过度的复杂性,以及与unix的文化相抵触,在unix/linux领域受到很多着名人士(比如Linux之父linus torvalds与着名黑客Eric S. Raymond)的强烈批评与抵制。
C++基本数据类型和表达式
数据是程序处理的对象,数据可以依其本身的特点进行分类。我们知道在数学中有整数、实数概念,在日常生活中需要用字符串来表示人的姓名和地址,有些问题的回答只能是“是”或“否”(即逻辑“真”或“假”)。不同类型的数据有不同的处理方法,例如:整数和实数可以参加算术运算,但实数的表示又不同于整数,要保留一定的小数位;字符串可以拼接;逻辑数据可以参加“与”、“或”、“非”等逻辑运算。
我们编写计算机程序,目的就是为了解决客观世界中的现实问题。所以,高级语言中也为我们提供了丰富的数据类型和运算。C++中的数据类型分为基本类型和自定义类型。基本类型是C++编译系统内置的。
基本数据类型
C++的基本数据类型如下表所示(表中各类型的长度和取值范围,以面向IA-32处理器的VC++ 2008和gcc 4.2为标准)。
类型名 长度(字节) 取值范围
bool 1 false,true

char
1 -128~127

signed char 1 -128~127
unsigned char 1 0~255
short(signed short) 2 -32768~32767
unsigned short 2 0~65535
int(signed int) 4 -2147483648~2147483647
unsigned int 4 0~4294967295
long(signed long) 4 -2147483648~2147483647
unsigned long 4 0~4294967295
float 4 3.4X10^(-38)~3.4X10^(38)
double 8 1.7X10^(-308)~1.7X10^(308)
long double 8 1.7X10^(-308)~1.7X10^(308)
编辑本段编程技巧
new和delete
运算符new和delete提供了存储的动态内存分配和释放功能,它的作用相当于C语言的函数malloc()和free(),但是性能更为优越。使用new较之使用malloc()有以下的几个优点:
(1)new自动计算要分配类型的大小,不使用sizeof运算符,比较省事,可以避免错误。
(2)自动地返回正确的指针类型,不用进行强制指针类型转换。
(3)可以用new对分配的对象进行初始化。[11]
inline
对于频繁使用的函数,C语言建议使用宏调用代替函数调用以加快代码执行,减少调用开销。但是宏调用有许多的弊端,可能引起不期望的副作用。例如宏:#define abs(a)(a)<0?(-a):(a)),当使用abs(i++)时,这个宏就会出错。
所以在C++中应该使用inline内联函数替代宏调用,这样既可达到宏调用的目的,又避免了宏调用的弊端。
使用内联函数只须把inline关键字放在函数返回类型的前面。[11]
函数重载
在C语言中,两个函数的名称不能相同,否则会导致编译错误。而在C++中,函数名相同而参数数据类型不同或参数个数不同或二者皆不同的两个函数被解释为重载。
使用函数重载可以帮助程序员处理更多的复杂问题,避免了使用诸如intabs()、fabs()、dabs()等繁杂的函数名称;同时在大型程序中,使函数名易于管理和使用,而不必绞尽脑汁地去处理函数名。同时必须注意,参数数据类型相同,但是函数返回类型不同的两个函数不能重载。[11]
参数传递
在C语言中,如果一个函数需要修改用作参数的变量值的时候 ,参数应该声明为指针类型;当参数的大小超过一个机器字长时,通过传值方式来传递参数的效率较低,也需要用指针。由于C语言的指针可以进行p++,--p,p+=1等算术运算,所以编译器无法在编译的时候确定指针引用的变量。对于复杂的程序,使用指针容易出错,程序也难以读懂。在C++中,对于上述情况 可以使用引用来代替指针,使程序更加清晰易懂。引用就是对变量取的一个别名,对引用进行操作,这就相当于对原有变量进行操作。[11]
缺省参数
在C++中函数可以使用缺省参数。
通常的情况下,一个函数应该具有尽可能大的灵活性。使用缺省参数为程序员处理更大的复杂性和灵活性问题提供了有效的方法,所以在C++的代码中都大量地使用了缺省参数。
需要说明的是,所有的缺省参数必须出现在不缺省参数的右边。亦即,一旦开始定义缺省参数,就不可再说明非缺省的参数。否则当你省略其中一个参数的时候,编译器无法知道你是自定义了这个参数还是利用了缺省参数而定义了非缺省的参数。[11]
使用STL
STL(Standard Template Library,标准模板库), STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),并包括一些工具类如auto_ptr。几乎所有的代码都采用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。
作用符被重载,使得我们可以像访问数组一样访问vector中的元素。[11]
使用模板
.模板的概念。
模板是C++的一个特性,是函数和类可以作用于不同的类型上而不需要针对每一个具体类型重复相同的代码。与模板相反,我们已经学过的重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重载(Overload)版本。如果使用模板就可以只写一个通用的MAX模板,而不需要针对每个类型重复相同的逻辑。
指针与引用的区别
指针与引用看上去完全不同(指针用操作符“*”和“->”,引用使用操作符“&”),但是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。你如何决定在什么时候使用指针,在什么时候使用引用呢?
首先,要认识到在任何情况下都不能使用指向空值的引用。一个引用必须总是指向某些对象。因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明为指针,因为这样你可以赋空值给该变量。相反,如果变量肯定指向一个对象,例如你的设计不允许变量为空,这时你就可以把变量声明为引用。[12]

⑤ 哭求:fortran语言矩阵求逆的程序

这是一段f90的代码,使用是时候要加上use inv_mat,然后就可以求某方阵的逆矩阵了。
mole inv_mat
! Description : 计算逆矩阵
contains
subroutine inv(A,invA,N)
! Purpose : 计算逆矩阵
!-----------------------------------------------------
! Input parameters :
! 1. A: 需要求逆的矩阵
! 2. N: 矩阵的维度
! Output parameters :
! 1. invA: A的逆矩阵
implicit real*8(a-z)
integer::n
integer::i
real*8::A(n,n),invA(n,n),E(n,n)
E=0
!设置E为单位矩阵
do i=1,n
E(i,i)=1
end do
call mateq(A,E,invA,N,N)
end subroutine inv
subroutine mateq(A,B,X,N,M)
! Purpose : 高斯列主元消去法计算矩阵方程
! AX=B
implicit real*8(a-z)
integer::N,M,i
real*8::A(N,N),B(N,M),X(N,M)
real*8::btemp(N),xtemp(N)
do i=1,M
btemp=B(:,i)
call elgauss(A,btemp,xtemp,N)
X(:,i)=xtemp
end do
end subroutine mateq
subroutine elgauss(A,b,x,N)
! Purpose : 高斯列主元消去法
! Ax=b
implicit real*8(a-z)
integer::i,k,N
integer::id_max !主元素标号
real*8::A(N,N),b(N),x(N)
real*8::Aup(N,N),bup(N)
!Ab为增广矩阵 [Ab]
real*8::Ab(N,N+1)
real*8::vtemp1(N+1),vtemp2(N+1)
Ab(1:N,1:N)=A
Ab(:,N+1)=b
do k=1,N-1
elmax=dabs(Ab(k,k))
id_max=k
do i=k+1,n
if (dabs(Ab(i,k))>elmax) then
elmax=Ab(i,k)
id_max=i
end if
end do
vtemp1=Ab(k,:)
vtemp2=Ab(id_max,:)
Ab(k,:)=vtemp2
Ab(id_max,:)=vtemp1
!#########################################################
do i=k+1,N
temp=Ab(i,k)/Ab(k,k)
Ab(i,:)=Ab(i,:)-temp*Ab(k,:)
end do
end do
Aup(:,:)=Ab(1:N,1:N)
bup(:)=Ab(:,N+1)
call uptri(Aup,bup,x,n)
end subroutine elgauss
subroutine uptri(A,b,x,N)
! Purpose : 上三角方程组的回带方法
! Ax=b
implicit real*8(a-z)
integer::i,j,N
real*8::A(N,N),b(N),x(N)
x(N)=b(N)/A(N,N)
!回带部分
do i=n-1,1,-1
x(i)=b(i)
do j=i+1,N
x(i)=x(i)-a(i,j)*x(j)
end do
x(i)=x(i)/A(i,i)
end do
end subroutine uptri
end mole inv_mat

⑥ 谁能教我用GUOST

Ghost 使用详解

--------------------------------------------------------------------------------

一、分区备份

使用Ghost进行系统备份,有整个硬盘(Disk)和分区硬盘(Partition)两种方式。在菜单中点击 Local(本地)项,在右面弹出的菜单中有3个子项,其中 Disk表示备份整个硬盘(即克隆)、Partition 表示备份硬盘的单个分区、Check 表示检查硬盘或备份的文件,查看是否可能因分区、硬盘被破坏等造成备份或还原失败。分区备份作为个人用户来保存系统数据,特别是在恢复和复制系统分区时具有实用价值。
选 Local→Partition→To Image 菜单,弹出硬盘选择窗口,开始分区备份操作。点击该窗口中白色的硬盘信息条,选择硬盘,进入窗口,选择要操作的分区(若没有鼠标,可用键盘进行操作:TAB键进行切换,回车键进行确认,方向键进行选择)。 在弹出的窗口中选择备份储存的目录路径并输入备份文件名称,注意备份文件的名称带有 GHO 的后缀名。 接下来,程序会询问是否压缩备份数据,并给出3个选择:No 表示不压缩,Fast表示压缩比例小而执行备份速度较快,High 就是压缩比例高但执行备份速度相当慢。最后选择 Yes 按钮即开始进行分区硬盘的备份。Ghost 备份的速度相当快,不用久等就可以完成,备份的文件以 GHO 后缀名储存在设定的目录中。

二、硬盘克隆与备份

硬盘的克隆就是对整个硬盘的备份和还原。选择菜单Local→Disk→To Disk,在弹出的窗口中选择源硬盘(第一个硬盘),然后选择要复制到的目标硬盘(第二个硬盘)。注意,可以设置目标硬盘各个分区的大小,Ghost 可以自动对目标硬盘按设定的分区数值进行分区和格式化。选择 Yes 开始执行。
Ghost 能将目标硬盘复制得与源硬盘几乎完全一样,并实现分区、格式化、复制系统和文件一步完成。只是要注意目标硬盘不能太小,必须能将源硬盘的数据内容装下。
Ghost 还提供了一项硬盘备份功能,就是将整个硬盘的数据备份成一个文件保存在硬盘上(菜单 Local→Disk→To Image),然后就可以随时还原到其他硬盘或源硬盘上,这对安装多个系统很方便。使用方法与分区备份相似。

三、备份还原

如果硬盘中备份的分区数据受到损坏,用一般数据修复方法不能修复,以及系统被破坏后不能启动,都可以用备份的数据进行完全的复原而无须重新安装程序或系统。当然,也可以将备份还原到另一个硬盘上。
要恢复备份的分区,就在界面中选择菜单Local→Partition→From Image,在弹出窗口中选择还原的备份文件,再选择还原的硬盘和分区,点击 Yes 按钮即可。

四、局域网操作

LPT 是通过并口传送备份文件,下面有两个选项:slave 和 master, 分别用以连接主机和客户机。 网络基本输入输出系统 NetBios 和 LPT 相似, 也有 slave 和 master 两个选项, 作用与 LPT 相同。
先和平时一样将要 ghost 的分区做成一个 *.gho 文件,再在一台 win98 上安装Symantec Ghost 企业版,重启。
1. 首先制作一张 ghost 带网卡驱动的启动盘。Start > Programs > Symantec Ghost > Ghost Boot Wizard->Network Boot Disk 如果你的网卡在列表内直接选择它就可以生成一张带 PC-DOS 的启动盘。(但 6.5版的生成的软盘经常有问题,不能成功启动)如果你的网卡不在列表内,你要建立专用的 Packet Driver。ADD->Packet Driver (网卡的驱动程序中有)往下根据提示一步一步走,填入工作站的 ip(ghost 一定要 tcp/ip 协议)。最后生成一张软盘,但此软盘仍不能使用,要改 autoexec.bat 文件在 net xxxx.dos 后面加一个16进制的地址,如 0X75 等。多台计算机只需改 wattcp.cfg 文件中的 ip 即可:
IP = 192.168.100.44
NETMASK = 255.255.255.0
GATEWAY = 192.168.100.1
2. 在 server 端运行 multicast server 出来的画面。先给 server一个Session Name(别名)如:bb,再选择 image file 就是你的 gho 文件。然后 ->Dump From Client->rtitions->More Options-> 在 auto start 的 client 中填入 50(如果你要同时复制50台)->accept client 就算完成了,当你的工作站数达到50台时,server就自动传送*.gho 文件。

3.详述:
目前,相当多的电子教室都采用了没有软驱、光驱的工作站。在没有软驱、光驱的情况下,当硬盘的软件系统出现问题时,能否实现网络硬盘克隆呢?PXE(Preboot Execution Environment,它是基于 TCP/IP、DHCP、TFTP 等 Internet 协议之上的扩展网络协议)技术提供的从网络启动的功能,让我们找到了解决之道。下面,我们就来讲解怎样采用Ghost 7.0来实现基于 PXE 的网络硬盘克隆。

网络硬盘克隆过程简述

网络硬盘克隆过程为:在装有软驱的工作站上,用一张引导盘来启动机器,连接到服务器,使用 Ghost 多播服务(Multicast Server)将硬盘或分区的映像克隆到工作站,这样就实现了不拆机、安全、快速的网络硬盘克隆。

实现 PXE 网络启动方式

对于没有软驱、光驱的工作站,要实现PXE网络启动方式,需要完成三个步骤:

1、工作站的PXE启动设置

PXE网络启动一般要求在网卡上加装 PXE 启动芯片(PXE Boot ROM);对于某些型号的网卡,也可以将 PXE 启动代码(Boot Code)写入主板的 Flash ROM;而一些主板上集成了网卡的品牌机(例如清华同方的商用机),可直接支持PXE启动。

常用的 RTL8139 芯片的网卡,其 PXE 启动设置方式是:机器启动时根据屏幕提示按下Shift+F10,在启动类型中选择PXE,开启网络启动选项即可。

2、制作 PXE 启动文件

制作 PXE 的启动文件,推荐使用 3Com 的 DABS(Dynamic Access Boot Services)。DABS 提供了功能强大的 PXE 启动服务、管理功能,但是,网上可供下载的是一个30天的试用版。所以,我们只用它的启动映像文件制作功能,而由 Windows 2000 Server 的 DHCP 服务器来提供 PXE 启动服务。

DABS 可以安装在任何一台运行 Windows 的机器上。安装后,运行 3Com Boot Image Editor,出现主界面图。选择“创建TCP/IP或PXE映像文件(Create a TCP/IP or PXE image file)”,出现对话窗口。为即将建立的映像文件命名,例如:pxeghost.img,其他采用默认选项,将经测试正常的网络启动盘放入软驱,选择[OK],创建PXE启动映像 Pxeghost.img文件。

在 3Com Boot Image Editor 的主菜单中,选择“创建PXE菜单启动文件(Creat a PXE menu boot file)”,在出现的窗口中选择[添加(Add)],加入我们刚刚创建的启动映像文件Pxeghost.img,在“选项(Options)”标签中可以设置菜单标题和等待时间。

选择[保存(Save)],给保存的PXE菜单启动文件命名为 Pxemenu.pxe。

3、服务器的PXE启动服务设置

Windows 2000 Server 的 DHCP 服务支持两种启动协议:DHCP 和 BOOTP。我们可以设定以下三种选择:仅 DHCP、仅 BOOTP、两者。如果我们的局域网中由其他的 DHCP 服务器提供动态 IP 地址分配,那么这里选“仅BOOTP”即可;如果需要这台服务器提供动态 IP 地址分配,则需要选“两者”。

接下来,设置启动文件名。在DHCP服务器的作用域选项中配置选项“067:启动文件名”,字串值为我们创建的 PXE 菜单启动文件名 Pxemenu.pxe。注意:文件名不包含路径。

DHCP 服务器只是将启动文件名通知给 BOOTP 客户机,客户机通过什么方式下载启动文件呢?答案是,需要 TFTP 服务。3Com 的 DABS 包含了一个 TFTP 服务组件,当然,也可以下载一个免费的 TFTP 服务器软件长期使用。

在 TFTP 服务器的设置中,规定一个服务目录。将制作的 PXE 启动文件 Pxeghost.img、Pxemenu.pxe 放到 TFTP 的服务目录中。TFTP 服务器设置为自动运行。

用 Ghost 多播克隆硬盘

现在运行 Ghost 多播服务器,任务名称为 Restore。设置完毕,按下[接受客户(Accept Clients)]按钮。启动要接受硬盘克隆的无软驱工作站,如果以上步骤操作无误,应该能够实现 PXE 启动,加入到多播克隆的任务当中。所有的目标工作站连接到本次任务之后,按下[发送(Send)]按钮,开始克隆任务。

五、参数设置

在 Options 中可以设置参数。下面简单介绍一下:
1.image write buffering:在建立备份文件时, 打开写缓冲;
2.sure:选择此项后, 不再会出现最终确认询问 (建议不要选择此项);
3.no int 13:选择此项后, 不支持中断 13 (缺省时不选择);
4.reboot:在对硬盘或者分区操作完成之后, 自动重启计算机;
5.spanning:通过多个卷架构备份文件 (选择此项时, 关闭 write buffering);
6.autoname:自动为 spanning 文件命名;
7.allow 64k fat clusters:允许使用 64K FAT 簇 (仅在 Windows NT 中支持);
8.ignore CRC errors:忽略 CRC 错误;
9.override size limit:如果出现分区大小不相配, 可忽略执行;
10.image read buffering:打开生成备份文件时的读缓存 (缺省时选中此项)。

六、软件特性

1.存贮介质
Ghost 支持的存储介质超出了我们的想象,它支持对等 LPT 接口、对等 USB 接口、对等 TCP/IP 接口、SCSI磁带机、便携式设备(JAZ、ZIP、MO等)、光盘刻录机(CDR、CDRW)等。而这些特性不需要任何外带的驱动程序和软件,只需一张软盘就可以做到!特别是对光盘刻录机的支持,如今的刻录机和空白光盘都十分便宜,非常适合作备份的用途。

2.兼容性
Ghost 对现有的操作系统都有良好的支持,包括 FAT16、FAT32、NTFS、HPFS、UNIX、NOVELL 等文件存储格式。同以前版本不同的是,Ghost 2001 加入了对 Linux EX2的支持(FIFO 文件存储格式),这也就意味着 Linux 的用户也可以用 Ghost 来备份系统了。

3.配套软件

A.Ghost 浏览器
在以前的 Ghost版本中,我们只能对整个系统进行简单的备份、复制、还原,要恢复单个的文件和文件夹还要使用外带的 GhostEXP 软件。现在,Symantec 公司已经将 Ghost 浏览器整合在软件中。Ghost 浏览器采用类似于资源管理器的界面,通过它,我们可以方便迅速地在备份包中找出我们想要的文件和文件夹并还原。
使用Explorer可以备份整个硬盘或单个硬盘分区,点击工具栏上的圆柱形图标,弹出硬盘或分区选择对话窗口,然后再选择备份文件的储存目录并输入名称即可完成。要注意的是,非注册用户不能使用备份这项功能。
在 Ghost Explorer 中管理硬盘备份文件就非常方便了。首先选择打开一个备份文件(File/Open),这时备份中的文件就像资源管理器一样在程序界面窗口中列出,可以在其中非常方便地查看、打开文件,也可以查找文件,或者将某个文件删除(但不能删除目录)。
在 Ghost Explorer 中提供了多种还原硬盘备份文件的方法,最方便的方法是使用鼠标右键点击某个文件,在弹出菜单中选择 Restore,然后输入要还原到的目录,这样,单个文件就从整个磁盘备份中还原出来了。当然,如果要还原整个磁盘备份,只需选择左面目录列表栏中最上面的带磁盘图标的目录项,然后点击工具栏中的还原图标 (第二个) 就可以了。

B.GDisk
GDisk 是一个新加入的实用工具,它彻底取代了 FDisk 和 Format,功能有:
* 快速格式化。
* 隐藏和显示分区。此功能允许一个以上的主 DOS分区,并且每个分区上的操作系统有不同的版本。隐藏分区的能力使计算机习惯于引导到选定的可引导分区,忽略其他隐藏分区中相同操作系统的安装。
* 全面的分区报告。
* 高度安全的磁盘擦除。提供符合美国国防部标准和更高安全标准的磁盘擦除选项。
与使用交互式菜单的 FDisk 不同,GDisk是由命令行驱动的。这提供了更快的配置磁盘分区和在批处理文件中定义 GDisk操作的能力。但与此同时,几十个参数会令普通用户头疼,因此笔者不推荐一般用户使用,Symantec 公司也应该推出相应的GUI(图形用户界面)控制台以方便用户使用。具体的参数说明可以用命令行 gdisk/? 了解。

C.Live Update
Live Update 是 Symantec公司软件的一个通用升级程序,它能够检查当前系统中已安装的 Symantec 软件,并且通过英特网对软件进行在线升级。
在安装 Ghost 2001 时,安装程序自动升级了 Live Update 程序的版本。

七、命令行参数:(Ghost 的无人 备份/恢复/复制 操作)

其实 Ghost 2001 的功能远远不止它主程序中显示的那些,Ghost 可以在其启动的命令行中添加众多参数以实现更多的功能。命令行参数在使用时颇为复杂,不过我们可以制作批处理文件,从而“一劳永逸”(类似于无人安装 Windows 98 和Windows 2000)。现在让我们来了解一些常用的参数(了解更加详细的参数介绍可查看 Ghost 的帮助文件)。
1.-rb
本次 Ghost 操作结束退出时自动重启。这样,在复制系统时就可以放心离开了。
2.-fx
本次 Ghost 操作结束退出时自动回到DOS提示符。
3.-sure
对所有要求确认的提示或警告一律回答“Yes”。此参数有一定危险性,只建议高级用户使用。
4.-fro
如果源分区发现坏簇,则略过提示而强制拷贝。此参数可用于试着挽救硬盘坏道中的数据。
5.@filename
在 filename 中指定 txt 文件。txt文件中为 Ghost 的附加参数,这样做可以不受DOS命令行 150 个字符的限制。
6.-f32
将源 FAT16 分区拷贝后转换成 FAT32(前提是目标分区不小于 2G)。WinNT 4 和Windows95、97用户慎用。
7.-bootcd
当直接向光盘中备份文件时,此选项可以使光盘变成可引导。此过程需要放入启动盘。
8.-fatlimit
将 NT 的 FAT16 分区限制在 2G。此参数在复制 Windows NT 分区,且不想使用64k/簇的 FAT16 时非常有用。
9.-span
分卷参数。当空间不足时提示复制到另一个分区的另一个备份包。
10.-auto
分卷拷贝时不提示就自动赋予一个文件名继续执行。
11.-crcignore
忽略备份包中的 CRC ERROR。除非需要抢救备份包中的数据,否则不要使用此参数,以防数据错误。
12.-ia
全部映像。Ghost 会对硬盘上所有的分区逐个进行备份。
13.-ial
全部映像,类似于 -ia 参数,对 Linux 分区逐个进行备份。
14.-id
全部映像。类似于 -ia 参数,但包含分区的引导信息。
15.-quiet
操作过程中禁止状态更新和用户干预。
16.-script
可以执行多个 Ghost 命令行。命令行存放在指定的文件中。
17.-split=x
将备份包划分成多个分卷,每个分卷的大小为 x兆。这个功能非常实用,用于大型备份包复制到移动式存储设备上,例如将一个 1.9G 的备份包复制到 3 张刻录盘上。
18.-z
将磁盘或分区上的内容保存到映像文件时进行压缩。-z 或 -z1 为低压缩率(快速);-z2 为高压缩率(中速);-z3 至 -z9 压缩率依次增大(速度依次减慢)。
19.-clone
这是实现 Ghost 无人备份/恢复的核心参数。使用语法为:
-clone,MODE=(operation),SRC=(source),DST=(destination),[SZE(size),SZE(size)...]
此参数行较为复杂,且各参数之间不能含有空格。其中 operation意为操作类型,值可取::磁盘到磁盘;load:文件到磁盘;mp:磁盘到文件;p:分区到分区;pload:文件到分区;pmp:分区到文件。
Source 意为操作源,值可取:驱动器号,从1开始;或者为文件名,需要写绝对路径。
Destination 意为目标位置,值可取:驱动器号,从 1开始;或者为文件名,需要写绝对路径;@CDx,刻录机,x 表示刻录机的驱动器号,从1开始。

下面举例说明:

1.命令行参数:ghostpe.exe -clone,mode=,src=1,dst=2
完成操作:将本地磁盘1复制到本地磁盘2。

2.命令行参数:ghostpe.exe -clone,mode=p,src=1:2,dst=2:1
完成操作:将本地磁盘1上的第二分区复制到本地磁盘2的第一分区。

3.命令行参数:ghostpe.exe-clone,mode=load,src=g:\3prtdisk.gho,dst=1,sze1=450M,sze2=1599M,sze3=2047M
完成操作:从映像文件装载磁盘1,并将第一个分区的大小调整为450MB,第二个调整为1599MB,第三个调整为2047MB。

4.命令行参数:ghostpe.exe -clone,mode=pmp,src2:1:4:6,dst=d:\prt246.gho
完成操作:创建仅含有选定分区的映像文件。从磁盘2上选择分区1、4、6。

八、一些示例

ghost.exe -clone,mode=,src=1,dst=2 -sure
硬盘对拷

ghost.exe -clone,mode=p,src=1:2,dst=2:1 -sure
将一号硬盘的第二个分区复制到二号硬盘的第一个分区

ghost.exe -clone,mode=pmp,src=1:2,dst=g:\bac.gho
将一号硬盘的第二个分区做成映像文件放到 g 分区中

ghost.exe -clone,mode=pload,src=g:\bac.gho:2,dst=1:2
从内部存有两个分区的映像文件中,把第二个分区还原到硬盘的第二个分区

ghost.exe -clone,mode=pload,src=g:\bac.gho,dst=1:1 -fx -sure -rb
用 g 盘的 bac.gho 文件还原 c 盘。完成后不显示任何信息,直接启动

ghost.exe -clone,mode=load,src=g:\bac.gho,dst=2,SZE1=60P,SZE2=40P
将映像文件还原到第二个硬盘,并将分区大小比例修改成 60:40

自动还原磁盘:
首先做一个启动盘,包含 Config.sys, Autoexec.bat, Command.com, Io.sys, Ghost.exe 文件(可以用 windows 做启动盘的程序完成)。Autoexec.bat 包含以下命令:
Ghost.exe -clone,mode=pload,src=d:\bac.gho,dst=1:1 -fx -sure -rb
利用在 D 盘的文件自动还原,结束以后自动退出 ghost 并且重新启动。

自动备份磁盘:
ghost.exe -clone,mode=pmp,src=1:1,dst=d:\bac.gho -fx -sure -rb

自动还原光盘:
包含文件:Config.sys, Autoexec.bat, Mscdex.exe (CDROM 执行程序), Oakcdrom.sys (ATAPI CDROM 兼容驱动程序), Ghost.exe。
Config.sys 内容为:
DEVICE=OAKCDROM.SYS /D:IDECD001
Autoexec.bat 内容为:
MSCDEX.EXE /D:IDECE001 /L:Z
Ghost -clone,mode=load,src=z:\bac.gho,dst=1:1 -sure -rb

可以根据下面的具体说明修改示例:

1.-clone

-clone 在使用时必须加入参数,它同时也是所有的 switch{batch switch} 里最实用的。下面是 clone 所定义的参数:

mode={|load|mp|p|pload|pmp},
src={drive|file|driveartition},
dst={drive|file|driveartition}

mode 指定要使用哪种 clone 所提供的命令
硬盘到硬盘的复制 (disk to disk )
load 文件还原到硬盘 (file to disk load)
mp 将硬盘做成映像文件 (disk to file mp)
p 分区到分区的复制 (partition to partition )
pload 文件还原到分区 (file to partition load)
pmp 分区备份成映像文件(partition to file mp)

src 指定了 ghost 运行时使用的源分区的位置模式及其意义。对应 mode 命令 src 所使用参数例子:
COPY/DUMP 源硬盘号。以 1 代表第一号硬盘
LOAD 映像文件名。g:/back98/setup98.gho 或装置名称 (drive)
PCOPY/PDUMP 源分区号。1:2 代表的是硬盘1的第二个分区
PLOAD 分区映像文件名加上分区号或是驱动器名加上分区号。g:\back98.gho:2 代表映像文件里的第二个分区

dst 指定运行 Ghost 时使用的目标位置模式及其意义。对应 mode 命令 dst 所使用参数例子:
COPY/DUMP 目的硬盘号。2 代表第二号硬盘
LOAD 硬盘映像文件名。例 g:\back98\setup98.gho
PCOPY/PLOAD 目的分区号。2:2 代表硬盘 2 的第二个分区
PDUMP 分区映像文件名加分区号。g:\back98\setup98.gho:2
SZEn 指定所使用目的分区的大小:
n=xxxxM 指定第 n 目的分区的大小为 xxxxMB。如 SZE2=800M 表示分区 2 的大小为 800MB
n=mmP 指定第 n 目的分区的大小为整个硬盘的 mm 个百分比。

2.-fxo 当源物件出现坏块时,强迫复制继续进行

3.-fx 当ghost完成新系统的工作后不显示 press ctrl-alt-del to reboot 直接回到DOS下

4.-ia 完全执行扇区到扇区的复制。当由一个映像文件或由另一个硬盘为来源,复制一个分区时,Ghost将首先检查来源分区,再决定是要复制文件和目录结构还是要做映像复制(扇区到扇区)。预设是这种形式。但是有的时候,硬盘里特定的位置可能会放一些隐藏的与系统安全有关的文件。只有用扇区到扇区复制的方法才能正确复制

5.-pwd and -pwd=x 给映像文件加密

6.-rb 在还原或复制完成以后,让系统重新启动

7.-sure 可以和 clone 合用。Ghost 不会显示 proceed with disk clone-destination drive will be overwritten? 提示信息

九、注意事项

1.在备份系统时,单个的备份文件最好不要超过 2GB。
2.在备份系统前,最好将一些无用的文件删除以减少Ghost文件的体积。通常无用的文件有:Windows 的临时文件夹、IE 临时文件夹、Windows 的内存交换文件。这些文件通常要占去100 多兆硬盘空间。
3.在备份系统前,整理目标盘和源盘,以加快备份速度。
4.在备份系统前及恢复系统前,最好检查一下目标盘和源盘,纠正磁盘错误。
5.在恢复系统时,最好先检查一下要恢复的目标盘是否有重要的文件还未转移,千万不要等硬盘信息被覆盖后才后悔莫及啊。
6.在选择压缩率时,建议不要选择最高压缩率,因为最高压缩率非常耗时,而压缩率又没有明显的提高。
7.在新安装了软件和硬件后,最好重新制作映像文件,否则很可能在恢复后出现一些莫名其妙的错误。
我只能说这么多了,不知道谁还能说的更详细呢~!

⑦ 请问这个指令什么意思[DABS X002 Y004 D8142]

是三菱PLC与三菱伺服驱动器特有指令,DABS是绝对位置计算,可以反映伺服在掉电时准确记录当前位置。

X002 是放大器给出信号 绝对位置

Y004 是放大器输入信号 启动伺服

D8142 记录当前脉冲

⑧ 如何实现windows那样的文件夹效果

Ghost使用秘籍
电脑一方面带给用户极大的便利;另一方面,由于使用不当或不可预见的原因引起的操作系统瘫痪、数据丢失问题,也给用户带来很大的烦恼。有鉴于此,作为一名电脑用户,掌握备份与恢复的真功夫便显得尤为重要。Ghost以功能强大、使用方便着称,成为硬盘备份和恢复类软件中的翘楚。本着对正在使用Ghost的用户有所帮助、而让以前未使用过它的用户少走一些弯路的想法,本文着重谈谈该软件的一些使用技巧。
■选用哪一版本的Ghost?
Ghost版本众多,一般而言,玩家应选用5.1c以后的版本,包括5.1c、5.1d、Ghost 2000等。由于Symantec收购了Ghost产品,故这些较新的版本均称为Symantec Ghost。以上列举的版本兼容FAT32分区方式,支持中文长文件名,能够很好地实现操作系统和数据文件的备份,亦可用于硬盘或分区的“克隆”操作,这在新装机或更换硬盘时特别有用。 而5.1以前的版本,则或多或少存在问题。笔者曾使用4.0版Ghost,软件已成功注册,在将分区制成Image文件时,一切正常,而当由映象文件回写分区时,操作过程显示正常,但实际上并未对目标分区进行任何改变,反复试验多次,皆未能如愿。
■为何要备份操作系统?
为避免系统瘫痪后重装操作系统、应用软件和配置Internet相关参数的浩大工程,必须对操作系统进行备份。为此,硬盘必须进行分区,至少应分成C、D两个盘,其中C盘用来安装操作系统,D盘存放应用软件、数据文件以及Ghost备份的C盘映象文件。这样,当操作系统出现问题后,D盘并未受到任何影响,只须将D盘存放的映象文件写回C盘分区,即可将操作系统恢复原样。
■如何配置C盘?
C盘分区大小要适当。分区太小,影响Windows运行速度;分区过大,要么造成硬盘空间浪费,要么造成备份数据量太多,既白白占用了宝贵的硬盘,又在备份和恢复过程中耗费额外的时间。 以使用Windows 98操作系统为例,C盘大小在600MB左右比较合适。Windows98大约占用200MB,虚拟内存大约近百兆,再加上一些常用的工具小软件,一共占用大约400MB,还剩200MB左右自由空间,Windows 98运行起来不会捉襟见肘。对C盘分区进行备份时,映象文件即使不压缩,也就三、四百兆,可谓两全其美。
■备份前,别忘了整理C盘
(1)先整理操作系统。把与网络相关的设置配置完毕,把可能存在于Windows 98的Temp子文件夹里的临时文件都删除干净,再把MyDocuments(默认存放用户文档的地方)和Temporary Internet Files(浏览器暂存文件处,保留其中的文件,用户可以实现离线浏览)文件夹搬到D盘,具体搬迁办法参看相关文章。这样做的好处很明显,可以保证所有由用户产生的文件都不存放在C盘,一旦出现意外,能够毫无顾忌地重写C盘。另外,也可以删去那些用处不大的帮助文件、自述文件、屏幕保护和背景图片以及众多的音频文件等,以便使操作系统达到更好的瘦身减肥效果。
(2)在安装大型应用软件,如Office 2000、Photoshop 5.0等时,最好把它们安装到D盘,这样C盘就不至于过分膨胀,可使备份数据量大大减小。
(3)常用工具小软件,如Winzip、ACDSee、刻录小软件等,可以安装在D盘,安装在C盘也无妨,反正占不了多大空间。
最后,别忘了再进行一次彻底的磁盘碎片整理,将C盘调整到最优状态。接着,即可从DOS下运行Ghost软件,制作C盘映象文件。
■分区备份技巧
硬盘分区备份的一般操作方法:从Ghost主选单中选择“Local→Partition→To Image”选项,打开制作分区映象文件窗口,挑选欲备份的硬盘(如果挂有一个以上硬盘)和分区,再指定映象文件名称和存放路径,确认之后,即开始生成扩展名为.gho的映象文件,耗时大约十分钟左右。
备份技巧:
(1)最好在D盘建一个Ghost文件夹,将生成的备份文件*.gho与Ghost.exe都存放在此文件夹下。这样,日后进行恢复操作时,一启动Ghost软件,立刻就能显示出备份的映象文件,无须到处去查找。要知道,在DOS下运行Ghost软件,如果未加载鼠标驱动程序,单靠键盘找起文件来是很烦人的。
(2)将备份的映象文件设成系统、隐含、只读属性。一方面可以防止意外删除、感染病毒;另一方面可以避免在对D盘进行碎片整理时,频繁移动映象文件的位置,节约整理磁盘时间。
(3)在生成映象文件时,通常应该采用最大压缩算法,这样,生成的映象文件字节明显减少,节省硬盘空间,否则,映象文件将和C盘文件总字节数一样。采用最大压缩方式,虽然处理时间会相应延长,但分区备份和恢复操作频率很低,也许好几个月才进行一次,还是节省硬盘空间更划算。
■让备份和恢复更加保险
由于病毒或操作失误,有可能造成映象文件丢失或文件分区表损坏。如果仅仅按照上述方法做了备份,仍然有遭到“灭顶之灾”的危险,尽管几率很小。因此有条件的话,还应该采取以下防范措施:
(1)备份文件分区表信息。采用Kill 98、KV300、Norton等软件,即可在软盘上生成文件分区表备份。如遇病毒攻击分区信息致瘫时,可轻松予以复原。
(2)将映象文件复制到外置硬盘或刻录到光盘上,以防硬盘上的映象文件受损。
(3)将Ghost.exe文件拷贝至软盘上,必要时可以运行软盘上的文件,由光盘或外置存储设备恢复分区原貌。
■恢复备份需知
对于采用了启动管理器分区实现双启动或多启动方式的硬盘,进行恢复分区操作(即由映象文件重写分区)时,最好先关闭启动管理,然后进行恢复操作,待一切正常后,再将启动管理器复原。之所以这么做,是因为启动管理器所在分区必定是活动分区,如果当初制作备份的分区也是活动的,那么在执行恢复操作后,就同时出现两个活动分区,极易造成死机。
有时,在执行重写分区操作后,DIR列目录,发现全部是怪怪的、长长的乱码文件名,并且全部文件都位于根目录下,看不到树状子目录结构了。这时,千万不要惊慌,更不要冒失地删除文件或格式化硬盘。其实,你的硬盘根本没事儿,只需重新启动电脑,就会一切正常了。
■应用Ghost需知
(1)无论是备份还是恢复分区,都应尽量在纯DOS环境下进行,一般不要从Windows或假DOS下进行相应的操作。
Ghost软件包里有一个Explorer程序,在Windows环境下运行它后,可以像普通解压软件那样,随便从映象文件里释放文件或文件夹。不过,窃以为用处不大。因为Ghost的最大好处就是可以不管三七二十一,在最短的时间里可以将分区恢复原样,而无须过问到底是缺损哪个文件引起的故障。
(2)在使用Ghost进行硬盘或分区对拷时,由容量小的硬盘或分区向容量等同或大的硬盘、分区进行克隆是完全没有问题的,并且目标硬盘或分区会与源盘一样,大于源盘容量的部分,就成为自由空间。例如,源分区共600MB,采用FAT16分区方式,共有400MB数据,而目标分区共1GB,采用FAT32分区方式,则由源分区顺利克隆到目标分区后,目标分区也变成了FAT16分区方式,但容量仍为1GB,数据文件同样占据400MB空间。所以,在将电脑升级为大硬盘时,可以很容易地将原来硬盘上的内容复制过去,根本无须重装操作系统和应用软件。
(3)有些玩家的Ghost是未授权版本,需要找到扩展名为.env的文件,先行注册方能正常使用,注册以DOS下的命令行方式进行,其格式在软件包自述文件里有详细说明。

GHOST使用步骤图解

即使你拥有最先进的电脑,采用传统的方法,Windows的安装速度仍然是令人头痛的!有没有什么重装系统的简便方法呢?Ghost就是其中的一种选择,GHOST是大家在备份/维护系统最常用也最功能强大的工具软件.

Norton Ghost的文件比较小,只要一个主文件Ghost.exe(Ghost 2002仅600多KB)就可工作,一张启动盘就可以装下。由于是纯DOS程序,建议做张启动盘并将Norton Ghost放在软盘上。下面,我们就一步步来看看怎样制作镜像文件和恢复系统:

制作主分区镜像

运行Norton Ghost后,首先看到的是主菜单,其中各个选项的含义是:

Local:本地硬盘间的操作

LPT:并行口连接的硬盘间操作

NetBios:网络硬盘间的操作

Option:设置(一般使用默认值)

以单机为例,选择"Local"菜单,这里又包括以下子菜单:

Disk:硬盘操作选项

Partition:分区操作选项

Check:检查功能(一般忽略)

好,了饬瞬说ハ畹暮�搴螅�颐蔷涂梢钥�肌爸刈爸�谩绷恕?lt;br>

图1:选择"分区"到"镜像"

选择"Partition"看到如下命令:

TO Partition:分区对分区拷贝

TO Image:分区内容备份成镜像

From Image:镜像复原到分区

对于一般用户,用得最多的还是"TO Partition"(分区操作)中的"TO Image"( 分区内容备份成镜像文件)或"From Image"(从镜像文件复原到分区)两项。

图2:正确选择源硬盘

首先用一张干净的启动盘启动机器到纯DOS模式下,执行Ghost.exe文件,在显示出Ghost主画面后,选择"Local→Partition→To Image",屏幕显示出硬盘选择画面,选择源分区所在的硬盘"1"(注意例图为双硬盘)。

图3:正确选择源分区

选择要制作镜像文件的分区(即源分区),这里选择分区"1"(即C分区),选择后单击"OK"按钮。
图4:为镜像文件命名

发表: 2005-02-05 12:50:10 第39楼

选择镜像文件保存的位置(要特别注意的是不能选择需要备份的分区C),再在"Filename"文本框键入镜像文件名称,如"C_BAK"或"C_BAK.GHO",然后按回车键即可。

图5:开始制作分区镜像

接下来Norton Ghost会询问你是否需要压缩镜像文件,"No"表示不做任何压缩;"Fast"的意思是进行小比例压缩但是备份工作的执行速度较快;"High"是采用较高的压缩比但是备份速度相对较慢。一般都是选择"High",虽然速度稍慢,但镜像文件所占用的硬盘空间会大大降低。

这一切准备工作做完后,Norton Ghost就开始为你制作这个名为"C_BAK.GHO"的镜像文件了。根据笔者的经验,备份速度与CPU主频和内容容量有很大的关系,一般来说64MB内存可以达到71MB/min,笔者的C盘大约使用了2GB左右,只用了10分钟左右,为了避免误删文件,最好将这个镜像文件的属性设定为"只读"。

恢复主分区镜像

通过上面的工作,我们已经在D盘备份了一个名为"C_BAK.GHO"的镜像文件了,在必要时可按下面的步骤快速恢复C盘的本来面目。

图6:选择源镜像文件

运行Norton Ghost,在主菜单中选择"Local→Partition→From Image"项(注意这次是"From Image"项),从D盘中选择刚才的主分区镜像文件C_BAK.GHO。

图7:确定源分区

从"C_BAK.GHO"文件中选择需要恢复的分区,这里本来就只有一个C分区的镜像,因此直接选择该分区。

图8:选择目标硬盘

选择要恢复镜像的目标硬盘,一般来说是主硬盘。

图9:确目标分区

选择要恢复镜像的目标硬盘中的目标分区C,注意目标分区千万不能选错,否则后果不堪设想。

最后,Norton Ghost会再一次询问你是否进行恢复操作,并且警告你如果进行的话目标分区上的所有资料将会全部消失,点击"Y"后就开始恢复操作,时间与制作镜像的时间大致相等。恢复工作结束后,Norton Ghost会建议重新启动系统,按照提示要求做就可以了。很快一个干净、完美的基本系统便重新出现在你面前。

使用Norton Ghost的注意点

1、将Norton Ghost放在启动盘上;

2、正确设置硬盘工作方式,让你的硬盘工作在Ultra ATA/33/66模式下,制作镜像文件的速度比较快;

3、镜像文件应尽量保持"干净"、"基本"。应用软件安装得越多,系统被修改得越严重,安装新软件也就越容易出错,所以在制作镜像文件前,千万不要安装过多的应用软件;

4、恢复镜像文件的同时,目标盘上的原有数据全部被覆盖,使用任何反删除法都无法恢复。
-------------------------------------------

二、局域网操作

LPT 是通过并口传送备份文件,下面有两个选项:slave 和 master, 分别用以连接主机和客户机。 网络基本输入输出系统 NetBios 和 LPT 相似, 也有 slave 和 master 两个选项, 作用与 LPT 相同。
先和平时一样将要 ghost 的分区做成一个 *.gho 文件,再在一台 win98 上安装Symantec Ghost 企业版,重启。
1. 首先制作一张 ghost 带网卡驱动的启动盘。Start > Programs > Symantec Ghost > Ghost Boot Wizard->Network Boot Disk 如果你的网卡在列表内直接选择它就可以生成一张带 PC-DOS 的启动盘。(但 6.5版的生成的软盘经常有问题,不能成功启动)如果你的网卡不在列表内,你要建立专用的 Packet Driver。ADD->Packet Driver (网卡的驱动程序中有)往下根据提示一步一步走,填入工作站的 ip(ghost 一定要 tcp/ip 协议)。最后生成一张软盘,但此软盘仍不能使用,要改 autoexec.bat 文件在 net xxxx.dos 后面加一个16进制的地址,如 0X75 等。多台计算机只需改 wattcp.cfg 文件中的 ip 即可:
IP = 192.168.100.44
NETMASK = 255.255.255.0
GATEWAY = 192.168.100.1
2. 在 server 端运行 multicast server 出来的画面。先给 server一个Session Name(别名)如:bb,再选择 image file 就是你的 gho 文件。然后 ->Dump From Client->rtitions->More Options-> 在 auto start 的 client 中填入 50(如果你要同时复制50台)->accept client 就算完成了,当你的工作站数达到50台时,server就自动传送*.gho 文件。

3.详述:
目前,相当多的电子教室都采用了没有软驱、光驱的工作站。在没有软驱、光驱的情况下,当硬盘的软件系统出现问题时,能否实现网络硬盘克隆呢?PXE(Preboot Execution Environment,它是基于 TCP/IP、DHCP、TFTP 等 Internet 协议之上的扩展网络协议)技术提供的从网络启动的功能,让我们找到了解决之道。下面,我们就来讲解怎样采用Ghost 7.0来实现基于 PXE 的网络硬盘克隆。

-------------------------------

三、 网络硬盘克隆过程简述

网络硬盘克隆过程为:在装有软驱的工作站上,用一张引导盘来启动机器,连接到服务器,使用 Ghost 多播服务(Multicast Server)将硬盘或分区的映像克隆到工作站,这样就实现了不拆机、安全、快速的网络硬盘克隆。

实现 PXE 网络启动方式

对于没有软驱、光驱的工作站,要实现PXE网络启动方式,需要完成三个步骤:

1、工作站的PXE启动设置

PXE网络启动一般要求在网卡上加装 PXE 启动芯片(PXE Boot ROM);对于某些型号的网卡,也可以将 PXE 启动代码(Boot Code)写入主板的 Flash ROM;而一些主板上集成了网卡的品牌机(例如清华同方的商用机),可直接支持PXE启动。

常用的 RTL8139 芯片的网卡,其 PXE 启动设置方式是:机器启动时根据屏幕提示按下Shift+F10,在启动类型中选择PXE,开启网络启动选项即可。

2、制作 PXE 启动文件

制作 PXE 的启动文件,推荐使用 3Com 的 DABS(Dynamic Access Boot Services)。DABS 提供了功能强大的 PXE 启动服务、管理功能,但是,网上可供下载的是一个30天的试用版。所以,我们只用它的启动映像文件制作功能,而由 Windows 2000 Server 的 DHCP 服务器来提供 PXE 启动服务。

DABS 可以安装在任何一台运行 Windows 的机器上。安装后,运行 3Com Boot Image Editor,出现主界面图。选择"创建TCP/IP或PXE映像文件(Create a TCP/IP or PXE image file)",出现对话窗口。为即将建立的映像文件命名,例如:pxeghost.img,其他采用默认选项,将经测试正常的网络启动盘放入软驱,选择[OK],创建PXE启动映像 Pxeghost.img文件。

在 3Com Boot Image Editor 的主菜单中,选择"创建PXE菜单启动文件(Creat a PXE menu boot file)",在出现的窗口中选择[添加(Add)],加入我们刚刚创建的启动映像文件Pxeghost.img,在"选项(Options)"标签中可以设置菜单标题和等待时间。

选择[保存(Save)],给保存的PXE菜单启动文件命名为 Pxemenu.pxe。

3、服务器的PXE启动服务设置

Windows 2000 Server 的 DHCP 服务支持两种启动协议:DHCP 和 BOOTP。我们可以设定以下三种选择:仅 DHCP、仅 BOOTP、两者。如果我们的局域网中由其他的 DHCP 服务器提供动态 IP 地址分配,那么这里选"仅BOOTP"即可;如果需要这台服务器提供动态 IP 地址分配,则需要选"两者"。

接下来,设置启动文件名。在DHCP服务器的作用域选项中配置选项"067:启动文件名",字串值为我们创建的 PXE 菜单启动文件名 Pxemenu.pxe。注意:文件名不包含路径。

DHCP 服务器只是将启动文件名通知给 BOOTP 客户机,客户机通过什么方式下载启动文件呢?答案是,需要 TFTP 服务。3Com 的 DABS 包含了一个 TFTP 服务组件,当然,也可以下载一个免费的 TFTP 服务器软件长期使用。

在 TFTP 服务器的设置中,规定一个服务目录。将制作的 PXE 启动文件 Pxeghost.img、Pxemenu.pxe 放到 TFTP 的服务目录中。TFTP 服务器设置为自动运行。

用 Ghost 多播克隆硬盘

现在运行 Ghost 多播服务器,任务名称为 Restore。设置完毕,按下[接受客户(Accept Clients)]按钮。启动要接受硬盘克隆的无软驱工作站,如果以上步骤操作无误,应该能够实现 PXE 启动,加入到多播克隆的任务当中。所有的目标工作站连接到本次任务之后,按下[发送(Send)]按钮,开始克隆任务。

⑨ 地球的平均半径为6371千米,已知地球上两个城市A、B的经度和纬度,编程序求出这两个城市之间的地面距离。

#include<iostream>
#include<math.h>

using namespace std;

#ifndef M_PI
#define M_PI (3.141592653)
#endif

#define EARTH_R (6371.0)
#define MIN_DISTANCE (0.00001)//最小分辨度为1厘米

//求double类型的绝对值
double dabs(double value){
return value > 0.0 ? value : (0.0 - value);
}

//求double类型的较大数
double max(double a, double b){
return a > b ? a : b;
}
//求double类型的较小数
double min(double a, double b){
return a < b ? a : b;
}

double toRadian(double angle){
return angle / 360.0 * 2 * M_PI;
}

//已知半径、圆心角角度(弧度制),求圆心角对应的弦长
double getChordByRadiusAngle(double radius, double angle){
return 2.0 * radius * sin((angle / 2.0));//求得弦长
}

//已知半径、弦长,求弧对应的弧度(弧度制)
double getAngleByRadiusChord(double radius, double chord){
return 2.0 * asin(chord / 2.0 / radius);//求得弦对应的大圆圆心角,弧度制
}

//已知半径、弦长,求弦端点在球面上的距离
double getArcByRadiusChord(double radius, double chord){
double angle =getAngleByRadiusChord(radius, chord);//求得弦对应的大圆圆心角,弧度制

double distance = (M_PI * radius) * (angle / M_PI);
return distance;
}

//经度相同,求纬度不同的两点A、B间的弦长
//输入:A点的纬度([90,-90],北纬为正)、B点的纬度
//输出:点A、B间的弦长
double chord_Longitude(double latitudeA, double latitudeB){
double latitudeDiff = dabs(latitudeA - latitudeB);
double angle = toRadian(latitudeDiff);//求得大圆圆心角,弧度制

return getChordByRadiusAngle(EARTH_R, angle);//求得弦长
}

//纬度相同,求经度不同的两点A、B间的弦长
//输入:A点的经度([180,-180],东经为正)、B点的经度、纬度([90,-90],北纬为正)
//输出:点A、B间的弦长
double chord_Latitude(double longitudeA, double longitudeB, double latitude){
latitude = dabs(latitude);
double laR = EARTH_R * cos((latitude / 180.0) * M_PI);//求得纬线圈半径

double longitudeDiff = dabs(longitudeA - longitudeB);
longitudeDiff = longitudeDiff < 180.0 ? longitudeDiff : (360.0 - longitudeDiff);
double angle = toRadian(longitudeDiff);

return getChordByRadiusAngle(laR, angle);//求得弦长
}

//输入两点的经纬度,求出两点的距离
//输入:A点的经度([180,-180],东经为正)、A点的纬度([90,-90],北纬为正)、B点的经度、B点的纬度
//输出:点A、B的距离
//先求得两点的弦长,再求弦对应的大圆圆心角,最后得到大圆弧线长即为距离
double distanceOf2Points(double longitudeA, double latitudeA, double longitudeB, double latitudeB){
double chord = 0.0;
/*
if(longitudeA == longitudeB){//经度相同
chord = chord_Longitude(latitudeA, latitudeB);
}else if(latitudeA == latitudeB){//纬度相同
chord = chord_Latitude(longitudeA, longitudeB, latitudeA);
}else{*/
//求以AB为对角线,以过点A、B的两条纬线、经线的四个交点为顶点的等腰梯形的四条边长
double baselineA = chord_Latitude(longitudeA, longitudeB, latitudeA);//过点A的底线长
double baselineB = chord_Latitude(longitudeA, longitudeB, latitudeB);//过点B的底线长
double waistline = chord_Longitude(latitudeA, latitudeB);//腰线长
/*
if(baselineA == baselineB){//实为矩形
chord = sqrt(baselineA * baselineA + waistline * waistline);
std::cout<<"矩形: "<<chord<<endl;
}else{*/
double baselineS = min(baselineA, baselineB);//较短的底线
double baselineL = max(baselineA, baselineB);//较长的底线
double shortline = (baselineL - baselineS) / 2.0;//分割中间矩形后,边侧直角三角形的边

chord = sqrt(waistline * waistline - shortline * shortline + (baselineL - shortline) * (baselineL - shortline));
//}
//}

double distance = getArcByRadiusChord(EARTH_R, chord);
if(distance >= MIN_DISTANCE){
return distance;
}
return 0.0;
}

int main(){
double params[4];
int i;
double distance;

std::cout<<"输入格式:A点经度 A点纬度 B点经度 B点纬度"<<std::endl<<std::endl;

while(true){
i = 0;
distance = -1.0;
while(std::cin>>params[i]){//读入四个经纬值
i++;
if(4 == i){
break;
}
}
if(4 == i){
distance = distanceOf2Points(params[0], params[1], params[2], params[3]);
std::cout<<"A点("<<params[0]<<","<<params[1]<<")、B点("<<params[2]<<","<<params[3]<<") 的距离为:"<<std::endl<<distance<<"(千米)"<<std::endl<<std::endl;
}else{
break;//输入非数字 字符时,结束程序
}
}
return 0;
}

阅读全文

与dabs编程是什么意思相关的资料

热点内容
网盘忘记解压码怎么办 浏览:852
文件加密看不到里面的内容 浏览:651
程序员脑子里都想什么 浏览:430
oppp手机信任app在哪里设置 浏览:185
java地址重定向 浏览:268
一年级下册摘苹果的算法是怎样的 浏览:448
程序员出轨电视剧 浏览:88
服务器系统地址怎么查 浏览:54
解压游戏发行官 浏览:601
国外小伙解压实验 浏览:336
顶级大学开设加密货币 浏览:437
java重载与多态 浏览:528
腾讯应届程序员 浏览:942
一键编译程序 浏览:129
语音加密包哪个好 浏览:340
有什么学习高中语文的app 浏览:282
安卓手机的表格里怎么打勾 浏览:411
阿里云服务器有网络安全服务吗 浏览:969
超解压兔子视频 浏览:24
单片机怎么测负脉冲 浏览:174