??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产精品VA在线看黑人 ,久久精品国产亚洲av麻豆小说,亚洲午夜精品久久久久久apphttp://www.tkk7.com/square/zh-cnSun, 11 May 2025 23:22:50 GMTSun, 11 May 2025 23:22:50 GMT60再小的项目也不要Z赶进度而省掉搭建架构的旉http://www.tkk7.com/square/archive/2010/01/10/308893.htmlsquaresquareSun, 10 Jan 2010 02:47:00 GMThttp://www.tkk7.com/square/archive/2010/01/10/308893.htmlhttp://www.tkk7.com/square/comments/308893.htmlhttp://www.tkk7.com/square/archive/2010/01/10/308893.html#Feedback0http://www.tkk7.com/square/comments/commentRss/308893.htmlhttp://www.tkk7.com/square/services/trackbacks/308893.html

square 2010-01-10 10:47 发表评论
]]>
js验证表单大全,用JS控制表单提交 ,javascript提交表单 http://www.tkk7.com/square/archive/2008/08/30/225786.htmlsquaresquareSat, 30 Aug 2008 13:27:00 GMThttp://www.tkk7.com/square/archive/2008/08/30/225786.htmlhttp://www.tkk7.com/square/comments/225786.htmlhttp://www.tkk7.com/square/archive/2008/08/30/225786.html#Feedback0http://www.tkk7.com/square/comments/commentRss/225786.htmlhttp://www.tkk7.com/square/services/trackbacks/225786.html 目录:
1:js 字符串长度限制、判断字W长?、js限制输入、限制不能输入、textarea 长度限制
2.:js判断汉字、判断是否汉?、只能输入汉?br /> 3:js判断是否输入英文、只能输入英?br /> 4:js只能输入数字,判断数字、验证数字、检数字、判断是否ؓ数字、只能输入数?br /> 5:只能输入英文字符和数?br /> 6: js email验证 、js 判断email 、信?邮箱格式验证
7:js字符qo,屏蔽关键?br /> 8:js密码验证、判断密?
2.1: js 不ؓI、ؓI或不是对象 、判断ؓI?、判断不为空
2.2:比较两个表单的值是否相?br /> 2.3:表单只能为数字和"_",
2.4:表单输入数?长度限定
2.5:中文/英文/数字/邮g地址合法性判?br /> 2.6:限定表单不能输入的字符
2.7表单的自W控?br /> 2.8:form文本域的通用校验函数

1. 长度限制

<script>
function test()
{
if(document.a.b.value.length>50)
{
alert("不能过50个字W!");
document.a.b.focus();
return false;
}
}
</script>
<form. name=a nsubmit="return test()">
<textarea name="b" cols="40" wrap="VIRTUAL" rows="6"></textarea>
<input type="submit" name="Submit" value="check">
</form>


2. 只能是汉?

<input nkeyup="value="/oblog/value.replace(/[^\u4E00-\u9FA5]/g,'')">


3." 只能是英?br />
<script. language=javascript>
function onlyEng()
{
if(!(event.keyCode>=65&&event.keyCode<=90))
event.returnvalue=false;
}
</script>

<input nkeydown="onlyEng();">


4. 只能是数?br />
<script. language=javascript>
function onlyNum()
{
if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105)))
//考虑键盘上的数字键
event.returnvalue=false;
}
</script>

<input nkeydown="onlyNum();">


5. 只能是英文字W和数字


6. 验证油箱格式

<SCRIPT. LANGUAGE=javascript. RUNAT=Server>
function isEmail(strEmail) {
if (strEmail.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
return true;
else
alert("oh");
}
</SCRIPT>
<input type=text nblur=isEmail(this.value)>


7. 屏蔽关键?q里屏蔽***?***)

<script. language="javascript1.2">
function test() {
if((a.b.value.indexOf ("***") == 0)||(a.b.value.indexOf ("****") == 0)){
alert(":)");
a.b.focus();
return false;}
}
</script>
<form. name=a nsubmit="return test()">
<input type=text name=b>
<input type="submit" name="Submit" value="check">
</form>


8. 两次输入密码是否相同

<FORM. METHOD=POST ACTION="">
<input type="password" id="input1">
<input type="password" id="input2">
<input type="button" value="test" nclick="check()">
</FORM>
<script>
function check()
{
with(document.all){
if(input1.value!=input2.value)
{
alert("false")
input1.value = "";
input2.value = "";
}
else document.forms[0].submit();
}
}
</script>
够了?:)
屏蔽右键 很酷
oncontextmenu="return false" ndragstart="return false" nselectstart="return false"
加在body?/div>

?br />
2.1   表单不能ؓI?br />

<script   language="javascript">
<!--
function   CheckForm()
{  
if   (document.form.name.value.length   ==   0)   {  
alert("误入您姓名!");
document.form.name.focus();
return   false;
}
return   true;
}
-->
</script>


2.2   比较两个表单的值是否相?br />

<script   language="javascript">
<!--
function   CheckForm()
if   (document.form.PWD.value   !=   document.form.PWD_Again.value)   {  
alert("您两ơ输入的密码不一P请重新输?");
document.ADDUser.PWD.focus();
return   false;
}
return   true;
}
-->
</script>


2.3   表单只能ؓ数字?_",用于电话/银行帐号验证?可扩展到域名注册{?br />

<script   language="javascript">
<!--
function   isNumber(String)
{  
var   Letters   =   "1234567890-";   //可以自己增加可输入?br /> var   i;
var   c;
if(String.charAt(   0   )=='-')
return   false;
if(   String.charAt(   String.length   -   1   )   ==   '-'   )
return   false;
for(   i   =   0;   i   <   String.length;   i   ++   )
{  
c   =   String.charAt(   i   );
if   (Letters.indexOf(   c   )   <   0)
return   false;
}
return   true;
}
function   CheckForm()
{  
if(!   isNumber(document.form.TEL.value))   {  
alert("您的电话L不合法!");
document.form.TEL.focus();
return   false;
}
return   true;
}
-->
</script>



2.4   表单输入数?长度限定


<script   language="javascript">
<!--
function   CheckForm()  
{  
if   (document.form.count.value   >   100   ||   document.form.count.value   <   1)
{  
alert("输入数g能小于零大于100!");
document.form.count.focus();
return   false;
}
if   (document.form.MESSAGE.value.length<10)
{  
alert("输入文字于10!");
document.form.MESSAGE.focus();
return   false;
}
return   true;
}
//-->
</script>


2.5   中文/英文/数字/邮g地址合法性判?br />

<SCRIPT   LANGUAGE="javascript">
<!--

function   isEnglish(name)   //英文值检?br /> {  
if(name.length   ==   0)
return   false;
for(i   =   0;   i   <   name.length;   i++)   {  
if(name.charCodeAt(i)   >   128)
return   false;
}
return   true;
}

function   isChinese(name)   //中文值检?br /> {  
if(name.length   ==   0)
return   false;
for(i   =   0;   i   <   name.length;   i++)   {  
if(name.charCodeAt(i)   >   128)
return   true;
}
return   false;
}

function   isMail(name)   //   E-mail值检?br /> {  
if(!   isEnglish(name))
return   false;
i   =   name.indexOf("   at   ");
j   =   name   dot   lastIndexOf("   at   ");
if(i   ==   -1)
return   false;
if(i   !=   j)
return   false;
if(i   ==   name   dot   length)
return   false;
return   true;
}

function   isNumber(name)   //数值检?br /> {  
if(name.length   ==   0)
return   false;
for(i   =   0;   i   <   name.length;   i++)   {  
if(name.charAt(i)   <   "0"   ||   name.charAt(i)   >   "9")
return   false;
}
return   true;
}

function   CheckForm()
{  
if(!   isMail(form.Email.value))   {  
alert("您的电子邮g不合法!");
form.Email.focus();
return   false;
}
if(!   isEnglish(form.name.value))   {  
alert("英文名不合法Q?);
form.name.focus();
return   false;
}
if(!   isChinese(form.cnname.value))   {  
alert("中文名不合法Q?);
form.cnname.focus();
return   false;
}
if(!   isNumber(form.PublicZipCode.value))   {  
alert("邮政~码不合法!");
form.PublicZipCode.focus();
return   false;
}
return   true;
}
//-->
</SCRIPT>


2.6   限定表单不能输入的字符


<script   language="javascript">
<!--

function   contain(str,charset)//   字符串包含测试函?br /> {  
var   i;
for(i=0;i<charset.length;i++)
if(str.indexOf(charset.charAt(i))>=0)
return   true;
return   false;
}

function   CheckForm()
{  
if   ((contain(document.form.NAME.value,   "%\(\)><"))   ||   (contain(document.form.MESSAGE.value,   "%\(\)><")))
{  
alert("输入了非法字W?);
document.form.NAME.focus();
return   false;
}
return   true;
}
//-->
</script>
  

1. 查一D字W串是否全由数字l成      

---------------------------------------      
<script. language="Javascript"><!--          
function checkNum(str){return str.match(/\D/)==null}          
alert(checkNum("1232142141"))          
alert(checkNum("123214214a1"))          
// --></script>    
    
      
2. 怎么判断是否是字W?nbsp;       
---------------------------------------      

if (/[^\x00-\xff]/g.test(s)) alert("含有汉字");          
else alert("全是字符");  
  
          
3. 怎么判断是否含有汉字        
---------------------------------------        

if (escape(str).indexOf("%u")!=-1) alert("含有汉字");        
else alert("全是字符");    
      
    
4. 邮箱格式验证    
---------------------------------------      

//函数名:chkemail    
//功能介绍Q检查是否ؓEmail Address    
//参数说明Q要查的字符?nbsp;   
//q回|0Q不?1Q是    
function chkemail(a)    
{ var i=a.length;    
var temp = a.indexOf('@');    
var tempd = a.indexOf('.');    
if (temp > 1) {    
if ((i-temp) > 3){    
if ((i-tempd)>0){    
return 1;    
}    
    
}    
}    
return 0;    
}


5. 数字格式验证    
---------------------------------------      

//函数名:fucCheckNUM    
//功能介绍Q检查是否ؓ数字    
//参数说明Q要查的数字    
//q回|1为是数字Q?Z是数?nbsp;   
function fucCheckNUM(NUM)    
{    
var i,j,strTemp;    
strTemp="0123456789";    
if ( NUM.length== 0)    
return 0    
for (i=0;i<NUM.length;i++)    
{    
j=strTemp.indexOf(NUM.charAt(i));    
if (j==-1)    
{    
//说明有字W不是数?nbsp;   
return 0;    
}    
}    
//说明是数?nbsp;   
return 1;    
}  
  
    
6. 电话L格式验证    
---------------------------------------      

//函数名:fucCheckTEL    
//功能介绍Q检查是否ؓ电话L    
//参数说明Q要查的字符?nbsp;   
//q回|1为是合法Q?Z合法    
function fucCheckTEL(TEL)    
{    
var i,j,strTemp;    
strTemp="0123456789-()# ";    
for (i=0;i<TEL.length;i++)    
{    
j=strTemp.indexOf(TEL.charAt(i));    
if (j==-1)    
{    
//说明有字W不合法    
return 0;    
}    
}    
//说明合法    
return 1;    
}    
  
7. 判断输入是否Z文的函数  
---------------------------------------      

function ischinese(s){  
var ret=true;  
for(var i=0;i<s.length;i++)  
ret=ret && (s.charCodeAt(i)>=10000);  
return ret;  
}
    
  
8. l合的判断用戯入的合法性的函数  
---------------------------------------      

<script. language="javascript">  
//限制输入字符的位数开?nbsp; 
//m是用戯入,n是要限制的位?nbsp; 
function issmall(m,n)  
{  
if ((m<n) && (m>0))  
   {  
   return(false);  
   }  
else  
{return(true);}  
}

  
9. 判断密码是否输入一?nbsp; 
---------------------------------------      

function issame(str1,str2)  
{  
if (str1==str2)  
{return(true);}  
else  
{return(false);}  
}
  
  
10. 判断用户名是否ؓ数字字母下滑U?
---------------------------------------      

function notchinese(str){
var reg=/[^A-Za-z0-9_]/g
     if (reg.test(str)){
     return (false);
     }else{
return(true);     }
}


2.8. form文本域的通用校验函数
---------------------------------------      
作用Q检所有必非I的input文本Q比如姓名,账号Q邮件地址{等?br /> 该校验现在只针对文本域,如果要针对form里面的其他域对象Q可以改变判断条件?br />
使用ҎQ在要检的文本域中加入title文字。文字是在提CZ息,你要提示l用L该字D늚中文名。比如要用户名
html如下,当然Q最好用可视化工h如dreamweaver什么的来编辑域?br /> 如果要检数字类型数据的话,再把域的idl一为sz.
javascript判断日期cd比较ȝQ所以就没有做日期类型校验的E序?高手可以补充?br />
E序比较草,只是提供一个思\。抛砖引玉! Q)
哦,对了Q函数调用方法:< form   nsubmit="return dovalidate()">


function dovalidate()
{
fm=document.forms[0] //只检一个form,如果是多个可以改变判断条?br />      for(i=0;i<fm.length;i++)
     {  
     //判断条ӞҎcd不同可以修改
     if(fm[i].tagName.toUpperCase()=="INPUT" &&fm[i].type.toUpperCase()=="TEXT" && (fm[i].title!=""))
    
          if(fm[i].value="/blog/="")//
          {
          str_warn1=fm[i].title+"不能为空!";
          alert(str_warn1);
         fm[i].focus();
          return false;        
          }
          if(fm[i].id.toUpperCase()=="SZ")//数字校验
          {
                  if(isNaN(fm[i].value))
                 { str_warn2=fm[i].title+"格式不对";
                 alert(str_warn2);
                 fm[i].focus();
                  return false;
                  }
         }
     }
     return true;
}



square 2008-08-30 21:27 发表评论
]]>Applying UML 2 to the SDLC with Enterprise Architect http://www.tkk7.com/square/archive/2007/11/25/162989.htmlsquaresquareSun, 25 Nov 2007 09:18:00 GMThttp://www.tkk7.com/square/archive/2007/11/25/162989.htmlhttp://www.tkk7.com/square/comments/162989.htmlhttp://www.tkk7.com/square/archive/2007/11/25/162989.html#Feedback0http://www.tkk7.com/square/comments/commentRss/162989.htmlhttp://www.tkk7.com/square/services/trackbacks/162989.html20060627UMLChinaIntrotoUML.part1.rar
20060627UMLChinaIntrotoUML.part2.rar
20060627UMLChinaIntrotoUML.part3.rar
20060627UMLChinaIntrotoUML.part4.rar
20060627UMLChinaIntrotoUML.part5.rar



square 2007-11-25 17:18 发表评论
]]>
学习Linux的忠告[转自CSDN]http://www.tkk7.com/square/archive/2007/11/25/162986.htmlsquaresquareSun, 25 Nov 2007 09:09:00 GMThttp://www.tkk7.com/square/archive/2007/11/25/162986.htmlhttp://www.tkk7.com/square/comments/162986.htmlhttp://www.tkk7.com/square/archive/2007/11/25/162986.html#Feedback0http://www.tkk7.com/square/comments/commentRss/162986.htmlhttp://www.tkk7.com/square/services/trackbacks/162986.html以下是网友王垠写的关于学习Linux的忠告。但只要E加替换Q它完全可以用来解决FF与IEQ五W与拼音QQQ与MSNQIBM与HPQ甚xSONY与Q天堂_丝之间的种U争端?br />

