① 三流程序员如何转行
首先三流的程序员不叫程序员,那叫做码农。而你要是想混的好。那你就要摆脱码农的身份,往真正的程序员的方向走!
第一步,告别码农,学习新知识。
之所以叫码农就是因为你们收割的拿回来的不过是别人的辛苦产物。随便抄一下就能用了。所以就叫做码农。你们根本没有所谓的原创程序也没有拿得出手的技术和成绩,所以就一直把自己当三流程序员,其实你们就是码农。
所以你们应该先告别码农的身份,从一个程序员的角度来看待问题。不要遇到代码的事情就要去找别人做的东西。借鉴可以,但是东西还是自己做的好。
这个时段不但是要接受锤炼和多次的打击更是要学习新鲜的知识,跟上现在的程序员的潮流。这样你才能第一步脱开码农的身份。
第二步,跳槽去更能发展的地方,而不是在这里吃老本。
不要停留在你学习不到新鲜知识和东西的地方。程序员是最容易跳槽的职业。因为职业的构成就是要不断的跳槽出去学习然后进步的。所以不要担心自己跳槽的速度快或者经常要找工作。这是你要成为一流的可以混吃等成绩的程序员的必经之路。
这一条路上你不但要吃苦还要多学习多进步。这种情况可能会持续5-8年左右,所以一定要做好心理准备,切记做好心理准备!
第三步,巩固现有的,成为一个优秀的混的好的程序员。
一般来讲这个时候你已经快35岁左右了。但是更好的未来就在前方,下面就不用教你怎么做了。因为你已经习惯了一个程序员的生活了。下面就是坚持不懈继续努力的了。
② 24了,想转行做程序员,懂的人,或过来人有什么建议或意见吗
对于像你一样,24岁,想转行做程序员的人,我的建议只有四个字,就是贵在坚持。
转行做一个技术含量高的行当,不是一个容易的事情,自己要心里有数,程序员虽然待遇优厚,但是不是白来的一份付出?一份收获,你要做好努力的准备。
③ 一个程序员所要经历的步骤
程序员应具备的12种能力
毕业四年来,感觉自己也是从一名不合格的程序员一步步走过来的。回头反思一下,合格的程序员有很多标准和要求,下面是我总结的一个合格程序员应该具备的12种能力。中国软件行业的崛起,靠的是合格的程序员。任何华丽的管理制度都不能保证软件项目的成功交付,合格的程序员就是有力的保证,是项目成功的基础。写下这些,是为了给刚刚进入程序员这个职业的新同学们一点参考。我一直以为,当程序员是很辛苦的,如果不是真正的喜欢,很难坚持下去。如果真的不喜欢这个职业,也该尊重这个职业,尊重自己,赶紧改行。
1. 编程语言能力
不用多说,作为合格的程序员,精通一门语言是必须的。这种精通,不是说看了一本《24小时精通XXX》,抄了几个程序就能说精通的,要靠长时间的积累和浸淫。
2.编码能力
我曾经看多很多程序员写的代码,在同一个jsp或者java源文件里,出现了三种以上的对方法的命名方式,有下划线间隔的,有全大写的,有拼音首字母的。就像一个菜市场,杂乱无比,估计10天后,他自己都无法看的懂。遵守编码规范,是一个程序员最基本的要求,可悲的是,很多程序员根本没有意识到这个问题的严重性。随意堆砌网上搜来的代码,根本不管可读性和可维护性,只要能实现功能就行了,心想做完这个项目,就拍拍屁股走人了,缺少最基本的职责素养。我经常把代码必须成程序员的孩子,你就是是孩子他爹,孩子他妈,是有感情的。对你自己的孩子,你能不仔细呵护吗?你是称职的父母吗?这是我编写的一个Java编码规范,供大家参考,这里可以下载http://gurudk.javaeye.com/blog/111734
另外一个就是注释,要注意不是为了注释而注释。对类,以说明职责为主;对方法,以说明意图为主;对方法体,以说明实现思路为主。对于大段大段的代码,要分段,使用空行隔开,并使用行内注释进行说明。
思维的条理性,写代码之前,先简单计划一下,用自然语言把流程写下来,用于整理实现思路。不要看了需求或设计之后,马上就敲代码了,敲完代码马上就debug。花点时间思考,敲代码只是最后一个很简单的工作,不要把自己变成一个代码打字员,编写边想,写了删,删了写。安安静静把实现过程想清楚,在脑子里先实现一遍。再去敲代码,水到渠成。
3.面向对象思维能力
如今,多数编程语言都是面向对象的编程语言。而这些面向对象的编程语言的共同的精髓就是面向对象的思想。掌握这些比面向对象语言本身更重要,比如对继承,多态,重载的理解。对面向对象基本原则的理解,比如开闭原则,接口隔离原则,单一职责原则等。在此基础上,应该掌握常用的设计模式,比如工厂模式,策略模式,观察者模式,模板方法模式,命令模式等等。我面试过很多程序员,没有一个能说得上几句的。
4.利用工具能力
工欲善其事,必先利其器。有了趁手的家伙,工作效率可以提升数倍。你编程序,有没有选择一个很好的IDE,以前听说编程高手都用记事本写程序,我觉得那是一种自虐。就像以前看到的一篇文章,说一帮户外旅行爱好者,出去旅游,背了重重的旅行包,里面装着什么压缩饼干等快速食品。他们宁可就着矿泉水啃压缩饼干,也不肯去1里路都不到的快餐店,农家菜馆吃饭。工具是为目的服务的,好用,提高效率就行,形式无所谓。
另外一个常用的工具就是日记本,好听点可以称为知识管理工具,我用的是myBase,感觉非常好用,在之前,我的所有的片段内容都是记录的单独的文本文件里的,非常不好找,管理也很混乱。
经常上互联网,看到好多好的资料想保存下来,作为日后查看之用.一开始,我用的是firefox自带的书签,但是自己分类太累,多了之后不便于查找,很麻烦。后来用了得乐书签(del.icio.us)的firefox插件,非常方便,现在成为了我必备的一个工具。
还有一个最重要的工具就是搜索引擎了,我装了google forfirefox插件,感觉不错,还有英文翻译功能。按照我同事的说法,内事用,外事用google。很多技术资料都是英文的,用google搜索效率高一些。搜索引擎用好了,就等于打开了一扇通向知识宝库的门,使用搜索引擎,关键字选择很重要。
经常去浏览大牛的blog,逐个网站访问很麻烦,去看了又可能没有更新,可以借助于RSS订阅工具,我是用iGoogle桌面工具,每天早上花半个小时扫一下,大牛的最新文章尽收眼底了。
5. 英语能力
新的技术资料都是英文的,英语国家的IT技术走在我们前面至少10年(这是我自己估计的数字,可能正在缩小)。就连印度,一个连基础设施建设都不太完善的国家,因为其英语基础较好,其在软件外包领域的发展也非常迅猛,远远超过了我们。学英语,首先是有信心,其次就是花时间。多阅读英文资料,使用金山词霸,google的firefox插件等工具配合,贵在坚持。
6.学习能力
在IT也混饭吃不容易,整个环境进化的太快,你不学习,就等于落后了。学习要有针对性,别今天学ruby,明天学python,后天php的。首先要认清自己的目标,自己短期目标是什么,1年后,3年后,5年后的目标是什么。结合这些目标,确定自己的学习计划,人的精力毕竟是有限的。当然,多掌握几门编程语言也是好的,可以扩充自己的知识面,重要的是为自己的目标服务。
要想系统的学习一门技术或工具,看书是最好的方法。看完后,然后上网找相关资料,进行深入学习。学习要抓紧一切可以利用的时间,比如电脑启动要花1分多钟,旁边放一本书,可以看上几页了。公交车上,地铁上也可以看。
当然,不能只学习技术,要经常联系自己的软技能,比如沟通能力,表达能力。你可以把自己学到的东西,解释给自己的同事听,既加深了理解,又增进了同事之间的交流。学习的最高境界就是你能够把学到的东西解释给别人听,这才说明你理解了。在学习心理学上,称之为构成主义。
我学一样东西,总是先上网了解有没有相关书籍,如果想学,就买一本或者去图书馆找相关的书来读。我买的书,家里快放不下了(到目前位置,我买了1万多块的书)。我多半是把目录看完,了解这本书讲解的主要内容,然后需要的时候,我就可以立即补充它进入到我的知识结构。每个人可能都有自己的学习方法,意识到学习的重要,并能够根据需要补充自己的知识,这种能力更重要。
7.创造能力
普遍认为,东方人模仿能力很强,但创造能力差。我见过很多这样的程序员,经常说,“这个只能这么解决了,我想不出有什么别的方法。”可能他根本都没想过别的方法,或者懒得去想。对任何一个问题,找出两种以上的解决办法都是非常容易的,简单的google一下,可能就是数十种。悲哀的是,有些程序员经常止步于自己构建的狭小领地之内。对待客户也是这种态度,不是积极的帮助客户解决问题,而是推脱这只是唯一解决方案。
打破这一思维定势的首先的一个办法就是在面临一个问题时,首先想到的是“没有不可能”,或是“一切皆有可能”,前面那个是阿迪的广告语,后面是李宁的。只有这样去想,才能寻找解决问题的别的出路,即使最后我们试了很多种办法,还是只有着一种解决方案,但我们在这种寻找解决方案的过程中,常常会产生很多好的想法,这样才会使我们真正深刻思考一个问题。建议大家看一看《水平思考》这本书,他提供了一些进行创造性思考的方法和工具。
但我认为,坚持认为存在另一种解决方案的信念是第一位的,方法和工具都是其次。
8.文档能力
也许有人会质疑,程序员跟写文档有什么关系。大家开源软件也用过不少,看看Spring,hibernate,Struts等最流行的开源软件的文档就知道,他么的tutorial,他们的getstarted,他们的reference文档写的多么的易懂。其实写代码也相当于写文档,只不过用的是编程语言。同样,写文档,用自然语言,也相当于写程序,简单明了,清晰易懂,这样的“程序”谁看谁舒服。同样,对于想进阶到设计师或者需求分析员角色的程序员,文档能力更是非常重要。
word是一个最实用的工具,很多程序员,多级编号都不会用,索引目录也不知道如何生成,更别灵活应用样式了。很多排版都是所谓的dirty work。垃圾样式一大堆。其实,静下心来,稍微学习一下,就能写出一篇格式漂亮的文档。
9.抽象能力
抽象能力是认识事物从现象到本质的能力。如果你只是停留在“见山是山,见水是水”的层次,客户说什么,你就做什么,设计怎么做,你就怎么实现,从来不过问为什么,也不去想他是满足了用户哪些方面的需求呢。这样可能只解决了表面的问题,可能会引起返工。认识到本质,才能让你的程序具备更大的灵活性和可扩展性。在做企业应用软件开发中,抽象能力体现为对问题域的理解能力,对领域模型的抽象。合理的抽象也是代码重构的前提,每一次重构,都是向更好的抽象迈进了一步。
10.代码评审能力
代码评审和单元测试是保证代码质量的两种常用手段之一。代码评审能力,说明了你的审美标准,知道什么是好的,什么是不好的,什么是优雅的代码,什么是糟糕的代码,你才能让自己做的更好。
11.单元测试能力
没有单元测试的代码,只能说是半成品。因为没有什么能证明你的代码是可以运行的。测试驱动开发是一个非常好的敏捷过程的最佳实践。单元测试还可以作为回归测试,在修改代码时,起到警戒线标志的作用。是否具有单元测试的意识是区分程序员是否合格的重要标准。写不写单元测试是区分平庸程序员和优秀程序员的重要标杆。
12.DRY
DRY是一种原则,就是Don't RepeatYourself.出自《程序员修炼之道-从小工到专家》。这条原则可以用到很多地方,比如你经常要编译,打包,部署应用程序,供集成测试用。每次你都在重复你自己,写一个自动化脚本(比如用ant,批处理命令)来将这些工作自动化,以提高效率。
还有一个就是我们经常在不同的地方切换IP,如果每次手工做,也非常浪费时间,写一个bat命令可以解决,找一个小工具也可以解决。
编码时,对代码的复用也是在重复你自己,虽然拷贝过程很爽,但是维护一致性就要付出巨大的工作量,特别是将来维护的人不是你的时候,使用代码生成工具可以解决这个问题。类似的例子太多了,如果你发现你经常做一些重复的工作,就要警惕了,是否违背了这个原则,想一些办法将他们自动化。
④ 我是如何从程序员到年入80万的自由职业者的
1.最简单的方法:
public static String reverse1(String str)
{
return new StringBuffer(str).reverse().toString();
}
2.最常用的方法:
public static String reverse3(String s)
{
char[] array = s.toCharArray();
String reverse = ""; //注意这是空串,不是null
for (int i = array.length - 1; i >= 0; i--)
reverse += array[i];
return reverse;
}
3.常用方法的变形:
public static String reverse2(String s)
{
int length = s.length();
String reverse = ""; //注意这是空串,不是null
for (int i = 0; i < length; i++)
reverse = s.charAt(i) + reverse;//在字符串前面连接, 而非常见的后面
return reverse;
}
4.C语言中常用的方法:
public static String reverse5(String orig)
{
char[] s = orig.toCharArray();
int n = s.length - 1;
int halfLength = n / 2;
for (int i = 0; i <= halfLength; i++) {
char temp = s[i];
s[i] = s[n - i];
s[n - i] = temp;
}
return new String(s); //知道 char数组和String相互转化
}
⑤ 有哪些新手程序员该知道的工作小技巧
1.积极大胆的谷歌。你得知道如何有效的组织搜索关键字,查阅别人写的代码,然后合理地用在代码里,从而解决问题。
2.拥抱变化,坚持不懈。老手程序员在接触新技术时,能欣然接受像个初学者一样处处受挫,并总能在完成工作的同时自学成才。
3.承认细节的重要性。例如变量和函数的命名、CSS属性的命名、该用哈希还是数组,以及其他看起来微不足道,但可能对项目有深远影响的事情。
4.承认大多数的“重要决定”其实并没有那么重要。一般的开发者经济常在技术选型等“重大问题”上陷入唇枪舌战,而程序员老鸟们会避免浪费时间在骂战中。这一点上,它们就像禅宗大师一样。
5.选择合适的工具解决问题。网上有无数的开源库、工具和框架,让人眼花缭乱。而老手们清楚地知道针对怎样的问题,应该用怎么样的工具。
6.明白代码“不值钱”(该删就删)。你必须习惯于删掉几百行代码来重写程序的某一部分,毫不留情。
7.在评估技术的时候要全面。例如,我一直在鼓吹Elixir。它语法优美,社区完善,有很大的潜力。但Elixir诞生的时间太短,所以如果要构建复杂的功能,可能会难以找到能帮你提高效率的开源工具。因此,在评估要不要选择使用一项技术时,你得把所有这些因素都考虑在内。
23.知道什么时候开始回馈。到了某个时候你需要将你的技能和经验传授给年轻的开发人员,就像你的导师当时教授你一样。
24. 能写烂代码。有时候可以当一当“胶带式程序员”。关键是随着时间推移,你需要弄清楚什么时候可以走捷径,什么时候必须走捷径。这其实是最难掌握的技能之一。
25. 礼貌地告诉别人你工作到很晚。如果你是办公室里最后一个,可以发一封简短的汇报邮件。别人一般会注意到邮件上的时间戳的。
26. 像一个领导者(Leader)一样做事,而不是老板(Boss)。老板是让别人为他工作的人,领导者是人们追随的人。做个领导者。
27. 去打打桌上足球。从长期来看,同其他开发者(或不同岗位上的同事)建立联系比在紧巴巴的期限里交付一个功能更有价值。
28. 在压力下学习。你需要知道如何应对像系统宕机而你要负责将它复原的情况,即使一开始你完全没有头绪。
⑥ Java程序员职场全攻略:从小工到专家的目 录
上篇 我与江湖
第1章 初窥门径——行业揭秘 2
1.1 IT精英在中国的生存现状 2
1.1.1 外行人眼中的IT人 2
1.1.2 IT行情分布 5
1.1.3 IT语言平台 7
1.1.4 你说我容易吗 10
1.1.5 我挨踢我骄傲 12
1.2 当今主流公司的企业文化 12
1.2.1 欧美企业的特色文化 12
1.2.2 日韩企业的工作模式 14
1.2.3 中资企业的传统特色 15
1.2.4 两种不同的软件外包方式 16
1.2.5 加入什么样的公司 18
1.3 散兵游勇还是团队作战 18
1.3.1 哪样多一些 18
1.3.2 团队和单兵 19
1.3.3 不要停止思考 20
1.4 这条路大家都是怎么走的 20
1.4.1 职位和待遇是怎么升的 20
1.4.2 有干不动的时候吗 23
1.4.3 走的人多了,还会有路吗 24
1.5 大公司,小公司 26
1.5.1 大公司爱专才 26
1.5.2 小公司爱多面手 27
1.6 本章小结 28
第2章 雾里看花——职场误区 29
2.1 到底差不差钱 29
2.1.1 大家都是个什么身价 29
2.1.2 给自己估个好价 32
2.1.3 先挣的是资本,后挣的是钱 34
2.2 谁给我解决户口问题 35
2.2.1 讲讲户口的故事 35
2.2.2 各地户口政策面面观 37
2.2.3 别怕,咱有暂住证呢 39
2.2.4 户口问题小结 40
2.3 我们不是爱加班 40
2.3.1 常态加班是为何 40
2.3.2 你为什么加班 43
2.3.3 让自己不再加班 43
2.4 莫学狗熊掰棒子 44
2.4.1 做过的这辈子永远都不会忘吗 44
2.4.2 为自己维护一个小仓库 46
2.4.3 多写开发心得 48
2.5 本章小结 49
第3章 下山之路——有备无患 50
3.1 从学生升级到开发人员 50
3.1.1 学校给了你什么 50
3.1.2 咱们还缺啥 54
3.1.3 经验,还是经验 56
3.2 为自己定下目标 58
3.2.1 目标的意义 58
3.2.2 树立目标的学问 59
3.2.3 让自己知道今天该干什么 61
3.3 IT认证的问题 63
3.3.1 认证那点事 63
3.3.2 现在的认证 65
3.3.3 该不该考个证 69
3.4 本章小结 70
第4章 必须通关的游戏——求职之旅 71
4.1 简历靓起来 71
4.1.1 简历不是这样写的 71
4.1.2 写出出色的简历 74
4.1.3 如果是机器筛选简历 77
4.1.4 简历小结 77
4.2 笔试,混可不行 78
4.2.1 初识笔试 78
4.2.2 牛刀初试 80
4.2.3 笔试小结 83
4.3 面试——最难的BOSS 83
4.3.1 面试面什么 83
4.3.2 支招面试 85
4.3.3 面试演习 87
4.3.4 面试小结 92
4.4 试用期——这才是最后一关 92
4.4.1 试用期考查什么 92
4.4.2 多做什么,少做什么 93
4.4.3 试用期小结 94
4.5 本章小结 94
第5章 步入江湖——做事的学问 95
5.1 身为菜鸟 95
5.1.1 打碎牙齿往肚里咽 95
5.1.2 菜鸟不应该自卑 97
5.1.3 一叶障目,不见泰山 99
5.2 锐意进取,菜鸟无敌 101
5.2.1 既是初生牛犊,就别怕虎 101
5.2.2 勤于学习,落后就要挨打 104
5.2.3 菜鸟应该懂得的几件事 106
5.3 知足常乐,健康心态 109
5.3.1 总有你达不到的高度 109
5.3.2 职场爬山论 110
5.3.2 做最好的自己 112
5.4 菜鸟何以菜,大牛何以牛 113
5.4.1 代码量的问题 113
5.4.2 敢于往上走一步 115
5.4.3 升天不成,掉下来也是个半仙 116
5.5 酒香也怕巷子深 117
5.5.1 找到你的优势 117
5.5.2 学会竞争 118
5.5.3 发展才是硬道理 120
5.6 本章小结 121
第6章 立足江湖——做人的学问 122
6.1 新环境有新态度 122
6.1.1 开发人员和厨师 122
6.1.2 做人是为了做事 123
6.2 同事——战友和对手 124
6.2.1 竞争与合作中的做人智慧 124
6.2.2 做一个好同事 127
6.3 上级,不是校长或家长 130
6.3.1 是员工,不是学生 130
6.3.2 上级讨厌的员工 130
6.3.3 怎样与上级处理好关系 135
6.4 新人和下属,曾经的你 136
6.4.1 准备工作 136
6.4.2 学着做个好领导 137
6.4.3 被夹在自己的上级和下级之间怎么办 139
6.5 客户,领导内行的外行上帝 140
6.5.1 如何招待上帝 140
6.5.2 不要这样对待上帝 142
6.5.3 如何对付不可能完成的任务 144
6.6 学着处理和MM的关系 145
6.6.1 这个行业的男女比例 145
6.6.2 如何面对异性员工 146
6.7 本章小节 146
第7章 百尺竿头,更进一步 147
7.1 技术不是万能的 147
7.1.1 为何IT是个服务业 147
7.1.2 业务流程要清楚 147
7.1.3 专业领域的知识要了解 149
7.1.4 软件系统的操作方式 149
7.2 书是人类进步的阶梯 150
7.2.1 还要不要读书学习 150
7.2.2 选本好书不容易 151
7.3 解决问题的方法 152
7.3.1 正招和歪招 153
7.3.2 优先使用正招 154
7.3.3 正招不够,歪招也可以上 156
7.4 软件产品的目标 159
7.4.1 实现功能是底线 159
7.4.2 提升性能带来质的飞跃 160
7.5 多多参加技术大会和沙龙 164
7.5.1 何为技术大会 164
7.5.2 我们为什么去技术大会 165
7.5.3 技术大会PK 165
7.5.4 技术沙龙 169
7.6 本章小结 169
第8章 江湖多歧路 170
8.1 “学院”派和“企业”派 170
8.1.1 何为“学院”派 170
8.1.2 “企业”派的实干 173
8.1.3 一起来做“企业”派 176
8.2 关于“剑宗”和“气宗”的讨论 177
8.2.1 何为“剑宗” 177
8.2.2 何为“气宗” 178
8.2.3 奇技淫巧不如提升修为 180
8.3 有自己的平台才是王道 181
8.3.1 关于框架的纯“拿来主义” 181
8.3.2 项目的分割 184
8.4 “大而全”还是“精而深” 186
8.4.1 “大而全”和“精而深”矛盾吗 186
8.4.2 “大而全”托出“精而深” 188
8.5 本章小结 189
下篇 笑傲江湖
第9章 天下功夫出少林 192
9.1 Java EE开发人员必知必会 192
9.1.1 坚实的基础——核心Java 192
9.1.2 只会Java可不行——大牛的百宝囊 195
9.2 Java ME开发人员必知必会 197
9.2.1 了解不同平台对Java ME的支持 198
9.2.2 游戏开发的基础知识 200
9.2.3 网络编程知识 205
9.2.4 3G、Android对Java ME开发人员的挑战和机遇 206
9.3 当下流行EE框架揭秘 207
9.3.1 Struts和WebWork那点事 208
9.3.2 Tapestry框架 211
9.3.3 Spring——不可多得的好框架 212
9.3.4 Hibernate——从关系世界到对象世界 215
9.4 大型项目青睐的技术与平台 217
9.4.1 JSF框架 217
9.4.2 EJB 3.0业务层技术 219
9.4.3 JPA持久层技术 223
9.4.4 常见应用服务器简介 224
9.4.5 Java企业平台的荣耀之路 225
9.5 如何学好框架 226
9.5.1 全面了解各项功能 226
9.5.2 彻底研究工作机理 227
9.6 本章小结 228
第10章 几种自废武功的做法 229
10.1 相信谬论 229
10.1.1 说出来别不信——链表和数组的速度问题 229
10.1.2 Java真的比C/C++慢吗 232
10.2 迷信工具,缺乏纯代码能力 234
10.2.1 迷信ORM 235
10.2.2 神化IDE 237
10.3 浅尝辄止,孤陋寡闻 240
10.3.1 finally的忽视 240
10.3.2 PreparedStatement的误解 243
10.3.3 管理数据库连接不知连接池 246
10.4 忽视内存管理 250
10.4.1 对象的3种引用 251
10.4.2 “小肥猪”问题 255
10.5 看了就不要再犯的错误 256
10.5.1 “+”惹的祸 256
10.5.2 魔法数字 258
10.5.3 代码复制师的渺茫前途 259
10.5.4 老寿星变量 260
10.6 本章小结 262
第11章 没有必杀技,怎么敢出来混 263
11.1 精通SQL 263
11.1.1 掀起SQL的盖头来 263
11.1.2 强大的SQL 265
11.1.3 SQL优化问题 268
11.1.4 当下主流的数据库产品 270
11.2 拿下正则式 272
11.2.1 细说正则式 273
11.2.2 正则式在Java中的运用 277
11.2.3 正则式在JavaScript中的运用 281
11.3 不会用Ant的开发人员不是好Developer 284
11.3.1 Why Ant 284
11.3.2 Ant初体验 286
11.4 浅谈设计模式 288
11.4.1 设计模式的重要性 288
11.4.2 MVC设计模式 289
11.4.3 单例模式 292
11.4.4 最终守护者模式 293
11.5 本章小结 295
第12章 新锐兵器谱 296
12.1 面向服务的体系架构(SOA) 296
12.1.1 对面的SOA看过来 296
12.1.2 零距离接触Web Service开发 299
12.1.3 博采众长之集大成者——CXF 302
12.1.4 英雄不问岁数——Axis 2 306
12.1.5 走近ESB——企业服务总线 309
12.2 富客户端应用(RIA) 313
12.2.1 从平淡到酷炫——RIA与AJAX 313
12.2.2 酷炫背后的基石——核心JavaScript 316
12.2.3 AJAX的开发利器——Dojo 319
12.2.4 AJAX的最酷代表作——GoogleMap 323
12.2.5 Web 2.0时代的异军突起——Mashup 326
12.2.6 RIA殿堂的技术新贵——JavaFX 328
12.3 搜索引擎技术 337
12.3.1 Lucene开源项目 337
12.3.2 Nutch框架 342
12.4 本章小结 345
第13章 武学奥义 346
13.1 单元测试的利器——JUnit 346
13.1.1 JUnit简介 346
13.1.2 单枪匹马,赤膊上阵——JUnit的单独使用 347
13.1.3 岂曰无衣,与子同袍——JUnit和Ant的联合 350
13.1.4 得道者多助——JUnit在Eclipse和NetBeans中的使用 352
13.2 版本管理 354
13.2.1 版本不可一日不控 354
13.2.2 沙场秋点兵之版本控制系统 355
13.2.3 版本控制系统与IDE的协作 356
13.3 UML建模语言 357
13.3.1 UML就这么回事 358
13.3.2 UML之实战IDE 359
13.4 大型服务器操作系统 360
13.4.1 UNIX平台 360
13.4.2 Linux平台 361
13.4.3 Windows Server平台 362
13.5 集群与负载均衡 362
13.5.1 集群 363
13.5.2 幂等操作 364
13.5.3 我们的程序运行在哪 365
13.6 虚拟化与云计算 366
13.6.1 举杯邀明月,对影成三人——虚拟化 367
13.6.2 云中谁寄锦书来——云计算 368
13.7 本章小结 370
第14章 杂项 371
14.1 专业英语不能不熟练 371
14.1.1 向高新技术看齐 371
14.1.2 等到中文版的时候 372
14.1.3 做一个大牛的需要 373
14.2 维护大脑这个数据库 373
14.2.1 书到用时方恨少 373
14.2.2 让积累成为一种习惯 374
14.2.3 搜索引擎的使用 375
14.3 IT人也要不务正业 379
14.3.1 不懂数学岂不是很糟糕 380
14.3.2 谁说物理是白学了 382
14.3.3 一起来不务正业吧 383
14.4 读学术论文 383
14.4.1 别怕我,我是好人 383
14.4.2 醍醐灌顶,如坐春风 385
14.5 本章小结 386
⑦ 小白,想入门程序员,应该从什么开始学,顺序是什么
小白想要成为程序员,首选是选择一门合适的语言,比如说:Python、Java、C、C++、GO语言等;其次,选择合适的学习方式,比如培训,周末班、脱产班还是网络班。
如果完全没有编程基础,建议大家学习Python,Python入门简单、语法清晰、通俗易懂,非常适合零基础人员。
⑧ 极客时间IT课程的老师胡峰写的《程序员进阶攻略》主要是什么内容
在专栏中,他围绕程序员这个职业,绘制了一条清晰的成长路径图,深入讲解了技术人在不同的成长阶段会面临的常见问题和困扰,结合他自己和团队成员的亲身经历,总结了一套从毕业入行到逐步进阶的完整方法论,扫清迷茫与障碍的同时,帮你建立明确的自我定位与认知,进而一步一个脚印地,实现理想中的自我。
⑨ 想学习编程,怎么入手,求攻略,告诉方法就可以
信息技术的发展时间虽然不长,但其爆炸式的发展速度使信息技术迅速覆盖社会和人类生活的各个角落。程序员们是这场信息化浪潮的见证者之一,更是其中的主要参与者,这是时代赋予每个程序员的机会和责任。
信息技术的更新速度是惊人的,程序员的职业生涯则是一个要求不断学习的过程,永远不能固步自封。本人在工作期间曾看见过很多程序员只要有闲暇时间就浏览一些没有太大作用的网页,在网上聊天,打游戏,浪费了大量的时间,十分不可取。而另外一种情况是,IT技术的日新月异使很多程序员眼花缭乱,什么都想学,却又不知从何学起,今天看看这个,明天学学那个,贪多不熟。
虽然IT技术发展迅速,但很多技术都是有规律可循,一些基本的概念、原理和方法还很通用,可以举一反三。本人根据自己的体会和经验,向那些刚刚踏入IT行业的新程序员们或正在迷茫的程序员们推荐程序员必须掌握的七种武器,有了这七种武器,虽不敢说笑傲江湖,但将自己立于不败之地还是可以的。
第一种武器:开发工具
至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C++和JAVA是我重点推荐的开发工具,C/C++以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C++编写。而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而本人对SUN公司的“网络即计算机”的概念相当欣赏,并相信JAVA即其相关的技术集JAVA One会成为未来的主流开发工具之一。其次,如果能掌握一种简便的可视化开发工具,如VB,PowerBuilder,Delphi,C++ Builder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。另外,需要掌握基本的脚本语言,如shell,perl等,至少能读懂这些脚本代码。
第二种武器:数据库
为什么数据库是如此重要?很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,所以程序员至少熟练掌握一两种数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握SQL的基本语法。虽然很多数据库产品提供了可视化的数据库管理工具,但SQL是基础,是通用的数据库操作方法。如果没有机会接触商业数据库系统,可以使用免费的数据库产品是一个不错的选择,如mySQL, Postgres等。
第三种武器:操作系统
当前主流的操作系统是Windows,Linux/Unix,熟练地使用这些操作系统是必须的,但只有这些还远远不够。要想成为一个真正的编程高手,需要深入了解操作系统,了解它的内存管理机制、进程/线程调度、信号、内核对象、系统调用、协议栈实现等。Linux作为开发源码的操作系统,是一个很好的学习平台,Linux几乎具备了所有现代操作系统的特征。虽然Windows系统的内核实现机制的资料较少,但通过互联网还是能获取不少资料。只有对操作系统有一定的了解后,你会发现自己上了一个新的台阶。
第四种武器:网络协议TCP/IP
在互联网如此普及的今天,如果您还没有对互联网的支撑协议TCP/IP协议栈有很好的掌握,就需要迅速补上这一课,网络技术已改变了软件运行的模式,从最早的客户/服务器结构,到今天的WEB Services,再到未来的网格计算,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,所以,深入掌握TCP/IP协议是非常必要的。至少,你需要了解ISO七层协议模型,IP/UDP/TCP/HTTP等常用协议的原理和三次握手机制。
第五种武器:DCOM/CORBA/XML/WEB Services
随着技术的发展,软件与网络的无缝结合是必然趋势,软件系统的位置无关性是未来计算模式的重要特征之一,DCOM/CORBA是当前两大主流的分布计算的中间件平台,DCOM是微软COM(组件对象模型)的扩展,而CORBA是OMG支持的规范。程序员需要做的不仅仅是利用商业的开发平台来开发软件,而是要理解这些技术的初衷,即为什么需要这项技术,如果你能理解了这一点,再回头看这些技术的具体实现,就如庖丁解牛,迎刃而解。XML/WebServices重要性不言而喻,XML以其结构化的表示方法和超强的表达能力被喻为互联网上的“世界语”,是分布计算的基石之一。
第六种武器:软件工程与CMM
现代大型软件系统的开发中,工程化的开发控制取代个人英雄主义,成为软件系统成功的保证,一个编程高手并不一定是一个优秀的程序员,一个优秀的程序员是将出色的编程能力和开发技巧同严格的软件工程思想有机结合,编程只是软件生命周期中的其中一环,优秀的程序员应该掌握软件开发各个阶段的基本技能,如市场分析,可行性分析,需求分析,结构设计,详细设计,软件测试等。一句话可以概括我的看法:“创意无限,流程保证”。
第七种武器:强烈的好奇心
什么才是一个程序员的终极武器呢,那就是强烈的好奇心和学习精神。没有比强烈的好奇心和学习精神更好的武器了,它是程序员们永攀高峰的源泉和动力所在。