重启服务器解决数据库连接错误Provider 错误 ’80004005′

3

分类 : 网站技术 | 发表时间 23-05-2010

access和asp搭配建设网站,到现在为止,还是占相当大比例,所以经典的access连接错误,时常遇到,解决之道,也千奇百怪,这个Provider 错误 ’80004005′,解决起来就很有趣。

开始以为是代码问题,但查代码文件日期,没有修改过,不是网站目录安全问题;后来又怀疑数据库本身错误,下载mdb数据库,利用access的“压缩和修复”功能,重新上传上去,问题依然如此。

到网上查了下资料,发现反映数据库连接代码问题的比较多,但这个数据库连接代码以前一直使用正常,为什么突然不能用了?

在一位网友讨论中,提到了一句,解决起来很简单,重启服务器就行了,不管如何,先试一试,重启服务器,重新打开网页,果然Provider 错误 ’80004005′,不再出现了,问题解决。

奇怪,这个错误,具体是什么原因呢?看起来像是数据库连接引擎的问题。但重启iis也是不行的,哦,重启iis和数据库驱动引擎没有关系。微软的问题,呵,微观起来不好解释,哪位有了解得清楚的,希望留言交流。

安装声卡设备时,出现一个错误

1

分类 : 技术文摘 | 发表时间 09-11-2008

操作系统对于硬件设备的紧密管理特性,就像对于文件读写管理的唯一特性一样,不容置疑的不客气,所以在很多次安装硬件设备的驱动时,总是会遇到该设备正在使用,无法操作,遇到这种情况时,绝大多数是通过重启来释放该设备的占用权限。

重装电脑系统后,照例安装各硬件外部设备驱动,用主板光盘安装声卡驱动后重启,结果到XP启动画面时被卡住了,然后等了很久还是没有动静,和explorer.exe文件不能载入时非常相似,到底是什么原因造成了呢?这个过程只是安装了驱动,那就是安装驱动引起的问题。重启按F8,选“最后一次正确的配置”,发现可以正常的进入系统,看来的确是驱动问题,但这驱动是买电脑时随机赠送,绝对的官方正版驱动。重复操作,在“设备管理器”中“更新声卡”驱动,复制完文件,到结果操作时,不管是显卡还是网卡均提示:“安装设备时,出现一个错误。”经过重启装还是不行,卸载设备,却发现不能卸载,提示:无法卸载该设备,它可能正被使用。

经过一翻折腾,终于找到了解决的方法:就是先“停用”该设备,在停用的状态下,安装驱动,结果安装成功。

大千世界无奇不有,计算机网络,技巧无穷。

技巧启发自:http://hi.baidu.com/wring5/blog/item/865a3f38b4dc842497ddd889.html

Discuz!论坛详细安装向导

0

分类 : 技术文摘 | 发表时间 08-08-2006

现在php和mysql的组合非常火,前一段时间玩phpwind,感觉还是不错;这一段时间,又把discuz下载下来测试了一把,果然不错;事实上,最新版本5.1的,也已经出来了;以下测试版本是4.1的……

  平台:WINDOWS XP SP2 + APMServ5.1.2

  测试环境:PHP程序+asp程序+asp.net程序+cgi程序;

  测试推荐:APMServ5.1.2组合服务器(这个组合是全能的)

  程序版本:Discuz! 4.10

  一、安装Discuz!论坛

  APMServ5.1.2的默认访问路径为\APMServ5.1.2\www,在WWW文件下新建了Discuz! 文件夹,把Discuz!论坛安装目录复制到Discuz!文件夹中,测试地址变为:

http://127.0.0.1/Discuz!/



  运行:

http://127.0.0.1/Discuz!/

浏览器会提示:Access denied for user:

[url=mailto:'dbuser@localhost']‘dbuser@localhost’[/url]

(Using password: YES) 错误提示:论坛数据库错误。



图1 未安装数据库时提示的错误

  解释:这个是因为还没有安装Discuz!论坛数据库,所以有错误提示。

  运行:

http://127.0.0.1/Discuz!/install.php

,系统会自动转到Discuz!论坛的安装界面。

  Discuz!安装文件夹内有4个安装语言包供您选择,各位根据自己的需要进行选择。现在选择[简体中文 GBK]格式。

  小贴士:若环境用的是国外php+sql,推荐使用[简体中文 UTF-8]语言包,因为这样大大的减少了安装过程中出现乱码的情况!

  点[简体中文 GBK]进入下一安装步骤。



图2 选择合适的语言

  出现Discuz!系列软件的授权介绍等说明,点击“我完全同意”进入安装的下一步骤。



图3 “同意”并开始安装过程

  根据空间服务商提供的资料填写完整,如有不明白请咨询服务提供商。(如果还是不太明白,干脆就制作一个此项目表格,传给服务商,让服务商帮你填写完毕。)

  此出有两点需要注意:1)填写的资料是否正确?2)是否拥有数据库空间的管理权限?如果没有管理权限,请马上联系空间管理员。

  在这里填写的是系统默认的数值,点保存配置信息进入安装下一步骤。

&namecode=pcedu&subnamecode=pcedu_index’ target=_blank>





图4 填写相关信息

  检查空间的文件权限与运行论坛环境的差异,要是发现不同的话就马上进入你的FTP选择文件设置他的写权限为777。

&namecode=pcedu&subnamecode=pcedu_index’ target=_blank>





图5 设置文件夹属性(+点击上图可放大)

  填写论坛管理员的信息,一定要记住这些资料。写完以后点击“开始安装Discuz!”进入论坛装下一步。



图6 开始安装

  系统正在新建论坛运行需要的数据库表,安装完毕后,在页面最下面列出设置好的管理员ID和密码。



图7 安装成功

  现在就安装完毕Discuz!论坛了。点击进入论坛。

&namecode=pcedu&subnamecode=pcedu_index’ target=_blank>





图8 论坛首页(+点击上图可放大)

  选择“登录”,输入刚才设置的管理员ID和密码点提交登陆论坛。



图9 登陆后台

  进入论坛,选“系统设置”,系统会新开窗口打开管理界面。



图10 进入“系统设置”
<
br/>

图11 后台设置

  在后台设置完相关设置以后,论坛就可以正常运行了!

  二、安装常见问题

  1.什么是二进制(BINARY)上传?如何设置并使用二进制上传?

  答:所有的 FTP 服务器端和客户端软件均支持两种方式的文件上传,其一为文本(ASCII)上传,其二为二进制(BINARY)上传。Discuz! 要求用户在上传 PHP 程序文件时,使用二进制的上传方式进行。原因为某些程序文件经过编译处理,使用一般的文本上传会造成文件传输错误,影响您的使用。您可以在所有的 FTP 客户端软件中找到有关二进制上传的选项,例如 LeapFTP, CuteFTP 等。以下举例说明这两种客户端软件设置 PHP 文件二进制上传的方法。

  LeapFTP:在 Options(选项)菜单中选择 Parameters(参数设置),选择其中的[ASCII 扩展名],出现列表后,选中其中的“*.PHP”,点右边的[删除],再点右边的[确定]即可。如果“*.PHP”项目不存在的话,可直接使用,不需另行设置。

  CuteFTP:进入软件后按 ALT+F7 进入 Global Options(全局选项),选择[传输]下面的[ASCII 类型],在右边列表框中找到名为“PHP”的项目,选定后点右边的[删除],再点下面的[确定]即可。如果“PHP”项目不存在的话,可直接使用,不需另行设置。



  2.如何更改文件属性?



  答:只有在服务器使用 Linux/Unix 类操作系统时,才需要在安装时对文件属性进行更改,Windows 系统的服务器不需要更改属性。您可以在 FTP 软件中,选定需要更改属性的文件或目录,然后点右键选择 CHMOD(更改文件属性),输入属性值(如 777),再确定即可。如果您的 FTP 软件提示无权更改属性,而您又没有办法通过 Shell 的方式登入主机,请与空间服务商联系,要求其授予您 CHMOD 的权限。



  3.为什么访问所有 .php 页面都会出现类似程序代码一样的信息?



  答:这种情况是因为您的服务器上 PHP 语言支持环境没有被安装,或配置不正确。请自行安装,或向空间提供商寻求解决。



  4.为什么软件提示 Unable to read xxx bytes in xxx.php in xx 这样的信息?



  答:因为您没有使用二进制(BINARY)上传 PHP 文件,请使用 FTP 软件将所有 PHP 文件重新传输一次。



  5.为什么论坛提示 Caches successfully created, please refresh?



  答:这是缓存自动更新的提示信息,通常在初次安装完成后,或缓存文件不存在由系统自动重新建立的时候出现。这个提示为正常现象,一般仅出现一次,刷新该页面即可。



  6.为什么论坛提示 Can not write to cache files, please check directory ./forumdata/ and ./forumdata/cache/ .?



  答:出现这个提示通常因为 Cache 文件无法写入。使用 Unix 类操作系统的用户,请检查“./forumdata/和“./forumdata/cache/”和“./forumdata/templates/”这三个目录是否设置了可写属性(777),同时如果您是从其他服务器上转移论坛而来,除了需要对上述文件设置属性以外,用以下两种方式也可以解决:



  将上述三个目录中的后两个目录中的所有文件全部删除;或将上述三个目录中下的所有文件及目录属性均设置为777。



  7.如果数据库不存在,安装程序可以自动建立数据库吗?



  答:Discuz! 安装程序提供这个功能,前提是您的账号要有建库的权限才行,否则只能使用已有的数据库。



  8.一般情况下,需要修改 config.inc.php 中的什么设置?



  答:一般应用只要修改 $dbname,$dbuser,$dbpw,$dbhost,$adminemail 这五个变量,而其他保留默认或等待对论坛软件更加熟悉以后再进行修改。上面这五个变量,除了 $adminemail 外,其他均用于连接数据库,在您服务器空间的说明中都会给出,如果其中之一配置不正确就会出现数据库无法连接的错误提示而无法使用 Discuz! 论坛。如果您对此不了解,请咨询您的空间服务商,如何设置这四个变量参数。



  9.安装后论坛提示 Access denied for user@localhost using password YES’,该如何解决?



  答:这个提示意味着您的数据库连接参数设置的不正确,有两种可能:其一为数据库账号或密码错误;其二为数据库账号和密码均正确,但无权访问指定的数据库。遇到此种情况,请您咨询您的空间服务商,针对您的空间该如何配置数据库连接参数。



  10.为什么安装成功,进入系统设置后提示 Please delete install.php via FTP?



  答:因为您没有按照说明将 install.php 删除,会产生安全问题,使用 FTP 软件将其删除后这个提示自动消失。



  11.Discuz! 文件及目录结构的形式是怎样的?



  答:Discuz! 软件包通常以 tgz(tar.gz)或 zip 的格式压缩,绝大多数压缩软件可解开此类压缩格式的软件包,解压后的目录结构如下所示:



  ./users_guide.htm   用户使用说明书(本文档)

  ./usersguide/     用户使用说明书内容与图片目录

  ./upload/   程序及相关文件(此目录中的内容需上传)

  *.php           Discuz! 程序



  install.php       Discuz! 安装脚本

  config.inc.php     论坛基本配置,安装前请修改本文件

  mail_config.inc.php   邮件发送配置

  whatsnew.php       网页新帖调用程序

  admin/             系统设置程序目录

  *.php             系统设置程序集

  attachments/         空目录,请设置属性 777,用于存放附件

  customavatars/       空目录,请设置属性 777,用于存放上传头像

  forumdata/           空目录,请设置属性 777,用于存放备份及记录数据

  templates/         空目录,请设置属性 777,用于存放编译模板文件

  cache/             空目录,请设置属性 777,用于存放系统缓存

  templates/           模板文件目录

  default/             系统默认模板目录

  *.htm               系统默认模板文件

  *.lang.php           系统默认语言包文件

  images/               图片文件目录

  attachicons/           附件图标图片目录

  avatars/             论坛提供头像图片目录

  
