http://wenku.baidu.com/view/237edaa8d1f34693daef3e97.html
posted @
2011-08-15 16:45 雪黛依梦 阅读(1137) |
评论 (1) |
编辑 收藏
全国大学计算机专业排名
中国大学研究生院3个计算机专业(二级学科)排名,即全国大学计算机专业排名如下:
1、计算机系统结构排名 学科代码:081201
排名 校 名 等级 二级学科 一级学科 学科门
1 清华大学 A++ 081201计算机系统结构 081200计算机科学与技术 08工学
2 华中科技大学 A++ 081201计算机系统结构 081200计算机科学与技术 08工学
3 北京大学 A+ 081201计算机系统结构 081200计算机科学与技术 08工学
-
4 东北大学 A 081201计算机系统结构 081200计算机科学与技术 08工学
5 西安交通大学 A 081201计算机系统结构 081200计算机科学与技术 08工学
6 复旦大学 A 081201计算机系统结构 081200计算机科学与技术 08工学
7 中国科学技术大学 A 081201计算机系统结构 081200计算机科学与技术 08工学
8 西安电子科技大学 A 081201计算机系统结构 081200计算机科学与技术 08工学
9 电子科技大学 B+ 081201计算机系统结构 081200计算机科学与技术 08工学
10 吉林大学 B+ 081201计算机系统结构 081200计算机科学与技术 08工学
11 北京航空航天大学 B+ 081201计算机系统结构 081200计算机科学与技术 08工学
12 南京大学 B+ 081201计算机系统结构 081200计算机科学与技术 08工学
13 东南大学 B+ 081201计算机系统结构 081200计算机科学与技术 08工学
14 重庆大学 B+ 081201计算机系统结构 081200计算机科学与技术 08工学
15 武汉大学 B+ 081201计算机系统结构 081200计算机科学与技术 08工学
2、计算机软件与理论排名 学科代码:081202
排名 校 名 等级 二级学科 一级学科 学科门
1 北京大学 A++ 081202计算机软件与理论 081200计算机科学与技术 08工学
2 南京大学 A++ 081202计算机软件与理论 081200计算机科学与技术 08工学
3 清华大学 A++ 081202计算机软件与理论 081200计算机科学与技术 08工学
4 武汉大学 A+ 081202计算机软件与理论 081200计算机科学与技术 08工学
5 复旦大学 A+ 081202计算机软件与理论 081200计算机科学与技术 08工学
6 华中科技大学 A 081202计算机软件与理论 081200计算机科学与技术 08工学
7 中山大学 A 081202计算机软件与理论 081200计算机科学与技术 08工学
8 山东大学 A 081202计算机软件与理论 081200计算机科学与技术 08工学
9 北京航空航天大学 A 081202计算机软件与理论 081200计算机科学与技术 08工学
10 中国科学技术大学 B+ 081202计算机软件与理论 081200计算机科学与技术 08工学
11 西安交通大学 B+ 081202计算机软件与理论 081200计算机科学与技术 08工学
12 吉林大学 B+ 081202计算机软件与理论 081200计算机科学与技术 08工学
13 东北大学 B+ 081202计算机软件与理论 081200计算机科学与技术 08工学
14 西北大学 B+ 081202计算机软件与理论 081200计算机科学与技术 08工学
贵州大学 B 081202计算机软件与理论 081200计算机科学与技术 08工学
山东科技大学 B 081202计算机软件与理论 081200计算机科学与技术 08工学
电子科技大学 B 081202计算机软件与理论 081200计算机科学与技术 08工学
东南大学 B 081202计算机软件与理论 081200计算机科学与技术 08工学
四川大学 B 081202计算机软件与理论 081200计算机科学与技术 08工学
北京理工大学 B 081202计算机软件与理论 081200计算机科学与技术 08工学
重庆大学 B 081202计算机软件与理论 081200计算机科学与技术 08工学
大连理工大学 B 081202计算机软件与理论 081200计算机科学与技术 08工学
北京交通大学 B 081202计算机软件与理论 081200计算机科学与技术 08工学
北京邮电大学 B 081202计算机软件与理论 081200计算机科学与技术 08工学
同济大学 B 081202计算机软件与理论 081200计算机科学与技术 08工学
上海大学 C+ 081202计算机软件与理论 081200计算机科学与技术 08工学
3、计算机应用技术排名 学科代码:081203
排名 校名 等级 二级学科 一级学科 学科门
1 清华大学 A++ 081203计算机应用技术 081200计算机科学与技术 08工学
2 北京大学 A++ 081203计算机应用技术 081200计算机科学与技术 08工学
3 同济大学 A++ 081203计算机应用技术 081200计算机科学与技术 08工学
4 东南大学 A++ 081203计算机应用技术 081200计算机科学与技术 08工学
5 华南理工大学 A++ 081203计算机应用技术 081200计算机科学与技术 08工学
6 西安电子科技大学 A+ 081203计算机应用技术 081200计算机科学与技术 08工学
7 大连理工大学 A+ 081203计算机应用技术 081200计算机科学与技术 08工学
8 南京大学 A+ 081203计算机应用技术 081200计算机科学与技术 08工学
9 南京理工大学 A+ 081203计算机应用技术 081200计算机科学与技术 08工学
10 武汉大学 A+ 081203计算机应用技术 081200计算机科学与技术 08工学
11 东北大学 A+ 081203计算机应用技术 081200计算机科学与技术 08工学
12 北京邮电大学 A 081203计算机应用技术 081200计算机科学与技术 08工学
13 复旦大学 A 081203计算机应用技术 081200计算机科学与技术 08工学
14 北京航空航天大学 A 081203计算机应用技术 081200计算机科学与技术 08工学
15 北京理工大学 A 081203计算机应用技术 081200计算机科学与技术 08工学
16 吉林大学 A 081203计算机应用技术 081200计算机科学与技术 08工学
17 电子科技大学 A 081203计算机应用技术 081200计算机科学与技术 08工学
18 中国科学技术大学 A 081203计算机应用技术 081200计算机科学与技术 08工学
19 北京工业大学 A 081203计算机应用技术 081200计算机科学与技术 08工学
20 南京航空航天大学 A 081203计算机应用技术 081200计算机科学与技术 08工学
21 安徽大学 B+ 081203计算机应用技术 081200计算机科学与技术 08工学
22 哈尔滨工程大学 B+ 081203计算机应用技术 081200计算机科学与技术 08工学
23 四川大学 B+ 081203计算机应用技术 081200计算机科学与技术 08工学
24 天津大学 B+ 081203计算机应用技术 081200计算机科学与技术 08工学
25 南开大学 B+ 081203计算机应用技术 081200计算机科学与技术 08工学
26 北京科技大学 B+ 081203计算机应用技术 081200计算机科学与技术 08工学
27 中南大学 B+ 081203计算机应用技术 081200计算机科学与技术 08工学
28 苏州大学 B+ 081203计算机应用技术 081200计算机科学与技术 08工学
29 重庆大学 B+ 081203计算机应用技术 081200计算机科学与技术 08工学
30 合肥工业大学 B+ 081203计算机应用技术 081200计算机科学与技术 08工学
31 湖南大学 B+ 081203计算机应用技术 081200计算机科学与技术 08工学
32 西安交通大学 B+ 081203计算机应用技术 081200计算机科学与技术 08工学
33 山西大学 B+ 081203计算机应用技术 081200计算机科学与技术 08工学
西南交通大学 B 081203计算机应用技术 081200计算机科学与技术 08工学
华中科技大学 B 081203计算机应用技术 081200计算机科学与技术 08工学
山东大学 B 081203计算机应用技术 081200计算机科学与技术 08工学
中山大学 B 081203计算机应用技术 081200计算机科学与技术 08工学
北京交通大学 B 081203计算机应用技术 081200计算机科学与技术 08工学
中国人民大学 B 081203计算机应用技术 081200计算机科学与技术 08工学
太原理工大学 B 081203计算机应用技术 081200计算机科学与技术 08工学
武汉理工大学 B 081203计算机应用技术 081200计算机科学与技术 08工
posted @
2011-07-26 17:25 雪黛依梦 阅读(2315) |
评论 (0) |
编辑 收藏
posted @
2011-07-26 16:56 雪黛依梦 阅读(257) |
评论 (0) |
编辑 收藏
跨专业考研
跨专业考研
考研是现在大学生或是已经工作的人,为求的自己的完善,或是为了逃避严苛的社会竞争,选择的一种生活和学习方式。 跨专业考研,就是在自己所学专业之外,选择与自己所学专业有关或是无关的非本专业课程,作为研究或是考研目标,进行的研究生考试复习,进行研究生考试的活动。
顾名思义,这个经常出现的词汇中,重要的是
跨专业。
考研是现在大学生或是已经工作的人,为求的自己的完善,或是为了逃避严苛的社会竞争,选择的一种生活和学习方式。
跨专业考研,就是在自己所学专业之外,选择与自己所学专业有关或是无关的非本专业课程,作为研究或是考研目标,进行的研究生考试复习,进行研究生考试的活动。
编辑本段跨专业考研:跨越专业界限,让人生飞跃
在专业选择上,考生往往会面临这样一个问题,就是选择本专业
考研还是跨专业考研?很多考生都无法去冷静权衡这个问题,做出一个自己的选择。尤其是挑战技巧难度都高出一筹的跨专业考研的同学,你们在下决心转弯于人生拐角的时候,希望你们能够了解,跨越专业,其实不仅是改变了学习方向,也是让人生能够有所突破与飞跃,开辟自己新的人生航道。 下面我们将具体谈谈跨专业考研。
跨专业考研的难度
很多同学跨专业考研的时候必须考虑的问题是,跨专业考研的难度。
你在原来大学里所真正感兴趣的东西沉淀了多少基础,你要选择的专业它所在这个学校,每年竞争的难度到底有多大,都是一帮什么样的战士一起和你竞争这个专业,这一点是同学必须考虑的。
在为期一年的复习过程中,如果你去跨专业,而且从冷门跨到热门,或者跨到完全不相干的专业,比如你原来学生物,现在你非要学金融,你原来学医学,现在非要学管理、会计,这样面临的难度比较大,你必须考虑,你所要学习的所有公共课和专业课的知识,完成的学习任务,是不是你目前的基础能够在一年时间里面完成的,这是很现实的,不是光凭热情和勇气就能解决的问题。
我觉得这两个方面,大家必须结合起来去考虑。
给自己定一个目标
给自己定一个目标,而且是明确的目标,通过各种调查方式明确这个目标到底是不是你想要的;很多同学可能不知道怎么检验这一点,我觉得这个检验的方法也很简单。你怎么去确定自己的目标呢?就和谈恋爱一样,如果你们班上有一个女生,或者隔壁班上有一个女生,或者系里面有一个女生,如果达到每天不看她一眼你睡都睡不好觉的程度,这个目标说明你一定确定了,当然很多同学也知道,你看重的可能都是“系花”、“校花”,这就是第二点难度的问题你虽然定了目标,可能人家不一定看得上你,或者你不一定有这样的能力去竞争。
结合自身实际选择专业
选专业也是这样,如果你要跨越这个专业,你所选择是不是你在大学里面,或者你从小就开始向往的专业、方向,如果确实是这样,我觉得这个目标还要去争取,然后再看看这个目标对你来说是不是有很高的难度。我觉得对我们来讲,文经类的专业,只要智商不低于100人的人,只要真正想干,我觉得你一定能够至少学会他,虽然不一定会成为这个行业的顶尖高手。因为那些东西大部分死记硬背就可以解决一定的问题,有些东西靠一点天分。在一些理工类的顶尖专业方面,很多同学学一些数学、物理、化学和生物方面的东西,你的目的是做生物研究,如果在这方面你的智商或者钻研精神不达到一定的深度,这些专业入门都很难,因为它要持续不断地滚动学习。我不是说重理轻文,因为和同学交流的过程中,有一些问题要说清楚,难免强调一下。但是文科学习的特性就是这样的,你可能背一段,不影响你对其他知识点的理解,如果理工科,任何一章学不会,后面的章节根本没有办法进行。
所以,是否跨专业方面,从原理层面,我给大家强调的就是这两个方面,第一你的主观意愿,你的目标到底是什么,第二你所要根据你的意愿选择的目标,它的难度要求到底是不是你能够接受的范围。其实,究竟是跨是守,其实只要跟随心声、跟随意志,跨越自己,相信梦想就能被放飞。
近年来,管理类研究生、法硕、计算机专业、金融学、通信等专业研究生的报考一直是一个热点,连续几年来,这几个专业的研究生也一直居高不下,前前后后排列在历年考研十大热门专业中。
[1]
编辑本段跨专业考研注意事项
编辑本段1.慎重选择:不要轻易下决定
不断地学习不同领域的知识,是所有有求知欲的人们的美好愿望,然而,这同样会成为朝三暮四的借口。
其实,很多考研人本来就存有逃避现实社会的压力,而选择继续呆在学校的心理;而在跨专业考研的人中,更有许多人根本就没有好好学过原来的专业,甚至从没认真考虑过是否自己适合它,只为了逃避,才选个看起来容易的专业去考。
如果是这样,请先停下来想想自己到底想要什么再说。因为一颗对待生活从不认真的心,是不会因为换了个专业就能有起色的。
如果不是这样,那么,也请三思。就因为一直认真,这次更要谨慎。
首先,考研复习将是艰巨的历程。
隔行如隔山——这句古谚将贯穿之后的整个求学过程。
自己原来的专业,再不济也学了三四年,耳濡目染,基础知识一定比没学过的扎实,细节也许没钻研,但大的格局和概念、思维方式是存在于脑海中的,即使是每次考前一个月的突击,突击了四年,也不是没有用的。这就是本专业对于外专业的一大优势。反过来,即是跨专业者相对于本专业者的劣势。
复习的时候,要花更多的时间在专业课上,使得基础课很容易就被搁置了,而任何一科的掉队,都会影响整个复习过程的心态和考试结果。
其次,备考中可能出现意想不到的困难。
不熟悉专业试题的答题惯例,会莫名其妙丢掉不该丢的分。而且,笔试通过了,复试中存在的不确定性因素,使跨专业者总是难以拥有“尽在掌握”的自信,而它确实也是难以“尽在掌握”的。
考上之后学习中的困难
最后,也是最重要的,考上之后三年的研究生生活。
不管是面对基本功扎实的同学们,还是面对有一定要求和标准的导师,还是面对也许让自己一时找不到坐标点的新求学生涯——如何给自己定位,如何重拾自信,如何建立对新专业的“新感情”,如何规划以后的职业和人生,这都是需要付出比别人更多心力去克服的问题。
所以,是否要转变方向,换一个专业,需要尖锐严格地审视自身,而不是盲目跟风,可以考虑以下几点:
是否真正热爱将要为之付出心血的新专业?
长远来看,这个新领域是否有自己的天赋和性格发挥的空间?
是否可以肯定学习三年之后真能丰富完善自己的知识结构,而不是剃头担子两头塌?
最后也是最基本最当前的问题:基础课是否有自身优势?没有优势怎么拨得出更多的时间给专业课的复习?
编辑本段2.审时度势:了解自己,踏实去做
经过了自我的拷问,还坚定地要跨专业考研的朋友——相信你一定是个头脑清醒、梦想坚定的人。
在此,我们不得不再次强调跨专业考研的理由和标准:第一,热爱;第二,基于对自身才智和优势短处进行全面评估而做出的决定;第三,要自信,更要不怕苦不怕累。
可以举个例子。一个在学校并非不认真对待自己学业的考研人,在经过四年的学习之后,发现仍然不喜欢自己所学的数学专业,而爱好文史哲。如果基础课英语政治还不错,那么他就具备了考虑跨专业考研的最低要求。那么,接下来怎么确定专业呢?首先,看爱好。对新闻传播、考古、文学皆有兴趣,怎么办?一个一个排除。对于新闻,多搜集资料,看作为一个新闻工作者需要什么样的素质,比如,敏锐的新闻感、强烈的争取和参与意识、健康的身体。直面自己的优缺点,如果有敏锐的新闻感,却没有强烈的争取和参与意识,甚至都无法面对需要长时间的工作强度,那么放弃。对于考古,作同样评估;另外,如果这时你的父母亲反对你的考古梦想,请把他们的忧虑考虑进去,一意孤行并不可取,要考虑到家庭的实际情况;并且,父母也是了解你的人,他们对你的性格、天分其实很了解。那么如果你认为父母意见的可接受性大过你对于考古的热忱,考古这一项,也被划去。最后剩下文学,如果经过一系列评估,觉得可行,那么它之下还有很多专业细分,是中国文学还是世界、比较文学,是古代文学还是现当代文学?要根据自己平时看书的偏好、积累的多少、考试试题能否应付等等内在和外在的因素来决定。这些将和下一部分联系起来谈。
这只是一个例子,跨专业的方向转变五花八门,几页纸不可能描述详尽,我们只能通过这个例子,了解一下需要考虑和平衡的各方面因素。
当然,请牢记,
内心的热爱和对自己学习能力的自信在选择中最为重要。有了这两点,相信你的选择会是对你而言最好的选择。这将是一个美丽的决定,决定之后,一定有云开见日的感觉。方向确定了,就朝着那儿毫不回头地走吧。
编辑本段3.报考准备:眼观六路,耳听八方
第一,细分专业和学校,确定报考目标。
一定要看自己喜欢哪个城市,既然想借助这次的考研改变现状开始一段新的求学历程,一直想去哪个(或哪些)城市念书就不要将就。圈出大致范围,再找到那里学校的招生简章、专业招生表——网上查找或动用一切关系。特别要注意的是,你有意向的专业是否拒绝跨专业考生。在进行认真细致的对比之下确定两到三个你想去的名校和你喜欢的专业。这一步可以和前面确定城市同时进行,每个人情况不同,自行制定每一步适合自己的计划是必要的,而且能从中得到极大的充实感,总之,它让我们感到:一切都在自己的控制之下。
然后,尽可能地多找一些这几个可选学校可选专业的历年试题,仔细研究,看看哪一类的试题自己更有把握。这一步至关重要,这一步不可省略也不可推后,它将直接影响到以后的考试发挥。经过这一步,学校和细分专业几乎都能定下来了。
这一阶段什么时候进行呢?越早越好。我们不提倡把战线拉得太长,真正有效的复习从4月到次年1月足矣;然而跨专业不同,需要“酝酿”。可以不用过早开始真正的复习,但至少要比别人早两个月到半年开始寻找学校、涉猎与新专业相关的期刊、书籍、寻找对于新专业的亲近感和对于新学校新未来的向往感——这是真正复习开始的前站,用这段时间弥补跨专业的不足,在真正的战役打响时,我们将更加坚定更有信心。
第二,专业课教材到位。
前面把工作真正做到细致,4月份到5月份一定要定下最终要考的学校和专业。定下之后,就要相信自己的判断,不要犹疑,快去买专业课教材!按照学校列出的书目买全专业课教材,还要找出一两个能帮上忙师兄师姐、找同学、找亲戚,甚至找网友去打听没有列出的那些。
这里有两个问题:买书和找师兄师姐——自己能买到的书,尽量自己去买,有学校可以邮购,有书店可以搜寻,再不行,去图书馆系统或网上找出这本书的出版社,找到出版社电话,打电话、汇款去邮购。不要一开始就事事麻烦别人,自己能解决的自己找渠道解决。后面有更重要的事去麻烦他们。实在不行了,去找师兄师姐,最重要的是问题要明确。随便说:“我要考你们学校某专业,请帮助我”是没用的。要明确说出你的具体问题,要考哪些书,重点看哪些泛读看哪些,打听到哪里能买到自己却没办法,请他们帮忙——听到这么明确的问题,人人都会乐意帮忙。6月底之前,主要的专业课教材一定要到位。
第三,复习时要注意的问题。
首先,基础课不能偏废。前面说了
,基础课要有一定把握,才可能跨专业考研,否则到关键时刻就会感到分身乏术。在主攻专业课时,基础课一天都不能停。可以用早晨、吃午饭前、吃晚饭前以及睡觉前的时间去复习英语:阅读、单词、听力,一个都不能少。如果每天坚持,就是这些边边角角的时间都足够英语的复习准备。政治也一样,最好报一个秋季班,几个月上下来,有老师领着复习,比自己摸索更有效率,大致的知识脉络也会清晰起来了。请相信自己,从初中就开始学的这门课,不会差到哪里去,但也要在心里培养对它的兴趣,一讨厌它、搁置一段日子,一切都晚了;反过来,每天花两个小时,只要坚持,就会既轻松又有成就感。
跨专业考生往往把一腔热情放在专业课上,有意无意地就偏废了基础课,等发觉时间紧迫的时候,回头一看基础课落下一大截,这会大大影响后面冲刺和考试的信心。
其次,专业课复习。11月份报名之前一定要把专业书踏踏实实至少细读一遍。这一遍不要欺骗自己,质量至上,一定要全部弄通弄懂。这样在后面的两个月才会更有底。
笔记一定要做。当11月报名时间来临时,你会发现越来越多的人们讨论起复习进度。那时候本专业考生和别的跨专业考生所做的准备和进度会让你大惊失色——有那么多人准备得那么好!本来就对不熟悉的专业容易产生的“心虚”这个时候会更加强烈,那么回过头总结一下自己的成果,只有实实在在密密麻麻的几本笔记会成为自己的强心剂,数数看,几本笔记,七八万字是少不了的。加上政治英语,你会为自己所做的上10万字的笔记而惊讶的。这是积聚信心、抬头挺胸的重要来源。
编辑本段4.全力复习:坚持到底,毫不畏惧
首先,研究历年试题,自己划重点。
历年试题非常非常重要,报名之前即11月初,一定要把学校相关专业的历年试题弄到手。这需要积极调动网络资源,自己能下载的下载,能买到的去买,最后一招:求助师兄师姐。这时提出的请求也一样要尽可能明确。有一个女生,考某大学某专业,通过同学的同学的姐姐,找到一位师姐,打电话给她:“我知道你们学校图书馆五楼的阅览室有历年试题的专柜,可以借出来复印。请帮忙复印某年到某年某专业的……”该师姐大惊:“我都不知道有这样一个地方,你怎么知道的?”这个女生慢慢说来,怎么从网上找到该学校专栏讨论、怎么了解到的,师姐大开眼界,兴趣高涨,帮她把相关专业能找到的试题全都复印一通寄去。
接下来就是更仔细地研究试题。只需要一个晚上时间,把历年试题全都摆在桌面,总结规律和重点难点,老师出题的习惯等等。借此可以划出下一步复习的重点(甚至是考试的重点),不再一律通读,而是有头脑的、有目标的复习。不要怕系内老师改朝换代,再改也有一脉相承的科研风格,掌握了大体,以不变应万变。
划完重点,一股“运筹帷幄”的气势油然而生,趁着这股气势,投入到更深入的复习中去,一定事半功倍。
其次,为考试做准备,掌握专业答题习惯。
在剩下的两个月当中,一定要找点时间去学校的自己要考的专业宿舍混混,目的是了解专业答题有什么惯例、有什么特殊要求和需要注意的地方。随便哪个学校都行,自己方便找的、正规的大学就可以;当然,方便的话,最佳选择就是所考学校研一同专业学生宿舍,这样就不仅了解试题情况,还可以挖掘更多这两个月应该注意的问题。
考试的时候,和复习中所强调的一样——一定要自信。要相信自己经过了周密的计划、万全的准备。拿到试卷的时候,要像热爱专业书籍一样热爱它们,冷静的头脑,热情的心灵,一定战无不胜。
总结
最后,就是复试了。关于导师是否要找,各有各的说法,能找到最好,没找过的也不用惴惴不安。相信自己最重要。
其实接到复试通知书的时候,一般都没有更多时间去扩展知识面了,这些是最初就应该做的。这时候跨专业考生常常担心自己的基础不够,再次心虚。那么与其瞎抓一把,不如把以前看过的书拿出来再翻一遍,总有用得上的,做生不如做熟。对于某些领域的熟悉或精通,比泛泛而谈更能显出自己的特色。用真诚的微笑和哪怕是使劲鼓才能鼓起的信心和勇气,去直面导师。好歹经过这一年的学习,我们也算复合型人才了,怕什么!
说到这里,整个过程看起来完了——其实没有!拿到录取通知书的时候,是一个开始。
进入研究生阶段的学习,是一个更自主、更专业的学习过程,跨专业学生一踏入这片天地,肯定会受到冲击。不熟悉的领域,老师觉得应该是常识自己却闻所未闻的知识,难以找到的新生活定位……这些都要有心理准备。建议在5月到8月这段天堂般的生活中也不要忘记看看与专业相关的书籍(并非专业课本),继续打基础,进入研究生生活根本没有时间给你去打基础。
总之,对于勇敢的跨专业考研人,继续用韧性和信心,在开学前调养好身心,并不放弃不断学习的好习惯,为进入一个新的求学生涯做好准备,都是必要的。相信这样贯穿始终的准备,一定会迎来新的局面,实现挑战人生充实自己的梦想。对生活认真,生活也会认真地回报你。要相信,要坚持。
综上所述,跨专业考研,需要勇气、需要毅力、更需要技巧,只要坚持,就有收获!
跨专业考研的辅导机构
跨考教育是目前唯一专注于研究跨校、跨专业考研、专业硕士的服务机构,跨考教育已成为国内领先的考研、MBA权威辅导机构。
posted @
2011-07-26 15:34 雪黛依梦 阅读(252) |
评论 (0) |
编辑 收藏
计算机专业就业方向一、 关于企业计算方向企业计算(Enterprise Computing)是稍时髦较好听的名词,主要是 指企业信息系统,如ERP软件(企业资源规划)、CRM软件(客户关系管理)、SCM软件(供 应链管理,即物流软件),银行证券软件,财务软件,电子商务/政务(包括各种网站),数 据仓库,数据挖掘,商务智能等企业信息管理系统.企业计算领域对人才的需求显然永远是数量最大的,因为这是计算机应用最多的领域. 搞这 方面的好处是:(1)人才需求量极大,从事企业计算的公司在IT企业中占了大多数。除非在专业上一无特长 ,一般在这一领域总能找到工作。 (2)这方面的入门门槛相对较低(如果你的软件功底不是很深,可考虑这一领域) (3)这方面的大公司较多,大公司要赚大钱,所以多将精力花在企业计算业务上.如果将来想 到大公司找一份相对稳定的工作,从事这方面机会要大很多。 但从事这一领域的缺点也是明显的: 由于这方面的入门门槛相对较低,虽然这方面的人才需求量是最大的,但将来竞争对手会 较多。您会发现,即使他原不是学IT专业的人,也许他突击几个月后,做得照样像模像样 。特别是当您年纪渐大后,您可能会发现,后面的年轻人可能很容易追上你的水平。如果 您将来到国外去工作,你可能会发现从事这领域的人更多且高手如云。当然,若您在这一 领域经过多年企业经验,达到较高境界(如能设计软件架构),则身价永远是高的。国内 在这方面人才领域的主要问题是,有经验的高手太少,皮毛了解的人太多。 从事企业计算领域,最重要的技能型技术课程是 (1)J2EE架构与程序设计 (2)大型数据库系统(如Oracle)(3)基于UML的系统分析与设计。 如果说还有什么重要的技能,还可将XML与Web Service技术包含进来,若您在这几个领域 掌握较好,则不愁找不到工作。 其中尤其以J2EE最为重要,目前J2EE已成为企业计算软件开发的最主要平台。希望同学无 论将来想从事何种方向,都应学一下J2EE课程,至少可为将来找工作备一手关键功夫。包 括想从事嵌入式或其它领域的同学,也是很有必要学一下J2EE的,毕竟J2EE是目前最重要 的平台之一,即使您将来不想从事企业计算领域,了解一下J2EE也是必要的,就像一门常 识课程一样。 其它与企业计算关系较密切的技能还包括:Dot Net架构与程序设计、软件测试技术、软件 配置管理,该领域较高层次的技能包括数据仓库技术、构件与中间件技术、设计模式等。 像通信协议分析与网络程序设计,Unix系统管理等也属有些关系的课程。 只一个J2EE便是博大精深的,足够你啃下去的,钻研下去,您会发现你还要学的相关知识 还有很多(包括EJB、XML、Web Service、Design Pattern等)。 虽然从事企业计算的人才很多,但以下企业计算领域无论国内外都属稀缺人才: (1)掌握大型ERP系统,主要是SAP系统,包括SAP Basis(系统管理)或SAP ABAP(编程) 或SAP功能模块实施(特别是财务模块FI的实施)。 SAP顾问身价是最高的,而且非常难找。其它大型ERP系统,掌握 PeopleSoft、Oracle Finacial、J.D.Edward、Siebel等大型ERP软件系统的人也很值钱。这方面的人之所以身价奇 高,主要是因为这些软件很专业,特别大,很难有D版可学习,只有特大企业(如世界500强,90%以上使用SAP)才用得起,而且必须有实际工作经验才能掌握。如果是一个个人人 都很容易有机会接触的软件,那么这方面的人通常就不会稀缺。如果大家将来有机会接触 学习这些大型ERP软件系统的机会,建议毫不犹豫地抓住,那将捧上一辈的金饭碗。在国外 ,会SAP的人特别值钱。物以稀为贵,这永远是颠扑不破的真理。SAP的价值不仅是因为他 是一个ERP软件,而是其中体现的现代企业管理理念(如根据订货需求自动安排原料采购和 生产计划等)。一般500强公司绝不会像国内很多企业那样,用J2EE从头设计企业的 ERP系 统(即将是怎样的人力投入,而且设计出来的系统怎么可能是完善的?),一定都会使用 SAP这样成熟的ERP软件。用不起SAP的公司可能会用 J2EE设计ERP系统。 (2)掌握IBM大型机技术的人,如S/390主机,MVS操作系统,JCL作业控制语言,COBOL程 序设计语言,DB2关系数据库或IMS层次数据库,CISC中间件交易控制系统等IBM大型机专用 技术。 国内五大银行,以及国外绝大多数银行的后台系统使用的都是以上平台。IBM大型机号称永 不宕机而且平台相对封闭(这样最安全),所以这些要求在24*7环境中连续运行的关键应 用(术语叫mission critical applications)都采用IBM大型机。这方面的人才之所以稀缺 ,是因为会大型机的人都是老人(90年代以前搞IT的人),全世界新毕业的IT毕业生不可 能再去学IBM大型机(这是一种相对"古老"的技术),没有新人补上,而银行的系统必须维持 下去而且银行还要不断开发新业务(如新的存款品种), 虽然对IBM大型机人才的绝对需求量 不很大,但相对恒定,银行到哪里找这方面的新人,很难找到. 若好找,花旗软件也不会花那 么大的代价去培训我们的实习同学了(去年培训20多个人,听说公司就花了数十万元培训费 ). 如果您将来到国外找工作,会IBM大型机可能是最好找工作的领域之一了,而且保证找的 都是大银行等好工作,我以前教过的计算机专业90-94级的一些同学,凡是毕业后从事大型机 开发的,现多在国外一些很好的公司工作(有几位同学在各国各公司跳来跳去,简直如履平地 ). 其实我觉得我们最幸福的同学就是在花旗软件做IBM大型机银行软件的同学,这样的机会 太难得了.我院00级2+2班一位同学,当初放弃保研,看准在花旗软件做大型机并且非常努力 ,还未毕业,公司便派她到国外参加一个项目的开发,成了项目骨干,我觉得她当初选择是完全 正确的。读书的最终目地还是为了工作. 如果您将来在国外找工作,根本没人管您是什么文 凭,国外企业绝不会花冤枉钱,只会招有领域工作经验能立即上手的人,用最少的钱在限定的 时间完成项目. 而在国内,因为人力成本较低,公司招聘一很多高学历的人才,尽管可能根本 用不到这么高的学历,但国内的人力太便宜了,为什么不高消费一下人才呢?这样公司的门面 还要好看些。 .(3)其它如掌握数据仓库技术的人在国内也很少. 目前最主流的数据仓库平台应是ORACLE的数据仓库工具. 在国外,会一些特殊数据仓库的人,如NCR/TEREDATA的人非常难找.同学现在年纪都很轻,年轻人充满热情,喜欢追逐一些热门技术,这当然正确的,毕竟学习SAP和大型机的机会毕竟不多,毕业时先能找到一份工作是重要的. 但我相信随着年纪的增长 ,大家将来慢慢都会思考的,掌握一项竞争对手较少的绝技的重要性,将来如果自己到国外工 作什么技术最好找工作(对搞软件的人到国外工作或移民是最容易的,也许您现在不想,但我 相信工作多年以后,很大一部分同学可能想到国外闯荡一下),你要考虑你今后一生的出路,什么样的绝技是最稳定最轻松最高收入的. 搞软件的人,当年纪大些时,您可能更向住像搞 医学人的那样能更多靠经验吃饭,而不须整天像年轻人那样不得不去追逐不断出现的软件新 技术,这个时候也许您也许会发现,如果您在SAP或大型机等方面有些绝技,您会有很大优势 ,因为这些较偏的领域其技术变化是相对很缓慢的.我还记得在2000年时我曾在业余时间与一位德国人合作面试一些IT人才到德国去,那时德方 各公司发来的需求有很多是SAP和IBM大型机的,我们在众多应聘者中最后也未找到一个在这 方面有经验,甚至是有一点经验的. 相反,掌握流行技术的人因太多而不很值钱. 我们的同学将来找工作时,不仅要盯着国内市场,还要有一种放眼全球的眼光,对搞软件的 人您将来完全可能到其它国家去工作. 尤其是在欧美、日本、新加坡等国家,对SAP(包括 IBM大型机)人才的需求是很大的。毕竟比同学见得多些,提醒同学将来多留意有学习这些 绝技的机会,一旦有机会建议当仁不让. 国内的人才市场可访问www.51job.com,国外的IT人才需求可访问www.hotjobs.com、www.workopolis.com、 www.monster.com等著名网站。 应经常访问这些网站,以了解市场对人才的具体需求,早做准备。 以上对企业计算领域的观点,供大家参考.虽然观点未必正确,但确是直言不讳. 总之,每个 人的脑袋都长在自己脖子上,每个人都应有自己的判断.二、关于嵌入式系统方向 (帮炊饼宣传,记得请我吃饭啊)嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定 专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很 敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。像 我们平常常见到的手机、PDA、电子字典、可视电话、 VCD/DVD/MP3 Player、数字相机( DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能 玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航 空设备等等都是典型的嵌入式系统。 嵌入式系统是软硬结合的东西,搞嵌入式开发的人有两类。 一类是学电子工程、通信工程等偏硬件专业出身的人,他们主要是搞硬件设计,有时要开 发一些与硬件关系最密切的最底层软件,如BootLoader、 Board Support Package(像PC的 BIOS一样,往下驱动硬件,往上支持操作系统),最初级的硬件驱动程序等。他们的优势 是对硬件原理非常清楚,不足是他们更擅长定义各种硬件接口,但对复杂软件系统往往力 不从心(例如嵌入式操作系统原理和复杂应用软件等)。 另一类是学软件、计算机专业出身的人,主要从事嵌入式操作系统和应用软件的开发。如 果我们学软件的人对硬件原理和接口有较好的掌握,我们完全也可写BSP 和硬件驱动程序 。嵌入式硬件设计完后,各种功能就全靠软件来实现了,嵌入式设备的增值很大程度上取 决于嵌入式软件,这占了嵌入式系统的最主要工作(目前有很多公司将硬件设计包给了专 门的硬件公司,稍复杂的硬件都交给台湾或国外公司设计,国内的硬件设计力量很弱,很 多嵌入式公司自己只负责开发软件,因为公司都知道,嵌入式产品的差异很大程度在软件 上,在软件方面是最有"花头"可做的),所以我们搞软件的人完全不用担心我们在嵌入式 市场上的用武之地,越是智能设备越是复杂系统,软件越起关键作用,而且这是目前的趋 势。 从事嵌入式软件开发的好处是: (1)目前国内外这方面的人都很稀缺。一方面,是因为这一领域入门门槛较高,不仅要懂 较底层软件(例如操作系统级、驱动程序级软件),对软件专业水平要求较高(嵌入式系 统对软件设计的时间和空间效率要求较高),而且必须懂得硬件的工作原理,所以非专业 IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,很多软硬件 技术出现时间不长或正在出现(如ARM处理器、嵌入式操作系统、MPEG技术、无线通信协议 等),掌握这些新技术的人当然很找。嵌入式人才稀缺,身价自然就高,越有经验价格就 越高。其实嵌入式人才稀少,根本原因可能是大多数人无条件接触,这需要相应的嵌入式开 发板和软件,另外需要有经验的人进行指导开发流程。 (2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低) 。搞企业应用软件的IT企业,这个用户的系统搞完了,又得去搞下一个用户的,而且每个 用户的需求和完成时间都得按客户要求改变,往往疲于奔命,重复劳动。相比而言,搞嵌 入式系统的公司,都有自己的产品计划,按自己的节奏行事。所开发的产品通常是通用的 ,不会因客户的不同而修改。一个产品型号开发完了,往往有较长一段空闲时间(或只是 对软件进行一些小修补),有时间进行充电和休整。另外,从事嵌入式软件的每个人工作 范围相对狭窄,所涉及的专业技术范围就是那些(ARM、RTOS、MPEG、802.11等),时间长 了这些东西会越搞越有经验,卖卖老本,几句指导也够让那些初入道者琢磨半年的。若搞 应用软件,可能下一个客户要换成一个完全不同的软件开发平台,那就苦了。 (3)哪天若想创业,搞自已的产品,那么嵌入式是一个不错的主意,这可不像应用软件那 样容易被盗版。土木学院有一个叫启明星的公司开发出一个好象叫“工程e”的掌上PDA( 南校区门口有广告),施工技术人员用该PDA可当场进行土木概预算和其它土木计算,据说 销路特好。我认识的某大学老师,他开发的饭馆用的点菜 PDA(WinCE平台,可无线连网和 上网),据他说销路不错,饭馆点点PDA让客户点菜,多显派头档次。我记得00级2+2班当 年有一组同学在学 Windows程序设计课程时用VC++设计了一个功能很强的点菜系统做为课 程项目,当时真想建议他们将这个软件做成PDA,估计会有些销路(上海火车站南广场的Macdonald便使用很漂亮的PDA给用户点食品,像摸像样的)。这些PDA的硬件设计一般都是 请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自 己的产品了。 从事嵌入式软件开发的缺点是: (1) 入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作 系统级软件功底不深,则可能不适于此行。 (2)这方面的企业数量要远少于企业计算类企业。特别是从事嵌入式的小企业数量较多( 小企业要搞自己的产品创业),知名大公司较少(搞嵌入式的大公司主要有 Intel、Motorola、TI、Philip、Samsung、Sony、Futjtum、Bell-Alcatel、意法半导体、 Microtek、 研华、华为、中兴通信、上广电等制造类企业)。这些企业的习惯思维方式是到电子、通 信等偏硬专业找人。由于我院以前毕业生以企业计算为主,所以我院与这些企业联系相对 较少。 (3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司 也并无此要求,只要有经验即可。 我院同学若学习嵌入式,显然应偏重于嵌入式软件,特别是嵌入式操作系统方面,应是我 们的强项。对于搞嵌入式软件的人,最重要的技术显然是(实际上很多公司的招聘广告上 就是这样写的): (1) 掌握主流嵌入式微处理器的结构与原理 (2) 必须掌握一个嵌入式操作系统 (3) 必须熟悉嵌入式软件开发流程并至少做过一个嵌入式软件项目。 在嵌入式软件方面最重要的课程包括: (1)嵌入式微处理器结构与应用:这是一门嵌入式硬件基础课程,我院用这门课取代了传 统的“微机原理与接口”课程(目前国内已有少部分高校IT专业这样做了,因为讲x86微机 原理与接口很难找到实际用处,只为教学而已)。我们说过,嵌入式是软硬件结合的技术 ,搞嵌入式软件的人应对ARM处理器工作原理和接口技术有充分了解,包括ARM的汇编指令 系统。若不了解处理器原理,怎么能控制硬件工作,怎么能写出节省内存又运行高速的最 优代码(嵌入式软件设计特别讲究时空效率),怎么能写出驱动程序(驱动程序都是与硬 件打交道的)?很多公司招聘嵌入式软件人员时都要求熟悉ARM处理器,将来若同学到公司 中从事嵌入式软件开发,公司都会给你一本该设备的硬件规格说明书 (xxx Specification),您必须能看懂其中的内存分布和端口使用等最基本的说明(就像x86汇编一样),否则 怎么设计软件。有些同学觉得嵌入式处理器课程较枯燥,这主要是硬件课程都较抽象的原 因,等我们的嵌入式实验室10月份建好后,您做了一些实验后就会觉得看得见摸得着。还 有同学对ARM汇编不感兴趣,以为嵌入式开发用C语言就足够了。其实不应仅是将汇编语言 当成一个程序设计语言,学汇编主要是为了掌握处理器工作原理的。一个不熟悉汇编语言 的人,怎么能在该处理器写出最优的C语言代码。在嵌入式开发的一些关键部分,有时还必须写 汇编,如Bootloader等(可能还包括BSP)。特别是在对速度有极高要求的场合(如DSP处 理器的高速图像采集和图像解压缩),目前主要还要靠汇编写程序(我看到过很多公司是 这样做的)。当您在一个嵌入式公司工作时,在查看描述原理的手册时,可能很多都是用 汇编描述的(我就遇到过),这是因为很多硬件设计人员只会写或者喜欢用汇编描述,此 时您就必须看懂汇编程序,否则软硬件人员可能就无法交流。很多嵌入式职位招聘时都要 求熟悉汇编。 [小知识] 目前嵌入式处理器常见的有ARM、PowerPC、MIPS、Motorola 68K、ColdFire(冷 火)等,但ARM占据了绝对主流(资料说手机中几乎100%都是ARM处理器)。ARM是一个只卖 知识产权的公司,目前获得购买了ARM CPU核授权许可的大公司很多,包括Intel、Samsung、Amstel、Motorola、Philip等,他们都在ARM CPU核的基础上进行了一些外围扩展,形 成自己的处理器(如Samsung S 3C 2410,Motorola i.MXL9328等处理器都是采用ARM 9内 核,指令一级是相同的)。而众多中小公司又购买了这些处理器,设计了各种各样的开发 板,如华恒等国内很多著名嵌入式公司都生产基于Samsung S 3C 2410的开发板,供最终用 户使用或供教学实验。在ARM这个食物链上,ARM公司是大鱼,Intel、Samsung等公司是小 鱼,而华恒等则是虾米,最终用户(想我们要采购嵌入式开发板的实验室)则是喂虾米的 。Intel早期生产的是低端ARM(Strong ARM,相当于ARM 7),现在转向主要生产高端ARM(即 Intel Xscale处理器,相当于ARM 10,主要用在高端PDA上,如HP和DELL生产的PDA都采用Intel Xscale,价格较高)。目前应用最多的是ARM 7和ARM 9两类处理器。 ARM 7较便宜,可 跑uclinux(是一个不支持高级内存管理功能的嵌入式Linux系统)、Vxworks、uc/os II等 实时操作系统,但因处理器不带内存管理单元MMU(无内存分页和地址映射机制,所以不能使用虚 拟内存),所以不能跑Windows CE,另外通用Linux中的某些内存管理功能也不能用在ARM7上。ARM 9是一个带MMU功能的高端处理器,可跑WinCE或通用Linux的大多数功能。以上 是我的一点了解,可能有不对的地方。我们学院正在建设的嵌入式实验室(10月底到货) 包括30套ARM 7系统(拟采用Samsung S 3C 44b0x开发板,主要用于嵌入式处理器结构、嵌 入式linux课程实验),10套ARM 9系统(拟采用Samsung S 3C 2410x开发板,主要用于Windows CE课程建设),每套实验板都配了高速仿真器,价格都很贵(比我们招标的DELL PC还贵),很容易损坏,同学应爱护使用。 (2) 嵌入式操作系统类课程 除了WinCE的实时性稍差外,大多数嵌入式操作系统的实时性都很强,所以也可称为实时操 作系统Real Time Operating System.从事嵌入式的人至少须掌握一个嵌入式操作系统(当 然掌握两个更好),这在嵌入式的所有技术中是最为关键的了。 目前最重要的RTOS主要包括: 第一类、传统的经典RTOS:最主要的便是Vxworks操作系统,以及其Tornado开发平台。Vxworks因出现稍早,实时性很强(据说可在 1ms内响应外部事件请求),并且内核可极微( 据说最小可8K),可靠性较高等,所以在北美,Vxworks占据了嵌入式系统的多半疆山。特 别是在通信设备等实时性要求较高的系统中,几乎非Vxworks莫属。Vxworks的很多概念和 技术都和Linux很类似,主要是C语言开发。像Bell- alcatel、Lucent、华为等通信企业在 开发产品时,Vxworks用得很多。但Vxworks因价格很高,所以一些小公司或小产品中往往 用不起。目前很多公司都在往嵌入式Linux转(听说华为目前正在这样转)。但无论如何, Vxworks在一段长时间内仍是不可动摇的。与Vxworks类似的稍有名的实时操作系统还有pSOS、QNX、Nucleus等RTOS。 第二类、嵌入式Linux操作系统:Linux的前途除作为服务器操作系统外,最成功的便是在 嵌入式领域的应用,原因当然是免费、开源、支持软件多、呼拥者众,这样嵌入式产品成 本会低。Linux本身不是一个为嵌入式设计的操作系统,不是微内核的,并且实时性不强。 目前应用在嵌入式领域的Linux系统主要有两类:一类是专为嵌入式设计的已被裁减过的Linux系统,最常用的是uClinux(不带MMU功能),目前占较大应用份额,可在ARM7上跑; 另一类是跑在ARM 9上的,一般是将Linux 2.4.18 内核移植在其上,可使用更多的Linux功 能(当然uClinux更可跑在ARM 9上)。很多人预测,嵌入式Linux预计将占嵌入式操作系统 的50%以上份额,非常重要。缺点是熟悉Linux的人太少,开发难度稍大。另外,目前我们 能发现很多教材和很多大学都以ucOS/II为教学用实时操作系统,这主要是由于ucOS/II较 简单,且开源,非常适合入门者学习实时操作系统原理,但由于ucOS/II功能有限,实用用 得较少,所以我院不将其作为教学重点,要学习就应学直接实用的,比如 uClinux就很实 用。况且熟悉了Linux开发,不仅在嵌入式领域有用,对开发Linux应用软件,对加深操作 系统的认识也有帮助,可谓一举多得。据我所知,目前Intel、Philip都在大搞ARM+LINUX的嵌入式开发,Fujitum则是在自己的处理器上大搞Linux开发。目前在嵌入式 Linux领域,以下 几个方面的人特别难找,一是能将Linux移植到某个新型号的开发版上;二是能写Linux驱 动程序的人;三是熟悉Linux内核裁减和优化的人。我院在该嵌入式Linux方面的课程系列 是:本科生操作系统必修课,然后是Linux程序设计选修课,最后是嵌入式Linux系统选修 课。我院在Linux方面目前已有较强力量, 魏 老 师和张 老师熟悉Linux开发, 金 老 师 和唐 老师熟悉Linux系统管理。 第三类、 Windows CE嵌入式操作系统:Microsoft也看准了嵌入式的巨大市场,MS永远是 最厉害的,WinCE出来只有几年时间,但目前已占据了很大市场份额,特别是在PDA、手机 、显示仪表等界面要求较高或者要求快速开发的场合,WinCE目前已很流行(据说有一家卖 工控机的公司板子卖得太好,以至来不及为客户裁减WinCE)。WinCE目前主要为4.2版(.NET),开发平台主要为WinCE Platform Builder,有时也用EVC环境开发一些较上层的应用 ,由于WinCE开发都是大家熟悉的VC++环境,所以我院学过Windows程序设计课程的同学都 不会有多大难度,这也是WinCE容易被人们接受的原因,开发环境方便快速,微软的强大技 术支持,WinCE开发难度远低于嵌入式Linux。对于急于完成,不想拿嵌入式Linux冒险的开 发场合,WinCE是最合适了(找嵌入式Linux的人可没那么好找的),毕竟公司不能像学生 学习那样试试看,保证开发成功更重要。根据不同的侧重点,WinCE还有两个特殊版本,一 个是MS PocketPC操作系统专用于PDA上(掌上电脑),另一个是MS SmartPhone操作系统用 于智能手机上(带PDA功能的手机),两者也都属于WinCE平台。在PDA和手机市场上,除WinCE外,著名的PDA 嵌入式操作系统还有Palm OS(因出现很早,很有名)、Symbian等, 但在WinCE的强劲冲击下,Palm和Symbian来日还能有多长?我院可能是全国高校中唯一一家开 设专门的"Windows CE嵌入式操作系统"课程的学校,这主要是基于以下原因:我院本身前 面便有Windows程序设计课程,同学学过VC++后再学WinCE,非常方便自然,通过学习WinCE同样也可了解嵌入式软件的一般开发过程,对Linux有惧怕心理的同学也很合适。很显然, 嵌入式Linux永远不可能替代 WinCE,而且将来谁占份额大还很难讲,毕竟很多人更愿意接 受MS的平台,就像各国政府都在大力推LINUX已好长时间,但您能看到几个在PC机上真正使 用LINUX的用户?据我观察,目前在嵌入式平台上,LINUX是叫得最响,但还是WinCE实际用得 更多.嵌入式LINUX可能更多地是一些有长远产品计划的公司,为降低成本而进行长远考虑;二是微软亚洲研究院对我院WinCE课程的支持计划,我们也很希望将来我院能有同学通过 微软的面试去实习。WinCE和多媒体(如MPEG技术)是微软亚洲工程院目前做得较多的项目领 域之一,他们很需要精通WinCE的人。 总结关于嵌入式操作系统类课程,若您觉得自己功底较深且能钻研下去,则可去学嵌入式 Linux;若您觉得自己VC++功底较好且想短平快地学嵌入式开发,则我院的WinCE课程是最 好的选择。 (3) 嵌入式开发的其它相关软件课程 搞嵌入式若能熟悉嵌入式应用的一些主要领域,这样的人更受企业欢迎。主要的相关领域 包括: A、数字图像压缩技术:这是嵌入式最重要最热门的应用领域之一,主要是应掌握MPEG编解 码算法和技术,如DVD、MP3、PDA、高精电视、机顶盒等都涉及MPEG高速解码问题。为此, 我院已预订了一位能开设数字图像处理课程的博士。 B、通信协议及编程技术:这包括传统的TCP/IP协议和热门的无线通信协议。首先,大多数 嵌入式设备都要连入局域网或Internet,所以首先应掌握 TCP/IP协议及其编程,这是需首 要掌握的基本技术;其次,无线通信是目前的大趋势,所以掌握无线通信协议及编程也是 是很重要的。无结通信协议包括无线局域网通信协议802.11系列,Bluetooth,以及移动通 信(如GPRS、GSM、CDMA等)。 C、网络与信息安全技术:如加密技术,数字证书CA等。 D、DSP技术:DSP是Digital Signal Process数字信号处理的意思,DSP处理器通过硬件实 现数字信号处理算法,如高速数据采集、压缩、解压缩、通信等。数字信号处理是电子、 通信等硬件专业的课程,对于搞软件的人若能了解一下最好。目前DSP人才较缺。如果有信 号与系统、数字信号处理等课程基础,对于学习MPEG编解码原理会有很大帮助。 (4)嵌入式开发的相关硬件基础 对于软件工程专业的学生,从事嵌入式软件开发,像数字电路、计算机组成原理、嵌入式 微处理器结构等硬件课程是较重要的。另外,汇编语言、C/C++、数据结构和算法、特别是 操作系统等软件基础课也是十分重要的。我们的主要目地是能看懂硬件工作原理,但重点 应是在嵌入式软件,特别操作系统级软件,那将是我们的优势。 我们的研究生里有些是学电子、通信类专业过来的,有较好的模拟电路和单片机基础,学 嵌入式非常合适。嵌入式本身就是从单片机发展过来的,只是单片机不带 OS,而现在很多 嵌入式应用越来越复杂,以至不得不引入嵌入式操作系统。另外,为追求更高速的信号处 理速度,现在在一些速度要求较高的场合,有不少公司是将一些DSP算法,如MPEG压缩解压 缩算法等用硬件来实现,这就涉及到HDL数字电路设计技术及其FPGA/IP核实现技术,这方 面的人目前市场上也很缺。 (5) 题外话 另外,能写驱动程序的人目前是非常紧缺的(驱动程序也可归于嵌入式范畴),包括桌面 Windows中的DDK开发环境和WDM驱动程序。公司每时每刻都要推出新产品,每一个新产品出 来了,要能被操作系统所使用,是必须写驱动程序的。写驱动程序就必须掌握操作系统(如 Windows或Linux)的内部工作原理,还涉及到少量硬件知识,难度较大,所以这方面的人很 难找。想成为高手的同学,也可从驱动程序方面获得突破。我可说一下自己的经历,三年 前我曾短暂地在一家公司写过WinCE驱动程序(正是因为知道这方面的人紧缺,所以才要做 这方面的事),尽管那以前从未做过驱动程序,应聘那个职位时正是看准了公司是很难招 聘到这方面的人,既然都找不到人,驱动还得有人做,这正是可能有机会切入这一领域的 大好机会。面试时大讲自己写过多少万行汇编程序,对计算机工作原理如何清楚,简历中 又写着我曾阅读完两本关于Windows Driver Model的两本英文原版书,写过几个小型的驱 动程序练习程序(其实根本没写过,我们的同学将来千万不要像我这样,早练就些过硬功 夫,就不至于沦落到我这等地步,就不用像我那样去“欺骗”公司了,我这是一个典型的 反面教材),居然一切都PASS(当然最重要的是笔试和面试问题还说得过去),这只能说 明这一领域找人的困难程度。公司本就未指望找到搞过驱动的人,找个有相关基础的人就算不?br /> 砹恕W隽艘院螅发现也并不是怎样难的。其实搞驱动程序的工作是很舒服的,搞完一个 姹揪突峥找欢问奔洌只有等公司新的芯片推出或新的OS出现后,才需要再去开发新一版驱 动,那时有将近一个月时间空闲着在等WinCE .NET Beta版推出,准备将驱动程序升级到CE .NET上,现在在软件学院工作整日忙,无限怀念那段悠闲时光。 很巧合,最近本人无意中再次体会到了嵌入式的迷人之处。上周我那用了3年的手机终于不 能WORK了。此次更新,除要求有手机常见功能外,最好有MP3功能(现在很多英语听力都有 MP3文件),最好有英汉词典,最好还能读WORD文档。最后选了个满足以上条件的最便宜的 手机DOPOD 515(斩了我2.2K,但想想这也算自己对嵌入式事业的支持,这样便也想开了) ,算得上最低档的智能手机了。回来一查,手机的about显示,本手机 Processor是ARM, 其OS是MS Smartphone(即WinCE .NET 4.2),这么巧合,简直可做为学习嵌入式课程的产 品案例了(等我们的WinCE课程开得有声有色后,希望能从微软研究院搞些Smartphone来开 发开发)。有OS的手机果然了得,金山词霸、WORD、EXCEL、REGEDIT等居然都有smartphone版的,PC上的MP3、DOC等居然在 download时都可被自动转换成smartphone格式,真是爽 。完全可用Windows CE自己开发一些需要的程序download到自己的手机上。现在市面销售 PDA智能手机火爆,MS总是财源滚滚。但我已发现国产的ARM+LINUX手机出现在市面上,价 格只1.2K。 在GOOGLE网上能搜索太多的关于嵌入式系统的讨论了,我刚发现一个http://www.embyte.com非常不错,有很多有经验者谈自己的体会,投入到其中的论坛中,你会切身感到嵌入式 学习的热潮。 要么走ARM+WinCE,要么走ARM+LINUX,要么走ARM+VXWORKS。每个搞嵌入式的人都可选一条 路,条条大路通罗马。 声明:以上对嵌入式的解释估计有错,任课教师最有权威性,一切以任课教师所讲为准。 三、关于游戏软件方向 将游戏软件人才称为数字媒体软件人才可能更好听些,包括游戏
软件策划(最缺游戏策划的人)、游戏软件美术设计、游戏软件程序设计等多方面的人才
,对软件学院,游戏软件程序设计当然是最合适的了。
游戏软件人才的确目前很缺,听说很多游戏软件公司苦于没新人才补充,特别是没有高手
补充,不得不相互挖人才,以至将游戏软件人才身价越抬越高。网上说*** 教育部刚刚批
准成立了***第一家专门培养四年制游戏软件人才的本科大学。其实国内很多大学,特别是
软件学院都有搞游戏软件人才的设想,但目前很少有做成的,主要原因是找不到能上游戏
软件课的教师,听说有个学校只能花很大的价钱从Korea找老师来上课,果真缺到此等地步
?
已有很多青少年沉湎于网游而颓废的实例,好在还不至于上升到制造精神鸦片的高度,所
以开发游戏软件的人也不必每日惭悔(但开发儿童益智类游戏软件的人是不需惭悔的),
如果想想这是为发展民族软件产业做贡献,那反倒是一件有意义的事情了。不过听一家游
戏软件公司的老板讲,搞游戏软件开发是非常辛苦的。
若想自己创业,搞搞游戏软件是不错的主意。现在网上网站或公司都在收购游戏软件(特
别是手机游戏软件,因为手机游戏用户可选从网站上download到手机上,不像网游那么复
杂),按download次数分成或一次性收购的都有。我们的同学在校期间是否也可发点小财
?搞得好,说不定可卖到国外网站,直接挣 $$$呢。
大致游戏分成以下几类:
(1) PC类游戏,包括单机和网游。这类游戏开发平台基本上都是基于VC++和DitrectX(
如DirectShow,DirectDraw,D3D等, DirectX资料可直接到MS网站上查)。DirectX和Op
enGL是两个主要的图形标准,OpenGL跨平台(Unix/Windows上都可跑),尽管很多搞研究
的人对OpenGL赞不绝口,将DirectX骂得一文不值,但事实是,在Windows平台上,Direct
X是最快最方便的,所以在Windows平台上的游戏还是DirectX当家。
(2) 手机游戏:目前手机游戏主要开发平台有两类:
第一类手机游戏是J2ME平台(Java 2 Micro Edition),J2ME本是为嵌入式平台设计的Java
,但由于Java生来就需要Java虚拟机(JVM)来解释,所以在嵌入式产品很少用J2ME (太慢
太耗内存)。但在手机游戏中J2ME倒有梦渲地,我想这可能主要是Java可跨OS平台的原
因,因为手机的OS是千奇百怪的。我对J2ME完全外行,但上次听Square Enix公司的人说,
J2ME与我们同学学过的J2EE还是有较大差别的。据我所知,目前手机中用的较多的是KJav
a语言,KJava是运行在一种叫K Java Virtual Machine的解释器上(K JVM是SUN早期为演示
J2ME在嵌入式系统应用而开发的一个虚拟机),所以将在K JVM上运行的J2ME叫KJava。尽管
SUN说今后不保证支持K JVM,将开发新的更高性能的J2ME虚拟机取而代之,但由于KJava出
现较早,很多早期的手机游戏软件都将K JVM假想成J2ME虚拟机的标准了,所以目前有大量
的KJava手机游戏软件存在,而且还在用KJava继续开发。特别是***的手机游戏软件由于开
发较早(像叫什么docomi的***最大的电信运营商手机游戏搞得很火),多是基于KJava的
。所以目前市场上在招聘手机游戏软件人才时,很多要求掌握 KJava。有关J2ME请到Sun的
网站上找资料。
另一类手机游戏是BREW平台,BREW是美国高通公司(Qualcomm,CDMA核心技术都是该公司开
发的,有无数移动通信技术专利)发明的,据说可编译成二进制代码,那当然快了。主要的
开发语言是C/C++。但迫于被指责为较封闭的压力,目前Qualcomm已推出BREW平台上的J2M
E虚拟机(但可想像那将是怎样慢的速度)。Qualcomm搞定了很多手机制造商签定BREW授权
许可协议,最狠的是Qualcomm与中国联通绑在一起大堆基于 BREW的手机游戏,所以有些公
司招聘时要求掌握BREW也就不奇怪了。
去年00级2+2班毕业答辩时,有一位同学讲的是在公司做的KJava游戏(那是一家***游戏软
件公司),还一位同学讲的是另一家公司做的BREW游戏,看来不同的公司有不同的选择。
将来谁会更火,我估计随着手机硬件资源的不断提高,不会在乎一个JVM的开销,J2ME应更
有前途,毕竟它是更开放的。
(3) 专用游戏机:如电视游戏,XBOX等,我不太了解,不过这些游戏也太偏了。
游戏公司对人才的需求主要是以下技术:
(1) 计算机图形学,特别是3D编程与算法,包括DirectX或OpenGL。开发平台是VC++/DI
RECTX或KJAVA。
(2) 公司说,手机游戏因手机资源有限,必须对图像进行压缩,所以若有一些图像压缩
算法知识比较好。像若能有MPEG压缩算法较好,手机上采用的是比MPEG压缩得更狠的一些
特殊算法,但触类旁通。
(3) TCP/IP Socket编程是搞网游开发的人必须掌握的。
(4) 人工智能知识:复杂游戏可能需要一些AI算法。
(5) 网络与信息安全知识:网游要防外挂。
该公司(大宇)的网游服务器是基于Linux平台的,所以还提出了对游戏服务器端软件工程
师的技术需求(精通MSSQL、ORACLE、MYSQL等数据库,精通 Linux Programming,特别是
Socket编程)。还有对维护游戏网站人才需求(ASP .NET和数据库)。
注意一条,最好有自己的游戏软件作品,若您应聘时能带一个DirectX作品,那将有多强的
竞争力,所以最重要的是现在就要行动,实践,实践,再实践。对游戏软件开发有兴趣的
同学,在目前情况下,可自已钻研一下相关知识(比方,可考虑将DirectX作为Windows程
序设计课的课程项目),将来可拿出自己的作品来,同样可找到这方面的好工作,我们00
,01级同学都有这样的例子。目前,会VC++的人本来就不多(现在很多年轻人都去追时髦
的Dot Net来了,VC++因难学,所以人就少),会DirectX的人就更少了,这正是我们的机
会。
2007年计算机专业毕业生就业状况调查工作难“求”——应届大学毕业生必要的人生历练对于2007年的计算机专业应届大学生来讲,在经历了2006年10-12月的招聘高峰期和2007年2-4月的小高峰期后,现在已经进入尾声,基本尘埃落定,终于可以对就业状况来一个盘点了。距正式离校只有不到两个月了,计算机专业的应届大学生就业已经进入了尾声,可以对就业状况来一个盘点了。为此,记者选取了北京、广州、武汉、西安、成都、山东等地的50所高校,通过本报调研中心对187名计算机专业应届大学生进行了问卷与深度访谈相结合的调查。我们发现,今年的计算机专业毕业生从找工作的难易程度、薪资水平、考研的人数和动机等方面都有着明显的分层现象:好的好,坏的坏。另外,我们从中也发现,在整个就业过程中,毕业生们大都表现出了高度的理性,如在其择业标准的选择,对求职现状的认知,以及对就业难原因的分析等,都蕴涵着较高的合理性成分。并不都是香饽饽同样的专业,同样是在今年找工作,计算机专业并不是在所有的高校都是香饽饽。已经保送本校研究生的清华大学计算机科学与技术专业大四学生严斌和尹玉冰告诉记者,在清华,真正找工作的只有30人左右,占到毕业生总数的1/6。清华计算机专业大四学生有180人左右,30个国防生,保送研究生的有70-80人,还有10来个到香港读研,20来个出国的,剩下的才是找工作的。“找工作的大部分是成绩不太好的同学。”两位清华的高材生异口同声告诉记者。北京航空航天大学的情况也差不多,计算机专业的就业状况也相当好。显然,像清华、北航等名校的计算机专业是全国顶尖的,其毕业生多数选择继续深造,少数去找工作是正常的。而像华南理工大学、西北大学等重点理工科高校,计算机专业大学生在当地的就业形势也是一片大好,就业率在95%以上。西北大学计算机技术与工程专业大四学生边广志就表示:“我们班上70多人,基本都找到工作了。”在那些学校名气不差,但计算机专业却一般的院校中,还有少数人找不到工作,就业率在70%左右。像中南民族大学计算机科学与技术专业大四学生马金红就告诉记者,他们班有26人,目前还没有找到工作的有4人。而另一个班也是26人,没找到工作的还有8人。比他们更惨的是一些在二类本科、甚至是三类本科院校就读的计算机专业大学生。计算机专业在学校内本就没有地位,一拉到人才市场来竞争就更没有优势了。四川师范大学计算机科学与技术专业大四学生赵志同介绍了他们就业的状况:他们专业共两个班,103人,到目前为止签约的仅占30%左右,而且其中有十几个人的工作是跟计算机无关的。“刚开始找工作的时候,我们就预期工作不好找。2006年学校统计我们专业的就业率是30-40%,就说明了就业形式不好。我们很多同学最后找到的工作大部分是跟计算机没有什么关系的,这也是我们找工作处处碰壁后没有办法的选择。”赵志同说。薪酬普遍在2000-4000元/月之间谈到找工作,所有人最关注的就是薪水问题。据我们调查,从整体来看,2000-4000元/月代表了计算机专业应届大学毕业生就业的平均薪酬水平。当然工资高低还跟就业单位的实力、就业地域和学校名气等有着比较大的关系。清华、北航等名校计算机专业大学毕业生的平均工资要比上述提到的水平高1000元/月左右,不过也跑不出这个区间。“我们班找工作的同学到非IT公司去的,工资只有4000元/月左右;到北京、上海、深圳等地IT公司的基本都有6000-7000元/月,最高的是Google给出的9000元/月。”尹玉冰说。北航计算机专业大学毕业生很多都去了银行的IT部门,如中行、招商银行等,工资水平在3000-5500元/月之间。最高的是华为公司给出的5500元/月(4500元+生活补助1000元),最低的也有3000元/月。华南理工大学、西北大学等第二梯队高校的计算机专业大学毕业生薪酬也许真正代表了目前的总体水平。在西安就业的大多是2000-3000元/月之间,男女差别不大,最高薪水是腾讯给出的年薪 7万元。华南理工计算机专业大学毕业生普遍都能拿到4000元左右的月薪。而中南民族大学的计算机专业大学毕业生留在武汉普遍拿到的工资是2000-3000元/月,能签到深圳等发达地区的工资都在3000-4000元/月,好的能达到4000-6000元/月。留在山东工作的大学毕业生就没那么幸运了。“整个山东省做软件的基本是1500元左右的月工资,在青岛、济南、泰安的都是。我们班一半找到工作的同学工资都在1500元/月以下。”山东科技大学徐银增跟记者透露自己的月工资水平在1000-2000元之间,接着补充了上面一句。总的来说,目前国内计算机专业应届大学毕业生平均月工资尚属高薪水平。同时,调查也显示,大学生们对薪资水平的分析表现出了高度的理性,去年乃至前些年理想起薪与签约工资存在较大差距的现象已经极少了。“低于3000元/月就没有人签了。”北航计算机科学与技术专业大四学生牛红婷告诉记者,“我们找工作的时候大部分预期是月薪4000元,因为到单位后还要扣三险和税金,最后也就只剩下3000多元了。”身处南方的华南理工大学计算机专业大学毕业生对薪水的预期要低一些。“我们找工作前参考过上一届的情况,他们的平均薪酬是3000-3500元/月;所以我预期的薪水至少是3000元/月以上才可以接受。”潘晓炜说。“我开始找工作的时候预期工资是2500元左右(在成都)。”而赵志同本身签了黑龙江武警总队,月工资水平是3000元左右,算是找得相当好的了。考研仍是大势所趋千军万马争读研——一方面是教育水平提升、本科教育大众化的体现,一方面也被视为许多毕业生逃避就业压力的表现。那么,应届大学毕业生是怎样看待读研的,选择这条路的有多少,成功的又有多少呢?在清华计算机专业应届大学毕业生中,保送研究生的加上到香港读研以及出国深造的,深造率为60%以上。当然,出国深造的机遇与学校实力有着密切的关系,并不是所有的高校都能提供给学生这样的机会。四川师范大学计算机专业一个班40人,有3个保研的,5个考上外校研究生的,继续深造率为20%左右。值得注意的是,以上的数字仅为最终实际深造的人数,对于选择考研但并没有成功的人数,我们难以统计。当问到为什么清华那么多学生要去读研时,严斌告诉记者:“我觉得现在本科生很难找到好工作,即便找到,做的也是体力活。我的计划是在清华读完硕士——出国读博士——海归,这样要比直接研究生毕业后工作强很多。”“我们学校研究生就业要比本科生好不少,现在像IBM、微软等大公司都指名要研究生而不要本科生。因此本科生相对来讲找工作要受到很多限制,就业面不如研究生。”牛红婷也道破了自己读研究生的“天机”:“这也是有道理的,本科生都是打基础,基本没有什么机会去跟项目,而我自从保送研究生后就到实验室跟师兄做实验、跟项目,解决实际问题的能力肯定会增强不少。” 据了解,腾讯、Google给名校计算机专业研究生开的薪水分别是10万元/年、15万元/年,比本科生要高出不少。潘晓炜则认为考研后可能在知识、经验上增加更多,“同时我们学校近几年都是研究生的总体就业形式比本科生好,这也是一个原因吧”。从中我们不难看出,考研仍被大多数大学毕业生视为“改变命运”的又一次机会。非名校学生找工作易遭遇不公相对名校的强势,很多普通院校的计算机专业大学毕业生在找工作的过程中遭遇了不少不公平对待。据调查,很多IT公司的工资等级分重点和非重点院校,重点院校毕业生月薪要比普通院校毕业生高几百至一千元不等。马金红和其他同学就参加了深圳一家公司在武汉的招聘会,并顺利通过了笔试,没想到在面试的时候得到了一个信息:这家公司给他们的是大专生的待遇,比华中科技大学、武汉大学的毕业生要少近千元。“不过后来还是有同学签了,现在工作不好找。”马金红无奈地说。计算机人才需求每年增100万 目前,中国软件产业还处于成长期,其市场潜力还远远没有挖掘出来。2006年中国软件市场总体规模将达到1073亿元,增长率达到30%。2010年左右,中国软件产业将步入成熟期。IT产业作为知识密集、技术密集的产业,其迅猛发展的关键是有一大批从事IT技术创新的人才队伍所支撑的,一个国家的IT人力资源储备、IT人才培养及使用状况决定着该国IT产业发展的水平和潜力。就中国来说,IT产业在过去5年经历了年26.1%的增长速度,IT产业占全国工业比重达到12.3%,占GDP的9%。所以,无论是从大的方向讲,还是从小的方面讲,培养和储备高素质的IT人才都显得非常重要。计算机人才:需求每年增加100万据介绍,目前我国的计算机应用水平还处于初级阶段,随着我国软件业规模不断扩大,软件人才结构性矛盾日益显得突出。教育部关于紧缺人才的报告称,软件从业人员近80万人,其中专业人才约有50万人(其中高级人才10万人,中级人才25万人,初级人才15万人)。人才结构呈两头小中间大的橄榄型结构,不仅缺乏高层次的系统分析员、项目总设计师,也缺少大量的从事基础性软件开发人员。根据国际经验,软件人才高、中、初之比为1:4:7。按照合理的人才结构比例进行测算,到2007年全国计算机应用专业人才的需求每年将增加百万,但国内学历教育目前只能提供5-6万人。IT行业收入情况本次调查数据是从2006年5月到2007年4月通过互联网收集的,被调查者主要集中在北京、上海、深圳、广州及天津等市。统计结果显示,IT业的平均年薪为51073元。从具体职位看,IT业各职位的年薪均值同样颇具领先优势,属高薪行业。以项目管理职位为例,IT业年薪均值比总体年薪均值高出了25.19%;工厂管理职位则高出了26.8%。上海、深圳、北京是IT高薪城市。其中上海IT业薪水水平最高,年薪均值达到了16000元。学历经验决定薪资学历与经验是决定IT人薪情的两大因素。学历上看,基本符合学历越高年薪均值越高的趋势,从工作经验看,工作3年和5年也分别能实现薪水的一个飞跃。工作1年者平均年薪为36380元;3年者为53987元;5年者达到了69300元;10-15年可以达到74074元。今年薪资小幅增长就目前状况看,无论国内环境,还是国际趋势,对IT人才的需求都呈现增长趋势,但中华英才网职业专家分析认为,IT业的总体薪资预计年内不会出现大幅提升,增长幅度将在10%———15%左右。行业发展催生新岗位行业变化可以为职场人带来新的发展机遇。IT业由于技术更新换代快,市场竞争激烈,因此也不断地为业内人士创造了新的发展空间。3G、芯片、互联网、游戏等已成为近两年IT职场上的关键词,蕴藏者大量的职场机会。此外,新的商业模式也会引发新的工作岗位产生,但由于人才短缺,这些岗位也成为高薪聚集地。目前游戏产业人才缺口高达60万,一名游戏公司市场经理的年薪已达到26万,而一名优秀的游戏设计师的年薪在30万元左右。而在今后几年内,网络安全人才、游戏人才、软件测试工程师、研究人员的需求将持续旺盛,薪资会相对较高。就拿网络游戏人才来说,最为缺乏的游戏设计、开发与编程人员,只要具备2年以上相关工作经验;掌握C或C++编程,熟悉Win32/VC++开发平台或Lunix/Unix开发平台;熟悉TCP/IP、Socket编程或MySQL、Oracle数据库;有良好的面向对象设计、分析能力、规范的编程风格;有个人作品和良好英文技术资料阅读能力者优先。这类人员月薪一般都有万元以上,属于“金领”一族。此外,游戏策划人员、美工等也是热销的职位。有经验的策划人月薪也能达到上万元,而资深的美工如果设计的速度和质量俱佳,最高月薪能达到2-3万元,而一般美工月薪维持在4000-5000元。常言道:“天高任鸟飞,海阔凭鱼跃”,IT行业作为我国第一大产业,其发展潜力是非常巨大的。在就业形势利好,人才缺口较大的情况下,要想成为一个IT人,每一个求职者就只有凭自身的学识和能力了。
posted @
2011-07-26 14:58 雪黛依梦 阅读(445) |
评论 (0) |
编辑 收藏
摘要: 例子:有一家汉堡店举办吃汉堡比赛,决赛时有3个顾客来吃,3个厨师来做,一个服务员负责协调汉堡的数量。为了避免浪费,制作好的汉堡被放进一个能装有10个汉堡的长条状容器中,按照先进先出的原则取汉堡。如果容器被装满,则厨师停止做汉堡,如果顾客发现容器内的汉堡吃完了,就可以拍响容器上的闹铃,提醒厨师再做几个汉堡出来。此时服务员过来安抚顾客,让他等待。而一旦厨师的汉堡做出来,就会让服务员通知顾客,汉堡做好了...
阅读全文
posted @
2011-07-25 20:10 雪黛依梦 阅读(2655) |
评论 (0) |
编辑 收藏
一、同步问题提出
线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏。
例如:两个线程ThreadA、ThreadB都操作同一个对象Foo对象,并修改Foo对象上的数据。
package thread;
public class Foo {
private static int x = 100;
public int getX() {
return x;
}
public int fix(int y) {
x = x - y;
try {
Thread.currentThread().sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()
+ " : 当前foo对象的x值=" + getX());
return x;
}
}
package thread;
public class SynchronizedDemo implements Runnable {
private Foo foo = new Foo();
public void run() {
for (int i = 0; i < 100; i++) {
this.fix(30);
}
}
public int fix(int y) {
return foo.fix(y);
}
public static void main(String[] args) {
SynchronizedDemo a = new SynchronizedDemo();
Thread tha = new Thread(a, "A");
Thread thb = new Thread(a, "B");
Thread thc = new Thread(a, "C");
Thread thd = new Thread(a, "D");
Thread the = new Thread(a, "E");
Thread thf = new Thread(a, "F");
Thread thg = new Thread(a, "G");
Thread thh = new Thread(a, "H");
Thread thi = new Thread(a, "I");
Thread thj = new Thread(a, "J");
Thread thk = new Thread(a, "K");
tha.start();
thb.start();
thc.start();
thd.start();
the.start();
thf.start();
thg.start();
thh.start();
thi.start();
thj.start();
thk.start();
}
}
从结果发现,这样的输出值明显是不合理的。原因是两个线程不加控制的访问Foo对象并修改其数据所致。
如果要保持结果的合理性,只需要达到一个目的,就是将对Foo的访问加以限制,每次只能有一个线程在访问。这样就能保证Foo对象中数据的合理性了。
在具体的Java代码中需要完成一下两个操作:
把竞争访问的资源类Foo变量x标识为private;
同步哪些修改变量的代码,使用synchronized关键字同步方法或代码。
二、同步和锁定
1、锁的原理
Java中每个对象都有一个内置锁
当程序运行到非静态的synchronized同步方法上时,自动获得与正在执行代码类的当前实例(this实例)有关的锁。获得一个对象的锁也称为获取锁、锁定对象、在对象上锁定或在对象上同步。
当程序运行到synchronized同步方法或代码块时才该对象锁才起作用。
一个对象只有一个锁。所以,如果一个线程获得该锁,就没有其他线程可以获得锁,直到第一个线程释放(或返回)锁。这也意味着任何其他线程都不能进入该对象上的synchronized方法或代码块,直到该锁被释放。
释放锁是指持锁线程退出了synchronized同步方法或代码块。
关于锁和同步,有一下几个要点:
1)、只能同步方法,而不能同步变量和类;
2)、每个对象只有一个锁;当提到同步时,应该清楚在什么上同步?也就是说,在哪个对象上同步?
3)、不必同步类中所有的方法,类可以同时拥有同步和非同步方法。
4)、如果两个线程要执行一个类中的synchronized方法,并且两个线程使用相同的实例来调用方法,那么一次只能有一个线程能够执行方法,另一个需要等待,直到锁被释放。也就是说:如果一个线程在对象上获得一个锁,就没有任何其他线程可以进入(该对象的)类中的任何一个同步方法。
5)、如果线程拥有同步和非同步方法,则非同步方法可以被多个线程自由访问而不受锁的限制。
6)、线程睡眠时,它所持的任何锁都不会释放。
7)、线程可以获得多个锁。比如,在一个对象的同步方法里面调用另外一个对象的同步方法,则获取了两个对象的同步锁。
8)、同步损害并发性,应该尽可能缩小同步范围。同步不但可以同步整个方法,还可以同步方法中一部分代码块。
9)、在使用同步代码块时候,应该指定在哪个对象上同步,也就是说要获取哪个对象的锁。例如:
public int fix(int y) {
synchronized (this) {
x = x - y;
}
return x;
}
当然,同步方法也可以改写为非同步方法,但功能完全一样的,例如:
public synchronized int getX() {
return x++;
}
与
public int getX() {
synchronized (this) {
return x;
}
}
效果是完全一样的。
三、静态方法同步
要同步静态方法,需要一个用于整个类对象的锁,这个对象是就是这个类(XXX.class)。
例如:
public static synchronized int setName(String name){
Xxx.name = name;
}
等价于
public static int setName(String name){
synchronized(Xxx.class){
Xxx.name = name;
}
}
四、如果线程不能不能获得锁会怎么样
如果线程试图进入同步方法,而其锁已经被占用,则线程在该对象上被阻塞。实质上,线程进入该对象的的一种池中,必须在哪里等待,直到其锁被释放,该线程再次变为可运行或运行为止。
当考虑阻塞时,一定要注意哪个对象正被用于锁定:
1、调用同一个对象中非静态同步方法的线程将彼此阻塞。如果是不同对象,则每个线程有自己的对象的锁,线程间彼此互不干预。
2、调用同一个类中的静态同步方法的线程将彼此阻塞,它们都是锁定在相同的Class对象上。
3、静态同步方法和非静态同步方法将永远不会彼此阻塞,因为静态方法锁定在Class对象上,非静态方法锁定在该类的对象上。
4、对于同步代码块,要看清楚什么对象已经用于锁定(synchronized后面括号的内容)。在同一个对象上进行同步的线程将彼此阻塞,在不同对象上锁定的线程将永远不会彼此阻塞。
五、何时需要同步
在多个线程同时访问互斥(可交换)数据时,应该同步以保护数据,确保两个线程不会同时修改更改它。
对于非静态字段中可更改的数据,通常使用非静态方法访问。
对于静态字段中可更改的数据,通常使用静态方法访问。
如果需要在非静态方法中使用静态字段,或者在静态字段中调用非静态方法,问题将变得非常复杂。已经超出SJCP考试范围了。
六、线程安全类
当一个类已经很好的同步以保护它的数据时,这个类就称为“线程安全的”。
即使是线程安全类,也应该特别小心,因为操作的线程是间仍然不一定安全。
举个形象的例子,比如一个集合是线程安全的,有两个线程在操作同一个集合对象,当第一个线程查询集合非空后,删除集合中所有元素的时候。第二个线程也来执行与第一个线程相同的操作,也许在第一个线程查询后,第二个线程也查询出集合非空,但是当第一个执行清除后,第二个再执行删除显然是不对的,因为此时集合已经为空了。
看个代码:
public class NameList {
private List nameList = Collections.synchronizedList(new LinkedList());
public void add(String name) {
nameList.add(name);
}
public String removeFirst() {
if (nameList.size() > 0) {
return (String) nameList.remove(0);
} else {
return null;
}
}
}
public class Test {
public static void main(String[] args) {
final NameList nl = new NameList();
nl.add("aaa");
class NameDropper extends Thread{
public void run(){
String name = nl.removeFirst();
System.out.println(name);
}
}
Thread t1 = new NameDropper();
Thread t2 = new NameDropper();
t1.start();
t2.start();
}
}
虽然集合对象
private List nameList = Collections.synchronizedList(new LinkedList());
是同步的,但是程序还不是线程安全的。
出现这种事件的原因是,上例中一个线程操作列表过程中无法阻止另外一个线程对列表的其他操作。
解决上面问题的办法是,在操作集合对象的NameList上面做一个同步。改写后的代码如下:
public class NameList {
private List nameList = Collections.synchronizedList(new LinkedList());
public synchronized void add(String name) {
nameList.add(name);
}
public synchronized String removeFirst() {
if (nameList.size() > 0) {
return (String) nameList.remove(0);
} else {
return null;
}
}
}
这样,当一个线程访问其中一个同步方法时,其他线程只有等待。
七、线程死锁
死锁对Java程序来说,是很复杂的,也很难发现问题。当两个线程被阻塞,每个线程在等待另一个线程时就发生死锁。
还是看一个比较直观的死锁例子:
public class DeadlockRisk {
private static class Resource {
public int value;
}
private Resource resourceA = new Resource();
private Resource resourceB = new Resource();
public int read() {
synchronized (resourceA) {
synchronized (resourceB) {
return resourceB.value + resourceA.value;
}
}
}
public void write(int a, int b) {
synchronized (resourceB) {
synchronized (resourceA) {
resourceA.value = a;
resourceB.value = b;
}
}
}
}
假设read()方法由一个线程启动,write()方法由另外一个线程启动。读线程将拥有resourceA锁,写线程将拥有resourceB锁,两者都坚持等待的话就出现死锁。
实际上,上面这个例子发生死锁的概率很小。因为在代码内的某个点,CPU必须从读线程切换到写线程,所以,死锁基本上不能发生。
但是,无论代码中发生死锁的概率有多小,一旦发生死锁,程序就死掉。有一些设计方法能帮助避免死锁,包括始终按照预定义的顺序获取锁这一策略。已经超出SCJP的考试范围。
八、线程同步小结
1、线程同步的目的是为了保护多个线程反问一个资源时对资源的破坏。
2、线程同步方法是通过锁来实现,每个对象都有切仅有一个锁,这个锁与一个特定的对象关联,线程一旦获取了对象锁,其他访问该对象的线程就无法再访问该对象的其他同步方法。
3、对于静态同步方法,锁是针对这个类的,锁对象是该类的Class对象。静态和非静态方法的锁互不干预。一个线程获得锁,当在一个同步方法中访问另外对象上的同步方法时,会获取这两个对象锁。
4、对于同步,要时刻清醒在哪个对象上同步,这是关键。
5、编写线程安全的类,需要时刻注意对多个线程竞争访问资源的逻辑和安全做出正确的判断,对“原子”操作做出分析,并保证原子操作期间别的线程无法访问竞争资源。
6、当多个线程等待一个对象锁时,没有获取到锁的线程将发生阻塞。
7、死锁是线程间相互等待锁锁造成的,在实际中发生的概率非常的小。真让你写个死锁程序,不一定好使,呵呵。但是,一旦程序发生死锁,程序将死掉。
posted @
2011-07-23 20:50 雪黛依梦 阅读(272) |
评论 (0) |
编辑 收藏
进程与Java线程的区别
应用程序在执行过程中存在一个内存空间的初始入口点地址、一个程序执行过程中的代码执行序列以及用于标识进程结束的内存出口点地址,在进程执行过程中的每一时间点均有唯一的处理器指令与内存单元地址相对应。
Java语言中定义的线程(Thread)同样包括一个内存入口点地址、一个出口点地址以及能够顺序执行的代码序列。但是进程与线程的重要区别在于线程不能够单独执行,它必须运行在处于活动状态的应用程序进程中,因此可以定义线程是程序内部的具有并发性的顺序代码流。
Unix操作系统和Microsoft Windows操作系统支持多用户、多进程的并发执行,而Java语言支持应用程序进程内部的多个执行线程的并发执行。多线程的意义在于一个应用程序的多个逻辑单元可以并发地执行。但是多线程并不意味着多个用户进程在执行,操作系统也不把每个线程作为独立的进程来分配独立的系统资源。进程可以创建其子进程,子进程与父进程拥有不同的可执行代码和数据内存空间。而在用于代表应用程序的进程中多个线程共享数据内存空间,但保持每个线程拥有独立的执行堆栈和程序执行上下文(Context)。
基于上述区别,线程也可以称为轻型进程 (Light Weight Process,LWP)。不同线程间允许任务协作和数据交换,使得在计算机系统资源消耗等方面非常廉价。
线程需要操作系统的支持,不是所有类型的计算机都支持多线程应用程序。Java程序设计语言将线程支持与语言运行环境结合在一起,提供了多任务并发执行的能力。这就好比一个人在处理家务的过程中,将衣服放到洗衣机中自动洗涤后将大米放在电饭锅里,然后开始做菜。等菜做好了,饭熟了同时衣服也洗好了。
需要注意的是:在应用程序中使用多线程不会增加 CPU 的数据处理能力。只有在多CPU 的计算机或者在网络计算体系结构下,将Java程序划分为多个并发执行线程后,同时启动多个线程运行,使不同的线程运行在基于不同处理器的Java虚拟机中,才能提高应用程序的执行效率。
posted @
2011-07-22 14:04 雪黛依梦 阅读(1084) |
评论 (0) |
编辑 收藏
1、序列化是干什么的?
简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。
2、什么情况下需要序列化 a)当你想把的内存中的对象状态保存到一个文件中或者数据库中时候;
b)当你想用套接字在网络上传送对象的时候;
c)当你想通过RMI传输对象的时候;
3、当对一个对象实现序列化时,究竟发生了什么?在没有序列化前,每个保存在堆(Heap)中的对象都有相应的状态(state),即实例变量(instance ariable)比如:
java 代码
- Foo myFoo = new Foo();
- myFoo .setWidth(37);
- myFoo.setHeight(70);
当 通过下面的代码序列化之后,MyFoo对象中的width和Height实例变量的值(37,70)都被保存到foo.ser文件中,这样以后又可以把它 从文件中读出来,重新在堆中创建原来的对象。当然保存时候不仅仅是保存对象的实例变量的值,JVM还要保存一些小量信息,比如类的类型等以便恢复原来的对 象。
java 代码
- FileOutputStream fs = new FileOutputStream("foo.ser");
- ObjectOutputStream os = new ObjectOutputStream(fs);
- os.writeObject(myFoo);
4、实现序列化(保存到一个文件)的步骤
a)Make a FileOutputStream
java 代码
- FileOutputStream fs = new FileOutputStream("foo.ser");
b)Make a ObjectOutputStream
java 代码
- ObjectOutputStream os = new ObjectOutputStream(fs);
c)write the object
java 代码
- os.writeObject(myObject1);
- os.writeObject(myObject2);
- os.writeObject(myObject3);
d) close the ObjectOutputStream
java 代码
相关注意事项
a)序列化时,只对对象的状态进行保存,而不管对象的方法;
b)当一个父类实现序列化,子类自动实现序列化,不需要显式实现Serializable接口;
c)当一个对象的实例变量引用其他对象,序列化该对象时也把引用对象进行序列化;
d)并非所有的对象都可以序列化,,至于为什么不可以,有很多原因了,比如:
1.安全方面的原因,比如一个对象拥有private,public等field,对于一个要传输的对象,比如写到文件,或者进行rmi传输 等等,在序列化进行传输的过程中,这个对象的private等域是不受保护的。
2. 资源分配方面的原因,比如socket,thread类,如果可以序列化,进行传输或者保存,也无法对他们进行重新的资源分 配,而且,也是没有必要这样实现。
posted @
2011-07-22 11:08 雪黛依梦 阅读(941) |
评论 (0) |
编辑 收藏
根据JAVA官方文档的描述,mark(int readlimit)方法表示,标记当前位置,并保证在mark以后最多可以读取readlimit字节数据,mark标记仍有效。如果在mark后读取超过readlimit字节数据,mark标记就会失效,调用reset()方法会有异常。
但实际的运行情况却和JAVA文档中的描述并不完全相符。 有时候在BufferedInputStream类中调用mark(int readlimit)方法后,即使读取超过readlimit字节的数据,mark标记仍有效,仍然能正确调用reset方法重置。
事实上,mark在JAVA中的实现是和缓冲区相关的。只要缓冲区够大,mark后读取的数据没有超出缓冲区的大小,mark标记就不会失效。如果不够大,mark后又读取了大量的数据,导致缓冲区更新,原来标记的位置自然找不到了。
因此,mark后读取多少字节才失效,并不完全由readlimit参数确定,也和BufferedInputStream类的缓冲区大小有关。 如果BufferedInputStream类的缓冲区大小大于readlimit,在mark以后只有读取超过缓冲区大小的数据,mark标记才会失效。看下面的例子。
<span style= "color: rgb(255, 0, 0);" >ava代码 |
import java.io.BufferedInputStream; |
import java.io.ByteArrayInputStream; |
import java.io.IOException; |
public class MarkExample { |
public static void main(String[] args) { |
byte [] bytes={ 1 , 2 , 3 , 4 , 5 }; |
ByteArrayInputStream in= new ByteArrayInputStream(bytes); |
BufferedInputStream bis= new BufferedInputStream(in, 2 ); |
System.out.print(bis.read()+ "," ); |
System.out.println( "mark" ); |
posted @
2011-07-21 14:46 雪黛依梦 阅读(1646) |
评论 (0) |
编辑 收藏