怎样学习Java?_为什么那么多人觉得前端简单,要往这里跳?


- #问答
  • 1、 怎样学习Java?

    学习计划

    首先,我把Java系统学习分成两个阶段。

    第一阶段:建立完整的的技术栈,成为一个有富于生产力的高级软件工程师。

    在这个阶段要掌握一系列的基础知识和工具。这些东西前后关联,所以学习过程成线性顺序,要从上往下进行。

    下面是第一阶段的学习路线:

    第二阶段:这个阶段的目标是成为Java技术专家、架构师,因此必须在上一阶段的技术上,往高处(例如设计模式、大数据)走,往深处(Spring源码、Java虚拟机)走。

    这个阶段的知识,并不存在前后的关联。在完成第一阶段的学习之后,完全看工作的需要,以及个人的兴趣,安排学习的优先级。

    下面是第二阶段的学习目标:

    接下来,我就点一下这个学习计划中的“关键点”。

    Servlet

    要成为一个优秀的Javaweb专家。无论是你用SpringMVC实现的普通REST接口,还是微服务。往深地走,都要深刻理解Servlet以及容器(例如Tomcat).

    因此,在深度学习微服务,以及SpringMVC之前,一定要把Servlet学精,因为他是整个Javaweb的基石。所以,在成为软件专家的路上,Servlet是最基本的垫脚石,务必重视。

    SQL

    在我作为程序员入行的时候,没少在SQL语言下功夫,尤其是在SQL语言优化方面,包括在存储过程中各种折腾。

    但现在,SQL优化在开发过程中的优先级显著降低,有几个原因:

    1. 各种ORmap框架(例如Hibernate、Mybatis)的出现,使SQL的工作量大大降低。
    2. 各种ORmap框架本身也会对编写的、自动生成的SQL进行优化。
    3. 当前的服务器架构,如果要提高性能,首先应该考虑架构的横向扩展性,而不是在SQL上进行极端优化。
    但现在也不是说可以完全“任性”地编写SQL。只是说对于程序员,只要掌握最常见的SQL优化原则,做到工整就够了。

    缓存、队列

    缓存,队列。业界都有了较成熟的方案,例如Redis,ActiveMQ等。在学习的过程中,第一步是掌握核心概念,以及他们要解决的问题。然后就要亲自安装,使用这些软件,建立感性的认识。

    其次就是在掌握核心概念的基础上,掌握这些开源软件的JavaAPI,然后试着在此基础上,编写典型的Demo,从而在Java语言层面上彻底掌握。

    至于有些朋友提到的把概念再“实现一遍”。不知道朋友指的是使用API,还是把缓存和队列软件,用Java语言实现一下。如果是后者,不是说不可以,关键是太费时间。同时,就业界实践来说,不是特别必要。如果你真有兴趣,把优先级放低一点,作为一个更长期的目标。

    Linux

    这个学习计划是一个长期的,深入的学习计划。最终是要成长为技术专家、或架构师。那么有必要适时的掌握下Linux。因为在实践中,服务器往往委托于Linux服务器。而且将来,还有不少开源软件只能在linux上运行。

    因此,在开始学习缓存和队列前,需要先掌握了Linux的基本用法。然后再学习的过程中,就把这些开源软件在Linux上运行。

    这样,在你学习Java的过程中,顺便也把Linux学习了,这远比你将来单独学习Linux要有趣,印象要深刻。

    微服务

    微服务并不是一门具体的技术,而是一个设计理念,很多语言和框架都可以实现,例如Java中的SpringMVC等。

    因此,如果已经掌握了SpringMVC、Springboot。那么对微服务的掌握是水到渠成的事情。你要做的就是注意力放在微服务的应用场景上。

    设计模式

    设计模式是较为靠上的东西。如果Java基础不是太好的话,很容易陷入空泛,眼高手低。

    如果你的Java基础太薄弱,例如没有掌握“抽象类”。那么我建议你先把设计模式学习停一下,先把Java的基础知识补充下,至少要学完《Java核心技术》第六章,也就是掌握完整的现象对象的概念。然后再回来学习设计模式。

    在学习设计模式的时候,一定要动手。最起码要把书中列举的设计模式,用Java语言实现一下。如果你阅读时是经典的GOF《设计模式》,其中的代码(用C++描述),就不容易用Java实现。建议你可以参照《HeadFirst设计模式》,其中的demo都是短小精悍,很适合用Java来实现。

    这样,一则有利于理解设计模式。二则在学习设计模式的过程中,也进一步增强对Java基础知识的掌握。这种学习过程是一个相互促进的过程。

    学习笔记很重要

    特别重要的一点,学习的过程中,尽量的写学习笔记,其中包括难点和重点。

    因为,系统深入的学习Java必然是一个长期的,综合的过程。到后期,一定会出现学着后面,忘了前面。如果你没有学习笔记,又没有实践中积累的代码,那么就会出现边学边忘的情况。

    而有了学习笔记,可以给自己的学习留下了“踪迹”,以后复习的时候用来参考,很快就能把早前学习的记忆“唤醒”。

    而且,这些学习笔记在后来的工作中,还能成为自己的参考手册,随用随查。

    还有,那就是学习笔记还是一个特别好的面试宝典。因为既然你记下了笔记,这些东西往往经过你深度思考,深度消化的东西,也是你区别于其他工程师的卓越之处。

    此回答转自乐字节

  • 2、 为什么那么多人觉得前端简单,要往这里跳?

    前端入门容易,有点类似郭德纲评价相声的观点:你以为听两段相声就会说相声了?前端一周基本就能入门,可以做简单一些的前端工作了。但是真正想深入的话还是有一定难度的。

    相比PHP、JAVA、IOS开发等后端码农的工作,前端的代码量相对比较简单。虽然也需要一定的逻辑性,但由于前端所见即所得的特性。可以很直白的看到自己的工作成果,不像纯后端同学只能对着晦涩的代码。而且由于一些用户不懂页面制作,以为页面只要从效果图变成HTML页面就行,而不管页面质量。

    1个月经验的前端和5年经验的前端同时将一个效果图制作成HTML代码,可能在前台展示的很像,甚至说一模一样。但是在代码逻辑和考虑问题的深度上肯定是不同的。不过用户才不管你代码是不是写的漂亮,反正能将效果图做成网页就是完成任务。尤其是新手前端看着自己能将大部分效果图都做成html之后,有时候会有飘飘然的感觉(我当年很飘了一段时间……)。

    虽然前端工作主要是HTML+CSS+JS,但是学会和学精是不同的。举个不太恰当的例子,前端工作有点像海里飘着的冰山。学会海面上露着的1/10已经可以完成基本前端工作了。但是想要学深前端,还需要学会海里面藏着的9/10。

    但是学会了这十分之一已经可以在很多公司获得一份基本的前端工作,挣钱养家了。所以这应该也是很多人觉得前端简单的原因之一,毕竟入门容易,挣钱容易啊。资深前端?前端专家?那还早着呢,先顾眼前吧,没准做一段时间又换工作了呢。

    关注域名、关注前端、关注互联网——关注域名导航。

  • 3、 想成为一名合格的前端工程师,需要掌握哪些技能?

    基础篇:HTML+CSS+JavaScript

    框架:Bootstrap

    工具:IDE(DW,Eclipse,Webstorm任学其一),编辑器SublimeText

    浏览器:Firefox,Chrome,IE内核方面(要初略的了解Trident,Webkit等)

    浏览器调试插件:Firebug,WebDeveloper等。

    自动化工具:Gulp/Grunt,Browser-sync。

    设计工具:Photoshop,切图cutterman,标注Markman

    云笔记:有道云笔记or印象笔记——记录工作和生活中的点滴,多写总结。

    Wordpress:自己有可能,用wordpress做一个博客,自己来学习一下Linux和维护一个网站。

    进阶篇:JavaScript进阶——看看犀牛书,修炼内功必备。

    学习语义化编程:HTML进阶——JadeCSS进阶——SASS+LESS参与到开源项目或者其他项目组,实战。

    ——Github学习Git或者SVN的使用——版本管理思想与同事同学朋友分享你学习到知识。

    高级篇:学习前端+后端:Linux,数据库,框架。。。。

    1.目前使用的工具是Vscode(前端神器,谁用谁知道)+Webstrom(代码提示很方便)

    2.主要使用Chrome进行调试(方便手机调试,常用功能network,source)→网上可以搜索一下chrome前端调试

    3.自动化工具这块,常用Gulp+lite-server可以对付简单项目,大型项目这个应该有先人已经配了吧?别自己造轮子。

    4.学会翻墙。(无论是VPN还是SS,不花钱想高质量高流量高网速的浏览国外的站那是不可能的)

    5.看看国外的高质量的学习编程的网站:Udemy,Codecademy,Coursera(没时间?打游戏都有时间;不懂英文?谁叫你上英语课的时候看小说了?Youtube可以点一下“字幕”看字幕去。)

    6.参加交流会。

    7.自律。

Related Content: