趁着昨晚空闲和今早的时间,编辑这一篇帖子,写下当初我自学Java走的弯路,希望大家引以为戒,不要多走前人走过的弯路,浪费时间。到今年年底结束,我做Java开发已经七年的时间了,现在月薪37k已经算知足了,但是距离我年薪百万的目标还有很长的路要走,而以后靠的不能仅仅是技术,更是一些管理和带人方面的知识和头脑。因为曾经自己自学Java的时候走了不少的弯路,今天想做下总结:
弯路一:盲目的去学当初我在对于Java这个行业什么都不了解的情况下,比如:不知道未来发展趋势,不知道学习Java应该注意哪些初始问题,不知道具体的学习规划学习路线等等,一味的买书看书,看视频,到了中期阶段萌生放弃的想法,和主要是因为觉得自己越学越迷茫,也知道自己这样学找不到工作,这是初学者最大的误区。
弯路二:没人指点。在之前,Java对于我来说是从来不了解的行业,而我当时从来没有想过找一个这个行业比较厉害的人去请教下,现在我终于认识到了一点什么叫“方法不对,努力白费”所有的Java大神都有自己的学习方法,而学Java的学习也基本是一致,而对于一个什么都不懂的初学者根本不会知道怎么学,这也是造成失败的最直接原因。所以学Java一定要有人指点。
弯路三:盲目看书对于新手来说,学习一个技能肯定是买书看书,但是后来我才实践的证明,对于一个啥都不懂的初学者来说看书基本可以成为无用的,因为这样的结果就势必会造成大多数人的情况:能看懂,但是永远不会写,这就是我最初出现的问题,非常烦人,所以建议初学者少看书,多动手,必须弄清楚Java的效率学习方法。
学习Java确定切记三点:
1.少看书,多动手,手别懒 2.初学的问题,不要觉得自己很NB,该找人问就找人问 3.学Java的人很多,同时放弃的占据80%
很多人在学习的时候会担心自己的学历找不到工作,说下我对于这个事情的理解,现在这个社会好像在说学历越来越重要,我个人并不是这样认为的,如果一个人因为学历而不去学习技术,一直做又脏又累的活,那他可能就是这样的命运。人不会因为学历而不是学习技术,至少学历无法改变,但是你总可以改变其他的东西。是否应该去培训?我个人的建议不应该去培训,根据现在行情来看,四个月培训出来找不到工作的人很多,而且还要辞掉工作,这样做法是不理智,建议在线上学,这样可以降低很多成本,还有人指导,可以边工作边学。
关于在校的学生如何学Java:
我见过很多在校学生大学四年都是混过来的,在目前来看,我们可以把他看成是正常的现象,到了大四的时候,很多人就开始恐慌找工作的事情,那个时候想学业没有学习的心,一直在纠结之中,这就是毕业学生的迷茫。所以现在大二大三的学生一定要吸取前面人的教训,不要等着大学混了四年,然后去还债。不知道要用多少的时间才能还回四年欠下的债。
1、关于学习。Java开发的技术,主要靠自学应该,可能有些大学开的课有相关方面的课程,但新技术还是要自己去学习。另外,知识学的好,不如东西做的好,要多练习多多练习多总结经验,做出来东西摆出来让别人看,且看着是那个样,看着舒服,才是王、道,而你懂的多,但就是动手能力不行,让你做个东西,做半天做不出来,那别人会怎么想,可想而知。
2、关于代码编写:建议初学者脱离可视化编辑器,练习手写代码能力,这样看似麻烦,笨拙,但坚持下去,真正到你进行设计时就会体会到其中甜头。手写代码,对于你对代码的理解是很有帮助的,同时也会便于编写更具有语义的代码。
3、关于学习方法:自己不理解的实在想不明白就百度一下,或者到各大论坛去提问,请高手帮你解决,不要不好意思,当然去的时候尽量提些有技术含量的问题,基础知识不懂了就去翻翻书。要经常逛论坛,向高手学习经验,有机会大家可以去看看,里面高手很多。
可以自学,但是要有一个老司机当你师傅,你就会进步非常快。书上和教程上的知识点并不难,难的是具体问题的处理,这时候,老司机有经验,他能指导你,让你少走弯路。其实感觉还有很多东西要说。可忽然又了种“想要说些什么又不知从何说起”的感觉。最主要的原因我困了。。。也都是想到哪些到哪。如果有什么问题大家可以直接问,知无不言,言无不尽。对于我这种市井小民,除了沙发上的屁股印,能帮到别人同样也可以提升我的存在感,好让我出现一种这个世界需要我的错觉。哈哈。
顺便在这里说一下,我目前是在职Java开发,如果在入门学习Java的过程当中有遇见任何关于学习方法,学习路线,学习效率等方面的问题,你都可以申请加入我的Java新手学习交流群:537864251,这里面聚集了很多正在学习Java技术的初学者,缺乏基础入门的视频教程也可以直接来找我,我这里有最新的Java基础精讲视频教程,群文件里面还有我做Java技术这段时间整理的一些学习手册,面试题,开发工具,PDF文档书籍教程。
如果你想要通过自学Java从事这方面的岗位工作,你需要掌握的技术知识点有这些:
第一阶段-Java基础
JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。
在Java基础板块中有6个子模块的学习:
- 基础语法,可帮助你建立基本的编程逻辑思维;
- 面向对象,以对象方式去编写优美的Java程序;
- 集合,后期开发中存储数据必备技术;
- IO,对磁盘文件进行读取和写入基础操作;
- 多线程与并发,提高程序效率;
- 异常,编写代码逻辑更加健全;
- 网络编程,应用服务器学习基础,完成数据的远程传输。
学习该阶段,可以完成一些简单的管理系统、坦克大战游戏、QQ通信等。
第二阶段-数据库
数据库不仅仅是Java开发工程师的必学课程,也是其他语言都需要掌握的技能。用于对交互过程中客户的数据进行存储。
该板块包括关系型数据库和非关系型数据库。
例如:MySQL、oracle、redis、MongoDB等。
数据库学习完毕后,可以将数据存储到数据库中,也可以通过SQL语句从数据库中查询数据,结合Java项目可以实现动态站点的数据的保存。
第三阶段-前端技术
Javaweb阶段包括前端、数据库和动态网页。Javaweb是互联网项目的入门课程,是学习后面高进阶课程的基础。
首先,我们先看一下前端板块。该板块主要包括如下几个模块:
- HTML5,网页制作标记语言;
- CSS,对HTML制作网页进行美化;
- Javascript,嵌入在页面中的脚本语言,具备逻辑性;
- Vue,前端框架,简化了与服务器端交互的操作,用户良好的交互体验是必不可少的。
学习前端技术后,可以完成类似京东、淘宝的前端工程的编写。
第四阶段-动态网页技术
动态网页是中级程序员服务器端编程的基础,是高级框架学习的必备课程,后期学习的框架、服务底层都是基于动态网页技术之上的。
该板块包括Javaweb核心技术、包括Servlet、Request、Response、cookie和Session等,通过这些技术的学习可以完成动态站点开发,可更好的完成服务器端与客户的交互,让页面的数据“动”起来,做出小型的应用系统。
第五阶段-编程强化
编程强化是对解决实际问题方面做一个深入的了解和应用,是对JavaSE基础的加强,对后期自动以框架和对一些服务框架的底层理解做支撑。
编程强化板块主要包括如下几个模块:多线程高级、涉及线程内存、线程通信等;JVM优化,对JVM底层进行调优来提高项目执行效率;NIO,同步非阻塞IO来提高效率。
学习该阶段,可以对原有项目进行优化从而使程序更快更稳定。
第六阶段-软件项目管理
JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。
在Java基础板块中有6个子模块的学习:基础语法,可帮助你建立基本的编程逻辑思维;面向对象,以对象方式去编写优美的Java程序;集合,后期开发中存储数据必备技术;IO,对磁盘文件进行读取和写入基础操作;多线程与并发,提高程序效率;异常,编写代码逻辑更加健全;网络编程,应用服务器学习基础,完成数据的远程传输。
学习该阶段,可以完成一些简单的管理系统、坦克大战游戏、QQ通信等。
第七阶段-热门技术框架
使用Javaweb进行企业级开发是完全可以的,但是开发效率比较低,所以对常用的逻辑操作进行封装就形成了框架,因此框架是企业开发的入门技能。
热门框架板块主流框架有如下几个:Spring框架,占据统治地位,其生态系统涉及各个方面解决方案;MyBatis框架,使用ORM思想对数据库进行操作。
该板块学习后,就可以进行真实企业级项目开发了,做出的项目也会更加符合企业要求。
第八阶段-分布式架构方案
随着互联网的发展,业务的复杂性和用户的体验性都需要提高,所以分布式架构出现了。该板块主要讲解的是分布式架构的相关解决方案。
主要包括如下模块:Dubbo,高性能的 RPC 服务发布和调用框架;SpringBoot,简化Spring应用的初始搭建以及开发过程;Spring Cloud,一系列框架的有序集合,如服务发现注册、配置中心、负载均衡、断路器、数据监控等。
该板块的学习,可以具备大型互联网项目开发的必备技术和实际经验,为进入BATJ打下基础。
第九阶段-服务器中间件
中间件板块是大型互联网项目中必备的。服务中间件可以帮助各子模块间实现互相访问,消息共享或统一访问等功能。其包括远程服务框架中间件,例如阿里(Apache)的RPC框架Dubbo等;消息队列中间件,例如:阿里巴巴开源分布式中间件RocketMQ、高吞吐量消息发布和流处理服务Kafka等。
学习服务中间件是中级JavaEE工程师必要技术,也是JavaEE架构师必须精通的技术。
第十阶段-服务器技术
不管是使用原生Javaweb进行开发,还是使用框架进行开发,项目最终需要对外发布才能供全世界的人访问到,而服务器板块就可以解决这个问题,所以服务器是项目发布的必要技术。该板块包括虚拟化和web应用服务器的学习,主要包括如下几个模块:Vmware,虚拟机软件;Linux,专门用于服务器的系统;Nginx,集群部署时反向代理服务器;Tomcat,项目发布时主要使用的服务器。
该板块学习后,我们就可以把开发好的项目发布到服务器中,然后供你的小伙伴远程访问了,超酷!
第十一阶段-容器技术
容器化技术是近两年超级火的一个专题,通过容器化技术可以对环境进行打包,方便移植,大大提高了开发效率。该板块包括容器化技术Docker和其平台管理引擎Kubernetes,其中,Docker 是一个开源的应用容器引擎,可以打包应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows 机器上,也可以实现虚拟化。而Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效。通过该板块的
第十二阶段-业务解决方案
虽然我们已经具备了基础技术和高阶技术,但是要想与企业开发相接轨,还需要对实际项目的业务解决方案进行探究。而此版块就是在实际业务场景中的真实解决方案集合,常用的业务解决方案有如下:搜索业务场景解决方案、日志收集与分析场景解决方案、工作流引擎场景解决方案、任务调度场景解决方案、地图开发平台场景解决方案、支付开放平台场景解决方案、图表可视化场景解决方案。通过分析实际业务来学习这个解决方案技术集,完全可以达到中级甚至高级工程师水平。
总结