Sunday, December 28, 2008

XMLBeans2.0


XMLBean是Apache的一个开源项目,可以从http://www.apache.org下载,配置内容看readme.txt (home,path,classpath-lib里的xmlbean.jar) 解压后目录如下:

xmlbean
+---bin
+---docs
+---lib
+---samples
+---schemas
利用scomp来生成Java Classes

 scomp是XMLBean提供的一个编译工具,它在bin的目录下. 通过这个工具,我们可以将以上的Schema文件生成Java Classes.scomp的语法如下:-
 scomp [options] [dirs]* [schemaFile.xsd]* [service.wsdl]* [config.xsdconfig]*
主要参数说明:
 -src [dir] -- 生成的Java Classes存放目录
 -srconly -- 不编译Java Classes,不产生Jar文件
 -out [jarFileName] -- 生成的Jar文件,缺省是xmltypes.jar
-compiler -- Java编译器的路径,即Javac的位置
 schemaFile.xsd -- XML Schema文件位置

 config.xsdconfig -- xsdconfig文件的位置, 这个文件主要用来制定生成的Java Class的一些文件名规则和Package的名称,在本文,package是sample.xmlbean
 运行的:
scomp -src build\src -out build\customerXmlBean.jar schema\customer.xsd
-compiler C:\jdk142_04\bin\javac customer.xsdconfig

这个命令行的意思是告诉scomp生成customerXmlBean.jar,放在build目录下,同时生成源代码放在build\src 下, Schema文件是customer.xsd,xsdconfig文件是customer.xsdconfig.其实, 生成的Java源代码没有多大作用,我们要的是jar文件.我们先看一下build\src\sample\xmlbean下生成的Classes.
摘自于:XMLBeans2.0.0如何使用总结

Liverpool Logo

Thursday, December 25, 2008

【转】佛学181智慧

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

二、与其说是别人让你痛苦,不如说是自己的修养不够。 
三、如果你不给自己烦恼,别人也永远不可能给你烦恼。因为在你自己的内心,你放不下。
四、好好的管教你自己,不要管别人。
五、不宽恕众生,不原谅众生,是苦了你自己。 
六、别说别人可怜,自己更可怜,自己又懂得人生多少? 
七、学佛是对自己的良心交待,不是做给别人看的。
八、福报不够的人,就会常常听到是非;福报够的人,从来就没听到过是非。 
九、修行是点滴的工夫。 
十、在顺境中修行,永远不能成佛。
十一、你永远要感谢给你逆境的众生。
十二、你随时要认命,因为你是人。
十三、你永远都要宽恕众生,不论他有多坏,甚至他伤害过你,你一定要放下,才能得到真正的快乐。
十四、这个世界本来就是痛苦的,没有例外的。 
十五、当你快乐时,你要想,这快乐不是永恒的。当你痛苦时你要想这痛苦也不是永恒的。
十六、认识自己,降伏自己,改变自己,才能改变别人。
十七、今日的执著,会造成明日的后悔。
十八、你可以拥有爱,但不要执著,因为分离是必然的。
十九、不要浪费你的生命在你一定会后悔的地方上。
二十、你什么时候放下,什么时候就没有烦恼。
二一、内心没有分别心,就是真正的苦行。
二二、学佛第一个观念,永远不去看众生的过错。你看众生的过错,你永远污染你自己,你根本不可能修行。
三、你每天若看见众生的过失和是非,你就要赶快去忏悔,这就是修行。
二四、业障深重的人,一天到晚都在看别人的过失与缺点,真正修行的人,从不会去看别人的过失与缺点。
二五、每一种创伤,都是一种成熟。
二六、当你知道迷惑时,并不可怜,当你不知道迷惑时,才是最可怜的。
二七、狂妄的人有救,自卑的人没有救。
二八、你不要一直不满人家,你应该一直检讨自己才对。不满人家,是苦了你自己。
二九、一切恶法,本是虚妄的,你不要太自卑你自己。一切善法,也是虚妄的,你也不要太狂妄你自己。
三十、当你烦恼的时候,你就要告诉你自己,这一切都是假的,你烦恼什么? 
三一、当你未学佛的时候,你看什么都不顺。当你学佛以后,你要看什么都很顺。
三二、你要包容那些意见跟你不同的人,这样子日子比较好过。你要是一直想改变他,那样子你会很痛苦。要学学怎样忍受他才是。你要学学怎样包容他才是。
三三、承认自己的伟大,就是认同自己的愚疑。
三四、修行就是修正自己错误的观念。
三五、医生难医命终之人,佛陀难渡无缘的众生。
三六、一个人如果不能从内心去原谅别人,那他就永远不会心安理得。
三七、心中装满着自己的看法与想法的人,永远听不见别人的心声。
三八、毁灭人只要一句话,培植一个人却要千句话,请你多口下留情。
三九、当你劝告别人时,若不顾及别人的自尊心,那么再好的言语都没有用的。
四十、不要在你的智慧中夹杂着傲慢。不要使你的谦虚心缺乏智慧。
四一、根本不必回头去看咒骂你的人是谁?如果有一条疯狗咬你一口,难道你也要趴下去反咬他一口吗?
四二、忌妒别人,不会给自己增加任何的好处。忌妒别人,也不可能减少别人的成就。
四三、永远不要浪费你的一分一秒,去想任何你不喜欢的人。
四四、多少人要离开这个世间时,都会说出同一句话,这世界真是无奈与凄凉啊!
四五、恋爱不是慈善事业,不能随便施舍的。感情是没有公式,没有原则,没有道理可循的。可是人们至死都还在执著与追求。
四六、请你用慈悲心和温和的态度,把你的不满与委屈说出来,别人就容易接受。
四七、创造机会的人是勇者。等待机会的人是愚者。
四八、能说不能行,不是真智慧。
四九、多用心去倾听别人怎么说,不要急着表达你自己的看法。
五十、同样的瓶子,你为什么要装毒药呢?同样的心理,你为什么要充满着烦恼呢?
五一、得不到的东西,我们会一直以为他是美好的,那是因为你对他了解太少,没有时间与他相处在一起。当有一天,你深入了解后,你会发现原不是你想像中的那么美好。
五二、这个世间只有圆滑,没有圆满的。
五三、修行要有耐性,要能甘于淡泊,乐于寂寞。
五四、活着一天,就是有福气,就该珍惜。当我哭泣我没有鞋子穿的时候,我发现有人却没有脚。
五五、多一分心力去注意别人,就少一分心力反省自己,你懂吗?
五六、眼睛不要老是睁得那么大,我且问你,百年以后,那一样是你的。
五七、欲知世上刀兵劫,但听屠门夜半声。不要光埋怨自己多病,灾祸横生,多看看横死在你刀下的众生又有多少?
五八、憎恨别人对自己是一种很大的损失。
五九、每一个人都拥有生命,但并非每个人都懂得生命,乃至于珍惜生命。不了解生命的人,生命对他来说,是一种惩罚。
六十、自以为拥有财富的人,其实是被财富所拥有。
六一、情执是苦恼的原因,放下情执,你才能得到自在。
六二、随缘不是得过且过,因循苟且,而是尽人事听天命。
六三、不要太肯定自己的看法,这样子比较少后悔。
六四、当你对自己诚实的时候,世界上没有人能够欺骗得了你。
六五、用伤害别人的手段来掩饰自己缺点的人,是可耻的。
六六、世间的人要对法律负责任。修行的人要对因果负责任。
六七、在你贫穷的时候,那你就用身体去布施,譬如说扫地、洒水、搬东西等,这也是一种布施。
六八、内心充满忌妒,心中不坦白,言语不正的人,不能算是一位五官端正的人。
六九、默默的关怀与祝福别人,那是一种无形的布施。
七十、多讲点笑话,以幽默的态度处事,这样子日子会好过一点。
七一、与人相处之道,在于无限的容忍。
七二、不要刻意去猜测他人的想法,如果你没有智慧与经验的正确判断,通常都会有错误的。
七三、要了解一个人,只需要看他的出发点与目的地是否相同,就可以知道他是否真心的。
七四、人生的真理,只是藏在平淡无味之中。
七五、不洗澡的人,硬擦香水是不会香的。名声与尊贵,是来自于真才实学的。有德自然香。
七六、与其你去排斥它已成的事实,你不如去接受它,这个叫做认命。
七七、佛菩萨只保佑那些肯帮助自己的人。
七八、逆境是成长必经的过程,能勇于接受逆境的人,生命就会日渐的茁壮。
七九、你要感谢告诉你缺点的人。
八十、能为别人设想的人,永远不寂寞。
八一、如果你能像看别人缺点一样,如此准确般的发现自己的缺点,那么你的生命将会不平凡。
八二、原谅别人,就是给自己心中留下空间,以便回旋。
八三、时间总会过去的,让时间流走你的烦恼吧!
八四、你硬要把单纯的事情看得很严重,那样子你会很痛苦。
八五、永远扭曲别人善意的人,无药可救。
八六、人不是坏的,只是习气罢了,每个人都有习气,只是深浅不同罢了。只要他有向道的心,能原谅的就原谅他,不要把他看做是坏人。
八七、说一句谎话,要编造十句谎话来弥补,何苦呢?
八八、其实爱美的人,只是与自己谈恋爱罢了。
八九、世界上没有一个永远不被毁谤的人,也没有一个永远被赞叹的人。当你话多的时候,别人要批评你,当你话少的时候,别人要批评你,当你沈默的时候,别人还是要批评你。在这个世界上,没有一个不被批评的。
九十、夸奖我们,赞叹我们的,这都不是名师。会讲我们,指示我们的,这才是善知识,有了他们我们才会进步。
九一、你目前所拥有的都将随着你的死亡而成为他人的,那为何不现在就布施给真正需要的人呢?
九二、为了赞美而去修行,有如被践踏的香花美草。
九三、白白的过一天,无所事事,就像犯了窃盗罪一样。
九四、能够把自己压得低低的,那才是真正的尊贵。
九五、广结众缘,就是不要去伤害任何一个人。
九六、沈默是毁谤最好的答覆。
九七、对人恭敬,就是在庄严你自己。
九八、拥有一颗无私的爱心,便拥有了一切。
九九、仇恨永远不能化解仇恨,只有慈悲才能化解仇恨,这是永恒的至理。
一00、你认命比抱怨还要好,对于不可改变的事实,你除了认命以外,没有更好的办法了。
一0一、不要因为众生的愚疑,而带来了自己的烦恼。不要因为众生的无知,而痛苦了你自己。
一0二、别人讲我们不好,不用生气、难过。说我们好也不用高兴,这不好中有好,好中有坏,就看你会不会用?
一0三、如果你自己明明对,别人硬说你不对,你也要向人忏悔,修行就是修这些。你什么事都能忍下来,才会进步。就是明明是你对,你也要向他人求忏悔,那就是修行了。
一0四、当你的错误显露时,可不要发脾气,别以为任性或吵闹,可以隐藏或克服你的缺点。
一0五、不要常常觉得自己很不幸,世界上比我们痛苦的人还要多。
一0六、愚痴的人,一直想要别人了解他。有智慧的人,却努力的了解自己。
一0七、别人永远对,我永远错,这样子比较没烦恼。
一0八、来是偶然的,走是必然的。所以你必须,随缘不变,不变随缘。
一0九、慈悲是你最好的武器。一一0、只要面对现实,你才能超越现实。
一一一、良心是每一个人最公正的审判官,你骗得了别人,却永远骗不了你自己的良心。
一一二、不懂得自爱的人,是没有能力去爱别人的。
一一三、学佛就是在学做人而已。
一一四、正人行邪法,邪法亦正,邪人行正法,正法亦邪,一切唯心造。
一一五、有时候我们要冷静问问自已,我们在追求什么?我们活着为了什么?
一一六、不要因为小小的争执,远离了你至亲的好友,也不要因为小小的怨恨,忘记了别人的大恩。一一七、勇于接受别人的批评,正好可以调整自己的缺点。
一一八、感谢上苍我所拥有的,感谢上苍我所没有的。
一一九、凡是能站在别人的角度为他人着想,这个就是慈悲。
一二0、学佛不是对死亡的一种寄托,而是当下就活得自在和超越。
一二一、佛陀从不勉强别人去做他不喜欢的事情,佛陀只是告诉众生,何者是善?何者是恶?善恶还是要自己去选择,生命还是要自己去掌握。 
一二二、所谓的放下,就是去除你的分别心、是非心、得失心、执著心
一二三、说话不要有攻击性,不要有杀伤力,不夸已能,不扬人恶,自然能化敌为友。
一二四、一个常常看别人缺点的人,自己本身就不够好,因为他没有时间检讨他自己。
一二五、是非天天有,不听自然无,是非天天有,不听还是有,是非天天有,看你怎么办?
一二六、真正的布施,就是把你的烦恼、忧虑、分别和执著心通通放下。
一二七、如果你真的爱他,那么你必须容忍他部份的缺点。 
一二八、要克服对死亡的恐惧,你必须要接受世上所有的人,都会死去的观念。
一二九、所有的病患,医生最难治,所有的众生,自以为是的人最难渡。
一三0、一匹驴,吃再好的草,也不会成为一匹骏马。用执著和分别心去修行,再大的精进,也不会成佛。 
一三一、了解永恒真理的人,就不会为任何的生离死别而哀伤悲泣,因为生离死别是必然的。
一三二、虽然你讨厌一个人,但却又能发觉他的优点好处,像这样子有修养的人,天下真是太少了。一三三、若能一切随他去,便是世间自在人。
一三四、希望你常对自己说,闻到了佛法,我是最幸福的人,除了这幸福外,再没有别的了。
一三五、如果你能每天呐喊二十一遍「我用不着为这一点小事而烦恼」,你会发现,你心里有一种不可思议的力量,试试看,很管用的。
一三六、诚实的面对你内心的矛盾和污点,不要欺骗你自己。
一三七、因果不曾亏欠过我们什么,所以请不要抱怨。
一三八、我们确实有如是的优点,但也要隐藏几分,这个叫做涵养。
一三九、无事莫把闲话聊,是非往往闲话生。
一四0、大多数的人一辈子只做了三件事;自欺、欺人、被人欺。
一四一、太过于欣赏自己的人,不会去欣赏别人的优点。
一四二、活在别人的掌声中,是禁不起考验的人。
一四三、心是最大的骗子,别人能骗你一时,而它却会骗你一辈子。
一四四、坏孩子,父母总是比较操心。所以对于罪业愈深重的众生,我们更应该特别宽恕他怜愍他,而不应该远离他舍弃他。
一四五、只要自觉心安,东西南北都好。如有一人未度,切莫自己逃了。
一四六、用平常心来生活,用惭愧心来待人,心来处事,用菩提心契佛心。
一四七、当你手中抓住一件东西不放时,你只能拥有这件东西,如果你肯放手,你就有机会选择别的。人的心若死执自己的观念,不肯放下,那么他的智慧也只能达到某种程度而已。
一四八、人家怕你,并不是一种福,人家欺你,并不是一种辱。
一四九、不是某人使我烦恼,而是我拿某人的言行来烦恼自己。
一五0、不要刻意去曲解别人的善意,你应当往好的地方想。
一五一、世上的事,不如己意者,那是当然的。
一五二、我的财富并不是因为我拥有很多,而是我要求的很少。
一五三、吃了就一定要拉,人一定要学会随缘放下,否则就会便秘。
一五四、常以为别人在注意你,或希望别人注意你的人,会生活的比较烦恼。
一五五、我能为你煮东西,但我不能为你吃东西。各人吃饭是各人饱,各人生死是个人了。
一五六、看轻别人很容易,要摆平自己却很困难。
一五七、人类最大的错误,在于不敢承担圣人的心。
一五八、你只管活你自己的,不必去介意别人的扭曲与是非。
一五九、如果你准备结婚的话,告诉你一句非常重要的哲学名言「你一定要忍耐包容对方的缺点,世界上没有绝对幸福圆满的婚姻,幸福只是来自于无限的容忍与互相尊重。」
一六0、如果你能够平平安安的渡过一天,那就是一种福气了。多少人在今天已经见不到明天的太阳,多少人在今天已经成了残废,多少人在今天已经失去了自由,多少人在今天已经家破人亡。
一六一、是非和得失,要到最后的结果,才能评定。
一六二、你不必和因果争吵,因果从来就不会误人。你也不必和命运争吵,命运它是最公平的审判官。
一六三、你有你的生命观,我有我的生命观,我不干涉你。只要我能,我就感化你。如果不能,那我就认命。
一六四、你希望掌握永恒,那你必须控制现在。
一六五、恶口永远不要出自于我们的口中,不管他有多坏,有多恶。你愈骂他,你的心就被污染了,你要想,他就是你的善知识。
一六六、当你明天开始生活的时候,有人跟你争执,你就让他赢,这个赢跟输,都只是文字的观念罢了。当你让对方赢,你并没有损失什么。所谓的赢,他有赢到什么?得到什么?所谓的输,你又输到什么?失去什么?
一六七、我们大部份的生命都浪费在文字语言的捉摸上。
一六八、你不要常常觉得自己很委曲,你应该要想,他对我这样已经很好了,这就是修行的功夫。
一六九、别人可以违背因果,别人可以害我们,打我们,毁谤我们。可是我们不能因此而憎恨别人,为什么?我们一定要保有一颗完整的本性和一颗清净的心。
一七0、与任何人接触时,要常常问自己,我有什么对他有用?使他得益。如果我不能以个人的道德、学问和修持的力量,来使人受益,就等于欠了一份债。
一七一、出家是一生一世的事,修行是多生多劫的事。
一七二、信佛,学佛,不是为自己,乃是为一切苦海中的众生。
一七三、佛不渡无缘的人,不能渡的人,我们就把他当做菩萨来看。
一七四、如果一个人没有苦难的感受,就不容易对他人给予同情。你要学救苦救难的精神,就得先受苦受难。
一 七五、一般人在遇到对方的权势大,财富大,气力大,在无可奈何的情形之下而忍,这算什么忍耐呢?真正的忍是,就算他欺负了你,对不住你,但他什么都不及 你,你有足够的力量对付他,而你却能容忍他,认为他的本性和我一样,只是一时糊涂,或在恶劣的环境中受到熏染罢了,你不必与他计较,能在这样的情况及心境 之下容忍那才是真正的忍耐。   
一七七、世界原本就不是属于你,因此你用不着抛弃,要抛弃的是一切的执著。万物皆为我所用,但非我所属。
一七八、宁可自己去原谅别人,莫让别人来原谅你。
一七九、当你用烦恼心来面对事物时,你会觉得一切都是业障,世界也会变得丑陋可恨。
一八0、欲为诸佛龙象,先做众生马牛。
一八一、虽然我们不能改变周遭的世界,我们就只好改变自己,用慈悲心和智慧心来面对这一切。

谢谢你看完了哈!~~佛会保佑你的 !~~3Q!~~~

Tuesday, December 23, 2008

Oracle 学习计划



1.首先要学习ORACLE的体系结构,分清基本概念  掌握有关ORACLE的基本概念,学习一些简单的实际操作,懂得如何去管理ORACLE数据库(基本使用)对SQL和ORACLE体系结构有更深入的了解。
  2.到了这一步你基本上算是初步掌握了ORACLE,下面将要根据你的方向来具体学习其它的ORACLE知识了。如果你是开发人员,则需要更多地去学习PL/SQL以及DEVELOPER,而这将是一门新的课程。如果你是一名DBA,请继续。
  3.现在可以根据自己的实际情况,进行有选择的学习。可以选择深入学习ORACLE的管理、备份与恢复、性能调整、网络等。当然在学习这些知识的过程中,如果有实际的工作更好,这样可以在实际中成长,学会TROUBLE SHOOTING。
  4.在学习的过程中,可以在网站或论坛中与他人进行交流,可以看别人的一些经验文章,也可以自己写一些心得体会。

学习资料

  • 《Oracle 数据库管理基础-》考OCP证书,对oracle先有一个系统的学习,然后看Oracle Concepts、oracle online document,对oracle的原理会有更深入的了解,同时可以开始进行一些专题的研究如:RMAN、RAS、STATSPACT、DATAGUARD、TUNING、BACKUP&RECOVER等等。

  • Oracle官方文档:《concept》oracle的体系和概念
    OCP的教学用书STUDY GUIDE(SG)。
    Oracle 10g 备份恢复手册
    Oracle 10g 高级管理与优化
    Oracle 10g PLSQL程序设计
    Oracle 10g 数据库管理员手册

http://tahiti.oracle.com

http://metalink.oracle.com/
http://www.oracle.com

http://www.dbazine.com/ http://asktom.oracle.com
http://www.orafaq.net/
http://www.ixora.com.au/
http://www.oracle-base.com
http://www.dba-oracle.com/oracle_links.htm

Monday, October 27, 2008

[转]腾讯员工写给毕业生的文字

校园到职场——写给2008毕业生
亲爱的各位同学,腾讯未来的伙伴们, 当我写下这个标题的时候,内心充满的激动与欣喜,因为不论是在面试过程中还是在QQ群中,我感受到了大家对即将走上职场、走进腾讯的充满憧憬、期待而又带着惶恐的心情,这样的感受令我想起了9年前,我刚从南京大学毕业的时候,相信我当时的心情与大家此时相同。  九年多时间,我的岗位发生过很多次改变,从一名软件研发工程师,到测试工程师,到资深系统工程师,到项目经理,到小组长,到总监,这个过程中我有太多的感受,这次终于逼着自己上周给大家做个承诺来与大家分享。 可以谈的方面很多,大家来报到后(欢迎提前来实习哈)我们相处的时间很多,因此我这次先就大家比较关心的方面以及我认为很重要的方面谈谈我的想法。算是抛一个砖,来公司后,我们身边会有很多优秀的同事会给到大家很多有价值的帮助,尤其是我们的领导Michael Jiang,是一位非常优秀的经理人,我们可以从他身上学到从业务到做人多个方面的经验。
http://blog.yinsha.com/index.php/20/viewspace_77886.html

Sunday, October 26, 2008

Terry Qu's CV

