zoukankan      html  css  js  c++  java
  • Java如何打好牢固的基础?

    如果纯粹是为了学Java,那么不建议阅读本文,因为本文不是从理论和教科书的角度讲述如何打好java基础,而是会从“快速用java挣钱”这个角度,讲边学、边做项目和边提升的方法。

    在讲具体的方法前,有必要和大家讲明如下的道理。

    1 工作中用到的java技术。绝不单纯是java核心语法,而包括java核心语法、数据库技能、web框架(目前比较流行的是spring boot框架)和整合大数据组件和分布式组件的技能。其中资深架构需要掌握java核心语法、数据库技能、web框架技能,而架构师还需要精通整合大数据和分布式组件的技能。所以学java绝不是单纯学线程集合等java核心的语法。

    2 找到java工作后,学java技能的速度要比单纯自学和在培训班里学java要高太多,原因很简单,用来挣钱的项目里包含的才是真正的技术,自学或培训项目,没法模拟相关环境。所以本文后面给出的java打基础的方法,是先学到能找到工作的程度,再找工作,然后到项目里学。

    3 Java相关的书很多,但不是每个技术点都在项目里用到,而且很多项目里需要的技能,其实根本无法从书本上学到。比方说,某初学者在找工作前学了一大堆java技能,或者是数据结构网络通讯操作系统方面的技能,但是在工作后,会发现真正用到的只是其中一部分,比如java核心里的socket编程,不少项目就未必用到。

    4 相反,项目中经常要遇到的分析排查问题,和分布式组件调优等的技能,相关的书就比较少,而且,越是值钱的技能,越在书本上看不到,这些技能只是零散地存在网上的诸多文章里。说这些话的含义还是,请大家务必要在工作中学,自学不是不重要,但高级开发之上的技能点,靠自学或培训班积累的经验,未必能和实际项目要求能对上。

    在讲好上述铺垫后,下文就可以给出具体的Java固基的步骤了。

    1 先用3到5天,在本机安装jdk,IDEA集成开发环境,MySQL数据库和MySQL WorkBench数据库客户端环境。

    2 买两本java书,比如Java疯狂讲义和Java编程的逻辑。为什么买书?因为书里的内容毕竟经过出版社审核过,而且代码能跑通,两本书并集足以涵盖java基础点。

    但是,在学java核心的时候,可以只学基本语法,面向对象语法,集合,异常处理和JDBC。IO,设计模式,图形化界面,tcp socket编程这块,可以不用看,因为刚开始找工作未必要用这些技能。而JVM和多线程这块,可以先通过跑代码,了解相应的概念。

    也就是说,java核心方面的技术点虽然多,但刚开始学的时候,未必要涵盖所有的点,上文提到不用学的点,在初级开发阶段基本用不到,所以学了白学,而且在学java核心技能的时候,一定得边跑代码边学。

    3 上文给到的java书里,一定包含用jdbc连接操作数据库的技能,此时可以在mysql上搭建相关表,一方面熟悉sql语法,另一方面了解下java连接和使用数据库的大致步骤。

    由于列出了只要学习的技能点,所以上述技能学起来应该不难,而且大概用1个月的时间能学好。后面就需要学spring boot,但是,这方面只需要学到能做增删改查业务的地步。

    4 学spring boot的时候可以用我写的书。在我的书里,不仅包含了 spring boot+JPA做增删改查的技能,还进一步给出了可跑通的项目,此外还包含了 spring boot整合分布式组件的基本做法。

    学好spring boot应该能以跑通一个项目为标志,请注意这里是跑通现成代码,而不是自己手写出一个全新的项目。

    跑通一个spring boot项目后,大致能掌握spring boot做业务的基本技能,这也是干java活的最低标准。达到这个程度后,后面不应该继续学,而是应该去找工作了。

    跑通一个spring boot项目后让大家去找工作,不是因为后面java技能不会用学了,而是比这高深的技能一方面通过自学效率不高,另一方面,找到工作后,更能通过项目为导向,更精准地知道后面该学什么。

    比如一些资深java开发都知道,学好spring boot相关技能后,可以一方面继续学习junit和logback等实用性组件,另一方面应当去学数据库优化,jvm调优乃至分布式组件应对高并发的技能。但这些技能该学什么?学到什么程度可以去挑战更高阶的职位,只能是在做项目的工作中自己去体会,如果没有在项目中,学到的相关技能,我可以说,大部分都是白学。

    java小白如何找工作,虽然很重要,但和主题无关,所以就不再展开说明,如果大家要了解细节,可以看我其它相关文章。

    可以这样说,找到第一份java工作,是学习java的一个关键性的里程碑,在这之前,如果光学习找不到工作,学的技能有可能是白学。在后文里,就将讲一下找到第一份工作后,如何有效且高效地继续打好java基础。

    当零基础的java开发找到第一份工作后,首先需要尽快掌握用spring boot等框架开发业务的流程,其中不仅包括写代码,还包括测试,调试和排查问题等,可以说,入职3个月这段时间内,基本能打好最初级的java基础,即能成为一个合格的码农,在这个阶段,还应当掌握如下的基础知识。

    1 结合项目需求,熟悉java集合的用法,即数据结构如何用在存储业务数据方面。

    2 用通过命令登上linux服务器,再通过命令查看日志,如果可以,再积累分析问题和排查问题的能力,在此基础上,更可以开始熟悉mysql,redis等组件在linux上的安装和部署流程。

    3 全面积累并掌握单机版spring boot的开发、测试和调试技术,这块要做到给一个需求,能很快用spring boot框架实现,出现问题,只要不是分布式方面的,可以很快通过调试看日志等手段发现并解决问题,适当掌握junit单元测试等的手法。

    一般来说,java初级开发应该在半年内熟悉上述技术,最长不应该超过1年。在这个过程中,不仅应当掌握必要的java和spring boot框架等方面的技术,更要习惯在做项目时解决问题的方式。

    比如遇到问题该如何通过搜索关键字来排查和解决问题,遇到自己不会的技术,如何快速通过搜索引擎熟悉,更重要的是,在被要求开发一个新的功能模块时,能快速地仿照着现有模块,改写并实现现有功能模块。做到这一点以后,其实后面的提升,只是体力活了。

    初级java开发的标准是更用spring boot等框架开发增删改查的功能,用半年到1年时间做到这种程度后,更应当为升级到高级开发打下java方面的基础,这块需要哪些技术?又该怎么做?

    1 凡是项目里遇到的问题,你都积极去参加,哪怕你不是熟悉,也得复盘人家的分析和解决过程,这样做个3个月,一定能快速积累经验。

    2 多参与系统上线和发布的工作,这方面包含了大量搭建组件环境和排查组件问题的经验,还是这句话,刚开始不懂就先跟着学,这方面绝对也是一回生两回熟。

    3 千万留心分布式方面和调优方面的事情,比如了解项目里用到哪些redis,kafka等分布式组件,结合业务看这些组件的语法和配置参数,同时学习下通过分布式组件实现高并发的技能。如果项目里遇到性能调优等方面活(比如数据库调优jvm调优或高并发调优),这种事情多参加,哪怕不归你管你也多参加,要升级到资深开发和架构,就需要打好这方面的基础。

    如果做到这种程度,是否能拿高级开发或资深开发到工资我不敢说,但技术上应该是满足了资深开发的要求。这里请注意,从初级开发升级到资深开发,以及以后升级到架构师,该学什么java技术,不能人云亦云,而应当结合自己的实际,在项目开发中自己体会。

    比如网上有很多系列的升级教程,这些教程中包含了足够多的技术体系,而每个技术体系里,也恨不得罗列全所有的语法和经验。这就好比服用补药,每个人的体质不同,进补的目的也不同,如果java程序员不管三七二十一,脱离自己的需求盲目地学习网上的教程,虽然不会出错,但学到的技能未必对自己的提升有直接的项目。

    所以在打基础的过程中,不应缘木求鱼,定好方向,即我要应聘大厂资深开发岗,需要哪些技术,该如何学,如何准备面试?具体精准下来,无非包括如下的内容。

    1 证明自己有调优和分布式组件的技能,按上文给出的做法,能通过项目找到对应的实践机会,然后针对性地看redis和dubbo组件的用法即可。

    2 证明自己有数据库调优和jvm调优能力,也是老办法,项目里解决问题的实践+适当看资料。

    3 很多面向资深开发的面试官,会问看似很偏的技能,比如violate或dubbo协议等,掌握这些技能的做法是,收集面试题,再找实际项目中的落脚点,这样也能高效地打好相关基础。

    4 至于背题,这种不能不算基础,但仅仅属于理论基础,用几天背下就可以了。

    一个java初级开发升级到高级或资深开发的时间,快则1年,慢则2年,如果2年内再升不成,那估计是方法有问题。这个过程该打好哪些基础,该怎么做?这些绝非能用短短的文字来描述,上文也仅仅是给出了方法。

    再啰嗦下,在java初级开发升级到资深开发的过程中,绝不能仅仅关注项目,因为项目里未必有升级能用到的技能,也绝不能单单去看书去看面试题,更不能过于听信别人给出的技术路线。而应当先全面收集高阶职位大厂的面试题,这个是目标方向,同时尽可能地在当前你做的项目中找落脚点,如果项目里没,然后再找网上的资料看。总之第一确定技术要点,第二看这些要点是如何同项目结合的,第三再适当背题,这样不仅能高效打好java资深开发相关的基础,而且还能高效通过资深开发的相关面试。

    写好java资深开发方面打基础的方法后,似乎应当继续写架构师的基础该怎么打。但本文已经洋洋洒洒写了将近4千字,而架构师打基础的方法可能和前文说的不同。为了不喧宾夺主,本文暂且告一段落。如果本文点击量高,本人会再来更新一波,写写架构师的固基之法。

     

    这是我的公众号,其中包含了大量面试文章,同时我自己出了多本Python和Java方面的书籍,会定期在公众号里发书的电子版。请大家关注下我的公众号,谢谢了。

  • 相关阅读:
    RN-Android构建失败:Caused by: org.gradle.api.ProjectConfigurationException: A problem occurred configuring root project 'AwesomeProject'.
    Android更新包下载成功后不出现安装界面
    真机调试: The application could not be installed: INSTALL_FAILED_TEST_ONLY
    react native 屏幕尺寸转换
    Android Studio生成签名文件,自动签名,以及获取SHA1和MD5值
    React Native安卓真机调试
    git提交代码报错Permission denied, please try again
    The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.
    命令行设置快捷命令
    Linux 常用指令
  • 原文地址:https://www.cnblogs.com/JavaArchitect/p/15772176.html
Copyright © 2011-2022 走看看