1. 不要?#8220;传教?#8221;

很多人在讨论Z断的引v "Linux vs. Windows" 之类的讨论,甚至争的面红而Q这是没有必要的?q种争论是浪Ҏ间而没有Q何用处的。对Q你׃一下午Q用许多事实“捍卫”?“Linux ?Windows ?#8221; q个说法。但?Windows 的支持者ƈ不会喜欢?LinuxQ他们只是稍微退~一下,然后找一些新的证据来跟你辩论?世界上的Z都在利用Linux 研究最前沿的科学,我们q在q里讨论 “要不要用Linux” q种无聊的问题,什么时候才能赶上时代前q的步伐Q?什么叫?#8220;Windows 支持?#8221;Q什么叫?#8220;Linux 支持?#8221;Q我们ؓ什么要支持某一个而反对另外一个?你不需要ؓ Linux “护法”Q不需要成?#8220;Linux 支持?#8221;或?#8220;GNU传教?#8221;QGNU/Linux 已经用事实向世界证明了它们的威力Q已l被大多Ch接受。你只需要安安静静n?GNU/Linux l你的乐和自由?你需要关心的不是你的工具是什么,而是你用它做了什么。精?Linux q不说明M问题Q因为它只是一个工兯已。如果你?Windows 能很好的完成你的dQ那你就没有必要Ҏ间去熟悉 Linux。直到有一天你发现一Q务只?Linux 才能完成的时候再换也不迟Q因Zw边?Linux 的爱好者一定会很乐意的帮助你?br />
 工具不是人,不应该对工具有感情。这是你在进行Q何对工具的讨论前需要提醒自q事情。面对一些容易引起争论的东西QWord ?TeXQEmacs ?VIMQMAXIMAQMathematica ?MapleQGnomeQ?FVWM ?KDEQMutt ?Pine …… 一定要冷静的对自己_“我不站在它们M一边,因ؓ它们不是人?#8221; 各h的需要不同,生活的环境不同。对你来说好的东西,对别人来说不一定好Q我们需要尊重别人的选择。如果你当面说别人正在用的程序不好,没有Z乐意接受你的意见。我从来没有q我爸爸不用 Windows + WPSQ而用 Linux + LaTeX 来处理他的英语试南因?WPS 是我爸爸的选择Q他能用 WPS ~辑出很好的试题L试他的学生,那就_了?br />
 我曾l帮我爸爸做了一?perl E序Q能够自动从一U我自己设计?markup 语言转化?LaTeX 格式的英语试南可以自动对试题~号Qؕ序排版选择题的选项Q自动生成答案表Q生成老师用的昄{案的版本,自动对短文改错题q行优化分段Q自动拼写检查,囑Ş化的配置方式…… 我爸爔R兴的用了一D|_可是后来他想?WPS 里的一U标题样式,而我不在Ӟ无法Z修改E序。所以他又换回了 WPS。这像有h送爱因斯坦一|剃L沫一P刚开始几天,发现他神采飞扬,不断夸这个东西真舒服。过了几天,发现爱因斯坦又开始用白水剃胡子了Q因为剃L沫用完了Q他懒得自己M那个东西。这只是习惯问题?

2. 不要自己

喜欢电脑的hL有某些心理强q們֐。有的h_“键盘比鼠标快。我不要用鼠标。这h有高效率?#8221; 所以他在编辑器里无Z么时候L?20w, 10j q样的命令到辄的点。他甚至觉得囑Ş界面是多余的Q干?Xwindow 都不装?全部用键盘看h的确比让手离开键盘L鼠标Q再回来“?#8221; 多了Q但是快的击键频率不{于工作的高效率Q对你的健康更没有什么好处。这只能把你变成打键盘的机器?当你正在查你的文章或者程序,思维正在随着字符的含义流动,H然 20w, 10j q样的东西出现在你的脑子里,是不是会打断思\Q不Q那说明你当时思考的问题比较单,q些q扰q不会v到副作用?br />
 其实很多人用电脑的时候,思想都受到某U教条的束缚Q上面这个只是众多教条中的一U。某些h刉了很多q种教条Q用他的工作方式来要求别人,嘲笑方式跟他不一L人。比如有的h嘲笑其它人写 C E序不按 8 字符~进Q嘲W别人在 vi 里用方向键,嘲笑别h不知?PVM 是什么,嘲笑其它人用 JAVA, C# q种?GC 回收内存语言…… 你不用管各种各样的教条,电脑只是你的奴隶Q你x么用就怎么用。没有h能够U束你,没有人可以嘲W你的工作方式。电脑明天就不再是这个样子,所以今天你不用完全了解它。你没有必要知道别h创造的一切,因ؓ你需要留Ҏ间自己创造些东西。Just have fun! 当你下次修改文章的时候,不妨试试悠闲的用鼠标在你眼睛看到的地方轻ȝ一下?

3. 不要“?Linux”

很多人用 Linux 的时候会感觉很迷茫,该用哪个发行呢?是不是我装了什么?怎么升q么快啊Q怎么q么不稳定!每当遇到新的软g他就惌用,每当新的版本出现Q他更斎ͼ然后用鼠标在新的菜单里选择从来没见q的E序来用用?其实你是ZLinux而用LinuxQ而没有找到正的理由来利?Linux。你首先要明用电脑的目的,你用它是Z解决你的实际问题Q而不是ؓ了学习安?nobr>操作pȝQ不是ؓ了测试哪个版本好用,不是Z“赶上潮流”Q更不是因ؓ你硬盘太大了Q你惛_占点I间?如果你启动了电脑之后不知道应该干什么,那么最好先不要用电脑,因ؓ你可能有更重要的事情需要做?

4. 不用挑剔发行版本

很多人刚开始用 Linux 的时候,L在怀疑别的发行版本是否比自己正在用的q个好,L怀疑自׃后时候会失去支持Q不得不换用别的发行。所以很多h今天?RedhatQ明天又换成?debian, 一会儿又是 gentoo, …… 甚至有的人在一台机器上装了两个版本?LinuxQ然后比较哪一个好?其实你完全没有必要这样做QQ何发行,只要你熟悉了Q你在上面的工作方式几乎是不会受CQ何媄响的?br />
我以前一直用?RedhatQ当我有一天在我的一台新机器上安?debian Ӟ我发C?Redhat 的经验完全没有浪贏V我用了一个下午就配置好了 debianQ它服服脓贴的听我的话Q就跟没有换发行一栗?Debian, TurboLinux, SuSE, Redhat, Gentoo, ... M一个版本都是不错的。很多h认ؓ自己攒一?LFS 是高水^黑客的象征,但是不是每个人都有精力去了解所有细节?如果你是用于个h的日怺物和U研Q可以试?debian。它是我见过的最方便的一个发行?

5. 不要盲目升

不知道这是心理作用还是什么,有的人看到比较大的版本号Q就会很x成那个。很多h?Redhat 本来配置的很舒服了,可是一?Redhat 发行新的版本Q他们就会尽快下载过来,然后选择升安装。结果很多时候把自己原来修改得很好的配置文gl冲掉了。新的Y件又带来了新的问题,比如有一ơ我?rxvt 升?2.7.8 p miniChinput 冲突了,升?Redhat 8.0Q发?xmms 居然~省不能放mp3了,XFree86 ?xtt 模块?I810 上有新的 bugQ会D Mozilla H然退出?如果你已l配|好了一切,千万别再整体升了,q会费你很多很多时间的Q不值得。有句话说得?"If it's not broken, don't fix it." 如果你的E序能够完成你需要做的事情,你何必升U呢Q?

6. 不要配置你不需要的东西

如果你只惛_一个像我这L普通用P主要目的是用 Linux 来完成自qU研d和日常工作,那就可以不用pȝ理员或者网l管理员的标准来要求自己Q因为当一个系l和|络理员确实很辛苦。普通用户学习那些不l常用到的复杂的l护pȝ的工P其实是浪Ҏ_学了不用是会很快忘记的! 我不是一个合格的|络理员,我的服务器都只设|了我自己需要的功能Q设|好 ssh, ftp 已经_了,那样可以省去我很多麻烦。我从来不过度考虑“安全”Q因?Linux ~省已经很安全了。我没有带机,׃用管 tar 的那些稀奇古怪的参数了,czf, xzf, ztf 已经可以满我所有的需要。sed, awk, ... 我也只会几种常用的命令行?

7. 不要习惯的?root 帐号?/span>

在需要的时候才 suQ?q是很多刚接?UNIX cL作系l的人常见的现象Q他们不喜欢在管理系l的时候才 su, 而是一直用 root 帐号q所有事情,配置pȝQ安装程序,览|页Q玩游戏Q编E?…… l果有一天,他不心在某个系l目录用了 rm * ... 后果不堪设想……

8. 不要用商业的眼光来看 Linux?/span>

 Linux 不是商业软gQ所以不要用要求 Solaris, Windows 那样的眼光来?Linux. 自由软g的作者们从来不拉拢用P他们对用户不负有M责Q。实际上在自pY件的世界里,“开发?#8221;?#8220;用户” q没有明的界限Q大家是朋友?自由软g很可能只是满作者和他的朋友的需要,甚至是ؓ了好玩而创造的。自pY件不是完的Q自pY件承认自己有~点Q它不会自吹自擂Q蒙?#8220;用户”的耳目。这U对作者责ȝ解脱Ȁ发了作者的创造力Q他们不用过分考虑“向上兼容”Q他们往往比背上重重包q商业软gl构更合理,技术更先进?所以当你用某个自由软g遇到困难的时候,不应该埋怨Y件的作者,因ؓ他们对你q没有义务?br />
你不应该把自己当成一个挑剔的֮Q而要把自׃个Y件的N和一个和蔼的者,q样你才能理解作者写q个E序时的快乐Q在遇到问题时向作者反映,帮助他完善这个YӞ成ؓ一个快乐的参与者。就像你的哥哥送你一个他用旧了的自行车,你应该珍惜这份友情,而不要在车坏了,或者骑车摔了一交的时候大骂你的哥哥。如果你真的不能使用q种合作的心态,那么最好不要用这个Y件?q是一U先q的文化Q它包含了互相合作,U学创新的精。理解这一点不是很ҎQ很多h往往是因Z能理解这U文化而离开自由软g。这对于作者来说ƈ没有什么损失?

9. q你的正事去

 很多我说Q你的网|Ҏ好多旉来配|这配置那,一会儿?FVWMQ一会儿?Mutt …… ?#8230;…那些东西都是我有I的时候一点一点积累的Q如果你想一ơ性搞定所有那些东西,恐怕得׃几个星期甚至几个月的旉Qƈ不是一定要搞定所有这些东西你才能正常工作的。除非你真的非得利用某个E序Q或者你闲着没事Q否则你可以不管q些东西?

10. 上面几条仅供参?以上只是个h意见Q不一定适合所有h。取舍由你了Q?/span>



square 2007-11-25 17:09 发表评论
]]>
JAVA 面试?http://www.tkk7.com/square/archive/2006/07/17/58645.htmlsquaresquareMon, 17 Jul 2006 14:06:00 GMThttp://www.tkk7.com/square/archive/2006/07/17/58645.htmlhttp://www.tkk7.com/square/comments/58645.htmlhttp://www.tkk7.com/square/archive/2006/07/17/58645.html#Feedback0http://www.tkk7.com/square/comments/commentRss/58645.htmlhttp://www.tkk7.com/square/services/trackbacks/58645.html阅读全文

