我认为,作为一名合格的程序员,精通一门语言只是最最基本的要求,除此之外,具备扎实的基础知识、了解主流的技术框架、具备快速学习的能力也都非常重要。语言是帮助你实现想法的工具,而作为程序员来说最为重要的东西是语言背后的你的想法,而这些想法需要通过长期的基础积累、经验积累而获得。

我从大二的时候开始接触编程,到现在也有五个年头了。这五年我走了不少弯路、踩了不少坑。至此收到阿里offer,也算是达到了我人生第一阶段的目标。我把我这五年踩过的坑与大家分享,希望大家能少走弯路、在技术的道路上越走越远。

回归正题,我觉得Java学习过程可以分为三个阶段:

第一阶段目标:打牢基础

当你准备开始接触Java前,你先等一等,因为你要做的第一件事是要打牢计算机基础,而非直接学习语言。当我做的项目渐渐多起来的时候,我愈发地感觉到计算机基础对程序员的重要性。这就像习武之人练习马步一样、达芬奇周而复始地画鸡蛋一样。从短期来看,基本功的练习并不会立即出成效。也许这个过程会伴随着枯燥乏味,但我们不能鼠目寸光,从长远角度来看,一个程序员基本功的扎实程度决定了这个程序员技术之路能走多远、能走多久。

所以我觉得,如果时间允许的话,花上大半年甚至一年的时间学习基本功也不为过。学习任何一项技术都是一样,我们需要耐得住寂寞。基本功学习的过程必然会枯燥乏味,但它对我们未来的发展之路却影响深远。所以大家一定要耐得住寂寞,迈好、并且迈稳作为程序员的第一步。

计算机基础有五大课程:操作系统、计算机网络、数据结构、算法、数据库。你究竟需要花多少时间来学习这些基础课程,这取决于你目前的状态。如果你是计算机专业的学生,并且仍处于大一或大二,那就请你珍惜每次上课的机会吧。听老师讲一遍、自己再学一遍、有问题还可以和老师交流,这样的机会实在难得,且行且珍惜。

如果你并不是计算机专业的学生,那也好办,调动你的情报搜集能力,去周边名校的计算机专业蹭课吧。我的学校靠近南大,就有很多同学潜入南大蹭周志华大佬的机器学习。去了之后才发现,200人教室里人满为患,原来都是前来蹭课的同道中人啊。

如果你即将面临找工作,那么就更应该抓紧猛攻这些基础课程。现在的互联网公司都很看重学生的基础功底,因为学校里做的项目在面试官的眼中大多都只能算是『玩具』(PS:大佬除外),所以项目经验只能算是你的加分项,基础功底才是第一要义。

第二阶段目标:精通Java

作为一名Java程序员,对Java这门吃饭的语言必须要达到精通的程度。因为工作之后,每天接触最多的就是Java,其次才可能是你的女朋友(当然前提是得有女朋友,逃)。所谓『精通』是指你不仅得了解如何使用Java,还得明白它背后的原理,也就是得『知其然,知其所以然』。比如,我们都知道使用关键字new可以创建一个对象,但这远远不够,我们还得知道对象创建的过程是怎样的?对象创建完成后它存储在哪儿?什么时候会被GC回收?也只在有了解了它背后的原理后,我们才能写出更加高质量、高性能的代码。

当然,学习Java也不是一步登天,可以把他分成两个阶段去学习。第一个阶段先把Java用起来,也就是只需要做到『知其然』即可。当熟悉了Java的所有语法、API之后,就可以拿几个项目练练手。项目能帮助你加深对基础语法、对API的理解。当你拥有了一些项目经验,对Java也有了自己的见解,接下来就可以深入Java背后的原理了,也就是开始『知其所以然』的过程。你需要学习JVM,了解Java的内存模型、内存的管理、垃圾回收、类加载机制;你需要学习并发编程,了解如何保证线程安全的前提下,提升程序的处理速度;你也需要开始尝试阅读JDK源码,了解Java容器用了哪些数据结构,在什么样的业务场景下选择什么样的数据结构。PS:Java的整个体系结构请见上图。

学习Java的确是一个漫长的过程,也只有你的时间、你的耐心、你的思考,才能慢慢地开启通往Java世界的大门。

第三阶段目标:锻炼快速上手新技术的能力

我觉得衡量一个程序员水平的高低,并不是看他精通多少种技术、擅长多少个框架,而是看他是否具备快速学习的能力。因为当下的技术层出不穷,技术更新迭代的速度远超过我们学习的速度。所以具备快速学习的能力尤为重要。当你已经具备一定的计算机基础之后,就可以有意识地锻炼自己的这项能力。那怎么锻炼呢?下面分享下我学习的体会。

我觉得任何一项技术都遵循『2-8原则』,也就是在一项技术的整个体系结构中,最为核心、最为重要的部分可能仅仅占这项技术整个体系结构的20%,剩下的80%是相对次要的。所以,如果我们需要在比较短的时间内快速上手一项新技术的话,那么最为关键的就是要找准这项技术中20%的核心知识点,先把它们理解、吃透。这样就可以马上使用这项技术了。那么剩下80%的知识点可以在项目空窗期慢慢地补充。这样一段时间后,这项技术的整个体系结构都将被我们掌握。

到了这个阶段,你可以开始接触一些应用层技术,比如:Spring、MyBatis、Shiro……学习这些技术最好的办法就是理论结合实践,以项目驱动的方式去学习。毕竟编程是一项熟能生巧的技术,多多动手能加深你对技术的理解,多多思考也能提高你编码的能力,两者相辅相成。并且在学习这些技术的过程中,可以有意识地采用这种『2-8原则』学习方法,培养自己快速学习的能力。举个栗子,如果你正要做的这个项目需要使用Spring,那么你首先要做的就是要花点时间,找到、并且找准Spring中最为核心的20%知识点——Ioc和AOP(这些信息可以通过大牛的博客、Spring的官网获得)。OK,那么Spring其他的技术先不用管,你要做的就是先把Ioc和AOP这两个概念搞懂,包括它们的使用方式、背后的思想。(PS:学习技术最好的途径就是看它的官网,然而官网一般都是英文,对于英文比较捉鸡的同学可以看一些大牛的博客、或者视频教程)当把这两个概念搞懂之后,Spring基本就可以为我们所用。接下来,我们可以利用项目的空窗期把Spring剩余80%的知识点慢慢地补充,这样一段时间后,Spring的整个体系结构就被我们掌握。然而在这整个过程中,还会涉及到你的信息搜索能力、信息理解能力,这些软实力都需要你通过大量的练习慢慢积累。所以,少年,抓紧时间,赶紧行动吧。

我的Java学习之路相关推荐

  1. java学习之路目录(已完结)

    java学习之路目录(持续更新中-) 第一阶段 javaSE(完结) 序号 标题 内容 001 java初识 java语言特点.体系结构.运行机制 002 java SE基础语法 注释.关键字.变量. ...

  2. java学习之路2--简单工厂模式实现饮料自动贩卖机

    java学习之路2 用简单工厂模式实现饮料自动贩卖机 功能简介 具体实现 1.简单工厂模式 2.代码 总结 用简单工厂模式实现饮料自动贩卖机) 功能简介 接收用户输入的信息,选择购买的饮料. 可供选择 ...

  3. Java学习之路——接口

    Java学习之路--接口 概述 总所周知,我们是父母的孩子.我们的身上既继承了爸爸的基因也继承了妈妈的基因.这就是多继承. 然而在 Java 程序中,是不支持多继承的.Java 仅仅支持单继承.但是接 ...

  4. 我的Java学习之路2009-11-17

    -------------------------------2009年3月19日开始----------------------------- 下载JDK Myeclipse Netbeans JB ...

  5. JAVA学习之路:不走弯路,就是捷径(一)

      0.引言 在ChinaITLAB导师制辅导中,笔者发现问得最多的问题莫过于"如何学习编程?JAVA该如何学习?".类似的问题回答多了,难免会感觉厌烦,就萌生了写下本文的想法.到 ...

  6. Java学习之路1——安装JDK1.8||安装idea2022||Java项目创建【重拾Java】

    Java学习之路1--安装JDK1.8||安装idea2022[重拾Java] 前言 安装 安装JDK1.8 安装idea2022(JetBrains Toolbox) Java项目创建 创建 项目结 ...

  7. 菜鸟haqima的Java学习之路第一天

    菜鸟haqima的Java学习之路第一天 导读:DOS命令 常用快捷键 Java的简单概述 (第一章 Java开发环境的搭建) 1.常用的DOS命令 1.1.怎么打开DOS命令窗口 win键+r(组合 ...

  8. Java学习之路3——方法定义、调用【重拾Java】

    Java学习之路3--方法定义.调用[重拾Java] 方法定义 为什么要写方法 方法完整的定义形式.调用 方法定义的格式 修饰符 返回值类型 返回值 调用格式 方法重载 方法定义 为什么要写方法 对于 ...

  9. java学习之路之javaSE基础1

    <h2>java学习之路之javaSE基础1</h2> <div> ###01.01_计算机基础知识(计算机概述)(了解) * A:什么是计算机?计算机在生活中的应 ...

  10. 1024 java学习之路。

    1024程序员节啦~ 从今天开始记录java学习之路. 从自开始接触java到现在快半年了从2020年的2月份到现在的10月份,中间也因为写毕设推迟了一些时间.算上来应该有半年了.半年中还是收获很多哒 ...

最新文章

  1. io_service work 的作用
  2. 十天学Linux内核之第二天---进程
  3. numix Docky
  4. mysql群删除记录查询_mysql那些招:执行大批量删除、查询和索引等操作
  5. pyecharts离线使用说明
  6. themleft模板库_Thymeleaf 模板的使用
  7. 鸿蒙系统还会推出吗,华为明年所有自研设备都升级鸿蒙系统,还会推出基于鸿蒙系统的新机...
  8. 生物学专业_江南大学微生物学(发酵)20002008历年考研专业课真题汇编
  9. 猎豹移动回应被谷歌下架:积极整改情况下被单方面下架
  10. 【Kafka】Kafka 修改某个消费组的偏移量
  11. 解决tab切换的时候,swiper不生效
  12. 计算机二级电子表格开根号函数,教你如何用函数方式在excel中开根号
  13. pure-ftpd 搭建 FTP 服务器
  14. OneNET麒麟座应用开发之六:与气体质量流量控制器通讯
  15. 南京邮电大学-数据结构-慕课MOOC-第四章作业
  16. UiPress – 现代WordPress仪表板主题
  17. 科学解释:为什么越是无知的人越自信?
  18. ECCV2016 部分文章
  19. 一个蚂蚁曾经的辛酸面试历程
  20. OllyDBG反汇编入门教程

热门文章

  1. 常用ruby gem
  2. 9个有趣的心理学现象
  3. BP神经网络实例及代码分析(python+tensorflow实现)
  4. Oracle项目管理系统之项目投议标
  5. Sunday算法---简单高效的字符串匹配算法
  6. Android | 打印堆栈
  7. 【Matlab】数学建模_变异系数法
  8. Linux 文件名和路径的最大长度
  9. java xmpp协议_GitHub - zhengzhi530/xmpp: 基于Xmpp协议的即时通讯社交软件(客户端+服务端)...
  10. ABAP BDC返回成功但是未创建单据或没有产生相应效果