2007年06月26日

自动登陆

1、点击“开始”,在“运行”里输入“regedit”,然后依次展开
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon,然后在右侧窗口双击“DefaultUserName”,接着输入你的登录用户名。
第2步、同样在该分支下,在注册表编辑器的右侧窗口中双击“DefaultPassword”,然后在空白栏内输入你的密码。 
第3步、接下来在右侧窗口中双击“AutoAdminLogon”,将数值设置为“1”。
如果没有上面的键值,可以选“编辑→新建→字符串值”来添加这个项目,注意要区分大小写字母。

2、单击“开始→运行”输入 control userpasswords2,然后进入“用户账户”操作窗口取消对“要使用本机,用户必须输入用户名及密码”项的选择。在接下来弹出的对话框中输入你想让电脑每次自动登录的账户名及其密码。

 
3.单击“开始/运行”,输入“ rundll32 netplwiz.dll,UsersRunDll”,按回车键后弹出“用户帐户”窗口,设置如2
4.使用工具.比如优化大师,在系统优化界面中点击自动登陆,设置好用户名和密码即可
2007年06月18日
分享我多次网刻的经验,和常见的一些网刻问题!
 

   

 

 

分享我多次网刻的经验,和常见的一些网刻问题!
想必大家都有遇到过网刻慢,或者网刻一半出现错误之类的吧,我也遇到过,呵呵,上一次网刻记得第一次刻到 75%时出现“客户机被从至”汗,我以为是客户机出问题,于是就从新刻了一次,汗,这次到 52% 就挂了,不信邪,再来一次,结果,这次 25%就挂了,没办法只能好暂停下来了,看一下客户端里有提示什么镜像错误的,没招,第一次做母盘镜像时用高级压缩的,只好从新再做一次母盘镜像,第二次用了普通压缩。呵呵,再次网刻,终于顺利完成了,所以有时遇到网刻一半时出错的错误,不妨从做一下母盘镜像,最好是使用普通压缩,比较不会出现错误,理论上觉得用高级压缩网刻还原时会快点,但实际测试,速度差不多一样.

      还有是做母盘镜像时要注意的是,1、母盘镜像的存放分区一定要比原盘的整个硬盘大这个是肯定 的,用来存放“母盘备份镜像”的硬盘分区最好使用 FAT32 格式,因为用NTFS分区会出现你同时写入过大的文件,而造成看不到你做好的镜像文件,但镜像文件确实是存在,而且也占用了空间,但是在分区里却看不到文件,这可能是一个NTFS的BUG吧,不过如果你用了NTFS备份完后发现如上所说的看不到,也不要紧,就是麻烦一点,选中你存放镜像的硬盘分区,右键属性–工具–点“开始检查”检查该卷的错误,检查完毕后从新启动计算机,就可以正常的识别出你的备份文件了(但经测试好像使用此检查功能容易造成镜像损坏现像,就像如上所说的,被客户端从置,所以建议存放镜像的盘还是用FAT32安全点,我都是用FAT32),还有一点要注意的是,用GHOST备份的话,如果镜像超过 2G的话,GHOST会自动给它分卷,分成多个 ***.CHS 的分卷文件,不要把这些删了,我发现有些人把这些 ***.CHS 文件删了,再到这里叫为什么网刻不成功,晕死了。

    还有一点就是关于网刻慢的问题了,如果要测试网刻速度快慢或你的网络环境如何的话,不如先试试单机网刻,或者有时用GHOST本机还原系统或本机对刻时速度慢的做个记录,如果网刻慢的可以先去掉这些机子,如果本机刻低于400M/min属于硬件有点不正常了。然后使用单对单网刻,先测试网络环境,一般你单对单网刻可以达到多少,1带30左右也一样可以达到多少,要注意的是,硬盘分区有坏道的,千万不要加进去网刻行列否则严重影响速度。哪台机子网卡有时不正常的也不要加进去,还有哪台机子网络速度有明显偏 慢的(可以在WIN下从网络上COPY个文件试试),也不要加进去。因为这会明显拖全部机器的速度,我经常遇到的是网络一切正常,但就是网刻速度只能保持在 100-200M/min 而且经常遇见刻一半时还会停上好几分钟不进,要很久才进一点,有时甚至到一半就这样卡死在中间了,到最后通过排除方法排除了一个硬盘有坏道,把这个机子去掉,整体速度就进直上 400-500M/Min ,所以一般网络速度慢的可能性较少,还有就是有的硬盘好像是天生畸形,速度超慢,我就遇到两三个,用单机还原时不管高级压缩或普通压缩,还原速度都只能在100-200M,包括硬盘对刻也是如此,检查坏道时也没有发现有坏道,但是GHOST速度就是超慢。换到别的机子上刻也是如此。如果你在网刻时出现其它营业的机子都掉线的话,可能是你的交换机太烂了。

       现在来说说排除方法,如上所说的先排除,硬盘坏道、硬盘单刻或本机还原时速度小于400M/Min 以下的、个别机子网络速度特慢的、例如有时从网络COPY东西时特慢的、还有就是个别机子有出现网络时段时连的、也排除掉,以上的都尽量不要加进网刻行列。再者就是交换机,尽量使用 单个700元以上级别的。接下来就是测试网络的刻隆速度了,如果速度在5-10分钟内每分钟的网刻速度小于 100M的,建议停掉网络刻隆,先排除问题所在再次网刻,排除法如下,在服务端上按下停止发送,或者你知道哪台机子速度慢的想脱离掉网络可以使用CTRL+C 中断网刻,一定不能使用REST否则整个网络都会停下来等待你这台机子了。

  然后到每台的客户机上看一下,都会提示一个错误提示,直接按下确定。确定后确记,一定不能重启计算机,否则你就要拿硬盘刻了,现在拿我的MaxDOS为例,按下服务端的停止发送后,到客户机上按确定自动退出GHOST到命令行下,然后卸载网卡驱动,拿 8139 的网卡为例子,卸载网卡驱动的命令行 : rtl8139 -u (RTL8139.com 是8139网卡驱动的可执行程序,如果名字不一样,请自己更换)这样就可以卸载掉8139网卡的驱动程序了。其它的如果你不知道他的驱动程序名的话,可以在DOS命令行上输入 %ramdrive% 回车,再输入 dir *.com 这样就能列出所有的网卡驱动的,或者看MaxDOS的帮助文件,里面都有注明驱动程序的可执行文件名称,驱动的卸载参数并不是所有都是用 -U ,其它的,你可使用如 RTL8139 /? 来得到帮助,认点英语的人就懂的看哪个是卸载网卡参数了,如最好识别的反安装英语 uninstall ,卸载完DOS驱动后先选上10台测试,再到服务端上点"接受客户端"然后就可以在客户端上再次使用 8139GO 10 ,(命令行解:8139的网卡,本客户机的IP为:192.168.5.10,只输最后一个10即可,前面你可以不管,我只解释一下)当然如果你不确定哪 台机子有问题的话,你可先10台一批10台一秕测试几分钟,使用如上方法,断开后卸载网卡再刻,(这里指的是我的MaxDOs 其它我可不知道了,喜欢的可以到 Pzz.CN 里下载)如果10台里网刻速度小于100M/Min的,就直接CTRL+C中断下来或服务端上停止发送,这样就可以排除出在哪 一批里出问题,然后最后把那些速度快的搞到一批网刻,刻完了这批再慢慢去搞有故障的那些机子吧,呵呵,好了,先罗索到这里,下次有新经验再来分享,有兴趣讨论网刻的,可以到我论坛里 bbs.pzz.cn 有网刻专版讨论的,来交流一下经验,最后,祝你网刻顺利,速度超快,呵呵!

于网刻-用局域网进行GHOST多播装系统
什么是网刻呢?答:网刻就是网络克隆!一台电脑的配制通过软、硬件实现多台同样配置的克隆。

比如用局域网进行GHOST多播装系统。 所谓Ghost的多播功能,实际上就是把你“样机”中的.gho自动地恢复到你的所有工作站中去,特别是在各工作站配置相同的情况下,可以大大减轻组网者的工作量。以下,就由笔者带你一步步地来实现它。   说明:工作站端网卡均以RTL8139为例!服务器端网卡可为任意。   一、安装Ghost 6.0   1、准备工作   (1)选任意一台计算机作“多播服务器”,安装好所需的操作系统(比如Win98)及应用软件,并做好相应设置。   (2)软件下载(试用版)   下载地址:http://www3.skycn.com/soft/3532.html   2、软件安装   在“多播服务器上”打开压缩包文件ghost6.zip,然后双击其中的setup.exe即可开始安装工作。在安装过程中,除了在某一步需要根据提示输入Name(用户名,可为任意内容)、Company(公司名,可为任意内容)和License Quantity(许可证数目,可为任意数目)等安装信息之外,其他均用其默认选项即可;结束后并不需要重新启动计算机。 

当安装完成后,Ghost 6.0的系统文件将被放在C:\Program Files\Norton Ghost 6.0目录下;进入“开始→程序→Norton Ghost”中也可看到其相关组件。

  二、Ghost多播的准备

  1、得到.gho文件

  在“多播服务器”上,选已安装组件中的Norton Ghost项,即可进入Ghost 6.0的主程序。再依次选其菜单中的“Local→Partition→To Image”,以对它的C盘进行备份。

  提示:如果所有“多播工作站”的硬盘容量都一样的话,用“Local→Disk→To Image”选全盘复制的方法可能会更好!

  2、制作工作站端启动软盘

  准备好一张已格式化过(在DOS 6.22或Win98下均可)的软盘,将已安装目录中的Ghost.exe及RTL8139的网卡配置文件Rtspkt.exe均复制到软盘中,然后进入MS-DOS方式下,转到A盘进行如下操作:

  (1)为每个“多播工作站”均建立一个扩展名为.cfg的文本文件(比如为1.cfg、2.cfg、3.cfg等),其内容包括ip=192.168.0.100、netmask=255.255.255.0及gateway=192.168.0.1三行。

  注意:必须确保每个.cfg文件ip部分的最后一段均不相同;而其他部分均相同!

  (2)再建立一个扩展名为.bat的批处理文件(比如为gg.bat),其内容包括rtspkt 0×60、set ghostip=%1.cfg及ghost三行。

当然:可以不用软盘,而复制到硬盘中去。

三、Ghost的多播

  1、开启多播服务器

  在“多播服务器”的相关组件中,选Multicast Server项开始设置。从上到下,先在Session Name(会议名)处输入任意内容(比如555);接着在Image(.gho映像文件)处输入或选择所要多播的.gho文件;紧接点选中Partition(分区)项,并选择好分区明细;最后按Accept Client(接受客户)按钮即可。

  2、开启多播工作站

  在第一台“多播工作站”上进行如下操作:

  (1)用软盘启动,成功进入DOS后,再执行gg.bat 1(1将对应1.cfg)的命令行。

  (2)等进入Ghost主程序,再选菜单中的Multicasting(多播)项,然后根据提示输入要加入的Session Name(比如为555),便可得到等待多播会议开始的工作界面。

 

再依次在每一台“多播工作站”上进行类似的操作即可。除了第二台为gg.bat 2、第三台为gg.bat 3等等外,其他步骤均和第一台的操作完成相同!

  3、开始Ghost的多播

  如果在“多播服务器”上已可以看到,所有工作站的IP地址(ip)均已显示在了列表中,则按Send(发送)按钮,即可正式开始多播工作!此时,各“多播工作站”端将会同时自动开始接受.gho文件到本机的恢复工作!

四、常见问题解答

  1、问:RTL8139的网卡配置文件Rtspkt.exe在什么地方可以得到?

  答:可以自己准备或下载:

  (1)这个文件可以在此网卡的驱动程序盘的Rtspkt目录中找到;

  (2)也可以下载:http://www.enanshan.com/down/Rtspkt.exe(56K)

  2、问:如果我的工作站端不是RTL8139网卡怎么办?

  答:同样在其驱动程序盘中找相应的网卡配置文件。比如,对于NE2000兼容系列网卡,配置文件名为ne2000PD.exe,使用时命令行为ne2000PD 0×60 10 0×280即可;对于3COM 509的PCI网卡,其配置文件名为3c5×9pd.exe,命令行为3c5×9pd即可。

  3、问:在网卡配置文件命令行中,各部分代表的是什么意思呢?

  答:比如对于ne2000PD 0×60 10 0×280行,0×60为中断号,10为IRQ地址,0×280为I/O地址。并不是所有网卡均需这三部分的。

  4、问:多播速率一般可以达到什么程度?

  答:不一定,它主要和网络速度、“多播服务器”运行速度有关。笔者作试验时,在10M网中,用C666/64M的服务器,带4台工作站,一般可以达到40M-50M每分钟以上。

  5、问:如何才能得到有关GHOST多播的更多详细信息?

  答:在GHOST的已安装组件中选Multicast Help即可得到更详细的帮助信息(英文)。

  五、背景知识

  1、什么叫终端站?

  终端站相当于是终端服务器延伸出来的显示器和键盘。在终端站中,工作站端的其他主要硬件(CPU和内存等)实际只起个支持启动或缓冲的作用。

  2、本文是通过什么方法来实现终端服务的?

  先在终端服务器上安装Windows 2000 Server自带的终端服务,接着再在它上面加上Citrix公司的MetaFrame服务器端;然后再在终端工作站端安装好Citrix的ICA客户端即可。

  3、哪些版本的Win2K可以做终端服务器?

  并不是所有Windows 2000都可以!Server版(包括服务器版和高级服务器版)自然是可以的,但是Professional(即专业版)就不可以。

2006年12月21日
SQL、EXCEL、ACCESS数据导入导出问题的解决摘录
 

大家打开这个链接可以看到很多数据库的连接方法。http://www.connectionstrings.com
这些数据库之间的数据交换就是这个贴子所要总结的内容。

(一)SQL Server之间
把远程数据库中的数据导入到本地数据库。
http://community.csdn.net/Expert/topic/5079/5079649.xml?temp=.7512018
http://community.csdn.net/Expert/topic/5011/5011278.xml?temp=.1658899
http://community.csdn.net/Expert/topic/4982/4982625.xml?temp=.8189966

把A库里的其中几个表和视图导入B库
http://community.csdn.net/Expert/topic/5042/5042648.xml?temp=.2556574

sql2005的数据库导入sql2000中
http://community.csdn.net/Expert/topic/4954/4954820.xml?temp=.3408625
在SQL2005中 如何导入 SQL2000中的Analysis Service ?
http://community.csdn.net/Expert/topic/4713/4713032.xml?temp=2.752322E-02

英文版sql server2005中bcp导出中文乱码问题
http://community.csdn.net/Expert/topic/5024/5024662.xml?temp=.7404596

如何将一个由SQL保存出来的*.bas文件再导回到SQL中
http://community.csdn.net/Expert/topic/4944/4944630.xml?temp=.8225672

(二)SQL Server –> Access

将SQL数据导出至Access(SQL与Access同一台机器上)
http://community.csdn.net/Expert/topic/4919/4919937.xml?temp=.2461359
将SQL数据导出至Access(SQL与Access不在同一台机器上)
http://community.csdn.net/Expert/topic/4906/4906691.xml?temp=.1377222
http://community.csdn.net/Expert/topic/4917/4917015.xml?temp=.7591364

(三)Access –> SQL Server
http://faq.csdn.net/FAQUnfurl.aspx?id=214875

为什么access与sqlserver2000导入导出时,数据库结构变了,默认主键,自动编号全没了?
http://community.csdn.net/Expert/topic/4712/4712570.xml?temp=.3942224

(四)txt(记事本)–> SQL Server
http://community.csdn.net/Expert/topic/5045/5045602.xml?temp=.0278284
TXT文件导入数据库出现乱码
http://community.csdn.net/Expert/topic/4939/4939026.xml?temp=.4465296
关于上千份大文本存入Sqlserver
http://community.csdn.net/Expert/topic/4973/4973969.xml?temp=.4392816

(五)SQL Server –> txt
http://community.csdn.net/Expert/topic/4906/4906039.xml?temp=.6642267
SQL导出TXT或HTML求助
http://community.csdn.net/Expert/topic/5031/5031048.xml?temp=1.302737E-02

(六)Excel –> SQL Server
http://community.csdn.net/Expert/topic/5002/5002120.xml?temp=.4375727
http://community.csdn.net/Expert/topic/5086/5086098.xml?temp=.6402094
http://community.csdn.net/Expert/topic/4940/4940738.xml?temp=.8665125
http://community.csdn.net/Expert/topic/4938/4938969.xml?temp=1.918972E-03
http://community.csdn.net/Expert/topic/4892/4892120.xml?temp=.1775324
使用Excel导入数据库时,遇到这么个奇怪的问题,当Excel的一列中的数据类型明显不同时就会直接eof,??
http://community.csdn.net/Expert/topic/4929/4929620.xml?temp=.2570154

(七)DBF –> SQL Server
http://community.csdn.net/Expert/topic/5070/5070623.xml?temp=6.957644E-02

其他问题

怎样把数据库中的题目经过vb 导到word
http://faq.csdn.net/FAQUnfurl.aspx?id=215243

使用作业来完成DTS操作。
http://community.csdn.net/Expert/topic/5046/5046974.xml?tep=.9785425

还可以看看这个链接
http://blog.csdn.net/dutguoyi/archive/2006/10/16/1337274.aspx

xml –> sql server
http://community.csdn.net/Expert/topic/5041/5041228.xml?temp=.8233911

 oracle –> sql server
http://community.csdn.net/Expert/topic/5019/5019542.xml?temp=2.604312E-02

http://support.microsoft.com/kb/320125

http://fufun.cn/show.aspx?id=dC8yMDAyMDUzMC8xNS83NjUxOTEuaHRtbA_x003D__x003D_

在用Bulk Insert导入数据时的日期时间格式问题,
原因:bulk insert 不能转换数据类型,如果时间格式不正确就会出错。
http://community.csdn.net/Expert/topic/5100/5100692.xml?temp=.0559656

Excel –> SQL Server
导入时添加额外列,
例如 EXECL表的结构为 名称,内容,类别,
     SQLserver表的结构为 名称,内容,类别,属性
http://community.csdn.net/Expert/topic/5105/5105613.xml?temp=.3277399

补上
Excel –> SQL Server
导入时列名调整补充
http://community.csdn.net/Expert/topic/5086/5086098.xml?temp=.5973932

SQL Server 2005 –> SQL Server 2000
http://dev.csdn.net/author/taito/840c28a03ec0432492db18a329125bb5.html
http://community.csdn.net/Expert/topic/4954/4954820.xml?temp=.495083

SQL Server 2005 –> SQL Server 2000
用sql2005的导入导出工具将所有SQL2005的表和数据导出到SQL2000下,但是所有的主键、索引、关系、默认值全部丢了。
http://community.csdn.net/Expert/topic/4905/4905590.xml?temp=6.176394E-02

MySql –> SQL Server
http://topic.csdn.net/t/20031203/09/2521118.html
http://topic.csdn.net/t/20030407/11/1627991.html

SQL Server –> DB2
http://www.21cnvip.com/csdn/default.aspx?q=20021105/10/1149089.html

大家可以在下面的链接来搜索CSDN技术社区文档,很大的技术宝藏啊。
http://search.csdn.net/search/null/1/dev/

SQL Server 2000 –> SQL Server 7.0
SQL2000数据导入到SQL7,那些设置为主键的没有了
http://community.csdn.net/Expert/topic/5004/5004254.xml?temp=.1570246

SQL Server 2005 –> SQL Server 2000
2005导出的脚本为什么在2000运行总是出错?
http://community.csdn.net/Expert/topic/4682/4682496.xml?temp=.6038324

SQL Server之间复制数据库
http://community.csdn.net/Expert/topic/4835/4835266.xml?temp=.7495233

SQL Server 2000 –> SQL Server 2000
DTS包的制作
http://community.csdn.net/Expert/topic/5006/5006594.xml?temp=.2426111

SQL Server 2005 –> Excel
数据长度为255,出错
http://community.csdn.net/Expert/topic/4951/4951804.xml?temp=.2144739

SQL Server 2005 –> SQL Server 2000
http://community.csdn.net/Expert/topic/5089/5089204.xml?temp=.4461328

SQL Server 2000 –> SQL Server 2000
导出表的所有结构、所有数据
http://community.csdn.net/Expert/topic/5092/5092752.xml?temp=.8595545

2006年05月20日

Windows 2000 Server 系统安装后的简单安全配置

原文链接:http://blog.chinaz.com/u1/1/archives/2006/12814.shtml

一、系统的安装

正常情况下Internet 信息服务(IIS)只需要选择三项:
Internet服务管理器 + Word Wide Web服务器 + 公用文件
附件和工具可以全部勾除(平常是用不到的),再加上终端服务即可,其它统统勾除!

关于磁盘分区: 正常情况下,C盘分10G已经非常足够使用,其它的应用软件均安装到D盘,如提供FTP服务的SERV-U,以免系统崩溃后要全新安装系统 的时间需要备份C盘数据。

二、安装硬件的驱动程序

经常安装驱程后重启会自动加载一些程序,可用超级兔子之类软件清理一下启动项。其它的如声卡的驱动找不到,可以不用安装,因为平常用不到声卡,不需要把时间浪费在这里。有碰到系统能默认认出来的显卡也无需再另装驱动程序。

二、补丁安装

装完系统后,如果安装的系统是没有打过SP4的,请先安装WINDOWS 2000 sp4,然后进入Windows Update在线更新所有补丁。也可以下载补丁集(chinaz.com提供 的下载)直接安时间排序打上,以免浪费时间,微软的网站有时候非常慢的。

复制一些必要的软件到D盘

如,WIN2K安装目录I386,可放置一份到D盘,以方便以后使用(如重装IIS的时候)。
D盘新建一个SOFT目录,用于存放常用软件,如PHP,MYSQL,DUM,SERV-U,SQL SERVER等的安装文件

三、系统安全设置

1,用户管理
删除TsInternetUser用户,并且将Guest用户改名禁用并且更改一个复杂的密码!
更改Administrator的用户名以及密码!

2,不让系统显示上次登录的用户名,具体操作如下: 
 修改注册表“HKLM\Software\Microsoft\WindowsNT\Current Version\Winlogon\Dont Display
Last User Name”的键值,把REG_SZ 的键值改成1。

3,禁止建立空连接
默认情况下,任何用户可通过空连接连上服务器,枚举账号并猜测密码。可以通过以下两种方法禁止
建立空连接。 
(1)修改注册表 
Local_Machine\System\CurrentControlSet\Control\LSA-RestrictAnonymous 的值改成1。 
(2)修改Win 2000的本地安全策略 
设置“本地安全策略→本地策略→选项”中的RestrictAnonymous(匿名连接的额外限制)为“不容
许枚举SAM账号和共享”。

4,打开安全审核
管理工具–本地安全策略–本地策略–审核策略,正常情况下一共是9项

推荐设置为:
审核策略更改:成功 失败
审核登录事件:成功 失败
审核对象访问:失败
审核特权使用:失败
审核系统事件:成功 失败
审核目录服务访问:失败
审核账户登录事件:成功 失败
  审核账户管理:成功 失败
审核策略不需要全部打开,如对象访问的成功项。否则将会占用过多的系统资源。

5,IP安全策略的配置。
可下载现成的策略直接导入(详细配置方法可见网上文章),如http://afei.blog.chinaz.com/UploadFiles/2006-1/128918890.rar ,下载后在管理工具–本地安全策略–IP安全策略 点右键选择-所有任务–导入策略,导入后,指派为新IP安全策略,然后在管理工具–本地安全策略–安全设置 点右键选择重新加载

6,关闭不必要和危险的系统服务

一个新安装好的windows 2000 server系统,默认应该是存在以下服务,设置为以下状态:

Alerter – 禁用 Application Management – 禁用

Automatic Updates – 可禁用

Background Intelligent Transfer Service – 禁用

ClipBook – 禁用

COM+ Event System – 手动

Computer Browser – 禁用

DHCP Client – 禁用

Distributed File System – 禁用

Distributed Link Tracking Client – 自动

Distributed Link Tracking Server – 禁用

Distributed Transaction Coordinator – 自动

DNS Client – 自动

Event Log – 自动

Fax Service – 禁用

File Replication – 禁用

IIS Admin Service – 自动

Indexing Service – 手动

Internet Connection Sharing – 手动

Intersite Messaging 禁用

IPSEC Policy Agent – 自动

Kerberos Key Distribution Center – 禁用

License Logging Service – 禁用

Logical Disk Manager – 自动

Logical Disk Manager Administrative Service – 手动

Messenger – 禁用

Microsoft Search – 禁用 (本服务在装了SQLSERVER2000 SP3后出现)

Net Logon – 手动

NetMeeting Remote Desktop Sharing – 手动

Network Connections – 自动

Network DDE – 手动

Network DDE DSDM – 手动

NT LM Security Support Provider – 手动

Performance Logs and Alerts – 手动

Plug and Play 自动

Print Spooler 禁用

Protected Storage 自动

QoS RSVP – 手动

Remote Access Auto Connection Manager – 手动

Remote Access Connection Manager – 手动

Remote Procedure Call (RPC) – 自动

Remote Procedure Call (RPC) Locator – 手动

Remote Registry Service 必须禁用

Removable Storage – 自动

Routing and Remote Access – 禁用

RunAs Service – 禁用

Security Accounts Manager 自动

Smart Card – 手动

Smart Card Helper – 手动

System Event Notification 自动

Task Scheduler 必须禁用

TCP/IP NetBIOS Helper Service 必须禁用

Telephony – 手动

Telnet 禁用

Terminal Services – 自动

Uninterruptible Power Supply – 手动

Utility Manager – 手动

Windows Installer – 手动

Windows Management Instrumentation 自动

Windows Management Instrumentation Driver Extensions 自动

Windows Time – 手动

Wireless Configuration – 手动

Workstation 自动

World Wide Web Publishing Service 自动

做为一个管理员,应该知道各种服务都是做什么用的,例如有人入侵后须及时发现是否运行了一些入侵者留下的服务。

7,修改注册表
 

删除如下目录的任何键:
HKEY_LOCAL_MACHINE\SOFTWARE \Microsoft\OS/2 Subsystem for NT

删除以下键:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Os2LibPath

删除以下键:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems\Optional
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems\Posix

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems\Os2

8,修改终端服务的默认端口(如有必要才需要此操作,默认为3389,可随意修改为1-65535的端口)
打开注册表,在“HKLM\SYSTEM\Current ControlSet\Control\Terminal Server\Win Stations”处
找到类似RDP-TCP的子键,修改PortNumber值。

9,网卡的端口筛选(看具体情况配置,正常情况不需要做此配置,此项配置需重启才能生效)

网卡属性里的tcp/ip协议属性—>高级–>选项–>tcp/ip筛选属性–>

第一项:TCP端口:
只允许: —(看具体这台服务器提供什么服务添加)
80 (www服务)
21 (一般的ftp默认)
53 (DNS服务)
110 (MAIL的SMTP服务)
25 (MAIL的POP3服务)
还有例如你的远程终端的端口(默认为3389,也有可能你改为别的端口,如6666,则加上6666)
 

第二项UDP端口:
此项可不添加,因为限制了以后,服务器则不能打开网页等操作(当然,也安全多了)

第三项IP协议:
ip协议:只允许6
 
10,IIS安全配置 开始–>程序–>管理工具–>Internet 服务管理器
默认的设置是有一个叫“默认站点”的站点,删除。
在IIS管理器中右击主机,进入属性,会出来一个叫 "*机器名属性"的窗口,在主属性下选择"WWW服务",进入编辑
到主目录选项卡,进入应用程序设置下的配置,在应用程序映射里,你可以看到有htw, htr, idq, ida等扩展名的映射,
除了asp,asa,shtml,sthm,stm外,其它的统统删除,因为其余的映射几乎每个都有安全方面的漏洞。(这是在未装cgi之类服务的情况下,像cgi,安装后也会在这里自动添加映射,没有映射可就运行不了cgi程序了,同理,php或asp.net也一样)
默认的iis发布目录为c:\Inetpub,将这个目录删除。在d盘或e盘新建一个目录(目录名随意,如WWW),然后新建一个站点,将主目录指向你新建的目录。
这样做的目的是为了将站点和系统分开。不至于站点的安全设置出问题时危及到系统安全。

11,其它

网卡属性里的tcp/ip协议属性—>高级–>WINS–>选择 "禁用TCP/IP 上的NetBIOS"

删除C:\WINNT\Web下的两个子目录(一个是桌面图片目录,一个是打印目录,打印目录存在的话好像IIS的默认站点一直会多一个Printer的目录出来)

四、系统相关目录及文件的权限设置

C、D、E等盘全部设置为仅Administrator组有完全控制权限(必须)

C:\Program Files
这个目录,像连接数据库这些都是要读取的,是C盘下比较重要的权限设置。

设置为:
administrators组 — 完全控制
SYSTEM – 完全控制
CREATOR GROUP – 全空的权限。(你可以先默认的加上,然后应用。再重新设置权限,会发现权限变成空的,而另外多出来一个none的用户,把那个none删了,测试过运行ASP+ACCESS的程序这样才会比较安全)
。。除了以上这三个以外,其它的统统删掉。

C:\Documents and Settings
这个目录设置为Administrator,SYSTEM拥有所有控制权限。

C:\WINNT
这个目录设置为Administrator,SYSTEM拥有所有控制权限。IIS来宾帐户设置为仅读取权限(如有建立了专门的IIS用户组,则这里设置为IIS的用户组)。

C:\WINNT目录内 除 TEMP,system32目录以外,所有目录均设置为Administrator,SYSTEM拥有所有控制权限

C:\Winnt\system32目录下的
xcopy.exe, wscript.exe, cscript.exe, net.exe, ftp.exe, telnet.exe,arp.exe,
edlin.exe,ping.exe,route.exe,at.exe,finger.exe,posix.exe,rsh.exe,atsvc.exe,
qbasic.exe,runonce.exe,syskey.exe
这些常用的程序也要设置为仅Administrator,SYSTEM有所有控制权限。

五、防止虚拟主机用户利用FSO及其它权限

———————–
我们以建立一个 123.com站点的为例吧。设置目录权限。
1,新建一个用户组。例如 WebUser
2,新建一个站点用户,如 web_123.com (密码自定),并设置为属于WebUser组(不要再属于其它的组了)
3,新建一个该站点的目录,设置该目录权限为 administrator 组为所有权限,以及Web_123.com用户为所有权限(即完全控制)
4,设置IIS站点。正常建立新站点后,站点属性的站点安全性里面也相应做设置…(站点属性–目录安全性–身份验证和访问控制–编辑)

大型高并发高负载网站的系统架构

本文出处:Just Do IT (http://www.toplee.com) lee@toplee.com

我在Cernet做过拨号接入平台的搭建,而后在Yahoo3721负载搜索引擎前端平台开发,又在猫扑处理过大型社区猫扑大杂烩的架构升级等工作,同时自己接触和开发过不少大中型网站的模块,因此在大型网站应对高负载和并发的解决方案上有一些积累和经验,可以和大家一起探讨一下。


一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单,随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬件到软件、编程语言、数据库、WebServer、防火墙等各个领域都有了很高的要求,已经不是原来简单的html静态网站所能比拟的。

大型网站,比如门户网站。在面对大量用户访问、高并发请求方面,基本的解决方案集中在这样几个环节:使用高性能的服务器、高性能的数据库、高效率的编程语言、还有高性能的Web容器。但是除了这几个方面,还没法根本解决大型网站面临的高负载和高并发问题。

上面提供的几个解决思路在一定程度上也意味着更大的投入,并且这样的解决思路具备瓶颈,没有很好的扩展性,下面我从低成本、高性能和高扩张性的角度来说说我的一些经验。

1、HTML静态化
其实大家都知道,效率最高、消耗最小的就是纯静态化的html页面,所以我们尽可能使我们的网站上的页面采用静态页面来实现,这个最简单的方法其实也是最有效的方法。但是对于大量内容并且频繁更新的网站,我们无法全部手动去挨个实现,于是出现了我们常见的信息发布系统CMS,像我们常访问的各个门户站点的新闻频道,甚至他们的其他频道,都是通过信息发布系统来管理和实现的,信息发布系统可以实现最简单的信息录入自动生成静态页面,还能具备频道管理、权限管理、自动抓取等功能,对于一个大型网站来说,拥有一套高效、可管理的CMS是必不可少的。

除了门户和信息发布类型的网站,对于交互性要求很高的社区类型网站来说,尽可能的静态化也是提高性能的必要手段,将社区内的帖子、文章进行实时的静态化,有更新的时候再重新静态化也是大量使用的策略,像Mop的大杂烩就是使用了这样的策略,网易社区等也是如此。

同时,html静态化也是某些缓存策略使用的手段,对于系统中频繁使用数据库查询但是内容更新很小的应用,可以考虑使用html静态化来实现,比如论坛中论坛的公用设置信息,这些信息目前的主流论坛都可以进行后台管理并且存储再数据库中,这些信息其实大量被前台程序调用,但是更新频率很小,可以考虑将这部分内容进行后台更新的时候进行静态化,这样避免了大量的数据库访问请求。

2、图片服务器分离
大家知道,对于Web服务器来说,不管是Apache、IIS还是其他容器,图片是最消耗资源的,于是我们有必要将图片与页面进行分离,这是基本上大型网站都会采用的策略,他们都有独立的图片服务器,甚至很多台图片服务器。这样的架构可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为图片问题而崩溃,在应用服务器和图片服务器上,可以进行不同的配置优化,比如apache在配置ContentType的时候可以尽量少支持,尽可能少的LoadModule,保证更高的系统消耗和执行效率。

3、数据库集群和库表散列
大型网站都有复杂的应用,这些应用必须使用数据库,那么在面对大量访问的时候,数据库的瓶颈很快就能显现出来,这时一台数据库将很快无法满足应用,于是我们需要使用数据库集群或者库表散列。

在数据库集群方面,很多数据库都有自己的解决方案,Oracle、Sybase等都有很好的方案,常用的MySQL提供的Master/Slave也是类似的方案,您使用了什么样的DB,就参考相应的解决方案来实施即可。

上面提到的数据库集群由于在架构、成本、扩张性方面都会受到所采用DB类型的限制,于是我们需要从应用程序的角度来考虑改善系统架构,库表散列是常用并且最有效的解决方案。我们在应用程序中安装业务和应用或者功能模块将数据库进行分离,不同的模块对应不同的数据库或者表,再按照一定的策略对某个页面或者功能进行更小的数据库散列,比如用户表,按照用户ID进行表散列,这样就能够低成本的提升系统的性能并且有很好的扩展性。sohu的论坛就是采用了这样的架构,将论坛的用户、设置、帖子等信息进行数据库分离,然后对帖子、用户按照板块和ID进行散列数据库和表,最终可以在配置文件中进行简单的配置便能让系统随时增加一台低成本的数据库进来补充系统性能。

4、缓存
缓存一词搞技术的都接触过,很多地方用到缓存。网站架构和网站开发中的缓存也是非常重要。这里先讲述最基本的两种缓存。高级和分布式的缓存在后面讲述。
架构方面的缓存,对Apache比较熟悉的人都能知道Apache提供了自己的缓存模块,也可以使用外加的Squid模块进行缓存,这两种方式均可以有效的提高Apache的访问响应能力。
网站程序开发方面的缓存,Linux上提供的Memory Cache是常用的缓存接口,可以在web开发中使用,比如用Java开发的时候就可以调用MemoryCache对一些数据进行缓存和通讯共享,一些大型社区使用了这样的架构。另外,在使用web语言开发的时候,各种语言基本都有自己的缓存模块和方法,PHP有Pear的Cache模块,Java就更多了,.net不是很熟悉,相信也肯定有。

5、镜像
镜像是大型网站常采用的提高性能和数据安全性的方式,镜像的技术可以解决不同网络接入商和地域带来的用户访问速度差异,比如ChinaNet和EduNet之间的差异就促使了很多网站在教育网内搭建镜像站点,数据进行定时更新或者实时更新。在镜像的细节技术方面,这里不阐述太深,有很多专业的现成的解决架构和产品可选。也有廉价的通过软件实现的思路,比如Linux上的rsync等工具。

6、负载均衡
负载均衡将是大型网站解决高负荷访问和大量并发请求采用的终极解决办法。
负载均衡技术发展了多年,有很多专业的服务提供商和产品可以选择,我个人接触过一些解决方法,其中有两个架构可以给大家做参考。
硬件四层交换
第四层交换使用第三层和第四层信息包的报头信息,根据应用区间识别业务流,将整个区间段的业务流分配到合适的应用服务器进行处理。 第四层交换功能就象是虚IP,指向物理服务器。它传输的业务服从的协议多种多样,有HTTP、FTP、NFS、Telnet或其他协议。这些业务在物理服务器基础上,需要复杂的载量平衡算法。在IP世界,业务类型由终端TCP或UDP端口地址来决定,在第四层交换中的应用区间则由源端和终端IP地址、TCP和UDP端口共同决定。
在硬件四层交换产品领域,有一些知名的产品可以选择,比如Alteon、F5等,这些产品很昂贵,但是物有所值,能够提供非常优秀的性能和很灵活的管理能力。Yahoo中国当初接近2000台服务器使用了三四台Alteon就搞定了。

软件四层交换
大家知道了硬件四层交换机的原理后,基于OSI模型来实现的软件四层交换也就应运而生,这样的解决方案实现的原理一致,不过性能稍差。但是满足一定量的压力还是游刃有余的,有人说软件实现方式其实更灵活,处理能力完全看你配置的熟悉能力。
软件四层交换我们可以使用Linux上常用的LVS来解决,LVS就是Linux Virtual Server,他提供了基于心跳线heartbeat的实时灾难应对解决方案,提高系统的鲁棒性,同时可供了灵活的虚拟VIP配置和管理功能,可以同时满足多种应用需求,这对于分布式的系统来说必不可少。

一个典型的使用负载均衡的策略就是,在软件或者硬件四层交换的基础上搭建squid集群,这种思路在很多大型网站包括搜索引擎上被采用,这样的架构低成本、高性能还有很强的扩张性,随时往架构里面增减节点都非常容易。这样的架构我准备空了专门详细整理一下和大家探讨。

对于大型网站来说,前面提到的每个方法可能都会被同时使用到,我这里介绍得比较浅显,具体实现过程中很多细节还需要大家慢慢熟悉和体会,有时一个很小的squid参数或者apache参数设置,对于系统性能的影响就会很大,希望大家一起讨论,达到抛砖引玉之效。
2005年10月19日
【转载】魔兽世界 宏命令
一:基础教程

  1.什么是宏命令?
  玩过EQ的都知道一点宏的知识,比如组队时用来告诉队友你的行动,告诉目标等。最简单的比如puller 常用的: /v %t过来了,大家集中火力。 法师常用的: /v 我要催眠%t,大家不要打醒他 这些宏个性鲜明,是EQ的一大乐趣之一。

  然而EQ毕竟是N年前的游戏,宏也比较简单,和它比起来。WOW的宏就复杂和强大的多了。它的函数就有上千种,如果都掌握,能实现许多匪夷所思的功能。

  一个宏可以完成一个相对比较复杂的命令.比如战斗中发布命令,如果打字当然不算麻烦,但在战斗中却很要命.浪费了时间和生命.一个简单的宏便可以用一个键来完成这一切.

  2.宏命令的设置流程:
  首先,回车,再敲/MACRO。看见了吧?会弹出一个窗口,上面有New(新建宏命令)和Complete(完成宏命令)两个按键。点New,又会弹出一个窗口,哇,花花绿绿的,里面包括了WOW几乎所有的技能图标,随你喜欢,随便选一个!它就是你设置的宏命令的图标了,给它取个名字吧!方便你用的时候好找。然后回到第一个窗口,在它上面有一个输入菜单(别告诉我找不到…它可是占了这个窗口的一半多…)在里面输入特定的内容,然后点Complete。接下来你要做的就是把这个代表你宏命令的图标用鼠标左键拉到快捷栏里,想怎么用就怎么用…

  3.下面就是怎样设置宏的内容了,简单的设置大家可以看我们网站上"基础"篇的宏介绍.

  相信很多人都知道WOW中的斜杠"/"和表情命令.宏可以将这些命令按照自己对条件的设置串联起来,比如:/Kneel是让你跪下来的动作而/say就是最基础的对话动作
  我们现在用一个宏把他们串起来:

  第一行内容:“/Kneel”
  第二行内容:“/say 如果你不嫁给我,那么我就一辈子不起来…” ”
  这样你的人物就会先下跪再说:"如果你不嫁给我,那么我就一辈子不起来…"

  宏可以应用所有WOW中已经定义了的斜杠"/"和表情命令,更要命的是,宏甚至可以应用人物的魔法和技能,

  只需要在宏的定义过程中应用"/cast"命令,下面是已知的一些常用命令:

  /Assist 这是个援助进攻的命令。当你的队伍同时面对几个敌人时,只要点击自己的队友(一般是队伍中的战士),然后使用这个命令,你的目标就会变成战士所选中的目标。大家集中火力消灭一个起!

  /Cast 这是个使用技能的命令。当你在宏命令里输入/Cast 技能名(技能等级)或者只要按住Shift同时用鼠标点击一下你想要输入的技能的图标。例如当你是一个战士,想制作一个使用战斗怒吼的宏时,你可以输入/Cast Battle Shout(Rank 1)或者是直接按住Shift点击Battle Shout这个技能的图标。当然你可以在一个宏的不同行上输入几个技能,那么当你使用这个宏时,几个技能就会一起释放出来,再用不着你像章鱼一样同时按下几个键了 。

  %t 这个符号也许会经常出现在你的宏命令里,它是一个代码,代表你当前所选中的人名。例如,你在宏里写下这么一句。(注意:后面要加一空格。) “/g %t ,今天天气真好,有没兴趣和我一起上山采蘑菇…”
  如果你点中一位名叫苯笨的玩家,那么当你按下这个宏时,你就会说:“笨笨,今天天气真好,有没兴趣和我一起上山采蘑菇…”

  /Target 这是一个自动选择目标的命令,你可以在宏里输入/Target (xxx),那么当你按下这个宏时,你将自动选定这个叫xxx的目标。

  /in 这是一个延时命令,时间以秒为单位.同时它不支持攻击指令.格式:/in 3 dance 三秒后跳舞,如/in 3 dance,就是在3秒后跳舞,
  /say start!
  /in 3 say 3s later
  /in 6 say 6s later
二:进阶教程

  一些有用的 Macro

  1。允许你在窗口和全屏状态之间切换

  /script SetCVar("gxWindow", 1 – GetCVar("gxWindow"));
  /console gxRestart

  2。对于法师,必须要有的:将“X”换为你目前的变形术等级(下同);用它替换掉变形术技能。当你在队伍之外时使用它会得到“你不在队伍中。”的信息,但在队伍中的时候其它同伴会了解到你将释放的变形术目标。

  /p Sheeping >>> %t <<<
  /cast Polymorph (Rank X)

  3。作为一个术士,这是在队伍中使用的宏:首先将目标转为拖怪手或者坦克正在攻击的目标,然后命令宠物向前攻击,跟着一个虚弱诅咒。

  /assist 队伍中的拖怪手或者坦克的名字
  /script PetAttack();
  /cast Curse of Weakness (Rank X)

  4。从背包和袋子里切换身上的武器

  /script if ( not CursorHasItem() ) then PickupContainerItem(, );

  PickupInventoryItem( ); end

  bag# – 使用哪一个袋子的物品(0、1、2、3、4。0是背包)

  slot# – 袋子里的位置(从0至左上)

  equip# – 16 是主要武器, 17 是副武器

  5。这个宏治疗队伍里你指定的人,如果你不在队伍中它会治疗你自己。然后会自动将目标切换回你最后一个敌人。它同时还会使用队聊提醒队友你会治疗哪一个人。

  /script if (UnitName("target") ~=nil and UnitIsFriend("player","target")) then

  CastSpellByName("Heal(Rank X)") SendChatMessage("Incoming Heal to %T", "Party") else

  TargetUnit("player") CastSpellByName("Heal(Rank X)") TargetLastEnemy(); end

  6。加速任务显示速度

  /script QUEST_DEscriptION_GRADIENT_CPS = 600000
  /script RegisterForSave("QUEST_DEscriptION_GRADIENT_CPS")
  /script DEFAULT_CHAT_FRAME:AddMessage("quest text will scroll faster now");

  7。消除等待接受任务的时间

  /script AcceptQuest()

  8。这个宏可以在路上自动护送玩家做任务。

  /assist [player name]
  /cast 法术(Rank X)
  /target [player name]
  /follow [player name]

  9。切换主副武器,详情看第四条

  /script PickupInventoryItem(16); PickupInventoryItem(17);

  10。在没有目标或者目标是敌人的时候给自己加增益魔法或治疗。


  CastSpellByName("Spell Name(Rank X)");

  if ((SpellIsTargeting()) and (not UnitIsFriend("player","target")))

  then

  SpellTargetUnit("player");

  end;

  TargetLastEnemy();

  11。切换双手武器与单手+盾或者双手挥舞武器

  /script PickupInventoryItem(17);if(CursorHasItem()) then PickupContainerItem

  (4,2);PickupContainerItem(4,1);PickupInventoryItem(16);else PickupContainerItem

  (4,1);PickupInventoryItem(16);PickupContainerItem(4,2);PickupInventoryItem(17);end

  12。设定“真实鼠标视野”

  /script CameraOrSelectOrMoveStart(arg1);

  想取消就再次输入。

  13。切换近程技能栏和远程技能栏

  /script CURRENT_ACTIONBAR_PAGE = 2;
  /script ChangeActionBarPage();
  /cast aspectofmon key (just use the left click)

  /script CURRENT_ACTIONBAR_PAGE = 1;
  /script ChangeActionBarPage();
  /cast aspectofhawk (just use the left click)

  14。牧师对队友的一键加血,比如一号键给第一队友加血,二号键给第二队友加血,免除了还要鼠标确

  定目标的操作。依次类推,从第一个人到最后一个

  给队友1加血:
  /script TargetUnit(GetPartyMember(1))
  CastSpellByName(Heal(Rank X)) TargetLastEnemy()

  给队友2加血:
  /script TargetUnit(GetPartyMember(2)) CastSpellByName(Heal(Rank X)) TargetLastEnemy()

  给队友3加血:
  /script TargetUnit(GetPartyMember(3)) CastSpellByName(Heal(Rank X)) TargetLastEnemy()

  15。一键解决喂养宠物:这个宏会从最左边的袋子里的第一个位置拿出食物喂养宠物,如果所在的位置

  没有食物,它会自动打开袋子。

  /script if (not PlayerFrame.inCombat) then if (not GetContainerItemLink(4, 1)) then

  OpenBag(4); else CastSpellByName("Feed Pet"); PickupContainerItem(4, 1); end end

  16。术士宏

  1)如果目标生命大于20,释放抽取生命法术,否则使用灵魂抽取。
  /script if (UnitHealth("target")>20) then CastSpellByName("Drain Life(Rank X)") else

  CastSpellByName("Drain Soul(Rank 2)") end;

  2)虚弱诅咒版本
  /script if (UnitMana("target")>0) then CastSpellByName("Curse of Tongues(Rank X)") else

  CastSpellByName("Curse of Weakness(Rank X)") end;


  17.先治疗自己,然后自动选中上次的敌人
  /target Pugar //选择自己,假设自己的名字是Pugar
  /cast Lesser Heal (Rank 1) //施展次级治疗rank1
  /script TargetLastEnemy(); //重新选择刚刚选择的敌人
  /script AttackTarget(); //攻击,等同于右键点击敌人


  18.对于一个术士很有用的宏:首先将目标转为拖怪手或者坦克正在攻击的目标,然后命令宠物向前攻击

  ,跟着一个虚弱诅咒。
  /assist 队伍中的拖怪手或者坦克的名字
  /script PetAttack();
  /cast Curse of Weakness (Rank X)

  19.等治疗完之后提醒别人注意下自己有可能被怪打,不加延时的话,就没这个效果了。
  /p healing %T, need 3s, don"t run away
  /cast heal (rank 1)
  /in 4 p cured %T 300HP,please notice the enemies turn on me^_^

  20.在路上自动护送朋友做任务。

  /assist [player name]
  /cast 法术(Rank X)
  /target [player name]
  /follow [player name]
三:高级教程

  WOW的宏函数库可以去这两个地方查:

   http://www.cosmosui.org/texts/BlizzardCommands.xml

   http://www.wowwiki.com/index.php/World_of_Warcraft_API

  函数的使用比较简单,学习过编程的都比较容易上手,基本的用法是在函数前加/script 来使用。比如
  /script CURRENT_ACTIONBAR_PAGE = X;
  /script ChangeActionBarPage();
  就是将你的快捷栏翻到第X页。

  函数库中有许多函数都是非常有用和方便的,比如一次打开所有包包:

  /script OpenAllBags();

  配合关闭包包的函数,一次关闭所有包的宏也可以实现:

  /script CloseBag(0);
  /script CloseBag(1);
  /script CloseBag(2);
  /script CloseBag(3);
  /script CloseBag(4);

  怎么样,下次你卖东西的时候不会一个个开包关包了吧?

  使用函数还不是最恐怖的,恐怖的是WOW的宏是可以用条件判断的,看下面这两个:
  /script if ( GetComboPoints() >= 3 ) then CastSpellByName("Rip(Rank 2)"); else if (

  UnitMana("player") >= 40 ) then CastSpellByName("Rake(Rank 1)"); end end

  据说这个包含if,then的宏可以让盗贼实现自动根据combo点数来使用技能(未测试),其中还使用了角

  色MANA值的调用,恐怖吧?还有这个查找spell的宏:
  function GetSpellIdByItsName(myWantedSpell, myWantedRank)
  local spellId = 1;
  local spellBook = "spell";
  local spellName, rankName;
  spellName, rankName = GetSpellName(spellId, spellBook);
  while (spellName ) do
  if ( ( spellName == myWantedSpell ) and ( ( not myWantedRank ) or ( rankName = myWantedRank

  ) ) ) then return spellId; end
  spellName, rankName = GetSpellName(spellId, spellBook);
  end
  return -1;
  end

  里面可以自己定义function,还使用了while,do这样的循环,是不是让你想到了N种应用的可能呢?

  遗憾的是,目前官方似乎没有提供延时的宏,所以在战斗中使用多种有延时的技能是无法实现的(无延时的技能可以实现同时使用),类似换其他武器-使用技能或法术-换回武器这样的功能也无法实现,

  (所谓用宏实现剑盾战士换双手武器MS再换回来是行不通的),不过使用COSMOS的朋友可以用/in 来实现非战斗指令的延时,比如
  /in 3 say hi 就会在3秒后说句hi。

  /in 6 /script MoveForwardStart(arg1);
  就会在6秒后向前跑。

  虽然法术和技能无法用/in指令来延时,但这样已经很强大了,比如,你可以编出各种运动的宏,如兜后,转身等。PVP时估计是必不可少的。

  下面是一个玩家写的双手武器战士自动逃跑的宏:
  /script UseContainerItem(0, 2);ActionButtonDown(11);ActionButtonUp(11);ActionButtonDown

  (12);ActionButtonUp(12);
  /cast Thunder Clap(Rank 1);
  /script TurnLeftStart(arg1);
  /in 1 /script TurnLeftStop(arg1);ToggleAutoRun();


  使用这个宏的条件:在大包包第二格放了回复药,快捷栏第11,12分别是一单手一盾的快捷方式。

  使用这个宏后,角色自动喝回复药,装备上盾,使用Thunder Clap(这三个动作同时进行),向后转180度后开自动跑步键逃走。其中技能等可以根据需要自己改。怎么样,是不是很夸张啊,哈哈。

  还有一些有用的宏:

  切换装备,

双手切换单手并换第二个快捷栏,快捷栏第11,12分别是一单手一盾的快捷方式
  /script ActionButtonDown(11);ActionButtonUp(11);ActionButtonDown(12);ActionButtonUp(12);
  /script CURRENT_ACTIONBAR_PAGE = 2;
  /script ChangeActionBarPage();
  单手切换双手并换回第一快捷栏,快捷栏12是一双手武器快捷方式
  /script ActionButtonDown(12);ActionButtonUp(12);
  /script CURRENT_ACTIONBAR_PAGE = 1;
  /script ChangeActionBarPage();

 

几个简单的宏

1. 对自己使用绷带

/script TargetUnit("Player");
/use Mageweave Bandage
/script TargetLastEnemy();

* 这里用的时 Mageweave Bandage ,你可以改成适合你自己的绷带名
* use 是 Cosmos 支持的命令,你必须安装 Cosmos 才能使用这个宏,如果你没有 Cosmos,使用下面的宏(绷带必须放在主背包第一格)

/script TargetUnit("Player");
/script UseContainerItem(0,1);
/script TargetLastEnemy();

2. 对敌人的 Pet 使用技能
/script TargetUnitsPet("target");
/cast Blind
/script TargetLastEnemy();

* Blind 是技能名,你可以用自己的技能,这里用了盗贼的 Blind (我是盗贼啦,呵呵)

** /script 是使用 脚本 的命令,可供使用的命令参考附件
** 可以用 Shift + 点击 技能书里图标的方式在宏中添加释放技能的命令
** 可以用 Shift + 点击 物品的方式在宏中添加物品名
3. 打开所有背包

/script OpenBag(0);
/script OpenBag(1);
/script OpenBag(2);
/script OpenBag(3);
/script OpenBag(4);

打开所有背包,可能
/script OpenAllBags()
一样搞定:P

热键Shift + B 也是可以的

4.战士用,双手武器切换单手武器+盾:
首先在快捷栏10、11、12(也就是0、 -、 =的位置)拖上双手武器、单手武器、盾的快捷方式;
双手武器:
/script ActionButtonDown(10);ActionButtonUp(10);
单手武器+盾:
/script ActionButtonDown(11);ActionButtonUp(11);ActionButtonDown(12);ActionButtonUp(12);

 

以下命令全部中空格用下划线_来表示
%后面的都是变量

=各种命令分类收集=

参数设置
%t

切换当前目标命令
/target_%name
/assist_%name
/script_TargetLastEnemy();

游戏动作
/cast_%skillname(rank_%d)
/f
/script_UseAction(n%d, %d);

设置延迟命令
/pause_%d

聊天常用命令
/s_
/p_
/g_
/raid_

=应用部分说明=
聊天部分命令我就省略了…重点说明游戏中实际关系到游戏操作的命令

首先%t是指当前目标名称,%t大多是用在聊天中…比如:

你好,%t
我开始攻击%t,大家请注意…

Pull
/script TargetNearestEnemy();
/p Pulling %t
/script AttackTarget();
/v inc

Assist
/assist %t
/script AttackTarget();

UsePoison
/script UseContainerItem(bag,slot); PickupInventoryItem(16);
UseContainerItem(bag,slot);
PickupInventoryItem(17);
/in 1740 /script DEFAULT_CHAT_FRAME:AddMessage("Poison wearing off in one minute")

_________________________


1. 常用指令

2. 队长指令

3. 聊天指令

4. 聊天频道指令

5. 公会指令

6. 表情指令

 

1. 常用指令

/help
列出常用指令帮助
/assist [名字]
协助你当前所选择的目标,或者指定的目标
/cast spell
施放指定的法术,可以包含法术的等级。比如: "/cast Slow Fall", "/cast Polymorph(Rank 2)"
/afk [文字]
开启AFK模式显示你要离开一会儿,再输一次/afk关闭AFK模式。
/combatlog
导出你的战斗信息到(wow目录)LogsPlayerCombatLog.txt 文件里。
/dnd [文字]
开启DND模式表示“请勿打扰”,再输一次/dnd关闭DND模式。
/duel [名字]
要求与你锁定的目标决斗,或者要求与指定的目标决斗。
/yield
(/forfeit) 在决斗时投降。
/emote 文字
(/em, /me) 表示接下来的文字是动作。
/exit
退出游戏。
/follow
(/f) 自动跟随当前目标。
/ignore 名字
忽略目标玩家。
/inspect
(/ins) 查看目标玩家的装备。
/logout
(/camp) 坐下并且登出。
/macro
打开宏设置界面。
/macrohelp
给出关于设置宏的帮助。
/played
显示你游戏人物的在线时间。
/pvp
在接下来的5分钟内开启PVP模式。
/raid 文字
(/r) 在RAID频道里说话。
/random 数字 [数字2]
(/rnd, /rand) 扔出一个从1到某个数字范围内的随机数字,或者是两个数字范围之间的随机数字。
/remfriend 名字
(/removefriend) 把一个好友从你的好友列表里去掉。
/split 数量
把一部分的钱平均分给你的队友。
/target 名字
(/tar) 从当前目标转向你所指定的玩家。
/time
显示当前游戏的服务器时间。
/trade
(/tr) 与当前选择的目标交易
/who [文字[ 文字2...]] [数字[-数字2]] [r-"种族"] [c-"职业"] [z-"区域"] [g-"公会"]
如果没有添加任何后缀的话,列出在当前区域与你等级相近的所有在线玩家。文字指定玩家的名字,公会,职业,种族或者所在的区域;数字表示指定列出玩家的等级范围。
/bug
提交出错报告。
/suggest
提交建议。
/note 文字
提交一条信息。
/script LUA-command
用于UI设计者。
/console command
用于一些游戏的内部指令,比如"gxrestart", "reloadui" and "quit".
/console 设置名 [新设置]
用于调整游戏设置。

 

2.队长指令

/invite [名字]
(/inv) 邀请目标玩家到你的队伍里。
/uninvite [名字]
(/un) 从你的队伍里移除目标玩家。
/ffa
把掠夺方式设置成“自由掠夺”。
/master [名字]
指定目标玩家在“计划分配”的掠夺方式中担当分配者。
/roundrobin
把掠夺方式设置成”轮流掠夺“。

 

3. 聊天指令

/guild 文字
(/g) 在公会频道内说话。
/party 文字
(/p) 在队伍频道内说话。
/reply 文字
(/r, R) 回复最后一个玩家给你的密语。
/say 文字
(/s) 跟周围的玩家说话。
/yell 文字
(/shout) 喊叫(比/say传的距离要远)
/whisper 名字 信息
(/w, /tell) 给目标玩家密语。

 

播放一段声音!每种语音都有两到三种变化。而且你的角色不同,语音也不一样。
/v help
/v inc
/v charge
/v flee
/v attack
/v oom
/v fol
/v wait
/v heal
/v cheer
/v fire
/v rasp

 

4. 聊天频道指令

/chat
(/chathelp) 列出聊天指令。
/join 频道 [密码]
(/chan, /channel) 加入(或者创建)一个特殊聊天频道。
/leave 频道|#
(/chatleave, /chatexit) 离开这个特殊聊天频道,或者离开指定号码的聊天频道。
/# 文字
(/c, /csay) 在聊天频道内说话,#表示所要说话的频道号码。
/announcements 频道|#
(/ann) 开启/关闭指定聊天频道的公告。
/ban 频道|# 名字
禁止目标玩家进入指定的频道。
/unban 频道|# 名字
解除目标玩家的禁令。
/chatlist
(/chatwho, /chatinfo) 列出所有的聊天频道和他们的号码。
/chatinvite 频道|# 名字
(/cinvite) 邀请目标玩家到一个指令的聊天频道里。
/ckick 频道|# 名字
把目标玩家从指定频道中踢出去。
/moderator 频道|# 名字
(/mod) 把目标玩家设成指定聊天频道的管理员。
/unmoderator 频道|# 名字
(/unmod) 解除目标玩家在指定聊天频道里的管理员身份。
/moderate 频道|#
开启指定聊天频道的管理模式。
/mute 频道|# 名字
(/squelch, /unvoice) 把目标玩家在指定的聊天频道里禁言。
/unmute 频道|# 名字
(/unsquelch, /voice) 解除目标玩家在指定的聊天频道里的禁言。
/password 频道|# [密码]
(/pass) 设置,改变或者去除聊天频道的密码。
/owner 频道|# [名字]
显示或者改变所建立的聊天频道名字。

 

5. 公会指令

/ginfo
给出关于你的公会的基本信息。
/g 文字
(/guild) 在公会频道里说话
/o 文字
对所有公会里的管理员说话。
/ginvite 名字
(/guildinvite) 邀请目标玩家加入到你的公会里。
/gremove 名字
(/guildremove) 从你的公会里移除目标玩家。
/gpromote 名字
(/guildpromote) 提升在你公会里的目标玩家公会等级。
/gdemote 名字
(/guilddemote) 降低在你公会里的目标玩家公会等级。
/gmotd 信息
(/guildmotd) 设置今天的公会公告。
/gquit
(/guildquit) 离开你的公会。
/groster
(/guildroster) 给出整个公会成员的列表(只限管理员和会长使用)。
/gleader name
(/guildleader) 把目标玩家设为会长(只限会长使用)。
/gdisband
(/guilddisband) 解散公会(只限会长使用)。

1. 表情指令

/Agree (同意)
/Amaze (吃惊)
/Angry (愤怒)
/Apology (道歉)
/Applaud (喝彩)
/Bashful (害羞)
/Beckon (招手)
/Beg (跪求)
/Bite (啃咬)
/Bleed (流血)
/Blink (眨眼)
/Bush (埋伏)
/Bonk (巨响)
/Bored (无聊)
/Bounce (蹦跳)
/Brb (即回)
/Boggle (犹豫)
/Bow (鞠躬)
/Burp (打嗝)
/Bye (再见)
/Cackle (尖笑)
/Calm (平静)
/Cheer (欢呼)
/Chicken (小鸡)
/Chuckle (轻笑)
/Clap (鼓掌)
/Cold (冷酷)
/Comfort (安慰)
/Confused (迷惑)
/Congratulate (恭喜)
/Cough (咳嗽)
/Cower (胆怯)
/Crack (响指)
/Cringe (畏缩)
/Cry (哭泣)
/Cuddle (拥抱)
/Curious (好奇)
/Curtsey (行礼)
/Dance (跳舞)
/Drink (喝酒)
/Drool (口水)
/Duck (闪避)
/Eat (进食)
/Eye (鸡眼)
/Fart (放屁)
/Fidget (烦躁)
/Flex (肌肉)
/Frown (皱眉)
/Gasp (喘气)
/Gaze (凝视)
/Giggle (傻笑)
/Glare (怒视)
/Gloat (得意)
/Greet (问候)
/Grin (嬉笑)
/Groan (呻吟)
/Grovel (曲膝)
/Guffaw (狂笑)
/Hail (致敬)
/Happy (欢乐)
/Hello (哈罗)
/Hug (紧拥)
/Hungry (饥饿)
/Insult (侮辱)
/Introduce (介绍)
/Jk (玩笑)
/Kiss (飞吻)
/Kneel (跪拜)
/Laugh (大笑)
/Laydown (躺下)
/Lick (添舌)
/Listen (聆听)
/Lock (上锁)
/Massage (按摩)
/Moan (呜咽)
/Moon (裸臀)
/Mourn (哀悼)
/No (否定)
/Nod (点头)
/Nosepick (挖鼻)
/Panic (恐慌)
/Peer (偷窥)
/Plead (恳求)
/Point (指点)
/Poke (手戳)
/Ponder (沉思)
/Pounce (突袭)
/Play (游戏)
/Praise (赞美)
/Purr (猫叫)
/Puzzle (为难)
/Raise (举手)
/Ready (就绪)
/Roar (怒吼)
/Rofl (爆笑)
/Rude (粗鲁)
/Salute (敬礼)
/Scratch (抓痒)
/Sexy (性感)
/Shake (颤抖)
/Shimmy (摆动)
/Shiver (打颤)
/Shoo (驱赶)
/Shout (呼喊)
/Shrug (耸肩)
/Shy (害羞)
/Sigh (叹息)
/Sit (坐下)
/Slap (耳光)
/Sleep (睡觉)
/Smirk (假笑)
/Smile (微笑)
/Snarl (怒骂)
/Sniff (吸气)
/Snicker (窃笑)
/Snub (斥责)
/Sooth (抚慰)
/Spit (吐出)
/Stand (站立)
/Stare (盯视)
/Stink (臭味)
/Surprised (惊讶)
/Surrender (投降)
/Talk (谈话)
/Talkex (兴奋)
/Talkq (彷徨)
/Taunt (嘲弄)
/Tap (轻拍)
/Tease (挑逗)
/Thank (感谢)
/Thirsty (口渴)
/Threaten (恐吓)
/Tickle (挠痒)
/Tired (疲倦)
/Veto (否决)
/Victory (胜利)
/Violin (提琴)
/Wave (挥手)
/Welcome (欢迎)
/Whine (牢骚)
/Whistle (口哨)
/Work (工作)
/Yawn (呵欠)


希望对各位有帮助

2005年08月16日

快速计算子网掩码和主机块
来源:ChinaITLab 收集整理 

  
 

  业务的发展常常会导致许多单位面临这样一个问题:工作站数量越来越多,管理单一的大型网络也变得越来越艰难。如果将一个单一的大型网络划分为多个子网,通过对每个子网进行单独管理,可以明显地提高整个网络的性能。
  
  要划分子网就需要计算子网掩码和分配相应的主机块,尽管采用二进制计算可以得出相应的结论,但如果采用十进制计算方法,计算起来更为简便。经过长期实践与经验积累,笔者总结出子网掩码及主机块的十进制算法。
  
  一、明确概念
  
  在介绍十进制算法前我们先要明确一些概念。
  
  类范围:IP地址常采用点分十进制表示方法X.Y.Y.Y,在这里,X在1~126范围内称为A类地址;X在128~191范围内称为B类地址;X在192~223范围内称为C类地址。比如10.202.52.130,因为X为10,在1~126范围内,所以称为A类地址。
  
  类默认子网掩码:A类为 255.0.0.0; B类为 255.255.0.0; C类为 255.255.255.0。当我们要划分子网用到子网掩码M时,类子网掩码的格式如下:A类为 255.M.0.0,B类为 255.255.M.0,C类为 255.255.255.M。M是相应的子网掩码,比如255.255.255.240。
  
  十进制计算基数是256(下面,我们所有的十进制计算都要用256来进行)。
  
  二、变量说明
  
  1.Subnet_block指可分配子网块大小,表示在某一子网掩码下子网的块数。
  
  2.Subnet_num是可分配子网数,指可分配子网块中要剔除首、尾两块,是某一子网掩码下可分配的实际子网数量。Subnet_num =Subnet_block-2。
  
  3.IP_block指每个子网可分配的IP地址块大小。
  
  4.IP_num指每个子网实际可分配的IP地址数。因为每个子网的首、尾IP地址必须保留(一个为网络地址,一个为广播地址),所以它等于IP_block-2,IP_num也用于计算主机块。
  
  5.M指子网掩码。
  
  表示上述变量关系的公式如下:
  M=256-IP_block IP_block=256/Subnet_block或Subnet_block=256/IP_block IP_num=IP_block-2 Subnet_num=Subnet_block-2。
  
  6.2的幂数。大家要熟练掌握28(256)以内的2的幂代表的十进制数(如128=27、64=26等),这样可以使我们立即推算出Subnet_block和IP_block的数目。
  
  三、举例说明
  
  现在,通过举一些实际例子,大家可以对子网掩码和主机块的十进制算法有深刻的了解。
  
  1.已知所需子网数12,求实际子网数。
  
  这里实际子网数指Subnet_num,由于12最接近2的幂为16(24),即Subnet_block=16,那么Subnet_num=16-2=14,故实际子网数为14。
  
  2.已知一个B类子网的每个子网主机数要达到60×255个(约相当于X.Y.0.1~X.Y.59.254的数量),求子网掩码。
  
  首先,60接近2的幂为64(26),即IP_block=64; 其次,子网掩码M=256-IP_block=256-64=192,最后由子网掩码格式B类是255.255.M.0得出子网掩码为255.255.192.0。
  
  3.如果所需子网数为7,求子网掩码。
  
  7最接近2的幂为8,但8个Subnet_block因为要保留首、尾2个子网块,即 8-2=6< 7,并不能达到所需子网数,所以应取2的幂为16,即Subnet_block=16。因为IP_block=256/Subnet_block=256/16=16,所以子网掩码M=256-IP_block=256-16=240。
  
  4.已知网络地址为211.134.12.0,要有4个子网,求子网掩码及主机块。
  
  由于211.Y.Y.Y是一个C类网,子网掩码格式为255.255.255.M,又知有4个子网,4接近2的幂是8(23),所以Subnet_block=8,Subnet_num=8-2=6,IP_block=256/Subnet_block=256/8=32,子网掩码M=256-IP_block=256-32=224,故子网掩码表示为255.255.255.224。又因为子网块的首、尾两块不能使用,所以可分配6个子网,每个子网有32个可分配主机块,即32~63、64~95、96~127、128~159、160~191、192~223,其中首块(0~31)和尾块(224~255)不能使用。
  
  由于每个子网块中的可分配主机块又有首、尾两个不能使用(一个是子网网络地址,一个是子网广播地址),所以主机块分别为33~62、65~94、97~126、129~158、161~190及193~222,因此子网掩码为255.255.255.224,主机块共有6段,分别为211.134.12.33~211.134.12.62、211.134.12.65~211.134.12.94、211.134.12.97~211.134.12.126、211.134.12.129~211.134.12.158、211.134.12.161~211.134.12.190及211.134.12.193~211.134.12.222。用户可以任选其中的4段作为4个子网。
  
  总之,只要理解了公式中的逻辑关系,就能很快计算出子网掩码,并得出可分配的主机块。 
 

                                                   对比C++和Java
“作为一名C++程序员,我们早已掌握了面向对象程序设计的基本概念,而且Java的语法无疑是非常熟悉的。事实上,Java本来就是从C++衍生出来的。”

然而,C++和Java之间仍存在一些显著的差异。可以这样说,这些差异代表着技术的极大进步。一旦我们弄清楚了这些差异,就会理解为什么说Java是一种优秀的程序设计语言。本附录将引导大家认识用于区分Java和C++的一些重要特征。

(1) 最大的障碍在于速度:解释过的Java要比C的执行速度慢上约20倍。无论什么都不能阻止Java语言进行编译。写作本书的时候,刚刚出现了一些准实时编译器,它们能显著加快速度。当然,我们完全有理由认为会出现适用于更多流行平台的纯固有编译器,但假若没有那些编译器,由于速度的限制,必须有些问题是Java不能解决的。

(2) 和C++一样,Java也提供了两种类型的注释。

(3) 所有东西都必须置入一个类。不存在全局函数或者全局数据。如果想获得与全局函数等价的功能,可考虑将static方法和static数据置入一个类里。注意没有象结构、枚举或者联合这一类的东西,一切只有“类”(Class)!

(4) 所有方法都是在类的主体定义的。所以用C++的眼光看,似乎所有函数都已嵌入,但实情并非如何(嵌入的问题在后面讲述)。

(5) 在Java中,类定义采取几乎和C++一样的形式。但没有标志结束的分号。没有class foo这种形式的类声明,只有类定义。
class aType()
void aMethod() {/* 方法主体 */}
}

(6) Java中没有作用域范围运算符“::”。Java利用点号做所有的事情,但可以不用考虑它,因为只能在一个类里定义元素。即使那些方法定义,也必须在一个类的内部,所以根本没有必要指定作用域的范围。我们注意到的一项差异是对static方法的调用:使用ClassName.methodName()。除此以外,package(包)的名字是用点号建立的,并能用import关键字实现C++的“#include”的一部分功能。例如下面这个语句:
import java.awt.*;
(#include并不直接映射成import,但在使用时有类似的感觉。)

(7) 与C++类似,Java含有一系列“主类型”(Primitive type),以实现更有效率的访问。在Java中,这些类型包括boolean,char,byte,short,int,long,float以及double。所有主类型的大小都是固有的,且与具体的机器无关(考虑到移植的问题)。这肯定会对性能造成一定的影响,具体取决于不同的机器。对类型的检查和要求在Java里变得更苛刻。例如:
条件表达式只能是boolean(布尔)类型,不可使用整数。
必须使用象X+Y这样的一个表达式的结果;不能仅仅用“X+Y”来实现“副作用”。

(8) char(字符)类型使用国际通用的16位Unicode字符集,所以能自动表达大多数国家的字符。

(9) 静态引用的字串会自动转换成String对象。和C及C++不同,没有独立的静态字符数组字串可供使用。

(10) Java增添了三个右移位运算符“>>>”,具有与“逻辑”右移位运算符类似的功用,可在最末尾插入零值。“>>”则会在移位的同时插入符号位(即“算术”移位)。

(11) 尽管表面上类似,但与C++相比,Java数组采用的是一个颇为不同的结构,并具有独特的行为。有一个只读的length成员,通过它可知道数组有多大。而且一旦超过数组边界,运行期检查会自动丢弃一个异常。所有数组都是在内存“堆”里创建的,我们可将一个数组分配给另一个(只是简单地复制数组句柄)。数组标识符属于第一级对象,它的所有方法通常都适用于其他所有对象。

(12) 对于所有不属于主类型的对象,都只能通过new命令创建。和C++不同,Java没有相应的命令可以“在堆栈上”创建不属于主类型的对象。所有主类型都只能在堆栈上创建,同时不使用new命令。所有主要的类都有自己的“封装(器)”类,所以能够通过new创建等价的、以内存“堆”为基础的对象(主类型数组是一个例外:它们可象C++那样通过集合初始化进行分配,或者使用new)。

(13) Java中不必进行提前声明。若想在定义前使用一个类或方法,只需直接使用它即可——编译器会保证使用恰当的定义。所以和在C++中不同,我们不会碰到任何涉及提前引用的问题。

(14) Java没有预处理机。若想使用另一个库里的类,只需使用import命令,并指定库名即可。不存在类似于预处理机的宏。

(15) Java用包代替了命名空间。由于将所有东西都置入一个类,而且由于采用了一种名为“封装”的机制,它能针对类名进行类似于命名空间分解的操作,所以命名的问题不再进入我们的考虑之列。数据包也会在单独一个库名下收集库的组件。我们只需简单地“import”(导入)一个包,剩下的工作会由编译器自动完成。

(16) 被定义成类成员的对象句柄会自动初始化成null。对基本类数据成员的初始化在Java里得到了可靠的保障。若不明确地进行初始化,它们就会得到一个默认值(零或等价的值)。可对它们进行明确的初始化(显式初始化):要么在类内定义它们,要么在构建器中定义。采用的语法比C++的语法更容易理解,而且对于static和非static成员来说都是固定不变的。我们不必从外部定义static成员的存储方式,这和C++是不同的。

(17) 在Java里,没有象C和C++那样的指针。用new创建一个对象的时候,会获得一个引用(本书一直将其称作“句柄”)。例如:
String s = new String(‘howdy’);
然而,C++引用在创建时必须进行初始化,而且不可重定义到一个不同的位置。但Java引用并不一定局限于创建时的位置。它们可根据情况任意定义,这便消除了对指针的部分需求。在C和C++里大量采用指针的另一个原因是为了能指向任意一个内存位置(这同时会使它们变得不安全,也是Java不提供这一支持的原因)。指针通常被看作在基本变量数组中四处移动的一种有效手段。Java允许我们以更安全的形式达到相同的目标。解决指针问题的终极方法是“固有方法”(已在附录A讨论)。将指针传递给方法时,通常不会带来太大的问题,因为此时没有全局函数,只有类。而且我们可传递对对象的引用。Java语言最开始声称自己“完全不采用指针!”但随着许多程序员都质问没有指针如何工作?于是后来又声明“采用受到限制的指针”。大家可自行判断它是否“真”的是一个指针。但不管在何种情况下,都不存在指针“算术”。

(18) Java提供了与C++类似的“构建器”(Constructor)。如果不自己定义一个,就会获得一个默认构建器。而如果定义了一个非默认的构建器,就不会为我们自动定义默认构建器。这和C++是一样的。注意没有复制构建器,因为所有自变量都是按引用传递的。

(19) Java中没有“破坏器”(Destructor)。变量不存在“作用域”的问题。一个对象的“存在时间”是由对象的存在时间决定的,并非由垃圾收集器决定。有个finalize()方法是每一个类的成员,它在某种程度上类似于C++的“破坏器”。但finalize()是由垃圾收集器调用的,而且只负责释放“资源”(如打开的文件、套接字、端口、URL等等)。如需在一个特定的地点做某样事情,必须创建一个特殊的方法,并调用它,不能依赖finalize()。而在另一方面,C++中的所有对象都会(或者说“应该”)破坏,但并非Java中的所有对象都会被当作“垃圾”收集掉。由于Java不支持破坏器的概念,所以在必要的时候,必须谨慎地创建一个清除方法。而且针对类内的基础类以及成员对象,需要明确调用所有清除方法。

(20) Java具有方法“过载”机制,它的工作原理与C++函数的过载几乎是完全相同的。

(21) Java不支持默认自变量。
 

2005年04月27日
IT方面的论坛太多了,有综合,有专业,有行业,在各个论坛里混了几年,体会颇深,以前是论坛哪里人多,往哪里去,新浪论坛,网易是经常去的,人多啊,好几十万,去了以后才发现没有意思,没有共同的语言,于是逛专业论坛,行业论坛,终于找到了共同语言,总结一下论坛的经验:人不在多,有仙则灵,贴不在多,有精则行,逛了大半辈子,一个IT人发展方向一定要除了技术外,业务,理论,思想一个都不能少,于是我推荐如下这些论坛,或许真能帮助您,做论坛,都是赔本的买卖,不收费还帮助你学习,得向斑竹们致敬啊。
  
    以下论坛排名不分先后,还有许多业界知名的论坛,主要有点偏门,这个不做概述,呵呵。
  
    IT技术开发综合类
  
    http://community.csdn.net/
  
    适合人群:只适合软件开发者
  
    技术开发最全面的论坛,里面可以遇到很多牛人,版面也很全,什么J2EE,.NET啊,该有的全上,在这里基本上可以提出任何问题,人气也是最旺的,不过一般提出的意见都有正方两面的,所以最终解决问题,还是靠自己。
  
    评价:专业,很牛逼,就是速度慢。
  
    www.itpub.net
  
    适合人群:数据库开发人员
  
    数据库方面是非常著名的,牛人不少,不过,现在比较杂,什么都做,网络,操作系统,行业应用,到体育贴图,当然有些也不错,人气非常高,特别是灌水方面,^_*.
  
    评价:强,速度一般;
  
    http://bbs.chinaunix.net/forum/
  
    适合人员:系统工程师
  
    这里的特色就是操作系统方面在业界是最著名的,牛人不少,目前,在数据库,网络方面也颇有建树,当然灌水方面也不赖,呵呵,属于温柔性
  
    评价:强,速度还可以
  
    bbs.chinajavaworld.com/
  
    适合人员:JAVA开发
  
    JAVA方面非常综合的论坛了,牛人也很多,是一个难得的JAVA论坛,涉及你想象的关于JAVA目前任何技术。
  
    评论:强,速度还可以。
  
    http://www.huihoo.com/forum/
  
    适合人员:中间件开发者
  
    人气不错,版面风格独特,在开源,中间件,工作流方面非常不错,问题讨论都非常深刻、也很专业。
  
    评价:很好,速度一般;
  
    IT售前技术顾问综合类
  
    http://www.sysvs.com/bbs
  
    适合人员:IT售前及技术顾问
  
    业界知名的售前技术顾问论坛,比较新异的知识点,各个IT行业版快划分也比较好,也非常专业,绝对是我稀饭(喜欢)的风格,网站风格业内罕见,也有很多专业文章,没有地方灌水,厉害。
  
    评价:很好,速度比较快
  
    网络工程类
  
    www.1000bbs.com
  
    适合人员:布线/网络工程师
  
    人气很旺,特色是版面比较紧凑,综合布线这一块很权威,很窄很专,时间非常久了,颜色比较明快,就是太低端了,
  
    评价:不错,速度一般
  
    http://www.sharecenter.net/
  
    适合人员:网络工程师
  
    之所以我喜欢是这个网站很多做CISCO工程都知道,也是别人介绍我去的,时间非常久了,颜色比较暗谈,属于忧郁型。
  
    评价:不错,速度也还可以
  
    IT营销管理类
  
    http://www.topren.net/forum/index.php 
  
    适合人员:企业策划,CIO
  
    业界知名的知识站点“唐人社区”,信息化管理顾问可以去看看,人也很多,可惜,都是下载,实质性内容需要改观,我记得是非常专业的网站。
  
    评价:不错,速度也还可以。
  
    IT管理综合类
  
    http://club.amteam.org/
  
    适合人群:大多数,
  
    评论类比较多,基本上在其他媒体上看到的评论,这里都会有,要想了解IT发展的情况,就来这里看看。
  
    评价:很好,休闲工作都可以看。
深入剖析64位WindowsXP操作系统

Windows版本简要介绍  


  Windows是我们日常使用最多的操作系统,也是世界范围内应用最广泛的客户端操作系统。对于国内用户来说,最初认识Windows可能是从Windows 3.x开始的,而自从Windows 95发布之后,Windows在国内的普及率达到了一个新的高度。


  我们一般使用的(以及曾经使用过的)客户端Windows,按照发布时间排列,主要包括了:Windows 3.x、Windows 95、Windows 95 第二版、Windows 98、Windows 98第二版、Windows 2000 Professional、Windows Me、Windows XP Professional/Home,其中除了Windows 2000以及Windows XP,其余版本的Windows都是16位或者16位和32位混合的,因此稳定性和性能方面都不怎么好。而从Windows 2000开始,到Windows XP,Windows操作系统才全面转向纯32位,进而稳定性和可靠性都得到了长足的提高。而从Windows XP开始,微软开始将触手伸向了64位领域,开始开发64位的Windows XP,也就是本文我们主要向你介绍的Windows XP Professional x64 Edition。


  Windows XP Professional x64介绍


  对于一般用户,肯定会考虑,既然现有32位版本的Windows还用的很好,干嘛要升级到64位呢,而且因为32位和64位的硬件(主要是CPU和主板)并不兼容,可能还要花费一笔不菲的费用。那么64位的优势何在?对于一般用户是否有必要升级到64位系统?


  Windows XP Professional x64 Edition 的设计初衷是:满足机械设计和分析、三维动画、视频编辑和创作以及科学计算和高性能计算应用程序等领域中需要大量内存和浮点性能的客户的需求。


  专用技术应用程序的性能优势


  64位计算性能在汽车或飞机设计等领域体现出优势,因为它允许工程师创建更大、更复杂的模型。借助这样的系统,工程师可以使用模拟软件分析气流、压力和受热对汽车或飞机材料产生的影响,然后对结果进行研究以改进产品设计。同样,通过64位计算,数字内容创作者(包括三维动画设计人员、数字艺术家和游戏开发人员)可以大大减少以数字方式呈现三维模型所用的时间。在科学计算和高性能计算领域,Windows XP Professional x64 Edition 将有助于石油和天然气勘探、地震分析、计算流体动力学和科学可视化等应用程序。


  支持非常大的内存,采用常见的 Windows 桌面


  对于达到32位系统内存限制的客户,Windows XP Professional x64 Edition 将以AMD Athlon 64、AMD Opteron、支持 SM64T 的 Intel Xeon 和支持 EM64T 的 Intel Pentium 4作为运行平台。基于Windows XP的32位和64位计算之间的主要区别在于64版本能够使用更多的系统内存。Windows XP Professional x64 Edition最初将支持多达128 GB的内存和多达16 TB的虚拟内存。将来,随着硬件功能的扩展,支持的物理内存将相应增加。内存中数据的访问速度是它在磁盘驱动器上时访问速度的数千倍,这样就可以大大提高为使用此更大系统内存而开发的应用程序的性能。


  为技术应用程序和业务应用程序提供单一桌面


  Windows XP Professional x64 Edition将为技术应用程序和业务应用程序提供单一桌面,这样技术工作站用户就不需要为业务应用程序维护PC,同时为高端技术应用程序维护单独的工作站。大多数Windows兼容的32位应用程序将在Windows XP Professional x64 Edition的子系统(其性能与32位Windows相当)中“按原样”运行。工作站用户可以利用Windows平台上丰富的集成功能和高效工具。设计人员可以构建一个模型,并与公司中的其他人员轻松实现共享:对于财务组,将它复制到Word文档,或者对于市场组,将它添加到的 PowerPoint 幻灯片面板。如果你仅使用32位应用程序且处理的数据集不超过2 GB,则将发现32位Windows XP Professional是最适合你应用程序的桌面系统。


  Windows XP Professional x64 Edition系统可以添加到现有的基于Windows的网络,并通过相同的管理工具与32位系统一起进行管理,从而使IT部门的工作更为轻松。维护和管理两个系统的间接成本得到了降低。


  新一代应用程序的最佳平台


  具备32位Windows技能的开发人员将能够舒适而高效地创建适用于Windows XP Professional x64 Edition的下一代应用程序。开发人员将发现该开发环境与32位Windows开发环境几乎完全相同;Microsoft Win64应用程序编程接口(API)与Microsoft Win32 API相同。现有的API已经在必要处进行了修改,使它们可以反映其运行平台的精度。结果是简化了编程并缩短了开发人员编写64位Windows代码的学习曲线,使之就像编写32位 Windows代码一样。


  64位Windows开发环境支持与32位Windows相同的功能集,包括UI和编程模型、网络、安全性、图形、多媒体、目录服务、即插即用以及工具功能。许多功能都已经过修改,以反映应用程序运行平台的计算精度。

Windows XP Professional x64 Edition的主要特点

  相对32位Windows,我们明显的一个感受就是内存数量的支持得到了改善。32位Windows 能够支持最多4 GB系统内存,每个处理器可以使用最多 2 GB专用内存;而在64位Windows下,最多可以使用128 GB的物理内存和16 TB的虚拟内存。其余详细的信息则可以参见下表:

  64 位体系结构和 32 位体系结构的比较

  地址空间    64 位 Windows   32 位 Windows

  虚拟内存    16 TB       4 GB

  页面文件    512 TB      16 TB

  页面缓冲池   128 GB      470 MB

  非页面缓冲池  128 GB      256 MB

  系统缓存    1 TB       1 GB

  32位Windows中的虚拟内存空间

  和其他所有32位Windows一样,Windows XP Professional也被限制于只能使用4 GB的虚拟内存寻址空间。这4 GB内存被分为两部分,其中2 GB用于用户进程,而另外2 GB则用于被操作系统的所有进程共享。在某些特殊的情况下,通过使用/3GB引导参数可以强制让所有系统进程只使用1 GB内存空间,而给用户进程使用3 GB内存,但是该方法也仅适用于设计于可以利用这些额外地址空间的应用程序,而且所有程序都会被操作系统可用的内存数量所限制。

  Windows XP Professional x64 Edition的兼容性

  从上面的内容可以看出,对于64位Windows,一般的计算机用户根本不必现在就考虑。例如,如果你平时只是上网聊天,看电影,用Office写文件,那么现有的32位Windows就能很好的满足你的需要。对目前而言,64位Windows最大的一个劣势就是兼容性,而兼容性方面最突出的就是各种硬件设备的驱动程序。如果你已经是Windows的老用户了,那么你一定还对此有印象,在Windows XP下安装某些硬件的时候,因为操作系统没有带该硬件针对Windows XP的驱动程序,或者硬件开发上也没有提供相应版本的驱动程序,我们还可以试试看使用该设备在Windows 2000下的驱动程序,如果你的运气好的话也可以在Windows XP下使用。然而在64位Windows下情况就截然不同了,64位和32位Windows XP的硬件驱动程序完全不能混用,也就是说,如果你所用的硬件设备的开发商还没有开发出针对64位Windows XP的驱动程序,那么要么该设备在64位Windows XP下无法使用,要么使用操作系统自带的通用驱动勉强使用,但是性能和功能都会受到影响 。

  至于其他软件程序则一般没有什么大问题。在64位Windows XP中,只有16位应用程序是完全无法使用的,而32位应用程序则可以继续使用。不过在安装这些应用程序的时候也要注意,有些应用程序,虽然和硬件扯不上关系,但是为了实现软件的某些特殊功能,安装软件的时候同时还会向系统中装入驱动程序,这种程序在没有发布64位版之前是无法在64位Windows下使用的。

  例如著名的截图软件SnagIt,该软件使用默认安装的时候会向系统中安装一个虚拟的打印机,该打印机可以将文档输出为图形格式。因为安装了虚拟设备,因而该程序还没有提供64位的版本,因此在64位Windows XP下使用默认选项安装的时候就会出错,除非我们自定义安装选项,不安装这个虚拟打印机。同样的,几乎目前所有的虚拟光驱软件以及杀毒软件都无法在64位Windows XP下使用。

  现在另一类比较特殊的用户则是高端的游戏玩家,这类用户为了能流畅运行目前硬件杀手级别的大型游戏(例如DOOM3、WOW、Half Life 2),通常都会在硬件的投资上不惜血本。那么在其他硬件相同,只是分别使用32位处理器和32位Windows XP,以及在64位处理器上运行32位以及64位Windows XP这三种情况下,游戏的性能是否会有所改进呢。

升级到64位平台应该考虑的问题  


  如果你决定现在就升级到64位平台,那么也许应该考虑下列这些问题:


  硬件


  基本上能够在32位系统下使用的硬件都可以在64位Windows XP中使用,不过唯一的例外就是处理器以及相应的主板,目前可以运行Windows XP Professional x64的处理器包括:AMD Athlon 64、AMD Opteron、支持Intel EM64T的Intel Xeon,以及支持Intel EM64T的Intel Pentium 4。


  驱动程序


  目前来说,这是64位Windows XP的一个软肋。请查询你使用的硬件设备的制造上网站,看他们是否提供了64位Windows XP下的驱动程序,如果已经提供,那么恭喜你,你已经可以率先跨入64位应用的大门了。


  除此之外,根据微软的说明,要运行Windows XP Professional x64,计算机的硬件系统还需要满足下列要求:


  ?? 256MB 内存


  ?? 1.5GB 可用硬盘空间


  ?? Super VGA (800×600) 或更高分辨率的视频卡


  ?? CD-ROM 或 DVD 驱动器


  ?? 键盘和 Microsoft 鼠标或兼容的指针设备


  对于已经获得该系统,并且已经安装好的用户,他们有什么感受?大家一起来看看吧。


  Windows XP Professional x64 Edition描述


  在本文中,我将会向你简单介绍Windows XP Professional x64 Edition,其中包括了这套系统支持的软件和硬件,以及哪些消费者最需要这套全新的操作系统。


  Windows XP Professional x64 Edition是能够在x64处理器上运行的具有完整功能的Windows XP Professional,Windows XP Professional x64 Edition最多支持128 GB内存以及16 TB虚拟内存寻址空间,而32位Windows XP Professional最多只能支持总共4 GB的物理内存和虚拟内存寻址空间。


  Windows XP Professional x64 Edition在Windows on Windows 64(WOW64)子系统中运行32位应用程序,该子系统能够在运行64位应用程序的同时为超过10000个现有的32位Windows应用程序提供兼容。


  运行32位应用程序


  运行32位应用程序的WOW64子系统为上千个现有的32位应用程序提供了高兼容性、高性能的运行环境。32位应用程序会被安装到Program Files (x86)文件夹下,而且为了避免问题,这些程序在注册表中也有独立的分枝。


  每个在Windows XP Professional x64 Edition 中的WOW64子系统下运行的应用程序都有完整的4 GB内存寻址空间,原本需要配合/3GB参数使用的应用程序实际上也将获得4 GB寻址空间,而不会受到操作系统的限制,因为在Windows XP Professional x64 Edition中系统进程最多可以使用8 TB的虚拟内存空间。这对一些严重依靠内存的应用程序(哪怕这些应用程序还没有64位版本)的运行有着非凡的影响,例如计算机辅助设计(CAD)以及计算机辅助生产(CAM)。


  分别运行64位和32位应用程序


  通过使用Windows XP Professional x64 Edition,你可以分别运行64位和32位应用程序。你的现有32位应用程序将会在WOW64下运行,而64位应用程序则会直接运行。这使得全面转换到64位应用可以完全按照你的节奏进行,只有在全部准备好之后才开始转换。你甚至可以在Windows XP Professional x64 Edition中同时运行一个应用程序的64和32位版本,这样你就可以评估现有应用程序的新版本按照需要转换。


  谁是最初的用户?


  这个版本的Windows XP Professional x64 Edition主要是设计用于内存使用已经到达极限并且希望通过使用全新的64位技术改进工作站性能的32位系统用户。而Windows XP Professional x64 Edition的主要用户则包括:


  ?? 开发人员


  ?? 游戏玩家


  ?? 图形、音频和媒体编辑


  ?? CAD/CAM用户


  ?? 发烧友


  我已经把我的主力工作站移 动到了一台前几个月安装好的x64主机上,而在所有运行在x64系统中的应用程序中,一个令我感到激动的是SONAR 4,Cakewalk 公司的专业音频工作室混音软件。正如Cakewalk公司首席技术官Ron Kuper所说,通过将SONAR 4迁移到x64平台,他们发现在不受内存限制的情况下,软件的运行性能得到了20-30%的提升。而且x64处理器架构的一些额外效能,例如常规用途以及浮点寄存器也对SONAR 4的运行速度和效率有一定影响。


  考虑今后的硬件需要


  如果你在过去几个月里购买了新的个人计算机,那么你可能已经有了兼容x64的系统,就像我一样。因此唯一你需要做的就是参加Technology Advancement程序,并将现有系统更换为Windows XP Professional x64 Edition。如果计划在今年购买新的台式计算机,我甚至不会考虑购买非64位版本,哪怕你仍然打算在上面运行32位Windows。这两种架构的计算机在成本上的差别几乎是可以忽略的,而你的新x64计算机则可以良好运行所有版本的Windows XP。


  如果你打算购买一个全新的系统来运行Windows XP Professional x64 Edition,那么在选择外设的时候就一定要小心。对于任何新版本的操作系统,在对硬件的支持上都会有明显的断层。主要设备制造商虽然都会提供新版本的驱动程序,但是这些新程序基本上都是面向最新硬件的,而且你无法使用32位驱动程序,因为根本无法安装。


  关键区别


  当迁移到Windows XP Professional x64 Edition时,你需要了解一些关键的不同。其中最重要的一点是64位系统不再对古老的MS-DOS以及16位应用程序提供支持。如果你有一些老的应用程序需要运行在MS-DOS模式下,或者你还有16位应用程序,那么你就不该升级到Windows XP Professional x64 Edition,除非你更新或替换了这些应用程序。


  有些32位应用程序还带有16位安装程序,大部分这样的程序都无法安装在Windows XP Professional x64 Edition中,因为16位应用程序已经不被支持了。然而有些可能仍然可以使用,因为Windows将会在后台检测到相应的32位版本安装程序。


  对于需要安装硬件驱动的应用程序,在相应的64位版本驱动出现之前也无法安装。Windows XP Professional x64 Edition完全不支持32位应用程序。


  Windows资源管理器扩展。例如,Windows资源管理器的右键菜单扩展必须是64位的。如果是32位的,应用程序也许可以使用,但是Windows资源管理器扩展将不可用。这是因为任何一个应用程序可以运行在WOW64下的32位或者纯64位,但是不能同时属于这两种模式。而Windows资源管理器明显是64位的,因此应用程序本身也许可以正常使用,但是扩展可能无法使用。例如,在安装WinZip后,相应的右键扩展菜单就不可用了。


  所有驱动程序必须是64位的。硬件和相应的驱动之间仍然有一定的断层,但是随着Windows XP Professional x64 Edition的正式发布,情况应该很快就得到好转。如果打算购买新硬件设备,在购买之前你最好能确定该设备具有相应的x64驱动程序,并且如果你打算把老的设备利用到新的x64计算机中,那么你首先也需要检查制造商网站上是否提供新的驱动程序。例如我就发现了一个比较好的查找x64驱动程序的网站:PlanetAMD