Chengliang Qu
State Key Lab of Software Engineering, Wuhan University
Wuhan, 430072, PRC
Phone: 86+15871403192
Email:
terry-qu@hotmail.com
Personal Page: http://terryqu.blogspot.com

EDUCATION
2006.10 – Present State Key Lab of Software Engineering(SKLSE), Wuhan University, Wuhan, P.R.China
Exempted from the M.S.Candidate Entrance Examination
Master in Software Architecture, Aspect-oriented Software Development, Semantic Web
Expected Graduation Date: July 2009 Mentor: Prof. Ying Shi, Deputy Director
2003.9 – 2006.10 International School of Software (ISS), Wuhan University, Wuhan, P.R.China
B.S. in Software Engineering
Major GPA: 3.83/4.0 Class Ranking: 2/33

COMPUTER Operating Systems: Linux (Redhat, Fedora), Win XP/2000, Mainframe Z/OS
SKILLS Programming Languages:
l Eclipse Platform: Java, J2EE, JSP/Servlet, XML, UML, Web Services, WSDL, AspectJ, JavaScript, SQL Conversance
l C/C++,Delphi, Visual Basic 6/VB.Net, JCL, HTML/DHTML, CSS Familiarity
Databases: SQL, MySQL, MS SQL Server, PostgreSQL, JDBC, MS Access
Frameworks&Plug-ins: Jarkata Struts, GEF,EMF,SWT/JFace for Eclipse RCP
Web Application Servers: Resin, Apache Tomcat
Other Tools: MyEclipse6.0; VC++6.0; CVSNT; WinCVS; AptanaStudio; RationalRose; Protege; Edraw; Visio; Project2000; Notpad++; XMLSpy; Dreamweaver; FlashFTP; UltraEdit; Delphi7; InstallAnywhere;

PROJECT EXPERIENCE
2008.3-present Main Researcher and Developer, RDF4S Platform
l Conducted in-depth study of resource description framework and semantic web
l Design and develop a RDF4S Platform based on resource description framework for
Semantics (RDF4S) specification proposed by SKLSE for national program 863- design and implementation of a semantics-oriented programming language
l Established the overall development environment
l Conceptualized and implemented the text editor plug-in and graphical editor plug-in of web service description language for semantics (WSDL4S) using EMF and Eclipse plug-in development skills
2007.3-2007.5 Project Leader, Epoch platform, SKLSE, Wuhan University, China
l Designed and developed a CASE platform- for the design of aspect-oriented software architecture based on the aspect-oriented software architecture design language-Epoch by using GEF and Eclipse RCP development skills.
l Accumulated and researched a mountain of the GEF knowledge by reading enormous GEF specification and technical documents about Eclipse plug-in and RCP development as well as detailed analysis of the open source project on Sourceforge using GEF
l Grasped the kernel thinking of GEF and API specification, built the development environment and accomplished the whole architectural design of platform.
2006.10-2007.12 Project Leader, Interactive English Platform
l Designed and developed the large-scale commercial Web system-Interactive English Platform for Yingwei tech company of Wuhan based on Struts framework
l Researched and developed objectives, goals, and budget plan
l Drafted team proposal and investigation reports and coordinated team of ten
l Conceptualized and achieved feasibility and requirement analysis , development schedule, allocation of workload, database/architecture/business logic design, code specification, testing, document maintenance, establishment of environment , core sub-module development and code optimization,. http://www.wd-english.com/
2006.3—2006.5 Project leader Wuhan University Blog Community Web system based on MVC
Designed the core business process and database, implemented the critical functional requirements - template design, tags and testing case, document creation, project architecture establishment, and demonstrated the final product in response to experts’ inquiries.
2006.6 Designed and developed C/S system in Java on Linux seperately using CORBA/RMI/Socket
2006.1 Designed and developed Bug Management System based on MVC using Jsp/Servlet
2005.12—2006.1 Designed and developed CMM compiler in C
2005.10—2005.12 Designed and developed enterprise information management system based on RBAC in Delphi as a main developer responsible for designing database and implementing audit functional module and other sub modules.

TRAINING
Passed Sun Certified Java Programming (SCJP) Examination SCORE:80% 2006.11
CERTIFICATE Participated in IBM Mainframe Training 2007.3-6
Lessons: Introduction to z/OS; z/OS Fundamental System Skills; JCL; Storage Management
Fundamentals; VSAM; RACF;

SELECTED HONORS AND AWARDS
l The 1st Fellowship of State Key Lab of Software Engineering 2007, 2008
l The Excellent Party member of International School of Software, Wuhan University 2007
l The Third Consecutive Annual People’s Scholarship of Wuhan University 2004, 2005, 2006
l The 1st Prize of 2006 Software Design Competition Hosted by ISS and Sponsored by KingSoft corporation
l The 13th place in the Final of “Goes the West wherever the motherland needs us most” Chinese speech contest
l The Excellent Student Award of Wuhan University in Morality, Intellectuality and Physical Force 2003-2004
l The Excellent Leader Award of Wuhan University 2003-2004
l The 2nd Prize of National Chemistry Olympics Contest of Senior High School Students 2001

ACTIVITIES
l 2006-present Being the party branch secretary of graduate party branch in grade 2007 of SKLSE , put stress on the construction of a contingent of party branch ,and instantly conveyed the gist of superior branch’s documents and supervised and cultivated non-party students’ potential for entry into party ,led members to visit ZhongShan Armada and 8.7 Meeting Location
l 2005 As the host of the evening party for welcoming freshman of ISS, successfully challenged the opportunity, and won the accolades
l 2004 As the external liaison minister of Students’ Union , strongly convinced KingSoft corporation , one of the most leading companies in IT field , to offer the sponsor for Software Design Competition hosted by ISS, and prepared and conducted the plan for the final success of the competition
l 2004 Established an actively cooperative relationship between ISS and Wuhan Evening Newspaper ,the most popular newspaper office and initiated an original activity jointly held by ISS and Wuhan Evening Newspaper by selling newspaper to collect money as donations for Hope Project
l 2003 As the monitor, successfully managed the class affairs, coordinated and executed class social, athletic and recreational activities such as debate, speech, table tennis, football contest, dance party, spring outing and so forth.
l 2003 Being elected as volunteer of the grand 110th anniversary ceremony of Wuhan University, accompanied the VIP abroad to visit Wuhan University as a guide (top 0.1%)

HOBBIES Making Friends, Playing Football/Table-Tennis/Basketball/Badminton, Making Speech

SELF-EVALUATION
◆ Five years of specialized study in computer science has laid a solid theoretical foundation
◆ A strong capability to conduct logical reasoning and the ability to solve encountered problems independently
◆ I've developed my own efficient learning strategies and absorbed full experience in designing and developing large- scale systems
◆ A hard-working person with strong sense of integrity, responsibility ,innovation, self-motivated, enthusiasm.
◆ Good Cooperative and Conscientious Attitude

Tuesday, October 21, 2008

java中堆栈(stack)和堆(heap)【转摘】
一、堆栈(stack)和堆(heap)?
(1)内存分配的策略
  按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的.
 静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编译时就可以给他们分配固定的内存空间.这种分配策略要求程序代码中不允许有可变数据结构(比如可变数组)的存在,也不允许有嵌套或者递归的结构出现,因为它们都会导致编译程序无法计算准确的存储空间需求.
 栈式存储分配也可称为动态存储分配,是由一个类似于堆栈的运行栈来实现的.和静态存储分配相反,在栈式存储方案中,程序对数据区的需求在编译时是完全未知的,只有到运行的时候才能够知道,但是规定在运行中进入一个程序模块时,必须知道该程序模块所需的数据区大小才能够为其分配内存.和我们在数据结构所熟知的栈一样,栈式存储分配按照先进后出的原则进行分配。
 静态存储分配要求在编译时能知道所有变量的存储要求,栈式存储分配要求在过程的入口处必须知道所有的存储要求,而堆式存储分配则专门负责在编译时或运行时模块入口处都无法确定存储要求的数据结构的内存分配,比如可变长度串和对象实例.堆由大片的可利用块或空闲块组成,堆中的内存可以按照任意顺序分配和释放.
(2)堆和栈的比较
  上面的定义从编译原理的教材中总结而来,除静态存储分配之外,都显得很呆板和难以理解,下面撇开静态存储分配,集中比较堆和栈:
 从堆和栈的功能和作用来通俗的比较, 堆主要用来存放对象的,栈主要是用来执行程序的 .而这种不同又主要是由于堆和栈的特点决定的:
在编程中,例如C/C++中,所有的方法调用都是通过栈来进行的,所有的局部变量,形式参数都是从栈中分配内存空间的。实际上也不是什么分配,只是从栈顶向上用就行,就好像工厂中的传送带(conveyor belt)一样,Stack Pointer会自动指引你到放东西的位置,你所要做的只是把东西放下来就行.退出函数的时候,修改栈指针就可以把栈中的内容销毁.这样的模式速度最快,当然要用来运行程序了.需要注意的是,在分配的时候,比如为一个即将要调用的程序模块分配数据区时,应事先知道这个数据区的大小,也就说是虽然分配是在程序运行时进行的,但是分配的大小多少是确定的,不变的,而这个"大小多少"是在编译时确定的,不是在运行时.
堆是应用程序在运行的时候请求操作系统分配给自己内存,由于从操作系统管理的内存分配,所以在分配和销毁时都要占用时间,因此用堆的效率非常低.但是堆的优点在于,编译器不必知道要从堆里分配多少存储空间,也不必知道存储的数据要在堆里停留多长的时间,因此,用堆保存数据时会得到更大的灵活性。事实上,面向对象的多态性,堆内存分配是必不可少的,因为多态变量所需的存储空间只有在运行时创建了对象之后才能确定.在C++中,要求创建一个对象时,只需用new命令编制相关的代码即可。执行这些代码时,会在堆里自动进行数据的保存.当然,为达到这种灵活性,必然会付出一定的代价:在堆里分配存储空间时会花掉更长的时间!这也正是导致我们刚才所说的效率低的原因,看来列宁同志说的好,人的优点往往也是人的缺点,人的缺点往往也是人的优点(晕~).
(3)JVM中的堆和栈
  JVM是基于堆栈的虚拟机.JVM为每个新创建的线程都分配一个堆栈.也就是说,对于一个Java程序来说,它的运行就是通过对堆栈的操作来完成的。堆栈以帧为单位保存线程的状态。JVM对堆栈只进行两种操作:以帧为单位的压栈和出栈操作。
我们知道,某个线程正在执行的方法称为此线程的当前方法.我们可能不知道,当前方法使用的帧称为当前帧。当线程激活一个Java方法,JVM就会在线程的Java堆栈里新压入一个帧。这个帧自然成为了当前帧.在此方法执行期间,这个帧将用来保存参数,局部变量,中间计算过程和其他数据.这个帧在这里和编译原理中的活动纪录的概念是差不多的.
从Java的这种分配机制来看,堆栈又可以这样理解:堆栈(Stack)是操作系统在建立某个进程时或者线程(在支持多线程的操作系统中是线程)为这个线程建立的存储区域,该区域具有先进后出的特性。
每一个Java应用都唯一对应一个JVM实例,每一个实例唯一对应一个堆。应用程序在运行中所创建的所有类实例或数组都放在这个堆中,并由应用所有的线程共享.跟C/C++不同,Java中分配堆内存是自动初始化的。Java中所有对象的存储空间都是在堆中分配的,但是这个对象的引用却是在堆栈中分配,也就是说在建立一个对象时从两个地方都分配内存,在堆中分配的内存实际建立这个对象,而在堆栈中分配的内存只是一个指向这个堆对象的指针(引用)而已。

Thursday, August 21, 2008

GoldMan Intern Experience

