科班学习java遇到瓶颈,每天云里雾里怎么办?

声明:这个问题困扰了我好久,今天在知乎找到了答案。知乎链接https://www.zhihu.com/question/24240982,感谢大神@Tony He的回答。

作者:Tony He
链接:https://www.zhihu.com/question/24240982/answer/27138388
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

  当我看到你写出“是什么——干什么”的时候,我就知道你迷茫的原因了——学习方法不对
  去书店找跟Java相关的书,你能找到一堆!都把他们买回来通读一遍吗,显然不现实。即使你真的那样做了,你也发现你还是什么都干不了,而且过程无比痛苦和迷茫。
---------------------------------------------------------------------------------------------------------------------

有效的学习方法是怎样的呢?

  伟大的林副统帅(致敬)曾经说过—— 学习毛主席著作要带著问题学,活学活用,学用结合,急用先学,立杆见影,在“用”字上狠下功夫
  林副统帅英明!几十年前就给我们指出了学习IT技术的真谛。

  有一个教育界流传已久的谬论——“如果要让学生喝下一杯水,老师首先要有一桶水”,其实不对,老师不一定需要有一桶水,甚至连一杯水都不需要,老师要做的是——把学生整的很饥渴,然后告诉他们哪里有水,他们会迅速奔向有水的地方把自己灌饱。

  明白我要说什么了吗? 首先你得要有应用的需求,基于这个需求你会去找答案,找到一个答案、解决一个问题,你的学习就会变得非常有效,而且你学到的知识就是最实用的知识。

  你之所以摸不着头脑,就是因为你根本没有产生学习某项技术的需求。

举几个栗子
  很多很多年以前,我初二,想在屏幕上显示一个下拉菜单(用的是QBasic),为了多次执行一组操作,我不停地复制粘贴一段代码,旁边一个小学六年级的“大师”看了一眼说:“你为什么不用函数?”, “什么是函数?" 那个下午我学会了function这个伟大的东西,尼玛太爽了,再也不也复制粘贴了。我这辈子都记得这个玩意——函数是预定义的功能块,通过参数传入信息,通过返回值传回结果,在程序中使用函数实现代码复用,可以减少代码数量,提升代码可维护性...试想一下,如果一开始就读这段文字,你能知道函数是干啥用的吗?

  另一个例子,很多学校的数据库课程是单设的,学生对于数据库是干嘛用的很难产生感性认识。比较理想的教学方式是他们有了一定的编程经验以后,在某个程序中产生了需要存储、查询数据的需求时再将数据库引入进来:从用户界面得到数据了,要插入数据库,就开始学"insert into...", 要删除数据,就开始学"delete from ...", 发现查询速度太慢了,咱建个索引,怕数据不符合要求,咱建个约束,要从多个表中提取数据,我们再开始学join....

  小结:学习知识要先给自己一个应用目标,在应用中产生了问题,再根据问题去找答案,当答案积累多了以后,你的知识将慢慢形成体系,这种学习方法,称为归纳法

  找答案的过程无疑是痛苦的,有人会说这种方式学的太慢,学的不扎实,有些面没有覆盖到。没关系,你有问题自己解决不了可以问老师,老师会让你少走弯路。
这样学习的好处在于:

  1. 你可以通过观察问题是否解决了来检验你是否真正掌握了某项知识;
  2. 这样的学习过程锻炼了你根据问题找解决方法的能力,是程序员最重要的能力之一。
  3. 你学习到的知识,是最实用、最常用、最急用的知识。

---------------------------------------------------------------------------------------------------------------------

  在补充Java学习路线问题之前先声明,参与最后一个Java项目距今已经8年了,此后一直沉迷在C#的温柔乡里,因此如果有对Java叙述不准确的地方,或者有偏见,请大神们随意批评、指教。

  Java这货,以跨平台为核心卖点(有人说这是个笑话),基本上可以认定迄今为止,Java是除了C和C++之外运行环境最丰富的语言之一,这一点上C#还确实是差点。

  Java的生态圈比较完整,从客户端(桌面和移动端),到服务器,到中间件,都可以用Java开发。

  1. 客户端方面

      在客户端,Java可以用来开发桌面应用和移动应用(比如安卓), 早年非安卓的智能机也可以运行Java程序。

  2. 服务器应用

      服务端是Java的长项,Java可以运行在Windows, Unix
