对于每一位才开始接触JAVA的新手来说,先不要管算法和数据结构,大多数简单的程序不需要用到算法和数据结构,所以当你真正需要时再去学习。编程一段时间以后,你就会知道在哪些地方用到他们。
这时知道算法的名字并了解它们的功能,然后动手去实践。当我们在去理解算法并动手编程实践过程中获得成长,如果现在还在迷茫的自学,找不到什么突破口的人来说,这可能是一个硬伤!所以找一个经验丰富的老师是很重要的哟,再加上同学一起学习怎会是难事?如果你有强烈的学习欲望。
第一:我们常常都说要先预习,所以这是肯定的,如果你接收能力非常强的话就可以不预习。如果只是一般最好提前预习一下,有什么不懂的做记号,在老师讲的时候就会更清楚一些。这是很关键的。可以帮你提高很多的。
第二:在自己学习或者跟着老师学习完以后。一定要理解知道是怎么回事,在自己完成一些习题,跟着老师或者自己看的例子。不懂一定要问,一定要问和与自己的伙伴交流沟通,一起讨论这是你学习成功的一大法宝。只有通过自己的思考写出来的代码才是自己的,你死记硬背下来的代码肯定不是你的。学程序一定要讨论。不管是未来你要从事产品经理还是做项目,讨论是程序员必须具备的东西。
第三:做练习时最好是独立完成。不会的才采用第二点。动手操作的过程中将自己不会的东西记录下来。然后针对性的找人指导。如果你还是一个人在奋战与程序界,如果你想真正的学好,精通JAVA,可以跟着经验丰富的师资团队、JAVA课程研发者一起学习和交流。每天也能够一起学习更多最新的java项目实战。
第四:多思考,多学习,多问,多做一些逻辑方面的题。因为学程序逻辑是最重要的,英语好不好和学好程序没有任何关系,所以不用太在意这个,努力去学习去做,选对方向,找对人帮助,你就能够学好。
第五:开始学习时就从最简单的程序入手,不要急,比先写一引起加减法,比较这些题。有助于你的理解。
Java不是一门独立存在的一门编程语言,它与其他语言都有共同之处也有不同之处。技术的联系都是千丝万缕的。就好比现在Java应用最多之处恐怕就是WEB,那么你就需要了解前端,也就是我们常常说的html等等。所以Java所涉及的技术并不是单一的,你应该要学习Java所涉及的基础知识,对于“CLASSPATH要怎么设置啊”、“跪求JDK下载地址”等等问题,你不该问,因为网上太多答案了,甚至换个角度说,你是不是还不适合直接学习编程?
1)买本Java的书。
关于Java面的书其实有很多,但是并不是每一本适合你自己,其实书不在于多,在于是否适合自己,你自己是否看得懂,此外要求希望比较新版本书籍,因为技术每天都在更新。
2)准备Java学习环境
对于Java初学者,不建议用IDE工具,通过一行行的代码,您会遇上很多问题,只有这样才能培养你怎么去解决问题,并加深你对Java的理解,为日后编程生活积累丰富的知识。
3)Java基础学习之路
Java的体系分为Java SE、Java EE和Java ME,Java的敲门砖就是Java SE了,也就是你要入门学习的内容,不论你日后是选择哪个体系领域作为发展方向,你都得从Java SE起步。
4)JavaEE学习之路
学完Java SE,别以为掌握Java,那只是完成“万里长征”的第一步。接下来选择学习Java EE或是Java ME(或者你还想不断深入学习Java SE,只要你喜欢,你可以一直深入下去,就像前面所说的,我不会讲到Java ME的学习);估计选择Java EE方面的学习者会多一些,Java EE所涉及技术非常多,考虑到初学者的接受程度,我会尽量从最常用的角度来介绍。
学习Java EE,在开发环境上不建议再用文本编辑器,我感觉Eclipse比较适合初学者,个人也非常喜欢Eclipse,如果你喜欢用别的IDE如NetBeans,也没什么问题,关键看个人喜欢。
三、学习JSP/Servlet
在Java EE中,要学习JSP/Servlet(结合Tomcat、MySQL)技术,你还得掌握HTML基础知识,最好再掌握些Java、CSS的技术,而了解XML是必不可少的。在学习JSP/Servlet过程中,应该结合学习 JDBC、数据库开发技术,毕竟绝大多数Java Web项目都是和数据库紧密结合的。
四、 学习数据库开发技术
数据库技术是做业务系统必备技能,Java Web开发人员最低程度都应该掌握SQL语句的使用!你可以结合实际需要,选择一种数据库,并花大力气掌握其开发技术。
记住,学习数据库开发技术和学习Java EE,是相对独立的,你可以在学习JSP/Servlet的同时,学习数据库开发技术(如SQL语句等),或者先学数据库开发技术,之后再学习JSP/Servlet。
五、Java之外的学习
等你对Java EE有些感悟的时候,你自然就会想不断扩充你的知识层面,那么到这个时候你可以学习Spring、Hibernate,以及各种Web框架。随着技术以及经验不断积累,你会逐步分析、设计等更高层次的知识,这时候,你可进一步学习相关的UML、模式等知识。
学习Java技术我们可以看哪些书籍?我整理了一些不错的书籍教程在这里推荐给你。
1. 操作系统与网络的书
《Linux内核设计与实现 第3版》
Robert Love用最薄的篇幅,顺畅的文字将Linux内核主要的算法讲清楚了,《深入理解Linux内核》,《深入Linux内核架构》之类厚厚的全是代码,不是专门的内核程序员看这本足够了。
《Linux系统编程 第2版》
继续是Robert Love,比起APUE也是以薄见长,专门针对重要的系统调用讲解。
《性能之巅》
操作系统的性能调优、监控、工具和方法论,看这本就够了,已经足够厚,可能是书单里最厚的一本。
《TCP/IP详解 卷1:协议》
这么多年过去了,TCP的书好像主要还是只有这一本,有点旧了,看了也还是半懂不懂的。后人在2011年写了第二版,机械工业正在翻译。
《WireShark网络分析就这么简单》和 《WireShark网络分析的艺术》 new!
多少人,是看了这两本轻松又实战的书,才真正理解TCP的细节。
PS:《UNIX环境高级编程》和《UNIX网络编程》,APUE和UNP更多作为一本超厚工具书存在。《Unix 编程艺术》,扯的都是闲篇,厚厚的一本其实略读一下就行。 《现代操作系统 第3版》如果看LKD未尽兴,可以回头看看这本基础概念,感觉比那本枯燥的《操作系统概念》(恐龙书)读起来舒服。
《TCP/IP指南》 前面wireshark书作者的推荐,网上有英文免费版,然后有中文版的卷1和卷2,但可能那么多章节那么厚你只关心TCP和HTTP两部分。《HTTP权威指南》,同样是自己从厚厚的目录里挑选感兴趣的章节来看。另外,那些日本韩国人写的《图解XXX》感觉都不喜欢,真的不行。
2. 算法的书
《数据结构与算法分析-Java语言描述 第3版》
够薄,数据结构与算法分析的点基本都涵盖了,而且喜欢它的示例代码是Java写的,新出了第3版。
《算法 第4版》
可与上一本对比着读,厚一些,也多些图,但知识点没上面的全,也是Java的。
PS: 《数学之美》、《编程珠玑》,都是专栏文章,讲得并不系统,可以当兴趣读物来看。
《算法设计与分析基础 第3版》数学系偏爱无比枯燥很多公式的《算法导论》, 计算机系喜欢这本实用主义的典型。
3. 架构设计的书
《软件系统架构:使用视点和视角与利益相关者合作 第2版》
也是教科书,最难得的是,这本老书在十年后的去年升级了第二版,所以感觉鲜活了好多,也许是最鲜活的一本架构书。
《恰如其分的软件架构 – 风险驱动的设计方法》
由于人类与生俱来的惰性,计算机原本科学的、精准的设计方式,有了敏捷的借口之后就很难再维持了。本书就是在这种背景下,提出由风险来决定设计的度。除了开始的风险驱动部分,其余部分就是规规矩矩标标准准的架构师教科书。
《发布!软件的设计与部署 – Release It!: Design and Deploy Production-Ready Software 》
关于高可靠性的软件,学校里不会教,出来社会却要面对的那部分,英文的原标题更清晰。
《大型网站技术架构:核心原理与案例分析》
淘宝出品,大型互联网站的科普入门书。
《高扩展性网站的50条原则》 new!
同是入门级读物,如果还有个高可用50条原则,那就齐了。
《微服务设计》 new!
那么多微服务的书,还是这本比较不像赚快钱的。
《大数据日知录》
前几年参加各种技术会议,CAP,最终一致性,RWN,向量时钟,Paxos,一致性哈希,Gossip什么的能灌你一耳朵。而现在,你只要在家安安静静的看书就够了。不过这个领域发展太快,又一年过去了,期望它可以持续出新版。
PS: 关于设计模式,我以前曾经有过很多很多本,GOF23啦,企业应用架构模式啦,EIP啦, POSA 5卷本啦,反模式啦,JavaEE/SOA/Restful的模式啦。但现在觉得对新人来说,一本Java写的《Head First 设计模式》,知道什么叫设计模式就够了。
《程序员必读之软件架构》作者维护着 。不过中文书名叫“必读”有点过。
4. 语言的书
《Java并发编程实战》
Java并发经典,人手一本不用多说了。
《实战Java高并发程序设计》 new!
国人新作unix环境高级编程答案,流畅易读,内容也比上面一本来得新。
《深入理解 Java 虚拟机 第2版》
理解虚拟机并不是那么难,Java程序员来说,很多知识其实是必须的。另外还有几本类似主题的书,忽然一下子都出来了。
《Java性能权威指南》 new!
比起多年前那部调优圣经,讲得更加深入,也更加贴近现在的JDK。可以从里面挑些知识点来,做Java调优的面试题。
《有效的单元测试》 new!
不同于那些动辄BDD的高深书籍,专注于如何写“好”的,可维护的单元测试,拿来给团队看,能省很多口水。
《七周七语言》
《七周七X》系列的开山之作,可能也是最好的一本。
《七周七X》系列的开山之作,可能也是最好的一本。
PS:《Effective Java》外界一致推崇,但有点太过誉了。另外《Thinking in Java》有点旧了,而且作者思路随意,译者语言晦涩,新程序员还是建议同时再看两卷《Java核心技术 - Core Java》。
5. 具体技术的书
《Docker: 容器与容器云》
这本书叫Docker一本就够了,的确够了,在那些Docker操作指南书之上。不想着改Docker代码的看它就够了,别想着什么《Docker源码分析》。
《Redis设计与实现分析》
用Redis的工程师桌面必备吧。
《分布式服务框架:原理与实践》 new!
如果要写一个SOA框架unix环境高级编程答案,要留意的方方面面。
《Spark技术内幕》
深度与厚度之间,选了这本200页的薄书长春linux培训,一样有很多的原理与代码解释,但不会像有的书那样贴20行代码只写一行字。
《Netty权威指南 第2版》
虽然网上的吐槽较多,但Netty 快速入门也只有这一本了。
6. 程序员的自我修养
PS. 最近没买什么新书,随便说点旧书:
《程序员修炼之道-从小工到专家》,Pragmatic Programmer-注重实效的程序员开山之作,翻译的马达维文笔也和熊节一样好。
《代码整洁之道》和 《程序员的职业素养》,英文名是很相近的《Clean Code》和 《Clean Coder》,应该接替《代码大全2》成为必看的系列,因为后者太厚了,而且也有不少过时的东西,要自己去过滤。
《重构》很厚,但最有价值就是前面几章的洗脑篇,具体实作不如薄薄的《重构手册》。
关于敏捷的书,最开始的那本《解析极限编程–拥抱变化》就很好,再随便找本Scrum的流程看看就够了linux数据恢复,《敏捷开发的艺术》也不错。
《布道之道 – Driving Technical Change:Why People on Your Team Don’t Act on Good Ideas,and How to Convince Them They Should》,经常在组织里推行新技术的同学可以看下,七种怀疑论者模式,脑海中一幅幅熟悉的面孔。
PS. 温伯格的书网上很推崇,《成为技术领导者》之类的,但我觉得年代太远,读起来其实没多大意思,一两个鸡汤观点还要自己从书里慢慢淘,有那功夫不如看点别的。