转贴:高盛实习的感触
转自一个朋友的blog。其实我想大部分人第一次点进来看这篇文章都是冲着GS的名字才点进来的。So do I,of coz。但是很可惜,这篇文章没有提及太多地GS的business,反而更多的是谈及一些Ibanker里一些人的人格魅力。我想这就是我为什么会发到学生板块的原因。我觉得现在的学生在学校里更多的学的事professional的东西,而多少忽略了一些personality的东西。这也无可厚非,学生嘛,本来就应该好好学习。但是我觉得,就像新东方老鱼说的:进入社会后,你能用到你本可学到的也就10%,剩下的就要看你的自学能力,创造能力和社会能力了。下边这些有些也match到一位julian_wang的1篇帖子里提到的。大家有空就好好读读吧,真的能学到很多。-------------------------------------------------------------金融是所有世间万物食物链的最上游。 无论是咨询公司、市场营销、成本控制,都只不过是让最后报表上面的几个数字更加好看的工兵。这就不难理解一个工作三年的VP可能赚的钱可能比很多咨询公司和广告公司的合伙人赚的还多。 金融市场就好比海洋中的食物链,每个热点都会有一群从小鱼到大鱼的饕餮。在香港回归和港股狂飙这次猎食的过程,我有幸作为一只兼职的小鱼在高盛度过了10周,并目睹了恒生穿破23000点和Dow冲破14000的一幕,也经历了次级信贷让恒生一天跌落1200点的历史性时刻。我在Investment Management Division下面的Private Wealth Management (PWM)。PWM is pretty much a Sales and Trading department, and the difference is that Sales & Trading serves institutions and we serve high net worth individual clients。我纯粹是一个accidental banker,因为之前从来对数字和金融没有特别感兴趣过,但是还是有幸学到了很多东西,除了technical之外,分享一些学习体会和大家: Absorb and digest information quicly没有任何一个行业比金融对信息变化更加敏感。从CPI, Interest rate到公司的最新财报,以及实时的股价变化,每天要面对无穷尽的信息,吸收,并宣传有用的信息来快速做出决策,无疑是挑战性很大的。 Bloomberg和Reuters真的是伟大的发明,敲几下键盘,所有实时和历史的财务数据、新闻都在屏幕上。从沈阳回香港的飞机上,自己拿了两份报纸,很快通读一遍,然后发现周围的人还在细细品味。突然发现,不知不觉,自己处理信息的能力和速度已经提高了很多。Re-define hard working 我的一个Mentor给我说, “hard working is given at Goldman Sachs”。但是根据 我的观察和我与人的交流,我发现这个真的是千差万别。如果说成功有什么秘方的话,我真的是发现和hard work的co-relation最大。我的一个老板,每天8点钟准时到公司,和我一起听research call,然后做计划。 他带领的3人团队管理15亿美金的资金,可以和一个对冲基金的规模向匹敌。另外两个top performers,A & R也是格外的努力,每天下班以后还在家里看美国股市的盘。 人平庸与否智力是很关键的,other factors given equal,我真的见识到了为什么成功的人会成功。 无独有偶,我到上海拜访一个做互联网的前辈,公司卖了3亿美金的龙哥。在这个周末的下午,他的合伙人江南春还在给他打电话,要一起看一个公司的材料。他给我讲,周日这一天,陈天桥和江南春都在工作。他给我讲,江南春每年亲自要见1,000多个客户。我的另外一个做投行的朋友也给我讲,在分众上市的前一天,江南春一个人静静地坐在酒店里面,发了400条短信给销售,问销售的业绩。几十亿身价的富豪,每年还亲自见1,000多个客户;七八十岁的李嘉诚,每天还在长江中心的顶层坚持工作。 我之前在创业的时候,曾经认为自己已经非常勤奋了,现在对“勤奋”两个字我有了新的认识,我对自己的极限也有了新的认识。。李嘉诚这些人现在还每天坚持上班。这也就是差距所在。 斯坦福的很多同学认为,这两年的MBA就应该懒一点,享受生活,我一直不同意,现在找到了很大理论和事实支持。True relaxation does not come from doing nothing, but from the confidence and inner satisfaction and inner peace within one’s mind. 工作是充实的,我确实闲不下来。 Business model & strategy always matter如果你认为高盛还是亚洲上市的冠军,你就大错了。In investment banking & PWM,高盛现在都不是最大的,原因就是战略和商业模式。这里太敏感,不多说了。但是战略和商业模式真的是太重要了。“上兵伐谋”,有道理。 Market savvy: Danny He gave us three “open-meetings” to grill us about the market knowledge. The difficult part about “being market savvy” is that I have to memorize an ever changing financial market’s data and news. Unlike history or other industries, all the data, indexes and news are changing everyday in Finance, and the same number will be outdated the same time tomorrow. This is somehow like chasing your own shadow: it moves when you move. However, looking at Danny’s tough request on “market savvy” reminds me of how little Chinese entrepreneurs know about their own company, whose information is either static or does not change much. Even if you just try to impress people, the fact that you can remember all the key information just out of your head is very impressive and helpful. That gives clients and colleagues lots of trust and confidence. Now I request my partners and employees to be savvy about all the information related to our business, and they have to be able to talk more professionally than any competitors. Starve for success: Rickie & AngelWhat can I say? The best performers are those who are always hungry and are never satisfied. Re-define professionalism: Vicky W. 我问一个VP,让她告诉我,从她的observation当中看,成功的VP和不成功的VP通常有什么区别?What did the successful VPs do right and the not-so-successful ones do differently? 其中一个就是专业程度(professionalism)。从开会不迟到这一个最基本的事情,到每天都要把unanswered phone calls & unreturned emails回复一遍,这些最基本的小事区分了成功和不成功的人。即便是已经很晚,你很忙,至少也要回复电话告诉人家说你今天很忙,可以明天通话。是呀,一个连电话都不能接,不能回的人有什么呢?国内很多人有种非常不好的作风,不接听电话也不喜欢回复电话,自己感觉很牛逼。这种人不要合伙,一定不成气候,因为你需要他的时候总找不到他。我深有体会。 去参加摩根斯坦利的dinner,他们给我讲,投行里面分析师最能让人生气的就是电话找不到人,或者请假的时候不给别人余地(先做决定然后请假)。 Tenacity and methodology: Movie Wall street & Rudolf China Team最成功的一个VP之一是一个外国人,讲得一口流利的中文。看到他每天cold call和发prospect letter, 我重新又 认识了什么叫做pitch skills和tenacity。见了一个外国人写的prospect letter,那个用词的当,有理有节,我是真的佩服佩服。 一个老板让我去看1982年版的电影《华尔街》。我虽然没有来的及看,但是其中他让我了解的片段就是一个banker,为了认识一个客户,每年生日的时候给客户送他喜欢的礼物和卡片,并打电话。坚持了12年,最后终于有机会和客户见面,并一起做了一个deal。 某种程度上讲,做banking的辛苦程度不比创业容易,即使是高盛和大摩也经常抢不到deal。品牌有帮助,但是最后起决定作用的还是人本身。Even Goldman has lots of imperfections 高盛也有自身的很多问题,很多人和制度也有很大差距,这个不分享了。 IBD is not the most attractive division at all“思路决定出路,布局决定结局,吨位决定地位”。很很多投行一样,高盛最赚钱的根本不是IBD,虽然IBD给然的光环最大。Trading给公司的收入超过总收入的60%。 Sales & trading和投资都是高盛更加赚钱的部门,他们的pay其实也比IBD要好很多了。除了trading,SS&G和PIA都是不错的部门。IBD可能光环最大也按比例来讲最难进,但却不是pay off最好的部门。 Lesson from Mark Schwin Leave for the meeting and don’t wait for the person who is late。有机会和一个合伙人一起吃早饭,他impress我的一个故事是,如果约好了一起去开会或者见客户,比如约好9点钟在门口见面,他学到的lesson是,等到9:02有一个人还不来,坚决不要再等。不要顾及面子,clients’ interests always come first。 Life is not all about money: Jason Huang投行里面不乏很多high achiever和go getter,但是money driven的人通常burned out也比较快。Jason是最成功的一个副总裁之一,也是我学到最多东西的一个VP。赚钱不是人生的全部,他给我讲了他的很多的故事,每一个我都很感动。从家庭到宗教信仰,到他的每一个career move,从年少轻狂到现在的沉稳,我看到了很多很多我可以学习的地方。 他最后和我分享的一个故事:每个人有很多个“面”,也有很多个 “life”。一个全面发展的人才能成功,也才可以long term succeed。那么这么多life中,人首先要有professional life:职业无疑是一个重要的life,他让我们不要把梦想埋葬在对金钱的追逐之中,而是要做自己真正喜欢的事情。另外一个life就是family life,无论是父母和爱人,自己都有很多责任和义务要履行,in return,我们也从家庭中得到很多。通常,我们能从家庭得到的永远比我们付出的要多。人还要有自己的 “hobby”, “sports life”等等。人的身体在一天天老去衰老不可逆转,唯一的收获应该精神上的更加富足。而又有多少人可以真正精神上越来越富足呢?为了理想,或者说为了贪婪,我们又牺牲了多少呢?Sell with conviction & empathy (Jason Moo & Jason Huang)If you don’t believe in the products/services you are selling, your clients won’t buy in it either. They need confirmation and assurance from you. Selling with confidence, conviction is important. You should be one of those blocksà Wei Kiat 在实习的最后,Associate需要写一个商业计划书,一个新加坡的VP告诉我,客户“选择高盛的理由”这一页我列的4点不对,“至少应该把你作为一种一个理由”。这个给我很大震撼。公司无论多伟大,我们每一个人出去都好比是一个代表,一个窗户来代表公司,在客户选择公司的时候,其实很大程度上也是基于对我们的信任。虽然公司品牌重要,个人也是公司品牌的一个部分,而优秀的个人又会不断强化公司的品牌。 treat every one as your internal client Be professional to every one around you. This is the lesson I learned from my mentor. You can do banking? So can 10 million other people At the end of the program, I realize one thing more than ever. Banking is not a rocket science industry and 10 million other people could easily do it as well. It is really a “monkey business”.

Wednesday, August 20, 2008

create proc

存储过程1 创建存储过程create proc stu_proc1as select count(*) from student
exec stu_proc1 执行
2 修改、删除、重命名alter proc stu_proc1as select * from student
drop proc stu_proc1
sp_rename stu_proc1 old
3 参数存储过程传入参数:create proc stu_proc3@pname char(3)as select * from student where number=@pname
exec stu_proc3 \'103\'
传出参数:create proc stu_proc5@pname char(3),@result char(8) outputas select @result=name from student where number=@pname
declare @a char(8)exec stu_proc5 \'103\',@a outputprint @a//select @a
亦可命名参数、明确指定declare @a char(8)exec stu_proc5 @result=@a output,@pname=\'103\'print @a
4 存储过程的复杂操作使用带有复杂 SELECT 语句的简单过程下面的存储过程从两个表的联接中返回所有学生(提供了姓名)、所学课程。该存储过程不使用任何参数。
USE studentsIF EXISTS (SELECT name FROM sysobjects WHERE name = \'info_all\' AND type = \'P\') DROP PROCEDURE info_allGO
CREATE PROCEDURE info_allASSELECT stu.name,grade.courseFROM stu INNER JOIN grade ON stu.number = grade.number
GO
info_all 存储过程可以通过以下方法执行:
EXECUTE info_all-- OrEXEC info_all
下面的存储过程从四个表的联接中返回所有作者(提供了姓名)、出版的书籍以及出版社。该存储过程不使用任何参数。USE pubsIF EXISTS (SELECT name FROM sysobjects WHERE name = \'au_info_all\' AND type = \'P\') DROP PROCEDURE au_info_allGOCREATE PROCEDURE au_info_allASSELECT au_lname, au_fname, title, pub_name FROM authors a INNER JOIN titleauthor ta ON a.au_id = ta.au_id INNER JOIN titles t ON t.title_id = ta.title_id INNER JOIN publishers p ON t.pub_id = p.pub_idGO
练习1:制作存储过程显示所有年龄大于26的学生create proc age1asselect name from studentwhere year(getdate())-year(birthday)>26
exec age1
练习2:制作存储过程显示所有年龄大于指定大小的学生create proc age2@pdata intasselect name from studentwhere year(getdate())-year(birthday)>@pdata
exec age2 26
存储过程的注意事项:可使用with recompile 和with encryption两者都可放在参数之后,语句之前其中with recompile会导致每次调用存储过程都会编译,效率变低,但执行效率可能优化,或加入到exec age with recompile中,则会根据需要创造新的查询计划
多行储存过程create proc temp as select * from stuselect * from grade

P4P

P4P,全称是“Proactive network Provider Participation for P2P”。P4P主要的想法是,把P2P通讯本地化。P2P在选点配对时并不考虑物理距离,研究数据表明,两个P2P节点的平均距离是1600公里,要跨过5.5个大型网络,并产生大量的数据通讯。如果把P2P的选点限制在相近的节点,就有可能会大大减少数据通讯量,这也就是P4P的主攻方向。
P4P在每个ISP的服务器中安装一个iTracker,它含有整个ISP网络的拓扑结构,P2P的客户机在建立共享连接前,需要下载这个iTracker,并根据网络结构,只和相邻的节点建立连接。实验数据表明,P4P的节点平均距离减小到230公里,数据通讯量减少了5倍,而且性能比P2P还有所提高。
看起来,P4P可能是一个补救P2P的方案,但它不是一个根本的解决办法,而且它也还未通过大型部署的考验。

解决 网络上数据大规模复制的问题。

Tuesday, August 19, 2008

Dijkstra

From :http://www.cs.bgu.ac.il/~vassilii/forth-opt/Dijkstra_8java-source.html
Dijkstra.java Go to the documentation of this file.
00001 // $Header: /home/vassilii/BGU/courses/fp042/forth-opt/RCS/Dijkstra.java,v 2.0 2004/09/05 00002
00003 import java.util.*;
00004
00005 public class Dijkstra implements PathFinder {
00006
00007 public Iterator findShortestPath(Vertex source, Vertex destination) {
00008 Map s = new HashMap();
00009
PriorityQueueSet q = new PriorityQueueSet();
00010 q.
enqueue(source, 0, null);
00011
00012 while (!q.
isEmpty()) {
00013 //u <- extract-min(q)
00014
Element u = q.dequeue();
00015 if (u.
vertex.equals(destination)) return extractPath(u, s);
00016 // s <- s U {u}
00017 s.put(u.
vertex, u);
00018 for (Iterator iter = u.
vertex.outgoingEdges(destination); iter.hasNext();) {
00019 Edge e = (Edge) iter.next();
00020 Vertex v = e.destination();
00021 if (!s.containsKey(v))
00022 q.
enqueue(v, u.distance + e.weight(), e);
00023 }
00024 }
00025 return new ArrayList().iterator(); // empty for no path found
00026 }
00027
00028 static private Iterator extractPath(Element elm, Map s) {
00029 LinkedList l = new LinkedList();
00030
00031 for (Edge e = elm.
previous; e != null; e = ((Element)s.get(e.source())).previous)
00032 l.addFirst(e);
00033 return l.iterator();
00034 }
00035
00036 static class PriorityQueueSet {
00037 SortedSet q = new TreeSet();
00038 Map lookUp = new HashMap();
00039
00044 public void enqueue(Vertex v, int d, Edge e) {
00045 if (!
lookUp.containsKey(v)) {
00046
Element elm = new Element(v, d, e);
00047
lookUp.put(v, elm);
00048
q.add(elm);
00049 } else {
00050
Element elm = (Element)lookUp.get(v);
00051 if (elm.
distance > d) {
00052
q.remove(elm);
00053 elm.
distance = d;
00054 elm.
previous = e;
00055
q.add(elm);
00056 }
00057 }
00058 }
00059
00064 public Element dequeue() {
00065 if (
q.isEmpty()) return null;
00066
Element elm = (Element)q.first();
00067
q.remove(elm);
00068
lookUp.remove(elm.vertex);
00069 return elm;
00070 }
00071
00072 public boolean isEmpty() { return q.isEmpty(); }
00073
00074 public String toString() { return q.toString(); }
00075 }
00076
00077 static class Element implements Comparable {
00078 final Vertex vertex;
00079 int distance;
00080 Edge previous;
00081
00082 public Element(Vertex v, int d, Edge e) {
00083 this.vertex = v;
00084 this.distance = d;
00085 this.previous = e;
00086 }
00087
00088 public int compareTo(Object o) {
00089
Element k = (Element)o;
00090 if (k.
distance == this.distance)
00091 return this.vertex.compareTo(k.
vertex);
00092 else
00093 return this.distance - k.
distance;
00094 }
00095
00096 public boolean equals(Object o) {
00097
Element k = (Element)o;
00098 return this.distance == k.
distance && this.vertex.equals(k.vertex);
00099 }
00100
00101 public String toString() {
00102 return "["+
vertex+","+distance+","+previous+"]";
00103 }
00104 }
00105 }
Generated on Tue Sep 21 21:39:11 2004 for FORTH stack optimization by
1.3.8

Monday, August 18, 2008

Graph

带权路径长度最短-最优二叉树

回路 简单路径 简单回路 连通 连通图 连通分量-图中最大的连通子图 无向图


强连通图 强连通分量 有向图

有根的图 图的根 边带权的图为网络 无向网络 有向网络

图的存储

1.邻接矩阵

n个顶点的图 A[i,j]=1 i->j 有边; 0 i->j 无边

n个顶点的网络 wij,0(i=j),无穷

邻接矩阵只表示顶点之间的关系,使用顺序表存储图中顶点数值(顶点表)

2.邻接表

顶点表(n个元素)的顺序表(每个元素至少应包含一个指针字段first,用来指向每个链表的第一个结点)+

图的存储算法:

//顶点表中元素类型

struct node{

int degree;//顶点的度

arcnode *first ;//链表的首指针

}

struct arcnode{

int vertext; //相邻的顶点字号

int weight ;//边的权值

arcnode * next ;//指向链表的下一个结点

}

node adjlist[n0+1];//顶点表

int n ;//图的顶点数

void setgraph(){


int i,j,w;

//init

cin>>n;

for(int i=1;i<=n;i++){

adjlist[i].degree = 0;

adjlist[i].first = NULL;

}


//读入第一条边

cin>>i>>j>>w;

while((i>=1)&&(i<=n)){

//存入邻接表

p=adjlist[i].first;

while((p!=NULL)&&(p->vertext!=j)){

p=p->next;

}

if(p==NULL){

p = new arcnode;

p->vertext=j;

p->weight = w;

p->next=adjlist[i].first;

adjlist[i].first = p ;

++(adjlist[j].degree);

}

cin>>i>>j>>w;//读入下一条边

}


}

遍历:

1.深度遍历 2.广度遍历

定义一个顶点是否被访问过的标记数组 mark[i]

深度遍历的特点"后进先出" -使用栈

广度遍历的特点"先进先出"-使用队列

深度遍历算法:

void deeptrarverse(int x){

int mark[n0+1] , k;

int s[n0+1],t;

arcnode *p;

for(k=1;k<=n;k++) mark[k]=0;

cout<

mark[x]=1;

t=1;s[t]=x;//将深度经过的结点压入栈中

do{

k=s[t];//始终对栈顶元素进行操作

p=adjlist[k].first;//临时的首指针

while(p&&mark[p->vertex]){

p=p->next;//存在和栈顶元素的链接,但已被访问过,向下遍历查找无访问过的结点

}

if(p==NULL){

t--;//邻接的结点全部访问过则弹出栈顶元素

}else{

x=p->vertex;//未访问过则进行访问并把它置于栈顶重复上面操作

cout<

mark[x]=1;

s[++t]=x;

}

}while(t)//栈空结束

}

广度遍历:

void widetraverse(int x){

int q[n0+1],f=1,r=2;

cout<

q[1]=x;

arcnode * p ;

for( int k=0;k

mark[x]=1;

do{

k=q[f++];

p=adjlist[k].first;

while(p){//如果x的邻接结点未访问,一次访问全部的邻接结点放入队尾

if(mark[p->vertex]==0){

cout<vertex<<" ";

mark[p->vertex]=1;

q[r++]=p->vertex;

}

p=p->next;

}

}while(f!=r)

}

图的生成树

深度优先生成树 广度优先生成树

最小生成树 最短路径

在无回路的有向网络中,假设只有一个入度为0的顶点(源点)和一个出度为0的点(汇点) ,之间最长的路径为关键路径

单源最短路径问题:


Dijkstra 基本思想

算法基本思想  设S为最短距离已确定的顶点集(看作红点集),V-S是最短距离尚未确定的顶点集(看作蓝点集)。①初始化  初始化时,只有源点s的最短距离是已知的(SD(s)=0),故红点集S={s},蓝点集为空。②重复以下工作,按路径长度递增次序产生各顶点最短路径  在当前蓝点集中选择一个最短距离最小的蓝点来扩充红点集,以保证算法按路径长度递增的次序产生各顶点的最短路径。  当蓝点集中仅剩下最短距离为∞的蓝点,或者所有蓝点已扩充到红点集时,s到所有顶点的最短路径就求出来了。 注意:  ①若从源点到蓝点的路径不存在,则可假设该蓝点的最短路径是一条长度为无穷大的虚拟路径。  ②从源点s到终点v的最短路径简称为v的最短路径;s到v的最短路径长度简称为v的最短距离,并记为SD(v)。
(3)在蓝点集中选择一个最短距离最小的蓝点k来扩充红点集  根据按长度递增序产生最短路径的思想,当前最短距离最小的蓝点k的最短路径是:  源点,红点1,红点2,…,红点n,蓝点k 距离为:源点到红点n最短距离+<红点n,蓝点k>边长  为求解方便,设置一个向量D[0..n-1],对于每个蓝点v∈ V-S,用D[v]记录从源点s到达v且除v外中间不经过任何蓝点(若有中间点,则必为红点)的"最短"路径长度(简称估计距离)。  若k是蓝点集中估计距离最小的顶点,则k的估计距离就是最短距离,即若D[k]=min{D[i] i∈V-S},则D[k]=SD(k)。  初始时,每个蓝点v的D[c]值应为权w,且从s到v的路径上没有中间点,因为该路径仅含一条边。 注意:  在蓝点集中选择一个最短距离最小的蓝点k来扩充红点集是Dijkstra算法的关键
(4)k扩充红点集s后,蓝点集估计距离的修改  将k扩充到红点后,剩余蓝点集的估计距离可能由于增加了新红点k而减小,此时必须调整相应蓝点的估计距离。  对于任意的蓝点j,若k由蓝变红后使D[j]变小,则必定是由于存在一条从s到j且包含新红点k的更短路径:P=。且D[j]减小的新路径P只可能是由于路径和边组成。  所以,当length(P)=D[k]+w小于D[j]时,应该用P的长度来修改D[j]的值。
(5)Dijkstra算法
Dijkstra(G,D,s){ //用Dijkstra算法求有向网G的源点s到各顶点的最短路径长度
//以下是初始化操作
S={s};D[s]=0; //设置初始的红点集及最短距离
for( all i∈ V-S )do //对蓝点集中每个顶点i
D[i]=G[s][i]; //设置i初始的估计距离为w
//以下是扩充红点集
for(i=0;i
/最多扩充n-1个蓝点到红点集
D[k]=min{D[i]:all i V-S};
//在当前蓝点集中选估计距离最小的顶点k
if(D[k]等于∞) return;
//蓝点集中所有蓝点的估计距离均为∞时,
//表示这些顶点的最短路径不存在。
S=S∪{k}; //将蓝点k涂红后扩充到红点集
for( all j∈V-S )do //调整剩余蓝点的估计距离
if(D[j]>D[k]+G[k][j])
//新红点k使原D[j]值变小时,用新路径的长度修改D[j],
//使j离s更近。
D[j]=D[k]+G[k][j]; }
}

Sunday, August 17, 2008

栈和队列

栈先进后出 队列 先进先出

1.顺序栈

struct stack{

datatype s[n0+1];

int t ;

}


void push(stack & L, datatype x){

if(L.t==n0){

cout<<"栈满";

else

L.s[++L.t]=x;

}

}


void pop(stack & L){

if(L.t==0)

cout<<"empty";

else

L.t--;

}

2.链接栈

struct node{

datatype data ;

node * next ;

}//t是栈顶指针

void push(node * &t,datatype x){

node * p;

p = new node ;

p->next=t;

p->data=x;

t=p;

}

void pop (node * & t){

node * p;

if(t==NULL)

cout<<"栈空";

else {

p=t;

t=t->next;

delete p;

}

}

表达式求值:

数字串转换为整数值

v=0;

do{

v = 10 * v + c-'0';

cin>>c;

}while((c>='0')&&(c<='9'))

顺序队列

队列中最多容纳n0个元素 插入新元素之前,若出现(r+1)mod(n0+1)等于f则说明队列已满,若在删除操作之前,若出现f等于r,则说明队列已空,不能删除。

队列中元素个数为n=(rear-front+n0+1)mod(n0+1)

插入:

struct queue{

datatype q[n0+1];

int f,r;

}

void enq(queue & qu,datatype x){

if((qu.r+1)%(n0+1)==qu.f)){

cout<<"已满";

}

else{

qu.q[qu.r]=x;

qu.r=(qu.r+1)%(n0+1);

}

}

删除 qu.f=(qu.f+1)%(n0+1)