javascript事件大全
2007/06/04 01:08 ArthurXF
click() 对象.click() 使对象被点击。
closed 对象.closed 对象窗口是否已关闭true/false
clearTimeout(对象) 清除已设置的setTimeout对象
clearInterval(对象) 清除已设置的setInterval对象
confirm("提示信息") 弹出确认框,确定返回true取消返回false
cursor:样式 更改鼠标样式 hand crosshair text wait help default auto e/s/w/n-resize
event.clientX 返回最后一次点击鼠标X坐标值;
event.clientY 返回最后一次点击鼠标Y坐标值;
event.offsetX 返回当前鼠标悬停X坐标值
event.offsetY 返回当前鼠标悬停Y坐标值
document.write(document.lastModified) 网页最后一次更新时间
document.ondblclick=x 当双击鼠标产生事件
document.onmousedown=x 单击鼠标键产生事件
document.body.scrollTop; 返回和设置当前竖向滚动条的坐标值,须与函数配合,
document.body.scrollLeft; 返回和设置当前横向滚动务的坐标值,须与函数配合,
document.title document.title="message"; 当前窗口的标题栏文字
document.bgcolor document.bgcolor="颜色值"; 改变窗口背景颜色
document.Fgcolor document.Fgcolor="颜色值"; 改变正文颜色
document.linkcolor document.linkcolor="颜色值"; 改变超联接颜色
document.alinkcolor document.alinkcolor="颜色值"; 改变正点击联接的颜色
document.VlinkColor document.VlinkColor="颜色值"; 改变已访问联接的颜色
document.forms.length 返回当前页form表单数
document.anchors.length 返回当前页锚的数量
document.links.length 返回当前页联接的数量
document.onmousedown=x 单击鼠标触发事件
document.ondblclick=x 双击鼠标触发事件
defaultStatus window.status=defaultStatus; 将状态栏设置默认显示
function function xx(){...} 定义函数
isNumeric 判断是否是数字
innerHTML xx=对象.innerHTML 输入某对象标签中的html源代码
innerText divid.innerText=xx 将以div定位以id命名的对象值设为XX
location.reload(); 使本页刷新,target可等于一个刷新的网页
Math.random() 随机涵数,只能是0到1之间的数,如果要得到其它数,可以为*10,再取整
Math.floor(number) 将对象number转为整数,舍取所有小数
Math.min(1,2) 返回1,2哪个小
Math.max(1,2) 返回1,2哪个大
navigator.appName 返回当前浏览器名称
navigator.appVersion 返回当前浏览器版本号
navigator.appCodeName 返回当前浏览器代码名字
navigator.userAgent 返回当前浏览器用户代标志
onsubmit onsubmit="return(xx())" 使用函数返回值
opener opener.document.对象 控制原打开窗体对象
prompt xx=window.prompt("提示信息","预定值"); 输入语句
parent parent.框架名.对象 控制框架页面
return return false 返回值
random 随机参数(0至1之间)
reset() form.reset(); 使form表单内的数据重置
split("") string.split("") 将string对象字符以逗号隔开
submit() form对象.submit() 使form对象提交数据
String对象的 charAt(x)对象 反回指定对象的第多少位的字母
lastIndexOf("string") 从右到左询找指定字符,没有返回-1
indexOf("string") 从左到右询找指定字符,没有返回-1
LowerCase() 将对象全部转为小写
UpperCase() 将对象全部转为大写
substring(0,5) string.substring(x,x) 返回对象中从0到5的字符
setTimeout("function",time) 设置一个超时对象
setInterval("function",time) 设置一个超时对象
toLocaleString() x.toLocaleString() 从x时间对象中获取时间,以字符串型式存在
typeof(变量名) 检查变量的类型,值有:String,Boolean,Object,Function,Underfined
window.event.button==1/2/3 鼠标键左键等于1右键等于2两个键一起按为3
window.screen.availWidth 返回当前屏幕宽度(空白空间)
window.screen.availHeight 返回当前屏幕高度(空白空间)
window.screen.width 返回当前屏幕宽度(分辨率值)
window.screen.height 返回当前屏幕高度(分辨率值)
window.document.body.offsetHeight; 返回当前网页高度
window.document.body.offsetWidth; 返回当前网页宽度
window.resizeTo(0,0) 将窗口设置宽高
window.moveTo(0,0) 将窗口移到某位置
window.focus() 使当前窗口获得焦点
window.scroll(x,y) 窗口滚动条坐标,y控制上下移动,须与函数配合
window.open() window.open("地址","名称","属性")
属性:toolbar(工具栏),location(地址栏),directions,status(状态栏),
menubar(菜单栏),scrollbar(滚动条),resizable(改变大小), width(宽),height(高),fullscreen(全 屏),scrollbars(全屏时无滚动条无参 数,channelmode(宽屏),left(打开窗口x坐标),top(打开窗口y坐标)
window.location = 'view-source:' + window.location.href 应用事件查看网页源代码;
a=new Date(); //创建a为一个新的时期对象
y=a.getYear(); //y的值为从对象a中获取年份值 两位数年份
y1=a.getFullYear(); //获取全年份数 四位数年份
m=a.getMonth(); //获取月份值
d=a.getDate(); //获取日期值
d1=a.getDay(); //获取当前星期值
h=a.getHours(); //获取当前小时数
m1=a.getMinutes(); //获取当前分钟数
s=a.getSeconds(); //获取当前秒钟数
对象.style.fontSize="文字大小";
单位:mm/cm/in英寸/pc帕/pt点/px象素/em文字高
1in=1.25cm
1pc=12pt
1pt=1.2px(800*600分辩率下)
文本字体属性:
fontSize大小
family字体
color颜色
fontStyle风格,取值为normal一般,italic斜体,oblique斜体且加粗
fontWeight加粗,取值为100到900不等,900最粗,light,normal,bold
letterSpacing间距,更改文字间距离,取值为,1pt,10px,1cm
textDecoration:文字修饰;取值,none不修饰,underline下划线,overline上划线
background:文字背景颜色,
backgroundImage:背景图片,取值为图片的插入路径
点击网页正文函数调用触发器:
1.onClick 当对象被点击
2.onLoad 当网页打开,只能书写在body中
3.onUnload 当网页关闭或离开时,只能书写在body中
4.onmouseover 当鼠标悬于其上时
5.onmouseout 当鼠标离开对象时
6.onmouseup 当鼠标松开
7.onmousedown 当鼠标按下键
8.onFocus 当对象获取焦点时
9.onSelect 当对象的文本被选中时
10.onChange 当对象的内容被改变
11.onBlur 当对象失去焦点
onsubmit=return(ss())表单调用时返回的值
直线 border-bottom:1x solid black
虚线 border-bottom:1x dotted black
点划线 border-bottom:2x dashed black
双线 border-bottom:5x double black
槽状 border-bottom:1x groove black
脊状 border-bottom:1x ridge black
1.边缘高光glow(color=颜色,strength=亮光大小)
2.水平翻转fliph() 使对象水平翻转180度
3.垂直翻转flipv() 使对象垂直翻转180度
4.对象模糊blur(add=true/false direction=方向 strength=强度)
add指定是否按印象画派进行模糊direction模糊方向strength模糊强度
5.对象透明alpha(opaction=0-100,finishopacity=0-100,style=0/1/2/3)
opaction对象整体不透明值finishopacity当对象利用了渐透明时该项指定结束透明位置的不透明值style指定透明方式0为整体透明,1为线型透明,2为圆型透明,3为矩形透明
6.去除颜色chroma(color=颜色值)使对象中颜色与指定颜色相同区域透明
7.建立阴影dropshadow(color=阴影颜色,offx=水平向左偏离像素,offy=水平向下偏离像素)
8.去色gray()使对象呈灰度显示
9.负片效果invert()使对象呈底片效果
10.高光light()使对象呈黑色显示
11.遮盖mask(color=颜色)使整个对象以指定颜色进行蒙板一次
opacity 表透明度水平.0~100,0表全透明,100表完全不透明
finishopacity表想要设置的渐变透明效果.0~100.
style 表透明区的形状.0表统一形状.1表线形.2表放射形.3表长方形.
startx.starty表渐变透明效果的开始时X和Y坐标.
finishx,finishy渐变透明效果结束时x,y 的坐标.
add有来确定是否在模糊效果中使有原有目标.值为0,1.0表"否",1表"是".
direction设置模糊的方向.0度表垂直向上,45度为一个单位.默认值是向左270度.left,right,down,up.
strength 只能用整数来确定.代表有多少个像素的宽度将受到模糊影响.默认是5个.
color要透明的颜色.
offx,offy分别是x,y 方向阴影的偏移量.
positive指投影方式.0表透明像素生成阴影.1表只给出不透明像素生成阴影..
AddAmbient:加入包围的光源.
AddCone:加入锥形光源.
AddPoint加入点光源
Changcolor:改变光的颜色.
Changstrength:改变光源的强度.
Clear:清除所有的光源.
MoveLight:移动光源.
freq是波纹的频率,在指定在对象上一区需要产生多少个完事的波纹.
lightstrength可对于波纹增强光影的效果.显著0~100正整数,正弦波开始位置是0~360度.0表从0度开始,25表从90度开始.
strength表振幅大小.
hand style="cursor:hand"
crosshair style="cursor:crosshair"
text style="cursor:text"
wait style="cursor:wait"
default style="cursor:default"
help style="cursor:help"
e-resize style="cursor:e-resize"
ne-resize style="cursor:ne-resize"
n-resize style="cursor:n-resize"
nw-resize style="cursor:nw-resize"
w-resize style="cursor:w-resize"
s-resize style="cursor:s-resize"
sw-resize style="cursor:sw-resize "
se-resize style="cursor:se-resize"
auto style="cursor:auto"
现在ArthurXF本人正在搞PHP等技术培训,如果想学习的人可以跟我联系。另外培训的招生简章在这个网址,想了解的可以去看看。
PHP培训招生简章
closed 对象.closed 对象窗口是否已关闭true/false
clearTimeout(对象) 清除已设置的setTimeout对象
clearInterval(对象) 清除已设置的setInterval对象
confirm("提示信息") 弹出确认框,确定返回true取消返回false
cursor:样式 更改鼠标样式 hand crosshair text wait help default auto e/s/w/n-resize
event.clientX 返回最后一次点击鼠标X坐标值;
event.clientY 返回最后一次点击鼠标Y坐标值;
event.offsetX 返回当前鼠标悬停X坐标值
event.offsetY 返回当前鼠标悬停Y坐标值
document.write(document.lastModified) 网页最后一次更新时间
document.ondblclick=x 当双击鼠标产生事件
document.onmousedown=x 单击鼠标键产生事件
document.body.scrollTop; 返回和设置当前竖向滚动条的坐标值,须与函数配合,
document.body.scrollLeft; 返回和设置当前横向滚动务的坐标值,须与函数配合,
document.title document.title="message"; 当前窗口的标题栏文字
document.bgcolor document.bgcolor="颜色值"; 改变窗口背景颜色
document.Fgcolor document.Fgcolor="颜色值"; 改变正文颜色
document.linkcolor document.linkcolor="颜色值"; 改变超联接颜色
document.alinkcolor document.alinkcolor="颜色值"; 改变正点击联接的颜色
document.VlinkColor document.VlinkColor="颜色值"; 改变已访问联接的颜色
document.forms.length 返回当前页form表单数
document.anchors.length 返回当前页锚的数量
document.links.length 返回当前页联接的数量
document.onmousedown=x 单击鼠标触发事件
document.ondblclick=x 双击鼠标触发事件
defaultStatus window.status=defaultStatus; 将状态栏设置默认显示
function function xx(){...} 定义函数
isNumeric 判断是否是数字
innerHTML xx=对象.innerHTML 输入某对象标签中的html源代码
innerText divid.innerText=xx 将以div定位以id命名的对象值设为XX
location.reload(); 使本页刷新,target可等于一个刷新的网页
Math.random() 随机涵数,只能是0到1之间的数,如果要得到其它数,可以为*10,再取整
Math.floor(number) 将对象number转为整数,舍取所有小数
Math.min(1,2) 返回1,2哪个小
Math.max(1,2) 返回1,2哪个大
navigator.appName 返回当前浏览器名称
navigator.appVersion 返回当前浏览器版本号
navigator.appCodeName 返回当前浏览器代码名字
navigator.userAgent 返回当前浏览器用户代标志
onsubmit onsubmit="return(xx())" 使用函数返回值
opener opener.document.对象 控制原打开窗体对象
prompt xx=window.prompt("提示信息","预定值"); 输入语句
parent parent.框架名.对象 控制框架页面
return return false 返回值
random 随机参数(0至1之间)
reset() form.reset(); 使form表单内的数据重置
split("") string.split("") 将string对象字符以逗号隔开
submit() form对象.submit() 使form对象提交数据
String对象的 charAt(x)对象 反回指定对象的第多少位的字母
lastIndexOf("string") 从右到左询找指定字符,没有返回-1
indexOf("string") 从左到右询找指定字符,没有返回-1
LowerCase() 将对象全部转为小写
UpperCase() 将对象全部转为大写
substring(0,5) string.substring(x,x) 返回对象中从0到5的字符
setTimeout("function",time) 设置一个超时对象
setInterval("function",time) 设置一个超时对象
toLocaleString() x.toLocaleString() 从x时间对象中获取时间,以字符串型式存在
typeof(变量名) 检查变量的类型,值有:String,Boolean,Object,Function,Underfined
window.event.button==1/2/3 鼠标键左键等于1右键等于2两个键一起按为3
window.screen.availWidth 返回当前屏幕宽度(空白空间)
window.screen.availHeight 返回当前屏幕高度(空白空间)
window.screen.width 返回当前屏幕宽度(分辨率值)
window.screen.height 返回当前屏幕高度(分辨率值)
window.document.body.offsetHeight; 返回当前网页高度
window.document.body.offsetWidth; 返回当前网页宽度
window.resizeTo(0,0) 将窗口设置宽高
window.moveTo(0,0) 将窗口移到某位置
window.focus() 使当前窗口获得焦点
window.scroll(x,y) 窗口滚动条坐标,y控制上下移动,须与函数配合
window.open() window.open("地址","名称","属性")
属性:toolbar(工具栏),location(地址栏),directions,status(状态栏),
menubar(菜单栏),scrollbar(滚动条),resizable(改变大小), width(宽),height(高),fullscreen(全 屏),scrollbars(全屏时无滚动条无参 数,channelmode(宽屏),left(打开窗口x坐标),top(打开窗口y坐标)
window.location = 'view-source:' + window.location.href 应用事件查看网页源代码;
a=new Date(); //创建a为一个新的时期对象
y=a.getYear(); //y的值为从对象a中获取年份值 两位数年份
y1=a.getFullYear(); //获取全年份数 四位数年份
m=a.getMonth(); //获取月份值
d=a.getDate(); //获取日期值
d1=a.getDay(); //获取当前星期值
h=a.getHours(); //获取当前小时数
m1=a.getMinutes(); //获取当前分钟数
s=a.getSeconds(); //获取当前秒钟数
对象.style.fontSize="文字大小";
单位:mm/cm/in英寸/pc帕/pt点/px象素/em文字高
1in=1.25cm
1pc=12pt
1pt=1.2px(800*600分辩率下)
文本字体属性:
fontSize大小
family字体
color颜色
fontStyle风格,取值为normal一般,italic斜体,oblique斜体且加粗
fontWeight加粗,取值为100到900不等,900最粗,light,normal,bold
letterSpacing间距,更改文字间距离,取值为,1pt,10px,1cm
textDecoration:文字修饰;取值,none不修饰,underline下划线,overline上划线
background:文字背景颜色,
backgroundImage:背景图片,取值为图片的插入路径
点击网页正文函数调用触发器:
1.onClick 当对象被点击
2.onLoad 当网页打开,只能书写在body中
3.onUnload 当网页关闭或离开时,只能书写在body中
4.onmouseover 当鼠标悬于其上时
5.onmouseout 当鼠标离开对象时
6.onmouseup 当鼠标松开
7.onmousedown 当鼠标按下键
8.onFocus 当对象获取焦点时
9.onSelect 当对象的文本被选中时
10.onChange 当对象的内容被改变
11.onBlur 当对象失去焦点
onsubmit=return(ss())表单调用时返回的值
直线 border-bottom:1x solid black
虚线 border-bottom:1x dotted black
点划线 border-bottom:2x dashed black
双线 border-bottom:5x double black
槽状 border-bottom:1x groove black
脊状 border-bottom:1x ridge black
1.边缘高光glow(color=颜色,strength=亮光大小)
2.水平翻转fliph() 使对象水平翻转180度
3.垂直翻转flipv() 使对象垂直翻转180度
4.对象模糊blur(add=true/false direction=方向 strength=强度)
add指定是否按印象画派进行模糊direction模糊方向strength模糊强度
5.对象透明alpha(opaction=0-100,finishopacity=0-100,style=0/1/2/3)
opaction对象整体不透明值finishopacity当对象利用了渐透明时该项指定结束透明位置的不透明值style指定透明方式0为整体透明,1为线型透明,2为圆型透明,3为矩形透明
6.去除颜色chroma(color=颜色值)使对象中颜色与指定颜色相同区域透明
7.建立阴影dropshadow(color=阴影颜色,offx=水平向左偏离像素,offy=水平向下偏离像素)
8.去色gray()使对象呈灰度显示
9.负片效果invert()使对象呈底片效果
10.高光light()使对象呈黑色显示
11.遮盖mask(color=颜色)使整个对象以指定颜色进行蒙板一次
opacity 表透明度水平.0~100,0表全透明,100表完全不透明
finishopacity表想要设置的渐变透明效果.0~100.
style 表透明区的形状.0表统一形状.1表线形.2表放射形.3表长方形.
startx.starty表渐变透明效果的开始时X和Y坐标.
finishx,finishy渐变透明效果结束时x,y 的坐标.
add有来确定是否在模糊效果中使有原有目标.值为0,1.0表"否",1表"是".
direction设置模糊的方向.0度表垂直向上,45度为一个单位.默认值是向左270度.left,right,down,up.
strength 只能用整数来确定.代表有多少个像素的宽度将受到模糊影响.默认是5个.
color要透明的颜色.
offx,offy分别是x,y 方向阴影的偏移量.
positive指投影方式.0表透明像素生成阴影.1表只给出不透明像素生成阴影..
AddAmbient:加入包围的光源.
AddCone:加入锥形光源.
AddPoint加入点光源
Changcolor:改变光的颜色.
Changstrength:改变光源的强度.
Clear:清除所有的光源.
MoveLight:移动光源.
freq是波纹的频率,在指定在对象上一区需要产生多少个完事的波纹.
lightstrength可对于波纹增强光影的效果.显著0~100正整数,正弦波开始位置是0~360度.0表从0度开始,25表从90度开始.
strength表振幅大小.
hand style="cursor:hand"
crosshair style="cursor:crosshair"
text style="cursor:text"
wait style="cursor:wait"
default style="cursor:default"
help style="cursor:help"
e-resize style="cursor:e-resize"
ne-resize style="cursor:ne-resize"
n-resize style="cursor:n-resize"
nw-resize style="cursor:nw-resize"
w-resize style="cursor:w-resize"
s-resize style="cursor:s-resize"
sw-resize style="cursor:sw-resize "
se-resize style="cursor:se-resize"
auto style="cursor:auto"
现在ArthurXF本人正在搞PHP等技术培训,如果想学习的人可以跟我联系。另外培训的招生简章在这个网址,想了解的可以去看看。
PHP培训招生简章
JScript 语法错误
2007/06/04 01:07 ArthurXF
JScript 语法错误是指当 JScript 语句违反了 JScript 脚本语言的一条或多条语法规则时导致的错误。JScript 语法错误发生在程序编译阶段,在开始运行该程序之前。(错误发生在开发过程中),以下是32个语法错误
错误号 描述
十进制 十六进制 说明
1001 800A03E9 内存不足
1002 800A03EA 语法错误
1003 800A03EB 需要“:”
1004 800A03EC 需要“;”
1005 800A03ED 需要“(”
1006 800A03EE 需要“)”
1007 800A03EF 需要“]”
1008 800A03F0 需要“{”
1009 800A03F1 需要“}”
1010 800A03F2 需要标识符
1011 800A03F3 需要“=”
1012 800A03F4 需要“/”
1013 800A03F5 无效数
1014 800A03F6 非法字符
1015 800A03F7 字符串常数未结束
1016 800A03F8 注释未结束
1018 800A03FA 函数外有 ’return’ 语句
1019 800A03FB 在循环外不能有“break”
1020 800A03FC 在循环外不能有“continue”
1023 800A03FF 需要十六进制数
1024 800A0400 需要“while”
1025 800A0401 标签定义重复
1026 800A0402 未找到标签
1027 800A0403 一条 “switch” 语句中只能有一个 “default”
1028 800A0404 需要标识符、字符串或者数字
1029 800A0405 需要“@end”
1030 800A0406 条件编译已关闭
1031 800A0407 需要常数
1032 800A0408 需要“@”
1033 800A0409 需要“catch”
1034 800A040A 需要“var”
1035 800A040B “Throw”的后面必须跟有一个表达式,且在同一源代码行上
JScript 运行时错误
JScript 运行时错误是指当 JScript 脚本试图执行一个系统不能运行的动作时导致的错误。当正在运行脚本、计算变量表达式、或者正在动态分配内存时出现JScript 运行时错误时。
以下是76个运行时错误
错误号 描述
十进制 十六进制 说明
5 800A0005 非法过程调用或参数
6 800A0006 溢出
7 800A0007 内存不足
9 800A0009 下标超界
10 800A000A 此数组被固定或临时锁定
11 800A000B 零除错误
13 800A000D 类型失配
14 800A000E 串空间不足
17 800A0011 不能执行所请求的操作
28 800A001C 栈空间不足
35 800A0023 子过程或函数未找到
48 800A0030 装载DLL出错
51 800A0033 内部出错
52 800A0034 坏文件名或数
53 800A0035 文件未找到
54 800A0036 坏文件模式
55 800A0037 文件已经打开
57 800A0039 设备I/O错误
58 800A003A 文件已经存在
61 800A003D 磁盘空间已满
62 800A003E 输入超出文件尾
67 800A0043 文件太多
68 800A0044 设备不可用
70 800A0046 权限禁用
71 800A0047 磁盘未准备好
74 800A004A 不能用不同的驱动重命名
75 800A004B 路径/文件访问错误
76 800A004C 路径未找到
91 800A005B 对象变量或With块变量未设置
92 800A005C For循环未初始化
94 800A005E Null使用无效
322 800A0042 不能建立所需的临时文件
424 800A01A8 需要对象
429 800A01A9 Automation服务器不能建立对象
430 800A01AE 类不支持Automation
432 800A01B0 在Automation操作中找不到文件名或类名
438 800A01B6 对象不支持这个属性或方法
440 800A01B8 Automation错误
445 800A01BD 对象不支持这个动作
446 800A01BE 对象不支持指定的参数
447 800A01BF 对象不支持当前区域设置
448 800A01C0 指定的参数未找到
449 800A01C1 参数不可选
450 800A01C2 错误的参数数目或非法属性分配
451 800A01C3 对象不是一个集合
453 800A01C5 指定的dll函数未找到
458 800A01CA 变量使用了一个Jscript不支持的Automation类型
462 800A01CE 远程服务器机器不存在或不可用
501 800A01F5 不能分配给变量
502 800A01F6 对象对于脚本不安全
503 800A01F7 对象对于初始化不安全
504 800A01F8 对象对建立不安全
5000 800A1388 不能分配给“this”
5001 800A1389 需要 Number 类型
5002 800A138A 需要 Function 对象
5003 800A138B 不能给函数返回值赋值
5004 800A138C 不能索引对象
5005 800A138D 需要 String
5006 800A138E 需要 Date 对象
5007 800A138F 需要 Object 类型
5008 800A1390 非法赋值
5009 800A1391 未定义标识符
5010 800A1392 需要 Boolean
5011 800A1393 不能执行来自一个自由脚本的代码
5012 800A1394 需要对象的成员
5013 800A1395 需要 VBArray
5014 800A1396 需要 JScript 对象
5015 800A1397 需要 Enumerator 对象
5016 800A1398 需要正则表达式对象
5017 800A1399 正则表达式语法错误
5018 800A139A 未预期的限定符
5019 800A139B 正则表达式中缺少“]”
5020 800A139C 正则表达式中缺少“)”
5021 800A139D 字符集范围无效
5022 800A139E 异常抛出,但无法抓住
5023 800A139F 函数没有合法的 Prototype (原型)对象
5024 800A13A0 待解码的 URI 包含有非法字符
5025 800A13A1 待解码的 URI 编码非法
5026 800A13A2 小数部分的位数越界
5027 800A13A3 精度越界
5028 800A13A4 需要 Array 或 arguments 对象
5029 800A13A5 数组长度必须为一有限正整数
5030 800A13A6 必须赋给数组长度一个有限正数
错误号 描述
十进制 十六进制 说明
1001 800A03E9 内存不足
1002 800A03EA 语法错误
1003 800A03EB 需要“:”
1004 800A03EC 需要“;”
1005 800A03ED 需要“(”
1006 800A03EE 需要“)”
1007 800A03EF 需要“]”
1008 800A03F0 需要“{”
1009 800A03F1 需要“}”
1010 800A03F2 需要标识符
1011 800A03F3 需要“=”
1012 800A03F4 需要“/”
1013 800A03F5 无效数
1014 800A03F6 非法字符
1015 800A03F7 字符串常数未结束
1016 800A03F8 注释未结束
1018 800A03FA 函数外有 ’return’ 语句
1019 800A03FB 在循环外不能有“break”
1020 800A03FC 在循环外不能有“continue”
1023 800A03FF 需要十六进制数
1024 800A0400 需要“while”
1025 800A0401 标签定义重复
1026 800A0402 未找到标签
1027 800A0403 一条 “switch” 语句中只能有一个 “default”
1028 800A0404 需要标识符、字符串或者数字
1029 800A0405 需要“@end”
1030 800A0406 条件编译已关闭
1031 800A0407 需要常数
1032 800A0408 需要“@”
1033 800A0409 需要“catch”
1034 800A040A 需要“var”
1035 800A040B “Throw”的后面必须跟有一个表达式,且在同一源代码行上
JScript 运行时错误
JScript 运行时错误是指当 JScript 脚本试图执行一个系统不能运行的动作时导致的错误。当正在运行脚本、计算变量表达式、或者正在动态分配内存时出现JScript 运行时错误时。
以下是76个运行时错误
错误号 描述
十进制 十六进制 说明
5 800A0005 非法过程调用或参数
6 800A0006 溢出
7 800A0007 内存不足
9 800A0009 下标超界
10 800A000A 此数组被固定或临时锁定
11 800A000B 零除错误
13 800A000D 类型失配
14 800A000E 串空间不足
17 800A0011 不能执行所请求的操作
28 800A001C 栈空间不足
35 800A0023 子过程或函数未找到
48 800A0030 装载DLL出错
51 800A0033 内部出错
52 800A0034 坏文件名或数
53 800A0035 文件未找到
54 800A0036 坏文件模式
55 800A0037 文件已经打开
57 800A0039 设备I/O错误
58 800A003A 文件已经存在
61 800A003D 磁盘空间已满
62 800A003E 输入超出文件尾
67 800A0043 文件太多
68 800A0044 设备不可用
70 800A0046 权限禁用
71 800A0047 磁盘未准备好
74 800A004A 不能用不同的驱动重命名
75 800A004B 路径/文件访问错误
76 800A004C 路径未找到
91 800A005B 对象变量或With块变量未设置
92 800A005C For循环未初始化
94 800A005E Null使用无效
322 800A0042 不能建立所需的临时文件
424 800A01A8 需要对象
429 800A01A9 Automation服务器不能建立对象
430 800A01AE 类不支持Automation
432 800A01B0 在Automation操作中找不到文件名或类名
438 800A01B6 对象不支持这个属性或方法
440 800A01B8 Automation错误
445 800A01BD 对象不支持这个动作
446 800A01BE 对象不支持指定的参数
447 800A01BF 对象不支持当前区域设置
448 800A01C0 指定的参数未找到
449 800A01C1 参数不可选
450 800A01C2 错误的参数数目或非法属性分配
451 800A01C3 对象不是一个集合
453 800A01C5 指定的dll函数未找到
458 800A01CA 变量使用了一个Jscript不支持的Automation类型
462 800A01CE 远程服务器机器不存在或不可用
501 800A01F5 不能分配给变量
502 800A01F6 对象对于脚本不安全
503 800A01F7 对象对于初始化不安全
504 800A01F8 对象对建立不安全
5000 800A1388 不能分配给“this”
5001 800A1389 需要 Number 类型
5002 800A138A 需要 Function 对象
5003 800A138B 不能给函数返回值赋值
5004 800A138C 不能索引对象
5005 800A138D 需要 String
5006 800A138E 需要 Date 对象
5007 800A138F 需要 Object 类型
5008 800A1390 非法赋值
5009 800A1391 未定义标识符
5010 800A1392 需要 Boolean
5011 800A1393 不能执行来自一个自由脚本的代码
5012 800A1394 需要对象的成员
5013 800A1395 需要 VBArray
5014 800A1396 需要 JScript 对象
5015 800A1397 需要 Enumerator 对象
5016 800A1398 需要正则表达式对象
5017 800A1399 正则表达式语法错误
5018 800A139A 未预期的限定符
5019 800A139B 正则表达式中缺少“]”
5020 800A139C 正则表达式中缺少“)”
5021 800A139D 字符集范围无效
5022 800A139E 异常抛出,但无法抓住
5023 800A139F 函数没有合法的 Prototype (原型)对象
5024 800A13A0 待解码的 URI 包含有非法字符
5025 800A13A1 待解码的 URI 编码非法
5026 800A13A2 小数部分的位数越界
5027 800A13A3 精度越界
5028 800A13A4 需要 Array 或 arguments 对象
5029 800A13A5 数组长度必须为一有限正整数
5030 800A13A6 必须赋给数组长度一个有限正数
1. 两只青蛙相爱了,结婚后生了一个蛤嫫,公青蛙见状大怒说:贱人,怎么回事 母青蛙哭着说:他爹,认识你之前我整过容。
2. 小驴问老驴:为啥咱们天天吃干草,而奶牛顿顿精饲料 老驴叹到:咱爷们比不了,我们是靠跑腿吃饭,人家是靠胸脯吃饭!
3. 鸭子和螃蟹赛跑,一起到达终点,难分胜负,裁判说:你们来个剪刀石头布吧 鸭子大怒:妈的,算计我?我一出是布,他总是剪刀。
4. 狗对熊说:嫁给我吧,嫁给我你会幸福。熊说:才不嫁呢,嫁给你只会生狗熊,我要嫁给猫,生熊猫那才尊贵呢!
5. 老鳖调戏河蚌,被咬,老鳖忍痛拖着河蚌来回爬,青蛙见了敬佩的说:乖乖,鳖哥混大了,出入都加着公文包。
6. 蜜蜂狂追蝴蝶,蝴蝶却嫁给了蜗牛。蜜蜂不解:他哪里比我好 蝴蝶回答:人家好歹有自己的房子,哪像你住在集体宿舍。
现在ArthurXF本人正在搞PHP等技术培训,如果想学习的人可以跟我联系。另外培训的招生简章在这个网址,想了解的可以去看看。也可以联系我QQ:29011218。
PHP培训招生简章
2. 小驴问老驴:为啥咱们天天吃干草,而奶牛顿顿精饲料 老驴叹到:咱爷们比不了,我们是靠跑腿吃饭,人家是靠胸脯吃饭!
3. 鸭子和螃蟹赛跑,一起到达终点,难分胜负,裁判说:你们来个剪刀石头布吧 鸭子大怒:妈的,算计我?我一出是布,他总是剪刀。
4. 狗对熊说:嫁给我吧,嫁给我你会幸福。熊说:才不嫁呢,嫁给你只会生狗熊,我要嫁给猫,生熊猫那才尊贵呢!
5. 老鳖调戏河蚌,被咬,老鳖忍痛拖着河蚌来回爬,青蛙见了敬佩的说:乖乖,鳖哥混大了,出入都加着公文包。
6. 蜜蜂狂追蝴蝶,蝴蝶却嫁给了蜗牛。蜜蜂不解:他哪里比我好 蝴蝶回答:人家好歹有自己的房子,哪像你住在集体宿舍。
现在ArthurXF本人正在搞PHP等技术培训,如果想学习的人可以跟我联系。另外培训的招生简章在这个网址,想了解的可以去看看。也可以联系我QQ:29011218。
PHP培训招生简章
1.真正爱你的男人,一下子说不出真正爱你的理由,只知道自己顾不上注意别人。
2.真正爱你的男人,其实总惹你生气,你却发觉不了他到底做错了什么。
3.真正爱你的男人,很少当面赞美你,可是心里肯定你是他最棒的。
4.真正爱你的男人,会在你忘记回复他短信时狠狠地说你一顿。
5.真正爱你的男人,只可能在你一个人的面前流眼泪,当你触摸到他时,也触摸到了那颗只为你跳动的心。
6.真正爱你的男人,会默默地记住你不经意说过的话,在某时某刻重复它们。
7.真正爱你的男人,不会轻易做出承诺,因为他想让自己成为你心中说话最算话的男子汉,只想给你最可*最安全的幸福。
8.真正爱你的男人,总告诉你不要胡思乱想,因为其实他在为你们谋划着最美丽真实的未来。同时让你无忧无虑地等待他要给你的惊喜。
9.真正爱你的男人,可能不像你一样清楚地记得某些纪念日,他觉得爱你是每时每刻的,并不是*这几天简单的日子。
10.真正爱你的男人,不会轻易对你当面说\"我爱你\",因为他为你做过的每件事都已经这么说了。除非在非常时刻,为了不让你无端地误解他。
11.真正爱你的男人,总觉得有些话只说一遍就够了,因为你已经了解他的心。说得多了,他会觉得不珍贵。
12.真正爱你的男人,如果他去机场接你,不会像你期望的那样捧着玫瑰大声叫\"亲爱的\",只是自然地提过你的行李,然后想用眼睛抱紧你似的心疼地说,怎么瘦得像豆芽菜了?
13.真正爱你的男人,当你发脾气时,只会不做声地听你把火发完,然后慢慢地说,你明天有课吗?早点睡吧。
14.真正爱你的男人,不懂当你生气挂掉电话后应该立即打来,过了若干小时后会发条短信问你消气了没有?如果你质问他为何这么久才打来,他会理直气壮的说,你生气时我的解释一定没有用,等你的火消了,我的解释才有效果。
15.真正爱你的男人,总是叫你小姑娘,可是每次他做什么重大的决定,却总想先听听你的建议。
16.真正爱你的男人,不喜欢玩具小毛熊,却一直把你送他的小熊放在床头。
17.真正爱你的男人,当和你发生争执时,总是控制不了地先妥协,先承认\"我错了\",过后发来短信以\"神经病\"开头,以\"宝贝\"结尾。事实上你也清楚,这次是你有点无理取闹。
18.真正爱你的男人,很想很想你时,也会买玫瑰送你,傻傻地等着你,却不知道自己捧的是月季。没关系,他的心里送的是玫瑰。
19.真正爱你的男人,嘴巴都不甜,但是他的吻能传递他所有的热情。
20.真正爱你的男人,当听到你对他讲很\"酸\"的话时,他反而会装得很正经,其实心里很甜很甜。
21.真正爱你的男人,如果不能经常见到你,他会让自己忙碌起来,为了不去想你,因为他知道一想你将会一发不可收拾
2.真正爱你的男人,其实总惹你生气,你却发觉不了他到底做错了什么。
3.真正爱你的男人,很少当面赞美你,可是心里肯定你是他最棒的。
4.真正爱你的男人,会在你忘记回复他短信时狠狠地说你一顿。
5.真正爱你的男人,只可能在你一个人的面前流眼泪,当你触摸到他时,也触摸到了那颗只为你跳动的心。
6.真正爱你的男人,会默默地记住你不经意说过的话,在某时某刻重复它们。
7.真正爱你的男人,不会轻易做出承诺,因为他想让自己成为你心中说话最算话的男子汉,只想给你最可*最安全的幸福。
8.真正爱你的男人,总告诉你不要胡思乱想,因为其实他在为你们谋划着最美丽真实的未来。同时让你无忧无虑地等待他要给你的惊喜。
9.真正爱你的男人,可能不像你一样清楚地记得某些纪念日,他觉得爱你是每时每刻的,并不是*这几天简单的日子。
10.真正爱你的男人,不会轻易对你当面说\"我爱你\",因为他为你做过的每件事都已经这么说了。除非在非常时刻,为了不让你无端地误解他。
11.真正爱你的男人,总觉得有些话只说一遍就够了,因为你已经了解他的心。说得多了,他会觉得不珍贵。
12.真正爱你的男人,如果他去机场接你,不会像你期望的那样捧着玫瑰大声叫\"亲爱的\",只是自然地提过你的行李,然后想用眼睛抱紧你似的心疼地说,怎么瘦得像豆芽菜了?
13.真正爱你的男人,当你发脾气时,只会不做声地听你把火发完,然后慢慢地说,你明天有课吗?早点睡吧。
14.真正爱你的男人,不懂当你生气挂掉电话后应该立即打来,过了若干小时后会发条短信问你消气了没有?如果你质问他为何这么久才打来,他会理直气壮的说,你生气时我的解释一定没有用,等你的火消了,我的解释才有效果。
15.真正爱你的男人,总是叫你小姑娘,可是每次他做什么重大的决定,却总想先听听你的建议。
16.真正爱你的男人,不喜欢玩具小毛熊,却一直把你送他的小熊放在床头。
17.真正爱你的男人,当和你发生争执时,总是控制不了地先妥协,先承认\"我错了\",过后发来短信以\"神经病\"开头,以\"宝贝\"结尾。事实上你也清楚,这次是你有点无理取闹。
18.真正爱你的男人,很想很想你时,也会买玫瑰送你,傻傻地等着你,却不知道自己捧的是月季。没关系,他的心里送的是玫瑰。
19.真正爱你的男人,嘴巴都不甜,但是他的吻能传递他所有的热情。
20.真正爱你的男人,当听到你对他讲很\"酸\"的话时,他反而会装得很正经,其实心里很甜很甜。
21.真正爱你的男人,如果不能经常见到你,他会让自己忙碌起来,为了不去想你,因为他知道一想你将会一发不可收拾
转载架构 LVS 系统相关软件介绍
2007/05/25 12:30 ArthurXF
这里的所实现的负载均衡是以www.linuxvirtualserver.org项目的ipvsadm为原型,配合以其他的一些开源软件来实现的。
在这里,我们需要四个组件:
· iptables
· ipvsadm, (http://www.linuxvirtualserver.org)
· keepalived, (http://keepalived.sourceforge.net)
· heartbeat , (http://www.linux-ha.org)
1,ipchains
ipchains 是Linux下很有名的Firewall软件,iptables在Linux的内核中对进出Linux的数据进行控制,包括数据包的过滤和伪装等。在 Linux的内核中有三条标准控制数据包去向的链:input , forward , output 。input是对进入Linux的数据包进行控制,forward是对路由的数据包进行控制,output是对出Linux的数据包进行控制。在我们的这个方案中iptables的作用是将用户的请求数据交给ipvsadm来处理,并由ipvsadm决定用户的请求数据最终由哪台web服务器来相应。大家也可参考IPTABLES-HOWTO。在此不多说。
2,ipvsadm(www.linuxvirtualserver.org)
ipvsadm是由中国的年轻黑客维护的,他是从ipportfw发展而来的。ipvsadm是在Linux的内核中实现的,他在Linux的内核中监测需要路由的IP数据包,ipvsadm根据用户设置的条件对数据包进行相应的操作。了解ipchains的用户知道,在Linux的内核中有三条控制数据包去向的链:input , forward , output,ipvsadm是在forward的过程中对数据包进行操作的。ipvsadm的作用是为用户选择合适的web服务器。LLB在选择服务器时有四种不同的规则,这四种规则用于选择哪台服务器处理用户的请求。这四种规则是:Round-Robin (RR)、 Weighted Round-Robin (WRR)、 Least-Connection (LC)、 Weighted Least-Connection (WLC)。这四种规则各有自己的适应环境。
Round-Robin:
如果您的LLB选用的是这种算法,她会将数据包均匀的分发给各台服务器,他把所有的服务器放在相等的地位上,而不会实际的去考虑各台服务器的差异,如响应时间、session数等!例如您有ABC三台服务器,那么LLB分发数据包的顺序是......ABCABCABC.....
Round-Robin算法的好处是简单、占用系统资源少,缺点是无法检测哪台服务器有更高的响应速度、更少的连接,所以他非常适合服务器性能相当的环境。
Weighted Round-Robin
这种规则适用于用户扩展系统时,因为这是集群中的服务器的性能会有较大的差别,为每一个服务器定义一个参数是必要的。
这是一种带参数的Round-Robin的算法,参数的名字叫Weighed。您可以根据您的服务器的处理能力来为每一台服务器分配一个Weighted 值,值越高其优先程度越高,默认值是1。例如:你有三台服务器,分别为A:486、B:奔腾、C:奔腾2,你可以为他们分配Weighted值为:1、 2、3,则按照Weighted Round-Robin的算法处理数据包的服务器的顺序是:CCCBBBA
Round-Robin可以说是Weighted Round-Robin的一种特殊情况,既所有的服务器有相同的Weighted值。
Least-Connection
这是一种动态算法,LLB将根据每台服务器当前的连接数目来转发数据包,具有最少连接的服务器将处理下一个请求。这一种算法能很好的分配各种流量,对于突发的请求或大量的请求能够做出比较平滑的处理,不会产生将请求的数据发往同一台服务器的情况。
Weighted Least-Connection
这种算法是Least-Connection Scheduling的一种扩展,她为每一台服务器分配一个weighted值,然后根据这个值和每台服务器当前状态下的连接数来决定由谁来处理用户的请求。可以举一个例子来说明她的工作原理:
假设有n台服务器,每一台服务器的weighted值为Wi ( i=1,2. . . n) ,session为Ci (i=1,...n), ALL-CONNECTIONS 是所有服务器的session和,既C1+C2+....+Cn.,那么按照下面的算法,服务器j将处理下一个请求:
( Cj/ALL-CONNECTIONS )/Wj=min { (Ci/ALL-CONNECTIONS)/Wi } ( i=1,..,n)
也可以简化为:Cj/Wj = min { Ci/Wi } (i=1,..,n)
我们可以对这四种算法做一个比较,Round-Robin和Weighted Round-Robin是静态的方法,对于服务器的当前状态不能做出很好的估计,因此数据的分配并不是最合理。
但在服务器的性能相当时Round-Robin却是最好的选择。Least-Connection 和Weighted Least-Connection是动态的方法,可以对服务器的当前状态做出比较合理的估计,这样在平衡各台服务器时,可以做出比较优化的选择。
3,Keepalived
keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。
Layer3,4&5工作在IP/TCP协议栈的IP层,TCP层,及应用层,原理分别如下:
Layer3:Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器发送一个ICMP的数据包(既我们平时用的Ping程序),如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。Layer3的方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。在本文中将采用这种方式。
Layer4:如果您理解了Layer3的方式,Layer4就容易了。Layer4主要以TCP端口的状态来决定服务器工作正常与否。如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除。
Layer5:Layer5就是工作在具体的应用层了,比Layer3,Layer4要复杂一点,在网络上占用的带宽也要大一些。 Keepalived将根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则Keepalived将把服务器从服务器群中剔除。
4,Heartbeat
heartbeat是一种心跳检测机制。他可以让两台服务器(Master Server 和Slave Server)互为备份。Heartbeat的中文是“心跳检测”。Slave Server利用heartbeat来检测Master Master的当前状态,当Master Server不能工作时(如:down机)Slave Server通过heartbeat来接管Master Server的所有工作,这个接管过程在10秒以内完成,对用户来说没有什么察觉。Heartbeat中包含一个IP take over(IP 地址接管)的功能,此功能是通过ARP欺骗的手段来完成的。
现在ArthurXF本人正在搞PHP等技术培训,如果想学习的人可以跟我联系。另外培训的招生简章在这个网址,想了解的可以去看看。加我QQ:29011218交流也可。
PHP培训招生简章
在这里,我们需要四个组件:
· iptables
· ipvsadm, (http://www.linuxvirtualserver.org)
· keepalived, (http://keepalived.sourceforge.net)
· heartbeat , (http://www.linux-ha.org)
1,ipchains
ipchains 是Linux下很有名的Firewall软件,iptables在Linux的内核中对进出Linux的数据进行控制,包括数据包的过滤和伪装等。在 Linux的内核中有三条标准控制数据包去向的链:input , forward , output 。input是对进入Linux的数据包进行控制,forward是对路由的数据包进行控制,output是对出Linux的数据包进行控制。在我们的这个方案中iptables的作用是将用户的请求数据交给ipvsadm来处理,并由ipvsadm决定用户的请求数据最终由哪台web服务器来相应。大家也可参考IPTABLES-HOWTO。在此不多说。
2,ipvsadm(www.linuxvirtualserver.org)
ipvsadm是由中国的年轻黑客维护的,他是从ipportfw发展而来的。ipvsadm是在Linux的内核中实现的,他在Linux的内核中监测需要路由的IP数据包,ipvsadm根据用户设置的条件对数据包进行相应的操作。了解ipchains的用户知道,在Linux的内核中有三条控制数据包去向的链:input , forward , output,ipvsadm是在forward的过程中对数据包进行操作的。ipvsadm的作用是为用户选择合适的web服务器。LLB在选择服务器时有四种不同的规则,这四种规则用于选择哪台服务器处理用户的请求。这四种规则是:Round-Robin (RR)、 Weighted Round-Robin (WRR)、 Least-Connection (LC)、 Weighted Least-Connection (WLC)。这四种规则各有自己的适应环境。
Round-Robin:
如果您的LLB选用的是这种算法,她会将数据包均匀的分发给各台服务器,他把所有的服务器放在相等的地位上,而不会实际的去考虑各台服务器的差异,如响应时间、session数等!例如您有ABC三台服务器,那么LLB分发数据包的顺序是......ABCABCABC.....
Round-Robin算法的好处是简单、占用系统资源少,缺点是无法检测哪台服务器有更高的响应速度、更少的连接,所以他非常适合服务器性能相当的环境。
Weighted Round-Robin
这种规则适用于用户扩展系统时,因为这是集群中的服务器的性能会有较大的差别,为每一个服务器定义一个参数是必要的。
这是一种带参数的Round-Robin的算法,参数的名字叫Weighed。您可以根据您的服务器的处理能力来为每一台服务器分配一个Weighted 值,值越高其优先程度越高,默认值是1。例如:你有三台服务器,分别为A:486、B:奔腾、C:奔腾2,你可以为他们分配Weighted值为:1、 2、3,则按照Weighted Round-Robin的算法处理数据包的服务器的顺序是:CCCBBBA
Round-Robin可以说是Weighted Round-Robin的一种特殊情况,既所有的服务器有相同的Weighted值。
Least-Connection
这是一种动态算法,LLB将根据每台服务器当前的连接数目来转发数据包,具有最少连接的服务器将处理下一个请求。这一种算法能很好的分配各种流量,对于突发的请求或大量的请求能够做出比较平滑的处理,不会产生将请求的数据发往同一台服务器的情况。
Weighted Least-Connection
这种算法是Least-Connection Scheduling的一种扩展,她为每一台服务器分配一个weighted值,然后根据这个值和每台服务器当前状态下的连接数来决定由谁来处理用户的请求。可以举一个例子来说明她的工作原理:
假设有n台服务器,每一台服务器的weighted值为Wi ( i=1,2. . . n) ,session为Ci (i=1,...n), ALL-CONNECTIONS 是所有服务器的session和,既C1+C2+....+Cn.,那么按照下面的算法,服务器j将处理下一个请求:
( Cj/ALL-CONNECTIONS )/Wj=min { (Ci/ALL-CONNECTIONS)/Wi } ( i=1,..,n)
也可以简化为:Cj/Wj = min { Ci/Wi } (i=1,..,n)
我们可以对这四种算法做一个比较,Round-Robin和Weighted Round-Robin是静态的方法,对于服务器的当前状态不能做出很好的估计,因此数据的分配并不是最合理。
但在服务器的性能相当时Round-Robin却是最好的选择。Least-Connection 和Weighted Least-Connection是动态的方法,可以对服务器的当前状态做出比较合理的估计,这样在平衡各台服务器时,可以做出比较优化的选择。
3,Keepalived
keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。
Layer3,4&5工作在IP/TCP协议栈的IP层,TCP层,及应用层,原理分别如下:
Layer3:Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器发送一个ICMP的数据包(既我们平时用的Ping程序),如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。Layer3的方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。在本文中将采用这种方式。
Layer4:如果您理解了Layer3的方式,Layer4就容易了。Layer4主要以TCP端口的状态来决定服务器工作正常与否。如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除。
Layer5:Layer5就是工作在具体的应用层了,比Layer3,Layer4要复杂一点,在网络上占用的带宽也要大一些。 Keepalived将根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则Keepalived将把服务器从服务器群中剔除。
4,Heartbeat
heartbeat是一种心跳检测机制。他可以让两台服务器(Master Server 和Slave Server)互为备份。Heartbeat的中文是“心跳检测”。Slave Server利用heartbeat来检测Master Master的当前状态,当Master Server不能工作时(如:down机)Slave Server通过heartbeat来接管Master Server的所有工作,这个接管过程在10秒以内完成,对用户来说没有什么察觉。Heartbeat中包含一个IP take over(IP 地址接管)的功能,此功能是通过ARP欺骗的手段来完成的。
现在ArthurXF本人正在搞PHP等技术培训,如果想学习的人可以跟我联系。另外培训的招生简章在这个网址,想了解的可以去看看。加我QQ:29011218交流也可。
PHP培训招生简章