like服务器上,这一点C#望尘莫及,虽说C#也可以在Linux环境下运行,但毕竟还没有形成主流。C#的程序还是在Windows下运行最放心。

Java的学习路径

  第一个阶段,作为初学者,通常刚开始接触Java都是学习"J2SE",
主要包括的内容包括:

    1. Java开发环境的设置

    2. Java程序的编译和运行方法

    3. Java的基本概念(类、数据类型、变量、常量、表达式、函数、循环、分支、常用的类库......

    4. 编写控制台程序或者GUI程序(比如swing...

基本上,在这个阶段的学习都不会太有困难,因为涉及到的问题都被局限在Java中,界面也很简单,不难学。

  但是从Java EE(又称J2EE)开始,长得一点都不像的各路妖怪几乎同时出现,JSP/Servlet, Javabeans, EJB, RMI,
WebService,数据库,JDBC,甚至HTML/CSS, 问题是,你根本不知道他们有啥关系,好忧伤啊!

所以,我一点都不建议你一开始就一头扎进这些具体的技术里,会被淹死的。

学JavaEE, 也可以从实际出发,先给自己设定一个项目目标,基于这个项目目标去达成自己的学习目标。

以你目前的状况,我建议你试着用从一个留言板做起,从用户注册、发表留言、留言显示开始,你至少可以了解:

  1. HTML与CSS如何实现界面

  2. 如何用JavaScript实现客户端交互,比如检查用户输入的信息是否有效(其实这货跟Java一毛钱关系都没有)

  3. 如何用JSP处理客户端请求

  4. 如何设计数据库以存储留言板信息

  5. 如何在JSP中访问数据库

  6. 如何查询数据库,并形成HTML页面发送到客户端。

  上面阶段完成后,还可以试着克隆一个新浪微博,将重点放在客户端交互上,如何使页面更美观、界面更友好(用户体验)、后台处理更快,这时你将不得不去深入学习JavaScript, Jquery这些,后台编码的能力也会得到进一步的提高。

  等你都能克隆一个新浪微博出来了,有一定的技术和经验积累,再去深入学习一些更深入的东西,比如EJB, WebService等等......

  如果还有多余的时间,给你的微博做个安卓客户端,技术面就宽广了。

  你要是把这些都做了还找不到工作,天理何在啊。

  先就到这里吧,不清楚的在评论里继续提问,也欢迎各路大神前来拍砖。

PS:转来知乎的这篇回答,是为了解决自己的困惑,也希望看到这篇文章的人可以明确自己的学习方向。

时间: 2024-10-05 07:06:06

科班学习java遇到瓶颈,每天云里雾里怎么办?的相关文章

怎么解决深入学习PHP的瓶颈?

PHP给学习者的感觉是:初学的时候很容易,但是学了2-3年,就深刻感觉遇到了瓶颈,很难深入,放弃又可惜.所谓"鸡肋,食之无味弃之可惜"的感觉很是贴切. 经常会有这种感觉:不学,看似也不后退:学了,好像也没什么进步:if...else,循环这些你也都知道,甚至还能记住一些别人不大会的函数,但是一到项目来了,就头大.纵然口中千语万言,但其实心中实无一策.遇到什么问题都一片迷茫,提心吊胆,无从下手...... 此时,首先恭喜你已经入行了,其次恭喜你遇到了深入学习PHP的瓶颈. 不过一旦通过这

如何高效的学习Java开发,这些坏习惯千万不要犯!

T 行业的变化快是众人皆知的,需要持续去学习新的知识内容.但是,往往我们工作之后,经常发现学习的东西很少了,学习效率非常低,感觉自己到了一个瓶颈期,久而久之,就演变成『一年工作经验,重复去用十年』的怪圈. 不管你是已经工作了,还是正在学习中的Java初学者,如果你想在Java行业中有更高更远的发展,请用五分钟阅读下面的文章. 一.低效率的学习坏习惯 1.被动反复阅读 通常一个新手在学习Java开发的时候,往往会选择买书去学习,首先这样的学习效率是非常差的,比如在学习html,css的时候,是完全

如何高效的学习Java开发

IT 行业的变化快是众人皆知的,需要持续去学习新的知识内容.但是,往往我们工作之后,经常发现学习的东西很少了,学习效率非常低,感觉自己到了一个瓶颈期,久而久之,就演变成『一年工作经验,重复去用十年』的怪圈. 不管你是已经工作了,还是正在学习中的Java初学者,如果你想在Java行业中有更高更远的发展,请用五分钟阅读下面的文章. 一.低效率的学习坏习惯 1.被动反复阅读 通常一个新手在学习Java开发的时候,往往会选择买书去学习,首先这样的学习效率是非常差的,比如在学习html,css的时候,是完

学习java之前

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. 学习java之前 2.1认识JDK 工具包: 编译和运行其使用的是JDK里面的编译和运行,首先得下载JDK; 1.JDK的安装: JDK的官网:(http://www.oracle.com) 找到处按以下步骤: 2.安装JDK : 先双击一下jdk-8u144-windows-x64.exe然后进入安装: 然后在你写的路径下生成了文件 就是JDK的目录的位置

如何学习java?

嗯,不知不觉中,学习java的时间快要两年了.在学习这两年中,遇到的挫折很多,收货的知识也很多.下面我给出我自己在学习过程中使用到的经验,以及相关的资源链接,希望每一个爱编程.爱java的人,可以有所收货. 新手阶段 作为一个新手,找到一本学习的课本以及相关的视频教学是至关重要的.我在开始学习的时候,使用的教材是: 1<java开发实战经典>,该书作者是李兴华,是一个很好的讲师.下面链接为mldn公司的相关链接,大家可以进入该网站找到相关视频资料: mldn魔乐科技 在学习这个基础知识过程中,

Java学习路线&amp;怎么学习Java

1 概述 学过一段时间的同学一定会觉得Java学习最头疼的不是语法结构的繁杂,而是Java本身体系结构的庞大.以至于自己不知道接下去该学什么,或者什么样的知识才会对后续的学习有帮助.本节内容将让大家对Java学习的路线有个宏观的把握.在与市场接轨的前提下,我们会推荐给各位同学相关学习的方向和技术,以及学习到何种程度才能适应基本的工作. 好多同学可能会有如下的疑问: l  我已经学完JDBC了,那样参加工作够用了吗? l  Java SE学到什么样的程度算是OK了呢? l  东西好多啊,我改怎么学

学习java随笔第七篇:java的类与对象

类 同一个包(同一个目录),类的创建与调用 class Man{ String name; void GetMyName() { System.out.println(name); } } public class Person { public static void main(String arges[]) { Man m=new Man(); m.name="小黄"; m.GetMyName(); } } 运行结果 不同的包(不同目录目录),类的创建与调用 package Peo

学习JAVA的困惑

迷迷糊糊的学习JAVA已经四周了,感觉同学们这段时间都有各自不同的收获,不得不承认我确实在JAVA上没下功夫,从开始时老师说翻转课堂时的信心满满到现在的满腹空空却又不知该从何处开始,没有了最初的激情与目标,感觉一无所获: 1.感觉JAVA的类的调用和c语言的函数调用差不多,可不知为啥,总理不清主调方法的入口在哪,该调哪一个,该往何处调,有时候会有一瞬间拨开云雾见青天的感觉,但很多时候却还是处于雾里看花的状态 2.原本就迷迷糊糊的感觉,不知道怎么回事在类的调用这儿,把所有涉及到的方法都敲进去或者把

学习Java Web开发

学习DreamWaveMX中文版的网页设计技术 HTML网页设计,这是最基本的.学习XML的一些基本知识.初步掌握一些JSCRIPT的应用. 2 学习JAVA语言. 这应该分成2次来进行: 第1次找一本国人写的JAVA程序设计书即可,重在学会JDK下的编程方法,最好不要用Jbuilder等高度集成的IDE环境,用JCreator之类的IDE配合JDK用就行了. 第2次是提高:把<Thinking in JAVA>第2版中译本仔细看看. 3 学习J2EE的基本程序设计 (1)首先学习JSP动态网