第一篇:对非牛人申请的一系列建议与方法
早申的好处,总结如下几条:
1)有些学校截止日期非常早,如果你早申,竞争的人很少,你赢的机会很大;
2)有些学校需要“预申请”,即pre-application,它的原意非常好,就是在你不交申请费的情况下通过EMAIL把你的大致情况给他,他“预审理”后直接告诉你你有没有可能被录取,如果根本没可能,省下你的申请费和寄材料的钱,如果你有可能,你的录取希望就非常大,这时候他又甚至会帮你免去申请费,总的来说他就是帮你省钱,也省他们的筛选精力。这个很好,但一般截止日期都在11月12月,而且有的专业明确规定,你必须通过预申请才准你正式申请,所以虽然申请的正式截止日期是2月,可实际上是它预申请的时间,11或12月就完了。我当时都不知道这是什么东西,花费了很大精力在一个学校上,完全浪费。
3)早申可以花很多时间在选校和写PS上,这简直太重要了,选校准不准直接决定你是否会被录取,直接的!我在下一块详细讲。
4)早申省钱:11月就寄出的朋友大多用的是平信,30一份;1月出的象我,只好通通快递,217一份-_-!
5)早申稳:晚弄因为时间很仓促,很容易出错,我在一个很重要的学校的申请材料上,出了个很大的瑕疵,我急急忙忙赶着寄出去才发现,痛心不已!还有我的网申和材料都是这么多学校压缩在几天之内完成,质量非常不保,尤其是PS,没办法针对每个学校改了。网上还有些朋友,居然把两个学校互相寄错了„„仓促之下,难免出错。
6)这还有非常重要的一点:早申对身体好!
我从考G来这半年的经历,总结来四个字:“几欲猝死”。
每次弄到最后几天,强度非常大,每天连续八个小时对着电脑,到后来眼睛要用手帮忙弄开,出现过偶尔的耳鸣,几次很担心自己会不会突然猝死在电脑前。有一天早上六点起来,24小时后第二天早上六点才睡,中间还包括从学校跨省回家的疲惫路途。最后一天一直到早上十一点才睡,十二点起,要赶火车回学校,这一天只睡了一个小时„„我跟朋友说我很害怕突然耳鸣,猝死,我朋友说:告诉你还有病个叫“暴盲”。回想当时真的快看瞎了。
拖到最后,对身体非常伤。
所以大家要有个宽松的,提早就紧张起来,进入状态,的安排。
但是,如果你因为各种原因,也落得和我一样的境地,需要把自己逼到最后的高强度工作,我有如下建议:
“猝死”的原理是,坐着很久不动不喝水,腿上的血管里的血液凝结成粘稠状,结成血块,当这血块通过血液循环经过心脏的时候,通过不去,堵塞了心脏,不知道是不是就是“心肌梗塞”,反正过不去,噎住了,几分钟后就。。这就是猝死的原理,也是长者讲给我听的。如有不对,请指正。
然后说避免猝死的办法,说搁一阵要动一下啦,对,但是通常都做不到。所以最好的建议是,在旁边放一只水壶,不停的喝水,一方面降低血液粘稠度,一方面促进嘘嘘,憋不牢了就得去上厕所,就能强制活动四肢了。:)
其实是想说,大家一定会有非常辛苦的日子,一定要注意身体,为这个得个什么病可不值得。
7)
务必留出时间给天灾人祸:比如ETS寄成绩decline啦,地震断网啦,学校评估啦,期中期末考啦。
我其实很早就知道,一直就知道,早申有大的好处。可是知道的很抽象,一路过来了才知道,原来好处是这么具体,无处不在!今天把他们一个个具细地罗列出来,希望有条件早申的一定要早,不要重蹈我的覆辙!尤其是非牛人们,避开牛人们,笨鸟先飞,早起的鸟儿有虫吃(好象不太对,怪怪的-_-),早申是我们的一大优势,一定要把握!
3.不要学牛人按排名递个二三十份,一定要花大量时间在选校上!
为什么:
大部分的朋友在挑学校的时候都是按照排名挑了几个寄出去的,也没有认真挑选专业,也没有认真选学校。你是不是会问,不是大家都这样么,然后都拿到OFFER了么?我告诉你,他们不是你,他们不是非牛人,这样干拿到OFFER的都是牛人。有些人拿到OFFER后,会在论坛上写自己的经验,然后大家都会觉得很珍贵,因为他这样做,他就拿到了呀,很有说服力呀。
错!你得分析他为什么拿到了,是因为他的哪一个部分做得好拿到了,而不是完全的模仿。我可以负责任地告诉你,这样拿到OFFER的人们大部分出自北大清华交大啥的,他们的学校有跟国外的学校有长期的友好关系,他们的师兄师姐们申什么,他们也申什么,哪个水平的申哪个学校,长期以来的经验和数据,他们都非常清楚,再加之对方学校长期招收他们这里的学生,他们的申请把握非常大。再加之他们本来背景都很牛,所以不需要挑选学校,只要按照排名这么下来,总有学校会挑选上他的。
而你自己心力要清楚,你不是。你要明白,他们在选校上的随意,是他们申请中的失败的部分,而他们是凭着别的优势,牛背景,来弥补了这一失败,使得他们成功。促使他们成功的是他们的背景,而不是选校的这个方法。如果你,背景平平,还和他们一样选校,这点在你来说就是促成你失败的一步。所以非牛人必须有不同于牛人的东西,弥补非牛人的不足,才能和他们一样获得成功。否则你照搬他的方法,又没他的实力,显然拼不过人家。
论坛上说有个非牛人MM,因为花了大量的时间在选校上,申请非常成功。她只申了四五个学校,都是她精心挑选的,她对每一个学校都研究详细透彻,并针对每一个学校写不同的PS,制定自己的申请材料,结果几乎每个学校都给她了OFFER。你就应该这样,如果你没有牛背景,那就让自己在选校上牛起来吧
方法:
避开大众专业和大众学校。
大部分牛人们都照着他们本专业申请,比如EE的就按EE的学校申。而我告诉非牛人的你,美国有好多好多的专业都是你想不到的,在中国根本就没有的。这些专业需要的背景知识你或许会有,你申这些专业,肯定没人跟你抢!让他们EE去吧拼去吧,万人过独木桥,我这里一人悠载游载不紧不慢。(顺便一说,如果你也和他们一样,热门专业大众学校,你跟他们一起过独木桥,掉进火海的,显然是你不是他。)
所以你选校的宗旨就是:我没实力,我不跟你们拼,我不要热门!
具体操作:
1)选专业:
一个办法:我挑专业的时候,是在www.xiexiebang.com(此连接可以直接点击,我已直接将它连到挑选专业的页面)上,提供了400多个专业让你选择。其实petersons上的专业也都还算比较大路,比较有限,可能有更好的网站更多的专业但我当时没来得及再查。我就在这400多个专业里,一个一个地逐条筛选,真是每一个都过目想一想要不要,一共删了5遍,终于选出4、5个最后敲定的专业来。这些专业都不是大路的EE啥的,(我老提EE因为我是EE出身),而是需要EE背景,中国没有,国外有的专业。顺便提一下转专业,我看是不容易的事情,不要跨度太大,你可以有EE的背景然后去读这个领域的更为细窄的某个部分,或者比如你学工程去读工程管理,但不要转移。我的朋友,学管理,申经济,结果好多学校要她读预科,弥补经济的背景,多麻烦。你需要的是找一个,有你现有的背景,国人或者牛人很少申请的冷门专业,它不一定冷门,只是更细小,或者国内不是热门申请的而已。
另一个办法:你在挑完学校后,仔细查看他们学校提供的与你的背景相近的专业,国外的专业真的很细很多,不是说EE研究生就只有EE专业,而是有好多方向,所谓的research focus,或者concentration,你到里面去挑一个,不叫Electronic Engineering的,而是在这个大领域中,但稍微偏一点, 或者稍微窄一点, 比如systems control什么的。要知道,好多国内的大牛人大多都EE一一对应申EE,你仔细一点,偏一点歪一点,可以排除掉好多来自大牛门的竞争。
2)选校:
我给自己的定位是一百后,两百前。可是就这样也有好多好多的学校啊,怎么选到底要哪个好呢。那么先要在几大排名里确定它在这个范围,这里我知道网络上有好多好多排名,可大家议论纷纷,即使是US的权威排名都被质疑, 大家也好迷茫到底要相信哪个排名好。这里我推荐一个,它不是排名,而是美国一个机构对全美前两百所学校的数据调查。(本帖最后给出下载)
我的做法是,先确定专业,然后到petersons上去搜(有人说petersons列出的学校很不全,那么你们也可以去别的,但它有这么多学校,我就申没几所,对我的筛选是足够了),它会列出与此专业相关的好多学校, 以及所在院系。同样是这个专业,在每个学校属于不同的院系。那么第一步的筛选就是,挑出与你所需要的院系。比如我是学EE的,我申了一个专业它在某个学校是管理学院的,还有在法学院的,我自然不要,它太偏文了,我要在工程学院的,这么就淘汰了一批。
然后到你掌握的大路排名里去找,可以按综合排名找。我下面给出一个我觉得还算不错的 US排名,因为它不是简单的综合排名,而是涵盖了每个学校的不同专业,这样你就可以找你要的专业的排名。是不是在你自己锁定的排名范围,这是二次筛选。(本帖最后给出下载)
第三次,到我给你的全美两百所大学的数据调查白皮书里去,用PDF的“搜索”还是“查找”那个功能,搜你已经找到的这些学校是不是在这个里面,你还可以看出你的学校钱多不多,老师职工多不多,学术强不强。这又是一次。
第四次,我的办法哈,就怕跟大家撞车,于是在排名和学术都定了它在我的范围内又不会太差的前提下,到百度上去搜,看到底有多少人在申请这学校,热不热,是不是大路申请,有多少人在议论它。这个办法很管用,有些学校,一打进去就好多人啊,而且留言都是“我申了你也申了啊?”,我直接就删掉。有些学校虽然挺好可是不热,打进去连个议论它的影子都没,好,我就要它了。
在太傻上不是有个my offer功能么,你可以把你申请的学校输进去,然后看有多少人跟你一起申的。我申请的所有的学校,和我申一样学校的,最多只有两三个,和我申同一学校同一专业的,一个都没!
我要的就是这样:在保证质量的前提下,创造冷门!
4.申请后:一定要套词,教你怎么套
我说一定要套词!是一定!对非牛人来说是没的商量的!原因有这几个:
1)据我在国外久居的从事教育行业的一叔叔说,国外的学生申请,他们不会象中国人一投就投几十份,他们往往都只有两三个,一两个,就象你国内考研,会不会同时考好几个学校的研。所以他们对每个学校都是很有数很了解很想去的,他们通常都是在申请之前,注意,“申请之前”,就和对方教授有过联系了。他们会在申请之前就和教授说好多话,介绍自己,和教授沟通。他们大部分都是,跟教授已经说好了,教授决定要他了,他才开始申请,交申请费。而不是象国人,象我,盲目地钱全部交出,等着那边判决。而这个过程其实就是“套词”啊。让教授要你,多重要的事啊!和教授套词可以直接决定你的录取,而套不套,只在于你的勤劳懒惰,又没有任何成本!这么好的事,怎么能错过?!
2)我设定来阅读我这篇帖子的人都是非牛人,因为我只欢迎你们。那么你们没有牛背景,和为什么要选校的原因一样,你们要在这些方面牛起来!到处都听说最终能不能被录取不仅决定于你的GPA,GT成绩,还有很多“软”的方面,但大家都只是说,好玄,而没有分析出来,写出来,究竟哪些是“软”的方面?究竟要如何去做?套词就是其中一项,也是非常重要非常重要的一项!如果你没有过硬的背景,你就要在这些“软”的方面硬起来!
套词不管有没有套到教授都是非常有利的事情,你多和对方联系,多让他们看到你。一方面,至少表明你的热情,你是非常重视他们学校,非常想申他们学校的。另一方面,让你的名字多在人家眼前晃晃是很有好处的,他们有这么多申请人,都不熟悉,但如果你的名字看多了,他们在这么多名单里一下子会对你的名字有亲切感,如果在同等的不能决定录取谁的情况下,你就有优势!亲切感非常重要!这是一种心理游戏,就像为什么高中语文老师要我们高考作文字一定要写的漂亮一样,这玩儿的就是心理,因为第一印象,因为老师的心理决定你的分数,你要让他对你愉悦起来!
所以,即使你没套到教授,你的一个目标也达成了,就是:让你的名字在他们眼前多晃晃„„多晃晃„„让他们对你的名字亲切„„啊„„近似一种催眠„„心理暗示„„
3)多晃不等同于“滥晃”“乱晃”。晃要有技巧,要有艺术,要有窍门。我是个很讲究方法的人,不是一向,而是在这一年的申请中培养的。我在2月的这些天里,一天一个学校,写了十几封套词信,每一封都很认真,要捕获对方的心,对我的注意。
论坛上有前人的套词汇总,我在下面会给出下载,很好啊,多看看别人的经验。
但我并不完全认同,就象我之前说过的,他们的成功不一定是因为套词所以成功。不要看他们成功了就效仿。正像我说我们非牛人选校不要效仿牛人们一样,有些人套词了,录取了,但不见得这两者间有因果关系,他被录取的因素是不是因为套词,要辨别清楚。他们套的好的,我们要学;不好的,摈弃。
我有我自己套词的原则和方法,我会非常具体的给出详细策略和详细说明,包括每一段要有什么内容,要如何找到这些内容。我还没来得及写,近些天一定会写出来。我觉得要写就要写的详细,让别人看了之后完全知道每一步要如何做,而不是一头雾水,你虽然很好我很羡慕,可那好象是你的事,我还是不知道我要怎么办。这是我以前的感受,太难受了,所以我一定要详细地把每一步告诉大家,所以我的帖子这么长。
最后: 经历过这么一年的历练,几欲猝死,身心疲惫,我现在在这里写这么长的经验给大家,感觉到非常地幸福。我终于可以停歇一下,喝口水缓口气了,尽管随之而来的还有缓考的复习,毕业设计„„事情永远做不完,但终于可以不用担心自己要猝死、暴盲、耳鸣啥的了。
我的申请都还一个消息都没有,就来写申请经验,会不会没说服力?
我不这样认为。
就算我申请失败,全部失败,我的申请过程也是成功的!我失败的原因是我的GPA,G,T,背景,我清楚;但我的选校,专业,套词,一定是成功的!再论述一遍我的重要观点:成功的人不可处处效仿,失败的人也有经验可寻。你要从别人身上把自己可用的部分找出来,用上去!
我已经把我失败的原因分析,并列出了你要怎么改进的方法,又把我成功的部分告诉你。所以,你如果一步步塌实做,一定会成功!
写完想起G阿姨要我回答的一个问题,她说她身边有好多学小语种的朋友,出国非常容易,她很郁闷,问我怎么看。我这么看:
很多高人说出国是手段,不是目的。我听了很多,但终于明白它的意思是在最近半年。我详细地解释这句抽象的话:
我哥哥是美国公民,暑假回来,我正处于考G前夕,连专业都没开始选,也不知道以后要干什么。我问他建议我选什么专业,我拿了某个专业问他怎么样,他反问我:这个专业读出来以后年薪多少?10万(dollar)以下就不值得读。
这个,就是“目的”的一种,以年薪衡量。那么我问,小语种们年薪多少?
我在之后的半年里迅速成熟,思想上,突然知道自己出国是要干什么,自己的事业想做什么。知道自己想干什么,有目标,真是非常欢乐的事情。于是我决定,我的目标就是:如果出国,我就为赚钱,(当然还有体验文化这些就不说了),于是我选的专业(其实是我英明的父亲帮我选的),我调查了年薪。工程类的平均年薪是4万多一年,而我的工程专业,远高于这个数字。如果我不出国,我就干我梦想的事情,梦想,也是一种“目的”,我把我的这一年的经历作为历练,它真的练了我,并给我带来了我目标,我即使申请失败,我在国内,我也有非常想干的事情。
就梦想这个“目的”而言,小语种们的工作是否是他们的梦想?
第三点,英语好有很多机会,很多路可以选择。
小语种朋友,或许他在他那门小语种上很棒,他很稀缺,但他可以选择的岗位也很稀缺啊!而象我们学工程的,如果英语又好,那么就有这么多这么多的500强的外企在等着我们!我们有这么多这么多的选择!
小语种们,是否被需要?
最后一个补充要说的,我英明的父亲的话:学英语是为了自己好。
怎么解释?我考完GRE之后,可以畅通地看很多英文原版的书籍。在图书馆里全新的从来没有人动过的书。因为能看原版的都是外语学院的人,而他们能看的都是文学作品。学理工的我们学校的同学,又大部分都英语不好。所以学校图书馆里既是英文原版,又是理工类的书籍,都是全新,完全没人跟你抢。真是漂亮,真是写得好,全都我来享受!真舒爽啊!
举图书馆这个例子是想说,现在发达的质量高的信息百分之九十都是用英语传递的,你达到了这个程度,你就可以掌握这些信息。所以说,学英语是为了自己。
小语种们,是否有这样的受益?
我以上这么提及学小语种的同学,并没有说你们的选择不对,每个选择都有适合的人选,只要你适合,都是非常棒的人生。更要对嫉妒他们的你们说,你的目的是什么,如果你的目的不是小语种的路,那你又有什么可嫉妒的呢?选对你的路吧!
我以上有一些情况可能也是一家之言,个人所见.欢迎大家一起来分享你们的申请经验,留下你们的看法.
第二篇:非牛人的城市与区域规划申请总结
非牛人的城市与区域规划申请总结
天道留学 tiandaoedu.com时间:2010-06-22 10:40
点击:384次
2011天道名校录取榜
美国的金融风暴来势汹涌,不过幸好还没有波及到我。很多留学生都在抱怨如
申请方向:Master’s in Urban and Regional Planning
我只是一名非常普通的申请人,没有什么强大的背景,本科学校是中国排名第一的农科大学,GPA是籍籍无名的用北大算法3.3,TOEFL是口语爆低的95(Reading 25, Listening 28, Speaking 18, Writing 24),GRE是强压底线的460+730+3.5,大学里没获过任何殊荣和奖励。
当年高考发挥超常来到我目前的学校,其实完全超出我周围人的预料。我的专业是也许很少人听说过的土地资源管理,是纯属意外误打误撞进来的。上大学以后很长一段时间我对自己的学校和专业的认知都很浅薄,只觉得很多课程既不深也不广寡淡无味没有学习的兴味。大学第一个学期过后惊讶的发现自己成绩在班上三十多个人里排倒数前十,于是我就很郁闷,为什么其他那些平时看起来同样无所事事的人,关键时刻却表现惊人。这个问题我一直没想通,直到经历了申请的过程,我才明白别人的付出很多是在你无法看到的领域。在我终于意识到长此以往国将不国的时候,我决定要忙碌地度过我的大二大三,虽然不知道方向在哪,虽然偶尔也很郁闷。
和很多从大学伊始就目标明确的人不一样,我大三上学期开始之前从未想过出国的事。可一旦做出决定,行动之迅速连自己也想象不到。做出出国的决定,报xdf班,报名0702TOEFL,0706GRE,全是在大三上学期发生的事,以致2007年春节回家之前,我就已经考完了托福和07年6G的作文,所有的转变都来的太快,这个忙碌的学期令我难忘。然后暑期实习,选校和申请材料的准备和网申也按部就班地完成,所有材料07年10月下旬就全部寄出了。一切仿佛水到渠成一般地自然发生。
我想我是没有资格说经验二字的,因为我所有的“经验”不过是认真二字罢了。认真去过每一天,虽仍有些事情的结果不能尽如人意,但是人生一世本就不易,有意义的事莫过于好好活,好好活就是做有意义的事。这种信念支持我走到现在。在这个保研至上的环境里,我不期待有多少人理解我追寻的价值,但求自己问心无愧就行了。虽然我的大学生涯在很多人看来没有什么光彩,但是至少我学会了一个人行走一个人生活一个人成长,痛苦并享受地完成了一个个体心智的成熟而且至少我找到了一个值得自己骄傲的归宿。
我要感谢上苍,虽然以往的我,有着那么多不成熟不理智的举动,他总是在关键时刻给了我特别的眷顾,使我免于误入歧途。虽然对于自己的学校专业也像周围的人一样有过抱怨,但是我还是非常感谢这个环境,相对轻松的课程安排使我有充足的时间自己发展广泛的兴趣;首都作为中国政治文化教育的中心,这种环境开阔了我的视野,使我看清了自己正走的这条道路。申请落幕之后,我有时也会有点不自信的想就凭我这么不牛的实力,伤痕累累的背景,真的佩获得这样的结果吗?但它既然在现实中发生了,相信就有它的理由。改了三五十遍的PS,满满三页纸的CV,这些efforts真的是有意义的吧。回顾一路走来,那些疲惫地从xdf下课,挤进人满为患的公交车,迷茫看着寒风凛冽的夜里也不见冷清的街道的夜晚竟成了最难忘的记忆。
申请数量:9个学校的9个program
offer: Univ.of Arizona $13000 tuition waiver for the first year
ad: Univ.of Wisconsin-Madison Texas A&M Univ.ASU SUNY-Albany UT-Arlingtion
REJ:Cornell, UC-Irvine, UMass-Amherst
Cornell:希望渺茫是明摆着的事实,可我还是义无反顾地申了,只能说是一种情结吧。到底是什么样的情结呢?是Ithaca的宁静优雅田园牧歌般的生活,是这个小隐隐于野的世界著名学府,还是他们精美的宣传小册子和印有我名字的welcome-to-apply letter?我也说不清楚。他们的用大信封装起来的那叠厚厚的宣传资料在我枕头底下陪伴我走过了半年的申请过程,直到今年3月收到他们的据信,我才终于如释重负但又不无遗憾地把它取出来放进我的文件夹。
UW-Madison:一直的dream school,大二课上听老师谈起过,知道他的房地产方向非常牛,也知道他的校园里有个美丽的Mendota湖。刚刚开始了解申请流程的时候,总是从他家开始,以他家为例,也是我第一个完成申请的学校。Dream总是美好的,但对于自己qualified与否一直是相当有疑问的,之所以申也是出于和Cornell类似的情结,以致申请之后的相当长一段时间没再睬他,连申请状态查询页面都没去踩过一脚。人,总是要活得现实一点嘛。直到我其他8个学校的结果都已知道的4月18日,查到他的admission,终结了我漫长的等待。直到决定放弃UA的小offer,心中总有些遗憾,毕竟这意味着比UWM便宜一半的总费用。过了一两日收到了UWM的paper信,见惯了外交辞令式的录取信,再看到这封足足两页纸,措辞颇带些感情色彩的有些情趣的录取信,倒有些眼前一亮的感觉。Finance部分是我所关心的,41000是一年的费用。看到:Unfortunately we are unable to fund you at this time…时心有点冷,读到most students manage to secure assistanship or work by the second semester…时我的申请单选题终于有解了。
UC-Irvine:2008年2月来的ad,虽然只有薄薄一张纸,却让我很高兴了一阵,那是我当时拿到的最好的学校。“We received many outstanding applicants, and you are to be congratulated for your exceptional record of scholarly achievements.” 这句话我记得很清楚,当时还很yy地想,牛校就是不一样啊,连发admission的口气都可以这么牛。谁知道2,3个星期之后再看,竟有了那么点一语成谶的味道。虽然对financial aid绝口没提,也没给让人死心的话,还是可以继续做梦。只是上网查了一查,一年5,6万的花销,顿时觉得加州的阳光啊,离我那么近,却又那么远。于是赶紧从心理上疏远这个学校。又过了两三个星期,寄来了又一张薄薄的纸,说虽然我们committee推荐了你被录取,但是graduate division dean说你的undergraduate GPA没有达到我们的最低要求,所以我们不得不收回我们的offer of admission(口气还是挺牛,yy的话可以想这到底是offer还是ad呀?)。我的GPA北大算法3.3,虽然不高,也不至于连底线也达不到吧,UCI的借口可真不怎么高明。还好我早在心理上做好了准备,承受这种结果绰绰有余了。
TAMU:TAMU的ad是一月下旬收到的,在那之后的2个月一直是我觉得最有可能去的学校。他家虽然不是我一直以来的dream,但在我选校的时候,觉得能拿到他们的admission也是far beyond my capacity的。有人说他家名字翻译过来不太好听,也许因为自己本身也是Aggie(农科大学学生)的原因,倒觉多了些莫名的亲切感。他的学费便宜远近闻名,program的质量也不错,是性价比很高的选择。但是直到收到I-20才发现program length是3年,不知道是不是我本科不是学建筑设计所以要多学一年设计的原因?(求达人指教。)
UA:他是我最最要感谢的一个学校。人生的第一个ad和第一个offer都来自这里。我是2007年10月下旬用快递寄的材料,11月初所有材料就到了系里,UA的行事风范真真出乎所料,不到2个星期就给了admission,11月中旬就使我脱离三无。现在回头想想,除了用我的背景和他们比较match来解释以外,这估计和他们deadline早至12月1日,而且审材料是rolling制也有一定的关系。不管怎样,这在当时极大鼓舞了我大学以来就一直低迷的信心。因为我来自一个出国风气并不盛行的学校和几乎没有出国传统的系,自己的background也伤痕累累,一直对自己能否最终走掉抱有深切的怀疑。第一个ad拿到后,就充分利用充裕的时间开始向系里要钱,小米也给了张表让我填,当时的想法是只要他们给钱我立刻就从了,毕竟UA也是不错的学校,又可少半年的煎熬。但好事多磨,当时系里的钱没有到位,回复说as an affiliated department to xxx college, we don’t even know whether we will receive money to allocate.于是我心又凉了半截。知道今年4月1日,终于等来了positive answer,ad转成了offer。虽然在这漫长的等待过程中心情起落,几次反复不知所措,终于还是有我自己的offer了。我不是什么牛人,我还是相信申请有offer,就算是成功了。于是按照这个标准我对自己的申请还算满意。只是给了13000刀的tuition waiver之后,每年仍然需要22000刀的花费,和TAMU一年的花费差不多。这个planning degree program也是American Planning Association认证的,实力不会差,只是从网页上的信息看,是比较偏向geography和GIS,从这些情况考虑,最后还是决定据了他家,心下隐隐歉然,有点觉得愧对他们的厚爱。
ASU:选校的时候觉得他们系挺牛的,还是在College of Design里边,要不要我这种完全没做过design的人真要打一个大大的问号。后来的事实是他们还是要我了,只是这个4月才姗姗来迟的ad对于经过之前那么多涨落起伏的偶来说就显得太过于平淡,也少了很多值得记叙的故事。
UMass-Amherst:申请得有些莫名其妙的,因为从开始就觉得他们的interests和我不太match,后来据我也就不感到太奇怪了。
SUNY-Albany和UT-Arlington:两个包底学校,也是当初我觉得最有可能去的,就觉得他们的financial aid还可以dream一下,没预料到的是他们也许根本没有钱发。最终的结果也是一毛没给,不知和我存款证明随申请寄去有没有关系,进入2008之前I-20都到我手上了。好在花销都不贵,每年都是20000刀出头的样子。
第三篇:牛人对初学者学Java的建议
一个牛人给java初学者的建议 给初学者之一:浅谈java及应用 学java不知不觉也已经三年了
从不知java为何物到现在一个小小的j2ee项目经理
虽说不上此道高手,大概也算有点斤两了吧
每次上网,泡bbs逛论坛,没少去java相关的版面
总体感觉初学者多,高手少,精通的更少
由于我国高等教育制度教材陈旧,加上java自身发展不过十年左右的时间
还有一个很重要的原因就是java这门语言更适合商业应用
所以高校里大部分博士老师们对此语言的了解甚至不比本科生多
在这种环境下,很多人对java感到茫然,不知所措,不懂java能做什么
即便知道了java很有用,也不清楚该从哪里入手
所以就有了 java入门难 这一说法
ok,那我们就从java到底能做什么聊起
先说什么是java
java是一种面向对象语言,真正的面向对象,任何函数和变量都以类(class)封装起来
至于什么是对象什么是类,我就不废话了
关于这两个概念的解释任何一本面向对象语言的教材里面都有
知道了什么是java,那自然就会对java能干什么感兴趣
在说java能做什么之前,先说java作为一个真正面向对象语言的优点
首先第一个,既然是真正的面向对象,那就要做到彻底的封装
这是java和c++最大的不同,java所有的源码以及编译后的文件都以类的形式存在
java没有所谓的类外部定义,所有的函数(方法)以及变量(属性)都必须在类内部定义
这样就不会出现一个类被切割成这里一块那里一块的情况,c++就可以,不是么?
这样做使得整个程序的结构异常清晰,明了
其次第二个,最让人欢呼雀跃的是完全屏蔽了指针,同时引入了垃圾回收机制
任何一个写过c/c++代码的人,都会对内存管理深恶痛绝
因为这使得我们不能把主要精力放在我们关心的事情上
而需要考虑计算机内部的一些事情,作为一个软件工程师
我想没有一个人愿意把大量的时间花在内存管理上,毕竟我们不是电子工程师
此时java的优势体现出来了,它完全屏蔽了内存管理
也就是说,如果你用java写程序,写出来的任何一个程序内存上的开销,都不受你控制
乍一看,似乎你受到了束缚,但实际上不是这样
因为虽然你的程序无法对内存进行管理,降低了一定的速度
但你的程序会非常非常的安全,因为你无法调用一个空指针
而不像以前写c的时候那样,成天因为空指针而担惊受怕
当然,如果你深入了解这一行,就会发现java其实也无法保证程序不去调用空的指针
但是它会在最大程度上避免空指针的调用
这已经很好了,安全,这是java的最突出的优点
第三个,虚拟机跨平台,这是java最大的特点,跨平台
可能所有人都知道windows,但是不是所有人都知道unix
和java一样,很多人都不知道unix这种操作系统干什么用
我不想多说unix的应用,这不是主要,但是我要说,大部分小型机
工作站,都跑在unix一族的操作系统上,比如linux/solaris
unix比起windows有一个最显著的特点,稳定,这就好比思科和华为
思科的机器慢但稳定,华为的机器快但不稳定,作为服务器这一端来说
要的皇怯卸嗫欤俏榷ǎ評nix在服务器端还是非常有市场的
而且很重要的windows不安全,在ms的宣传中我想所有人都很少看到安全二字
因为windows操作系统针对的是pc用户,pc死机就死机咯,大不了重启
瘟95最经常冒出来的就是蓝屏,在服务器这一端上因为ms没有自己的芯片
所以要做系统有些力不从心啊。扯远了,那么java可以做到在windows上编译
然后在unix上运行,这是c/c++做不到的那么说到这里,java能做什么逐渐清晰起来
刚才说到了,java程序有一个的特点是安全
这个安全是针对你的系统来说得,系统在跑了java程序之后会特别地稳定
而且还能跨平台,那么很明显,java主要应用于除了windows操作系统以外所有的平台
比如手机,服务器
想想看,如果你写的程序要跑在手机上,而手机有多少款用的是windows?
就算有,那如果你用c/c++,是不是要针对每一款手机写一套程序呢? 累死,那跨平台的java就不用,做到编译一次,随时运行
同样,在服务器这一端,如果我想给一个网络门户站点,比如sina
写一个应用程序,pc的性能肯定无法满足sina这样大站点并发数量的要求
那么它就需要买服务器,那么服务器ms没有市场,而且windows很不安全
那么十之八九会买一个sun/ibm的机器,或者hp,但不管是谁的机器
它装的操作系统也不会是windows,因为windows太不安全了,而且多核的支持太差了
这个有空再说,那么如果你要写一个程序在这样的机器上跑
难道我们就在这个机器上做开发么?当然不可能,一般程序员开发用的都是pc,windows
那么该怎么办?写一个程序,然后再拿到服务器上去编译,去调试?
肯定不可能,所以我们就希望找到一个语言,编译完生成程序之后
在pc上调试,然后直接移植到服务器上去,那么此时,我们就会毫不犹豫地选择java
因为在跨平台以及安全性来说,java永远是第一选择
ok,下面说java的缺点
一慢,这其实是一种误区,这就好比goto语句一样
java也抛弃了指针,虽然看上去似乎变慢了,但是在这个两三年硬件性能就能翻番的年代
速度已经不是我们关心的问题了,而且对于企业级的应用来说
没有什么比安全稳定更重要的,换句话说,我们可以忍受慢,但是不能忍受死机和蓝屏
而且越大型的应用,这种慢的劣势体现得越模糊
因为当系统项目越做越大,任何一个环节做不好都可能影响全局的情况下
安全尤其重要,而且就像goto语句一样 这种过分追求速度的主张会给系统开发和纠错以及维护带来无可挽回甚至不可避免的损失
把内存交给计算机去管理吧,这种代价值得
我们做的不是pc游戏,没必要把内存的那一点点消耗当亲爹
二难看,又是一个误区,很多人甚至拿出java swing控件画出的界面来说
呵呵,其实java不是不能画得好看,IDEA就是java写的IDE,挺漂亮的
但为什么难看呢,是因为swing控件它本身就是unix时代的产物,swing控件贴近unix界面
老外看unix界面其实挺顺眼的,他们就是吃unix饭长大的
而unix又是吃百家饭的,不像ms那么唯利是图,所以不怎么对中国人友好
加上我国又没有公司在做操作系统,所以看上去是不怎么顺眼
其实玩过unix的人都知道,unix对中文的支持一直不怎么好
三我还没想到,其他人补充
给初学者之二:从JDK说起
在知道了java有什么优点,能做什么之后
就该说一下java该如何去学了
在说java如何去学之前,有必要把java的几个大方向做一个简单说明
早在五年前,嗯,应该说是六年前,也就是99年的时候
sun公司做出了一个决定,将java应用平台做一个划分
毕竟在不同领域,语言应用特性是有区别的 针对不同领域内的应用,sun公司可以发布相关高端标准来统一规范代码
这三大块就是J2SE,J2EE以及J2ME
这个举措今天看来无疑是非常了不起的
正是由于这次革命性的发展,使java从一种小打小闹游戏性的语言
发展成为今天企业级应用的基础
这里要特别说明一下J2SE J2EE J2ME中2的意思
其实2就是英文单词to的谐音,就是to的意思
而不是second edition,当然java 2本身版本号就是1.2,也有点2nd edition的味道
说点题外的,sun公司发布的java版本很有意思
虽然总是写是1.X但其实外界对这种版的说法也就是X.0
比如java 2,其实就是java 1.2
1.3其实就是3.0,1.4就是4.0,现在所说的5.0 其实就是1.5
只是以前我们更习惯叫1.X而已
可能到了5.0以后,就全改叫X.0而不是1.X了
所以以后听到别人说java 5.0,千万别惊讶,其实就是1.5
在这三个J2*E中J2SE是基础,就是java 2的标准版(java 2 standard edition)
也就是最基础的java语言部分,无论学什么java技术,J2SE都是必须掌握的
要使用J2SE就必须安装JDK(java development kit)
JDK在sun公司的主页上可以免费下载,下载后需要安装,具体安装流程看教材 JDK包含有五个部分:核心API,集成API,用户界面API,发布技术还有java虚拟机(JVM)
先说运行环境,运行环境最主要要说的就是java虚拟机(JVM)
前面我们说过java是跨平台的语言,那么如何做到跨平台呢?毕竟每种操作系统都是不同的
java的设计者们提出了一个虚拟机的概念
在操作系统之上建立一个统一的平台,这个平台必须实现某些功能以支持程序的运行
如下图:
------
|
program
|
------
|
JVM
|
------
| UNIX | Windows | Linux | Solaris |..------
程序员所写的每一个程序都先运行在虚拟机上
所有操作都必须经过虚拟机才能和操作系统交互
这样做不仅统一了所有操作系统,同时也保证了操作系统的安全
要死机的话,死的是虚拟机(JVM)而操作系统并不会受此影响
而我们所说的java运行环境指的主要是JVM,其他的不说了,省略
下面说说JDK(java development kit)的API,其实用JDK来包括运行环境以及开发工具
个人感觉是不恰当的,因为这三个单词仅能说明开发工具,也就是几个标准的API
而没有让人感觉到有运行环境的意思在里面,这是题外
那么什么是API?
简单地说就是Application Programming Interface,应用程序编程接口
在java里面,就是一些已经写好了的类打成的包
这又要解释什么是类什么是包了,简单说一下,包就是类的集合
一个包包含零个或多个类,嗯,具体的可以去看书
这些类是java的基础类,常用的类,可以简单理解成java的工具集
最后说一下JDK的发布技术,其实按我的理解,讲白了就是编译器
将.java文件转换成.class文件的一种技术
这三部分组成了JDK,有了JDK,就可以开发出J2SE应用软件了
最原始的只要用一个记事本写几行代码就可以了
但一般来说我们会使用效果比较好的开发工具,也就是IDE
在J2SE这一块,特别推荐JCreator这款IDE
sun公司的产品,与JDK结合得几乎是天衣无缝,非常适合初学者使用
教材方面中文的推荐电子工业出版社出版的《java教程》初级与高级篇各一本
还有就是《21天学通java》虽然有人说21天系列是烂书,但个人感觉
对于j2se,这本书翻译得已经很不错了,基本没有什么语法错误,语句也很通顺
最后要说的就是《thinking in java》
这本书自然很经典,说得比较细,只是我觉得不太适合初学者,其实也不难
初学者直接看也不成问题,但个人感觉还是找本教材也就是前面推荐的两款来看比较好
基本概念的理解还是用教材的,毕竟thinking in java有的版本翻译得很烂
而且个人建议还是看原版比较好,当然这几本都看最好了,但如果没时间
至少精读其中一本,然后再看其他两本就可以,其实三本书内容也差不多
但看问题的角度方式以及面向的读者也都不同,嗯,怎么说呢,找适合自己的吧
最后要说的是
由于虚拟机的存在,J2SE的大多数软件的使用会比一般桌面软件慢一些
效果不尽如人意,现在大概只有swing控件还在使用吧,其它没怎么听说
J2EE&J2ME
这是java应用的重中之重,如果想拿高薪,最好把J2EE学好
记得以前在csdn上看过一个调查,上万的程序员主要从事哪方面的工作
十个中有八个是做J2EE的,其他两个一个做J2ME,还有一个做嵌入式
也许有些夸张,但也从某一方面说明J2EE人才的稀缺以及应用的广泛
所以如果想学java,只精通j2se是永远不够的,至少还需要时间去了解其它两个J2*E
给初学者之三:java企业级应用之硬件篇 总算讲到企业级应用了,内容开始逐渐有趣起来
java企业级应用分为硬件篇和软件篇
重点在软件,硬件是外延,严格地说与java没有必然联系
但是,由于java是网络语言,不了解硬件的一些基础知识
软件知道再多也没什么用,不要上了战场还不知道为什么而打仗 硬件是软件的基础,在这个前提下,有必要专门花一点点篇幅来聊一下硬件
硬件,简单地说就是我们实际生活中看得见摸得着的东西
也就是那些冰冷的机器,比如服务器,个人电脑还有网络交换机,路由器等等
那么先抛开网络设备不谈,先来说说计算机电脑的历史
在很早很早以前,人类创造了第一台电脑,那时候的电脑只是一台用来计算的机器
无比大,无比重,无比傻,除了算其它屁事不会做,没有所谓的人工智能与计算机网络
但是总算是诞生了,虽然以今天的眼光去看那时候的机器巨傻无比
只配叫做计算器而不是电脑,没有逻辑思维能力,只会死算
但千里之行,始于足下,反正是造出来了
然后随着时间的推移,制造业发展发展发展
电脑性能逐渐得到提升,速度快了起来,成本也逐渐低了下来
于是人们造出了第二台,第三台,第四台,第五台……第n台计算机
人们就造出了无数台计算机并使其成为一种产品
逐渐应用于许多复杂计算领域,不仅仅是科研,许多生产领域也开始出现计算机的影子
然后又随着时间的推移,人们发现不可能把所有的计算机都做成一个样子
因为各行各业对计算机性能的要求各不相同
于是开始把计算机划分档次,最简单地是按照计算机的大小划分 就是教科书上写的大型机,中型机,小型机
//个人感觉这样分纯粹扯淡,还以为是小孩子玩球,分为大球,中球和小球
但是不管怎样,计算机不再是千篇一律一个样子了
按照性能的不同,在不同领域,出现了满足符合不同要求的计算机
几乎在同时,人们也开始考虑计算机之间通讯问题
人们开始考虑将不同的计算机连接起来,于是网线出现了,网络出现了
又随着网络的发展,出现了一下专门为了寻址而存在的机器
这就是路由器和交换机,然后又出现了一些公益性的组织或团体
他们制定了一系列的标准来规范以及管理我们的网络
于是3w出现了,计算机的网络时代来临了
嗯,说到这里,计算机发展到今天的历史大概说完了
我们来详细说说网络时代的计算机以及各个硬件供应商之间的关系
前面说到了,计算机分为大型机,中型机和小型机……
但是现在市场上没有人这样分,要是出去买机器,对硬件供应商说
我要买一款中型机,或者说,我要买一款小型机,硬件供应商肯定会问问题
他们会问你买机器干什么用的?科学计算啊还是居家用,是作服务器啊还是图形设计
但不管怎样,简单地说大中小型机已经没有什么意义了
我们按照使用范畴来划分
简单划分为 服务器,工作站还有微机
服务器(server)
服务器涵盖了几乎所有的大型机以及大部分中型机甚至一些小型机
用通俗点话说衿骶褪悄掣龉?4小时不间断运行提供服务的机器
比如卖飞机票(中航信),比如酒店预定(携程)
比如提供门户站点相关服务(sina),比如电子商务(ebay,amazon,阿里巴巴)
这些服务对机器都有一些特定的要求,尤其强调安全和稳定
工作站(workstation)
工作站其实是图形工作站的简称,说白了,就是某种功能极其强大的计算机
用于特定领域,比如工程设计,动画制作,科学研究等
个人电脑/微机(pc)
计算机网络的最末端,这个应该不用我说太多了
网络时代的pc已经普及到千家万户
说完了分类,我们就来说说各个硬件供应商
首先是服务器还有工作站
这两类硬件供应商主要是以下三家
Sun,IBM还有HP(惠普)
然后是PC
以前IBM还有PC事业部,现在被联想吞并了(蛇吞象)
现在国际市场上有联想和DELL(戴尔),目前戴尔还是国际老大
还有HP康柏
然后是网络,也就是路由器和交换机
这块市场嘛,Cisco(思科)Brocade(博科)还有McDATA三足鼎立
内核(CPU)
PC内核
主要是AMD和Intel,前者最近与Sun公司合作,Sun也有一部分单双核服务器用的是AMD的
服务器与工作站内核
这一块与硬件厂商绑定
还是Sun,IBM,HP三家自己生产
题外
在一些大型主机应用市场,比如卖飞机票
德国的汉莎,中国的中航信,香港的国泰用的都是尤利(美国的公司,英文名我忘了)
其它用的是IBM的机器,现在能做大型机的感觉似乎只有IBM可以
尤利已经快倒了,技术太落后了,现在他们的系统还是fortran写的,连c都不支持
要特别说明的是,一个超大型主机然后多个小终端/pc的结构现在越来越没市场了
将来的趋势是用一整个包含多个服务器的分布式操作系统来取代这些大型主机
因为大型主机更新换代极其困难,一旦数据量超过了主机的处理能力
那么就要换主机,这个成本是极大的,但是如果用分布式操作系统
那就只需要增加小服务器就行了
硬件就大概说到这里,与大多数人没什么关系
因为大多数人压根不可能进入这些硬件领域,除非做销售
说了这么多,只是为了给软件部分打基础而已
//做嵌入式的除外
给初学者之四:java企业级应用之软件篇 嗯,说过了硬件就该是软件了
这篇是这个系列的重中之重
首先我们来说说什么是软件,统一一下概念
所谓软件通俗地说就是一套计算机程序
实现了某些功能的计算机程序
在很早很早以前,一台计算机的软件是不分层次结构的
一台计算机只有一个系统,这个系统既是操作系统又是应用软件,与硬件紧密绑定
后来经过许多年的发展发展发展
人们把一些与硬件紧密相连的又经常用到必不可少的功能做到一套程序中去
这一套程序就被人们称做操作系统 另外一些可有可无的,不同工作适应不同环境的功能封装到另外一套程序中去
而这一系列程序被人们称作应用软件
如下图:
------------
|应用软件:falshgat/IE/realplayer/winamp..|
------------
|操作系统:UNIX/Windows/Linux/Solaris...|
------------
前一篇我们知道,硬件分为服务器工作站与pc
其实无论哪种硬件的软件,都有操作系统与应用软件
ok,那下面我们来谈应用软件
在现在企业级应用中,我们的应用软件一般分为三层
三层分别是表示层,业务逻辑层,数据持久层
------------------------------
|表示层|业务逻辑层|数据持久层|
------------------------------
我们来说说三层中的代表软件
表示层
这一层一般在客户端pc机上,最常见的是IE浏览器,这就是表示层的软件
表示层是直接与使用者交互的软件
业务逻辑层 这一层一般在服务器端,顾名思义,所有业务逻辑处理都在这一层完成
最典型的是appserver,比如IBM的websphere,BEA的weblogic还有tomcat/jboss等
这一层也是三层中的重点,我们要说的大部分内容都是关于这一层的,这个等会再说
这一层就叫做中间层
数据持久层
这一层典型的就是数据库,一般也在服务器端
但该服务器一般与装业务逻辑层软件的服务器分开
当然你也可以用IO输入输出流往硬盘上写东西
但没人会建议你这么做,因为这样做你的数据缺乏管理,不管怎样
这一层要做的就是保存数据,业务逻辑层软件一般不负责保留数据
或者说业务逻辑层只负责暂时储存数据,一关机,业务逻辑层数据全部over了
那么数据的持久化(也就是储存数据)就必须要在这一层完成下面放着这些概念不谈,我们来说说将来的趋势
趋势一:
瘦客户端,很早很早以前,当时C/S模式也就是client/server
客户端软件大行其道的年代,一个pc用户,是采用一个傻终端连接到服务器上
然后进行相应的操作,最典型的就是我们上bbs经常用的c-term
这就是那个时代的产物,同样还有我国现行的机票定座用的e-term
后来呢,浏览器变得非常流行,人们发现,浏览器也能传递一些数据
虽然这些数据并不像那些终端那样准确,但应付大多数日常需求足够了
于是人们就提出一个瘦客户端概念,也就是说,将来表示层所有的其他软件疾挥? 我们唯一需要的就是一个网页浏览器,然后通过浏览器输入ip地址连接到服务器
然后进行相关的操作,由于网页浏览器一般每个操作系统都有自带一个
这样做就达到了给我们客户端瘦身的目的(不需要安装额外软件)
这样模式被称作B/S模式,也就是browser/server模式
但需要指出的是,虽然瘦客户端是趋势,但并不代表胖客户端没有市场
尤其是一些复杂的业务操作,还是浏览器这种简单软件无法胜任的
趋势二:
傻数据库,ok,首先,我承认,这个名词是我发明的,但我实在无法找到一个更好的表达
什么是傻数据库,如果谁对数据库有所了解的话,就知道,以前的数据库
有自己的一套管理体系,甚至有自己的客户端,比如oracle,mysql,sqlserver都有
在某个管理工具上写什么sql语句查询数据库是我们以前常做的事
那么将来我们提倡的是:将所有的业务逻辑封装到业务逻辑层去
管理的事情由软件来做,由业务逻辑层的软件来做
所谓傻数据库就是说,将来的数据库什么事都不用做
只用把数据给我保存好就行了,那些复杂的业务逻辑什么外键什么关联
都没数据库什么事了,都交给业务逻辑层软件来做
这样做的好处就是:我们就不需要这些该死难懂又复杂的数据库系列管理工具了
而且这些工具每个数据库都有自己的工具,完全不一样,乱七八糟,没有人喜欢面对他们
除了数据库维护人员,也就是DBA,我们是软件工程师,维护的事让他们去做
而且严禁数据库维护人员改动数据库的数据,他们只做备份,必要时候恢复一下就是了
了解了这两个趋势之后,是不是有种砍头去尾保中间的感觉?
没错,未来的趋势就是中间件时代,中间件工程师将是未来计算机应用的主流
那再次统一一下概念,什么是中间件?
记得我上学的时候,看ibm的教材,看了半天中间件定义,就看懂记住一句话
中间件是做别人不愿意去做的事情,现在想想,狗屁定义,呵呵
什么是中间件,中间件是业务逻辑层的应用软件
是处理业务数据与客户端之间业务逻辑的一种应用软件
一种提供网络服务的服务器端应用软件
举个非常简单的例子,网上银行,某个人想用IE进入工行的账户,然后转帐
在这个例子中,客户端表示层显然是IE,数据持久层显然是银行的核心数据库
那么中间件是什么?中间件就是提供这种服务的系统
这三层的划分如下
------------------------------
|表示层 | 业务逻辑层 | 数据持久层 |
------------------------------
| IE | 网上银行
| 数据库
|
------------------------------
给初学者之五:企业级应用之中间件
前面一篇简单介绍了一下应用软件的分层
下面重点介绍一下中间件,也就是业务逻辑层的软件结构 从本系列第二篇我们知道,java程序是跑在虚拟机之上的 大致结构如下:------------| grogram |------------| 虚拟机
|------------| 操作系统 |------------也就是说操作系统先运行一个java虚拟机,然后再在虚拟机之上运行java程序 这样做的好处前面也说过了,就是安全,一旦出现病毒或是其他什么东西 挂掉的是虚拟机,操作系统并不会受多大影响
这时候有人可能会问,为什么非要虚拟机?把操作系统当成虚拟机为什么不行? 可以,当然可以,但是这样做某一个应用软件的bug就可能造成整个操作系统的死亡 比如说我们在某个服务器上安装了一个收发电子邮件的软件和java虚拟机
那么一旦黑客通过收发电子邮件的软件入侵系统,那么操作系统就整个玩完
那么如果黑客通过java程序进行攻击的话,那么死的将会是虚拟机而不是操作系统 大不了虚拟机崩溃,而操作系统正常运行不受任何影响
举个简单例子,比如说最常见的是将数据库(DB)与中间件放在同一台服务器上------------------------| program |
|-----------|
DB
| | 虚拟机
|
|------------------------|
操作系统
|------------------------那么此时如果没有虚拟机,黑客病毒攻击中间件系统,就有可能造成操作系统的死亡 那此时数据库也有可能跟着一起玩完,那损失可就大咯
那如果此时有虚拟机,那么一旦被攻击,死的是虚拟机,操作系统与数据库不受任何影响
嗯,回顾完虚拟机,再来介绍中间件
在很早很早以前,任何一家企业,想要搭建一个局域网系统,他需要请许多个工程师 比如说我们想搭建一个网上银行,客户端用浏览器,后台数据库比如说用oracle
那么搭建这样一个网上银行,可能需要用到多少个工程师,我们来算一算
首先,由于客户端用的是浏览器,我们需要一些了解网络通讯协议以及一些浏览器标准的网络工程师
其次,由于后台数据库用的是oracle,那我们还需要请oracle的工程师,因为数据库这一层每个数据库公司的接口什么都不一样
然后,我们还需要一些操作系统的工程师,因为我们的系统需要跟操作系统直接交互 最后,我们需要一些设计网上银行系统及其相关业务的工程师 太多了太多了,这样一个中间件队伍实在太庞大了,制作维护成本实在太高了 不仅如此,这样一个中间件就算做出来,他们所写的代码也只能满足这一家公司使用 其它公司统统不能再用,代码重用率极低,近乎不可能重用
毕竟这个系统中改动任何一个部分都有可能涉及到整个系统的改动
那么如何降低成本?
我举出了四组的工程师:
网络工程师,数据库工程师,操作系统工程师以及设计网上银行系统的业务工程师 除了最后一组设计网上银行的业务工程师之外,前面三组工程师是不是每一个项目都需要的?
就算不是每一个项目都需要,至少也是绝大多数项目需要的吧?
哪个项目能够脱离网络,数据库和操作系统?不可能,在这个时代已经很少很少了 好,那既然每个项目都需要,我们是不是可以用一个产品来取代这三组的工程师呢? 我们的业务工程师只需要遵循这个产品所提供的接口,进行相应的开发就行了 人们提出了一种叫做appserver也就是应用服务器的东西
应用服务器是干什么的?按官方的说法,应用服务器是包括有多个容器的软件服务器 那容器是什么?容器(Container)到底是个什么东西我想多数人还是不清楚
在说这个之前,先介绍一下组件
什么是组件,组件是什么?组件其实就是一个应用程序块 但是它们不是完整的应用程序,不能单独运行
就有如一辆汽车,车门是一个组件,车灯也是一个组件 但是光有车灯车门没有用,它们不能跑上公路
在java中这些组件就叫做javabean,有点像微软以前的com组件 要特别说明的是,由于任何一个java文件编译以后都是以类的形式存在 所以javabean肯定也是一个类,这是毫无疑问的
好,那么容器里装载的是什么呢?就是这些组件
而容器之外的程序需要和这些组件交互必须通过容器
举个例子,IE发送了一个请求给容器,容器通过调用其中的一个组件进行相关处理之后 将结果反馈给IE,这种与客户端软件交互的组件就叫做servlet
但是组件有很多种,那么如何区分这些组件呢?
有多种管理办法,比如同是同样是servlet,有些是通过jsp生成的
而有些是开发人员自己写的,那么通过jsp生成的servlet集中放在一个地方 而开发人员自己写的则需要在xml里面配置一些基本的参数
同时,不同组件有可能还需要继承一些特定的父类或者接口,这也是容器管理的需要 还有其他的一些组件,这里就不一一说明举例了
那么容器有很多种,按照他们装载的组件类型划分
比如有装ejb的ejb容器,有装servlet与jsp还有静态页面的web容器等等 //这种只含有web容器的应用服务器也被叫做web服务器 当表示层的应用软件通过网络向appserver发送一个请求的时候
appserver自动找到相应容器中的组件,执行组件中的程序块,把得到结果返还给客户 而我们要做的事就是写组件也就是javabean,然后放到appserver里面去就可以了 至于怎样与IE通讯,怎样截获网络上的请求,怎样控制对象的数量等等
这些繁琐而无味的工作我们都不管,都由appserver去做吧,把注意力集中在业务逻辑上
appserver与其他相关软件的关系如下图:
------------------------|
表示层
|
业务逻辑层
| 数据持久层 |------------------------|
|
-----------------
|
| |
IE
|
|
javabean
|
|
| |
->
-----------------
->
DB
| |
client
<-
appserver <-
| |
|-------------------------|
| |
|
虚拟机
|
| |--------------|-------------------------|------------| |
Windows
|
Linux/Saloris
|LinuxSaloris| |--------------|-------------------------|------------| 图上可以看出:虚拟机负责处理中间件与操作系统之间的交互 appserver则负责组件的管理以及与其他两层的业务交互 附图: image002.gif(76463 字节)
要说明的是上图中还包含有应用程序客户端容器(Application client container)管理应用程序客户端组件的运行,应用程序客户端和它的容器运行在客户机 这种情况比较复杂一般说的是两个server之间的通讯
比如jsp/servlet容器在一个服务器上,而ejb容器在另外一个服务器上等等 这是分布式操作系统大面积应用的基础,这个以后再说 下面这张相对简单: 2 附图: j2ee.gif(8226 字节)
嗯,那么话题再回到中间件上去,什么是中间件?
appserver就是所谓的中间件,但是中间件不仅有appserver,还有其他的东西 换句话说,appserver只是中间件的一种
而关于中间件有诸多规范以及遵循这些规范的模型 最流行的规范无非两种,一个是j2ee还有一个是.net 但是.net几乎只有微软在用,所以很多人把.net这个规范就当成是微软的中间件产品 也不为过,毕竟没几个公司喜欢跟着微软屁股后面跑的
给初学者之六:java企业级应用之综合篇
我们知道中间件有很多种规范以及相关的模型 最流行的一个是j2ee还有一个是.net 那么各大公司关于这两套规范各有什么产品以及周边呢?
j2ee:
黄金组合
操作系统:Solaris 应用服务器:Weblogic 数据库:Oracle 开发工具:JBuilider/IntelliJ IDEA 优点:性能一级棒,大企业大公司做系统的首选,世界五百强几乎都是这套组合 缺点:极贵
超级组合,也是最安全最酷的黄金组合,硬件采用SUN公司的机器
但是SUN的服务器很贵,同等价格不如去买IBM的机器
SUN的服务器支持Solaris的效果自然不用说,Solaris号称是世界上最安全的操作系统 Oracle也是世界上最安全,性能最优的数据库,Weblogic是当今性能最优的appserver JBuilder和IDEA各有所长,JBuilder是Borland公司的招牌之一
是当今世界上最流行的java IDE,用delphi写的,但网络上评价似乎不是很好 IDEA拥有插件功能,界面在所有java IDE中最为漂亮,东欧人开发的产品 东欧人严谨的作风在这个产品上体现得尤为突出,用java写的
IDEA甚至号称自己被业界公认为是最好的IDE//个人保留意见,没有最好只有更好 但我用JBuilder的时候发现了不少bug,而至今还没有在IDEA上发现什么bug 个人推荐IDEA 价格方面,Solaris开源,但是SUN的服务器比较贵,Weblogic最高是34万 oracle标准版要18.6万,企业版要49万,JBuilder要2.7万左右 IDEA零售价大概是500美金,也就是5000多元
另外,虽然理论上这些产品的综合性能要高于其他选择,但是必须看到
由于产商之间的利益冲突,比如oracle也有自己的appserver,但是性能不怎样 使得这几种产品之间协作的性能要比预想中的要差一点点--开源系列
操作系统:-应用服务器:JBoss 数据库:MySql 开发工具:Netbeans 优点:便宜,性能未必最佳,但是对付中小企业足够了 缺点:出了问题自己抗吧
嗯,这是java阵营最大的特色,免费免费,还有在开发工具这一栏Eclipse也是免费的 但后面要说,算了,换个有代表性的开源产品来
tomcat仅有web容器而没有ejb容器,而jboss已经集成了tomcat 也就是说下载了jboss之后,启动的同时也就启动了tomcat jboss在tomcat基础之上多加了一个ejb容器,使得jboss+tomcat成为和weblogic websphere之外又一个得到广泛应用的appserver 现在大概是这样,中小型企业多用jboss,如果应用小一点就用tomcat 只有给那些大型企业做的项目,才会花钱去上一个weblogic或者websphere mysql也是开源的数据库,做得非常不错,如果系统对数据库要求不高 或者安全要求不是非常严格,mysql是一个非常不错的选择 开发工具方面,netbeans是sun公司极力推广的一种IDE 听说在北美市场使用量已经超过eclipse了
操作系统,软件再不用钱,服务器也要钱,看这台机器上跑什么操作系统就用什么了--IBM套餐
操作系统:Linux 应用服务器:Websphere 数据库:DB2 开发工具:Eclipse/WebSphere Studio 优点:服务好,IBM可以提供全套服务,也可以替客户承担风险 缺点:把机器数据全部交给IBM,安全什么的都由不得你了
呵呵,IBM全套产品,甚至包括硬件设备IBM的服务器
由于是一个公司的产品,各产品之间的协作自然不错
价格方面,Linux,DB2,Eclipse都是开源产品,Websphere目前零售价是33.8万人民币 IBM服务器不错,可以考虑--.net:
微软阵营
操作系统:Windows 应用服务器:.net应用服务器(好像叫IIS)数据库:SqlServer 开发工具:MS Visual Studio 优点:客户端的用户体验良好,和客户端诸多微软产品的兼容性强 缺点:离开了微软,寸步难行,和其他任何一家公司的产品都不兼容
微软的东西,怎么说呢,太专横了
微软所有的东西都是围绕着windows来做的
.net其实已经可以实现跨平台了,但是微软出于自身商业考虑 在其应用服务器跨平台的实现上设置了种种障碍 而且针对windows,微软做了大量的优化,可以这么看.net就是与windows捆绑的一套产品
所以有些人说,微软的产品离开了windows,就是渣
而且.net开源选择也少,安全性方面考虑,windows本身就有一堆补丁要打了 sqlserver也不安全,至于.net到底安全不安全我不清楚,毕竟我没怎么用过 但整体考虑,感觉.net不是大企业的首选,鉴于其浓厚的商业背景 也不是中小企业的首选,但是必须看到
客户端也就是微机pc市场已经完全被windows所垄断
所以在一些快速开发,还有和微软产品兼容性要求较高的领域,.net还是比较有市场的 最后一个visual studio对它之前的版本兼容,且支持c,c++,c#,vb等语言 在其传统领域,比如写一些桌面软件等客户端应用上,.net还是第一选择--最后要说明的是
这些组合不是固定不变的
由于J2EE得到了绝大多数IT企业的支持以及JAVA跨平台的特性 我们可以自由地定制个性化的组合
比如我可以选择windows+jboss+eclipse+oracle 也可以选择solaris+websphere+IDEA+mysql 等等,这些自由组合都是可以的,但是有一点必须说明 微软的东西,一般来说离开了windows就不能用
比如你选择了.net应用服务器,那操作系统就必须是windows 你选择了sqlserver,那就必须在windows上用
还有就是遵循j2ee规范的所有的组件都可以在不同的应用服务器上互相移植 比如你可以在测试的时候用jboss 而在正式投产上线的时候使用websphere,只需要在配置文件中作相应改动即可
给初学者之七:java企业级应用之术语篇
在了解完J2ee的相关周边产品之后需要深入J2ee规范内部去了解一下到底这些规范 这里介绍几个最常用的规范
再继续说下去之前有必要说几个常识
Java的诞生
Java之父James Gosling早年从cmu毕业之后
从事了一段时间的开发工作,后来意外碰到一个项目
这个项目要求他用C++开发,但可爱的JG是天才,凡是天才在某方面特别突出的同时 必然有一些天生的缺陷,恩,或说共性,比如说懒,急躁和傲慢
JG既然是天才,那就必然具备这些共性,JG懒,以至于他学不好C++ 不仅他学不好,当年开发出Java的那个团队也都学不好C++ 他们急噪,以至于他们中有人甚至威胁以辞职的方式离开这个需要使用CPP开发的项目 他们傲慢,所以他们决定开发出一种新的语言来取代那个该死的CPP 更可爱的是,他们一开始居然给这门语言起名C++++--//没错,我没敲错 叫什么C加加 加加减减,意思是加上一些好东西,减去一些坏东西
天才的设定,有时候你会发现天才和傻瓜真的只有一线之隔
还好这个可爱的名字没有被继承下来,这些天才们给他们的产物起名叫Oak//橡树 只是后来当他们去注册这个名字的时候,发现这个名字已经被注册了
于是在Sun公司的一个女职员//mm就是心细,这个说法也是我们公司mm告诉我的 的提议下,把这个可爱的语言起名为Java,就是他们当时喝的咖啡的名字 所以我们看到Java的标志就是一杯冒着热气的咖啡
JavaBean 了解完Java之后,再来说说什么是JavaBean//华为面试题 JavaBean是什么? 咖啡豆
ja,更为科学点的解释是
用java语言编写的可重用的软件组件//组件的定义前面说过了,不再重复
很形象不是么? 将javabean放入杯子//容器,还记得容器的概念么?web容器,ejb容器 就可以冲泡//编译 成咖啡,供客人们品尝//运行 完美的服务
下面进入正题 再谈容器
前面介绍过容器,我觉得有必要再补充一点
容器从某种意义上说其实就是一个可运行的java写的应用程序 犹如c++/c编译后生成的.exe文件
不同的是java编译后的文件需要用命令行或者脚本启动执行 由于容器是由java写的,所以容器都能够跨平台
虽说如此,似乎大部分容器都针对不同的操作系统提供了不同的版本 但可以肯定的一点是,相同容器间的移植组件不需要重新编译
Servlet web容器组件
Servlet确切地说,就是web容器运行的java组件
与普通javabean不同的是,Servlet定义了一系列方法//比如init()和destroy()供容器调用,调用的主要目的是为了管理
当一个request请求被web容器截获之后,容器分析该请求地址 然后通过一个配置文件中的映射表//web.xml 调用相应的Servlet组件处理后将结果返还给客户端
JSP//Java Server Page web容器组件
Servlet出现了之后,人们发现几乎没有办法用一个非常直观的方式去编写页面 毕竟页面是html语言编写的
而让我们用一种流程式的处理方式去逐行教计算机如何写html代码太困难 在这种情况下JSP应运而生,JSP将java代码嵌入html代码内部
然后存成.jsp文件,再由计算机编译生成Servlet储存起来//注意这个过程
所以JSP和Servlet对于web容器来说其实是一种东西,虽然它们编写遵循的标准有所不同 极大地简化了代码同时增加了代码的可读性,生产维护成本下降 值得一提的是,在制定JSP规范的过程中,借鉴了ASP的很多规范 写过ASP并熟悉Java语言的人应该能很快掌握JSP
EJB//Enterprise JavaBean ejb容器组件
随着时间的推移,人们发现普通的JavaBean似乎并不能满足企业级应用的需要 最典型的就是虚拟机提供的垃圾回收收集机制也就是GC不够完善 可以优化的余地极大,在这种情况下,EJB应运而生
EJB和其它组件一样,不过遵循了某些规范而已
但是这些规范更多的是为充分利用机器并提高性能为主要目的的 举个简单例子
比如某个web服务器有100个用户同时连接上
由于网络连接是瞬时连接,所以很多时候并发数并没有100那么大 前一秒有可能有30个请求被发送过来并被处理 后一秒可以只有10个请求被发送过来并被处理 只有在非常非常极端的情况下才有可能发生100个请求同时被发送过来并被处理的情况 那么我们是否需要保留100个那么多个对象在服务器的内存里面去处理这些请求呢? 很显然,不需要,大多数时候//甚至可以说是所有时候,我不相信有那么极端的情况 我们只需要保存其中的10-30%就够了,那么什么时候需要20%,什么时候需要50% 甚至100%,这个过程就交给容器去管理,这就是ejb容器每天在干的事 管理内存中活跃的对象
恩,必须强调的一点是,由于使用的不成熟 我们经常把规范以及具体的应用两个名词混用
举个简单例子,我们说Servlet,极有可能说的是Servlet规范 也有可能说的是一个具体的Servlet,这个就要看情况而定了 EJB,JSP也是如此
JDBC 和数据库的连接
这个严格说来是数据库产商需要关心的事
关于AppServer如何与数据库的连接
但是也需要开发人员做一点事,因为AppServer不知道什么时候组件需要用到数据库 同时也需要开发人员告诉AppServer他们使用的是什么数据库,ip地址等等 JDBC就是关于这一套东东的规范
包括数据库的产商应提供什么样的接口
AppServer应用服务器应该如何去连接 开发人员应该如何去配置这些连接等等
还有一些数据源,连接池等概念参考相关数据在此就不再赘述 其它的规范比如JMX等确切地说与开发人员关联并不大了 这类高级应用只对AppServer应用服务器产商重要 也不再罗嗦了
---------记得听说过这样一种说法
大一时候不知道自己不知道 大二时候知道自己不知道 大三时候不知道自己知道 大四时候知道自己知道 为什么呢,因为大一时候刚进大学,什么都不懂,很正常,大家都一样 大二或者大三时候开始接触知识,虽然还是不懂,但慢慢地开始学习,开始积累 过了一段时间,知道自己知道了//也就是前一种说法的大四,后一种说法的大三 开始屁癫,开始拽得不得了,觉得自己怀才不遇,千里马难寻伯乐的那种感觉 有些人是大四毕业了以后开始拽,悟性高一点的,大三就开始拽,因人而异 这几乎是每一个初学者经过一段时间学习后的必然阶段 不管如何,总之开始入门了,这也不是坏事
但最后每个人都会知道自己不知道的,也就是后一种说法的大四阶段 //前一种说法里面的那些家伙估计要到工作以后才能明白 因为任何一门学科都博大精深,要是能在两三年之内就统统搞懂 那不是在吹牛就是坐井观天,java如此,c如此,c++也是如此
那么到了本系列的第七集,可爱的读者应该处在什么阶段呢?
恭喜,在看完这篇文章之后,你就基本处于知道自己不知道的那种阶段 离拽起来还有那么一段距离,因为你们毕竟还没有学习和积累一定的基础知识 但是骗骗外行,蒙蒙国企那些吃闲饭的管理人员问题不大
给初学者之八:java高级应用之框架篇 没错,我没敲错
之所以不再声称是企业级应用而称之为高级应用 是因为下面要讲的东西属于纯民间性质 是java具体应用的上层建筑,可用可不用,没有人强迫你用
首先给框架//framework 下一个定义
我想读者你可能听说过.net framework这个概念
没错,我们将要说的framework也和这个framework差不多 所不同的是.net framework的竞争对象是j2ee那一系列标准 而我们将要说到的几个框架则应用在j2ee的不同层面 单就单个框架而言,没有.net framework管得那么多
但是却要比它精专多了,而且总量加起来,也远比微软那一套框架要广泛得多 回到正题,框架是什么?
软件工程之所以被叫做软件工程就是因为有那么一批人觉得可以用工程学里面 那些管理Project的方法来管理软件从开发到维护这一系列流程 那么在建筑工程里面框架是什么?
现在建筑多采用钢筋混凝土结构,注意里面一个很重要的词汇:钢筋 托福阅读中曾有一题听力就是关于钢筋结构的诞生,在美国
恩,现代建筑中多在建筑起来之前,先用钢筋搭建出一个框架出来 然后往钢筋中间填入混凝土,从而形成一个完成的建筑
而今天要说到的框架就是这么一个东西在每一个软件中间的实现
框架就是那么一个通过预先写好代码从而帮我们建立起一个软件结构的这么一个东西
这里提一下框架与规范//主要指J2ee规范也就是官方标准的区别
从某种意义上说,J2ee规范本身就是一个框架
无论是web容器也好,还是ejb容器也好,它们都开发了一部分通用的代码 并且帮助我们搭建起来了一个软件结构,我们要做的就是往里面填入组件 比如ejb/servlet/jsp等等
没错,要这么理解也没错,但是为了避免混乱,我们还是严格区分开来 本文中将要提到的框架如无特别说明,就是指的是非官方标准的框架 规范是规范,而框架是建立在规范之上的一种东西
可以说是标准的延续,或者说是民间的尝试,总之是这么一个非官方的东西 说到这里顺便提一下JCP组织也就是Java Community Process/Java社区 当初Sun公司在java发布之初,为了提倡开源和共项
同时也出于一个提出合理的标准的目的,而让广大的开发者参与标准的制定 而成立了这样一个社区,现在还健在,网址是jcp.org 每一个新的规范发布之前都会在这个社区广泛讨论,最终对规范的制定产生巨大的影响 其中就包括企业级的参与者,相当有名的JBoss以及我国的金碟公司都是其中的成员
下面介绍一下几个相当著名的框架,必须要指出的是,虽然框架大多开源 但并不代表所有的框架都开源,比如.net framework,但是java框架大多数开源 言归正传
Struts 表示层框架,名字来源于飞机的金属框架 可能有读者会提问了 表示层不是客户端么?
没错,但是语言这东西,众口烁金,别人都这么说你就不好不这么说了 最早表示层说的是客户端,后来随着时间的发展 人们也把服务器端直接与客户端//比如IE 打交道的那部分也称为表示层//JSP+Servlet 那么表示层框架是干什么的呢?
早先大规模应用JSP的时候,人们发现,JSP里面充斥着逻辑代码与数据 可读性极差,于是人们借用很早很早以前的MVC模式的思想 把表示层组件分为V-Viewer,也就是JSP M-Model模型,一般来说是一个JavaBean C-Controller控制器,一般来说是一个Servlet 所有人通过JSP和服务器打交道,发送请求,Viewer把这个请求转发给Controller Controller通过调用一个Model来处理该请求,然后返回数据到Viewer 这么一个过程,从而达到数据与逻辑的剥离,增强代码可读性,降低维护成本 而帮助人们实现这一系列东西的就是Struts框架,就是这么一个东西 Struts的竞争对手主要是产商们极力倡导的JSF也就是Java Server Faces 但是由于Struts出道时间早,所以应用比较多
JSF则是产商们大力支持,前景看好
对于这一层来说,在JSP的html代码中出现的java语句越少越好 因为java代码越少说明页面处理的业务逻辑越少,也越合理 这也是Struts最初的目的,记住这话
Spring 大名鼎鼎的Spring框架
有人曾说2005年一片叫春之声,指的就是该框架
Spring起源于Rod Johnson的《Expert One-on-One J2EE Design and Development》一书 Rod Johnson认为,J2ee里面的那一套//尤其是ejb 太重了,对于单机的系统来说,没有必要使用那么复杂的东西 于是就开始设计并引导Spring小组开发出这样一个构架
不能不说他是个天才,因为的的确确不是所有的系统都是跨多服务器的
没有必要把一个简单的系统设计得那么复杂//天才的那几个共性又体现出来了 Spring从诞生之日起就是针对EJB的,力争在不少应用上取代EJB 而它也确实达到了这个目的
现在包括WebLogic等主流应用服务器还有主流IDE都开始逐渐接受该框架 并提供相应支持
提到Spring就不能不说控制反转Ioc//Inversion of Control 和依赖注射DI//Dependency Injection 什么叫控制反转呢?
套用好莱坞的一句名言就是:你呆着别动,到时我会找你。什么意思呢?就好比一个皇帝和太监
有一天皇帝想幸某个美女,于是跟太监说,今夜我要宠幸美女 皇帝往往不会告诉太监,今晚几点会回宫,会回哪张龙床,他只会告诉太监他要哪位美女 其它一切都交由太监去安排,到了晚上皇帝回宫时,自然会有美女出现在皇帝的龙床上 这就是控制反转,而把美女送到皇帝的寝宫里面去就是注射
太监就是是框架里面的注射控制器类BeanFactory,负责找到美女并送到龙床上去 整个后宫可以看成是Spring框架,美女就是Spring控制下的JavaBean 而传统的模式就是一个饥渴男去找小姐出台
找领班,帮助给介绍一个云云,于是领班就开始给他张罗
介绍一个合适的给他,完事后,再把小姐还给领班,下次再来
这个过程中,领班就是查询上下文Context,领班的一个职能就是给客户找到他们所要的小姐
这就是lookup()方法,领班手中的小姐名录就是JNDI//Java Naming and Directory Interface 小姐就是EJB,饥渴男是客户端,青楼是EJB容器
看到区别了么?饥渴男去找小姐出台很麻烦,不仅得找,用完后还得把小姐给还回去 而皇帝爽翻了,什么都不用管,交给太监去处理,控制权转移到太监手中去了 而不是皇帝,必要时候由太监给注射进去就可以了
看到Spring的美妙了吧,Spring还提供了与多个主流框架的支持 可以和其它开源框架集成
Hibernate 名字取材自ORM最早的一句玩笑话//ORM就是OR-Mapping 说用了ORM之后,程序员就可以去冬眠了,而不需要操心那么多事
这里不得不说的是,该框架由于做得太好,以至于被J2ee招安,成为EJB3.0的一部分 替代原有EJB2.X里面关于Entity Bean而成为EJB ORM的工具 这里解释一下ORM//OR-Mapping 中文名对象关系映射
什么意思呢?我们知道传统的数据库都是关系型的
一条条记录以表格的形式储存,而表与表之间充斥着是关系/关联
比如说一个人,名字zhaoce,性别男,年龄23那么数据库中是这么储存的 姓名 性别 年龄 zhaoce m 23 某女
f 22 而实际应用服务器中的实体都是以对象的形式存在,一个个对象 zhaoce是以这种形式存在的 Human human=new Human();human.setName(“zhaoce”)human.setSex(“m”);human.setAge(23);这样的,那么我们知道,传统的JDBC是通过一个二维字符串将数据取出 需要我们自己将其包装成对象,在存入的时候,我们还需要将对象拆开 放入sql语句中//Insert into Huamn values('zhaoce','m',23)然后执行该sql语句
太麻烦太麻烦,ORM理念的提出改变了这一切,ORM认为,这些东西应该由框架来做 而不是程序员,程序员做他该做的,不要为这种破事分心,还测试半天 于是就出现了Hibernate,JDO,TopLink等等,甚至.net里面也有ADO.net 过去一段时间是Hibernate和JDO争风,现在看来Hibernate逐渐成为主流并被官方接纳 成为规范标准之一,替代掉原来EJB2.X的ORM EntityBean TopLink则是Oracle公司推出和Oracle数据库结合的一种ORM 商业用软件,贵且复杂,不过正在逐渐开放
而象表示层一样,这一种专门面对数据层的代码也被称为数据持久层 所以数据持久层这一概念有时不仅仅指代数据库
关于ORM,最高的境界应该是在java代码中不出现任何一句的sql语句 注意,是不包括sql语句,Hibernate的hql以及ejb的ejb-ql不算在内
至于出现不出现hql/ejb-ql等替代ql,这要视具体情况而定,不过最好也是不出现 当然最后所说的过分理想的情况往往不现实,总之一句话
以sql为代表的ql/*还有hql,ejbql等*/语句在代码中出现得越少越好 记住这话,现在未必能够理解,学了以后就懂了
这三个是目前最为常用的框架 而目前光已公布的框架就>500 还在不停增加中,不可能一一列举,有兴趣的可以去看相应文档 要指出的是框架不是应用程序
只是一堆组件的有序复合,应用时不能脱离于应用服务器单独存在
给初学者之九:收尾
最后一篇介绍几个常见的概念
设计模式
这可不仅是java独有
我看的书就是c++和smalltalk例子的
先说说什么是设计模式
模式是什么?模式是经验的总结,潜规则的抽象
什么意思呢?比如说我们坐飞机,上飞机前需要经过几个步骤 什么安检领取登机牌之类的,这一套流程能不能改呢?
可以,但为什么几乎全世界的航空公司登机前都是这一套流程呢? 因为航空公司经过长期实践之后得出了一堆结论和经验 并认为这样做才是最安全,或说是最有效率的 这就是模式,模式是编程高手之间交流的桥梁
两个编程高手通过统一命名的模式了解对方的思想
当然不借助模式可不可以?当然可以,只是模式无处不在,你不知道而已
又比如吃饭,每吃一口饭,我们要先端碗,拿筷子,张嘴,塞饭入口,咀嚼最后吞咽 这就是一套模式,我们给这套模式命名为吃饭
那么当老爸叫吃饭的时候,我们就能明白什么意思
而不用老爸进来呓呓啊啊并比画上半天,哑语也不是这么用的 这就是模式,已知的模式有400多种//好象更多,不记得了 比如数据库有数据库的设计模式,编程有编程的模式等等
面向对象有常用的21种模式,需要掌握,主要分为创建,行为,结构三类 J2ee有J2ee的模式,Sun公司出了一本书叫《J2EE核心模式》可以拿来看看 必需要指明的是,模式不是规范,比如吃饭模式
没有人规定你吃饭非得要那么吃,你可以端碗,上抛,张嘴在下落后连碗一起吞咽 这也可以,只要你愿意,同样,只要你愿意,你就可以不遵循模式
模式之外还有反模式,学模式不可定势,不要学死,活学活用,无招胜有招才是最高境界 JavaDoc 文档工具,极其好用
可以根据注释自动生成HTML文档
Ant 98年,有一位程序员在从欧洲飞回美国的飞机上想到了这么一个东西 从而改变了整个世界,他的名字叫James Duncan Davidson 组织管理工具,可以这么描述它
比如你想在编译之后自动再次生成JavaDoc 那么你只需要编辑Ant脚本//对,就像Windows脚本那样 然后批处理就可以了,不过现在Ant已经广泛集成到IDE中去 不需要自己手动编写,不过如果想要炫炫,据说此招百试不爽
JUnit 测试工具,Unit家族可不只有JUnit 还有其它版本的,这个不细说,具体实践一下就明白了
POJO //Plain Old Java Object 就是传统的Java对象,也就是一个JavaBean 由虚拟机来掌握其生死
常用的两个管理构架/规范是Spring和EJB容器 命名由来是某人//名字我忘了
觉得我们使用了太多的规范,以至于我们都忘记了纯粹的java对象 以至于我们都忽略了它的存在,所以叫了这么一个名字
以唤醒人们的记忆,这个意义上来说EJB其实不能算是POJO 毕竟遵循了一堆的接口,但是不管怎样,接口归接口,还是没有继承类 没有被强加什么//遵循可以写空方法假遵循 所以说还是POJO也对
但是由于这种东西缺乏管理,不象Servlet有专门的容器管理并继承了一定的类 而没有管理的对象在虚拟机中是很危险的,因为垃圾回收机制各个虚拟机不同 而且也不怎样,极有可能长时间不回收,这样在企业级的应用中呢 就有可能造成内存大量被占用从而死机,毫无疑问,这种机制需要优化 这种优化就是通过EJB容器或者Spring构架来实现
这么做还有一个好处就是迫使程序员对每一个类做封装
强迫他做管理,以达到防止内存泄露的目的,内存泄露最经常出现的错误就是 引用未释放,引用最典型体现在new这个关键字上,new得越多引用得越多 随着时间地增长,有可能导致循环,不停new new new new new.....其中哪怕只要有一个new处理不当,虚拟机无法回收内存 那就极有可能完
第四篇:非牛人申请加拿大商科研究生经验(xiexiebang推荐)
收到了 offer,觉得自己应该把申请经历写下来,算是给后来的朋们一点经验,也算是给自己留下一点纪念吧。
先交代一下背景吧,我是 北京 211 院校(最烂的 211 学校 ^_^)的本科学生,学的是统计学(市场调查方向),偏经济方向一点,我们系也设在经济管理学院下,我不是什么牛人,成绩也很一般,大学前 3 年学积分(各科学分 * 各科成绩 / 总学分)83。一般的成绩,尤其是第一年的高等数学只有 60 多分,线性代数 66 分,还挂过一科!英语方面,四六级都 500 刚过,雅思 6.5,GMAT640。我是大三第一学期决定 出国 的,当时有点迷茫,最开始想去 英国,因此在 07 年 11 月份去新东方学了雅思,但之后又觉得英国不好,又贵,天气我也不喜欢。又考虑去 澳大利亚,但还是不太好,我正好有亲戚在 加拿大,最后就决定干脆去加拿大吧,毕竟有人在那边好办事一点 J。我 3 月份考的雅思,第一次还算凑和,6.5 分,每项都 6 分以上,但是觉得还是没有发挥出自己的水平(不是 考试 型选手……),尤其是听力只有 6.5 ……当时考完雅思,还琢磨着出国最好学个商科,于是跟着我们班另外一同去美国的 同学 开始学 GMAT ……由于考完雅思再就没看过,第二次考试成绩和第一回一样,我也就认命了…… 6.5 分的成绩也让我和 Mcgill 这种牛校说再见了。GMAT 考得比较曲折,当时由于奥运会,还有跟女朋友分手,两件事情搞得我学习进度受到了影响,本来打算 9 月份考的结果 10 月份才考完,分时还是不理想…… 640(数学 50,语文 27,作文 3.5),NND,反正决定去加拿大了,不念商科,继续学经济或者统计,就凑活着用吧。自己感觉把,留学 这事情能尽早准备就尽早准备,因为大多数情况,自己定的计划都会被拖延(至少我是这种人;-P)当时想 12 月就把所有材料的寄出去,最后还是拖到了一月,因此错过了一个学校的 deadline …… 关于 中介
北京的大小中介我也问过几家,其中有一个给我印象深刻,那人问过我的背景之后,斩钉截铁的说:你这样申请加拿大基本不可能,GPA 和语言成绩低了。我就问他: concordia 有没有戏?他说:绝对不可能,除非我找人让你去读 XX 项目来着…… 结果呢?我收到的第一个 offer 就是 concordia 的…… 所以说中介这东西还是仔细斟酌,个人建议还是不要找了。中介无非就是帮你写 推荐 信,ps 什么的,别的东西还是要自己办……去北美的话中介费至少 1w5-2w,有这么多钱干啥不成?
准备好了考试,就开始选校和准备申请的材料了。建议申请的同学都去看看《飞跃手册》和《 上海 交大留学手册》,对不太了解的同学是非常好的帮助,上面把申请的每一步都说得很详细。10 月-11 月我一直每天早上 7 点和考研的同学起来去图书馆占座,然后就上网查学校的资料。还好加拿大学校不多,选校方面不是问题,把大概能去的学校用一张 excel 表全部列出来,大概就是我这图片上的内容——专业、推荐信、语言成绩、deadline 等等,全部学校整理完之后可以用 excel 做个筛选,之后查起来很方便的。在网上看资料确实是很烦的事情,尤其是外国学校有的网站做的那叫一个恶心啊,字又小,我几乎每天眼睛都累得不行。如果有什么问题,不要犹豫,果断给小米发邮件,他们会很耐心的解答的。基本都能很快回复,有的学校磨磨蹭蹭一个礼拜回你也是很正常的。
通过筛选,我最后确定了申请 Guelph, Mc Master , Waterloo, UWO, Concordia 等 8 所学校,总共 13 个 program(向我们这种非牛人只能用鸟枪法啊)。之后要按照各个学校的要求准备材料,每个学校要求的可能略有不同,不过大概都差不多,无非 PS、Resume、References、成绩单 等下面分别说说: Personal Statement 最麻烦的东西,我构思就花了将近一个礼拜,大体构思如下: 第一段:总括开头,写明目的
第二段:谈谈兴趣是怎么来的,什么事情使我感兴趣的 第三段:学术情况,学习品质 第四段:课外活动 第五段:职业目标 第六段:学习目的 总结
Taishai 有一篇文章对我 ps 写作 的帮助非常大————
http:// 此外,我还看了传说中的《 How To Write A Winning Personal Statement For Graduate And Professional School 》。虽然有点老,但是内容和最后对教授的采访还是很好的。由于是自己写作,我的英文写作又不是很好,于是主要是以模仿抄袭为主 ^_^,我经常去太傻文书区,www.xiexiebang.com 还有别的网站去收集创意和好的语句,用 word 收集下来。我先写了个中文版的 PS,然后再写英文的,最后然在加拿大的小姨找人看了看,从语言上润色了一下,就凑和着用了。个人感觉 PS 写作要义:无非以下几点: Answers —— 要回答学校的问题 Unique —— 一定要有特点 Honesty —— 要诚实 Present —— 立足现在
Expressive —— 语言有表现力
Resume 很 easy,找个模板套套就行,而且也不是所有学校都要。
References 加拿大的学校一般都要推荐表格,不过我也准备了推荐信,三封,系主任,副教授,实习时候的老板各一封。我也是全部自己写,先中文,后英文,这个就容易许多了。我参考了新东方的留学文书材料。个人觉得不要使用太多的牛逼词汇,把自己吹的好像爱因斯坦一样,太不现实了,重点是举出例子。向我而言,系主任那一封重点侧重突出我的创新能力和
leadership,副教授那一封突出学习能力和计算机水平,实习那一封就是学以致用了呗,什么勤奋、踏实都是每封都要提的。我们老师跟我的关系比较好,所以推荐信没遇到什么困难,很顺利就完成了。就是最后在封口的时候大家千万要注意不要装错了,最后买个便利贴,封好一个贴一个,以免忘记。
写作的时候最好能够让每个老师的信看起来文笔不太一样,最后要有学校信头的纸打印,我们学校没有,自己拿 ps 做一个就行。成绩单、在读证明
每个学校不一样,就不赘述了,很容易。
在准备材料的时候一定要保持头脑清晰,千万不能乱,其实是很繁琐的事情,一会儿推荐信时间打错了,老师邮箱搞错了什么的。每天头脑头很乱,因此在前一天或当天早上我一般都把今天要完成的事情写在便利贴上,贴到醒目的地方。我当时为了清醒一点,把桌子收拾了一下,然后左边放了个鞋盒子,刚好能放下文件袋,然后买了十几个文件袋,用便利贴标明,每个学校、每个专业一个袋子,很清楚。然后自己做一个每个学校的 checklist,放在透明文件袋的第一页,准备好一个就用 mark pen 标明一下,就不会搞错了。笔筒里准备好剪刀、尺子、马克笔、签字笔,能随时取用。自己觉得相当有效率,哇咔咔。月初我终于准备好了全部材料,网上交申请 fee 的时候,突然发现老爸把建行的卡办错了,郁闷的不行,还好班里有一起申请的同学,我就用他的交了。第一次看到缴费成功,那叫一个激动啊!注意的是信用卡如果被 decline 三次就不能通过信用卡交费了,大家还是要小心。同学的信用卡是中国银行的,好像还不错。
剩下的就是把材料寄出去了,我 选择 的是 DHL,反正也不贵,125 一个,毕竟快又有保障,还是划得来的,一般 5 天之内就到了。而且加拿大的 post office 经常罢工,所以还是选择快递较好。关于陶瓷
怎么说呢,这是个尴尬的问题。因为我学的这个专业,半瓶子经济半瓶子统计,半个文科半个理科,那有什么实验室经验,而且又不是牛校,我自己寻思一下,找教授陶瓷也没什么好说的,自己的研究方向?我都不知道……最后一狠心,NND,不套了,爱咋咋地吧。经过慢长的等待,至今收到了 4 个学校的 offer(NND,McMaster 和 UWO 现在也没消息……)。很开心,毕竟这半年多很辛苦,个人认为比考研、找工作什么的烦多了,大事小事一大堆,一不小心就浮躁了。不过最后总算有了回报,心里还是挺温暖的。我还记得当时去问中介,中介说我希望渺茫,我就发誓,一定要让你们看看,我自己申也行。半年下来自己学到了很多,失恋、考试乱七八糟的事情掺和在一起让自己不知不觉的成长了,到最后回首申请的时候,我可以说没有遗憾,真的没有遗憾,自己尽力了,会收到好结果的。至于最后的 签证,我现在正在准备……也是相当麻烦……尽人事,安天命吧 ^_^ 最后我要感谢父母的支持、宿舍的兄弟 xiaoke,来二大爷,刀哥,辉哥,浩子,yxc,胖哥,cc,阿鱼,还有我在加拿大表姐,每天都跟我谈留学的事,帮我参考学校,开导我,没有你们我可能真的无法一路走来。
最后祝大家都能实现自己的梦想,从绝望中寻找希望,人生终将辉煌。PS:(目前就读Brock Statistics)
[ 本帖最后由 wwwjk366 于 2010-12-10 14:42 编辑 ]
第五篇:完全非牛人美国CS硕士申请总结
完全非牛人美国CS硕士申请总结(世毕盟学员)
上海交通大学+CS 申请方向:CS GPA:非常低 GRE:145+165+2.5 TOEFL:88 去向:GWU CS Master
写在前面
首先在内容开始之前,声明一下笔者是个硬性条件不那么好的学生,自然申请到的学校比起其他人来说差了几个档次,但是对自己来说还是十分满意的。其次笔者在写这篇小结的时候抱着非常诚恳的态度,所以虽然不能像那些大牛一样给出申请TOP学校的建议,但至少希望能够站在一个过来人的立场上,给予和自身条件相似的同学一些有价值的经验。
个人经历
成绩不高是自己最大的硬伤。由于长期参加某课外活动的缘故,大学生涯花了大量时间精力在与申请和学习无关的地方,课程的成绩参差不齐,甚至在大三下的时候因为半个学期都没有把时间放在学习上挂了几门重要的课,给自己的成绩单留下了抹不去的一笔。
世毕盟留学:www.xiexiebang.com志存高远,与优秀的人为伍,脚踏实地,人生必定辉煌。
同样,没有上百的Toefl成绩也让很多学校无形之中把自己拒之门外。两项硬性条件不过关让自己对自己的申请前途非常的担忧。
申请时看到的其它人的经验中,也都讲到科研和实习的重要性。当然自己的科研经历也不算特别优秀,只有大二的时候参加过PRP和大三的时候在专业相关的技术创新比赛中得到了小奖。
显然在申请前自己对申请最大的焦虑就是成绩问题,自己也想过很久延毕一年重修那些成绩低的课。但是后来得出的结论是,到了大三下再想去刷成绩已经不太可能了。虽然大家可以借鉴网上过来人的经验来给自己一个学校的定位,但和自己经历相似的人实在少之又少。选择世毕盟也是出于这个原因,希望弥补前天条件的不足,以及帮自己选择自己合适的学校。
总结
个人认为世毕盟对自己最大的帮助在于:
1.经验
毕竟每个人的申请只有一次,在很多方面自身经验的匮乏让自己很难给自己定位。就拿简历的制作而言,什么该写什么不该写,什么能写什么不能写这些东西自己想一想很简单,但在真正着手的时候经常让人犹豫不决。而网上的信息又太过杂乱,借鉴别人模板式的文书更会让自己害怕因为文书太过相似而对申请的结果大打折扣。
再就是择校方面,很多人可以通过历届与自身条件相似的结果来给自己选校方面的定位。由于本人实在三围不高,网上那些大牛的经验自己实在用不上,而和自己一样三围不高的人也不会好意思把自己的经验给大家分享。在这方面世毕盟确实给了很多实质的帮助,例如哪些排名靠前的学校门槛低,哪些学校的项目门槛低,哪些学校排名靠后却比较好,以及安排一流的native修改PS的英文语句和国外老师模拟面试等,这些信息是靠自己的摸索和网上的信息分享也很难找得到的。
文书方面自己也非常满意,但是因为没有和其它机构比较过,所以不好做出评价。世毕盟留学:www.xiexiebang.com志存高远,与优秀的人为伍,脚踏实地,人生必定辉煌。
但至少比自己周围同学DIY的文书要好很多。
2.时间
自己在申请之前觉得申请主要其实就是文书的制作。但经历过才发现,申请是一个相当漫长而且耗时的事。申请前要先搜集每个学校的网站、了解每个学校的项,再到每个学校网站信息的填写、纸质材料的寄送、GT成绩的寄送、费用的提交。即使是申请结束,还有I-20的申请和面签体检等各个方面。而即便世毕盟把这些全都帮自己完成,有段时间自己也一直在奔波劳碌,很难想象如果没有世毕盟的帮忙自己要在申请上耗费多少时间和精力。
最后
最后想说的是,虽然机构不是万能的,但是说实话没有世毕盟,自己的确不太可能得到这样的申请结果。所以对和我一样自身条件较差的迷惘中的同学来说,世毕盟的确是一个很好的选择。
世毕盟留学:www.xiexiebang.com志存高远,与优秀的人为伍,脚踏实地,人生必定辉煌。