common/               公用图片目录

  default/               系统默认风格图片目录

  smilies/             Smilies 图片目录

  stats/             流量统计图片目录

  include/               引用包含目录

  *.php                 引用包含程序集



  plugins/             空目录,用于存放插件程序

  ./utilities/           论坛附带工具

  repair.php             数据库修复工具

  restore.php               分卷备份数据恢复工具

  testmail.php               邮件发送测试工具

  upgrade(x).php               论坛升级程序


如何写一份好的工程师简历

0

分类 : 网络日志 | 发表时间 16-06-2006

2006年6月14日 上午 10:15:00
发表者:王忻,Google 工程师

最近三年作为 Google(谷歌)的软件工程师,我每周会帮人事部门审查简历,决定要不要给他们面试。Google 这几年的发展让很多许多优秀的工程师都前来申请。到目前为止,我已经看了上千份简历,有些简历留下的印象比别的好很多。尤其是最近亲戚朋友常常问我如何修改他们的简历,所以我积累了一些常见的错误避免的提议,在此跟大家交流一下。

1.谈到你做过的技术时,应该提到用的程序语言、你的个人贡献和产品细节。

有时我看到有人把过去的经验在简历上一笔带过,比如说:

• 在三人小组里,为电子邮件软件写了些 features。

这是远远不够的,看简历的人希望了解你做的工作的难度和对本公司有多少联系,所以你最好写的具体一些。譬如:

• 用 C++ 语言写了网络电子邮件的自动 backups。在三人小组里,专门负责设计和写储存服务器。从设计开始, 一年后把这个功能 feature 的用户推到了三千。

2.多讲事实, 少用形容词。

看简历的人读你的简历时,需要做判断,所以在简历里需要事实和数目。如果你写“迅速的提高了软件的操作效率”,看简历的人很难判断你成就的难度。但如果你写“在3个星期内,把软件的操作效率提高了40%” 就好多了。

有些谦虚的朋友们不愿意把话说满,所以你也可以用这个办法。你如果说自己“突出”或“在项目上常常被请去救火”,听起来难免会有点骄傲。但你也可以用不能否认的事实来说明你的观点,如“《纽约日报》评这个产品为‘突出’”,或“加入了三个原本已落后于计划的项目小组,但经过努力和组员一起把它们都按时完成了。”

3.你获得的奖、商业的荣誉或表扬、受用户欢迎的产品和你做过的有难度的业余项目都该包括在简历里。

我有位朋友在硅谷一个著名的硬件公司做了六年,她设计的 IP phone(网络电话)为公司赚了上亿的收入,被公司与商业报道多次评了奖。我有一次在旧金山的高速公路上驾车时,看到路边有她产品的广告牌;还有一次我去上海度假时,竟然发现上海公路边上也有!

不久,这位朋友决定换工作,请我看看她的简历。我惊讶的发现,她居然轻描淡写的写了一句– “1998 – 2004:网络电话产品的硬件工程师组长” 和她的职责。

“产品赢的奖呢?它为公司赚的钱呢?” 我追问到。

“那些也该写吗?” 她说。

当然该写。

有人问,业余时间做的项目可不可以写?我觉得只要你的项目有代表性能说明对你的能力,都该包括。

4.分清主次,删掉相比之下不起眼的成绩,以免冲淡更加突出的成绩。

有朋友问,写简历是不是写的越多越好?譬如:

在甲公司做暑假实习生——
* 改善电子游戏的数值分类算法, 减少了内存要求 10%。
* 用 Java 写了 3000 行用户界面程序。
* 每周做两小时的人工测试。

你在申请软件工程师的职位时,我觉得前两点比较相关,第三点其实就不必写了。有时我看到有的简历里会提到,”按时完成了任务,产品符合原计划规格”。但读简历的人通常会认为这是理所当然的,而你把这些声明出来反而减弱简历的效果。

一个在黑客界引起轰动的菜鸟教材–编程系列

0

分类 : 网络日志 | 发表时间 15-06-2006

跟我学编程系列
原黑白新区记忆碎片的帖子!转贴上来,供大家学习!!!
发现大部分黑白的朋友都不会编程, 这可不是件好事, 所以这次我就写了一个简单的编程教程, 讲一下VBScript. 主要面向菜鸟, 懂得编程的朋友就不要浪费时间了, 如果你想接触以下VBScript也可以, 但既然有编程基础推荐直接去找一些参考书来读, 会比较快.
什么是VBScript呢? VBScript的全称是:Microsoft Visual Basic Script Editon.(微软公司可视化BASIC脚本版). 正如其字面所透露的信息, VBS(VBScript的进一步简写)是基于Visual Basic的脚本语言. 我进一步解释一下, Microsoft Visual Basic是微软公司出品的一套可视化编程工具, 语法基于Basic. 脚本语言, 就是不编译成二进制文件, 直接由宿主(host)解释源代码并执行, 简单点说就是你写的程序不需要编译成.exe, 而是直接给用户发送.vbs的源程序, 用户就能执行了.
  我知道菜鸟现在最关心的就是用什么工具来开发VBS程序了, 答案是:记事本(Notepad).我不是开玩笑, 其实任何一种文本编辑器都可以用来开发VBS开发, 只不过记事本是由系统自带的, 比较好找而已. 尽管如此, 我还是建议你去下载一个专业的文本编辑器, 因为这些工具可以提供 “语法高亮”等功能, 更加方便开发, 用哪一个随你喜好, 我比较喜欢Edit Plus (2.10).
  OK, 我们先来写一个VBScript程序热热身.
REM 输入并回显你的名字
‘使用InputBox和Msgbox函数
Dim name,msg
msg=”请输入你的名字:”
name=Inputbox(msg,”名称”)
Msgbox(name)
  把上面的程序清单输入到记事本里面, 然后保存为以.vbs为扩展名的文件(“保存类型”里面选择”所有文件”).然后双击运行, 观察运行结果. 注意:请自己输入程序清单, 不要复制->粘贴!
  我来解释一下这个程序, 第一行和第二行的开头分别是”REM”语句和” ‘ “, 这两个东西的作用是相同的, 表示本行是注释行, 就是说这两行什么也不干,只是用来说明这段程序的功能, 版权信息等等. 注释行是程序最重要的部分之一, 尽管它不是必需的, 但对于其他人阅读源代码, 以及自己分析源代码是很有好处的. 好的习惯是在必要的地方加上清晰, 简洁的注释.
  Dim用来声明一个变量, 在VBS中, 变量类型并不是那么重要, 就是说VBS会帮你自动识别变量类型, 而且变量在使用前不一定要先声明, 程序会动态分配变量空间. 在VBS中你不用考虑name储存的是一个整数还是一个小数(学名叫”浮点数”), 也不用考虑是不是字符串(一串字符, 比如:”Hello World”), VBS会自动帮你搞定. 所以第三行语句可以删除, 效果不会变, 但我强烈反对这么做, 一个变量的基本原则就是:先声明,后使用.变量名用字母开头,可以使用下划线,数字, 但不能使用vbs已经定义的字, 比如dim, 也不能是纯数字.
  下一行被称之为”赋值”, “=”是赋值符号, 并不是数学中的等于号, 尽管看起来一样.这是正统的理解, 你要理解成等于也没有什么不可. 赋值号的左边是一个变量, 右边是要赋给变量的值, 经过赋值以后, msg这个变量在程序中等同于”请输入你的名字:”这个字符串,但当msg被再次复制的时候, 原值就会消失. 不光字符串, 其他任何变量都这样被赋值, 例如: a=2, b=12.222等等.
  再往下,Inputbox和Msgbox是VBS内建的函数, 一个函数就相当于一个”黑箱”, 有输入(参数)和输出(返回值), 你可以不用了解函数是怎么运作的, 只要了解这个函数能干什么就行了, 我们也可以定义自己的函数, 不过那要等到以后再讲. 现在我们只要了解, 一个函数可以有返回值也可以没有, 可以有参数也可以没有. 例如Inputbox就是有返回值的函数, 我们用赋值号左边的变量来”接”住InputBox的返回值–就是你输入的内容. 在inputbox右边的括号里是参数列表, 每个参数用”,”分隔开, 每个参数有不同的功效, 比如第一个参数会显示在提示里, 我们把msg这个变量作为第一个参数传给了Inputbox 函数, 而msg=”请输入你的名字:”, 所以我们在对话框的提示栏就会看到”请输入你的名字:” 第二个参数是对话框的标题, 我们用直接量(学名叫”常量”, 这里是”字符串常量”)传递给函数, 当然你也可以传递变量. Inputbox还有很多参数, 比如你在”名称”后面再加一个”,”然后输入随便一串字符(字符串,用双引号”"包裹起来的一串字符叫做字符串)然后运行, 看看结果. 你会发现用于输入的文本框有了默认的值, 这就是第三个参数的作用.
  Msgbox函数是用来输出的函数, 在VBS中没有专门的输出函数(BASIC中的print,C中的printf), 所以我们只能用对话框来观察输出结果, Msgbox的必要参数只有一个, 就是要输出的内容, 在这种情况下, 我们不需要理会msgbox的返回值. 关于Msgbox和Inputbox我们以后还会在讨论, 今天只是热热身, 到此为止.
要点:
1) 注释(以REM或’开头)行在程序中不起作用, 但能让别人更容易读懂你的程序.
2) 变量好像一个盒子, 或一个代号, 可以代表你想代表的东西. 变量赋值使用”=”
3) 以”"包裹起来的字符称之为”字符串”
4) 函数像一个”黑箱”, 有参数和返回值, 用”=”左边的变量可以接住返回值
5) Inputbox函数弹出一个输入对话框,Msgbox则用于输出
作业:
1) 试验Inputbox的第三个参数
2) 写一段程序输出你的年龄
3) 写一段程序进行3次输入, 分别输入你和你父母的姓名(要求显示提示), 并分3次输出
第二篇:
我真没想到, 第一次的作业竟然有人不会.
  看来要讲的非常非常细致才行, 嗯, 今天讲各种”量”和基本运算
  先说常量, 这个比较简单.
  什么是常量呢, 常量就是其值不可变化的量.
  常量分为两种:第一种, 自然常量. 这叫是因为它们本身就是常量, 你怎么更改21的值呢? 他永远都是21, 不可能变成46
如果你在程序中使用”21=46″, 这样的语句将会引发一个错误. 同样的, 字符串也是常量 (还记得字符串吗? 就是包裹在”"之间的一串字符), “Hello World”就是一个例子, 如果你使用”Hello World”=”Bye”这样的语句同样会引发一个错误. 你能举出自然常量的更多例子吗?
  第二种, 是我们自己定义的常量,这种量也使用代号, 他们也被赋值, 但和变量的不同点在于, 他们在定义的时候被赋值,以后就不能改变了,如果企图改变将会引发一个错误. 定义一个变量,我们使用”const”这个关键字(关键字的意思是系统定义了有特殊功能的字, 不能作为变量名或常量名使用),格式是:const 常量名=常量值.
例如:
const PI=3.1415926
const NAME=”记忆碎片”
  这样我们就定义了两个常量, PI和NAME, 一般说来, 常量名全部使用大写, 但也可以不用, 随你喜好. 将一些在程序中不需要改变的值定义为常量是个好习惯, 这样能防止不必要的意外. 另外, 使用自定义常量也可以减少你的工作量. 比如:
msgbox(“Hello World”)
msgbox(“Hello World”)
msgbox(“Hello World”)
msgbox(“Hello World”)
msgbox(“Hello World”)
  这个程序输出五次Hello World, 如果你想要改变输出为Bye-Bye, 就必须修改全部程序, 当然你可以手动修改5次, 但如果你要输出1000次呢? 常量就可以替我们解决这个问题:
const hw=”Hello World”
msgbox(hw)
msgbox(hw)
msgbox(hw)
msgbox(hw)
msgbox(hw)
  这样当你要修改输出的时候只要修改hw的值就行了.
  好了, 现在我们来看看编程的第一块重要”基石”:变量. 解释变量最好的办法我觉得是”盒子”, 一个变量好像一
个盒子, 里面只能装一个东西, 当你要装进去别的东西的时候必须把原有的东西拿出来. 这个”盒子”是有名称的, 当你在程序中使用变量的时候, 系统会打开盒子取出里面的东西, 让这些东西参与处理, 而不是盒子. 有些语言是很依赖”盒子”里面装些什么东西, 这样才能找到合适的”盒子”(比如C语言), 但VBS给我提供的是能够自动伸缩的”魔术盒”, 我们不用关心装进去的是什么东西,
VBS会自动调整盒子的大小. 例如:
Dim a1,a2,a3
a1=14
a2=12.23
a3=”Hello”
而不用像C语言那样麻烦: 或者是VB的正规声明(VB可以声明也可以不用)那样:
int a1; Dim a1 as integer
float a2; Dim a2 as Double
char* a3; Dim a3 as strnig
a1=14; a1=14
a2=12.23; a2=12.23
a3=”Hello”; a3=”Hello”
嗯……扯远了……
  变量有什么用呢? 哇, 那用处可大了. 最简单, 你并不能确定程序运行时变量的值, 比如前一节课我们编的输入姓名的程序, 你不能确定InputBox返回的是什么(还记得Inputbox的返回值吗? 就是你输入的内容), 所以你就没有办法应对各种情况, 但我们用name这个”盒子”把用户的名字装起来, 到用的时候我们只要知道name这个盒子的名字就行了, 系统会自己打开他并把里面的内容拿出来用. 再举个例子, 我们编写一个程序计算一个矩形的面积, 比如这个程序要发给小学生使用:
dim a,b,s
a=15
b=12
s=a*b
msgbox(s)
  这样就可以求出长为15,宽为12的矩形的面积了, 是不是很简单? 当然, 这个程序也可以这样写:
dim s
s=15*12
msgbox(s)
  这样看起来程序短了许多, 也节约内存, 但并不是鼓励的做法, 为什么? 请看下面.
  现在, 我们的程序要变得像点样子才行, 谁的程序写出来还要别人修改源代码才能用啊?
  所以, 我们要接受用户的输入, 还记得吗? InputBox函数.
  修改后程序如下:
dim a,b,s
a=inputbox(“请输入矩形的长:”)
b=inputbox(“请输入矩形的宽:”)
s=a*b
msgbox(s)
  ok, 这么一修改, 无论用户输入怎样的数据, 我们都能计算出矩形的面积了. 如果你用s=15*12能改嘛? 当然不行.
  我想你已经发现了, vbs中的数学计算和真正的算术没有什么不同, +,-,*,/,(),[],{}都是一样的用法, 比如:
dim ans
ans=12+32/4+[(23-10)*2]
msgbox(ans)
  四则运算的法则在编程中同样生效, 你可以在编程中重新获得小学时候的乐趣(你恨数学?那就别学电脑了).
  在编程中有一个有趣的运算符是”mod”, 这个运算符叫做”取余运算符”, 就是取得一次除法的余数, 例如
dim a
a=16 mod 5
  你知道a等于几吗? Bingo! 没错, 就是1. 因为16 / 5 =3….1, 所以mod计算的结果就是1.
  还有一个运算符是”^”(就是键盘”6″上面的小箭头), 他表示”乘幂”(或者是”方”) 比如:
dim a,b,c
a=2
b=a^2
c=a^3
msgbox(a)
msgbox(c)
  则b=a*a=4, c=a*a*a=8
  我们一次不要讲太多, 这次就讲到这里, 现在总结一下.
要点:
1) 常量分为自然常量和自定义常量, 常量的值不可修改
2) 变量就像盒子, 我们不在乎盒子里装的是什么, 但一定要知道盒子的名字
3) 四则运算在编程中没有任何不同
4) MOD是取余运算
作业:
1) 编一个程序, 计算圆形的面积, 半径由用户给出 (使用Inputbox) PI取值3.14159
2) 编一个程序取得20 / 3 的余数

第三篇(共六篇):



首先, 我来解决一下上次课程的几个疑问

第一, 那个余数问题, 16 / 5 = 3…1, 是因为我改过前面的部分, 后面的忘了改了, 不好意思.

第二, 请看一下程序清单:

1)
Dim a,b,c
a=inputbox(“a是:”,”输入半径”)
b=Inputbox(“b是:”,”输入半径”)
c=a*2+b*2
Msgbox(c)
这个 输入1、2时是6

2)
Dim a,b,c
a=inputbox(“a是:”,”输入半径”)
b=Inputbox(“b是:”,”输入半径”)
c=(a+b)*2
Msgbox(c)
这个输入1、2时是24

  为什么会不一样呢? 在数学上c=(a+b)*2 和 c=a*2+b*2是等价的, 在VBS中也是如此. 问题出在”+”上, 在VBS中, +不仅仅是加号的意思还表示把两个字符串连接起来, 例如”Hello”+”World”=”HelloWorld” have you understood? 你还记得InoutBox函数的返回值吗? 是字符串! 这就看出问题了吧, 在编程中”1″不等于(<>)1, “1″是一个字符, 而1是一个数, 所以a,b都是字符串变量, “1″+”2″=”12″, 这就好像我们小时跟伙伴开玩笑问他们1+1=?一样, 我们总是笑着说”错啦,应该是11″.但为什么, a可以*2却不发生错误呢? 这时VBS比较智能的一个表现, 如果这个字符串的内容是一个数且对他进行数学运算, 则把字符串强制转换成数参与运算, 如果字符串代表一个数, 但不参加数学运算, 而是参加字符串运算(合并)则当作字符串处理, 所以你看到a+b=12, 这时候a+b的结果(12)是一个字符串, 当它要乘以2的时候就被强制转换成了数字12, 这样我就得到了结果24.

  怎么修改这个程序呢? 我们需要用到另一个内建的函数:int, int函数的功能是将输入值转化成整数值, 我们这样修改:

c=(int(a)+int(b))*2

  这个意思就是把a作为参数传递给int函数, int函数就会返回那个整数(你的输入值), 然后让返回值参与运算, 这样就得到了正确答案.所以,以后如果你用的是inputbox函数的话,最好用int语句加工一下:比如c=int(c) ””c是你自己的变量

  大家是不是觉得这个课程有点枯燥, 呵呵, 变量和运算符部分的确是这样的, 不过多多练习也就好了, 这次, 我们写写真正好玩的东西: 流程控制语句. 这个部分开始才是真正的编程.

  首先介绍判断结构.

  在此之前, 我们先介绍一种简单的变量类型:布尔值(Boolean), 这种变量只有两个可能值:True,Flase,即真或假. 这种变量在某些情况下很有用(比如”开关”). 我们定义一个bool变量的方法和其他变量一样, 赋值也一样, 例如:

dim a,b
a=true
b=false

  注意,true和”true”是不一样的, “true”是字符串,true是布尔值, 千万不能混淆.

  回到if语句上来, 我们先来看看简化版的if语句:if 判断式 then 语句体 我们来看一个例子:

dim a,b
a=12
b=13
if b>a then msgbox(“B大于A”)

  我们只看最后一行, a>b这个式子(表达式)有一个返回值, 是bool型的. 因为这个式子只有两种可能:b大于a, b不大于a, 所以这个式子也只有两种可能性, 即真或者假. if语句判断这个表达式的返回值是真还是假, 如果是真(true)则执行then后面的语句, 如果是假, 则不执行, 你把a的值改成14看看还会不会弹出对话框?

  当我们要在判断之后执行多行语句怎么办呢, 我们需要用语句块来解决, 在这里可以叫块if

dim a,b
a=12
b=13
if amsgbox(“A小于B”)
msgbox(“B大于A”)
end if

  两个msgbox函数夹在if和end if之间, 这个部分就是语句块, 块里的每一条语句之前请空出4–8(一个键)个格, 这不是必需的, 但是是一个好习惯, 以便看清楚程序的结构. 这样我们就能运行多于一个的语句, 请注意if…then…end if 这三个关键部分不要掉了. OK, 我出一个题, 输入一个数, 如果小于100就输出”错误”, 如果大于100就输出”正确”, 我这里有两个程序版本:

dim a
a=inputbox(“请输入一个大于100的数”)
a=int(a) ””inputbox返回的是字符串, 我们把他变成整数 : )
if a>100 then msgbox(“正确”)
if a<100 then msgbox("错误")

还有一个更简单的

dim a
a
=inputbox(“请输入一个大于100的数”)
a=int(a) ””inputbox返回的是字符串, 我们把他变成整数
if a>100 then
msgbox(“正确”)
else
msgbox(“错误”)
end if

  看到多了一个else了吧, else的作用就是当要判断的表达式为false时执行的. 这样程序就可以处理两种不同的情况了. 不要忘了用end if结尾

  嘿嘿, 我是变态者, 现在我要你处理三种情况, <100,=100,>100, 还要写在一个if结构里, 你怎么办, 我给你答案:

dim a
a=inputbox(“请输入一个大于100的数”)
a=int(a) ””inputbox返回的是字符串, 我们把他变成整数
if a>100 then
msgbox(“正确”)
elseif a=100 then
msgbox(“老大, 你耍我?”)
else
msgbox(“错误”)
end if

  这次输入100看看, 是什么? else if语句可以在if结构中多次出现, 以灵活判断不同的情况 (如果你要判断得太多, 就请使用”选择结构”, 过会儿就讲), 当所有elseif都处理完了,而没有符合情况的时候再执行else中的语句.另一个例子:

Dim a,b,c,d
a=inputbox(“a是:”,”输入半径”)
b=Inputbox(“b是:”,”输入半径”)
d=Inputbox(“答案:”,”输入答案”)

c=a*2+b*2 ””这里没有问题, 会自动转换
if d=c then
Msgbox(“你好聪明”)
else
Msgbox(“你好猪头 自己的题还不会!”)
end if

  再看看这个, 无论你回答得多么正确你都是猪头, 哈哈, 不是我耍你, 还是文章开始时候的inputbox的返回类型在耍你, d是inputbox的返回值, 他是一个字符串, 而c是一次整数计算的结果, 他是一个整数. 一个字符串无论如何也不等于一个整数, 尽管他们字面上是一样的:”8″<>(不等于号)8 所以if的判断式的值永远是false, 总是执行else部分的语句. 我们可以这么修改

Dim a,b,c,d
a=inputbox(“a是:”,”输入半径”)
b=Inputbox(“b是:”,”输入半径”)
d=Inputbox(“答案:”,”输入答案”)
d=int(d)
””在这里我们取出了d的值, 变成整数, 在放回”d”这个盒子里
c=a*2+b*2
if d=c then
Msgbox(“你好聪明”)
else
Msgbox(“你好猪头 自己的题还不会!”)
end if

  这样就成功了. 这也是Inputbox函数的一个讨厌的地方, 没办法, vbs没有其他好的输入方式了.

  说到if, 我们不得不说一说逻辑运算符, 今天介绍两种, “and” 和 “or” 学会了if语句之后, 我举一个例子, 你一看就明白了.

dim a,b
a=inputbox(“输入一个数 >10″)
b=inputbox(“输入另一个数 >10″)
a=int(a)
b=int(b)
if a>10 and b>10 then
msgbox(“正确”)
else
msgbox(“错误”)
end if

  这段程序让你输入两个值, 必须都大于10, 只要有一个不大于, 就输出错误

dim a,b
a=inputbox(“输入一个数 >10″)
b=inputbox(“输入另一个数 >10″)
a=int(a)
b=int(b)
if a>10 or b>10 then
msgbox(“正确”)
else
msgbox(“错误”)
end if


  这段程序让你输入两个值, 只要有一个大于10, 就返回成功. 其实and和or很好理解, 我读”if a>10 or b>10 then” 这一句, 用华语是这样:”如果a大于10或者b大于10, 那么…”. 这样是不是就很好理解了呢.

  OK, 我们再来看一种新结构, 今天的课就结束, 已经午夜了, 我都累死了.

  当你的程序要处理很多种不同的判断情况的时候elseif..then会让程序看起来很杂乱, 所以就有了一种select case结构专门对付这种情况, select case的语法结构很简单:

select case 变量名
case 值
语句
case 值
语句
case else
语句
end select


  我们举个例子就能很简单的说明:

dim a
a=inputbox(“输入一个1–3的值”)
a=int(a) ””处理inputbox返回字符串的问题
select case a
case 1
msgbox(“壹”)
case 2
msgbox(“贰”)
case 3
msgbox(“叁”)
case else
msgbox(“输入错误”)
end select

  这个例子把1,2,3这三个阿拉伯数字转化成中国大写数字, 这个程序写成if…elseif 的形式如下

dim a
a=inputbox(“请输入1–3的值”)
a=int(a)
if a=1 then
msgbox(“壹”)
elseif a=2 then
msgbox(“贰”)
elseif a=3 then
msgbox(“叁”)
else
msgbox(“输入错误”)
end if

  怎么样, 麻烦吧, 还是select好吧.

  OK, 今天到此结束, 总结一下:


要点:

1) inputbox返回的是一个字符串, 而不是一个数, 必须用a=int(a)这种形式转化成数

2) bool变量的值只有两种:true,false

2.5) and两边的表达式都是true, 则返回true. or两边的表达式有一个是true, 就返回true

3) if 语句的格式

4) select…case的格式


作业:

1) 使用3个bool值, 储存你的3兄弟姐妹是否是男性 (提示:sister1male=false)

2) 给定一个个数, 大于10而且小于20输出”正确”, 否则输出”错误”

3) 输入12,或者15, 输出”正确”, 否则输出”错误”

4) 把5以内的正整数都转换成中国大些数字

5) 自己随便设计一个程序, 应用今天的知识

四篇(共六篇):



大家好, 昨天我休息了一天, 所以今天写第4章:循环结构

  我们先来看一道题:商场进行每日结算, 要求累加出今天的营业额, 每次输入一个数, 这道题其实很简单, 但就我们现在学

过的知识要完成这道题相当麻烦, 我们来分析一下. 首先, 我们需要知道买卖的次数, 这样才能控制输入的次数,但是, 这种设

计是非常低效的, 每天都要重新设计程序. 假定今天进行了5次交易, 以下是源程序:

dim sum
sum=0 ‘初始化变量
sum=sum + int(inputbox(“请输入交易额”))
‘sum=sum+x 这种形式是把本身的值取出来, 进行一次运算, 再放回本身, 这种方法很有用处
‘这里使用了函数嵌套, 把inputbox的返回值直接传给int函数, 转化成整数, 下同
sum=sum + int(inputbox(“请输入交易额”))
sum=sum + int(inputbox(“请输入交易额”))
sum=sum + int(inputbox(“请输入交易额”))
sum=sum + int(inputbox(“请输入交易额”))
msgbox(sum)

  看到了吗, 我通过把计算过程复制了5遍才设计好了程序, 这种程序在汽车交易所等交易次数少的地方还能凑合着用, 如果

放到超市岂不是要复制, 粘贴几千遍? 我们今天讲的内容就可以克服这种缺陷, 首先, 我们来讲以下Do…Loop语句.

  do…loop的结构看上去非常简单, 就是:do…loop, 仅此而已, 这个结构不断执行do和loop之间的语句(学名叫:循环体),
永不停止. 举个例子来说:

do
msgbox(“这个信息会不断重复出现, 要停止程序请使用任务管理器(Ctrl+Alt+Del)中止wscript进程”)
loop

  运行这个程序, 当你点销掉一个对话框马上会出来另一个, 你永远点不完, 总有下一个. 谁会运行这样的程序? 除非是给

别人捣乱(我就干过这种事), 所以在do..loop结构中还有一个语句:exit do, 这个语句将终止循环, 跳到loop后面的语句继续

执行. 据个例子来说:

dim a ‘注意:常量不需要在dim里面声明,否则会引发错误
const pass=”123456″ ‘这是一个字符串 请用”"包裹起来. 设定密码为常量, 不可变更
do
a=inputbox(“请输入密码”)
if a=pass then
msgbox(“密码校验成功”)
exit do
end if
loop

  这个程序会一直不停的问你密码, 知道你输入了正确的密码为止.(if可以嵌套在另一个if当中, 也可以嵌套在循环体当中

, 所以一定要用缩进, 来分清楚程序的各个部分). 这个程序是很经典的, 早期的程序都是这么做的. 但是我

国内国外免费在线杀毒网站

0

分类 : 技术文摘 | 发表时间 14-06-2006

~~技术纵横提示~~
1、在线扫描时,应关闭除浏览器之外的所有程序;
2、建议使用Internet Explorer(IE浏览器)来打开下面的网址,一些基于IE核心的浏览器可能会造成无法扫描或出现错误提示。
3、您的IE浏览器应升级到最新版本,某些安全厂商的在线查杀功能不支持IE 4.x浏览器。

此文由本站原创,转载请注明出处“(来自techxy.com)”,谢谢!

~~以下厂商地址,排名不分先后~~

==中文==
趋势科技在线扫毒
说明:需要安装ActiveX插件
地址:http://www.trendmicro.com.cn/housecall/start_corp.asp

光华反病毒软件在线杀毒
地址:http://www.viruschina.com/free/freevirus.asp

金山毒霸免费查毒
地址:http://zs.kingsoft.com/safe_intro_1.shtml
金山在线杀毒
地址:http://scan.kingsoft.com/scan/oscan/retail.htm

瑞星免费在线查毒
地址:http://online.rising.com.cn/free/index.htm
安博士间谍软件在线查杀
地址:http://auth70.ahn.com.cn/shopping/spyzero.jsp

安博士在线杀毒
地址:http://auth70.ahn.com.cn/shopping/myv3.jsp

熊猫在线杀毒
地址:http://www.pandasoftware.com/activescan/activescan.asp?Language=8&Country=44&Partner=25&Ref=CN-PR-AS-108

天网安全扫描
地址:http://pfw.sky.net.cn/news/info/list.php?sessid=&sortid=17

CA eTrust在线扫描
说明:需要安装ActiveX插件
地址:http://www3.ca.com/securityadvisor/virusinfo/scan.aspx

==英文==

BitDefender-欧洲著名的安全厂商
地址:http://www.bitdefender.com/scan8/ie.html

avast!在线扫描
说明:支持单个文件扫描,每个文件大小限制不超过512KB
地址:http://onlinescan.avast.com/

微软Live.com在线安全扫描
说明:需要安装插件
地址:http://safety.live.com/

SpywareGuide在线扫描
说明:需要安装ActiveX插件
地址:http://www.spywareguide.com/onlinescan.php

Kaspersky(卡巴斯基)在线扫描
说明:无须插件,扫描文件大小不能超过1MB
地址:http://www.kaspersky.com/scanforvirus

WindowSecurity在线木马扫描
说明:需要安装ActiveX插件
地址:http://www.windowsecurity.com/trojanscan/

SpywareInfo-间谍软件在线扫描
说明:需要安装ActiveX插件
地址:http://www.spywareinfo.com/xscan.php

F-Secure在线病毒扫描
说明:需要安装ActiveX插件
地址:http://support.f-secure.com/enu/home/ols.shtml

ewido在线扫描beta测试版
说明:需要安装ActiveX插件
http://www.ewido.net/en/onlinescan/run/

PandaSoftware间谍软件在线扫描查杀
说明:需要安装Toolbar
http://www.pandasoftware.com/products/spyxposer/

交换机中的工作原理以及种类的区分

1

分类 : 技术文摘 | 发表时间 14-06-2006

许多新型的Client/Server应用程序以及多媒体技术的出现,导致了传统 的共享式网络远远不能满足要求,这也就推动了局域网交换机的出现。

  1、交换机的定义

  局域网交换机拥有许多端口,每个端口有自己的专用带宽,并且可以连接不同的网段。交换机各个端口之间的通信是同时的、并行的,这就大大提高了信息吞吐量。为了进一步提高性能,每个端口还可以只连接一个设备。

  为了实现交换机之间的互连或与高档服务器的连接,局域网交换机一般拥有一个或几个高速端口,如100M以太网端口、FDDI端口或155M ATM端口,从而保证整个网络的传输性能。

  2、交换机的特性

  通过集线器共享局域网的用户不仅是共享带宽,而且是竞争带宽。可能由于个别用户需要更多的带宽而导致其他用户的可用带宽相对减少,甚至被迫等待,因而也就耽误了通信和信息处理。利用交换机的网络微分段技术,可以将一个大型的共享式局域网的用户分成许多独立的网段,减少竞争带宽的用户数量,增加每个用户的可用带宽,从而缓解共享网络的拥挤状况。由于交换机可以将信息迅速而直接地送到目的地能大大提高速度和带宽,能 保护用户以前在介质方面的投资,并提供良好的可扩展性,因此交换机不但是网桥的理想替代物,而且是集线器的理想替代物。

  与网桥和集线器相比,交换机从下面几方面改进了性能:

  (1)通过支持并行通信,提高了交换机的信息吞吐量。

  (2)将传统的一个大局域网上的用户分成若干工作组,每个端口连接一台设备 或连接一个工作组,有效地解决拥挤现像。这种方法人们称之为网络微分 段(Micro一segmentation)技术。

  (3)虚拟网(VirtuaI LAN)技术的出现,给交换机的使用和管理带来了更大 的灵活性。我们将在后面专门介绍虚拟网。

  (4)端口密度可以与集线器相媲美,一般的网络系统都是有一个或几个服务器,而绝大部分都是普通的客户机。客户机都需要访问服务器,这样就导致服务器的通信和事务处理能力成为整个网络性能好坏的关键。

  交换机就主要从提高连接服务器的端口的速率以及相应的帧缓冲区的大小,来提高整个网络的性能,从而满足用户的要求。一些高档的交换机还采用全双工技术进一步提高端口的带宽。以前的网络设备基本上都是采用半双工的工作方式,即当一台主机发送数据包的时候, 它就不能接收数据包,当接收数据包的时候,就不能发送数据包。由于采用全双工技术,即主机在发送数据包的同时,还可以接收数据包,普通的10M端口就可以变成20M端口,普通的100M端口就可以变成200M 端口,这样就进一步提高了信息吞吐量。

  3、交换机的工作原理

  传统的交换机本质上是具有流量控制能力的多端口网桥,即传统的(二层) 交换机。把路由技术引入交换机,可以完成网络层路由选择,故称为三层交换,这是交换机的新进展。交换机(二层交换)的工作原理交换机和网桥一样,是工作在链路层的联网设备,它的各个端口都具有桥接功能,每个端口可以连接一个LAN或一台高性能网站或服务器,能够通过自学习来了解每个端口的设备连接情况。所有端口由专用处理器进行控制,并经过控制管理总线转发信息。

  同时可以用专门的网管软件进行集中管理。 除此之外,交换机为了提高数据交换的速度和效率,一般支持多种方式。

  (1)存储转发:

  所有常规网桥都使用这种方法。它们在将数据帧发柱其他端口之前,要把收到的帧完全存储在内部的存储器中,对其检验后再发往其他端口,这样其延时等于接收一个完整的数据帧的时间及处理时间的总和。如果级联很长时,会导致严重的性能问题,但这种方法可以过滤掉错误的数据帧。

  (2)切入法:

  这种方法只检验数据帧的目标地址,这使得数据帧几乎马上就 可以传出去,从而大大降低延时。

  其缺点是:错误帧也会被传出去。错误帧的概率较小的情况下,可以采用切入法以提高传输速度。而错误帧的概率较大的情况下,可以采用存储转发法/以减少错误帧的重传。

  4、交换机的配置

  我们下面以Cisco公司的Catlystl900交换机为例,介绍交换机的一般配置过程。

  对一台新的Catlystl900交换机,使用它的缺省配置就可以工作了。这因为它是一种将软件装在FlashMemory中的硬件设备,当加电时,它首先要进行一系列自检,对所有端口进行测试之后,交换机就处于工作状态。这时它的交换表是空的,它可以通过自学习来了解各个端口的设备连接情况,并将设备的 MAC地址记录在交换表中,当有信息交换时,交换机就根据交换表来进行数据转发。

  但为了便于对它进行网络管理,Catlystl900交换机自己有一个MAC地址,这样就可以为它分配一个IP地址和屏蔽码。网络管理员须通过交换机的串口接一台终端或仿真终端,才能为它指定一个IP地址,其缺省值是0.0.0.0。指定IP地址以后,网络管理员就可以通过网络进行远程管理了。Catlystl900交换机的配置界面是菜单形式,缺省配置下,它的所有端口都属于同一个VLAN,很多情况下都不需要作什么修改。

  (1)将微机串口通过RS一232电缆与Cata1yst1900的Console口连接,运行仿真终端软件,Catalyst 1900 启动后。

  (2)回车后,进入主菜单:

  (3)按“S”键,进入系统配置菜单:(配置系统名,位置,日期)

  (4)在主菜单中按“N”键进入网络管理菜单

  (5)配置IP地置

  (6)配置SNMP参数

  5、交换机的种类

  交换机是数据链路层设备,它可将多个物理LAN网段连接到一个大型网络上,与网络类似交换机传输和溢出也是基于MAC地址的传输。由于交换机是用硬件实现的,因此,传输速度很快。传输数据包时,交换机要么使用存储—转发交换方式,要么使用断—通交换方式。目前有许多类型的交换机,其中包括ATM交换机,LAN交换机和不同类型的WAN交换机。

  ATM交换机

  ATM(Asynchronous Transfer Mode)交换机为工作组,企业网络中枢以及其它众多领域提供了高速交换信息和可伸缩带宽的能力。ATM交换机支持语音,视频和文本数据应用,并可用来交换固定长度的信息单位(有时也称元素)。企业网络是通过ATM中枢链路连接多个LAN组成的。

  局域网交换机

  LAN交换机用于多LAN网段的相互连接,它在网络设备之间进行专用的无冲突的通信,同时支持多个设备间的对话。LAN交换机主要是用于高速交换数据帧。通过LAN交换机将一个0Mbps以太网与一个100Mbps 以太网互联。

磁盘阵列系统(RAID)技术详解

0

分类 : 技术文摘 | 发表时间 14-06-2006

RAID入门基础及RAID0技术详解

  随着计算机应用的日益普及,人们对计算速度和性能的要求也逐渐提高。在一个完整的计算机系统中,CPU和内存的作用固然重要,但是数据存储设备性能的好坏和速度的快慢也直接影响到整个系统的表现。本文所要讲解的RAID技术起初主要应用于服务器高端市场,但是随着个人用户市场的成熟和发展,正不断向低端市场靠拢,从而为用户提供了一种既可以提升硬盘速度,又能够确保数据安全性的良好的解决方案。本文将对RAID技术进行较为详细的介绍,希望能够对广大读者有所帮助。

  入门基础

  RAID是英文Redundant Array of Inexpensive Disks的缩写,中文简称为磁盘阵列。其实,从RAID的英文原意中,我们已经能够多少知道RAID就是一种由多块廉价磁盘构成的冗余阵列。虽然RAID包含多块磁盘,但是在操作系统下是作为一个独立的大型存储设备出现。RAID技术分为几种不同的等级,分别可以提供不同的速度,安全性和性价比。

  人们在开发RAID时主要是基于以下设想,即几块小容量硬盘的价格总和要低于一块大容量的硬盘。虽然目前这一设想还没有成为现实,RAID在节省成本方面的作用还不是很明显,但是RAID可以充分发挥出多块硬盘的优势,实现远远超出任何一块单独硬盘的速度和吞吐量。除了性能上的提高之外,RAID还可以提供良好的容错能力,在任何一块硬盘出现问题的情况下都可以继续工作,不会受到损坏硬盘的影响。

  RAID 0

  提到RAID分为几种不同的等级,其中,RAID 0是最简单的一种形式。RAID 0可以把多块硬盘连接在一起形成一个容量更大的存储设备。最简单的RAID 0技术只是提供更多的磁盘空间,不过我们也可以通过设置,使用RAID 0来提高磁盘的性能和吞吐量。RAID 0没有冗余或错误修复能力,但是实现成本是最低的。

  RAID 0最简单的实现方式就是把几块硬盘串联在一起创建一个大的卷集。磁盘之间的连接既可以使用硬件的形式通过智能磁盘控制器实现,也可以使用操作系统中的磁盘驱动程序以软件的方式实现。图示如下:



  在上述配置中,我们把4块磁盘组合在一起形成一个独立的逻辑驱动器,容量相当于任何一块单独硬盘的4倍。如图中彩色区域所示,数据被依次写入到各磁盘中。当一块磁盘的空间用尽时,数据就会被自动写入到下一块磁盘中。

  这种设置方式只有一个好处,那就是可以增加磁盘的容量。至于速度,则与其中任何一块磁盘的速度相同,这是因为同一时间内只能对一块磁盘进行I/O操作。如果其中的任何一块磁盘出现故障,整个系统将会受到破坏,无法继续使用。从这种意义上说,使用纯RAID 0方式的可靠性仅相当于单独使用一块硬盘的1/4(因为本例中RAID 0使用了4块硬盘)。

  虽然我们无法改变RAID 0的可靠性问题,但是我们可以通过改变配置方式,提供系统的性能。与前文所述的顺序写入数据不同,我们可以通过创建带区集,在同一时间内向多块磁盘写入数据。具体如图所示:


  上图中,系统向逻辑设备发出的I/O指令被转化为4项操作,其中的每一项操作都对应于一块硬盘。我们从图中可以清楚的看到通过建立带区集,原先顺序写入的数据被分散到所有的四块硬盘中同时进行读写。四块硬盘的并行操作使同一时间内磁盘读写的速度提升了4倍。

  在创建带区集时,合理的选择带区的大小非常重要。如果带区过大,可能一块磁盘上的带区空间就可以满足大部分的I/O操作,使数据的读写仍然只局限在少数的一、两块硬盘上,不能充分的发挥出并行操作的优势。另一方面,如果带区过小,任何I/O指令都可能引发大量的读写操作,占用过多的控制器总线带宽。因此,在创建带区集时,我们应当根据实际应用的需要,慎重的选择带区的大小。

  我们已经知道,带区集可以把数据均匀的分配到所有的磁盘上进行读写。如果我们把所有的硬盘都连接到一个控制器上的话,可能会带来潜在的危害。这是因为当我们频繁进行读写操作时,很容易使控制器或总线的负荷超载。为了避免出现上述问题,建议用户可以使用多个磁盘控制器。示意图如下:


  这样,我们就可以把原先控制器总线上的数据流量降低一半。当然,最好解决方法还是为每一块硬盘都配备一个专门的磁盘控制器。

  RAID 1技术详解

  虽然RAID 0可以提供更多的空间和更好的性能,但是整个系统是非常不可靠的,如果出现故障,无法进行任何补救。所以,RAID 0一般只是在那些对数据安全性要求不高的情况下才被人们使用。

  RAID 1和RAID 0截然不同,其技术重点全部放在如何能够在不影响性能的情况下最大限度的保证系统的可靠性和可修复性上。RAID 1是所有RAID等级中实现成本最高的一种,尽管如此,人们还是选择RAID 1来保存那些关键性的重要数据。

  RAID 1又被称为磁盘镜像,每一个磁盘都具有一个对应的镜像盘。对任何一个磁盘的数据写入都会被复制镜像盘中;系统可以从一组镜像盘中的任何一个磁盘读取数据。显然,磁盘镜像肯定会提高系统成本。因为我们所能使用的空间只是所有磁盘容量总和的一半。下图显示的是由4块硬盘组成的磁盘镜像,其中可以作为存储空间使用的仅为两块硬盘(画斜线的为镜像部分)。

  

  RAID 1下,任何一块硬盘的故障都不会影响到系统的正常运行,而且只要能够保证任何一对镜像盘中至少有一块磁盘可以使用,RAID 1甚至可以在一半数量的硬盘出现问题时不间断的工作。当一块硬盘失效时,系统会忽略该硬盘,转而使用剩余的镜像盘读写数据。

  通常,我们把出现硬盘故障的RAID系统称为在降级模式下运行。虽然这时保存的数据仍然可以继续使用,但是RAID系统将不再可靠。如果剩余的镜像盘也出现问题,那么整个系统就会崩溃。因此,我们应当及时的更换损坏的硬盘,避免出现新的问题。   更换新盘之后,原有好盘中的数据必须被复制到新盘中。这一操作被称为同步镜像。同步镜像一般都需要很长时间,尤其是当损害的硬盘的容量很大时更是如此。在同步镜像的进行过程中,外界对数据的访问不会受到影响,但是由于复制数据需要占用一部分的带宽,所以可能会使整个系统的性能有所下降。

  因为RAID 1主要是通过二次读写实现磁盘镜像,所以磁盘控制器的负载也相当大,尤其是在需要频繁写入数据的环境中。为了避免出现性能瓶颈,使用多个磁盘控制器就显得很有必要。下图示意了使用两个控制器的磁盘镜像。



  使用两个磁盘控制器不仅可以改善性能,还可以进一步的提高数据的安
全性和可用性。我们已经知道,RAID 1最多允许一半数量的硬盘出现故障,所以按照我们上图中的设置方式(原盘和镜像盘分别连接不同的磁盘控制),即使一个磁盘控制器出现问题,系统仍然可以使用另外一个磁盘控制器继续工作。这样,就可以把一些由于意外操作所带来的损害降低到最低程度。

  RAID 0+1

  单独使用RAID 1也会出现类似单独使用RAID 0那样的问题,即在同一时间内只能向一块磁盘写入数据,不能充分利用所有的资源。为了解决这一问题,我们可以在磁盘镜像中建立带区集。因为这种配置方式综合了带区集和镜像的优势,所以被称为RAID 0+1。

  RAID3和RAID5技术详解

  热插拔

  一些面向高端应用的磁盘镜像系统都可以提供磁盘的热插拔功能。所谓热插拔功能,就是允许用户在不关闭系统,不切断电源的情况下取出和更换损害的硬盘。如果没有热插拔功能,即使磁盘损坏不会造成数据的丢失,用户仍然需要暂时关闭系统,以便能够对硬盘进行更换。现在,使用热插拔技术只要简单的打开连接开关或者转动手柄就可以直接取出硬盘,而系统仍然可以不间断的正常运行。

  校验

  RAID 3和RAID 5都分别使用了校验的概念提供容错能力。简单的说,我们可以把校验想象为一种二进制的校验和,一个可以告诉你其它所有字位是否正确的特殊位。   在数据通信领域,奇偶校验被用来确定数据是否被正确传送。例如,对于每一个字节,我们可以简单计算数字位1的个数,并在字节内加入附加校验位。在数据的接收方,如果数字位1的个数为奇数,而我们使用的又是奇数校验的话,则说明该字节是正确的。同样对偶数校验也是如此。然而,如果数字位1的个数和校验位的奇偶性不一致的话,则说明数据在传送过程中出现了错误。

  RAID系统也采用了相似的校验方法,可以在磁盘系统中创建校验块,校验块中的每一位都用来对其它关联块中的所有对应位进行校验。

  在数据通讯领域,虽然校验位可以告诉我们某个字节是否正确,但是无法告诉我们到底是哪一位出现了问题。这就是说我们可以检测错误,但是不能改正错误。对于RAID,这是远远不够的。固然错误的检测非常重要,但是如果不能对错误进行修复,我们就无法提高整个系统的可靠性。

  举个例子来说,假设我们发现校验块中第10个字节的第5位不正确。如果这个校验块包含的是另外8个数据块的校验信息,那么哪一个数据块才是问题的罪魁祸首呢?也许你可能会想为每一个数据块都建立一个校验块就可以解决问题。但是这种方法很难实现。事实上,RAID主要是借助磁盘控制器的错误报告检测错误位置,并进行修复。如果磁盘控制器在读取数据时没有发出任何“抱怨”,那么系统将会视该数据为正确数据,继续使用。

  RAID 3

  RAID 3采用的是一种较为简单的校验实现方式,使用一个专门的磁盘存放所有的校验数据,而在剩余的磁盘中创建带区集分散数据的读写操作。例如,在一个由4块硬盘构成的RAID 3系统中,3块硬盘将被用来保存数据,第四块硬盘则专门用于校验。这种配置方式可以用3+1的形式表示,具体如图:



  在上图中,我们用相同的颜色表示使用同一个校验块的所有数据块,斜线标出的部分为校验块。校验块和所有对应的数据块一起构成一个带区。

  第四块硬盘中的每一个校验块所包含的都是其它3块硬盘中对应数据块的校验信息。RAID 3的成功之处就在于不仅可以像RAID 1那样提供容错功能,而且整体开销从RAID 1的50%下降为25%(RAID 3+1)。随着所使用磁盘数量的增多,成本开销会越来越小。举例来说,如果我们使用7块硬盘,那么总开销就会将到12.5%(1/7)。

  在不同情况下,RAID 3读写操作的复杂程度不同。最简单的情况就是从一个完好的RAID 3系统中读取数据。这时,只需要在数据存储盘中找到相应的数据块进行读取操作即可,不会增加任何额外的系统开销。

  当向RAID 3写入数据时,情况会变得复杂一些。即使我们只是向一个磁盘写入一个数据块,也必须计算与该数据块同处一个带区的所有数据块的校验值,并将新值重新写入到校验块中。例如,当我们向上图中的绿色数据块写入数据时,必须重新计算所有3个绿色数据块的校验值,然后重写位于第四块硬盘的绿色校验块。由此我们可以看出,一个写入操作事实上包含了数据读取(读取带区中的关联数据块),校验值计算,数据块写入和校验块写入四个过程。系统开销大大增加。

  我们可以通过适当设置带区的大小使RAID系统得到简化。如果某个写入操作的长度恰好等于一个完整带区的大小(全带区写入),那么我们就不必再读取带区中的关联数据块计算校验值。我们只需要计算整个带区的校验值,然后直接把数据和校验信息写入数据盘和校验盘即可。

  到目前为止,我们所探讨的都是正常运行状况下的数据读写。下面,我们再来看一下当硬盘出现故障时,RAID系统在降级模式下的运行情况。

  RAID 3虽然具有容错能力,但是系统会受到影响。当一块磁盘失效时,该磁盘上的所有数据块必须使用校验信息重新建立。如果我们是从好盘中读取数据块,不会有任何变化。但是如果我们所要读取的数据块正好位于已经损坏的磁盘,则必须同时读取同一带区中的所有其它数据块,并根据校验值重建丢失的数据。

  当我们更换了损坏的磁盘之后,系统必须一个数据块一个数据块的重建坏盘中的数据。整个过程包括读取带区,计算丢失的数据块和向新盘写入新的数据块,都是在后台自动进行。重建活动最好是在RAID系统空闲的时候进行,否则整个系统的性能会受到严重的影响。

  RAID 3的性能问题

  除了我们在上文讨论过的有关数据写入和降级模式的问题之外,在使用RAID 3的过程中还有其他一些性能上的问题需要引起我们的注意。RAID 3所存在的最大一个不足同时也是导致RAID 3很少被人们采用的原因就是校验盘很容易成为整个系统的瓶颈。   我们已经知道RAID 3会把数据的写入操作分散到多个磁盘上进行,然而不管是向哪一个数据盘写入数据,都需要同时重写校验盘中的相关信息。因此,对于那些经常需要执行大量写入操作的应用来说,校验盘的负载将会很大,无法满足程序的运行速度,从而导致整个RAID系统性能的下降。鉴于这种原因,RAID 3更加适合应用于那些写入操作较少,读取操作较多的应用环境,例如数据库和WEB服务器等。

  RAID 5

  RAID 3所存在的校验盘的性能问题使几乎所有的RAID系统都转向了RAID 5。在运行机制上,RAID 5和RAID 3完全相同,也是由同一带区内的几个数据块共享一个校验块。

  RAID 5和RAID 3的最大区别在于RAID 5不是把所有的校验块集中保存在一个专门的校验盘中,而是分散到所有的数据盘中。RAID 5使用了一种特殊的算法,可以计算出任何一个带区校验块的存放位置。具体如图所示:



  注意图中的校验块已经被分散保存在不同的磁盘中,这样就可以确保任何对校验块进行的读写操作都会在所有的RAID磁盘中进行均衡,从而消除了产生瓶颈的可能。

入侵网站的各种漏洞的利用

0

分类 : 系统安全 | 发表时间 13-06-2006

信息来源:慕容小雨’s blog

慕容小雨何许人也,偶不认识,不过听neeao说过多次,再从作品上看,当非凡人也!呵

各种漏洞的利用和一些搜索参数
说到漏洞,首先应该提到的就是动网的上传漏洞了。

“洞网”漏洞拉开了上传漏洞文件的序幕,其他系统的上
传漏洞接踵而来!

asp动网论坛漏洞分析

1、这个漏洞不算太严重,用过动网论坛的人都知道,发帖时直接写javascript会被过滤拆分,写http会自动加上链接,漏洞就在此,在这两个地方变通一下,把两个单词的某个字母换成编码形式,然后系统再对应地解码回字母,就达到了避免被过滤的目的。例子说明一下,在发帖时写入[img]javas&#x63ript:window.open(‘htt&#x70://www.fwcn.com’,”)[/img] 很清楚地看到,#x63解码的字母是”c”,#x70解码的字母是”p”,&起到连接作用,最后加上[img],使JS被触发,如果论坛支持flash插入,用[swf]也可。利用这个漏洞可以搞些恶作剧,写上诱人的主题,点进去结果是他的主页(骗点击率,作广告),甚至更绝,连到一个有病毒、木马的网页上,让你直想骂娘。这个漏洞存在于动网的各个版本,包括较新的0519版,覆盖面积之广让人瞠目,各人认为应该对某些非法字符进行检测剔除,而非简简单单地拆分了事,真希望动网开发者能尽早补上这漏洞。

2、比起前者,第二个漏洞问题就大啦,利用该漏洞可以破解掉论坛上所有注册会员的密码(恐怖~~~),由于论坛管理员通常直接把论坛程序载下来梢加以美工就拿来使用了,图方便直接导致了漏洞的出现,我们也载一个回来,只要看一下动网的数据库,就知道了密码的字段为userpassword,接着例如要破一个名叫abc的用户密码,首先察看abc的用户资料,给出的连接是http://xxxxx/dispuser.asp?name=abc ,在dispuser.asp中,读取参数的语句是:username=trim(request(“name”)),数据库的查询的语句是: sql=”select * from [user] where username=’”&username&”‘”,看得出来, abc就是直接被作为了dispuer的一个参数username,另外,如果该用户不存在,程序就会给出提示,既然如此,我们就再写入个查询密码的条件,在where username=abc后面加上and userpassword=”******”,理论上这样就可以实现对密码的破解了,但这么破要破到何年何月,现在就要轮到VBS函数大显身手了,可以先用len函数试出用户的密码位数,地址就这么写http://xxxxx/dispuser.asp?name=abc'%20and%20len(userpassword)=5%20and%20’1′=’1,这么看可能不好理解,放到sql语句里其实就是这副样子:sql=”select * from [User] where username=’abc’ and len(UserPassword)=5 and ’1′=’1′”,现在明白点了吧,%20是空格,abc后面的单引号和’1′=’1里的单引号都是为了和sql语句相匹配。奇怪,该用户不存在,喔?那就说明符合这个条件的用户没有,继续,把5换成6,7,8,依此类推,只要能显示出用户资料了,就说明密码位数猜对了。接下来要做的就是试每位的密码是多少了,继续要用到VBS,可以用left或right或mid函数,http://xxxxx/dispuser.asp?name=abc'%20and%20left(userpassword,1)=’a,如果猜对了就给出用户资料,猜对了就给出该用户不存在的提示,这样子还是嫌太慢,那就在外面再套个asc函数,http://xxxxx/dispuser.asp?name=abc'%20and%20asc(mid(userpassword,1,1))>’50 试出用户密码的ASCII码是否大于50,不断地缩小范围,相信很快就能将范围缩小至个位数,看到这里你是否惊出了一身冷汗,起码我是如此,*几个函数的灵活运用,保守地说,不出半小时就能破解出密码。真是不幸中的大幸,动网开发者在后来的05**版后使用了MD5的加密,这下子总算放心了,但介于国内还有许多地方在使用老版本的动网论坛(包括一个小有名气的flash站点)

3 、动网SQL语句漏洞
此漏洞针对动网SQL版本。
测试方法:在http://ip/bbs/admin_index.asp 输入用户名是’or”=’ 密码也是这个
这样可以跳过认证
原理:利用SQL语法。输入的密码和ID就成为一个合法的SQL语句,直接跳过认证。
此漏洞并不针对动网。很多SQL的ASP都会有这个漏洞

4、动网论坛sp2漏洞 (此漏洞影响范围甚大,动网官方站、黑客防线、安全基地都曾因此被黑过,具体资料大家可以在百度搜一下)
上传漏洞路径:reg_upload.asp及upfile.asp

青创文章系统

打开google 输入.tw qcdn (或者是去百度搜索 Powered by:QCDN_NEWS 但大多数是中国的)
青创文章系统
上传漏洞。在网址后加/admin_upfile.asp 如果出现。
Microsoft VBScript 磅︽顶琿岿粇 岿粇 ’800a01b6′
ンぃや穿妮┦┪よ猭: ‘form’
/article/admin_upfile.asp, 21
就代表已经有90%以上的希望了
桂林老兵的上传工具上传木马
入侵的時候發現admin_upfile.asp改了。你也可以改成user_upfile.asp也上傳傳馬馬。還有一個方法就是把admin_upfile.asp user_upfile.asp加到注入工裏邊

青创文章管理系统注入功击
关键字”list.asp?unid=”
工具:
  1、NBSI好像大部分黑客站点都有得下。
  2、MD5Crack2,破解MD5加密的软件(磊子推荐:dos下DV.exe比较好用)
第一次检测的时候,会报告”暂未检测到注入漏洞”;然后在”特征字符”输入”Unid”
(提示:”Unid”中的” U “一定要是大写的

“飞龙文章管理系统” 漏洞

飞龙文章管理系统 Ver 2.0 Build 20040620 正式版漏洞利用
搜索”Article.asp?ArtID=”关键字
漏洞文件在
admin_upfile.asp
user_upfile.asp
这两个文件”upfile.asp”
动网漏洞的再现
上传时cookie中加”ArtID=1111;”

phpwind 1.3.6 的论坛漏洞的利用
搜索关键字”POWER BY PHPWIND v1.3.6″

phpwind1.3.6论坛利用程序 “群共享”中有上传

保存后,木马地址为当前目录下的faq.php

在本机用如下表单进行提交:

METHOD=”POST”>




上传成功后的木马存在论坛目录下
直接访问就行!

漏洞集合

1)Co Net MiB Ver1.0~4.0 用’or’='or’登陆管理员(一个比较经典的漏洞)

2)ASP Calendar漏洞 请在google搜索Maintained with the Ocean12 ASP Calendar Manager v1.01这个信息,程序的默认数据库为o12cal.mdb(非MD5加密,明文保存)

3)六合彩漏洞 我们打开www.baidu.com或是www.google.com
在搜索里输入 请各位验证会员料
http://www.3589.com/tian/4login.asp把4login.asp改成conn.inc

<%DBPath=Server.MapPath("wz520#.mdb")
Set conn=Server.CreateObject(“ADODB.Connection”)
conn.Open “Driver={Microsoft Access Driver (*.mdb)};DBQ=”&DBPath%>

wz520#.mdb,他就是数据库了。#改成%23就可以下载数据库了

4)青创文章系统出现严重漏洞 在网址后加/admin_upfile.asp上传WEBSHELL

百度搜索 Powered by:QCDN_NEWS 台湾.tw qcdn。

还可以用%5c暴库,通杀

“list.asp?unid=” ” .tw/list.asp?unid= ” 存在注入 在”特征字符”输入”Unid”
(”Unid”中的” U “一定要是大写的)

5)自由动力3.6的软件上传过滤不严 用WinHex.exe和WSockExpert.exe修改上传木马

E时代驿站漏洞
百度搜索”E时代驿站”
漏洞利用页面 /upload.asp 用老
兵直接上传

沸腾新闻系统上传漏洞
搜索:沸腾展望新闻系统[核心:尘缘雅境]授权使用
漏洞:没有对空格进行严格的限制。
所以,我们直接选定要上传的asp木马,然后在后面加上空格
它的上传文件是UploadFaceOK.asp

尘缘雅境

在GOOGLE里搜索关键词: V1.0 ACCESS Finish,就会看
到出现了
一大堆
使用尘缘雅境系统的网站.比如说他的网站首页
是http://www.xx.com/asfq/index.asp,那么就要这样填写
http://www.xx.com/asfq/admin/uploadfaceok.asp,[漏洞目
录]:/asfq/admin
(注意一定要加上admin),[漏洞文件]一般不用改,不过有
些老版的
尘缘系统
的漏洞文件是uploadok.asp,如果uploadfaceok.asp不成功
再改

OFSTAR论坛漏洞利用程序(群共享中)
搜索: powered by ofstar.net
1:输入管理员用户名 2:输入任意一个帖子的路径!

3:单击获取密码,可以截取到管理员的MD5密码!是32位加密的!

4:单击直接登陆按钮!程序会自动构造Cookies进行登陆!单击管理栏的”超管”可直接进入后台!

上传木马: 选择后台的论坛管理=>风格摸版设置 插入以下代码! (其实上传shell部分和PHPWind一样)

然后使用提交页面提交“可以直接拿到shell!



无觅相关文章插件,快速提升流量