Courage is grace under pressure

用我一辈子去追求

导航

<2006年8月>
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789

统计

  • 随笔 - 17
  • 文章 - 1
  • 评论 - 2
  • 引用 - 0

常用链接

留言簿(43)

随笔档案

文章档案

相册

XML的Blog

搜索

  •  

最新评论

阅读排行榜

评论排行榜

2006年8月18日 #

全国省市县无刷新多级联动菜单

     摘要: 全国省市县无刷新多级联动菜单 <html><head><title>省市县关联菜单</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><style>body,select{font-size:9pt;fon...  阅读全文

posted @ 2006-09-14 18:14 xyh 阅读(2882) | 评论 (0)编辑 收藏

一场感动四千人的报告(转载)

        同学们,在这个世界上,在成功者的队伍里面,很多人并不见得很聪明,在失败者的队伍里面很多人并不见得愚笨。其实,有一样东西比聪明的脑袋更重要,那就是人的心灵和意志,一个人的贫穷很大的程度是心灵的贫穷,一个人的成功很大程度是意志的成功!

        去年发生的马加爵事件,大家都知道,他最致命的弱点是什么呢?就是心灵有问题,斗志有问题。在做案前,他花了很多时候很多精力上网查资料:用什么工具杀人最隐蔽,逃跑时走什么路线等等,他都花了很多心思去考虑,但是,整个过程他都没为父母考虑过,马加爵他没有想到,当自己的父母以负罪的心情,给那些被残暴杀害大学生的父母们下跪时,那些老人会操起棍棒就想——这是心灵也了问题呀!另外,他的意志很薄弱,别人一句话就能把他打倒,就起了杀人的念头。马加爵很聪明,在大家与同学玩扑克的时候总是赢,他的同学跟他开玩笑,你这小子为人有问题,打扑克总是搞假总是赢牌,所以,大家都不喜欢你,过生日聚会都不想喊你这个为人虚假的人——为了这句话,马加爵就生出杀人的歹心……

       一个婴儿生下来,没有人会问是生下一个国家主席还是一个部长;是生下一个老板还是一个打工仔;是生下一个教授还是一个流浪汉,人们只会问:是个男孩还是个女孩?是个少爷还是个千金?对一个刚生下来的孩子来说,将来的一切都未知数,没有谁知道也不可能知道他将来会成为什么样的人。由此说来,人刚生下都是一样的,要有差别那大体上就只有男女之别。然而,随着时间的推移,环境的改变,学习的艰难,世道的艰辛,人情的冷暖,人们的心灵和意志就会慢慢地发生改变,这样的改变将会导致人与人之间的差距,于是,有些人很成功,有些人很失败;有些人很出色,有些人很平庸;有些人很幸福,有些人很痛苦。

       你想在这个激烈竞争的社会成为一个很成功、出色、幸福的人,关键在于你有没有一颗永远不冷不死的心!有没有一股不很管是主观因素还是客观因素都打不垮的意志!(轻柔的音乐响起)在这个美好的下午,让我们听着音乐好好地享受,让我们打开心门,进入我们的心灵世界,与自己的心灵对话。让我们回忆从幼儿园开始回忆,把我们丢失的东西找回来……会场寂静,与会者肃然。)人活世上,谁不希望能有作为于社会,回报于家庭,慰藉于自己?可是,岁月的风霜,世事的艰辛,人情的冷暖,使许许多多的人变得麻木世帮,心无爱恨,漠然无情,不思进取,怯于奋争...

       这些年来,在你最需要帮助的时候,是谁向你伸出援助之手?
       在茫茫的人海中,是谁是哪几个人最关心你最疼爱你?
       你出门在外,是谁是总在牵挂你惦念着你?
       是谁总是盼着你回家等着你吃饭?
       在你生病的时候是谁最紧张最着急?
       在你最高兴的时候是谁比你更高兴?
       在你最痛苦的时候又是谁比你更痛苦?
       在你最失落无助的时候,是谁来安慰你鼓励你?
       在你最孤独寂寞的时候又是谁来陪伴你?
       是谁对你的生命影响最大?
       在你的心目中谁占的位置最多?
       你或许在乡村长大,你们家世世代代都是农民,为了生存为了你也能象别人的孩子一样体体面面地生活读成长,你的爸爸妈妈艰难度日终年劳作,但只要自己的孩子能有书读肯上进,再苦再累他们都心甘情愿无怨无悔。夜幕隆临,每当你上教室上晚自习的时候,你爸爸妈妈或许都还没回到家晚饭,要是他们离家在外漂泊在外做生意打工捡破烂,也许因为贷不出手工钱未得到身无分文常常不知道晚饭在哪里;当你进入梦乡的进修,你的爸爸妈妈还常常为带来为生活为人欠一家老小你的学费和生活费发愁,常常中整夜整夜睡不着觉......他们知道现在的社会要靠本事吃饭,你虽然读了书,可是社会上竞争的人很多饭碗很少,竞争很激烈,孩子能存在能够照顾自己已经是很不容易了,所以他们的后半辈子也不敢对你抱有太大的指望,他们晚年生活也许还得靠他们自己。其实你的爸爸妈妈累死累活无非就是希望自己的孩子能篚成人成为对社会有用的人,受人尊敬让人看得起,不白费他们的一番心血!想想你自己,能做到了吗?作为农民或作为民工的爸爸妈妈到他们真正老了实在做不动的时候,他们的生活将没有任何依托,在很大的程度上将要依靠他们的孩子才能度过他们生命中最恩格斯最凄凉的岁月,而倾注了他们一辈子心血又是他们生命中唯一可以依靠的你,能给他们带来什么呢?

     你一天天长大,可是你的父母却一天天变老了。你平时有没有看过他们的模样?你有没有仔细打量过他们?他们的模样已经老到什么程度了呢?你知道不知道?他们或许已经变得很老了,由于新陈代谢的缘故,人总会自然变老的,但如果老得太快衰老得太早那就不政党了。这些年来,他们为生活奔奔波波,为工作劳劳碌碌,为孩子忧心忡忡。你或许还常常跟他们顶嘴、吵架,惹他们生气伤心,你的学习又不怎么理想,你的行为总让他们很不放心,他们常常为你;将来的前途和出路担忧发愁,他们还能年轻到哪里去?况且他们身上可能还有很多病痛,他们又舍不得上医院看医生,怕检查怕住院,老这么硬撑着,他们的生命有没有危险?他们能活多久?无论如何你都要抽点时间,给自己一个机会好好看一看你的爸爸妈妈!是时候了!如果你没有了父母你的学习和生活将会发生什么样的变化呢?人铁父母是以什么样的方式挣钱供你读书的?他们过得好不好?他们对你好不好?你常惦记他们吗?你常问候他们吗?你还时常跟他们有说有笑吗?你还常常牵着他们的手上街吗?你很乐意让他们来学校看你吗?在同学面前你能很自豪地介绍他们吗?你知道他们的生日吗?你记住他们的生日吗?

       你现在还是个学生,是个未成年人,是个消费者,还不需要为父母承担什么责任,如果你的父母生病住院,你去看一下他们,他们就很高兴了,甚至别人还夸你是个很懂事的孩子。可是,在你长大成人,自立成家,你也有自己的孩子的时候,你的父母生病住院,你去看一下就行了吗?如果,需要开刀,需要几成几十万,才能治好他们的病,甚至才能保证他们的生命的时候,你将怎么办?你能拿得出多少?你肯不肯去借别人?为了他们健康和生命,你能不能全力以赴?就象当年他们对你一样?万一有一天,你的父母突然撒手离开了你,你哭一下,流几滴眼泪,别人或许也会夸你是个孝顺的孩子。可是,在很多后的将来,你回想起来,回想起父母的疼爱父母的恩情父母的容颜,你仅仅哭就行了吗就够了吗?

        我在乡下农村长大,父母都是农民。父亲只读到小学四年级,母亲是个文盲。小时候,因兄弟姐妹太多,家里又只有父母两个劳动力,日子过得十分艰难。寒冷的冬天,放学回家,吃的常常是稀得可见人影的粥......家庭的贫困最让我刻骨铭心的是,1979年,也就是高中毕业的那一年,我那79岁的爷爷病重需要住院,可是,家里贫穷没有钱呀,抬去医院第二次医院才勉强收下,也还只是住在医院的走廊下,那时正值寒冬腊月,七老八十的爷爷就在这样的地方度过了他生命的最后时日。他在临死前还吃力地问我妈妈家里还有多少钱?辛苦了一世的老人,准备失去生命的老人,还担心死了以后家里有没有钱料理他的后事,死了以后会不会给子孙带来麻烦。人世间这种悲惨的场面就活生生地展现在我面前了,当时我的眼泪不知不觉地淌下来了,但是,我的拳头握得很紧,我在心里默默发誓:无论如何,一定要奋斗!一定要冲出去活出个人样来!至少让你的父母在临死前用不着为钱担心,我不要他们再问跟爷你这同样的话。

      这是这个信念,在我高考落榜的那些辛酸的岁月,在被很多人嘲笑和讽剌的时候,我还是充满信心不屈不找,终于在高考接连失败了5次后的第六年也就是1984年我考上大学!从此改写人生,从此改变命运!

     前不久在广东沿海的一个中学演讲的时候,听那里的教师说以前他们中学有个男孩子,他的爸爸在政府当高官,他的妈妈也在某一部门手握大权。这个男孩子,总以为能靠着老爸老妈,整天养尊处优,有学习懒散,生活放荡,仗着万贯家财,出手大方,挥金如土。他的爸爸妈妈各自都忙于官事和应酬,也没有时间管他,他变本加厉。

          原本就是个纨绔子弟,老爸又是市里的头号人物,他根本不把老师放在眼里,本来基础就差,又无心向学,又目空无人,学习自然越来越差劲了。很多高官纷纷送孩子出国留学,这个男孩子的爸爸也把他送了出去。在国内的学校本来心就不放在学习上,英语更是学不下了,一下子到了欧美的英语国家读书,怎么能读得下,虽然也先上了语言学校,但终究无济于事。远离家乡,远离同学,书又坊不懂也不想读,加上语言的障碍,与人交流甚至上街购物都困难,在孤独苦闷百无聊赖之中的两年后的一天,他回了国。;可是到了家,一切都改变了。家门已被公安法院贴上封条了,好心的邻居告诉他,你的爸爸妈妈出大事了!被关起来了,看情况性命都难保了。一向不知苦难是何物的他,突然心里空落,脑子一片白,瘫坐在地。清醒过来之后,他去了看守所。先前红光满面、精神焕发的爸爸,已变得十分憔悴。问他爸爸,他说:爸,你怎么会变成这样?你不是叫我放心吗?;;他的爸爸说:“孩子,爸爸做错事了,原本想跟你铺好路,但没想到害了你,也害了自己。爸爸估计活不了多久了,你的妈妈少说也要被关上十几年,家里的财产全被没收,我们这个家全完了,爸爸妈妈不能帮人我了,树倒藤枯,我们的处境如此,你也别指望会有哪个亲戚或那个朋友帮你了,往后要全靠你自己了,好好努力,好好活着,路有多远你就走多远吧!”为了生活,几天后,这个男孩子在菜市场的一个角落里摆摊卖着冻鱼,以前每天花上百块钱,现在一斤冻鱼赚的就几毛钱,一天从下来净赚的最多不过二三十元,在这些钱里面,还要交房租,还要吃饭,所剩无几。以前花父母贪来的不义之财,花多少都不心疼,现在靠自己掐来的钱,每开支一块钱都要思来想去。过去路过菜市场见卖鱼的人,视同蚂蚁,连看都不看他们一眼,甚至被阻路的时候还大骂他们。如今,跟他们在一起说话得又小心又客气,总怕得罪人家

      所以,同学们呀,你或许常常为爸爸妈妈当大官做大生意而沾沾自喜引以为荣,认为这辈子可以稳靠地过上好日子,于是高枕无忧有恃无恐,学习松松垮垮,生活随随便便,行为放放荡荡,整天逍遥自在得过且过,大把大把挖钱整夜整夜不归......当你养尊处优挥金如土的时候,你有没有想过,以你爸爸妈妈现在的职位和工资收入或者他们的生意状况,他们正当所得到底能有多少?他们的钱来得很容易吗?当你心情地挥霍和享受的时候,你有没有问问和店量这些钱的来路?他们为了你准备了大把钞票和铺好的前程安全不安全有没有危险?他们为了你是否会断送自己的政治前途和身家性命?你的爸爸妈妈准备把一切都给了你,可你有没有设身处地为他们想过?在这个世界上几乎没有什么是永恒的,你把自己的将来全部仰靠和托付都放在你父母的身上,你认为能有多大的胜算和把握呢?你为什么就不努力学会;和设法依靠你自己呢?

       同学们,不管你的父母是在城市还是在乡村,是贫穷还是富有,是处在社会的上层还是处在社会的最底层,但他们日夜都渴望他们的孩子——你,将来能有出息,能体体面面堂堂正正地活在这个世界上,成为对社会有用的人!不管你情不情愿来学校读书,学得好还是不好,也不管你将来从事什么工作以什么方式谋生,在你的内心深处在你的骨子里面你都一直渴望着将来做一个在别人面前能让别人看得起的人!做一个父母永远为你感到骄傲和自豪的人

      可是呀,同学们,这些年来你一直在追求什么?在期待什么?是什么力量在支持着你,让你显得那坚强,那么自信,那么发奋?又是什么原因,是什么东西在迷惑和诱惑着你总让你显得身不由己,心神不定,坐立不安?有时候,你在游戏室、在网吧里一坐就是几个小时;有时候,你莫名其妙地想打人骂人;有时候,你又无端地折腾、伤害和糟蹋你自己,你为什么会变成这样?到底是什么原因造成的?在夜深人静的时候,你有没有勇气面对你自己?在光天化日之下,你敢不敢正视别人?是什么最让你的良心感到无愧?又是什么最让你的良心感到不安?你还能必自内心的微笑吗?你还会感动得落泪吗?你还属于你自己吗?你还是你吗?;;这些年来,你都是怎么走过来的?你的每一步都留下什么脚印?你有没有努力过?你有没有成功过?你做过哪几件事情最让你感到骄傲和自豪?你小时候那些美好的梦想现在还剩下多少?你对自己还有多少信心?你对将来还抱多大的希望?每一天都在充实都在进步中度过吗?在做人、读书和做事上,你都尽尽力了吗?你还敢说自己很想说的话吗?你还敢做自己喜欢做的事吗?你的父母还能为你感到骄傲吗?你是否能扪心自问理直气壮地说:爸爸妈妈,你的儿子很用功!你的女儿很优秀!你的独生子不会让你们白生白养的!你的女儿不会给你们丢脸的!你的儿子不会让你们失望的!你的女儿一定会让你们幸福的!

      每天,天刚朦朦亮,你就很耐烦地睁开双眼,一脚踏进这个的世界,又以一脸的茫然无奈走进学校跨进教室,然后木然地坐在座位上,呆呆地望着黑板,对你来说一切都是那样的枯燥乏味,一切都是那机关报无可奈何没有法子。你常常听不进一句话,看不进一个字,心里不知道都想些什么,也不知道自己要做什么要怎么做,课时一节节下来,日子一天天过去内外没有什么收获也没有什么感受,心里依然是空空的,可是又不知道拿什么来充实。你就常常在这样空虚迷惘无所事事中耗费时日虎度年华,任由环境的左右命运的摆布,让生命的小船漫无目的地漂流摇晃。这就是青春年少风华正茂的你吗?这就是小时候充满幻想充满希望的你吗?这就是满怀亲人希望肩负父母重托的你吗?这就是拿家人省吃俭用靠花费父母的血汗钱来读书上大学奔前程的你吗?

       处在社会的底层、人生的低谷,特别是在理想和前途都很渺茫的时候,往往有两种力量能从人的骨子里面把人激起,催人奋进让人走向成功走向发达。第一种力量就是:亲情的力量,即父母和亲人的关爱和为了报答父母亲人的恩情;第二种力量就是:无情的力量,即别人的冷眼、漠视、看低、看扁,为了做出来给别人看证明自己并不比别人差的雄心壮志!

         当我站在讲台上,面对着数千人滔滔不绝演讲的时候,当一场成功的演讲带给人们震撼和敬佩的时候,很少有人会想到我曾经是一个严重的口吃者。但这是真的!少年时的我口吃很严重,讲话结结巴巴,那时候说话对我来说是一件很痛苦的事。但理痛苦的是,读高中,轮到我当值日生,按规定要在上课前在老师走上讲台的时候,要站起来领大家喊“起立!老师好!”这五个字,可是为了要喊这止个字,我常常要丫起来好几分钟都说不出话来,嘴巴张开,话就是出不来,为此,同学经常哄堂大笑。那时我觉得很难过很自卑很羞愧,因为我连正常人普通人都达不到。一直到上了大学,我那口吃的毛病都还很严重,上课从来不敢主动回答老师的提问。连说话都很困难,毕业后怎么工作怎么做国家干部?(那时候读大学不花钱,毕业又有分配,出来都是国家干部)我时常听到教师和同学这样议论我,当时我这样想,他们在对我抱以同情和担忧的同时,心里不无、嘲笑和蔑视。我想,人家能行我为什么就不能行?难道自己一辈子连个普通人都做不到吗?在随着巨大的痛苦和压力的同时,我在心里默默地发狠心:有朝一日,我一定要说出一口流利的普通话,一定要靠自己这张嘴巴吃饭!为了克服自己的心理障碍,早读节,在很多同学都在沉默不读书的时候,我一个人在那里旁若无人放声朗读大喊大叫,那时在别人看来我就象个狂徒和疯子,但是,不管别人怎么议论,我都毫不在乎,坚持了一年下来,我的胆子变得越来越大,底气越来越来足,张口就说话,提笔就文章,经过一番的奋斗,没想原来的缺陷却被奋斗改变成了长项和优势,大二的时候就被选学生会宣传部长,当上了靠嘴巴和笔杆子支撑起来的“官”。.现在,我以演讲为自己的职业,变当年的痛苦为快乐,变往日的耻辱为荣誉,活出了自我,活出了价值!

       何必为自己的欠缺自己的失败而沮丧呢,何必为别人的嘲笑别人的讽剌而痛苦呢,这些其实是上天赐给你的福分。我们应该把人生一切不幸的遭遇照单全收,我们要感谢上苍对我们所做的一切不合理的安排!感谢社会的残酷!感谢世态的炎凉!感谢人生的痛苦!

         人的大彻大悟多半来自大灾大难。由此看来,让自己走投无路一回又何妨?!

         建设家乡报效祖国,话说得很响亮很堂皇,但是绝不是每个人都有这个机会和资格的。生活在社会最边缘最底层的人,很多都想为建设家乡报效祖国出一份国,可是家乡和祖国却不给他们机会,因为他们或许没有这个能力和资格,他们可能没有什么文化没有什么本事没有什么技能.
       
        你如果有心要为家乡为国家出力,你就必须全心全意先为你自己出力,全力以赴为你自己奋斗,如果你连自己都不爱不理,那么家乡和祖国就会懒得爱你懒得理你,你就将永远被社会所遗忘和抛弃!

      你订的计划和目标总是坚持不了几天;你连一个人独处一个人走路都不自在,总是很违心地跟在别人的屁股后面转,白白消磨了大好时光;困一点,累一点,你就把今天该做的事推到了明天——所有这些,你能说努力了吗?全力以赴了吗?虽然付出未必就有回报,努力和成功不能划等号,但是,不付出就绝不会有回报!不努力就绝不会成功!同学们,不要担心努力后的结果如何,得不得到回报,请你记住一句话:尽心就是优秀,尽力就是成功!
      
        人生在世,什么都可以没有,但就是不能没有勇气。英雄和伟人最富有的就是勇气,一般人内心有时也会充满激情,但是骨子里却常常缺乏勇气,常常在最关键的时候,在最需要勇气的时候,犹犹、豫豫畏畏缩缩,以致错过了有利时机耽误了大好前程。其实,勇气这个东西,不需要花钱买,很多时候,你想有它就有。

       同学们,今天的这个下午是个特殊的下午,希望你拿出勇气,来到台上来,讲述你的故事,表达你此刻的心情,抒发你今后的打算。同学们,拿出勇气,来吧,到台上来表达吧,这是一个新的开始,这是你走向自新走向奋发走向未来的最果敢最能显示你对今后态度的第一步很重要很关键的一步。

      (过了几分钟,陆陆续续有学生走上台来发言)生1(女):“在我很小的时候,父母就到广东打工了,家里只有我、妹妹和奶奶三个人,每年春节都只有我们三个人过。”(泪流满面,泣不成声)……有一次,爸爸妈妈回来,我满腹的怨气地对他们发汇。就在他们要走的那天晚上,我还跟妈妈顶嘴,妈妈哭了。……后来,来到学校,想给他们打电话,也没勇气。……今天,我想对他们说:‘爸爸,妈妈,我对不起你们,但以后我会努力地,会努力成为你们的骄傲的,我发誓!’“(掌声雷动)

       黄老师:“是啊,妈妈要出门打工了,我们还跟她顶嘴,让她带着眼泪出门……同学们,你呢,你有话对父母说吗?有什么话要表达吗?”
     
      生2(男):“我是一个高四的学生,我很感谢我的父母,我想对他们说,我一定好好努力报答他们。”(掌声)

     生3(男):“我的父母很平常,每月也只有几百元的收入,每月给我吃、穿、用,但我学习不好,有时候很迷茫,但现在我想通了,我会用勤奋来回报他们的,我会用自己的丰硕成果来回报他们的。”(掌声雷动)

      生4(女):“我要说的话很多,我来自桥业(那是一个很穷的山区乡,饮水得到几里外去挑的),从小父母就带我去广东打工。我家有3个女孩,父母赌博花光了所有的积蓄,我只好回到桥业读初中。回到桥业,我连个家都没有,寄居在伯父家。(带着哭腔)后来,来了志愿者,我很谢谢他们(泣不成声)……后来,我是......靠着上海一位姐姐的支助读完初中的。……但是,上了高中以后,我的成绩很差,我没信心,我也不再努力,我没有什么可拿来报答他们。……(头一扬,很坚定地)不过,以后,我会用努力回报他们的,我会用行动证明的。”(掌声雷动) 

       黄老师:“伟人之所以成为伟人,成功者之所以成功者,别无他样,他们所不同的是:百般磨难心不死,屡经穷困志不穷!”

        生4(男):“今天我听了演讲,虽然眼泪没有从眼里流出来,但我心里在流动。我太对不起我班主任和科任老师了。我学习成绩不好,老师经常开导我,可我总是听不进去,还经常跟老师顶嘴。听了演讲,我想对老师们说:老师,以后我会努力的,请大家记住我今天当着几千人的面所发誓的话,我一定会以全新的模样回报父母,报答老师的!”

       黄老师:“老师既是父母的孩子又是孩子的父母,他们身上压着三副重担,既赡养自己的父母又要抚养自己的孩子,还要培养自己的学生,工作的压力,生活的艰辛,过多的付出,他们或许也象你的父母一样过早地失支了美丽的容颜。他们从事着高尚的职业,却没有很高薪酬;他们做着很体面的工作,却常没有很体面的衣服;他们也有很需要照顾和辅导的孩子,却常常把看书所有的时候和精力用到了别人的孩子身上。在学校,在父母不在你身边的日子,是哪个像;父母一样关爱你?在你身体不舒服生活有困难的时候,是哪个来关心和帮助你?在很多同学冷落你甚至连你自己都冷落自己的时候,是哪个还主动靠近你给你信心和勇气?在你无心向学虚度年华的时候,是哪个常常为你心疼为你难过?在你上课看小说打瞌睡甚至考试还在呼呼大睡的时候,是哪个常常来提醒你?在你被别人‘打倒’甚至被你自己‘打倒’自己都不想爬起来的时候,是哪个拉你一把助你一力?你在人生十字路口辨不清方向找不到目标的时候,是哪个给你点拔给你指路?”

   

