posts - 495,  comments - 11,  trackbacks - 0
 

1.活着一天,就是有福气,就该珍惜。当我哭泣我没有鞋子穿的时候,我发现有人却没有脚。

2.宁可自己去原谅别人,莫让别人来原谅你。

3.世界原本就不是属于你,因此你用不着抛弃,要抛弃的是一切的执著。万物皆为我所用,但非我所属。

4.别人可以违背因果,别人可以害我们,打我们,毁谤我们。可是我们不能因此而憎恨别人,为什么?我们一定要保有一颗完整的本性和一颗清净的心。

5.你有你的生命观,我有我的生命观,我不干涉你。只要我能,我就感化你。如果不能,那我就认命。

6.如果你准备结婚的话,告诉你一句非常重要的哲学名言「你一定要忍耐包容对方的缺点,世界上没有绝对幸福圆满的婚姻,幸福只是来自于无限的容忍与互相尊重。

7.我的财富并不是因为我拥有很多,而是我要求的很少。

8.不是某人使我烦恼,而是我拿某人的言行来烦恼自己。

9.活在别人的掌声中,是禁不起考验的人。

10.如果你能每天呐喊二十一遍「我用不着为这一点小事而烦恼」,你会发现,你心里有一种不可思议的力量,试试看,很管用的。

11.若能一切随他去,便是世间自在人。

12.感谢上苍我所拥有的,感谢上苍我所没有的。

13.来是偶然的,走是必然的。所以你必须,随缘不变,不变随缘。

14.别人永远对,我永远错,这样子比较没烦恼。

15.愚痴的人,一直想要别人了解他。有智慧的人,却努力的了解自己。

16.对于不可改变的事实,除了认命以外,没有更好的办法了。

17.其实爱美的人,只是与自己谈恋爱罢了。

18.说一句谎话,要编造十句谎话来弥补,何苦呢?

19.当你用烦恼心来面对事物时,你会觉得一切都是业障,世界也会变得丑陋可恨。

20.根本不必回头去看咒骂你的人是谁?如果有一条疯狗咬你一口,难道你也要趴下去反咬他一口吗?

21.狂妄的人有救,自卑的人没有救。

22.你什么时候放下,什么时候就没有烦恼。

23.人之所以痛苦,在于追求错误的东西。

24.与其说是别人让你痛苦,不如说是自己的修养不够。

25.命运负责洗牌,但是玩牌的是我们自己!

26.过错是暂时的遗憾,而错过则是永远的遗憾!

posted @ 2010-04-11 18:52 jadmin 阅读(85) | 评论 (0)编辑 收藏

Tomcat中,为了保证get数据采用UTF8编码,在server.xml中进行了如下设置:

<Connector port="8080" maxThreads="150" minSpareThreads="25"
maxSpareThreads="75" enableLookups="false" redirectPort="8443"
acceptCount="100" debug="99" connectionTimeout="20000"
disableUploadTimeout="true" URIEncoding="UTF-8"/>

这里指定了get时候的数据编码。但是,当使用IIS作为webserver转发servlet/jsp请求给Tomcat时候,这个设置却失效了。其实原因很简单:IIS是通过AJP协议,把请求转发到Tomcat监听的8009端口上的,所以这里针对8080的设置自然就无效了。正确的方法是进行下面的设置:

<Connector port="8009" enableLookups="false" redirectPort="8443"
debug="0" protocol="AJP/1.3" URIEncoding="UTF-8"/>

posted @ 2010-04-10 15:45 jadmin 阅读(102) | 评论 (0)编辑 收藏

  一、成熟的人不问过去;聪明的人不问现在;豁达的人不问未来。

  二、在人之上,要把人当人;在人之下,要把自己当人。

  三、知道看人背后的是君子;知道背后看人的是小人。

  四、你犯错误时,等别人都来了再骂你的是敌人,等别人都走了骂你的是朋友

  五、人只要能掌握自己,便什么也不会失去

  六、变老并不等于成熟,真正的成熟在于看透。

  七、简单的生活之所以很不容易,是因为要活的简单,一定不能想的太多。

  八、人们常犯最大的错误,是对陌生人太客气,而对亲密的人太苛刻,把这个坏习惯改过来,天下太平。

  九、我们在梦里走了许多路,醒来后发现自己还在床上。

  十、你的丑和你的脸没有关系。

  十一、航海者虽比观望者要冒更大的风险,但却有希望到达彼岸。

  十二、穷人的苦恼在于没有选择,富人的苦恼在于有太多选择。

  十三、不要总觉得被轻视,先问问自己有没有分量。

  十四、一个人的价值,不体现在与别人相同的东西上,而体现在与别人不同的东西上。

  十五、静坐常思己过,闲谈莫论人非。

  十六、发展是硬道理,但硬发展是没道理。

  十七、人们是看你做什么,不是听你说什么。

  十八、要求别人是很痛苦的,要求自己是很快乐的。

  十九、不敢生气的是懦夫,不去生气的才是智者。

  二十、对于人来说,问心无愧是最舒服的枕头。

  二十一、嫉妒他人,表明他人的成功,被人嫉妒,表明自己成功。

  二十二、有些事情,不谈是个结,谈开了是个疤。

  二十三、一口吃不成胖子,但胖子却是一口一口吃来的。

  二十四、喜欢花的人是会去摘花的,然而爱花的人则会去浇水。


  1、不要自视清高

  天外有天,人上有人,淡泊明志,宁静致远。当别人把你当领导时,自己不要把自己当领导,当别人不把你当领导时,自己一定要把自己当领导,权力是一时的,金钱是身外的,身体是自己的,做人是长久的。

  2、不要盲目承诺

  言而有信。种下行动就会收获习惯;种下习惯便会收获性格;种下性格便会收获命运——习惯造就一个人。

  3、不要轻易求人

  把自己当别人——减少痛苦、平淡狂喜,把别人当自己——同情不幸,理解需要,把别人当别人——尊重独立性,不侵犯他人,把自己当自己——珍惜自己,快乐生活。能够认识别人是一种智慧,能够被别人认识是一种幸福,能够自己认识自己是圣者贤人。

  4、不要强加于人

  人本是人,不必刻意去做人;世本是世,无须精心去处世。人生三种境界:看山是山,看水是水——人之初;看山不是山,看水不是水——人到中年;看山还是山,看水还是水——回归自然。

  5、不要取笑别人

  损害他人人格,快乐一时,伤害一生。生命的整体是相互依存的,世界上每一样东西都依赖其它另一样东西,学会感恩。感恩大自然的福佑,感恩父母的养育,感恩社会的安定,感恩食之香甜,感恩衣之温暖,感恩花草鱼虫,感恩苦难逆境。

  6、不要乱发脾气

  一伤身体,二伤感情,人与人在出生和去世中都是平等的——哭声中来,哭声中去。千万注意,自己恋恋不舍,而别人早就去意已决,人生应看三座山:井冈山普陀山八宝山,退一步海阔天空,忍一事风平浪静;牢骚太多防肠断,风物长宜放眼量。

  7、不要信口开河

  言多必失,沉默是金,倾听一种智慧,一种修养、一种尊重、一种心灵的沟通,平静是一种心态,一种成熟。

  8、不要小看仪表

  撒播美丽,收获幸福,仪表是一种心情,仪表是一种力量,在自己审视美的同时,让别人欣赏美,心灵瑜伽——调适、修炼、超越。

  9、不要封闭自己

  帮助人是一种崇高,理解人是一种豁达,原谅人是一种美德,服务人是一种快乐,月圆是诗,月缺是花,仰首是春,俯首是秋。

  10、不要欺负老实人

  同情弱者是一种品德、一种境界、一种和谐,心理健康,才能身体健康,人有一分器量,便多一分气质,人有一分气质,便多一分人缘,人有一分人缘,便多一分事业,积善成德、修身养性。

posted @ 2010-04-08 21:14 jadmin 阅读(81) | 评论 (0)编辑 收藏

      多线程的同步依靠的是对象锁机制,synchronized关键字的背后就是利用了封锁来实现对共享资源的互斥访问。

      下面以一个简单的实例来进行对比分析。实例要完成的工作非常简单,就是创建10个线程,每个线程都打印从099100个数字,我们希望线程之间不会出现交叉乱序打印,而是顺序地打印。

      先来看第一段代码,这里我们在run()方法中加入了synchronized关键字,希望能对run方法进行互斥访问,但结果并不如我们希望那样,这是因为这里synchronized锁住的是this对象,即当前运行线程对象本身。代码中创建了10个线程,而每个线程都持有this对象的对象锁,这不能实现线程的同步。

class MyThread implements java.lang.Runnable

{

   private int threadId;

   public MyThread(int id)

   {

       this.threadId = id;

   }

   

   public synchronized void run()

   {

       for (int i = 0; i < 100; ++i)

       {

           System.out.println("Thread ID: " + this.threadId + " : " + i);

       }

   }

}

public class ThreadDemo

{

   public static void main(String[] args) throws InterruptedException

   {

       for (int i = 0; i < 10; ++i)

       {

           new Thread(new MyThread(i)).start();

           Thread.sleep(1);

       }

   }

}

      从上述代码段可以得知,要想实现线程的同步,则这些线程必须去竞争一个唯一的共享的对象锁。

      基于这种思想,我们将第一段代码修改如下所示,在创建启动线程之前,先创建一个线程之间竞争使用的Object对象,然后将这个Object对象的引用传递给每一个线程对象的lock成员变量。这样一来,每个线程的lock成员都指向同一个Object对象。我们在run方法中,对lock对象使用synchronzied块进行局部封锁,这样就可以让线程去竞争这个唯一的共享的对象锁,从而实现同步。

class MyThread implements java.lang.Runnable

{

   private int threadId;

   private Object lock;

   public MyThread(int id, Object obj)

   {

       this.threadId = id;

       this.lock = obj;

   }

   

   publicvoid run()

   {

       synchronized(lock)

       {

           for (int i = 0; i < 100; ++i)

           {

               System.out.println("Thread ID: " + this.threadId + " : " + i);

           }

       }

   }

}

public class ThreadDemo

{

   public static void main(String[] args) throws InterruptedException

   {

       Object obj = new Object();

       for (int i = 0; i < 10; ++i)

       {

           new Thread(new MyThread(i, obj)).start();

           Thread.sleep(1);

       }

   }

}

      从第二段代码可知,同步的关键是多个线程对象竞争同一个共享资源即可,上面的代码中是通过外部创建共享资源,然后传递到线程中来实现。我们也可以利用类成员变量被所有类的实例所共享这一特性,因此可以将lock用静态成员对象来实现,代码如下所示:

class MyThread implements java.lang.Runnable

{

   private int threadId;

   private static Object lock = new Object();

   public MyThread(int id)

   {

       this.threadId = id;

  }

   publicvoid run()

   {

       synchronized(lock)

       {

           for (int i = 0; i < 100; ++i)

           {

               System.out.println("Thread ID: " + this.threadId + " : " + i);

           }

       }

   }

}

public class ThreadDemo

{

   public static void main(String[] args) throws InterruptedException

   {

       for (int i = 0; i < 10; ++i)

       {

           new Thread(new MyThread(i)).start();

           Thread.sleep(1);

       }

   }

}

      再来看第一段代码,实例方法中加入sychronized关键字封锁的是this对象本身,而在静态方法中加入sychronized关键字封锁的就是类本身。静态方法是所有类实例对象所共享的,因此线程对象在访问此静态方法时是互斥访问的,从而可以实现线程的同步,代码如下所示:

class MyThread implements java.lang.Runnable

{

   private int threadId;

   

   public MyThread(int id)

   {

       this.threadId = id;

   }

   

   publicvoid run()

   {

       taskHandler(this.threadId);

   }

   private static synchronized void taskHandler(int threadId)

   {

       for (int i = 0; i < 100; ++i)

       {

           System.out.println("Thread ID: " + threadId + " : " + i);

       }

   }

}

public class ThreadDemo

{

   public static void main(String[] args) throws InterruptedException

   {

       for (int i = 0; i < 10; ++i)

       {

           new Thread(new MyThread(i)).start();

           Thread.sleep(1);

       }

   }

}

Java线程同步总结:

1、线程同步的目的是为了保护多个线程反问一个资源时对资源的破坏。
2、线程同步方法是通过锁来实现,每个对象都有且仅有一个锁,这个锁与一个特定的对象关联,线程一旦获取了对象锁,其他访问该对象的线程就无法再访问该对象的其他非同步方法。
3、对于静态同步方法,锁是针对这个类的,锁对象是该类的Class对象。静态和非静态方法的锁互不干预。一个线程获得锁,当在一个同步方法中访问另外对象上的同步方法时,会获取这两个对象锁。
4、对于同步,要时刻清醒在哪个对象上同步,这是关键。
5、编写线程安全的类,需要时刻注意对多个线程竞争访问资源的逻辑和安全做出正确的判断,对“原子”操作做出分析,并保证原子操作期间别的线程无法访问竞争资源。
6、当多个线程等待一个对象锁时,没有获取到锁的线程将发生阻塞。
7、死锁是线程间相互等待锁锁造成的,在实际中发生的概率非常的小。真让你写个死锁程序,不一定好使,呵呵。但是,一旦程序发生死锁,程序将死掉。

posted @ 2010-03-18 01:43 jadmin 阅读(354) | 评论 (1)编辑 收藏

你站在桥上看风景
看风景的人在楼上看你

明月装饰了你的窗子
你装饰了别人的梦

posted @ 2010-03-16 22:56 jadmin 阅读(91) | 评论 (0)编辑 收藏

有时候将自己的程序打包成jar文件作为类库调用,出错时,遇到自己的jar包里的类文件报异常信息时,无法打印出行号,而是(Unknown Source)

解决办法:在编译任务中加上如下参数debug="true" debuglevel="lines,vars,source"

例如:

<target name="compile" depends="prepare" description="编绎源码">
   <javac encoding="utf-8" destdir="${build.dir}" source="1.5" target="1.5"
        deprecation="false" optimize="false" failonerror="true"
        debug="true" debuglevel="lines,vars,source">
     <src refid="src-paths" />
     <classpath refid="lib-paths" />
   </javac>

   <copy todir="${build.dir}" preservelastmodified="true">
     <fileset dir="${src.dir}">
       <include name="**/*.txt"/>
       <include name="**/*.xml"/>
       <include name="**/*.dtd"/>
       <include name="**/*.properties"/>
     </fileset>
   </copy>
</target>

posted @ 2010-03-14 20:26 jadmin 阅读(135) | 评论 (0)编辑 收藏

CVS介绍

CVS是Concurrent Versions System(并发版本系统)的缩写,基于Unix体系中成熟的SCCS(Source Code Control System)和RCS(Revision Control System)开发,是一个开放源码的项目,目前已是版本控制系统的主流软件。一个很常见的使用CVS的场合,就是开放源码项目。由于开放源码项目的开发者的分布性,对于版本管理的要求更加严格,而目前大部分的开放源码项目几乎都是采用CVS来管理源代码,CVS的标准性和强大可见一斑。CVS跟微软的VSS一样,是源代码版本控制工具之一,所不同的是CVS属于开源项目,并且CVS最初是为Linux/Unix设计的,现在已经有Windows下版本,它实现了跨平台。

CVS采用客户机/服务器体系,代码以及各种版本存储在中心服务器内,每一个个体开发者开发时都首先从服务器上获得一份自己的拷贝,在此基础上进行开发,以避免直接影响服务器上的数据。开发者可以随时把自己的新代码提交给服务器,并通过更新获得代码的最新状态,保持与其他开发者的一致。

CVS对于网络是透明的,开发者可以使用客户端软件(几乎所有的平台上都有相应的客户端软件)在任何时候,任何地点通过网络来获取最新的代码。有关Linux下CVS的搭建的资料很多而且很全,在这里就不再介绍。下面主要介绍一下个人在Windows下面搭建CVS的一个过程,或许对你有一定的帮助。

一、需要的软件
1、CVSNT
CVSNT是目前在Windows平台上构建CVS服务器最方便的工具,操作简单,以Windows服务程序的形式运行。目前CVSNT已被移植到其它平台如Linux上。
选用版本:2.0.58d。
在这里我选用这个版本而不采用最新的2.5.x的原因主要是因为2.5.x版本的CVS改变了History文件的格式,导致无法使用CVSTracNT一起工作。但是如果你不使用CVSTracNT,选用2.5.x也一样,其操作与2.0.58d基本相同,也是十分的简单。
CVSNT可以直接到官方站点下载:http://www.cvsnt.org/

2、WinCVS
WinCVS是CVS的一个客户端程序,当你创建了一个CVS服务器以后,你可以通过WinCVS来访问CVS服务器,添加数据以及获取CVS服务器上的文件等。WinCVS同样拥有Windows版本。
选用版本:2.0.2 (Build2)
客户端程序版本无所谓,只要与服务器端兼容即可。CVS访问协议有多种,我们经常用的是pserver,格式是::pserver;username=youname;password=youpass;hostname=192.168.1.22:/cvsroot注意,这里的用户名以及密码是你访问服务器的用户名以及密码,对于Windows服务器来讲,可以在计算机管理中添加用户,最后面的cvsroot是CVS服务器数据仓库的根路径,与服务器设置要保持一致。
官方下载地址:http://www.wincvs.org

3、Python
要想让WinCVS运行起来并能够支持命令行操作,必不可少的就是Python(包含TCL)。
选用版本:2.4.1
在运行CVS客户端程序的时候,需要Python支持,可以运行WinCVS在命令行中进行操作版本选择原则是与WinCVS兼容。
官方下载地址:http://www.python.org/

4、CVSTracNT
除了安装CVS的服务器端以及客户端程序外,在项目管理中我们还一般会配套安装CVSTracNT,它是一个基于Web的CVS源代码跟踪工具。使用CVSTracNT,我们可以跟踪源代码的变更,可以查看提交的记录,可以对比不同版本之间的异同,允许提交任务单、创建里程碑,并通过Web的方式查看、比较源代码文件。对于CVS系统本身来说,是一个非常有益的补充,对开发起到很大的帮助。
选用版本:1.1.5 Build20050703多国语言版。
这个版本由cnpack项目组的成员进行了汉化,并添加了许多实用的工具。具体的内容可以参考其中文网站。
官方下载地址:http://www.cnpack.org/

二、安装过程
1、安装CVSNT
直接运行CVSNT安装包。安装结束后,打开Service Control Panel,配置你的CVS仓库。点击Repositories选项页,添加你的仓库地址就可以了,不需要重新启动CVS服务器。这里注意的是,你选择的数据仓库路径是你CVS服务器存储数据的路径,并不是你需要用来管理的文件目录。我们可以指定一个目录用于存储。

2、安装WinCVS
直接运行安装文件,按照提示Next下去即可。安装完成以后使用分配的帐号登陆CVS服务器进行相应的操作。详细使用可以参考WinCVS帮助文档。

3、安装Python
直接运行安装文件。注意要选择以前装TCL(使用命令行操作WinCVS时需要TCL的支持),其他一路Next。记得最后在PATH中添加一个Python的安装目录。

4、安装CVSTracNT
直接运行CVSTracNT安装包。安装结束后运行CVSTrac配置程序,程序启动后会自动搜索CVS仓库,将其添加到CVSTrac数据库。选中数据库,点击浏览按钮,你的浏览器应该打开并显示CVSTrac的页面了。
CVSTracNT的使用及配置参考 http://www.cnpack.org/ 上的介绍。

三、总结
以上的搭配过程是本人自己第一次搭建的写照,很多地方可能还不是十分的完整,以后会不断补充。但是基本的都做完了,而且测试通过。在安装过程中刚开始的时候可能对CVS帐号的分配会比较迷惑。本人也是通过本次安装才知道账号添加试通过计算机管理来实现的,就是添加Windows用户 :-) 到此为止,一个简单的CVS环境就培植成功了,接下来的事情是如何添加文件到CVS数据库中以及如何使用WinCVS进行获取文件了。

posted @ 2010-03-14 02:26 jadmin 阅读(99) | 评论 (0)编辑 收藏

[1]单击 工具 菜单中的 选项 菜单项,在弹出的 选择 对话框中选择 拼写和语法 选项卡

[2]在 拼写 选项组中取消 键入时检查拼写 复选框,在 语法 选项组中取消 键入时检查语法。

[3]选中 拼写 选项组中的 隐藏文档中的拼写错误 复选框和 语法 选项组中的 隐藏文档中的语 法错误 复选框。 (此步骤实际上在[2]完成后就已经完成了)

[4]确定

以上方法在Word 2003中测试通过

posted @ 2010-03-12 01:36 jadmin 阅读(87) | 评论 (0)编辑 收藏

  化冰为水

  春已至,冰成水。

  寒冬,将水凝。一道冰墙,阻挡在心与心之间。

  冰“水为之而寒于水”,连同杂质都冻成心墙。冰在零下便不可一世,低温是他滋生的温床,而人与人之间的淡漠使寒气更重。

  一堵心的冰墙,看似无坚不摧无法跨过,但,不要忽视了一样非常极其有用的东西——热。当冰度不断加热,直至温度不断升高,它就会屈服,融化,化成一滩水,有温度的柔水。杂质便会显露,沉入水底。但,水亦可灭火,冰化成水时会吸取大量的热,会浇灭火。因而,包容的烧杯便会出现,将冰化成的水积入杯中,一点一滴。

  人与人之间的种种不愉快便是杂质,其种类繁多,仇怨恨等等,而主体冰则是相互之间的不沟通和不包容。一旦冷漠加剧,心温下降,便会结成冰墙,立在两人心与心之间不远的地方,只要稍微给一点热情,便会化成水,失去靠山的杂质便会随水流走,洗净心灵。倘若,心墙很厚,杂质很多,冷漠很多,心就会很冷,人与人阻隔在冰川之中,犹如南极大陆,感觉到的只是冷,看到的除了冰还是冰。

  心被冰封在冰层之中,渐渐死去。没有了知觉的心,没有心的人能够称为人吗所以,心必须吸收温暖,必须从阴暗中走出来,去晒一晒太阳。

  阳春,冰墙在阳光之下还能放肆吗只能逐渐消亡,化成一股暖流,在心中汇聚成河,各种各样的鱼虾于其中欢快,这就是真正的人生。

  冬天,寒冷是不可避免的,但只要心中有春,最寒冷的南极也不会冻心。

posted @ 2010-03-06 21:46 jadmin 阅读(65) | 评论 (0)编辑 收藏

java异常[java.util.regex.patternsyntaxexception dangling meta character '+' near index]解决

String s="/babalaautomgr.ejs?method=constr";
int i=s.split("?").length;
System.out.println(i);

java.util.regex.PatternSyntaxException: Dangling meta character '?' near index 0

问题出现在加号附近,查询相关的资料显示,+、*、|、\等符号在正则表达示中有相应的不同意义。
一般来讲只需要加[]、或是\\即可

int i=s.split("[?]").length;或者int i=s.split("\\?").length;

posted @ 2009-11-02 20:57 jadmin 阅读(1294) | 评论 (0)编辑 收藏
仅列出标题
共50页: First 上一页 5 6 7 8 9 10 11 12 13 下一页 Last