<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>晨星★~雨泪</title>
    <description></description>
    <link>http://yuleihome.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>技术测试：你是oltp应用开发方面的高手吗？</title>
        <author>晨星★~雨泪</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yuleihome.javaeye.com">晨星★~雨泪</a>&nbsp;
          链接：<a href="http://yuleihome.javaeye.com/blog/211090" style="color:red;">http://yuleihome.javaeye.com/blog/211090</a>&nbsp;
          发表时间: 2008年07月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p style="text-align: center;"><span style="font-size: 12pt;">
	<strong>技术测试：你是oltp应用开发方面的高手吗？</strong>
</span>
</p>
<p><span style="font-size: 12pt;"><strong> </strong>
</span>

 
 
51099在线学习网发布 文章来源：网络收集 
发布时间：2006-05-25</p>
<p>&nbsp;</p>
<p>这里是一篇技术测试的文章，希望所有那些自称的和被人吹捧的技术高手来看一看，做做我们的几个测试，看看你属于那种层次的高手？<br />
<br />
以下测试是针对oltp开发而言的，对于做算法和桌面程序的，不是我这里要讨论的对象。<br />
<br />
好了，第一个考题：你能否做一个统计系统，功能上和易数差不多，能够通过页面嵌入方式记录一个网站的显示次数，来访分析，时段分析，日期分析等等。怎么，这就被难住了，那你算哪门子高手？啊哈，这位说了，这些都easy，手到擒来，很好，很好，看来在实现功能上，你具有了高手的基本能力，不过且慢，如果你认为可以实现这些功能就能自称做个易数统计出来，未免也太小瞧了技术这碗饭的分量，实现这些功能，就中国而言，至少有6位数的程序员可以作到，而设计这么一套系统（仅从功能考虑），也至少有5位数的程序员可以作到，明白吗？你不过是这里面平平常常的一个而已了，要高兴还早呢。<br />
<br />
第二个考题：呵呵，其实还是做这些功能，不过加个条件，我只给你一台PC Server（单/双PIII 733 512M Ecc内存 18G SCSI硬盘），你要支撑300万/天的请求调用。琢磨琢磨吧。<br />
简简单单的一个cgi 数据库，那是肯定死翘翘了，怎么办？<br />
第一，你要建立三层体系模型，后台数据库必须通过中间应用层和前台CGI分开。<br />
第二，合理分配使用共享内存空间，并合理通过IPC信号量防止内存区的读写冲突和死锁。<br />
第三，必要时改写web server原代码以获得效率最优化，比如改写apache server的http_log.c程序并重新编译。<br />
如果你对建立这么一套系统的整体架构非常清楚，那么恭喜，你可以在一个比较不错的网络公司做一个CTO了，中国能够清晰搭建这样系统的人，不过4位数而已（当然，能够在这样系统里进行编码工作的，肯定还是有5位数以上的，毕竟左右都是c语言而已）。<br />
知道为什么层出不穷那么多统计系统，虽然功能花哨，但是最后都撑不过易数，基本功不扎实，光靠功能花哨，那是没前途的。<br />
<br />
在这个领域做的比较好的，好耶，网易，adsunion，腾讯，太极链等几家而已。<br />
那些所谓广告交换没什么技术瓶颈的人，自己做一套大并访系统出来再说话。<br />
<br />
第三个考题，还是这些功能，（我够贫的是吧）我要你一天能记录下3000万次浏览日志，不但要统计，还要完整记录，以供随时查验，当然主机环境提升一下，处理数据的主机用集群，但是核心数据库还是用一台电脑的，这次用sun的小型机，比如RS6000什么的；还有这次再加个条件，数据损失不能超过 0.01%。<br />
这个已经不再象建立一个网站了，到象是大型电信的计费中心。你能胜任吗？<br />
这时候要求对整体操作系统，对C语言，对数据库核心都必须有深入骨髓的理解，甚至于，对于数据的导入导出和一些日志的数据库记录，你已经不能再用sql去写了！要利用数据库产品的核心接口按照其数据存储格式直接进行文件或设备块的读写操作！对于一些负载非常大而性能要求又非常高的系统，甚至你需要建立一套独立的数据库体系和数据结构体系。这不是玩笑，因为我领教过这样的系统。<br />
在中国，能搭建这样平台的高手，最多3位数而已。主要集中在电信计费领域，如亚信这样的企业。<br />
<br />
第四个考题，这次每天的请求不是3000万了，而是3万万，我没说胡话，3万万！不过你的工作变了，我不要你再做后面的数据处理，我只让你做一个前端报文转发处理，这次我很苛刻，给你一台PII的PC服务器，256M Ecc内存，而数据损失要求则绝对不能超过0.0001%，你的工作很简单，对来往的请求进行简单识别并转发到合适的应用服务器处理。<br />
你用web server转发？别开玩笑了！这时候，你已经别无选择，用汇编自己写一套报文处理程序，作为看守进程驻入内存并挂在接收报文的端口上，你对效率的理解，应当已经超出了对操作系统的认识，对编程语言的认识，而直接达到对CPU指令集的认识程度上，是的，你必须清楚自己的每一条汇编指令是不是已经达到最小的 CPU指令占用。必须能计算出分解和处理一条报文的流程需要多少CPU指令循环，是不是已经针对CPU的指令集达到了最大优化，当然，你还必须很熟悉 TCP/IP协议对每一种报文的格式定义和规范，不过这和汇编指令的效率优化而言，到不显得有多高深了。<br />
我们经常说CISCO是硬件产品服务商，错了！他们的利润主要就来自于这样的算法！！中国联想、华为等等都想强占这块肥肉的市场，但是在高端领域（其实并不是硬件高端，而是算法高端！），我们还是彻底的空白。<br />
庆幸的是，我知道国内有人在做这样的事情了，当宽带不可避免的成为主流的时候，这种算法的强度和要求，会成为攫取利润的最好途径。<br />
中国在这方面能达到标准的，又有几个人呢？<br />
<br />
出了这四个考题，没别的意思，我刚大学毕业的时候，也是自视甚高，因为当时的感觉是，和专业课的计算机作业相比（我是力学专业的，动不动要求编程解一个偏微分方程的收敛解，来分析什么旋流场的速度、温度等的分布），做wewebb开发简直毫无算法可言。再加上当时国内做web数据库的也少，动辄以为自己已经是满高手了，结果幸好跑到给电信做计费的企业混了一年，接触了国内最大的电信集中计费中心的解决方案（一直在运营，还不错），才知道敢情OLTP应用里面学问大的很，自己这点皮毛拿出来吹嘘简直是不知天高地厚。现在看看外面一堆和我当初一样的小毛孩子整天做两个烂程序就自诩高手，只好出来说几句。<br />
<br />
其实对于OLTP应用而言，功能的实现一般都非常容易，和那些从事力学、数学、物理等行业的数值计算相比简直毫无算法可言，而OLTP的技术难点主要在于性能，也就是你做一个桌面程序或算法程序，都不会面临并访过高的处理问题，但是做一个OLTP应用，无论如何你都必须直视一下子很多访问冲上来的情况，如果这个问题解决不了，无论多好的创意，多好的功能，都不会得到持续和长远的发展。<br />
<br />
由于很多创业者和投资者对技术不通或半通，他们往往拿一个性能指标有很大缺陷的东东当个宝贝，因为一般而言，开发出新东东大家都只是忙着测试功能，很少有对性能进行完整测评的，只有持续运营到一定阶段，并访达到一定程度，性能缺陷开始暴露，才临急抱佛脚，这时候造成的损失就很不核算，甚至是压根解决不了，只好放弃某种功能，从而使品牌信誉整体下降。<br />
<br />
加强算法基础，加强技术基础，少卖弄一些花里胡哨的东西，是走向技术高手的真正路线，那些今天学会了什么语言，明天又学会了什么语言的主儿，别吹嘘了，从70年代到现在，最值钱的程序员一直是写汇编和写标准C的，不为什么，因为这是真功夫。</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://yuleihome.javaeye.com/blog/211090#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 03 Jul 2008 14:57:28 +0800</pubDate>
        <link>http://yuleihome.javaeye.com/blog/211090</link>
        <guid>http://yuleihome.javaeye.com/blog/211090</guid>
      </item>
      <item>
        <title>大学时代影响我的人生的10件大事</title>
        <author>晨星★~雨泪</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yuleihome.javaeye.com">晨星★~雨泪</a>&nbsp;
          链接：<a href="http://yuleihome.javaeye.com/blog/211080" style="color:red;">http://yuleihome.javaeye.com/blog/211080</a>&nbsp;
          发表时间: 2008年07月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><br />
大学时代影响我的人生的10件大事<br />
[日期：2008-5-7] 	来源：internet  作者：未知 	[字体：大 中 小]<br />
<br />
　<br />
<br />
在大学里我对人生有了新的认识,也想清楚了很多问题.大一时候曾经迷茫,大二也曾经郁闷,&quot;郁闷&quot;似乎是现在大学生的口头禅.今天,这些感觉正随着时间慢慢褪去.我觉得这是很正常的. <br />
<br />
关于排名第一的那件事情,现在的想法还不系统,而思考也随着学习和生活还在继续,无法完全展开了.以后再细说吧. <br />
<br />
1.对人生和逆境的思索 <br />
2.放弃计算所,报考中国科大 <br />
3.不问别人在干什么,独立学习 <br />
4.学习数理逻辑 <br />
5.学习数学分析和高等代数 <br />
6.从技术到科学 <br />
7.两次参加数学建模比赛 <br />
8.阅读 &lt;&gt; <br />
9.用实践的方法对待计算机科学 <br />
10.学习并且掌握了Visual C++ 6.0 <br />
<br />
<br />
1.对人生和逆境的思索 <br />
<br />
这个话题很大.大学4年让我想清楚了很多问题,无奈,现在思路还没有彻底理清楚.很多结也没有完全解开.所以就不能细细展开了.我想以后总有一天我会再详细谈谈自己的看法.今天,我只能这么说:感谢上天让我经历的挫折和逆境.如果没有这些经历,今天的我也许就是另一个样子了. <br />
<br />
2.放弃计算所,报考中国科大 <br />
<br />
去年9,10月份,我曾经一度在报考学校上陷入了迷茫.我是一个讲求平衡的人,总觉得高考的结局差了一步,那么现在努力了,一定要弥补回来.中国科学院计算技术研究所,这个研制了新中国第一台电子计算机,第一个通用中央处理器,第一个大型超级服务器的高级科研机构,无疑是无数计算机专业的学子向往的地方,相比之下,中国科大计算机系则显然在名气上落后.按照现在学生一贯对学校评判的态度,名次越靠前,名气越大的学校,自然越好.暂且承认这个观点近似正确,但是,下一个推论却有了问题:&quot;如果成绩允许,这样的学校就越值得考&quot;. <br />
<br />
坦率的说,当时我在考虑选择哪所学校时并不因为成绩担心过. 我考虑的问题就在于:是不是学校牌子越大,名气越大,越&quot;牛&quot;,那么就越值得考呢?我觉得不是这样的.想想小学,高中,大学,&quot;考名牌&quot;这种想法真的是与生俱来的吗?小学考初中时,妈妈一定要我好好学习,考上当时我们区的重点初中的重点班,如果她不对我说,你考上那里我就带你去某某地方旅游,给你买某某东西,你考上那里就给妈妈争了一口气,就能和很多&quot;好孩子&quot;在一起玩,(暂且不说好孩子的评价标准),我不觉得所谓的重点班对我究竟有多大的吸引力,也没有觉得上好高中,好大学究竟能如何如何,我所希望的只是让爸爸妈妈满意,让他们高兴;而初中升高中,则不是妈妈对我说了,而是老师一直灌输的观点:&quot;我们班的同学都是精英,大家都要考上合肥一中,考不上的都是最差的&quot;.当时考试时挺怕自己考不上,但是,不是怕考不上好学校对自己的前途影响多大,而是怕被同学,家长看不起,怕令爸爸妈妈伤心. <br />
<br />
考名校是成才的必要条件,这个观点早已被很多教育家批评,而所谓&quot;成才&quot;的定义,官方的说法与世俗的看法也相差甚远.可以说,今天中国学生塑造起来的这种&quot;考名校&quot;的态度,这种竞争,是从小被外界左右的一种被动态度.他们并不知道为什么要上好高中,好大学,但是他们知道,差生是被批评,被鄙视的,是坏孩子,而考不上好学校的就是差生.他们的家长也以此作为评价孩子的标准,考不好就打骂批评,丧失信心,考好了,就可以炫耀于人前,满足了他们的虚荣心.逐渐地,再远一些,考上了所谓的热门专业,以后可能会有高工资,这也成为了炫耀的资本;在学生身上,这种虚荣心也在逐渐建立.在名牌大学学习,非名牌不上,持这种观点的人,有相当一部分都在被这种虚荣心左右. <br />
<br />
我不觉得这种无目的地,或者是为了满足虚荣心作出的选择有什么意义,因为一种人生观的扭曲,迟早会带给人迷茫.我的很多高中同学上了名校,却陷入迷茫,当然,他们的迷茫也促使我重新审视我自己:我没有上名校,那么我的精神状态与他们有什么不同呢?这种不同产生的原因又是什么呢? <br />
<br />
在去年9,10月份时,我一直困扰与这个问题,因为我又面临选择.我作出了选择,我就希望知道我为什么要选它,而且原因是不是足够充分.我绝对不愿意为了一个世俗的虚荣而选择,因为如果那样,我迟早还会迷茫. <br />
<br />
相比我的很多在名校学习的同学,我的大学生活是很愉快的.我学到了我想学的东西,而且还在大多数情况下毫无压力.可以说是一个非常宽松自由的环境.在 USTC的学习更是如此.我第一次感到不为考试学习,不为分数学习的乐趣.那是怎样的一种愉悦啊!也许这样,确实绕开了现形教育制度的很多弊端.虽然我的学校不好,可是我并没有觉得这有什么.因为我觉得这种没有压力,自由单纯的环境很适合我. <br />
<br />
因此,我觉得,究竟应该选择什么样的学校,或者大一点说,选择什么样的生涯,一定不能被某种虚荣心左右.要看看那种虚荣心是否值得自己为了这种虚荣心而作出牺牲.如果两者能统一起来最好,一旦发生冲突,则一定不能被虚荣心左右了自己.要找到适合自己发展的地方,适合发挥自己潜力的地方,这才是属于自己的学校,属于自己的生涯. <br />
<br />
今天,同学聚会时来了很多同学,有一些是以前被班主任定义为&quot;差生&quot;的同学,我觉得他们上了一所不知名的学校其实是一件好事.他们的心理得到了健康的发展,得到了尊重,潜力也可以发挥. <br />
<br />
3.不问别人在干什么,独立学习 <br />
今天,虽然中国的计算机教育与西方还有较大差距,但是,已经有很多名校开始采取了西方的教育模式,即不仅注重新技术的渗透,而且注重理论与实际的结合.北大,清华,中科大,都是在这方面做得很好的.可是,大部分学校都不可能完全这样做,因为无论是学生还是教师都不具备这种素质,结果是老师教不好就不教,而学生因为条件所限,也就不可能学到这些.如果消息相对闭塞,往往如同井底之蛙,远远落后于别人自己还不知道.这是很可悲的. <br />
<br />
所幸的是我不希望成为这样的人.我并不觉得自己究竟取得了多大的成绩,但是首先我承认自己看到了差距,并且尽自己的力量减小这种差距.现在这种差距仍然有很大, 可是,我会继续努力.这一切都要从大一下学期开始.离我们学校不远就有一所中国著名的大学:中国科学技术大学.骑车大约半个小时就可以到. <br />
<br />
不在自己学校学习,而到另一所学校学习,这似乎是很不安分的想法.但是,在国外这种情况完全是司空见惯的.经常有人看到Havard里面有MIT的实验室, 而Cambridge的教授在Oxford上课.即使在我国,也慢慢开始教学资源共享.可是,由于中国几千年封建统治,封而治之的观念根深蒂固.可是,为了学到我想学的东西,不迈出这一步,就可能什么也做不了了. <br />
<br />
迈出这一步是不容易的.周一早上,大家都背着书包去教学楼了,可是我却骑着车子出了校门.而在另一所学校,USTCer高人一等的态度则无形中加大了我的压力.非常幸运的是,我得到了高中几位好友的帮助.他们给了我很大的鼓励,让我慢慢习惯这种学习方式.而中科大教授们那种对科学的一丝不苟,严谨认真的态度和精彩的教学则让我欲罢不能.之后我特别盼望可以听到他们的讲课.于是学习的东西就越来越多,以致于修了计算机系,数学系的大部分课程.这期间不仅打下了坚实的专业课基础,而且中科大一向注重数理基础的特点也为我打下了很好的数学基础,不仅如此,也慢慢开始和国际接轨,看到了很多新的东西,听到了许多世界知名教授的报告,也了解了很多当前热门的研究方向. <br />
<br />
这样做的后果是在学校我成了一个另类.大家在教室看不到我,由于白天从外面回来直接就去了教室,往往是早上出去晚上睡觉时才回来.而大三以后,我搬回家住了,以至于他们一学期都没有见到我几面.老师点名N多次不到,恐怕早被老师恨出了个洞了.这一切阻力在大三下学期达到高潮:我的期末考试以计算机网络和数据库技术两门红灯收场.事实说明这两门红灯对我来说是毫无意义的.这似乎更是对我们学校教育体制的一种讽刺.唯一的好处是在准备下学期复试时,我有老师可以随时问问题了,还可以增进师生感情. <br />
<br />
我们专业很多人知道了我的这种行径,他们虽然很羡慕我学到了很多他们不了解的东西,可是却一直没有人也上这条贼船.虽然我今天已经非常习惯于这种学习方式了,但是我在他们身上看到,人的惰性如果一旦放纵,一旦安于现状,那会耽误多大的事情. <br />
<br />
这里还要指出一点:不要功利的认为这种行为只是为了考研.很多人为了考研到外校听几门专业课,这是毫无意义的.没有从一开始就打下扎实的基础和系统的体系结构,这种听课不可能有深刻的理解,而且很容易造成一知半解的结果.不要迷信自学.也许对死记硬背地东西还勉强有效,但是科学:如果人人都能自学去领悟它, 那么老师不是早就失业了吗? <br />
<br />
4.学习数理逻辑 <br />
<br />
学习数理逻辑在我逐步清晰的认识计算机科学本质的关键时刻起了助推的作用.这种推力是巨大的,也是决定性的.学习了数理逻辑,我对自己的追求再也无怨无悔. <br />
<br />
数理逻辑的思想非常深刻,直至今日我也没有悟出其中很多道理,而相信我的一生也不可能搞清楚其中的一小部分问题.很多问题我在近期阅读 &lt; &lt; 逻辑哲学&gt;&gt;时候还在逐步理清之中,尽管这样,却还是很简单的一部分.但是,随着数理逻辑的学习,我的思维日益趋向于演绎的和理性的.一种自觉逻辑在不时的影响我的思维,极大的提高了我得逻辑分析能力.在日常生活中,我很轻易的看到别人谈话的漏洞,而自己做的论证也能够刻意的加以严密化,这种思维方式的形成,数理逻辑起了非常大的作用. <br />
<br />
在学习数理逻辑时,我见到了陈小平教授.他的学术水平很高.数学系本科的背景使得他的讲授不仅具有数学本身的严密,又带有计算机科学家的灵活和直觉.因为他的教学,我成功的建立起了数理逻辑的理论体系,而且熟悉了里面很多繁复的证明,而 G&ouml;del的不完备性定理则带给我震撼和崇拜.他同时又非常善于启发大家独立思考问题,尽可能的让大家了解到数理逻辑的思想内涵,而不仅限于了解形式系统本身.如果没有他的指点和讲授,我是不可能逐步开始思考一些深入的问题.他当年讲课时提出的很多思考题,今天拿出来重新审视,仍然意犹未尽.他的讲课同时告诉了我们许多作研究的方法,同时流露出了献身科学的气概,令人敬仰. <br />
<br />
陈小平教授同时也是人工智能专家.人工智能与逻辑有着天然的联系.逻辑在某种程度上说是对人思维的建模,将之使用计算机程序设计语言实现,也就是在模拟人的思维.由于学习数理逻辑到了狂热的地步,大二下学期我花了一个月的时间就读完了Nils Nillson的 &lt;&gt;.可谓大开眼界.从此,我再也没能减少对人工智能,对逻辑学的痴迷.去年报考研究生, 我毫不犹豫地选择了多Agent系统作为研究方向.并且希望以后能够一直从事这方面的研究. <br />
<br />
我觉得,不严格的说,逻辑学是沟通哲学与数学的桥梁.向左迈一步,就是哲学,向右迈一步,就是数学.哲学和数学都是思维无比深刻的学科,对它们中任何一个领域的研究都会耗费毕生的精力.逻辑学也具有深刻的思想内涵,但是,更重要的是,数理逻辑让我慢慢看到了科学的魅力,科学的伟大.我就像刚刚迈上科学大厦阶梯的孩子,在慢慢推开富丽堂皇而又坚实厚重的大门.一缕缕金光向我射来,每向前迈出一小步,都会有巨大的惊喜.那么,还有什么能阻止我去畅游科学的大海呢? <br />
<br />
5.学习数学分析和高等代数 <br />
<br />
自从慢慢的认识计算机科学,发现它与数学的联系之后(虽然这种发现对于很多过来人而言是再显然不过的),深入学习数学就成为了我的当务之急.对于数学系学生而言,数学分析和高等代数是最基础不过的课程,也是体现了丰富的数学思想的课程.而这两门课我将毫无疑问首先下手. <br />
<br />
其实这个过程并不是完全顺着来的.真正开始学习数学分析是大三上学期,而学习高等代数是大三下学期.因为大二课程很紧,不可能有时间学习这些&quot;非计算机专业&quot;的东西.大三的课程也很紧,但是不学实在是不行了的.那时候的学习任务就非常繁重.现在想来,当然觉得累一点,苦一点也值啊! <br />
<br />
我感到非常幸运的是,我有幸聆听到了史济怀教授的数学分析和李尚志教授的线性代数.他们两位都是国内外声誉极高的数学家.史教授的研究领域是多复变几何函数论,给数学系讲授数学分析已经有30多年了,他的讲课特点是严谨稳重.他介绍的书中所有的定义不仅有精确的数学表达,而且易于理解.不仅如此,完全脱稿讲课是他独有的绝活:3个学期,两百多个学时,他在讲课的全过程,包括证明分析中的定理时,却从来不翻教材和讲义,一切了然于心,这种熟练令所有同学目瞪口呆.他的讲课很注重教学方法,不仅有课本的具体知识,而且注重数学思维的渗透,数学抽象的表达,这让我慢慢地看到了处理数学问题的许多方法.因此,他在证明多元函数微分学中著名的&quot;隐映射定理&quot;时,两节课8个黑板的证明如行云流水,思路异常清晰,完全没有冗长乏味之感,听了他的证明,很有点想自己证证的冲动,似乎数学在他的眼里就是一种直观思维的形式描述.也正是他的这种讲课,让我慢慢地略有所悟:数学与直观之间真的有某种微妙的联系吗?这个疑问后来在数理逻辑中得到了正式的回答.而经过这段对分析的学习,分析学的整个思想体系已经在我头脑中完整的建立起来了.它里面体现的思想和方法也是整个数学体系的一个缩影. <br />
<br />
李教授是代数方面的专家,也是全国教学名师.他的线性代数,数学试验都被评为全国精品课程.他的讲课风趣幽默,复杂抽象的概念和理论经过他的描述,似乎成了显然的东西.代数思想一点也不亚于分析,而线性代数作为抽象代数理论的一种具体化表述,使我在学习的过程中能够与抽象代数进行对比,发掘出形式化研究的一些方法和思路.很可惜的是由于时间的原因,高等代数我只学了一半,最深刻的理论&quot;若当标准型&quot;都没能学到.不过,以后我在读研时候一定要补上这一课. <br />
<br />
通过对数学分析和高等代数的学习,我的数学思维得到了培养和训练,逻辑日益清晰,思路也慢慢变得严密.为我学习数理逻辑,逐步领悟科学打下了坚实的基础.我知道,大部分人都没有运气同时听到他们两位的亲自授课,而我为自己能亲耳聆听而感到无比荣幸! <br />
<br />
6.从技术到科学 <br />
<br />
真正考虑什么是计算机科学是经历了一个过程的.大一刚入校时的想法很幼稚,以为计算机专业的学生理所当然的要成为程序员.在很多网站和论坛上,程序员似乎也被捧得很厉害,懂了VC++6.0可以炫耀一下,懂了Java,强人,会用EJB,更强,熟练掌握J2EE,.NET,Oracle9i,通过 MCSE,SCJP,哇塞~超级大牛.我在这种漩涡中也起哄了很长时间.大一买来了那本 &lt;&gt;,慢慢学会了设计Win32程序,开始向网络方面发展,打算作网络编程.有一天上学校的BBS上请教,第一次认识了Cauchy.他的建议是学习Java.当时比较经典的Java教材是 O&rsquo;Reilly出版的一套书,光入门书籍 &lt;&gt;就要72元.狠个心买了下来,狂学一暑假,算是会用了.之后有开始看 JSP,XML,EJB,Servelet Programming,一本接一本,J2EE的核心技术都差不错粗通了.做程序员的感觉真好!我那时这么想. <br />
<br />
可是,问题很快就出现了.学校学习的离散数学是干啥用的?为什么学校不能开一点介绍VC++,J2EE,.NET的课程?而我看得那些书,最后越来越觉得乏味.厚厚的一本书几乎就是命令大全.一个个冗长的函数调用,机械的设计过程不仅索然无味,而且几天之后又忘得一干二净.到底什么是计算机科学与技术专业学生要掌握的?计算机科学与技术专业毕业生究竟做什么呢?我一度陷入迷茫. <br />
<br />
阅读 Papadimitriou的 &lt;&gt;,算是第一次接触到理论计算机科学.形式语言,自动机理论,图灵机模型,NP完全问题,这些对我来说虽然陌生,却趣味无穷.那是大二上学期.之后,于Cauchy的几次交谈令我受益匪浅.他是学计算数学的,数学和计算机都很牛.他在和我谈话中,多次谈到,理解一种思想的重要性.我们学习的课程并不是每个都有丰富的思想,而那些有其思想内涵的东西是特别需要重视和加以思索的东西.多思考,抓住每门课程特有的思想,是学习科学的基本方法. <br />
<br />
随着离散数学学习的逐步深入和Cauchy的开导,我慢慢的发现了许多以前不曾注意的东西.近世代数的抽象是优雅而简洁,但是却在非常高的层次上对代数系统作出了让人赞叹的抽象;数理逻辑则以思想深邃著称.我慢慢地看到了形式逻辑与数学的关系,以致后来慢慢描绘出了科学的体系;图论则是非常具体的问题,但是它的算法和证明确处处闪烁着天才的构思.这是从事图及其他算法研究的常用手段.且不论我们学习这些东西就是算什么,但是,这些知识确实有着比VC++,J2EE更令我着迷的奇思妙想. <br />
<br />
随着学习的深入和各个专业知识的展开,我终于明白了现代计算机科学的体系.这些数学理论,电路理论就是现代计算机科学的基石,也慢慢学会了离散思维的方法和抽象.一副令人惬意的图画在我的脑海中慢慢浮现:19世界末20世纪处逻辑Frege发明的形式逻辑系统掀起了对数学形式化的热潮,在Hilbert的号召下全世界的数学家都参与到对数学系统的形式化和证明过程中.虽然这种梦想在初等数论形式系统中就失败了,却客观上促使人们重新展开计算,可计算性,可判定性的研究.Allan Turing的图灵机模型应运而生.而现代微电子技术使计算机由数学抽象成为了现实. <br />
<br />
我终于体会到了为什么很多人说:&quot;学计算机一定要数学好,计算机与数学密切相连&quot;.计算机根本上是数学的和哲学的.&quot;计算机科学是数学和哲学的女儿&quot;.从此,我不再迷茫.科学的魅力深深吸引了我,探索计算机科学成为了我人生的坐标,也影响了我整个大学的知识结构.这种影响还会继续.认识也会逐步深入. <br />
<br />
在这里我要特别感谢Cauchy,我的好友!谢谢你的启发和开导! <br />
<br />
7.两次参加数学建模比赛 <br />
<br />
2003年9月,我和Sunny,Cherry参加了全国大学生数学建模比赛,Thunder是我们的教练,之后于2004年2月,我们又参加了全美大学生数学建模比赛.这两次比赛,我们分别获得了一等奖和二等奖,可以说成绩还算不错.但是,它的意义并不仅仅在此. <br />
<br />
数学建模比赛注重的是过程,而不是结果.这个过程是一个科学研究过程的缩影.我们从拿到一道题目,分析问题,提出若干个切入点,考虑要使用的数学或者其他知识,之后,大家开始在各大搜索引擎和检索引擎上检索这些领域的论文(其中不乏英文论文),分头阅读,相互讨论.通常对于一个给定的问题,或多或少都有一些与之相关的论文,而我们就在此基础上,结合其他的方法和思想加以改进,提出新的方法,并且加以评价.在整个过程中,要使用数学手段和计算机完成数据处理, 曲线拟合和数值分析,统计归类,甚至编制计算机程序完成反覆地计算.这些都是在科学研究中非常普遍的方法.建模的最后一步是完成论文.这个论文虽然不是严格意义上的学术论文,但是架势却一点也不亚于它.包括目录,摘要,问题阐述,模型假设,概要分析,详细建模,模型验证,有缺点讨论,参考文献,一项也不能少.我们全国赛的论文接近一万字,美国赛则有八千多词,都有三十多页,今天看来,在3天的时间完成似乎是不可想象的事情,可是我们真的完成了.在这个过程中,我们也学会了怎样撰写论文. <br />
<br />
而在另一个侧面,数学建模比赛的意义则更为深远.它教会了我们怎样处理团队合作中遇到的各种问题. 在建模比赛的3天里,分歧几乎是随时都有的,但是,一旦大家闹了别扭,固执己见,无疑对比赛不利,怎样处理个人与集体的关系,怎样避免庸俗的小风头主意和个人主意,在这里似乎是说起来容易做起来难;另一个方面,如果对于一个问题长期没有思路,大家都会焦躁,在一个高效的团队里,队员之间不会互相埋怨,互相指责,而是齐心协力,共度难关,同样,这些也是说起来容易做起来难;最后一点,比赛的三天里,后面两天几乎是通宵不睡,白天接着干活,这对大家都是体力和毅力上的巨大的考验,忘我工作,大公无私,为他人着想,在这里就是巨大的精神动力.这几点似乎从小学开始就天天挂在嘴上,可是,我真的在那两次比赛中才得到了深刻的体会,而我们三人也结下了深厚的友谊. <br />
<br />
参加过数学建模的过来人说:&quot;三天的比赛会让你终生难忘&quot;,我觉得一点也不夸张. <br />
<br />
8.阅读 &lt;&gt; <br />
<br />
大三上学期,我听了熊悦讲师的操作系统课.他是中国科大少年班毕业,后来读了博士,思维非常活跃,而他的课上,也首次使用了全英文教学,使用的课本就是美国著名学者Abraham Siberschatz的 &lt;&gt;.我大一时候就曾经尝试看英文教材,当时看的是Papadimitriou 的 &lt;&gt;,无奈本身计算理论的内容就够艰深了,还用了英文看,显然困难重重.一直到大三上学期学习操作系统时,  &lt;&gt;称为了我第一本从头至尾完整阅读了的英文教材,从此也就开始阅读了大量的英文经典教材. <br />
<br />
看英文书,最直接的受益就是英语水平.外国人写书的风格是&quot;娓娓而谈&quot;,以聊天一样的亲切口吻展开,把每一个英文句子翻译成中文理解是不现实的.所幸的是我以前英文水平并不烂,而学OS时这本书由偏偏没有中文译本,老师的课件又完全按书上来(也是英文的),这就把我给逼上梁山,非看不可了.一个Chapter一般有三十多页,而老师几乎是一次大课上完的, 晚上就不得不在教室里,花上4个钟头把书仔细看一遍.开始看得特别慢,看了3,4页以后就没办法集中精力了,可是,慢慢地,看书时候开始使用英文思维了, 直接使用英文理解书中的内容而不是先翻译成汉语了,甚至笔记也开始使用英文作了.有一天,连续看了2,3个小时没抬头,那种感觉特别奇妙,好像头脑里的东西都编程英语的了.我慢慢地感到什么叫做掌握一门语言了.可是,自从那时以后,室友开始对我提意见了:&quot;你怎么说梦话还用英语啊!&quot;我感到很不好意思. <br />
<br />
英语水平得到了巨大的飞跃,应该就是那个时候.我觉得自己正在慢慢地与这门外语开始了亲密接触.以至于后来做考研阅读,完型填空时,往往总是&quot;蒙&quot;对正确答案.我没有办法清晰的解释清楚,只是觉得这个答案理所当然的应该选,其他答案理所当然的荒谬.确实,看懂一篇文章与理解一篇文章的差别是很大的,而怎样准确的&quot;理解&quot;,则要依靠长期培养出来的语感和英语思维. <br />
<br />
这件事的另一个巨大影响是:从此以后,阅读英文教材就一发不可收拾.计算机科学方面的英文教材国内引进的非常多,很多是享有世界声誉的大科学家的经典之作,写得相当精彩.在英语上障碍的扫除使得我可以进一步阅读这些教材,包括Andrew.S.Tanenbaum的 &lt;&gt;, &lt;&gt;,Abraham Siberschatz 的 &lt;&gt;, &lt;&gt;,Alfred Aho的 &lt;&gt;,Stuart Russell的 &lt;&gt;,这些书让我对计算机科学的专业知识有了深入系统的认识. <br />
<br />
英语水平的提高对于我后来阅读很多英文论文起到了至关重要的作用,深刻感到学好英语的作用.没有扎实的英语水平,真的是寸步难行! <br />
<br />
9.用实践的方法对待计算机科学 <br />
<br />
计算机科学是很注重实践的科学:但是,这并不因为这计算机科学专业的学生就理所当然是程序员.我并不是从一开始就认识到这个问题,但是,这种注重实践的态度却非常有助于我掌握许多课程.大一的时候,我曾经在网上查到过MIT,Stanford,CMU等国际名校对计算机专业本科生的培养计划,真是大吃一惊: 他们在学习计算机原理时,要自己设计一台逻辑计算机,自己完成CPU设计,总线设计,存储器设计,I/O设计,甚至制作集成电路,几乎就是自己造一台计算机;他们在学习编译原理时,要自己完成一种语言的完全编译器的开发,一直生成到目标代码;他们在学习操作系统时,要自己开发一个full- functional OS,在学习计算机网络时,要编写程序实现某些协议.这个打击使我认识了一个问题:什么叫实践能力?不是攒机,不是做花哨的网页, 不是做吸引人的Windows程序,所谓实践能力是把理论运用到实际中的能力.今天我们所津津乐道的&quot;实践能力&quot;,实际上是一批技术工人的能力. <br />
<br />
似乎这是当代中国高等教育,尤其是计算机专业高等教育面临的重大危机.所幸的是我对此有了一点想法,并且特别注重培养自己.当然,这种培养只是相对大多数人而言自己多做了一些事情.我在掌握了VC++之后,这一切就可以开始了.在学习数据结构时,我完成了从线性表到图的所有数据结构的定义和算法的实现,做成了一个迷你型的Template Lirary,虽然有一些Bug,设计上也未必灵活,但是确加深了我对DS的认识,提高了设计大型程序的能力;在学习计算机组成原理时,我一丝不苟地设计微指令,编写微程序,和我的组员一切把一个有一千多个0,1数字的指令表通过数字开关打到ROM中,现在想起来也真是后怕;在学习编译原理时,我阅读了PL/0解释器的源码,并且自己完成了C-解释器的设计和实现;学习操作系统时,则完成了部分对nachos操作系统的完善工作,最重要的是阅读了MINIX的源码.操作系统是一门理论极难与实际联系的课程,许多人学完后对OS仍然认识模糊,所幸的是,这些努力使得我的认识要比他们深刻一些. <br />
<br />
这里要感谢我们专业对学生这种实践能力培养的重视.老师会布置大家完成大程序,大作业,只要你自己认真自觉的完成,实践能力就可以培养起来.但是,很多同学对此都不以为然,盲目追求考试成绩而忽略实践能力,实在是得不偿失. <br />
<br />
10.学习并且掌握了Visual C++ 6.0 <br />
<br />
虽然很多人对Microsoft推行的东西总是带着一点不屑,我却在大一对计算机科学的认识还很模糊的时候学了它.直到现在,我周围的同学中,能熟练使用 VC++6.0的人并不多,这并非是因为大家对微软的东西的抵制,而是因为很多人学不好VC++6.0.事实上,完全掌握它并不是很容易的事情. <br />
<br />
我学习VC++6.0也颇费周折.学校不开这门课,只教大家PASCAL语言,所以,只好自己自学.那时候了解很少,以为不学C,C++,直接看VC++也没问题,结果花了65元买了一本 &lt; &lt;实用Visual C++6.0教程&gt;&gt;,却看得一头雾水.慢慢才知道,VC++6.0 不是一种语言,而是一个IDE.郁闷之余,只好又从C,C++学起.几个月之后,C++已经用得比较熟练了,开始再看这本书,却还是一头雾水.因为使用 MFC类库,AppWizard辅助编制的程序完全不同于使用C编写的面向过程的程序,也不同于C++直接编写的面向对象程序,我对这种程序的机构完全摸不着头脑.一时间真是郁闷至极:难道65元就这么白费了吗?(那时候以为65元一本的计算机书很贵了,后来才发现,这种价格实际上是很平庸的.) <br />
<br />
一个偶然的机会,看到了机械工业出版社的 &lt;&gt;,随便翻翻,却发现它讲的内容与我原来那本 &lt; &lt;实用Visual C++6.0 教程&gt;&gt;大不相同.它从WinAPI讲起,讲基本的消息队列和消息发射,讲窗口的定制和注册,我才首次知道Win32程序与控制台程序的区别.现在虽然觉得这个&quot;豁然开朗&quot;简直幼稚得可笑,可自从学习了WinAPI编程,再进入MFC,就顺理成章,水到渠成了.在以后开发中也逐渐学会了自己看MSDN文档,也再也不用花那么多钱买技术方面的书了.受此影响,在学习其他软件如Matlab,Mathematica时,也学会了直接利用帮助文档学习,真是省了不少银子.今天看到很多人围在图书城那些花花绿绿的书架边乐此不疲的时候,不免心生得意. <br />
<br />
Visual C++6.0 的掌握,最重要的价值在于实现了许多程序员的一句话:&quot;编程语言不用学太多,学一两个,能彻底掌握就好.&quot;学习了VC++之后不久,我又看了一些J2EE 方面的书,可是由于周围环境的影响,使用VC++较多.由于VC++使用很熟,许多课程设计都得以顺利完成,从而得到了大量的编程训练,提高了系统分析设计,程序调试方面的能力和技巧.这些对于一个计算机专业的学生来说,是最基础不过的事情.但是我发现很多人这方面的基础都很不扎实. <br />
<br />
今天我使用VC++设计完成的Windows工程已经有二十多个,包括数据库课程设计完成的图书管理系统,操作系统课程设计完成的多线程调度演示系统,编译原理课程设计完成的C-解释器,计算机网络课程设计完成的多人聊天室程序,以及人工智能课程设计完成的刺激-响应Agent,8字谜问题,人机五子棋博弈程序等等. <br />
<br />
结论:你可以抵制微软不学习Visual C++6.0,但是你必须熟练的掌握一门具有现代程序设计特点的编程语言. <br />
<br /></p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://yuleihome.javaeye.com/blog/211080#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 03 Jul 2008 14:45:02 +0800</pubDate>
        <link>http://yuleihome.javaeye.com/blog/211080</link>
        <guid>http://yuleihome.javaeye.com/blog/211080</guid>
      </item>
      <item>
        <title>Discuz! 数据库结构参考（下）</title>
        <author>晨星★~雨泪</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yuleihome.javaeye.com">晨星★~雨泪</a>&nbsp;
          链接：<a href="http://yuleihome.javaeye.com/blog/209602" style="color:red;">http://yuleihome.javaeye.com/blog/209602</a>&nbsp;
          发表时间: 2008年06月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>Discuz! 数据库结构参考（下）<br />
cdb_polls<br />
数据表功能介绍：投票内容信息表。<br />
tid--mediumint(8)--投票贴子的主题ID<br />
pollopts--mediumtext--投票贴子的投票项目<br />
cdb_posts<br />
数据表功能介绍：论坛所有贴子信息表。<br />
pid--int(10)--贴子的ID<br />
fid--smallint(6)--贴子所在版块的版块ID<br />
tid--mediumint(8)--贴子所在主题的主题ID<br />
aid--tinyint(1)--贴子里的附件ID<br />
author--varchar(15)--贴子的发表者的会员名称<br />
authorid--mediumint(8)--贴子的发表者的会员UID编号<br />
subject--varchar(80)--贴子的标题<br />
dateline--int(10)--发表贴子的日期时间<br />
message--mediumtext--贴子的内容<br />
useip--varchar(15)--发表者的IP<br />
usesig--tinyint(1)--显示发表者的个性签名<br />
bbcodeoff--tinyint(1)--是否允许Discuz!代码<br />
smilyoff--tinyint(1)--是否允许使用表情<br />
parseurloff--tinyint(1)--禁用URL识别<br />
rate--smallint(6)--贴子里用户评分记录<br />
ratetimes--tinyint(3)--被评分的次数<br />
cdb_ranks<br />
数据表功能介绍：用户发贴等级记录。<br />
rankid--smallint(6)--等级记录的ID<br />
ranktitle--varchar(30)--等级头衔<br />
postshigher--smallint(6)--发贴数高于<br />
stars--tinyint(3)--星星数<br />
color--varchar(7)--头衔颜色<br />
cdb_searchindex<br />
数据表功能介绍：搜索结果缓存。<br />
searchid--int(10)--搜索结果的ID<br />
keywords--varchar(255)--关键字<br />
searchstring--varchar(255)--储选项，例如搜索的版块，用户名，全文搜索等等，是拼凑出来的字串<br />
useip--varchar(15)--使用搜索功能的会员IP<br />
uid--mediumint(10)--使用搜索功能的会员的UID编号<br />
dateline--int(10)--使用搜索功能的日期时间<br />
expiration--int(10)--过期的时间，下次搜索如果过了这时间就会重新搜索一次，更新资料<br />
threads--smallint(6)--搜索结果的主题数<br />
tids--text--搜索结果的贴子ID<br />
cdb_sessions<br />
数据表功能介绍：在线用户信息表（临时表）。<br />
sid--char(6)--是由Dz自己生成的一个随机的session号<br />
ip1、ip2、ip3、ip4--tinyint(3)--IP地址段，1，2，3，4各代表IP的四段<br />
uid--mediumint(8)--会员的UID编号<br />
username--char(15)--会员的名称<br />
groupid--smallint(6)--会员的用户组<br />
styleid--smallint(6)--会员所用的风格ID<br />
invisible--tinyint(1)--会员是否隐身状态<br />
action--tinyint(1)--会员的动作<br />
lastactivity--int(10)--最后活动记录时间<br />
fid--smallint(6)--所在的版块ID<br />
tid--mediumint(8)--所在的贴子ID<br />
cdb_settings<br />
数据表功能介绍：论坛基本设置相关。<br />
（包括后台基本设置、注册人数、最多在线人数、功能、其它设置等等。）<br />
variable--varchar(32)--变量名*<br />
value--text--改变变量的具体值*<br />
cdb_smilies<br />
数据表功能介绍：表情设置。<br />
id--smallint(6)--表情的ID<br />
type--enum('smiley', 'icon')--表情的类型（即贴子里的表情和主题图标两类）<br />
code--varchar(10)--smilies代码<br />
url--varchar(30)--表情文件名的路径<br />
cdb_stats<br />
数据表功能介绍：论坛统计信息。<br />
type--varchar(20)--各类的统计，包括使用IE的统计、流量的统计等等<br />
var--varchar(20)--各类统计的值，随上面的type而改变，如果为IE统计，则显示使用IE BROWSER的多<br />
少；如果为流量统计，则显示多少每时段的数值等等<br />
count--int(10)--计数<br />
cdb_styles<br />
数据表功能介绍：风格信息表。<br />
styleid--smallint(6)--风格的ID<br />
name--varchar(20)--风格的名称<br />
available--tinyint(1)--是否可用<br />
templateid--smallint(6)--对应的模板ID<br />
cdb_stylevars<br />
数据表功能介绍：风格的配置信息。<br />
stylevarid--smallint(6)--自动增加的编号，用来唯一的确定一条记录<br />
styleid--smallint(6)--风格的ID<br />
variable--text--对应风格的对应部分的名字，比如背景色<br />
substitute--text--对应风格的对应部分的取值<br />
cdb_subscriptions<br />
数据表功能介绍：记录订阅主题的相关信息。<br />
uid--mediumint(8)--会员的UID编号<br />
tid--mediumint(8)--会员所订阅的主题ID<br />
email--varchar(60)--会员的EM<br />
lastnotify--int(10)--最后订阅的主题记录<br />
cdb_templates<br />
数据表功能介绍：模板信息表。<br />
templateid--smallint(6)--模板的ID<br />
name--varchar(30)--模板名称<br />
charset--varchar(30)--模板所用语言编码类型<br />
directory--varchar(100)--模板所在templates目录<br />
copyright--varchar(100)--模板的版权信息<br />
cdb_threads<br />
数据表功能介绍：论坛所有主题信息表。<br />
tid--mediumint(8)--主题的ID<br />
fid--smallint(6)--主题所在版块的版块ID<br />
creditsrequire--smallint(6)--需设置多少积分才能浏览该主题<br />
iconid--smallint(6)--主题图标<br />
author--char(15)--主题的会员名称<br />
authorid--mediumint(8)--主题的会员UID编号<br />
subject--char(80)--主题的标题<br />
dateline--int(10)--发表日期<br />
lastpost--int(10)--最后发表日期<br />
lastposter--char(15)--最后发表的会员名称<br />
views--mediumint(8)--人气值（即浏览数）<br />
replies--smallint(6)--回复数<br />
displayorder--tinyint(1)--显示顺序<br />
highlight--tinyint(1)--是否为高亮<br />
digest--tinyint(1)--是否为精华贴<br />
poll--tinyint(1)--是否为投票贴<br />
attachment--tinyint(1)--是否为有附件的主题<br />
closed--mediumint(8)--主题是否关闭事实上除了关闭以外，当主题被移动，并保留移动标记时，<br />
closed  中会存放移动后的目标tid。即当&gt;1时，为被移动，=1时为被关闭，=0时普通帖子<br />
cdb_usergroups<br />
数据表功能介绍：用户组主信息表。<br />
groupid--smallint(6)--用户组ID编号<br />
type--enum('system', 'special', 'member')--用户组类型（即三种：系统管理组、特别用户组、普通<br />
会员组）<br />
grouptitle--char(30)--用户组头衔<br />
credithigher--int(10)--积分大于<br />
creditlower--int(10)--积分小于<br />
stars--tinyint(3)--星星数<br />
color--char(7)--头衔颜色<br />
groupavatar--char(60)--组头像<br />
allowstatus--tinyint(1)--是否允许自定义头衔<br />
allowavatar--tinyint(1)--是否允许自定义头像<br />
allowvisit--tinyint(1)--是否允许访问论坛<br />
allowview--tinyint(1)--是否允许浏览贴子<br />
allowpost--tinyint(1)--是否允许发贴子<br />
allowpostpoll--tinyint(1)--是否允许发投票<br />
allowgetattach--tinyint(1)--是否允许下载附件<br />
allowpostattach--tinyint(1)--是否允许发表附件<br />
allowvote--tinyint(1)--是否允许参与投票<br />
allowsearch--tinyint(1)--是否允许使用搜索功能<br />
allowkarma--tinyint(1)--是否允许对用户评分<br />
allowinvisible--tinyint(1)--是否允许隐身<br />
allowsetviewperm--tinyint(1)--是否允许设置贴子权限（即设置积分查看）<br />
allowsetattachperm--tinyint(1)--是否允许设置附件权限<br />
allowhidecode--tinyint(1)--是否允许使用HIDE代码<br />
allowsigbbcode--tinyint(1)--是否允许Discuz!代码<br />
allowsigimgcode--tinyint(1)--是否允许IMG代码<br />
allowviewstats--tinyint(1)--是否允许查看统计<br />
maxpmnum--smallint(6)--最大短信收件箱容量<br />
maxsigsize--smallint(6)--最大签名字节数<br />
maxkarmarate--tinyint(3)--最大评分数<br />
maxrateperday--smallint(6)--每日最多评分数<br />
maxattachsize--int(10)--附件上传最大尺寸<br />
attachextensions--char(255)--允许的附件类型<br />
cdb_words<br />
数据表功能介绍：不良词语过滤。<br />
id--smallint(6)--每项自动产生的ID编号<br />
admin--varchar(15)--操作人记录<br />
find--varchar(60)--找到的不良词语<br />
replacement--varchar(60)--替换不良词语的内容  </p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://yuleihome.javaeye.com/blog/209602#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 30 Jun 2008 09:40:32 +0800</pubDate>
        <link>http://yuleihome.javaeye.com/blog/209602</link>
        <guid>http://yuleihome.javaeye.com/blog/209602</guid>
      </item>
      <item>
        <title>Discuz! 数据库结构参考（上）</title>
        <author>晨星★~雨泪</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yuleihome.javaeye.com">晨星★~雨泪</a>&nbsp;
          链接：<a href="http://yuleihome.javaeye.com/blog/209601" style="color:red;">http://yuleihome.javaeye.com/blog/209601</a>&nbsp;
          发表时间: 2008年06月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>Discuz! 数据库结构参考（上）<br />
cdb_access--当某用户对某些版块有特定的权限的时候，该表记录了该用户在这些版块有什么权限。<br />
cdb_admingroups--管理模组信息表<br />
cdb_adminsessions--后台管理登录记录<br />
cdb_announcements--论坛公告信息<br />
cdb_attachments--附件信息表<br />
cdb_attachtypes--附件的所性类型（即后台的附件类型设置，如果没有设置，默认为空。）<br />
cdb_banned--IP禁止信息表<br />
cdb_bbcodes--Discuz!代码信息表<br />
cdb_buddys--会员的好友列表<br />
cdb_caches--统计页面的缓存<br />
cdb_failedlogins--非法登录后台的记录<br />
cdb_favorites--记录用户收藏主题的相关信息<br />
cdb_forumlinks--联盟论坛<br />
cdb_forums--论坛版块信息表<br />
cdb_karmalog--用户评分记录<br />
cdb_members--论坛所有会员主信息表<br />
cdb_onlinelist--在线会员信息<br />
cdb_plugins--插件信息表<br />
cdb_plugins_settings--插件的配置设置信息相关<br />
cdb_pms--论坛短信数据表<br />
cdb_polls--投票内容信息表<br />
cdb_posts--论坛所有贴子信息表<br />
cdb_ranks--用户发贴等级记录<br />
cdb_searchindex--搜索结果缓存<br />
cdb_sessions--在线用户信息表（临时表）<br />
cdb_settings--论坛基本设置相关。（包括后台基本设置、注册人数、最多在线人数、功能、其它设置<br />
等等。）<br />
cdb_smilies--表情设置<br />
cdb_stats--论坛统计信息<br />
cdb_styles--风格信息表<br />
cdb_stylevars--风格的配置信息<br />
cdb_subscriptions--记录订阅主题的相关信息<br />
cdb_templates--模板信息表<br />
cdb_threads--论坛所有主题信息表<br />
cdb_usergroups--用户组主信息表<br />
cdb_words--不良词语过滤<br />
cdb_access<br />
数据表功能介绍：当某用户对某些版块有特定的权限的时候，该表记录了该用户在这些版块有什么权限<br />
。<br />
uid--mediumint(8)--会员的UID编号<br />
fid--smallint(6)--版块的ID号<br />
allowview--tinyint(1)--是否允许查看贴子<br />
allowpost--tinyint(1)--是否允许发贴<br />
allowreply--tinyint(1)--是否允许回复<br />
allowgetattach--tinyint(1)--是否允许下载附件<br />
cdb_admingroups<br />
数据表功能介绍：管理模组信息表<br />
admingid--smallint(3)--管理组的ID<br />
admintitle--char(30)--管理组的头衔<br />
adminglobal--tinyint(1)--是否拥有全局权限<br />
alloweditpost--tinyint(1)--是否允许编辑贴子<br />
alloweditpoll--tinyint(1)--是否允许编辑投票<br />
allowdelpost--tinyint(1)--是否允许删除贴子<br />
allowmassprune--tinyint(1)--是否允许批量删贴<br />
allowcensorword--tinyint(1)--是否允许词语过滤<br />
allowviewip--tinyint(1)--是否允许查看IP<br />
allowbanip--tinyint(1)--是否允许封锁IP<br />
allowedituser--tinyint(1)--是否允许编辑用户<br />
allowbanuser--tinyint(1)--是否允许禁止用户来访<br />
allowpostannounce--tinyint(1)--是否允许发布论坛公告<br />
allowviewlog--tinyint(1)--是否允许查看后台的记录<br />
allowhighlight--tinyint(1)--是否允许高亮主题<br />
allowdigest--tinyint(1)--是否允许精华主题<br />
allowclose--tinyint(1)--是否允许关闭主题<br />
allowmove--tinyint(1)--是否允许移动主题<br />
allowtop--tinyint(1)--是否允许固顶主题<br />
allowmerge--tinyint(1)--是否允许合并主题<br />
allowsplit--tinyint(1)--是否允许分割主题<br />
disablepostctrl--tinyint(1)--发贴不受限制<br />
cdb_adminsessions<br />
数据表功能介绍：后台登录记录。<br />
uid--mediumint(8)--用户的UID编号<br />
ip--char(20)--登录时记录的IP<br />
dateline--int(10)--登录的日期时间<br />
errorlog--tinyint(1)--密码错误次数<br />
cdb_announcements<br />
数据表功能介绍：论坛公告信息。<br />
id--smallint(6)--公告的ID<br />
author--varchar(15)--公告的发布者<br />
subject--varchar(250)--公告的标题<br />
posturl--varchar(250)--内容的URL链接<br />
displayorder--tinyint(3)--显示顺序<br />
starttime--int(10)--起始时间<br />
endtime--int(10)--结束时间<br />
message--text--公告内容<br />
cdb_attachments<br />
数据表功能介绍：论坛附件信息表<br />
aid--mediumint(8)--附件的ID<br />
tid--mediumint(8)--附件所在主题的ID<br />
pid--int(10)--附件所在贴子的ID<br />
uid--mediumint(8)--所发附件的会员的ID编号<br />
creditsrequire--smallint(6)--下载要求，即所需多少积分才能看到/下载附件<br />
filename--char(100)--上传时附件的文件名<br />
filetype--char(50)--上传附件的类型<br />
filesize--int(10)--附件文件的大小<br />
attachment--char(100)--上传后的附件的文件名<br />
dateline--int(10)--上传/最后更新附件的日期时间<br />
downloads--smallint(6)--被下载次数<br />
cdb_attachtypes<br />
数据表功能介绍：附件类型信息。<br />
id--smallint(6)--记录附件类型设置的ID，每条对应一个ID<br />
extension--char(10)--类型设置时的扩展名<br />
maxsize--int(10)--控制最大上传大小<br />
cdb_banned<br />
数据表功能介绍：被禁IP的信息记录。<br />
id--smallint(6)--被禁IP的列表的ID<br />
ip1、ip2、ip3、ip4--smallint(3)--IP地址段，1，2，3，4各代表IP的四段<br />
admin--varchar(15)--操作者记录<br />
dateline--int(10)--封IP的时间<br />
expiration--int(10)--自动解封的时间<br />
cdb_bbcodes<br />
数据表功能介绍：Discuz!代码信息表。<br />
id--mediumint(8)--标签的ID<br />
available--tinyint(1)--是否可用<br />
tag--varchar(100)--标签名称<br />
replacement--text--替换内容<br />
example--varchar(255)--例子<br />
explanation--text--解释说明<br />
params--tinyint(1)--参数个数<br />
nest--tinyint(3)--嵌套次数<br />
cdb_buddys<br />
数据表功能介绍：会员的好友列表。<br />
uid--mediumint(8)--用户的UID编号<br />
buddyid--mediumint(8)--会员所加好友的好友UID编号<br />
cdb_caches<br />
数据表功能介绍：统计页面的缓存。<br />
cid--int(10)--缓存时所自动生成的ID<br />
ckey--varchar(80)--缓存名称<br />
cval--text--缓存内容<br />
dateline--int(10)--页面缓存的时间<br />
extr--varchar(80)--目前没用到*<br />
cdb_failedlogins<br />
数据表功能介绍：非法登录后台的记录。<br />
ip--char(15)--非法登入者的IP<br />
count--tinyint(1)--登入的次数<br />
lastupdate--int(10)--最后更新日期<br />
cdb_favorites<br />
数据表功能介绍：记录用户收藏主题的相关信息。<br />
uid--mediumint(8)--用户的UID编号<br />
tid--mediumint(8)--会员收藏主题的主题ID<br />
cdb_forumlinks<br />
数据表功能介绍：联盟论坛。<br />
id--smallint(6)--每项联盟论坛生成一个顺序ID<br />
displayorder--tinyint(3)--显示顺序<br />
name--varchar(100)--网站名称<br />
url--varchar(200)--网站地址<br />
note--varchar(200)--网站说明<br />
logo--varchar(100)--LOGO地址<br />
cdb_forums<br />
数据表功能介绍：论坛版块信息表。<br />
fid--smallint(6)--版块的ID<br />
fup--smallint(6)--所在上级版块的ID<br />
type--enum('group', 'forum', 'sub')--版块的类型，即：group（分类）、forum（默认版块）、sub<br />
（下级子版）<br />
icon--varchar(50)--版块图标<br />
name--varchar(255)--版块名称<br />
description--varchar(255)--版块简介<br />
status--tinyint(1)--是否在论坛上显示<br />
displayorder--tinyint(3)--各版块显示顺序<br />
moderator--varchar(255)--版主名单<br />
styleid--smallint(6)--所用的风格ID<br />
threads--mediumint(8)--共有多少主题的统计<br />
posts--mediumint(8)--共有多少贴子的统计<br />
lastpost--varchar(110)--最后发帖用户名，发帖时间，标题这三个信息组成的字串<br />
allowsmilies--tinyint(1)--是否允许使用表情<br />
allowhtml--tinyint(1)--是否允许使用HTML<br />
allowbbcode--tinyint(1)--是否允许使用Discuz!代码<br />
allowimgcode--tinyint(1)--是否允许使用IMG代码<br />
postcredits--tinyint(3)--发新贴加积分的数目<br />
replycredits--tinyint(3)--回复加积分的数目<br />
password--varchar(12)--论坛版块的访问密码<br />
viewperm--varchar(100)--浏览版块许可<br />
postperm--varchar(100)--发贴子许可<br />
replyperm--varchar(100)--回复主题许可<br />
getattachperm--varchar(100)--下载附件许可<br />
cdb_karmalog<br />
数据表功能介绍：用户评分记录。<br />
kid--int(10)--评分记录的ID<br />
uid--mediumint(8)--评分人的UID编号<br />
pid--int(10)--被评分的贴子的ID<br />
dateline--int(10)--评分的操作时间<br />
score--tinyint(3)--评分所加减的积分<br />
cdb_members<br />
数据表功能介绍：论坛所有会员主信息表。<br />
uid--mediumint(8)--用户的UID编号<br />
username--varchar(15)--用户ID的名称<br />
password--varchar(32)--用户的登录密码（MD5）<br />
secques--varchar(8)--安全提问信息<br />
gender--tinyint(1)--性别<br />
adminid--smallint(3)--管理组ID号（1为管理员、2为总版主、3为版主、0表示否，即非管理组，-1表<br />
示                      特殊组及除了1，2，3以外的系统组（即4，5，6，7，8组））<br />
groupid--smallint(6)--用户组ID号<br />
regip--varchar(15)--注册时的IP记录<br />
regdate--int(10)--注册日期<br />
lastip--varchar(15)--上次访问IP记录<br />
lastvisit--int(10)--上次访问日期<br />
lastactivity--int(10)--最后活动时间<br />
lastpost--int(10)--最后发表日期<br />
postnum--smallint(6)--总贴数<br />
credit--int(10)--积分<br />
extracredit--int(10)--DZ25预留的扩展积分*<br />
email--varchar(60)--会员的EM地址<br />
site--varchar(75)--会员的主页<br />
icq--varchar(12)--会员的ICQ<br />
oicq--varchar(12)--会员的QQ<br />
yahoo--varchar(40)--会员的雅虎通<br />
msn--varchar(40)--会员的MSN<br />
location--varchar(30)----来自<br />
bday--date--生日<br />
bio--text--自我介绍<br />
avatar--varchar(100)--会员头像<br />
avatarwidth--tinyint(3)--头像的宽度<br />
avatarheight--tinyint(3)--头像的高度<br />
signature--text--签名<br />
customstatus--varchar(30)--自定义头衔<br />
tpp--tinyint(3)--显示每页主题数的数量<br />
ppp--tinyint(3)--显示每个主题的回复数的数量<br />
styleid--smallint(6)--所选风格的ID<br />
dateformat--varchar(10)--日期格式<br />
timeformat--varchar(5)--时间格式<br />
showemail--tinyint(1)--是否显示EM地址<br />
newsletter--tinyint(1)--同意接收论坛通知<br />
invisible--tinyint(1)--是否隐身<br />
timeoffset--varchar(4)--时差设定<br />
ignorepm--text--忽略的短消息列表<br />
newpm--tinyint(1)--是否有新的短信并提示<br />
accessmasks--tinyint(1)--表示该用户是否对某些板块指定了特别的权限<br />
identifying--varchar(20)--当一个新注册的用户通过EM验证的时候、用户忘记密码需要通过EM取回的<br />
时                          候，该字段写入随机的认证字串<br />
cdb_onlinelist<br />
数据表功能介绍：在线会员信息。<br />
groupid--smallint(6)--用户组所在ID<br />
displayorder--tinyint(3)--显示顺序<br />
title--varchar(30)--显示的名称<br />
url--varchar(30)--小图标的URL<br />
cdb_plugins<br />
数据表功能介绍：插件信息表。<br />
plug_id--smallint(6)--插件的ID<br />
plug_title--varchar(255)--插件名称<br />
plug_version--varchar(255)--插件版本<br />
plug_author--varchar(255)--插件作者<br />
plug_key--varchar(255)--插件英文标识（唯一）<br />
plug_stats--tinyint(1)--是否显示插件在前台<br />
plug_cp--varchar(255)--插件自定义管理程序<br />
plug_tables--varchar(255)--插件数据表<br />
plug_license--text--插件版权声明内容<br />
plug_desc--text--插件说明<br />
cdb_plugins_settings<br />
数据表功能介绍：插件的配置设置信息相关。<br />
conf_id--int(10)--插件配置项目的ID<br />
conf_title--varchar(255)--插件配置名称<br />
conf_desc--text--插件配置说明<br />
conf_group--varchar(255)--插件配置所在组（即英文标识、即所对应着的插件）<br />
conf_type--varchar(255)--插件配置项目类型<br />
conf_key--varchar(255)--插件配置唯一标识<br />
conf_value--text--插件配置数值<br />
conf_extra--text--插件配置扩充<br />
conf_position--smallint(3)--插件配置显示顺序<br />
conf_cached--tinyint(1)--插件配置是否缓存<br />
cdb_pms<br />
数据表功能介绍：论坛短信数据表。<br />
pmid--int(10)--短消息的ID<br />
msgfrom--varchar(15)--短信发起人的会员名称<br />
msgfromid--mediumint(8)--短信发起人的会员UID编号<br />
msgtoid--mediumint(8)--短信接收人的会员UID编号<br />
folder--enum('inbox', 'outbox')--收件箱、发件箱（默认为收件箱）<br />
new--tinyint(1)--是否已读标记（1=未读，且未忽略 2=未读，且已忽略）<br />
subject--varchar(75)--短信标题<br />
dateline--int(10)--发送日期<br />
message--text--短信内容 </p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://yuleihome.javaeye.com/blog/209601#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 30 Jun 2008 09:39:37 +0800</pubDate>
        <link>http://yuleihome.javaeye.com/blog/209601</link>
        <guid>http://yuleihome.javaeye.com/blog/209601</guid>
      </item>
      <item>
        <title>java常用正则表达式</title>
        <author>晨星★~雨泪</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yuleihome.javaeye.com">晨星★~雨泪</a>&nbsp;
          链接：<a href="http://yuleihome.javaeye.com/blog/209581" style="color:red;">http://yuleihome.javaeye.com/blog/209581</a>&nbsp;
          发表时间: 2008年06月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <ol class="dp-j">
<li><span><span class="keyword">import</span>
<span>&nbsp;java.util.regex.Matcher;&nbsp;&nbsp;</span>
</span>
</li>
<li><span><span class="keyword">import</span>
<span>&nbsp;java.util.regex.Pattern;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;</span>
</li>
<li><span><span class="comment">/**</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;*&nbsp;@author&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Der&nbsp;&nbsp;&nbsp;&nbsp;</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;*&nbsp;@date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2006-10-23</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;*&nbsp;@packeage_name&nbsp;regex</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;*&nbsp;</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;*/</span>
<span>&nbsp;&nbsp;</span>
</span>
</li>
<li><span><span class="keyword">public</span>
<span>&nbsp;</span>
<span class="keyword">class</span>
<span>&nbsp;RegexChk&nbsp;&nbsp;</span>
</span>
</li>
<li><span>{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span>
<span>&nbsp;&nbsp;</span>
<span class="keyword">boolean</span>
<span>&nbsp;startCheck(String&nbsp;reg,String&nbsp;string)&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">boolean</span>
<span>&nbsp;tem=</span>
<span class="keyword">false</span>
<span>;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Pattern&nbsp;pattern&nbsp;=&nbsp;Pattern.compile(reg);&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Matcher&nbsp;matcher=pattern.matcher(string);&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tem=matcher.matches();&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span>
<span>&nbsp;tem;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;检验整数,适用于正整数、负整数、0，负整数不能以-0开头,&nbsp;</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;正整数不能以0开头</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;*/</span>
<span>&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span>
<span>&nbsp;</span>
<span class="keyword">boolean</span>
<span>&nbsp;checkNr(String&nbsp;nr)&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;reg=<span class="string">&quot;^(-?)[1-9]+\\d*|0&quot;</span>
<span>;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span>
<span>&nbsp;startCheck(reg,nr);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;手机号码验证,11位，不知道详细的手机号码段，只是验证开头必须是1和位数</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;*/</span>
<span>&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span>
<span>&nbsp;</span>
<span class="keyword">boolean</span>
<span>&nbsp;checkCellPhone(String&nbsp;cellPhoneNr)&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;reg=<span class="string">&quot;^[1][\\d]{10}&quot;</span>
<span>;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span>
<span>&nbsp;startCheck(reg,cellPhoneNr);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;检验空白符</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;*/</span>
<span>&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span>
<span>&nbsp;</span>
<span class="keyword">boolean</span>
<span>&nbsp;checkWhiteLine(String&nbsp;line)&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;regex=<span class="string">&quot;(\\s|\\t|\\r)+&quot;</span>
<span>;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span>
<span>&nbsp;startCheck(regex,line);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;检查EMAIL地址</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;用户名和网站名称必须&gt;=1位字符</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;地址结尾必须是以com|cn|com|cn|net|org|gov|gov.cn|edu|edu.cn结尾</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;*/</span>
<span>&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span>
<span>&nbsp;</span>
<span class="keyword">boolean</span>
<span>&nbsp;checkEmailWithSuffix(String&nbsp;email)&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;regex=<span class="string">&quot;\\w+\\@\\w+\\.(com|cn|com.cn|net|org|gov|gov.cn|edu|edu.cn)&quot;</span>
<span>;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span>
<span>&nbsp;startCheck(regex,email);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;检查EMAIL地址</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;用户名和网站名称必须&gt;=1位字符</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;地址结尾必须是2位以上，如：cn,test,com,info</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;*/</span>
<span>&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span>
<span>&nbsp;</span>
<span class="keyword">boolean</span>
<span>&nbsp;checkEmail(String&nbsp;email)&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;regex=<span class="string">&quot;\\w+\\@\\w+\\.\\w{2,}&quot;</span>
<span>;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span>
<span>&nbsp;startCheck(regex,email);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;检查邮政编码(中国),6位，第一位必须是非0开头，其他5位数字为0-9</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;*/</span>
<span>&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span>
<span>&nbsp;</span>
<span class="keyword">boolean</span>
<span>&nbsp;checkPostcode(String&nbsp;postCode)&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;regex=<span class="string">&quot;^[1-9]\\d{5}&quot;</span>
<span>;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span>
<span>&nbsp;startCheck(regex,postCode);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;检验用户名</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;取值范围为a-z,A-Z,0-9,&quot;_&quot;,汉字，不能以&quot;_&quot;结尾</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;用户名有最小长度和最大长度限制，比如用户名必须是4-20位</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;*/</span>
<span>&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span>
<span>&nbsp;</span>
<span class="keyword">boolean</span>
<span>&nbsp;checkUsername(String&nbsp;username,</span>
<span class="keyword">int</span>
<span>&nbsp;min,</span>
<span class="keyword">int</span>
<span>&nbsp;max)&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;regex=<span class="string">&quot;[\\w\u4e00-\u9fa5]{&quot;</span>
<span>+min+</span>
<span class="string">&quot;,&quot;</span>
<span>+max+</span>
<span class="string">&quot;}(?&lt;!_)&quot;</span>
<span>;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span>
<span>&nbsp;startCheck(regex,username);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;检验用户名</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;取值范围为a-z,A-Z,0-9,&quot;_&quot;,汉字，不能以&quot;_&quot;结尾</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;有最小位数限制的用户名，比如：用户名最少为4位字符</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;*/</span>
<span>&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span>
<span>&nbsp;</span>
<span class="keyword">boolean</span>
<span>&nbsp;checkUsername(String&nbsp;username,</span>
<span class="keyword">int</span>
<span>&nbsp;min)&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//[\\w\u4e00-\u9fa5]{2,}?</span>
<span>&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;regex=<span class="string">&quot;[\\w\u4e00-\u9fa5]{&quot;</span>
<span>+min+</span>
<span class="string">&quot;,}(?&lt;!_)&quot;</span>
<span>;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span>
<span>&nbsp;startCheck(regex,username);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;检验用户名</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;取值范围为a-z,A-Z,0-9,&quot;_&quot;,汉字</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;最少一位字符，最大字符位数无限制，不能以&quot;_&quot;结尾</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;*/</span>
<span>&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span>
<span>&nbsp;</span>
<span class="keyword">boolean</span>
<span>&nbsp;checkUsername(String&nbsp;username)&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;regex=<span class="string">&quot;[\\w\u4e00-\u9fa5]+(?&lt;!_)&quot;</span>
<span>;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span>
<span>&nbsp;startCheck(regex,username);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;查看IP地址是否合法</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;*/</span>
<span>&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span>
<span>&nbsp;</span>
<span class="keyword">boolean</span>
<span>&nbsp;checkIP(String&nbsp;ipAddress)&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;regex=<span class="string">&quot;(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.&quot;</span>
<span>&nbsp;+&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.&quot;</span>
<span>&nbsp;+&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.&quot;</span>
<span>&nbsp;+&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])&quot;</span>
<span>;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span>
<span>&nbsp;startCheck(regex,ipAddress);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;验证国内电话号码</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;格式：010-67676767，区号长度3-4位，必须以&quot;0&quot;开头，号码是7-8位</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;*/</span>
<span>&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span>
<span>&nbsp;</span>
<span class="keyword">boolean</span>
<span>&nbsp;checkPhoneNr(String&nbsp;phoneNr)&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;regex=<span class="string">&quot;^[0]\\d{2,3}\\-\\d{7,8}&quot;</span>
<span>;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span>
<span>&nbsp;startCheck(regex,phoneNr);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;验证国内电话号码</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;格式：6767676,&nbsp;号码位数必须是7-8位,头一位不能是&quot;0&quot;</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;*/</span>
<span>&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span>
<span>&nbsp;</span>
<span class="keyword">boolean</span>
<span>&nbsp;checkPhoneNrWithoutCode(String&nbsp;phoneNr)&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;reg=<span class="string">&quot;^[1-9]\\d{6,7}&quot;</span>
<span>;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span>
<span>&nbsp;startCheck(reg,phoneNr);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;验证国内电话号码</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;格式：0106767676，共11位或者12位，必须是0开头</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;*/</span>
<span>&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span>
<span>&nbsp;</span>
<span class="keyword">boolean</span>
<span>&nbsp;checkPhoneNrWithoutLine(String&nbsp;phoneNr)&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;reg=<span class="string">&quot;^[0]\\d{10,11}&quot;</span>
<span>;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span>
<span>&nbsp;startCheck(reg,phoneNr);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;验证国内身份证号码：15或18位，由数字组成，不能以0开头</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;*/</span>
<span>&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span>
<span>&nbsp;</span>
<span class="keyword">boolean</span>
<span>&nbsp;checkIdCard(String&nbsp;idNr)&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;reg=<span class="string">&quot;^[1-9](\\d{14}|\\d{17})&quot;</span>
<span>;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span>
<span>&nbsp;startCheck(reg,idNr);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;网址验证&lt;br&gt;</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;符合类型：&lt;br&gt;</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://www.test.com&lt;br&gt;</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://163.com</span>
&nbsp;</span>
</li>
<li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;*/</span>
<span>&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span>
<span>&nbsp;</span>
<span class="keyword">boolean</span>
<span>&nbsp;checkWebSite(String&nbsp;url)&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//http://www.163.com</span>
<span>&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;reg=<span class="string">&quot;^(http)\\://(\\w+\\.\\w+\\.\\w+|\\w+\\.\\w+)&quot;</span>
<span>;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span>
<span>&nbsp;startCheck(reg,url);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>}&nbsp; <br />
</span>
</li>
</ol>
<p>出处：http://www.javaeye.com/topic/199489</p>
          <br/>
          <span style="color:red;">
            <a href="http://yuleihome.javaeye.com/blog/209581#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 30 Jun 2008 09:25:14 +0800</pubDate>
        <link>http://yuleihome.javaeye.com/blog/209581</link>
        <guid>http://yuleihome.javaeye.com/blog/209581</guid>
      </item>
      <item>
        <title>httpd2.2.8+tomcat5.5.25整合</title>
        <author>晨星★~雨泪</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yuleihome.javaeye.com">晨星★~雨泪</a>&nbsp;
          链接：<a href="http://yuleihome.javaeye.com/blog/208543" style="color:red;">http://yuleihome.javaeye.com/blog/208543</a>&nbsp;
          发表时间: 2008年06月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          由于同一个项目上用到了php,jsp.而tomcat又不能处理 php所以就想到整合apahce。<br /><br />先把apache，tomcat安装好。<br /><br />接下来到http://tomcat.apache.org/download-connectors.cgi下一个jk_mod。<br />这个东西就是apache与tomat的一个连接器。<br />相当于apache的一个 mod。<br />以下是linux平台测试。<br /><br />1。下载apache对应的jk_mod. 重命名为 jk_mod.os 并放到apache的modules 文件夹下。<br />2。配置jk_mod。有两个配置文件。 分别为workers.properties，uriworkermap.properties。这 两个文件都可以在官方网下，下载jk_mod的源码包，里面自带了这两个文件。<br />   workers.properties<br />   到 Tomcat 服务器的连接定义文件<br /><br />   uriworkermap.properties<br />   URI 映射文件，用来指定哪些 URL 由 Tomcat 处理，<br />   把这两个文件都放到apache下conf 文件夹下。<br />3。配置apache.在 apache根目录下有的conf文件夹里有个httpd.conf文件。打开，在文件最后加入jk_mok的配置。如下<br /> # Load mod_jk module<br />    LoadModule    jk_module  modules/mod_jk.so<br />    JkWorkersFile conf/workers.properties<br />    JkShmFile     logs/mod_jk.shm<br />    JkLogFile     logs/mod_jk.log<br />    JkLogLevel    info<br />    JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "<br />Include  conf/uriworkermap.properties<br /><br />重启apache即可。
          <br/>
          <span style="color:red;">
            <a href="http://yuleihome.javaeye.com/blog/208543#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 27 Jun 2008 11:18:49 +0800</pubDate>
        <link>http://yuleihome.javaeye.com/blog/208543</link>
        <guid>http://yuleihome.javaeye.com/blog/208543</guid>
      </item>
      <item>
        <title>启动Tomcat时发生java.library.path错误的解决方法</title>
        <author>晨星★~雨泪</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yuleihome.javaeye.com">晨星★~雨泪</a>&nbsp;
          链接：<a href="http://yuleihome.javaeye.com/blog/207760" style="color:red;">http://yuleihome.javaeye.com/blog/207760</a>&nbsp;
          发表时间: 2008年06月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          ubuntu<br /><br />TOMCAT昨天突然自己宕掉服务了，怎么重起都不行，后来查看logs中catalina.out 日志发现如下错误<br />INFO: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/local/jdk1.6.0_01/jre/lib/i386/client:/usr/local/jdk1.6.0_01/jre/lib/i386:/usr/local/jdk1.6.0_01/jre/../lib/i386:/usr/java/packages/lib/i386:/lib:/usr/lib<br />Aug 24, 2007 1:20:27 PM org.apache.coyote.http11.Http11Protocol init<br />SEVERE: Error initializing endpoint<br />java.net.BindException: Address already in use:8080<br />....................<br />netstat -nlp 看到后台java只有一个8015端口，而且有<br />127.0.0.1：8080  127.0.0.1：8080 ESTABLISHED的链接<br />很是奇怪，<br />google一下提示是要使用apr<br />由于是debian系统所以很容易安装需要的软件<br />apt-get install libapr1-dev apache2-utils<br />可是还是不行，错误照常出现。<br />重起服务器后一切正常。<br /><br /><br />win<br /><br />当我下载Tomcat6.0.16并安装到eclise后，当任意建一个工程后，哪怕只有一个jsp页面的工程，启动Tomcat后都会有一个“警告”的提示（对工程与页面显示没有任何影响）。于是删除工程，只启动Tomcat服务器时，提示信息:The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: ......，是说在产品环境下可以优化工作性能的Tomcat的本地包没有找到。于是我就把以前所学的有关classpath、path相关的知识全用上设置一大类键值对，根本无法解决这个问题。<br />经过几个小时的上网搜索终于找到了解决方法：原来Tomcat从5.5版本后增加了APR技术（Apache Portable Runtime），这是一个用C语言写成文件包，目的在于提高Tomcat的服务性能，从而使得Tomcat将不仅仅担任一个容器的功能，而是要成为一个一般的web服务器（general purpose webserver）。现在是什么都涨，Tomcat的野心也在涨啊！<br />通过上述描述大家也就明白了，我们只要把那个本地文件下载过来，配置好之后，这些问题就会迎刃而解了，首先要到Tomcat网站上去下载：<br /><a href="http://tomcat.apache.org/download-native.cgi" target="_blank">http://tomcat.apache.org/download-native.cgi</a> 找到<span style="color: #810081">Native 1.1.13 Source Release zip </span><span style="color: black">这是个源文件，如果你要自己编译就下这个，如果想使用已编译好的dll文件就点击这个链接下面的“Here“ 链接，找一个版本号最新的，进去可以下载一个tcnative-1.dll文件。</span><br />那么如何配置这个文件呢？简单一点就是把这个文件扔到windows/system32下面，因为我们已经在path下配置好了这个路径，系统启动后就可以找到这个路径下的文件，如果想放到自己指定的位置，比如话到Tomcat安装路径下，那么就要在path中指定好这个路径，我是这样做的，首先根据惯例在系统变量中设置CATALINA_HOME变量，然后再把%CATALINA_HOME%\bin加入到path中，然后再把下载的dll文件放到 bin路径下就一切ok了。当然不做这些工作不会影Tomcat运行，萝卜白菜各有所爱了。<br />本文参考<a href="http://www.blogjava.net/beansoft/archive/2006/12/22 /89577.html" target="_blank">http://www.blogjava.net/beansoft/archive/2006/12/22/89577.html</a>
          <br/>
          <span style="color:red;">
            <a href="http://yuleihome.javaeye.com/blog/207760#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 25 Jun 2008 10:34:39 +0800</pubDate>
        <link>http://yuleihome.javaeye.com/blog/207760</link>
        <guid>http://yuleihome.javaeye.com/blog/207760</guid>
      </item>
      <item>
        <title> Ubuntu命令行修改网络配置方法</title>
        <author>晨星★~雨泪</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yuleihome.javaeye.com">晨星★~雨泪</a>&nbsp;
          链接：<a href="http://yuleihome.javaeye.com/blog/207566" style="color:red;">http://yuleihome.javaeye.com/blog/207566</a>&nbsp;
          发表时间: 2008年06月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          /etc/network/interfaces<br />打开后里面可设置DHCP或手动设置静态ip。前面auto eth0，让网卡开机自动挂载.<br />1. 以DHCP方式配置网卡<br />编辑文件/etc/network/interfaces:<br />sudo vi /etc/network/interfaces<br />并用下面的行来替换有关eth0的行:<br /># The primary network interface - use DHCP to find our address<br />auto eth0<br />iface eth0 inet dhcp<br />用下面的命令使网络设置生效:<br />sudo /etc/init.d/networking restart<br />也可以在命令行下直接输入下面的命令来获取地址<br />sudo dhclient eth0<br />2. 为网卡配置静态IP地址<br />编辑文件/etc/network/interfaces:<br />sudo vi /etc/network/interfaces<br />并用下面的行来替换有关eth0的行:# The primary network interface<br />auto eth0<br />iface eth0 inet static<br />address 192.168.3.90<br />gateway 192.168.3.1<br />netmask 255.255.255.0<br />#network 192.168.3.0<br />#broadcast 192.168.3.255<br />将上面的ip地址等信息换成你自己就可以了.用下面的命令使网络设置生效:<br />sudo /etc/init.d/networking restart<br />3. 设定第二个IP地址(虚拟IP地址)<br />编辑文件/etc/network/interfaces:<br />sudo vi /etc/network/interfaces<br />在该文件中添加如下的行:<br />auto eth0:1<br />iface eth0:1 inet static<br />address 192.168.1.60<br />netmask 255.255.255.0<br />network x.x.x.x<br />broadcast x.x.x.x<br />gateway x.x.x.x<br />根据你的情况填上所有诸如address,netmask,network,broadcast和gateways等信息.<br />用下面的命令使网络设置生效:<br />sudo /etc/init.d/networking restart<br />4. 设置主机名称(hostname)<br />使用下面的命令来查看当前主机的主机名称:<br />sudo /bin/hostname<br />使用下面的命令来设置当前主机的主机名称:<br />sudo /bin/hostname newname<br />系统启动时,它会从/etc/hostname来读取主机的名称.<br />5. 配置DNS<br />首先,你可以在/etc/hosts中加入一些主机名称和这些主机名称对应的IP地址,这是简单使用本机的静态查询.<br />要访问DNS 服务器来进行查询,需要设置/etc/resolv.conf文件.<br />假设DNS服务器的IP地址是192.168.3.2, 那么/etc/resolv.conf文件的内容应为:<br />search test.com<br />nameserver 192.168.3.2
          <br/>
          <span style="color:red;">
            <a href="http://yuleihome.javaeye.com/blog/207566#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 24 Jun 2008 16:32:44 +0800</pubDate>
        <link>http://yuleihome.javaeye.com/blog/207566</link>
        <guid>http://yuleihome.javaeye.com/blog/207566</guid>
      </item>
      <item>
        <title>mysql 外鍵約束</title>
        <author>晨星★~雨泪</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yuleihome.javaeye.com">晨星★~雨泪</a>&nbsp;
          链接：<a href="http://yuleihome.javaeye.com/blog/207361" style="color:red;">http://yuleihome.javaeye.com/blog/207361</a>&nbsp;
          发表时间: 2008年06月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1. 什么是参照完整性?<br />——————–<br />参照完整性(完整性约束)是数据库设计中的一个重要概念，当数据库中的一个表与一个或多个表进行关联时都会涉及到参照完整性。比如下面这个例子：<br />文章分类表 - categories<br />category_id     name<br />1               SQL Server<br />2               Oracle<br />3               PostgreSQL<br />5               SQLite<br /><br />文章表 - articles<br />article_id      category_id     title<br />1               1               aa<br />2               2               bb<br />3               4               cc<br /><br />可见以上两个表之间是通过category_id，其中categories表有4条记录，articles表有3条记录。<br /><br />然而可能因为某种原因我们删掉了categories 表中category_id=4的记录，而articles表却还是有一条category_id=4的记录，很明显，category_id=4的这条记录不应该存在在articles表中，这样会很容易造成数据错乱。<br /><br />相反，外键关系(Foreign Key relationships)讨论的是父表(categories)与子表(articles)的关系，通过引入外键(Foreign Key)这个概念来保证参照完整性(Referential integrity)，将使会数据库变的非常简单。比如，要要做到删除categories表中category_id=4记录的同时删除 articles 表中category_id=4的所有记录，如果没有引入外键的话，我们就必须执行2条SQL语句才行；如果有外键的话，可以很容易的用一条SQL语句就可以达到要求。<br /><br />2. 使用外键的条件<br />—————–<br />MySQL只在v3.23.34版本以后才引入外键的，所以在这之前的版本就别想了:)，除此之外，还必须具备以下几个条件：<br /><br />    1) 在my.cnf配置文件中打开InnoDB引擎支持。<br />    # Uncomment the following if you are using InnoDB tables<br />    innodb_data_home_dir = /var/db/mysql/<br />    innodb_data_file_path = ibdata1:10M:autoextend<br />    innodb_log_group_home_dir = /var/db/mysql/<br />    innodb_log_arch_dir = /var/db/mysql/<br /><br />    2) 相关联的表都必须采用InnoDB引擎。<br /><br />    3) 相关联的字段都必须建立所以。<br />    MySQL v4.0版本以后，定义外键时会自动建立所以，所以在 v4.0 版本以前（含v4.0版本）必须手工定义索引。<br /><br />    4) 相关联的字段必须采用类似的数据类型，或者说可转换的数据类型，当然相同类型是最好不过了。<br />    比如父表的字段是TINYINT类型，则子表只能采用TINYINT、SMALLINT、INT、BIGINT等几种类型。<br /><br />3. 外键语法参考<br />—————<br />可以通过 CREATE TABLE 或者 ALTER TABLE 来定义外键。<br />CREATE TABLE 语法：<br />CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name<br />    [(create_definition,…)]<br /><br />create_definition:<br />    column_definition<br />| [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,…) [reference_definition]<br /><br />column_definition:<br />    col_name type [NOT NULL | NULL] [DEFAULT default_value]<br />        [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]<br />        [COMMENT ’string’] [reference_definition]<br /><br />index_col_name:<br />    col_name [(length)] [ASC | DESC]<br /><br />reference_definition:<br />    REFERENCES tbl_name [(index_col_name,…)]<br />               [MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]<br />               [ON DELETE reference_option]<br />               [ON UPDATE reference_option]<br /><br />reference_option:<br />    RESTRICT | CASCADE | SET NULL | NO ACTION<br /><br />ALTER TABLE 语法：<br />ALTER [IGNORE] TABLE tbl_name<br />    alter_specification [, alter_specification] …<br /><br />alter_specification:<br />| ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,…)<br />| ADD [CONSTRAINT [symbol]] UNIQUE [INDEX] [index_name] [index_type] (index_col_name,…)<br />| ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,…) [reference_definition]<br />| DROP FOREIGN KEY fk_symbol<br /><br />4. 定义外键<br />———–<br />mysql> CREATE TABLE categories (<br />    -> category_id tinyint(3) unsigned NOT NULL AUTO_INCREMENT,<br />    -> name varchar(30) NOT NULL,<br />    -> PRIMARY KEY(category_id)<br />    -> ) ENGINE=INNODB;<br />Query OK, 0 rows affected (0.36 sec)<br /><br />mysql> INSERT INTO categories VALUES (1, ‘SQL Server’), (2, ‘Oracle’), (3, ‘PostgreSQL’), (4, ‘MySQL’), (5, ‘SQLite’);<br />Query OK, 5 rows affected (0.48 sec)<br />Records: 5 Duplicates: 0 Warnings: 0<br /><br />mysql> CREATE TABLE members (<br />    -> member_id INT(11) UNSIGNED NOT NULL,<br />    -> name VARCHAR(20) NOT NULL,<br />    -> PRIMARY KEY(member_id)<br />    -> ) ENGINE=INNODB;<br />Query OK, 0 rows affected (0.55 sec)<br /><br />mysql> INSERT INTO members VALUES (1, ‘test’), (2, ‘admin’);<br />Query OK, 2 rows affected (0.44 sec)<br />Records: 2 Duplicates: 0 Warnings: 0<br /><br />mysql> CREATE TABLE articles (<br />    -> article_id INT(11) unsigned NOT NULL AUTO_INCREMENT,<br />    -> title varchar(255) NOT NULL,<br />    -> category_id tinyint(3) unsigned NOT NULL,<br />    -> member_id int(11) unsigned NOT NULL,<br />    -> INDEX (category_id),<br />    -> FOREIGN KEY (category_id) REFERENCES categories (category_id),<br />    -> CONSTRAINT fk_member FOREIGN KEY (member_id) REFERENCES members (member_id),<br />    -> PRIMARY KEY(article_id)<br />    -> ) ENGINE=INNODB;<br />Query OK, 0 rows affected (0.63 sec)<br /><br />注意：对于非InnoDB表，FOREIGN KEY子句会被忽略掉。<br />如果遇到如下错误：<br />ERROR 1005: Can’t create table ‘./test/articles.frm’ (errno: 150)<br />请仔细检查以下定义语句，常见的错误一般都是表类型不是INNODB、相关联的字段写错了、缺少索引等等。<br /><br />至此categories.category_id和articles.category_id、members.member_id和 articles.member_id已经建立外键关系，只有 articles.category_id 的值存在与 categories.category_id 表中并且articles.member_id的值存在与members.member_id表中才会允许被插入或修改。例如：<br /><br />mysql> INSERT INTO articles (category_id, member_id, title) VALUES (6, 1, ‘foo’);<br />ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`test/articles`, CONSTRAINT `articles_ibfk_1` FOREIGN KEY (`category_id`)REFERENCES `categories` (`id`))<br /><br />mysql> INSERT INTO articles (category_id, member_id, title) VALUES (3, 3, ‘foo’);<br />ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`test/articles`, CONSTRAINT `fk_member` FOREIGN KEY (`member_id`) REFERENCES `members` (`member_id`))<br /><br />可见上面两条语句都会出现错误，因为在categories表中并没有category_id=6、members表中也没有member_id=3的记录，所以不能插入。而下面这条SQL语句就可以。<br /><br />mysql> INSERT INTO articles (category_id, member_id, title) VALUES (3, 2, ‘bar’);<br />Query OK, 1 row affected (0.03 sec)<br /><br />5. 删除外键定义<br />—————<br />不知道大家有没有发现，在前面定义外键的时候articles.member_id外键比articles.category_id子句多了一个CONSTRAINT fk_member ？<br />这个fk_member就是用来删除外键定义用的，如下所示：<br />mysql> ALTER TABLE articles DROP FOREIGN KEY fk_member;<br />Query OK, 1 row affected (0.25 sec)<br />Records: 1 Duplicates: 0 Warnings: 0<br /><br />这样articles.member_id外键定义就被删除了，但是如果定义时没有指定CONSTRAINT fk_symbol （即外键符号）时该怎么删除呢？别急，没有指定时，MySQL会自己创建一个，可以通过以下命令查看：<br /><br />mysql> SHOW CREATE TABLE articles;<br />+———-+————————————+<br />| Table    | Create Table                       |<br />+———-+————————————+<br />| articles | CREATE TABLE `articles` (<br />`article_id` int(11) unsigned NOT NULL auto_increment,<br />`category_id` tinyint(3) unsigned NOT NULL,<br />`member_id` int(11) unsigned NOT NULL,<br />`title` varchar(255) NOT NULL,<br />PRIMARY KEY (`article_id`),<br />KEY `category_id` (`category_id`),<br />KEY `member_id` (`member_id`),<br />CONSTRAINT `articles_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`)<br />) ENGINE=InnoDB DEFAULT CHARSET=latin1          |<br />+———-+————————————+<br />1 row in set (0.01 sec)<br /><br />可以看出articles.category_id的外键符号为articles_ibfk_1，因为就可以执行以下命令删除外键定义：<br /><br />mysql> ALTER TABLE articles DROP FOREIGN KEY articles_ibfk_1;<br />Query OK, 1 row affected (0.66 sec)<br />Records: 1 Duplicates: 0 Warnings: 0<br /><br />6. 总结<br />——-<br />引入外键的缺点是会使速度和性能下降，当然外键所带来的优点还有很多，本文仅讨论如何定义、删除外键。至于外键的实际应用将会在以后的文章中介绍。
          <br/>
          <span style="color:red;">
            <a href="http://yuleihome.javaeye.com/blog/207361#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 24 Jun 2008 10:43:09 +0800</pubDate>
        <link>http://yuleihome.javaeye.com/blog/207361</link>
        <guid>http://yuleihome.javaeye.com/blog/207361</guid>
      </item>
      <item>
        <title>mysql4.1以上版本连接时出现Client does not support authentic</title>
        <author>晨星★~雨泪</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yuleihome.javaeye.com">晨星★~雨泪</a>&nbsp;
          链接：<a href="http://yuleihome.javaeye.com/blog/205117" style="color:red;">http://yuleihome.javaeye.com/blog/205117</a>&nbsp;
          发表时间: 2008年06月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法<br />www.phpv.net 2004年08月17日02:51 查看34654次 作者:easy  【大 中 小】<br /><br />shell> mysql<br />Client does not support authentication protocol requested<br />by server; consider upgrading MySQL client<br /><br />官方的说法是<br /><br />MySQL 4.1 and up uses an authentication protocol based on a password hashing algorithm that is incompatible with that used by older clients. .....<br /><br /><br /> <br /><br />如果你升级mysql到4.1以上版本后遇到以上问题,请先确定你的mysql client 是4.1或者更高版本.(WINDOWS下有问题你就直接跳到下面看解决方法了,因为MYSQL 在WINDOWS是client和server一起装上了的)<br /><br />请使用以下两种方法之一<br /><br />其一:<br /><br />mysql> SET PASSWORD FOR<br />    -> 'some_user'@'some_host' = OLD_PASSWORD('newpwd');<br /><br />其二:<br /><br />mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('newpwd')<br />    -> WHERE Host = 'some_host' AND User = 'some_user';<br />mysql> FLUSH PRIVILEGES;<br /><br />上面红色的部分请按自己实际情况修改....<br /><br />这样做后,连接就会正常了@!
          <br/>
          <span style="color:red;">
            <a href="http://yuleihome.javaeye.com/blog/205117#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 18 Jun 2008 14:05:10 +0800</pubDate>
        <link>http://yuleihome.javaeye.com/blog/205117</link>
        <guid>http://yuleihome.javaeye.com/blog/205117</guid>
      </item>
      <item>
        <title>程序员的爱情表白</title>
        <author>晨星★~雨泪</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yuleihome.javaeye.com">晨星★~雨泪</a>&nbsp;
          链接：<a href="http://yuleihome.javaeye.com/blog/205093" style="color:red;">http://yuleihome.javaeye.com/blog/205093</a>&nbsp;
          发表时间: 2008年06月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          程序员的爱情表白:<br />我能抽象出整个世界．．． <br />但是我不能抽象出你．．． <br />因为你在我心中是那么的具体．．． <br />所以我的世界并不完整．．． <br />我可以重载甚至覆盖这个世界里的任何一种方法．．． <br />但是我却不能重载对你的思念．．． <br />也许命中注定了 你在我的世界里永远的烙上了静态的属性．．． <br />而我不慎调用了爱你这个方法．．． <br />当我义无返顾的把自己作为参数传进这个方法时．．． <br />我才发现爱上你是一个死循环．．． <br />它不停的返回对你的思念压入我心里的堆栈．．． <br />在这无尽的黑夜中．．． <br />我的内存里已经再也装不下别人．．． <br />我不停的向系统申请空间．．． <br />但却捕获一个异常－－－你爱的人不爱我．．． <br />为了解决这个异常．．． <br />我愿意虚拟出最后一点内存．．． <br />把所有我能实现的方法地址压入堆栈．．． <br />并且在栈尾压入最后一个方法－－<br />－将字符串＂我爱你，你爱我吗？＂传递给你．．． <br />如果返回值为真－－我将用尽一生去爱你．．． <br />否则－－我将释放掉所有系统资源． <br /><br />注：一位同们转给我的，具体出处不详。
          <br/>
          <span style="color:red;">
            <a href="http://yuleihome.javaeye.com/blog/205093#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 18 Jun 2008 12:59:45 +0800</pubDate>
        <link>http://yuleihome.javaeye.com/blog/205093</link>
        <guid>http://yuleihome.javaeye.com/blog/205093</guid>
      </item>
      <item>
        <title>Ubuntu 8.04 LTS 速配指南 </title>
        <author>晨星★~雨泪</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yuleihome.javaeye.com">晨星★~雨泪</a>&nbsp;
          链接：<a href="http://yuleihome.javaeye.com/blog/204787" style="color:red;">http://yuleihome.javaeye.com/blog/204787</a>&nbsp;
          发表时间: 2008年06月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Ubuntu 8.04 LTS 速配指南<br /><br />Info 本文作用：当你刚刚安装完毕之后，我们来花若干分钟设置一下系统，让我们有一个更加舒适的环境。<br /><br />Info 本文内容：仅包含常用、必要的步骤及简略的描述，不详细解释原因。<br /><br />Info 本文格式：快速配置为了便于用户操作，绝大部分使用命令行描述。<br /><br />Info 适用范围：Ubuntu 8.04 (i386)，（其他用户如有问题请到论坛咨询，KUbuntu 8.04 用户访问这儿）<br /><br />注意事项：参与本文修订时请务必先阅读本文的讨论页，对本文的看法、建议、请求也欢迎在讨论页中发表。<br /><br />从