posted @ 2006-09-08 12:02 xyh 阅读(249) | 评论 (0)编辑 收藏

一盏浊灯

      人的成长是绝对的,有的时候只是量变,有的时候是质变。在这个充满诱惑、充斥着一切的世界里,我们要做的,不是拥有多少物质,而是有自己的一片天空,有和睦的亲情、友情......
      忙碌的我们,是否感到在都市的落寞,在这里,环境的压力,工作的压力,使得我们很少有时间来审视自己,在这里,每个人的空间、时间是被严格限制的,就如井底之蛙(frog in the well)。
     我曾阅读过一句经典的话:
     There are two ways to see growth,one is product,and the other is the process.
    我不由想到,我曾经做过错误的决定,但我还是执行错误的决定,痛苦的是,没有比这个决定更好的办法,人,总是为周围的一切所困,总是掌握不了自己的命脉。
    在漫漫的时间里,当自己失去动力以后,一切都变的无所谓,一切都变的不重要,一切都是所谓的装饰。一个,默默的,做着重复的工作,一遍又一遍........
    一站过去了,而另外一站又奔来,沿途的风景,使忙碌的我们忽略了周围........
    一个人上网的时候很喜欢进西安信息资源网,在那里读着一些励志的文章,每当我疲惫的时候,想起了一起生活在这个世界的大多数人们,他们有自己的生存原则.......
     每个人都有两个天使陪伴着他,一个是善良的,一个是邪恶的,
     在这个世界的现实里,我学会了更多的是理性,而不是感性,世界的悲剧,太多是由感性战胜理性引起的,一时的冲动引起的,而在丧失理性之后,他们不得不面对理性........
    
 

posted @ 2006-09-08 11:44 xyh 阅读(253) | 评论 (0)编辑 收藏

三道简单算法题

第一题
/*
 求两个字符串的最大公共子串
 String s1 = "abcdefghigj";
 String s2 = "xyzabcdeigj";
 则输出abcde
*/

第二题
/*
输出杨辉三角形
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
*/

第三题
/*
String[] a = {"a","b","c","d","e","f","g","h","i","j","",""};
String[] b = {"f","a","c","f","e","k","l","y","p","o"};

如果b里面的数据在a里面没有,则把没有的数据放到""里面,超过的话,则报"已经满了,无法插入"~~
*/

解析:
第一题:
public class first
{
  public String search(String s1,String s2)
  {
  String max = "";
  for(int i=0; i<s1.length(); i++)
  {
    for(int j=i; j<s1.length(); j++)
    {
      String sub = s1.substring(i,j);
      if((s2.indexOf(sub)!=-1)&&sub.length()>max.length())
      {
        max = sub;
      }
    }
  } 
  return max;
  }
 
  public static void main(String[] args)
  {
    String s1 = "abcdefghigj";
    String s2 = "xyzabcdefigj";
    String output = new first().search(s1,s2);
    System.out.println(output);
  }
}

第二题:
public class second
{
  public static int[] general(int[] data)
  {
    int[] fanhui = new int[data.length+1]; 
    fanhui[0] = data[0];
    for(int i=1,j=1; j<data.length; i++,j++)
    {
      fanhui[i] = data[j-1] + data[j];
    }         
    fanhui[fanhui.length-1] = data[data.length-1];
    for(int k=0; k<fanhui.length; k++)
    {
      System.out.print(fanhui[k] + "\t");
    }
    System.out.print("\n");
    return fanhui;
  }
  public static void main(String[] args)
  {
    int times = 5;
    int[] chushizhi = {1};
    System.out.println(chushizhi[0]);
    for(int i=0; i<times; i++)
    {
    chushizhi = second.general(chushizhi);   
    }
  }
}

第三题:

import java.util.ArrayList ;

public class Third
{
public static void main(String[] args)
{
    String[] a = {"a","b","c","d","e","f","g","h","i","j","k","",""};
    String[] b ={"f","a","c","f","e","k","l"};
    Third third = new Third();
    third.compareAndReplace(a,b);
    StringBuffer output = new StringBuffer();
    for(int i=0; i<a.length; i++)
    output.append(a[i]); 
    System.out.println("a已变成" + output.toString());
  }
 public void compareAndReplace(String[] a,String[] b)
 {
   for(int i=0; i<b.length; i++)
   {
      outer:
     for(int j=0; j<a.length; j++)
     {
       if(b[i].equals(a[j]))
       break outer;
       if(j==a.length-1)
       {
       if(findFirstSpace(a)!=-1)
       {
         a[findFirstSpace(a)] = b[i];
       }
       else
       {
         System.out.println("已经满了,无法插入" + b[i]);
       }      
     }
   }
 }
 }
 
 public int findFirstSpace(String[] arg)
 {
   for(int m=0; m<arg.length; m++)
   {
     if(arg[m].equals(""))
     return m;    
   }
   return -1;
 }
}

posted @ 2006-09-08 10:40 xyh 阅读(1594) | 评论 (0)编辑 收藏

JS表单验证讨论

无论在提交按钮,即<input type="submit" onclick="return 函数名()">,
或者在form表单上,即<form onsubmite-"return 函数名()">
都能够,验证表单,然后提交

需要注意的事项有
1.
<form>中的name属性,最好制定一下,
否则无法使用document.ID号定制,
但是可以使用document.getElementById(string id)获取对象,
建议同时设置id与name为相同的名称

2.
调用的时候,建议使用return 函数名()这样的方法,否则可能无效
 P.S. 我使用了像<input type="submit" onclick="return false">
结果证实函数得到了运行,但是拦截表单提交失败

3.
验证函数中,建议明确返回bool值

4.
设置的函数名不要和JS的内置函数重名,否则会导致整个函数失效
P.S. 我就犯了这个错误,我定义了一个submit()函数

5. *****
即使设置了<form onsubmit="return false;">,或者等价的表达式
但是如果调用form.submit()函数,表单仍然会得到提交
换句话说,form.submit()具有强制提交表单的功能

6.
如果在JS中更改了form.action的值,则提交目标以JS设置的为标准
因为JS的设置永远发生在HTML设置之后 即使是使用
<form onsubmit="this.action='test.html'" action="orin.html">
这样的表示法

7.实验发现无论是form的onsubmit还是submit按钮的onclick
都不能丢掉"return",否则无论返回的值ture or false,表单数据都会提交出去

posted @ 2006-09-06 18:18 xyh 阅读(1023) | 评论 (0)编辑 收藏

常用的SQL语句技法总结(来自CSDN)

  下列语句部分是Mssql语句,不可以在access中使用。

  SQL分类:

  DDL-数据定义语言(CREATE,ALTER,DROP,DECLARE)
  DML-数据操纵语言(SELECT,DELETE,UPDATE,INSERT)
  DCL-数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)

  首先,简要介绍基础语句:

  1、说明:创建数据库: CREATE DATABASE database-name

  2、说明:删除数据库: drop database dbname

  3、说明:备份sql server

  --- 创建 备份数据的 device

USE master
EXEC sp_addumpdevice 'disk', 'testBack',
'c:\mssql7backup\MyNwind_1.dat'

  --- 开始 备份

BACKUP DATABASE pubs TO testBack

  4、说明:创建新表

create table tabname(col1 type1 [not null] [primary key],col2 type2
[not null],..)

  根据已有的表创建新表:

A:create table tab_new like tab_old (使用旧表创建新表)
B:create table tab_new as select col1,col2... from tab_old definition
only

  5、说明:

  删除新表:drop table tabname

  6、说明:

  增加一个列:Alter table tabname add column col type

  注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。

  7、说明:

  添加主键:Alter table tabname add primary key(col)

  说明:

  删除主键:Alter table tabname drop primary key(col)

  8、说明:

  创建索引:create [unique] index idxname on tabname(col....)

  删除索引:drop index idxname

  注:索引是不可更改的,想更改必须删除重新建。

  9、说明:

  创建视图:create view viewname as select statement

  删除视图:drop view viewname

  10、说明:几个简单的基本的sql语句

  选择:select * from table1 where 范围

  插入:insert into table1(field1,field2) values(value1,value2)

  删除:delete from table1 where 范围

  更新:update table1 set field1=value1 where 范围

  查找:select * from table1 where field1 like '%value1%'
---like的语法很精妙,查资料!

  排序:select * from table1 order by field1,field2 [desc]

  总数:select count * as totalcount from table1

  求和:select sum(field1) as sumvalue from table1

  平均:select avg(field1) as avgvalue from table1

  最大:select max(field1) as maxvalue from table1

  最小:select min(field1) as minvalue from table1

  11、说明:几个高级查询运算词

  A: UNION 运算符

  UNION 运算符通过组合其他两个结果表(例如 TABLE1

TABLE2)并消去表中任何重复行而派生出一个结果表。当
ALL 随 UNION 一起使用时(即 UNION
ALL),不消除重复行。两种情况下,派生表的每一行不是来自
TABLE1 就是来自 TABLE2。

  B: EXCEPT 运算符

  EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2
中的行并消除所有重复行而派生出一个结果表。当 ALL
随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。

  C: INTERSECT 运算符

  INTERSECT 运算符通过只包括 TABLE1 和 TABLE2
中都有的行并消除所有重复行而派生出一个结果表。当
ALL 随 INTERSECT 一起使用时 (INTERSECT
ALL),不消除重复行。

  注:使用运算词的几个查询结果行必须是一致的。

  12、说明:使用外连接

  A、left outer join:

  左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。

SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

  B:right outer join:

  右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。

  C:full outer join:

  全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。

  其次,大家来看一些不错的sql语句

  1、说明:复制表(只复制结构,源表名:a
新表名:b) (Access可用)

  法一:select * into b from a where 1<>1

  法二:select top 0 * into b from a

  2、说明:拷贝表(拷贝数据,源表名:a
目标表名:b) (Access可用)

insert into b(a, b, c) select d,e,f from b;

  3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径)
(Access可用)

insert into b(a, b, c) select d,e,f from b in '具体数据库' where 条件

  例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"'
where..

  4、说明:子查询(表名1:a 表名2:b)

select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)

  5、说明:显示文章、提交人和最后回复时间

select a.title,a.username,b.adddate from table a,(select max(adddate)
adddate from table where table.title=a.title) b

  6、说明:外连接查询(表名1:a 表名2:b)

select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

  7、说明:在线视图查询(表名1:a )

select * from (SELECT a,b,c FROM a) T where t.a > 1;

  8、说明:between的用法,between限制查询数据范围时包括了边界值,not
between不包括

select * from table1 where time between time1 and time2

select a,b,c, from table1 where a not between 数值1 and 数值2

  9、说明:in 的使用方法

select * from table1 where a [not] in
('值1','值2','值4','值6')

  10、说明:两张关联表,删除主表中已经在副表中没有的信息

delete from table1 where not exists ( select * from table2 where
table1.field1=table2.field1 )

  11、说明:四表联查问题:

select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....

  12、说明:日程安排提前五分钟提醒

SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5

  13、说明:一条sql 语句搞定数据库分页

select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 =
a.主键字段 order by a.排序字段

  14、说明:前10条记录

select top 10 * form table1 where 范围

  15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)

select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)

  16、说明:包括所有在 TableA 中但不在 TableB和TableC
中的行并消除所有重复行而派生出一个结果表

(select a from tableA ) except (select a from tableB) except (select a from tableC)

  17、说明:随机取出10条数据

select top 10 * from tablename order by newid()

  18、说明:随机选择记录

select newid()

  19、说明:删除重复记录

Delete from tablename where id not in (select max(id) from tablename
group by col1,col2,...)

  20、说明:列出数据库里所有的表名

select name from sysobjects where type='U'

  21、说明:列出表里的所有的

select name from syscolumns where id=object_id('TableName')

  22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select
中的case。

select type,sum(case vender when 'A' then pcs else 0 end),sum(case
vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs
else 0 end) FROM tablename group by type

  显示结果:

type    vender pcs
电脑 A 1
电脑 A 1
光盘 B 2
光盘 A 2
手机 B 3
手机 C 3

  23、说明:初始化表table1

TRUNCATE TABLE table1

  24、说明:选择从10到15的记录

select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc

  随机选择数据库记录的方法(使用Randomize函数,通过SQL语句实现)

  对存储在数据库中的数据来说,随机数特性能给出上面的效果,但它们可能太慢了些。你不能要求ASP"找个随机数"然后打印出来。实际上常见的解决方案是建立如下­所示的循环:

Randomize RNumber = Int(Rnd*499) +1

While Not objRec.EOF
If objRec("ID") = RNumber THEN
... 这里是执行脚本 ...
end if
objRec.MoveNext
Wend

  这很容易理解。首先,你取出1到500范围之内的一个随机数(假设500就是数据库内记录的总数)。然后,你遍历每一记录来测试ID
的值、检查其是否匹配RNumber。满足条件的话就执行由THEN
关键字开始的那一块代码。假如你的RNumber
等于495,那么要循环一遍数据库花的时间可就长了。虽然500这个数字看起来大了些,但相比更为稳固的企业解决方案这还是个小型数据库了,后者通常在一个数据­库内就包含了成千上万条记录。这时候不就死定了?

  采用SQL,你就可以很快地找出准确的记录并且打开一个只包含该记录的recordset,如下所示:

Randomize RNumber = Int(Rnd*499) + 1

SQL = "SELECT * FROM Customers WHERE ID = " & RNumber

set objRec = ObjConn.Execute(SQL)
Response.WriteRNumber & " = " & objRec("ID") & " " & objRec("c_email")

  不必写出RNumber
和ID,你只需要检查匹配情况即可。只要你对以上代码的工作满意,你自可按需操作"随机"记录。Recordset没有包含其他内容,因此你很快就能找到你需要­的记录这样就大大降低了处理时间。

  再谈随机数

  现在你下定决心要榨干Random
函数的最后一滴油,那么你可能会一次取出多条随机记录或者想采用一定随机范围内的记录。把上面的标准Random
示例扩展一下就可以用SQL应对上面两种情况了。

  为了取出几条随机选择的记录并存放在同一recordset内,你可以存储三个随机数,然后查询数据库获得匹配这些数字的记录:

  SQL = "SELECT * FROM Customers WHERE ID = " & RNumber & " OR ID = " & RNumber2 & " OR ID = " & RNumber3

  假如你想选出10条记录(也许是每次页面装载时的10条链接的列表),你可以用BETWEEN
或者数学等式选出第一条记录和适当数量的递增记录。这一操作可以通过好几种方式来完成,但是
SELECT 语句只显示一种可能(这里的ID
是自动生成的号码):
SQL = "SELECT * FROM Customers WHERE ID BETWEEN " & RNumber & " AND " &
RNumber & "+ 9"

  注意:以上代码的执行目的不是检查数据库内是否有9条并发记录。

  随机读取若干条记录,测试过

Access语法:SELECT top 10 * From 表名 ORDER BY Rnd(id)
Sql server:select top n * from 表名 order by newid()
mysql select * From 表名 Order By rand() Limit n

  Access左连接语法(最近开发要用左连接,Access帮助什么都没有,网上没有Access的SQL说明,只有自己测试,
现在记下以备后查)

  语法 select table1.fd1,table1,fd2,table2.fd2 From table1 left
join table2 on table1.fd1,table2.fd1 where ...

  使用SQL语句 用...代替过长的字符串显示

  语法:

  SQL数据库:select case when len(field)>10 then
left(field,10)+'...' else field end as news_name,news_id from tablename
  Access数据库:SELECT
iif(len(field)>2,left(field,2)+'...',field) FROM tablename;

  Conn.Execute说明

  Execute方法

  该方法用于执行SQL语句。根据SQL语句执行后是否返回记录集,该方法的使用格式分为以下两种:

  1.执行SQL查询语句时,将返回查询得到的记录集。用法为:

  Set 对象变量名=连接对象.Execute("SQL 查询语言")

  Execute方法调用后,会自动创建记录集对象,并将查询结果存储在该记录对象中,通过Set方法,将记录集赋给指定的对象保存,以后对象变量就代表了该记录­集对象。

  2.执行SQL的操作性语言时,没有记录集的返回。此时用法为:

  连接对象.Execute "SQL 操作性语句" [, RecordAffected][,
Option]

  ·RecordAffected
为可选项,此出可放置一个变量,SQL语句执行后,所生效的记录数会自动保存到该变量中。通过访问该变量,就可知道SQL语句队多少条记录进行了操作。

  ·Option
可选项,该参数的取值通常为adCMDText,它用于告诉ADO,应该将Execute方法之后的第一个字符解释为命令文本。通过指定该参数,可使执行更高效­。

  ·BeginTrans、RollbackTrans、CommitTrans方法

  这三个方法是连接对象提供的用于事务处理的方法。BeginTrans用于开始一个事物;RollbackTrans用于回滚事务;CommitTrans用于­提交所有的事务处理结果,即确认事务的处理。

  事务处理可以将一组操作视为一个整体,只有全部语句都成功执行后,事务处理才算成功;若其中有一个语句执行失败,则整个处理就算失败,并恢复到处里前的状态。

  BeginTrans和CommitTrans用于标记事务的开始和结束,在这两个之间的语句,就是作为事务处理的语句。判断事务处理是否成功,可通过连接对象­的Error集合来实现,若Error集合的成员个数不为0,则说明有错误发生,事务处理失败。Error集合中的每一个Error对象,代表一个错误信息。

posted @ 2006-09-06 18:11 xyh 阅读(364) | 评论 (0)编辑 收藏

让innerHTML的标签执行起来

在我们使用AJAX的时候,经常要用到innetHTML来更新对象的内容,但是对于更新的<script>脚本程序浏览器却无法执行,它不执行的原因是:<s­cript>标签只在浏览器第一次文档加载中被解析,下面介绍怎么样让<script>跑起来。

分析问题

既然<script>只在文档加载中才被解析,那么我就得调用document.write()方法来重新加载一次,但是这样的话原来页面的内容也会被覆盖掉了­,所以不得不用IFRAME把document.write()装载起来。

解决问题

var jsCode = 需要执行的JS代码
var jsIframe = document.createElement("iframe");
jsIframe.style.display = "none";//把jsIframe隐藏起来
document.body.appendChild(jsIframe);
with(window.frames[window.frames.length - 1]){
document.open();
document.write(jsCode); //执行JS代码
document.close();

}

jsIframe.outerHTML="";//执行后删除iframe对象

这里需要注意一个问题,因为jsCode是在iframe中运行,所以所有的页面元素都在iframe父对象之下,要调用页面元素对象必须得用 parent.obj 这种方式。

posted @ 2006-09-06 17:58 xyh 阅读(378) | 评论 (0)编辑 收藏

怎样实现一种特殊的布局---采用

[][]
  []
  []
要求:
1.每个[]的最里层是个div.
2.整体靠左,右面三个[]上下对齐,每个[]里的文字仍然靠左。
3.不要用table和layer来组织,更不要考虑什么空白的gif之类。
4.用javascript操作DOM来实现,最好符合W3C标准。

用css,<style type="text/css"> body{ text-algin:left;}
div.div1{width:10%;height:180px;float:left;}
div#Contantdiv2{width:10%;height:180px;float:left; line-height:60px;}
div.subdiv1,.subdiv2,.subdiv3{width:100%;height:auto;float:left;}
</style>

html代码中如下:
<div class="div1">内容</div>
<div id="Contantdiv2">
<div class="subdiv1">内容</div>
<div class="subdiv2">内容</div>
<div class="subdiv2">内容</div>
</div>

 

posted @ 2006-09-06 17:56 xyh 阅读(189) | 评论 (0)编辑 收藏

JVM简介

Java虚拟机(JVM)是可运行Java代码的假想计算机。只要根据JVM规格描述将解释器移植到特定的计算机上,就能保证经过编译的任何Java代码能够在­该系统上运行。本文首先简要介绍从Java文件的编译到最终执行的过程,随后对JVM规格描述作一说明。
  
  一.Java源文件的编译、下载、解释和执行
  Java应用程序的开发周期包括编译、下载、解释和执行几个部分。Java编译程序将Java源程序翻译为JVM可执行代码?字节码。这一编译过程同C/C++­的编译有些不同。当C编译器编译生成一个对象的代码时,该代码是为在某一特定硬件平台运行而产生的。因此,在编译过程中,编译程序通过查表将所有对符号的引用转­换为特定的内存偏移量,以保证程序运行。Java编译器却不将对变量和方法的引用编译为数值引用,也不确定程序执行过程中的内存布局,而是将这些符号引用信息保­留在字节码中,由解释器在运行过程中创立内存布局,然后再通过查表来确定一个方法所在的地址。这样就有效的保证了Java的可移植性和安全性。
  
  运行JVM字节码的工作是由解释器来完成的。解释执行过程分三部进行:代码的装入、代码的校验和代码的执行。装入代码的工作由"类装载器"(class
loader)完成。类装载器负责装入运行一个程序需要的所有代码,这也包括程序代码中的类所继承的类和被其调用的类。当类装载器装入一个类时,该类被放在自己­的名字空间中。除了通过符号引用自己名字空间以外的类,类之间没有其他办法可以影响其他类。在本台计算机上的所有类都在同一地址空间内,而所有从外部引进的类,­都有一个自己独立的名字空间。这使得本地类通过共享相同的名字空间获得较高的运行效率,同时又保证它们与从外部引进的类不会相互影响。当装入了运行程序需要的所­有类后,解释器便可确定整个可执行程序的内存布局。解释器为符号引用同特定的地址空间建立对应关系及查询表。通过在这一阶段确定代码的内存布局,Java很好地­解决了由超类改变而使子类崩溃的问题,同时也防止了代码对地址的非法访问。
  
  随后,被装入的代码由字节码校验器进行检查。校验器可发现操作数栈溢出,非法数据类型转化等多种错误。通过校验后,代码便开始执行了。
  
  Java字节码的执行有两种方式:
  1.即时编译方式:解释器先将字节码编译成机器码,然后再执行该机器码。
  2.解释执行方式:解释器通过每次解释并执行一小段代码来完成Java字节码程
序的所有操作。
  通常采用的是第二种方法。由于JVM规格描述具有足够的灵活性,这使得将字节码翻译为机器代码的工作
  
  具有较高的效率。对于那些对运行速度要求较高的应用程序,解释器可将Java字节码即时编译为机器码,从而很好地保证了Java代码的可移植性和高性能。
  
  二.JVM规格描述
  JVM的设计目标是提供一个基于抽象规格描述的计算机模型,为解释程序开发人员提很好的灵活性,同时也确保Java代码可在符合该规范的任何系统上运行。JVM­对其实现的某些方面给出了具体的定义,特别是对Java可执行代码,即字节码(Bytecode)的格式给出了明确的规格。这一规格包括操作码和操作数的语法和­数值、标识符的数值表示方式、以及Java类文件中的Java对象、常量缓冲池在JVM的存储映象。这些定义为JVM解释器开发人员提供了所需的信息和开发环境­。Java的设计者希望给开发人员以随心所欲使用Java的自由。
  
  JVM定义了控制Java代码解释执行和具体实现的五种规格,它们是:
  JVM指令系统
  JVM寄存器
  JVM栈结构
  JVM碎片回收堆
  JVM存储区
  
  2.1JVM指令系统
  
  JVM指令系统同其他计算机的指令系统极其相似。Java指令也是由
操作码和操作数两部分组成。操作码为8位二进制数,操作数进紧随在操作码的后面,其长度根据需要而不同。操作码用于指定一条指令操作的性质(在这里我们采用汇编­符号的形式进行说明),如iload表示从存储器中装入一个整数,anewarray表示为一个新数组分配空间,iand表示两个整数的"与",ret用于流程­控制,表示从对某一方法的调用中返回。当长度大于8位时,操作数被分为两个以上字节存放。JVM采用了"big
endian"的编码方式来处理这种情况,即高位bits存放在低字节中。这同
Motorola及其他的RISC
CPU采用的编码方式是一致的,而与Intel采用的"little
endian
"的编码方式即低位bits存放在低位字节的方法不同。
  
  Java指令系统是以Java语言的实现为目的设计的,其中包含了用于调用方法和监视多先程系统的指令。Java的8位操作码的长度使得JVM最多有256种指­令,目前已使用了160多种操作码。
  
  2.2JVM指令系统
  
  所有的CPU均包含用于保存系统状态和处理器所需信息的寄存器组。如果虚拟机定义较多的寄存器,便可以从中得到更多的信息而不必对栈或内存进行访问,这有利于提­高运行速度。然而,如果虚拟机中的寄存器比实际CPU的寄存器多,在实现虚拟机时就会占用处理器大量的时间来用常规存储器模拟寄存器,这反而会降低虚拟机的效率­。针对这种情况,JVM只设置了4个最为常用的寄存器。它们是:
  pc程序计数器
  optop操作数栈顶指针
  frame当前执行环境指针
  vars指向当前执行环境中第一个局部变量的指针
  所有寄存器均为32位。pc用于记录程序的执行。optop,frame和vars用于记录指向Java栈区的指针。
  
  2.3JVM栈结构
  
  作为基于栈结构的计算机,Java栈是JVM存储信息的主要方法。当JVM得到一个Java字节码应用程序后,便为该代码中一个类的每一个方法创建一个栈框架,­以保存该方法的状态信息。每个栈框架包括以下三类信息:
  局部变量
  执行环境
  操作数栈
  
  局部变量用于存储一个类的方法中所用到的局部变量。vars寄存器指向该变量表中的第一个局部变量。
  执行环境用于保存解释器对Java字节码进行解释过程中所需的信息。它们是:上次调用的方法、局部变量指针和操作数栈的栈顶和栈底指针。执行环境是一个执行一个­方法的控制中心。例如:如果解释器要执行iadd(整数加法),首先要从frame寄存器中找到当前执行环境,而后便从执行环境中找到操作数栈,从栈顶弹出两个­整数进行加法运算,最后将结果压入栈顶。
  操作数栈用于存储运算所需操作数及运算的结果。
  
  2.4JVM碎片回收堆
  
  Java类的实例所需的存储空间是在堆上分配的。解释器具体承担为类实例分配空间的工作。解释器在为一个实例分配完存储空间后,便开始记录对该实例所占用的内存­区域的使用。一旦对象使用完毕,便将其回收到堆中。
  在Java语言中,除了new语句外没有其他方法为一对象申请和释放内存。对内存进行释放和回收的工作是由Java运行系统承担的。这允许Java运行系统的设­计者自己决定碎片回收的方法。在SUN公司开发的Java解释器和Hot
Java环境中,碎片回收用后台线程的方式来执行。这不但为运行系统提供了良好的性能,而且使程序设计人员摆脱了自己控制内存使用的风险。
  
  2.5JVM存储区
  
  JVM有两类存储区:常量缓冲池和方法区。常量缓冲池用于存储类名称、方法和字段名称以及串常量。方法区则用于存储Java方法的字节码。对于这两种存储区域具­体实现方式在JVM规格中没有明确规定。这使得Java应用程序的存储布局必须在运行过程中确定,依赖于具体平台的实现方式。
  
  JVM是为Java字节码定义的一种独立于具体平台的规格描述,是Java平台独立性的基础。目前的JVM还存在一些限制和不足,有待于进一步的完善,但无论如­何,JVM的思想是成功的。
  
  对比分析:如果把Java原程序想象成我们的C++原程序,Java原程序编译后生成的字节码就相当于C++原程序编译后的80x86的机器码(二进制程序文件­),JVM虚拟机相当于80x86计算机系统,Java解释器相当于80x86CPU。在80x86CPU上运行的是机器码,在Java解释器上运行的是Jav­a字节码。
  
  Java解释器相当于运行Java字节码的“CPU”,但该“CPU”不是通过硬件实现的,而是用软件实现的。Java解释器实际上就是特定的平台下的一个应用­程序。只要实现了特定平台下的解释器程序,Java字节码就能通过解释器程序在该平台下运行,这是Java跨平台的根本。当前,并不是在所有的平台下都有相应J­ava解释器程序,这也是Java并不能在所有的平台下都能运行的原因,它只能在已实现了Java解释器程序的平台下运行。

posted @ 2006-09-05 22:39 xyh 阅读(307) | 评论 (0)编辑 收藏

国人为什么这么轻视技术?

卢彦 </blogs/linkin/default.aspx>

http://www.agilelabs.cn/blogs/linkin/archive/2006/07/14/1460.aspx

网上搜索一下,到处都是"过来人"的谆谆教导我们不要过分重视技术。技术的确不是创业成功的唯一原因,也的确是不能太把技术的重要性过分强调。假如目前国内是一­种技术至上的现状,技术人员的地位虚高,那么这些言论的确有助于业内整体的协调发展。但是现状是,目前国内普遍的认识并没有很抬高技术的地位。恰恰相反,技术被­过低的估计了其应有的价值,网上强调技术重要性的文章几乎没有。技术人员的地位已经是低得不能再低,在许多公司内部,已经到处都是对技术人员的轻蔑的眼光。在重­要的技术几乎都由国外主导,而目前中国已经几乎丧失了任何技术主导权的今天,还在一直继续强调切不可技术主导,将会给国家的IT产业的自强发展造成严重的影响。

比如今天看到的这篇关于创业团队的思考:切不可技术主导
<
http://sd.csdn.net/n/20060714/92602.html >,又是一篇典型文章。其实整篇看下来,作者说的有一定道理,只不过他其实考虑的只是有关Web 2.0网站的创业,却又强扣了一顶技术无用论的大帽子。他的文章标题假如是:"关于Web 2.0网站创业的思考:切不可技术主导"的话,倒也较少可辩驳之处。可惜他文章标题的范围说的是整个创业团队,那这篇文章就完全是在误导人了。

IT业技术主导创业成功的例子比比皆是,著名的有:

Borland公司。就只有两个人,谈不上管理,没有资金,没有关系,没有背景,也没有市场,要不是Anders
Hejlesberg拥有高超的技术,写出了当时世界上最块的Borland Turbo Pascal编译器,他们怎么成功?他们的创业团队是靠什么主导的?

ID公司。也只有两穷小子,John Carmark和John Romero。要不是John Carmark利用天才的3D技术写出了Doom,他们怎么成功?他们的创业团队是靠什么主导的?

微软公司。还是只有两个人。要不是Bill和Allen利用高超的技术,在4K内存的Atali 4004计算机上写出了Basic语言的解释器,他们怎么成功?他们的创业团队是靠什么主导的?

另外Apple,Oracle,Intel等等著名的公司都有类似的经历。

你也许会说这些都是以前的例子,现在不会有这种情况。OK,那么现在最红火的Google,他们的几个创始人都是技术沙文主义者,要不是他们能创造出可以支持几­亿人同时访问只用毫秒级时间的搜索引擎,他们能成功么?另外,Linux,Firefox,MySQL,JBoss这些东西,哪个创业团队不是靠技术主导成功的­?

最后,我还想知道,对一个创业团队来说,如果你不靠技术主导?那么靠什么主导?

靠市场主导?刚创业就有市场?你用什么东西占领市场?

靠管理主导?Come on,我们正在谈论的是"创业"团队,你认为哪个创业团队会有几百号人让你来管理?

靠Idea?有这种想法的人一般是空想家。就像不会在人群拥挤的大街上捡到一百万一样,容易实现的Idea早被n多人发现并且做了。哪有什么你可以想到别人没有­想到的点子。除非你想到并且可以做到的点子别人无法做到。那你在资金,关系,地位什么都没有的情况下,靠什么来拉高这个门槛让别人够不着?我能想到的只有技术。

靠关系?如果你是国家主席的儿子,那么没什么好谈的了。这篇文章不是给你看的。

靠钻法律空子,政策空子?这也是需要高超的技术的,你至少在法律政策上要很熟悉。

偷钱,抢银行?对不起,我认为这还是需要技术,同样是技术主导。

靠。。。?我实在是想不出来了,如果你想到什么可以不用靠技术来主导的成功创业方法,请麻烦告诉我一下。

posted @ 2006-09-05 22:35 xyh 阅读(223) | 评论 (0)编辑 收藏

某公司的面试题

题目比较简单:
判断题目:
1。java不只是一门语言,更是一门技术
2 java与数据库连接的是ODBC
3.后面的记不得了

填空题目:
java语言独立性的根本原因______________
javaBean的属性是基本属性,______,_____________,________
jsp指令的作用是_______________
事件模型的顺序是建立事件源,_________和_________

程序题目
这些题目都是傻瓜型的,菜鸟才做不出来

posted @ 2006-09-05 22:30 xyh 阅读(114) | 评论 (0)编辑 收藏

某公司的Java笔试题

1.选择题目,比较简单
2.问答题目
你是怎么理解JVM的?
介绍一下Web.xml的作用?
介绍一下Manifest.mf的作用?
实体Bean和会话Bean的区别?
介绍J2EE的结构,及它采用的技术?
classpath和package的关系,以及package和java files的关系
UML里composite和aggregiate的关系
3 编程题目
写出树的结构,用java代码(关键是要利用TreeNode类)
给出一个表,查询记录并保存在Vector里面(最基本的数据库操作了)

posted @ 2006-09-05 22:21 xyh 阅读(1203) | 评论 (0)编辑 收藏

某公司的技术笔试题

Q1: 一个最大为10个元素的缓冲区对象链表shareList,现在有4个生产者Producer向里面放入产品对象数据,3个消费者Consumer拿走产品对象数据,请写一多线程程序,实现对shareList的互斥访问

Q2: 现有一个类AddressFactory,用于产生32位地址Addr3264位地址Addr64的对象,另有一个类AddrDecorator实现32位和64位地址的运算。请写一程序实现上述论述。
附注:(1AddressFactory的实现采用Singleton模式
2Addr32Addr64对象的产生采用Factory模式
3AddrDecorator的实现采用Decorator模式
4)地址的运算实现简单的加、减即可


Q3: 按照要求,写下面一个GUI程序,参照下图,写一个公司内部结构的XML文件,并读取此文件在界面显示,然后实现员工的添加、删除以及姓名的修改。

 未命名.bmp
附注:(1)参考java编程风格,添加注释,可用于生成javadoc文档

(2)如果熟悉Eclipse,请将此程序实现为eclipse插件(不再写java程序),界面采用SWTjface实现。

Q4: 编写一个程序,将人民币转换成美元,人民币以字符串形式,汇率自行设定

 

posted @ 2006-09-05 22:07 xyh 阅读(369) | 评论 (0)编辑 收藏

自嘲

本人简历的自我评价:
1.绝对自信:本人深信,别人(包括天才)能做到的事情,我也一定能做到,区别在于付出的时间不同。比如说,我自信能活到158岁
2.精通世界语:本人土家语(本人是土家族)、汉语听说读写俱佳;本人熟悉java和c语言,读写能力较强,听说能力一般
3.上知天文:本人潜心研究过太阳(SUN)的结构,熟悉月食(Eclipse)形成的原理
4.下知地理:本人潜心研究过Google Maps和Edushi的3D地图,每天鼠标一点,可以进入任何一栋楼,懂得坐地日行八万里的原理
5.艰苦朴素:本人能在恶劣环境下生存,善于在阳光灿烂的春天(Spring)冬眠(Hibernate)
6.精通古文:本人古文修养好,曾潜心研究过远古的象形文字-甲骨文(Oracle),终于破解了它
7.创业精神:本人敢于冒险,J老板(JBoss)是我的崇拜对象
7.最大优点:没有任何缺点,本人是一个完美主义者,从来没进恶魔岛(六月联盟)
8.最大缺点:没有专业IT人员的任何优点,本人没有比尔盖茨的所有优点:他喜好用Windows,本人喜欢Linux;他喜好VS 2005,本人喜欢JBuilder 2005; 他喜好MSN Messager,本人喜欢QQ

posted @ 2006-08-22 10:25 xyh 阅读(556) | 评论 (0)编辑 收藏

Js正则表达式(转自Google)

原文:http://groups.google.com/group/CNIT/browse_thread/thread/6de5ae6b1d71628a

正则表达式用于字符串处理,表单验证等场合,实用高效,但用到时总是不太把握,以致往往要上网查一番。我将一些常用的表达式收藏在这里,作备忘之用。本贴随时会­更新。

匹配中文字符的正则表达式: [\u4e00-\u9fa5]

匹配双字节字符(包括汉字在内):[^\x00-\xff]

应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

String.prototype.len=function(){return
this.replace([^\x00-\xff]/g,"aa").length;}

匹配空行的正则表达式:\n[\s| ]*\r

匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/

匹配首尾空格的正则表达式:(^\s*)|(\s*$)

应用:javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现,如下:

String.prototype.trim = function()
{
    return this.replace(/(^\s*)|(\s*$)/g, "");

}

利用正则表达式分解和转换IP地址:

下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的Javascript程序:

function IP2V(ip)
{
 re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g  //匹配IP地址的正则表达式
if(re.test(ip))
{
return
RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.­$4*1

}

else
{
 throw new Error("Not a valid IP address!")

}
}

不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下:

var ip="10.100.20.168"
ip=ip.split(".")
alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))

匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

匹配网址URL的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w-
./?%&=]*)?

利用正则表达式去除字串中重复的字符的算法程序:[注:此程序不正确,原因见本贴回复]

var s="abacabefgeeii"
var s1=s.replace(/(.).*\1/g,"$1")
var re=new RegExp("["+s1+"]","g")
var s2=s.replace(re,"")
alert(s1+s2)  //结果为:abcefgi

我原来在CSDN上发贴寻求一个表达式来实现去除重复字符的方法,最终没有找到,这是我能想到的最简单的实现方法。思路是使用后向引用取出包括重复的字符,再以­重复的字符建立第二个表达式,取到不重复的字符,两者串连。这个方法对于字符顺序有要求的字符串可能不适用。

得用正则表达式从URL地址中提取文件名的javascript程序,如下结果为page1

s="http://www.9499.net/page1.htm"
s=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2")
alert(s)

利用正则表达式限制网页表单里的文本框输入内容:

用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')
"
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').r­eplace(/[^\u4E00-\u9FA5]/g,''))"

用正则表达式限制只能输入全角字符:
onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'') "
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').r­eplace(/[^\uFF00-\uFFFF]/g,''))"

用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^\d]/g,'')
"onbeforepaste=
"clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/­g,''))"

用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[\W]/g,'')
"onbeforepaste
="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]­/g,''))"

正则表达式,相关链接
http://blog.csdn.net/laily/category/19548.aspx
http://blog.csdn.net/laily/archive/2004/06/30/30525.aspx
微软的正则表达式教程(五):选择/编组和后向引用

http://blog.csdn.net/laily/archive/2004/06/30/30522.aspx
微软的正则表达式教程(四):限定符和定位符

http://blog.csdn.net/laily/archive/2004/06/30/30517.aspx
微软的正则表达式教程(三):字符匹配

http://blog.csdn.net/laily/archive/2004/06/30/30514.aspx
微软的正则表达式教程(二):正则表达式语法和优先权顺序

http://blog.csdn.net/laily/archive/2004/06/30/30511.aspx
微软的正则表达式教程(一):正则表达式简介

http://blog.csdn.net/laily/archive/2004/06/30/30360.aspx
小程序大作为:高级查找/替换、正则表达式练习器、Javascript脚本程序调试器

http://blog.csdn.net/laily/archive/2004/06/24/25872.aspx
经典正则表达式

正则表达式,正规表达式,正则表达式匹配,正则表达式语法,模式匹配,正规表达式匹配
javascript正则表达式 ASP正则表达式 ASP.NET 正则表达式
C#正则表达式 JSP正则表达式 PHP正则表达式
VB.NET正则表达式 VBSCript正则表达式编程
delphi正则表达式  jscript

# 回复:经典正则表达式 2004-08-03 2:12 PM 阿赖
正则表达式 regular expression
正则表达式 RegExp
模式 pattern
匹配 Match
.NET命名空间: System.Text.RegularExpression

# 回复:经典正则表达式 2004-08-03 2:14 PM 阿赖
补充:
^\d+$  //匹配非负整数(正整数 + 0)
^[0-9]*[1-9][0-9]*$  //匹配正整数
^((-\d+)|(0+))$  //匹配非正整数(负整数 + 0)
^-[0-9]*[1-9][0-9]*$  //匹配负整数
^-?\d+$    //匹配整数
^\d+(\.\d+)?$  //匹配非负浮点数(正浮点数 + 0)
^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]­*))$  //匹配正浮点数

^((-\d+(\.\d+)?)|(0+(\.0+)?))$  //匹配非正浮点数(负浮点数
+ 0)
^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-­9]*)))$  //匹配负浮点数

^(-?\d+)(\.\d+)?$  //匹配浮点数
^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串

^\w+$  //匹配由数字、26个英文字母或者下划线组成的字符串

^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$    //匹配email地址
^[a-zA-z]+://匹配(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$  //匹配url

# 回复:经典正则表达式 2004-09-08 7:37 PM totoro
利用正则表达式去除字串中重复的字符的算法程序:

var s="abacabefgeeii"
var s1=s.replace(/(.).*\1/g,"$1")
var re=new RegExp("["+s1+"]","g")
var s2=s.replace(re,"")
alert(s1+s2) //结果为:abcefgi
===============================
如果var s = "abacabefggeeii"
结果就不对了,结果为:abeicfgg
正则表达式的能力有限

# 回复:经典正则表达式 2004-09-10 2:07 PM 阿赖
RE: totoro
谢谢你的指点,这个javascript正则表达式程序算法确实有问题,我会试着找更好的办法!!!

# 回复:经典正则表达式 2004-10-11 3:52 PM Lai
1.确认有效电子邮件格式
下面的代码示例使用静态 Regex.IsMatch
方法验证一个字符串是否为有效电子邮件格式。如果字符串包含一个有效的电子邮件地址,则
 IsValidEmail 方法返回 true,否则返回
false,但不采取其他任何操作。您可以使用
IsValidEmail,在应用程序将地址存储在数据库中或显示在
ASP.NET
页中之前,筛选出包含无效字符的电子邮件地址。

[Visual Basic]
Function IsValidEmail(strIn As String) As Boolean
' Return true if strIn is in valid e-mail format.
Return Regex.IsMatch(strIn,
("^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-z­A-Z]{2,4}|[0-9]{1,3})(\]?)$")

End Function
[C#]
bool IsValidEmail(string strIn)
{
// Return true if strIn is in valid e-mail format.
return Regex.IsMatch(strIn,
@"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-z­A-Z]{2,4}|[0-9]{1,3})(\]?)$");

}

2.清理输入字符串
下面的代码示例使用静态 Regex.Replace
方法从字符串中抽出无效字符。您可以使用这里定义的
CleanInput
方法,清除掉在接受用户输入的窗体的文本字段中输入的可能有害的字符。CleanInput
在清除掉除 @、-(连字符)和
.(句点)以外的所有非字母数字字符后返回一个字符串。

[Visual Basic]
Function CleanInput(strIn As String) As String
' Replace invalid characters with empty strings.
Return Regex.Replace(strIn, "[^\w\.@-]", "")
End Function
[C#]
String CleanInput(string strIn)
{
// Replace invalid characters with empty strings.
return Regex.Replace(strIn, @"[^\w\.@-]", "");

}

3.更改日期格式
以下代码示例使用 Regex.Replace 方法来用 dd-mm-yy
的日期形式代替 mm/dd/yy 的日期形式。

[Visual Basic]
Function MDYToDMY(input As String) As String
Return Regex.Replace(input, _
"\b(?<month>\d{1,2})/(?<day>\d{1,2})/(?<year>\d{2,4})\b", _
"${day}-${month}-${year}")
End Function
[C#]
String MDYToDMY(String input)
{
return Regex.Replace(input,
"\\b(?<month>\\d{1,2})/(?<day>\\d{1,2})/(?<year>\\d{2,4})\\b",
"${day}-${month}-${year}");

}

Regex 替换模式
本示例说明如何在 Regex.Replace
的替换模式中使用命名的反向引用。其中,替换表达式
${day} 插入由 (?<day>...) 组捕获的子字符串。

有几种静态函数使您可以在使用正则表达式操作时无需创建显式正则表达式对象,而
Regex.Replace
函数正是其中之一。如果您不想保留编译的正则表达式,这将给您带来方便

4.提取 URL 信息
以下代码示例使用 Match.Result 来从 URL
提取协议和端口号。例如,“http://www.contoso.com:8080/letters/readme.html”将返回“http:8080”。

[Visual Basic]
Function Extension(url As String) As String
Dim r As New Regex("^(?<proto>\w+)://[^/]+?(?<port>:\d+)?/", _
RegexOptions.Compiled)
Return r.Match(url).Result("${proto}${port}")
End Function
[C#]
String Extension(String url)
{
Regex r = new Regex(@"^(?<proto>\w+)://[^/]+?(?<port>:\d+)?/",
RegexOptions.Compiled);
return r.Match(url).Result("${proto}${port}");

posted @ 2006-08-18 14:50 xyh 阅读(601) | 评论 (0)编辑 收藏

设为首页 加入收藏 与我联系 您的浏览器: