人才在帆软
Java开发:从小白到入门

文 | CodingXiaxw

CodingXiaxw

帆软BI产品线后台研发工程师

Github followers 1.6k;知乎粉丝4.4k,累计获赞5.8k,收藏6.1k。

彷徨》呐喊》朝花夕拾

大一过的很迷茫,社团、篮球、美剧、恋爱,中国各地到处走了走,这一年也就昏过去了。以至于我到现在都还在遗憾 “要是自己从大一开始就自学Java 编程,那我现在不早就成大神了”。当然也不能算是白过,学校c语言课程我学的挺认真,期末考98分,算是为自己的Java编程道路开了一个好头。

暑假揭开了自己在Java编程道路上的帷幕。虽然学校的Java课程安排在大二下学期,但我起跑枪声响起之前开始了自学,当时一本《Java从入门到精通》对自己入门起到了不少的作品。一个月的时间,当然不只是单单看完了,而是在自己电脑上搭建好相关的Java环境后,把书中的代码全都试着自己敲出并运行,测试bug修改bug。同时加了很多学习Java的qq群,里面不少前辈推荐《head in first》系列,这本书的研读巩固了我的Java基础。

几个Java项目后想进阶学习,却又迷茫不知路在何方,知乎上搜索了很多人关于“如何系统学习Java知识”的回答,零零散散不成体系,显得艰涩难懂。正好身边有写Android的前辈,了解到Android是用 Java 语言进行开发的,就走进了Android的坑。从stormzhang《著名的Android学习道路》开始了半年的Android道路,写了很多app,又半年转战JavaWeb,学习了基本知识以及三大框架,练习了不少Web项目。

真的超级感谢大二这一年的自己,沉住气来将全部时间用在编程上,积累了大量的知识和项目经历,相对于其他同学,让我在大三新学期初始就走进了公司,走进了实际业务。

实习1年,大三生活紧张但满足,公司与宿舍二点一线,锻炼了我的实战能力。17年3月为了准备春招,辞掉实习,泡了3个月图书馆,刷算法、写项目、背面经、笔试、面试,东奔西跑,累到爆炸,好在皇天不负苦心人,最后终于也成了别人眼中的“offer收割机”,也终于完美的结束了秋招。

按照国际惯例,感谢室友,感谢朋友,感谢亲人,感谢那些所有该感谢的。

永远不要嫌晚

不管何时何地做你想做的事永远都不嫌晚,如果你发现生活不如意,我希望你有勇气重来。出自《本杰明.巴顿奇事》。

我为什么要在干货前给大家描述我漫长又无聊的经历呢?划重点:永远不要嫌晚!什么时候开始都不晚!就我个人而言,大一暑假开始学习编程,从小白到入门用了多久?真正花在JavaWeb上的时间不超过半年,并且这半年里我还贪吃蛇似的,嚼了很多很多其他相关的的互联网知识。所以大家永远不要嫌晚,即使你现在已经大四,面临找工作了,也不要急躁不要放弃,只要下定决心从现在起开始学习,毕业前也一定会收获让你满意的offer。

我的JavaWeb学习路线

以下干货,仅供参考,还请多多指教:

第一阶段:Java基础,包括Java语法,面向对象特征,常见API,集合框架。(基础)

第二阶段:Java API,包括输入输出,多线程,网络编程,反射注解等。(重点、精华)

第三阶段:数据库SQL基础,包括增删改查操作以及多表查询。Oracle和Mysql二选一。

第四阶段:JDBC编程,包括原理,连接库,API,虽然现在Hibernate比JDBC 要方便许多,但是JDBC技术仍然在使用,JDBC思想尤为重要。

第五阶段:JDBC深入理解高级特性,包括数据库连接池,存储过程,触发器, CRM 思想(高级)。

第六阶段:Servlet开发,从此踏入JavaWeb开发的重要一步,包括XML, Tomcat服务器的安装使用操作,HTTP协议简单理解,Servlet API等。(Java Web开发的基础)

第七阶段:JSP开发,包括语法和标签,自定义标签,EL,JSTL库了解以及 MVC 三层架构的设计模式理念。

第八阶段:三大框架-Spring、SpringMVC、MyBatis。(JavaWeb的精华部分)

第九阶段:企业框架,比如Maven、redis、log4j等等。

以上每一个知识点,都需要结合相应的项目来巩固。

学完这些你就可以出去找个实习啦,只有真正接触到实践项目,你才会发现在公司学和学校老师讲的有多大区别。

用正确的方法

1.硬件

电脑-推荐Mac

首先声明我不是果粉,个人Windows,Linux,Mac OX 系统都用过,只能说 Windows上面的开发工具简直难以恭维,尤其命令行超级难用,而Linux自己必须得花不少时间在折腾中,更是不适合新手了。迄今为止Max OS是我认为最好用的系统,没有之一。所以如果你不差钱的话,强烈建议入手一台Mac,推荐Pro系列,当然它的价格确实比较高,如果暂时入手有困难,也可以选择其他的替代。

2.开发环境

IDEA:现在很多钟爱eclipse的工程师都在搬向IDEA ,都在说“IDEA 比 eclipse强大”。我也是从eclipse转向IDEA的,过程确实很艰难,但熟悉了 IDEA的编程环境后发现“ IDEA比eclipse强大”这句话不是空穴来风。当然,我这里只是建议,具体决策还是在你。

Google:技术问题尽量Google,所以需要你有一台会翻墙的电脑,就不要吝啬了,买个vpn吧。“不会翻墙的程序员不是好程序员”。

Git:作为版本管理工具的svn与git,相信处在技术一线的大牛应该都改为被Github带火了的git了吧。

Github:一个免费的远程仓库,个人开源项目放到GitHub上是完全没有问题的,它还是一个开源协作社区,不仅可以让别人参与你的开源项目,也可以去参与别人的开源项目。另外想告诉大家的是,现在很多公司在招聘研发时都会查看应聘者的Github,“offer收割机”很大程度上是源于Github上项目丰富,所以面试时简单提问几句就很轻松地被录用了。

Linux命令:你可以选择遇到问题Google搜索,也可以选择书籍系统学习,推荐《鸟叔的Linux私房菜》。

Stack Overflow:一个程式设计领域的问答网站。开发过程中要是遇到解决不了的bug信息,只要复制粘贴往上一放,基本就能得到解决方法了,当然了这个网站有点考验英文功底,也需要翻墙才能访问。

建议大家擅用开发工具,好的工具会给自己的开发带来很大的帮助。

3.不同水平的人用不同的方法

在这里我必须强烈建议新手们结合视频学习,身为过来人我很清楚一开始入门很难,只是看书或者资料难以理解,而这时候结合视频讲解,加上自己的书籍与实战,会起到事半功倍的效果,所以不要小看了视频的作用。视频学习有很多,我没法给你推荐最好的,只能以我自己的角度推荐质量还不错的。我以为马士兵老师的Java视频教程,是Java讲的最好的一个讲师了。

如果你是有些基础的人,还是直接撸书籍吧,毕竟视频讲的比较慢,较书籍需要花费的时间太多。

别忘了随手记笔记。我自己搭建了一个博客,用于记录自己学习JavaWeb的整个历程。人都是健忘的,你很难保证今天学到的就完全学会了,所以记下来,会很方便你以后回头复习加深印象,不然后面吃到亏可别怪我没提醒你。记住一定要写的详细,其实我写过的一些JavaWeb项目都很简单,但却在github上得到了很多人的star,我思索原因,不是我牛,是我的开发文档写的很详细,十分适合那些刚入门的新人进行学习。

题外话

语言只是你学习编程技术的第一道选择,java、c++或php甚至python,都是个人兴趣;你要经历的是第二道选择,是思考可以你要用这门语言去做什么。例如我学习Java,就需要从web系统的开发或是Android开发或者其他的可能中选择其一。学习的时候一定要经常思考,带着问题去编程。

每天坚持10小时的代码开发,如果不能做到建议洗洗睡吧。或许很多时候你会感到枯燥,但大多数人都会这样,坚持一下吧。当然必须要说兴趣是最好的老师。毕竟看到一个新鲜的技术,你难道不想学会后自己写一个漂亮的东西吗?

终幕

自学是一个漫长的过程,需要大家不断克服路途中遇到的困难,要始终坚持心中的信念。

写了这么多,竟然忘记自我介绍了…请叫我codingXiaxw,之所以取这么怪的英文名,是因为我不是在coding,就是在去coding的路上。我现在在BI产品线的后端研发组,如果你觉得以上介绍对你有所帮助,你可以在来到公司后请我吃饭以表谢意,来者不拒。