square 2006-07-17 22:06 发表评论
]]>
转脓-深入理解abstract class和interfacehttp://www.tkk7.com/square/archive/2006/07/15/58359.htmlsquaresquareSat, 15 Jul 2006 12:59:00 GMThttp://www.tkk7.com/square/archive/2006/07/15/58359.htmlhttp://www.tkk7.com/square/comments/58359.htmlhttp://www.tkk7.com/square/archive/2006/07/15/58359.html#Feedback0http://www.tkk7.com/square/comments/commentRss/58359.htmlhttp://www.tkk7.com/square/services/trackbacks/58359.html

理解抽象c?/b>

abstract class和interface在Java语言中都是用来进行抽象类Q本文中的抽象类q从abstract class译而来Q它表示的是一个抽象体Q而abstract class为Java语言中用于定义抽象类的一U方法,误者注意区分)定义的,那么什么是抽象c,使用抽象c能为我们带来什么好处呢Q?br />
在面向对象的概念中,我们知道所有的对象都是通过cL描绘的,但是反过来却不是q样。ƈ不是所有的c都是用来描l对象的Q如果一个类中没有包含够的信息来描l一个具体的对象Q这Lcd是抽象类。抽象类往往用来表征我们在对问题领域q行分析、设计中得出的抽象概念,是对一pd看上M同,但是本质上相同的具体概念的抽象。比如:如果我们q行一个图形编辑Y件的开发,׃发现问题领域存在着圆、三角Şq样一些具体概念,它们是不同的Q但是它们又都属于Ş状这样一个概念,形状q个概念在问题领域是不存在的Q它是一个抽象概c正是因为抽象的概念在问题领域没有对应的具体概念Q所以用以表征抽象概늚抽象cL不能够实例化的?br />
在面向对象领域,抽象cM要用来进行类型隐藏。我们可以构造出一个固定的一l行为的抽象描述Q但是这l行为却能够有Q意个可能的具体实现方式。这个抽象描q就是抽象类Q而这一lQ意个可能的具体实现则表现为所有可能的zcR模块可以操作一个抽象体。由于模块依赖于一个固定的抽象体,因此它可以是不允怿改的Q同Ӟ通过从这个抽象体zQ也可扩展此模块的行为功能。熟悉OCP的读者一定知道,Z能够实现面向对象设计的一个最核心的原则OCP(Open-Closed Principle)Q抽象类是其中的关键所在?br />

从语法定义层面看abstract class和interface

在语法层面,Java语言对于abstract class和interfacel出了不同的定义方式Q下面以定义一个名为Demo的抽象类Z来说明这U不同?br />
使用abstract class的方式定义Demo抽象cȝ方式如下Q?br />
abstract class Demo ?br />        abstract void method1();
        abstract void method2();
        ?br />?br />
使用interface的方式定义Demo抽象cȝ方式如下Q?br />
interface Demo {
        void method1();
        void method2();
        ?br />}

在abstract class方式中,Demo可以有自q数据成员Q也可以有非abstarct的成员方法,而在interface方式的实CQDemo只能够有静态的不能被修改的数据成员Q也是必须是static final的,不过在interface中一般不定义数据成员Q,所有的成员Ҏ都是abstract的。从某种意义上说Qinterface是一U特DŞ式的abstract class?br />
对于abstract class和interface在语法定义层面更多的l节问题Q不是本文的重点Q不再赘qͼ读者可以参阅参考文献?〕获得更多的相关内容?br />

从编E层面看abstract class和interface

从编E的角度来看Qabstract class和interface都可以用来实?design by contract"的思想。但是在具体的用上面还是有一些区别的?br />
首先Qabstract class在Java语言中表C的是一U承关p,一个类只能使用一ơ承关pR但是,一个类却可以实现多个interface。也许,q是Java语言的设计者在考虑Java对于多重l承的支持方面的一U折中考虑吧?br />
其次Q在abstract class的定义中Q我们可以赋予方法的默认行ؓ。但是在interface的定义中Q方法却不能拥有默认行ؓQؓ了绕q这个限Ӟ必须使用委托Q但是这?增加一些复杂性,有时会造成很大的麻烦?br />
在抽象类中不能定义默认行存在另一个比较严重的问题Q那是可能会造成l护上的ȝ。因为如果后来想修改cȝ界面Q一般通过abstract class或者interface来表C)以适应新的情况Q比如,d新的Ҏ或者给已用的方法中d新的参数Q时Q就会非常的ȝQ可能要p很多的时_对于zcd多的情况Q尤为如此)。但是如果界面是通过abstract class来实现的Q那么可能就只需要修改定义在abstract class中的默认行ؓ可以了?br />
同样Q如果不能在抽象cM定义默认行ؓQ就会导致同LҎ实现出现在该抽象cȝ每一个派生类中,q反?one ruleQone place"原则Q造成代码重复Q同样不利于以后的维护。因此,在abstract class和interface间进行选择时要非常的小心?br />

从设计理念层面看abstract class和interface

上面主要从语法定义和~程的角度论qCabstract class和interface的区别,q些层面的区别是比较低层ơ的、非本质的。本节从另一个层面:abstract class和interface所反映出的设计理念Q来分析一下二者的区别。作者认为,从这个层面进行分析才能理解二者概늚本质所在?br />
前面已经提到q,abstarct class在Java语言中体C一U承关p,要想使得l承关系合理Q父cdzcM间必d?is a"关系Q即父类和派生类在概忉|质上应该是相同的Q参考文献?〕中有关?is a"关系的大幅深入的论qͼ有兴的读者可以参考)。对于interface 来说则不Ӟq不要求interface的实现者和interface定义在概忉|质上是一致的Q仅仅是实现了interface定义的契U而已。ؓ了便于理解Q下面将通过一个简单的实例q行说明?br />
考虑q样一个例子,假设在我们的问题领域中有一个关于Door的抽象概念,该Doorh执行两个动作open和closeQ此时我们可以通过abstract class或者interface来定义一个表C抽象概念的类型,定义方式分别如下所C:

使用abstract class方式定义DoorQ?br />
abstract class Door {
        abstract void open();
        abstract void close()Q?br />}


使用interface方式定义DoorQ?br />

interface Door {
        void open();
        void close();
}


其他具体的Doorcd可以extends使用abstract class方式定义的Door或者implements使用interface方式定义的Door。看h好像使用abstract class和interface没有大的区别?br />
如果现在要求Doorq要h报警的功能。我们该如何设计针对该例子的cȝ构呢Q在本例中,主要是ؓ了展Cabstract class和interface反映在设计理念上的区别,其他斚w无关的问题都做了化或者忽略)Q下面将|列出可能的解决ҎQƈ从设计理念层面对q些不同的方案进行分析?br />
解决Ҏ一Q?br />
单的在Door的定义中增加一个alarmҎQ如下:

abstract class Door {
        abstract void open();
        abstract void close()Q?br />        abstract void alarm();
}


或?br />
interface Door {
        void open();
        void close();
        void alarm();
}


那么h报警功能的AlarmDoor的定义方式如下:

class AlarmDoor extends Door {
        void open() { ?}
        void close() { ?}
        void alarm() { ?}
}


或?br />
class AlarmDoor implements Door ?br />        void open() { ?}
        void close() { ?}
        void alarm() { ?}
?br />
q种Ҏq反了面向对象设计中的一个核心原则ISPQInterface Segregation PricipleQ,在Door的定义中把Door概念本n固有的行为方法和另外一个概?报警?的行为方法؜在了一赗这样引L一个问题是那些仅仅依赖于Doorq个概念的模块会因ؓ"报警?q个概念的改变(比如Q修改alarmҎ的参敎ͼ而改变,反之依然?br />
解决Ҏ二:

既然open、close和alarm属于两个不同的概念,ҎISP原则应该把它们分别定义在代表q两个概늚抽象cM。定义方式有Q这两个概念都用abstract class方式定义Q两个概念都使用interface方式定义Q一个概念用abstract class方式定义Q另一个概念用interface方式定义?br />
昄Q由于Java语言不支持多重承,所以两个概念都使用abstract class方式定义是不可行的。后面两U方式都是可行的Q但是对于它们的选择却反映出对于问题领域中的概念本质的理解、对于设计意囄反映是否正确、合理。我们一一来分析、说明?br />
如果两个概念都用interface方式来定义,那么反映出两个问题Q?、我们可能没有理解清楚问题领域,AlarmDoor在概忉|质上到底是Doorq是报警器?2、如果我们对于问题领域的理解没有问题Q比如:我们通过对于问题领域的分析发现AlarmDoor在概忉|质上和Door是一致的Q那么我们在实现时就没有能够正确的揭C我们的设计意图Q因为在q两个概늚定义上(均用interface方式定义Q反映不Zq含义?br />
如果我们对于问题领域的理解是QAlarmDoor在概忉|质上是DoorQ同时它有具有报警的功能。我们该如何来设计、实现来明确的反映出我们的意思呢Q前面已l说q,abstract class在Java语言中表CZU承关p,而承关pd本质上是"is a"关系。所以对于Doorq个概念Q我们应该用abstarct class方式来定义。另外,AlarmDoor又具有报警功能,说明它又能够完成报警概念中定义的行ؓQ所以报警概念可以通过interface方式定义。如下所C:

abstract class Door {
        abstract void open();
        abstract void close()Q?br />}
interface Alarm {
        void alarm();
}
class AlarmDoor extends Door implements Alarm {
        void open() { ?}
        void close() { ?}
           void alarm() { ?}
}


q种实现方式基本上能够明的反映出我们对于问题领域的理解Q正的揭示我们的设计意图。其实abstract class表示的是"is a"关系Qinterface表示的是"like a"关系Q大家在选择时可以作Z个依据,当然q是建立在对问题领域的理解上的,比如Q如果我们认为AlarmDoor在概忉|质上是报警器Q同时又hDoor的功能,那么上述的定义方式就要反q来了?br />


l论

abstract class和interface是Java语言中的两种定义抽象cȝ方式Q它们之间有很大的相似性。但是对于它们的选择却又往往反映出对于问题领域中的概忉|质的理解、对于设计意囄反映是否正确、合理,因ؓ它们表现了概念间的不同的关系Q虽焉能够实现需求的功能Q。这其实也是语言的一U的惯用法,希望读者朋友能够细l体会?br />

square 2006-07-15 20:59 发表评论
]]>
linux下oracle安装http://www.tkk7.com/square/archive/2006/03/31/38556.htmlsquaresquareFri, 31 Mar 2006 14:39:00 GMThttp://www.tkk7.com/square/archive/2006/03/31/38556.htmlhttp://www.tkk7.com/square/comments/38556.htmlhttp://www.tkk7.com/square/archive/2006/03/31/38556.html#Feedback0http://www.tkk7.com/square/comments/commentRss/38556.htmlhttp://www.tkk7.com/square/services/trackbacks/38556.htmlOracle公司宣称在Linux下安装Oracle9i数据库至要?12MB的内存和臛_1GB或者两倍   ?
内存大小的交换空_对于pȝ内存大于2GB的服务器Q交换空间可以介?GB?GB之间。   ?

如果是ؓ了在一C?56M内存的普通PCZ试用Oracle9iQ在分配?GB左右的交换空间的情况下,也可以正常运行Oracle敊W  ?
据库。   ?
要检查内存空_dq入LinuxQ在命o行方式(bash环境Q下执行如下命oQ   ?
grep MemTotal /proc/meminfo    
要检查交换空_在命令行下执行如下命令:    
grep SwapTotal /proc/meminfo

1.解压.cpio文g
  #cpio -idvm < lnx_920_disk1.cpio
  #cpio -idvm < lnx_920_disk2.cpio
  #cpio -idvm < lnx_920_disk3.cpio
  在当前目录下生成Disk1和Disk2,Disk3三个目录.
  
2.打补?br />  unzip oraclerpm.zip
  #rpm -ivh *.i586.rpm --nodeps --force

3.建立用户和组
  #groupadd dba
  #mkdir /opt/OracleHome
  #adduser -u 499 -d /opt/OracleHome/ -g dba oracle
  ?-u 后可以是1-500(pȝ用户) -g d到私有组dba?br />  #chown oracle.dba /opt/OracleHome/
  #mkdir /opt/OracleHome/Ora9i
  #chown oracle.dba /opt/OracleHome/Ora9i
  #touch /etc/rac_on
  #mkdir /opt/tmp
  #chmod 1777 /opt/tmp
  #cp oracle.bashrc /opt/OraclHome/.bashrc

4.linuxpȝ优化
  #dd if=/dev/zero of=/opt/tmpswap bs=1k count=1024000
  #chmod 600 /opt/tmpswap
  #mkswap /opt/tmpswap
  #swapon -v /opt/tmpswap
  #sysctl -w kernel.sem="250 32000 100 128"
  #sysctl -w kernel.shmmax=`expr 512 \* 1024 \* 1024`
  shmmax 注释Q决定了Oracle或操做系l最多可以用的内存数目.
  #echo "kernel.sem=250 32000 100 128" >> /etc/sysctl.conf
  #echo "kernel.shmmax=`expr 512 \* 1024 \* 1024`" >> /etc/sysctl.conf
  ?上两行命令执行后h?etc/sysctl.conf的变?

  #echo 65536 >/proc/sys/fs/file-max
  #ulimit -n 65536
  #ulimit -u 16384
  ?上三行命令是pȝ优化,也添加到/etc/rc.local文g?每次启动pȝ自动优化

5.安装
  #xhost localhost
  #su - oracle
  #cd /opt/source/Disk1
  #./runInstaller

以下是几Ҏ意事?/p>

选择software only
然后用命令dbca创徏数据?/p>

1.安装时字体问题的解决:
   #unset LANG 
   如果执行上述指o不行的话再修?root/.i18n?etc/sysconfig/i18n
   #vi /root/.i18n  
     ?root用户的语a环境,注释掉所有项后添加一行LANG="en_US"
   #vi /etc/sysconfig/i18n  
     ?pȝ中新增加用户的语a环境(每增加一个用h它拷贝到其宿ȝ录生?i18n)

2.安装q程中的报错:
   前几个按报错信息的指C做,
   只有最后一?opt/OraclHome/Oracle9i/ctx/lib/下某一文g?应修?br />   /opt/OraclHome/Oracle9i/ctx/lib/env_ctx.mk文g
   在INSO_LINK= q一行添加一条记?$(LDLIBFLAG)dl

3.oracle用户SHELL有问?br />  #userdel oracle
  #adduser -u 499 -d /opt/OracleHome/ -g dba oracle

秘c?

 #hdparm -t /dev/hda 查看盘d速度,如只?M左右,则执?br /> #hdparm -d 1 /dev/hda 开启DMA功能,可把它添加到/etc/rc.local文g?



square 2006-03-31 22:39 发表评论
]]>
?java.util.Calendar 得到前几天的日期 http://www.tkk7.com/square/archive/2006/03/18/35912.htmlsquaresquareFri, 17 Mar 2006 23:52:00 GMThttp://www.tkk7.com/square/archive/2006/03/18/35912.htmlhttp://www.tkk7.com/square/comments/35912.htmlhttp://www.tkk7.com/square/archive/2006/03/18/35912.html#Feedback1http://www.tkk7.com/square/comments/commentRss/35912.htmlhttp://www.tkk7.com/square/services/trackbacks/35912.html
public class TestDate {

 

       public String yesteday() {

              
//           当前旉
               Calendar cal = Calendar.getInstance();

           //  日期的DATE减去10  是往后推10 ?同理 +10 是往后推十天
             
cal.add(Calendar.DATE, -10);

 

              SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");

             

              String str = sf.format(cal.getTime());

             

              System.out.print(str);

              return str;

       }

 

       public static void main(String args[]) {

              new TestDate().yesteday();

       }

 

}



记的用DATE cȝ时候要先得到当前的q???再将日数减或?再new Date(year,month,day);
有了 Calendar 感觉方便多了.



square 2006-03-18 07:52 发表评论
]]>
derby在spring 中的q用 ?配置http://www.tkk7.com/square/archive/2006/03/06/33940.htmlsquaresquareMon, 06 Mar 2006 15:01:00 GMThttp://www.tkk7.com/square/archive/2006/03/06/33940.htmlhttp://www.tkk7.com/square/comments/33940.htmlhttp://www.tkk7.com/square/archive/2006/03/06/33940.html#Feedback1http://www.tkk7.com/square/comments/commentRss/33940.htmlhttp://www.tkk7.com/square/services/trackbacks/33940.html阅读全文

square 2006-03-06 23:01 发表评论
]]>
关于Log4j比较全面的配|?/title><link>http://www.tkk7.com/square/archive/2006/03/04/33629.html</link><dc:creator>square</dc:creator><author>square</author><pubDate>Sat, 04 Mar 2006 13:24:00 GMT</pubDate><guid>http://www.tkk7.com/square/archive/2006/03/04/33629.html</guid><wfw:comment>http://www.tkk7.com/square/comments/33629.html</wfw:comment><comments>http://www.tkk7.com/square/archive/2006/03/04/33629.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/square/comments/commentRss/33629.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/square/services/trackbacks/33629.html</trackback:ping><description><![CDATA[关于Log4j比较全面的配|?BR>LOG4J的配|之单它遍及于来多的应用中了:Log4J配置文g实现了输出到控制台、文件、回滚文件、发送日志邮件、输出到数据库日志表、自定义标签{全套功能。择其一二用就够用了,<BR> <BR>log4j.rootLogger=DEBUG,CONSOLE,A1,im log4j.addivity.org.apache=true <BR><BR># 应用于控制台<BR> <BR>log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.Threshold=DEBUG log4j.appender.CONSOLE.Target=System.out log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n #log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n<BR> <BR>#应用于文?BR> <BR>log4j.appender.FILE=org.apache.log4j.FileAppender log4j.appender.FILE.File=file.log log4j.appender.FILE.Append=false log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n # Use this layout for LogFactor 5 analysis<BR><BR> # 应用于文件回?BR> log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender log4j.appender.ROLLING_FILE.Threshold=ERROR<BR>log4j.appender.ROLLING_FILE.File=rolling.log log4j.appender.ROLLING_FILE.Append=true log4j.appender.ROLLING_FILE.MaxFileSize=10KB log4j.appender.ROLLING_FILE.MaxBackupIndex=1 log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n<BR> <BR><BR><BR>#应用于socket <BR><BR>log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender log4j.appender.SOCKET.RemoteHost=localhost log4j.appender.SOCKET.Port=5001 log4j.appender.SOCKET.LocationInfo=true # Set up for Log Facter 5 log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n # Log Factor 5 Appender log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000 <BR><BR><BR># 发送日志给邮g <BR><BR>log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender log4j.appender.MAIL.Threshold=FATAL log4j.appender.MAIL.BufferSize=10 <A href="mailto:log4j.appender.MAIL.From=web@www.wuset.com">log4j.appender.MAIL.From=web@www.wuset.com</A> log4j.appender.MAIL.SMTPHost=www.wusetu.com <BR>log4j.appender.MAIL.Subject=Log4J Message <A href="mailto:log4j.appender.MAIL.To=web@www.wusetu.com">log4j.appender.MAIL.To=web@www.wusetu.com</A> log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout <BR>log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n <BR><BR># 用于数据?<BR><BR>log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender<BR>log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver log4j.appender.DATABASE.user=root log4j.appender.DATABASE.password= log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n') log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender log4j.appender.A1.File=SampleMessages.log4j log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j' <BR>log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout <BR><BR>#自定义Appender<BR> log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender<BR> log4j.appender.im.host = mail.cybercorlin.net<BR> log4j.appender.im.username = username<BR> log4j.appender.im.password = password <BR>log4j.appender.im.recipient = <A href="mailto:corlin@cybercorlin.net">corlin@cybercorlin.net</A> <BR>log4j.appender.im.layout=org.apache.log4j.PatternLayout <BR>log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n<BR><BR><BR><BR><img src ="http://www.tkk7.com/square/aggbug/33629.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/square/" target="_blank">square</a> 2006-03-04 21:24 <a href="http://www.tkk7.com/square/archive/2006/03/04/33629.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://bentuxinli.com" target="_blank">ҹAëƬƵ</a>| <a href="http://987566.com" target="_blank">޹ƷԲĵӰ</a>| <a href="http://qq2071.com" target="_blank">Ʒ</a>| <a href="http://www2019rz.com" target="_blank">ĻӰƬ߹ۿ</a>| <a href="http://my77789.com" target="_blank">ѹۿƵվ</a>| <a href="http://ydysmedia.com" target="_blank">ӰҹƵ</a>| <a href="http://zzhdrsqwx.com" target="_blank">57paoƵ</a>| <a href="http://www91pao.com" target="_blank">þþþþþþþùƷ </a>| <a href="http://gjwlgzs.com" target="_blank">һ</a>| <a href="http://cztbm.com" target="_blank">ŮƷþþ</a>| <a href="http://www2019rz.com" target="_blank">ɫһ</a>| <a href="http://www-474749.com" target="_blank">޹Ʒþһ</a>| <a href="http://7299jj.com" target="_blank">Ļ</a>| <a href="http://41xjj.com" target="_blank">Ůٸһ</a>| <a href="http://38miao.com" target="_blank">AV߹ۿ</a>| <a href="http://wenbye.com" target="_blank">ĻۺϾþ2</a>| <a href="http://zhaoxinwo.com" target="_blank">޾ƷƵ</a>| <a href="http://selaohu.com" target="_blank">˾Ʒձ18ͼ</a>| <a href="http://b2b-chinese.com" target="_blank">ŷ޹ۺAVþ</a>| <a href="http://35419470.com" target="_blank">AVɫɫWWW</a>| <a href="http://gzltchem.com" target="_blank">һëƬ</a>| <a href="http://342030.com" target="_blank">һ߹ۿ </a>| <a href="http://www-840012.com" target="_blank">޾Ʒ91ר</a>| <a href="http://1000hu.com" target="_blank">ձƵѹۿ</a>| <a href="http://bxd888.com" target="_blank">ĻӰ</a>| <a href="http://fsweicheng.com" target="_blank">91ȾþѾƷ99</a>| <a href="http://yisousou.com" target="_blank">ŷÿѵӰ߹ۿ</a>| <a href="http://rr7733.com" target="_blank">ҹվѰ߹ۿ</a>| <a href="http://7x966.com" target="_blank"> С˵ۺͼ</a>| <a href="http://lanoss.com" target="_blank">ĻŮһ </a>| <a href="http://qiyupu.com" target="_blank">պ߾Ʒһ</a>| <a href="http://88109a.com" target="_blank">һ</a>| <a href="http://jinlaifubuxiugang.com" target="_blank">һ</a>| <a href="http://zkqzdq.com" target="_blank">ۺһ뾫Ʒ</a>| <a href="http://haoda8.com" target="_blank">Ƶ߹ۿ</a>| <a href="http://gzmkqp.com" target="_blank">һëƬ**Ѳ</a>| <a href="http://927ff.com" target="_blank">ѿƵվ</a>| <a href="http://xmllhb.com" target="_blank">˳վþ99ȹ</a>| <a href="http://hbwhgd.com" target="_blank">޽վƵ</a>| <a href="http://xin-matai.com" target="_blank">պAVһ</a>| <a href="http://qmoread.com" target="_blank">弶18ѿ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>