Apr
11
今天在myeclipse中打开jsp文件时总是出现javaw.exe r6025 pure virtual function call错误,但是出错是有规律的,只有打开一个index.jsp时才出错,到网上搜索没有找到解决方法,但能确定是因为使用了iframe标签的原因,经过自己测试把iframe标签去掉确实不会出错,同时我发现我的另一个后台的index.jsp用eclipse打开时没有出错,这个文件代码是抄来的,呵呵,发现对方在iframe标签前有这么一句话
我在自己的新页面中的iframe标签前添加上这句话后,果然不再报错了,至于原因为什么?不知道,但是问题解决了,估计是什么bug之类的吧。记录到这里供大家参考。因为我看网上还是有不少朋友遇到这个问题,但是貌似都没有解决,我就不在各位的论坛进行答复了,呵呵,希望大家能搜到我这篇文章吧。
我特意把文章中的有关r6025错误的位置加了粗体,以便大家能更好得搜到这篇文章。同时希望知道所以然的朋友能在此留言告知原因。
<img width="0" height="0"/>
我在自己的新页面中的iframe标签前添加上这句话后,果然不再报错了,至于原因为什么?不知道,但是问题解决了,估计是什么bug之类的吧。记录到这里供大家参考。因为我看网上还是有不少朋友遇到这个问题,但是貌似都没有解决,我就不在各位的论坛进行答复了,呵呵,希望大家能搜到我这篇文章吧。
我特意把文章中的有关r6025错误的位置加了粗体,以便大家能更好得搜到这篇文章。同时希望知道所以然的朋友能在此留言告知原因。
Apr
9
1.List转换成为数组。(这里的List是实体是ArrayList)调用ArrayList的toArray方法。
toArray
如果指定的数组能容纳列表并有剩余空间(即数组的元素比列表的多),那么会将数组中紧跟在集合末尾的元素设置为 null。这对确定列表的长度很有用,但只 在调用方知道列表中不包含任何 null 元素时才有用。
指定者:
指定者:
覆盖:
参数:
a - 要存储列表元素的数组,如果它足够大的话;否则,它是一个为存储列表元素而分配的、具有相同运行时类型的新数组。
返回:
包含列表元素的数组。
抛出:
ArrayStoreException - 如果 a 的运行时类型不是此列表中每个元素的运行时类型的超类型。
具体用法:
List list = new ArrayList();
list.add("1");
list.add("2");
final int size = list.size();
String[] arr = (String[])list.toArray(new String[size]);
2.数组转换成为List。
调用Arrays的asList方法.
asList
此方法还提供了一个创建固定长度的列表的便捷方法,该列表被初始化为包含多个元素:
List stooges = Arrays.asList("Larry", "Moe", "Curly");
参数:
a - 支持列表的数组。
返回:
指定数组的列表视图。
另请参见:
Collection.toArray()
具体用法:
String[] arr = new String[] {"1", "2"};
List list = Arrays.asList(arr);
toArray
public <T> T[] toArray(T[] a)
返回一个按照正确的顺序包含此列表中所有元素的数组;返回数组的运行时类型就是指定数组的运行时类型。如果列表能放入指定的数组,则返回放入此列表元素的数组。否则,将根据指定数组的运行时类型和此列表的大小分配一个新的数组。如果指定的数组能容纳列表并有剩余空间(即数组的元素比列表的多),那么会将数组中紧跟在集合末尾的元素设置为 null。这对确定列表的长度很有用,但只 在调用方知道列表中不包含任何 null 元素时才有用。
指定者:
接口 Collection<E> 中的 toArray
指定者:
接口 List<E> 中的 toArray
覆盖:
类 AbstractCollection<E> 中的 toArray
参数:
a - 要存储列表元素的数组,如果它足够大的话;否则,它是一个为存储列表元素而分配的、具有相同运行时类型的新数组。
返回:
包含列表元素的数组。
抛出:
ArrayStoreException - 如果 a 的运行时类型不是此列表中每个元素的运行时类型的超类型。
具体用法:
List list = new ArrayList();
list.add("1");
list.add("2");
final int size = list.size();
String[] arr = (String[])list.toArray(new String[size]);
2.数组转换成为List。
调用Arrays的asList方法.
asList
public static <T> List<T> asList(T... a)
返回一个受指定数组支持的固定大小的列表。(对返回列表的更改会“直写”到数组。)此方法同 Collection.toArray 一起,充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。返回的列表是可序列化的,并且实现了 RandomAccess。 此方法还提供了一个创建固定长度的列表的便捷方法,该列表被初始化为包含多个元素:
List stooges = Arrays.asList("Larry", "Moe", "Curly");
参数:
a - 支持列表的数组。
返回:
指定数组的列表视图。
另请参见:
Collection.toArray()
具体用法:
String[] arr = new String[] {"1", "2"};
List list = Arrays.asList(arr);
Apr
9
基本数据类型数组直接赋值
如int [] arr = new int[3];
arr[0]=1;
arr[1]=2;
arr[2]=3;
也可以初始化int [] arr={1,2,3};
引用数据类型
String [] strArr = new String[3];
strArr[0]=new String("a");
strArr[1]=new String("b");
strArr[2]=new String("c");
也可以
String [] strArr={"a","b","c"};
String 类型的对象有length()方法
String[] 数组类型有length 属性
如int [] arr = new int[3];
arr[0]=1;
arr[1]=2;
arr[2]=3;
也可以初始化int [] arr={1,2,3};
引用数据类型
String [] strArr = new String[3];
strArr[0]=new String("a");
strArr[1]=new String("b");
strArr[2]=new String("c");
也可以
String [] strArr={"a","b","c"};
String 类型的对象有length()方法
String[] 数组类型有length 属性
Apr
8
/************************************************
* javascript正则表达式检验
*************************************************
*/
//校验以字母开头
var patn = /^[a-zA-Z]+[a-zA-Z0-9]+$/;
if(!patn.exec(document.regform.UserName.value)){
alert('会员登录名只能由英文字母或数字组成(不支持中文、不能以数字开头)。');
return false;
}
//校验是否全由数字组成
function isDigit(s)
{
var patrn=/^[0-9]{1,20}$/;
if (!patrn.exec(s)) return false;
return true;
}
//校验登录名:只能输入4-20个以字母开头、可带数字、“_”、“.”的字串
function isRegisterUserName(s)
{
var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){3,19}$/;
if (!patrn.exec(s)) return false;
return true;
}
//校验用户姓名:只能输入1-30个以字母开头的字串
function isTrueName(s)
{
var patrn=/^[a-zA-Z]{1,30}$/;
if (!patrn.exec(s)) return false;
return true;
}
//校验密码:只能输入6-20个字母、数字、下划线
function isPasswd(s)
{
var patrn=/^(\w){6,20}$/;
if (!patrn.exec(s)) return false;
return true;
}
//校验普通电话、传真号码:可以“+”开头,除数字外,可含有“-”
function isTel(s)
{
//var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?(\d){1,12})+$/;
var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
if (!patrn.exec(s)) return false;
return true;
}
//校验手机号码:必须以数字开头,除数字外,可含有“-”
function isMobile(s)
{
var patrn=/13[0,1,2,3,4,5,6,7,8,9]\d{8}/;
if (!patrn.exec(s)) return false;
return true;
}
//校验手机号码(移动):必须以数字开头,除数字外,可含有“-”
function isCMCCMobile(s)
{
var patrn=/13[5,6,7,8,9]\d{8}/;
if (!patrn.exec(s)) return false;
return true;
}
//校验手机号码(联通):必须以数字开头,除数字外,可含有“-”
function isUNICOMMobile(s)
{
var patrn=/13[0,1,2,3,4]\d{8}/;
if (!patrn.exec(s)) return false;
return true;
}
//校验邮政编码
function isPostalCode(s)
{
//var patrn=/^[a-zA-Z0-9]{3,12}$/;
var patrn=/^[a-zA-Z0-9 ]{3,12}$/;
if (!patrn.exec(s)) return false;
return true;
}
//校验搜索关键字
function isSearch(s)
{<BR> varpatrn=/^[^`~!@#$%^&*()+=|\\\][\]\{\}:;\'\,.<>/?]{1}[^`~!@$%^&()+=|\\\][\]\{\}:;\'\,.<>?]{0,19}$/;
if (!patrn.exec(s)) return false;
return true;
}
* javascript正则表达式检验
*************************************************
*/
//校验以字母开头
var patn = /^[a-zA-Z]+[a-zA-Z0-9]+$/;
if(!patn.exec(document.regform.UserName.value)){
alert('会员登录名只能由英文字母或数字组成(不支持中文、不能以数字开头)。');
return false;
}
//校验是否全由数字组成
function isDigit(s)
{
var patrn=/^[0-9]{1,20}$/;
if (!patrn.exec(s)) return false;
return true;
}
//校验登录名:只能输入4-20个以字母开头、可带数字、“_”、“.”的字串
function isRegisterUserName(s)
{
var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){3,19}$/;
if (!patrn.exec(s)) return false;
return true;
}
//校验用户姓名:只能输入1-30个以字母开头的字串
function isTrueName(s)
{
var patrn=/^[a-zA-Z]{1,30}$/;
if (!patrn.exec(s)) return false;
return true;
}
//校验密码:只能输入6-20个字母、数字、下划线
function isPasswd(s)
{
var patrn=/^(\w){6,20}$/;
if (!patrn.exec(s)) return false;
return true;
}
//校验普通电话、传真号码:可以“+”开头,除数字外,可含有“-”
function isTel(s)
{
//var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?(\d){1,12})+$/;
var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
if (!patrn.exec(s)) return false;
return true;
}
//校验手机号码:必须以数字开头,除数字外,可含有“-”
function isMobile(s)
{
var patrn=/13[0,1,2,3,4,5,6,7,8,9]\d{8}/;
if (!patrn.exec(s)) return false;
return true;
}
//校验手机号码(移动):必须以数字开头,除数字外,可含有“-”
function isCMCCMobile(s)
{
var patrn=/13[5,6,7,8,9]\d{8}/;
if (!patrn.exec(s)) return false;
return true;
}
//校验手机号码(联通):必须以数字开头,除数字外,可含有“-”
function isUNICOMMobile(s)
{
var patrn=/13[0,1,2,3,4]\d{8}/;
if (!patrn.exec(s)) return false;
return true;
}
//校验邮政编码
function isPostalCode(s)
{
//var patrn=/^[a-zA-Z0-9]{3,12}$/;
var patrn=/^[a-zA-Z0-9 ]{3,12}$/;
if (!patrn.exec(s)) return false;
return true;
}
//校验搜索关键字
function isSearch(s)
{<BR> varpatrn=/^[^`~!@#$%^&*()+=|\\\][\]\{\}:;\'\,.<>/?]{1}[^`~!@$%^&()+=|\\\][\]\{\}:;\'\,.<>?]{0,19}$/;
if (!patrn.exec(s)) return false;
return true;
}
Apr
8
框架编程概述
一个HTML页面可以有一个或多个子框架,这些子框架以
框架间的互相引用
一个页面中的所有框架以集合的形式作为window对象的属性提供,例如:window.frames就表示该页面内所有框架的集合,这和表单对象、链接对象、图片对象等是类似的,不同的是,这些集合是document的属性。因此,要引用一个子框架,可以使用如下语法:
window.frames["frameName"];
window.frames.frameName
window.frames[index]
其中,window字样也可以用self代替或省略,假设frameName为页面中第一个框架,则以下的写法是等价的:
self.frames["frameName"]
self.frames[0]
frames[0]
frameName
每个框架都对应一个HTML页面,所以这个框架也是一个独立的浏览器窗口,它具有窗口的所有性质,所谓对框架的引用也就是对window对象的引用。有了这个window对象,就可以很方便地对其中的页面进行操作,例如使用window.document对象向页面写入数据、使用window.location属性来改变框架内的页面等。
下面分别介绍不同层次框架间的互相引用:
1.父框架到子框架的引用
知道了上述原理,从父框架引用子框架变的非常容易,即:
window.frames["frameName"];
这样就引用了页面内名为frameName的子框架。如果要引用子框架内的子框架,根据引用的框架实际就是window对象的性质,可以这样实现:
window.frames["frameName"].frames["frameName2"];
这样就引用到了二级子框架,以此类推,可以实现多层框架的引用。
2.子框架到父框架的引用
每个window对象都有一个parent属性,表示它的父框架。如果该框架已经是顶层框架,则window.parent还表示该框架本身。
3.兄弟框架间的引用
如果两个框架同为一个框架的子框架,它们称为兄弟框架,可以通过父框架来实现互相引用,例如一个页面包括2个子框架:
<frameset rows="50%,50%">
<frame src="1.html" name="frame1" />
<frame src="2.html" name="frame2" />
</frameset>
在frame1中可以使用如下语句来引用frame2:
self.parent.frames["frame2"];
4.不同层次框架间的互相引用
框架的层次是针对顶层框架而言的。当层次不同时,只要知道自己所在的层次以及另一个框架所在的层次和名字,利用框架引用的window对象性质,可以很容易地实现互相访问,例如:
self.parent.frames["childName"].frames["targetFrameName"];
5.对顶层框架的引用
和parent属性类似,window对象还有一个top属性。它表示对顶层框架的引用,这可以用来判断一个框架自身是否为顶层框架,例如:
//判断本框架是否为顶层框架
if(self==top){
//dosomething
}
一个HTML页面可以有一个或多个子框架,这些子框架以
<iframe>
来标记,用来显示一个独立的HTML页面。这里所讲的框架编程包括框架的自我控制以及框架之间的互相访问,例如从一个框架中引用另一个框架中的JavaScript变量、调用其他框架内的函数、控制另一个框架中表单的行为等。框架间的互相引用
一个页面中的所有框架以集合的形式作为window对象的属性提供,例如:window.frames就表示该页面内所有框架的集合,这和表单对象、链接对象、图片对象等是类似的,不同的是,这些集合是document的属性。因此,要引用一个子框架,可以使用如下语法:
window.frames["frameName"];
window.frames.frameName
window.frames[index]
其中,window字样也可以用self代替或省略,假设frameName为页面中第一个框架,则以下的写法是等价的:
self.frames["frameName"]
self.frames[0]
frames[0]
frameName
每个框架都对应一个HTML页面,所以这个框架也是一个独立的浏览器窗口,它具有窗口的所有性质,所谓对框架的引用也就是对window对象的引用。有了这个window对象,就可以很方便地对其中的页面进行操作,例如使用window.document对象向页面写入数据、使用window.location属性来改变框架内的页面等。
下面分别介绍不同层次框架间的互相引用:
1.父框架到子框架的引用
知道了上述原理,从父框架引用子框架变的非常容易,即:
window.frames["frameName"];
这样就引用了页面内名为frameName的子框架。如果要引用子框架内的子框架,根据引用的框架实际就是window对象的性质,可以这样实现:
window.frames["frameName"].frames["frameName2"];
这样就引用到了二级子框架,以此类推,可以实现多层框架的引用。
2.子框架到父框架的引用
每个window对象都有一个parent属性,表示它的父框架。如果该框架已经是顶层框架,则window.parent还表示该框架本身。
3.兄弟框架间的引用
如果两个框架同为一个框架的子框架,它们称为兄弟框架,可以通过父框架来实现互相引用,例如一个页面包括2个子框架:
<frameset rows="50%,50%">
<frame src="1.html" name="frame1" />
<frame src="2.html" name="frame2" />
</frameset>
在frame1中可以使用如下语句来引用frame2:
self.parent.frames["frame2"];
4.不同层次框架间的互相引用
框架的层次是针对顶层框架而言的。当层次不同时,只要知道自己所在的层次以及另一个框架所在的层次和名字,利用框架引用的window对象性质,可以很容易地实现互相访问,例如:
self.parent.frames["childName"].frames["targetFrameName"];
5.对顶层框架的引用
和parent属性类似,window对象还有一个top属性。它表示对顶层框架的引用,这可以用来判断一个框架自身是否为顶层框架,例如:
//判断本框架是否为顶层框架
if(self==top){
//dosomething
}







