也许今天的你在公司作着 CRUD 的工做,也许你还在为面试造火箭、工做拧螺丝悻悻不已,也许挣扎了许久却找不到进步的方向。java
不是计算机相关专业的我,从开始学习 Java 到进入阿里,用了一年多点的时间,不少人以为是进步比较快的,问我怎么学习 Java 才能快速进步,微信一一回复难以说的太明白,今天整理一下个人思考分享给你们。程序员
计算机基础是全部编程语言的根基,不理解计算机运做原理就没法真正理解编程的意义。就像咱们大一要从计算机基本原理开始学习同样,若是你想真正吃透一门语言,就须要理解进程、线程、堆栈、内存寻址、函数调用……面试
这些内容与任何一门语言都没有关系,倒是全部计算机语言的根基。打好计算机基础之后,对你来讲不一样的语言就真的只是语法和特性的差别,在语言之间转换就变得很容易。当我从 C 语言转向 Java 的时候,看了一天 Java 基础语法就开始写业务代码了。算法
自学和培训的小伙伴每每在计算机基础上比较薄弱,一旦学习到比较复杂的概念就会感受比较吃力,这个时候你须要好好补一下计算机基础知识。别说你没时间,今天不努力,明天就后悔。spring
《Java 编程思想》没有完整看完大致读懂两遍就不要说掌握了 Java。会用 Java 写代码只能说你入门了能够干活了,但也仅仅是初级阶段。编程
我遇到过不少工做了三五年的人,作过不少项目,Java 水平却和工做了一年的应届生没多大区别。大部分人迷茫和没法进步的根本缘由就在于你仅仅掌握了java基础,看不到 Java 的无限可能,也不知道作什么能够继续进步。设计模式
熟练掌握 Java 须要你学习到 Java 特性的每一个角落,不须要记住每一个类和方法,但须要深入理解每一个特性的意义。工做中 SSM 框架为咱们屏蔽了不少技术细节,Java 的特性可能并不常常用到。须要你主动学习,至少要把《Java 编程思想》看两遍以上,其中反射、泛型、容器、注解、并发须要重点掌握。缓存
不少人参加培训是从 JavaEE 开始的,问我如何学好 JavaEE?我想说的是 JavaEE 其实已通过时了,如今要学 SSM。微信
掌握框架的第一步是学会使用。学习 SSM 的基本用法可以帮助你完成绝大多数开发任务,掌握了高级用法可以提出更好的解决方案。学习框架没有捷径,在工做中一遍一遍地练习是惟一的方式。数据结构
掌握框架的第二步是理解原理。不少人面试阿里失败就败在原理上,只知其一,不是其二,稍微问的深刻一点就答不上来了。理解原理就是理解 SSM 框架的灵魂,这也是一个程序员从体力劳动进阶到脑力劳动的门槛。
不理解原理只能作写代码的工具,理解原理才能成为真正的开发工程师。多思考、多总结、多请教,保持好奇心,多问一句是什么、为何,才能探索到框架的奥秘。
掌握框架的第三步是设计框架。试着去写一个简化版的 spring,实现 IOC 功能,你就会发现真 TM 难。泛型、容器、反射、注解、设计模式、重构等都会用到,经过设计框架,可以深入地理解这些 Java 特性和框架的设计原理。若是你尚未写过框架,尝试着写一个吧,边作边思考,好好体会下框架的秘密。
随着技术的发展,分布式、缓存等使用愈来愈普遍。Java 程序员须要掌握的应用技术也愈来愈多,好比 spring boot、spring cloud、dubbo、Redis、RabbitMQ、ZooKeeper ……不使用这些技术也能写出很好的单机程序,但掌握这些技术才能作好大型架构。学习这些技术也很简单,就是多加练习。
众所周知,阿里内部基本都是使用本身的技术,好比 hsf、diamond、metaq ……业界流行的这些技术用的不多。在阿里呆久了会感受与社会脱节,因而我就天天抽出时间去看这些技术的文档,作本身的项目使用这些技术,经过日复一日的练习来掌握这些不经常使用技术。
前面说了那么多,其实都是编程的术。相对于武功来讲,都是外在的招式。掌握了招式能够御敌,但想要再上一层则须要掌握心法。对于程序员来讲,编程的心法就是道。而我也是在阿里工做了好久才体会到道的意义。
想必不少人都知道“程序等于算法加数据结构”的说法。算法和数据结构听起来都很高大上,也是大部分作业务的同窗难以接触到的东西。不少人告诉我在公司本身是个 CRUD boy 不知道如何提升本身的能力,也有人抱怨“面试造火箭,工做拧螺丝”不知道该怎么办。
实际上在平常工做中,程序 = 控制 + 逻辑 + 数据,也就是算法能够拆分为控制加逻辑。优秀的框架都实现了控制、逻辑、数据的分离,实现了很好的解耦和灵活性,这也是全部框架的演进方向。
数据容易理解,就是程序的配置、静态数据和运行时数据;
控制是程序的主流程,通常在微内核或框架底层实现,控制逻辑通常与具体业务逻辑关系不大,只是定义了流程;
逻辑就是具体的业务逻辑,在特定约束下被控制流程调用生产出符合预期的数据。
试着从控制、逻辑、数据的维度去理解框架、设计框架、优化代码,你很快就能成为优秀的程序员。若是你以为在公司作业务很难提升技术,不妨尝试一下梳理出控制、逻辑、数据,而后进行重构。
关注公众号“程序之心”(ID:chengxuzhixin),天天给你诚意满满的干货!