能在大一就可以搭建起SpringBoot,那说明你还是具有一定的编程基础的。题主所说的想从底层学起,说明题主可能只是按照SpringBoot教程跑通了简单的SpringBoot Demo,这离成为一名优秀的Java工程师还有很长的一段距离。那要想成为一名优秀的Java工程师,我们还需要学习那些”底层“知识呢?
1、工具工具分为两个部分,开发工具和项目构建工具。开发工具IDE帮助我们编译、运行、调试、分析、测试代码等等,我比较喜欢IntelliJ IDEA。构建工具用来构建和部署项目,例如maven、gradle和ant。Ant已经没落了,很少有java项目中使用,Maven使用的比较多,但是Maven基于xml语法比较死板,我比较喜欢gradle,推荐大家使用gradle。
(资料图)
2、JDK APIJDK API对于开发人员来说非常重要,这是很大的一部分内容。包括Java Collections框架,Java Concurrency,Java IO和Java 8 API等核心领域。
2.1 Java集合框架这是每个Java开发人员都应该学习的最重要的Java API之一。该API提供了Java中标准数据结构的实现,例如链表,集合,堆栈,队列,哈希表,优先级队列等。
我们对于ArrayList、HashMap、HashSet、LinkedHashSet、TreeSet等框架必须要精通掌握,并知道它们的内部实现逻辑。例如, ArrayList是一个可以增长的动态数组,HashMap 是哈希表的标准实现,可以用于存储键值对。同样,HashSet是一个不允许重复元素的set实现。
2.2 java并发多线程和并发是一个合格的java工程师必须掌握的。我们不仅应该深入了解诸如Thread、Runnable对象锁定和同步之类的基本概念,而且还应该熟悉诸如死锁,乐观锁,condition以及如何使用它们。同时也应该了解像Java5中及以后的版本,例如CyclicBarrier、CountDownLatch、Phaser、CompleteableFuture、Futures等等特性以及如何在Java中执行异步操作。
2.3 Java ioJava IO 和NIO API平常开发可能用的比较少,但是对于File、InputStream、OutputStream、Reader以及Writer这些核心API我们要精通掌握。同时如果我们需要编写一个基于套接字的的程序,对于ByteBuffer、FileChannel、Selector也必须掌握。
2.4 Java 8新特性Java8 改变了我们以往的编码和编码方式,以前需要写10行代码才能完成的功能,现在可能只需要几行。Lambda表达式、Stream API、Optional类和新的DateTime API,这些我们都应该熟练掌握。
3、框架Java生态中有丰富的框架可以供开发者使用。对于主流的框架我们要有一定的了解。例如:Spring、SpringMVC、SpringBoot、Hibernate、Log4j、Mybatis、JUnit等。
3.1 Spring Framework如果您想成为优秀的Java开发人员,强烈建议首先学习Spring Framework。这是最流行的Java框架之一。Spring Framework使开发人员能够编写干净的代码,通过依赖注入和控制反转等功能可以更轻松地测试和维护代码。它还具有用于大多数日常任务的丰富API。
3.2 Mybatis早期ORM框架比较火的是Hibernate。但是Hibernate限制太多,特别是在复杂业务场景下无能为力。Mybatis是目前最流行的ORM框架。支持灵活的sql、存储过程以及高级映射。MyBatis 可以使用简单的XML或注解来配置和映射原生类型、接口和 Java 的 POJO为数据库中的记录。
3.3 SpringBootSpringBoot应该是目前最火的MVC框架了,SpringBoot将程序员从繁重的XML配置中解放了出来。在没有SpringBoot的时代,我们编写一个后端的web应用,需要大量的xml配置。SpringBoot的出现使创建基于Spring的Java应用程序变得非常容易。你只需要2分钟就可以出创建一个应用并将它跑起来,这极大的提升了程序员的工作效率,使得程序员可以更专注业务代码实现。
4、测试测试是任何Java开发人员的一项基本技能,尤其是单元测试,集成测试和自动化测试。至少,每个Java开发人员都应该熟悉JUnit和Mockito,这是两种最受欢迎的单元测试和模拟库。如果您知道这两个并知道如何使用它们来有效地创建单元测试,那你将是一个更好的Java开发人员。还存在更高级的库,例如用于业务驱动测试的Cucumber,用于集成测试的Robot Framework。对于模拟库,开发人员可以选择PowerMock,Mockito和EasyMock等几种选择,但我强烈建议学习Mockito,因为它是一个很棒的库,并且许多Java开发人员和公司都在使用它。它正逐渐成为在Java中创建模拟对象的标准库。
5、常用的库Java的真正功能在于其丰富的开源库生态系统。你会发现库在Java中几乎可以完成所有工作,从日志记录到机器学习,从发送等等。
除此之外,Java还幸运地拥有诸如Apache Commons和Google Guava之类的实用程序库。这两个库有效地补充了JDK库。
最后如果你已经掌握了这其中一半以上的技术,那恭喜你,你算得上以为优秀的java工程师。如果没有,那好好学习这些技术,它就伴随这你以后职业生涯。当然计算机原理、数据结构、数据库理论等课程将是你大二、大三的专业课,这些课程必须好好学习,深入掌握。
关键词: