本文章转自:乐字节
文章次要解说:Java核心技术
获取更多Java相干材料能够关注公众号《乐字节》 发送:999
前言
通过这么多年的Java开发,以及联合平时面试Java开发者的一些教训,我感觉对于JavaSE方面次要就是要把握以下的一些内容。
1. JVM相干
对于刚刚接触Java的人来说,JVM相干的常识不肯定须要了解很深,对此外面的概念有一些简略的理解即可。
不过对于一个有着3年以上Java教训的资深开发者来说,不会JVM简直是不可承受的。
JVM作为java运行的根底,很难置信对于JVM一点都不理解的人能够把java语言吃得很透。
我在面试有超过3年Java教训的开发者的时候, JVM简直就是一个必问的问题了。
当然JVM不是惟一决定技术能力好坏的面试问题,然而能够佐证java开发能力的高下。
在JVM这个大类中,我认为须要把握的常识有:
2. Java的运行
这条可能出看很简略,java程序的运行谁不会呢?
不过很多时候, 咱们只是单纯通过IDE去执行java程序,底层IDE又是如何执行java程序呢?很多人并不理解。
这个知识点是最最根本的java开发者须要把握的,第一个必定是教你如何在命令行中执行java程序,然而很多人一旦把java学完了,IDE用上了,就把这个都忘了。
为什么强调要晓得这个呢,晓得了java最纯正的启动形式之后,你能力在启动出问题的时候,去剖析过后启动的目录多少,执行命名如何,参数如何,是否有缺失等。
这样有利于你真正开发中去解决那些奇奇怪怪的可能和环境相干的问题。
在这里须要把握的常识有:
3. 数据类型
这条没有什么好多说的,无非就是Java中的根本类型和对象类型的把握。
能够再理解一些JDK如何主动转换方面的常识,包含装箱拆箱等,还要留神防止装箱之后的类型相等的判断。
次要知识点:
4. 对象和实例
在这方面,开发者须要理解class和instance的概念以及之间的差异, 这是java面向对象个性的一个根底。
次要知识点有:
Class和 Instance 的概念
Instance 创立的过程:
须要留神的点:
5. 访问控制
这也是java封装个性的一个根底,须要把握的有:public protected default private 对于class, method, field 的润饰作用。
6. 流程管制
Java 流程管制的根底, 尽管有些语法不肯定很罕用,然而都须要理解,并且在适合的中央应用它们。
须要把握的有:if, switch, loop, for, while 等流程管制的语法。
7. 面向对象编程的概念
这是一个java的外围概念,对于任何java开发者都须要熟练掌握。
Java中很多个性或者说知识点都是和java面向对象编程概念相干的。
在我的了解,一个好的开发者不仅仅须要理解这些个性(知识点)自身。
也更须要晓得这些对象在java的面向对象编程概念中是如何体现进去的,这样更有利于开发者把握java这门开发语言,以及其余面向对象编程的语言。
在这里只是简略列举了一下,次要的知识点包含有:
8. static
动态属性在java日常开发中也是常常应用,须要理解和 static 关键字相干的用法,还有和其余关键字的配合应用, 如是否能够和 abstract, final 等关键字联结应用。
次要须要把握的有:
9. 根底知识点
这里次要列举一些散落的,没有零碎归类的一些java知识点。
在日常的开发中用到也不少。这块内容其实还有很多,目前只是临时演绎了这几个在这里:
包含有:
10. 汇合框架
这个是一个须要多加把握的局部,做java开发,能够说没有不必到汇合框架的,这很重要,这里整顿的Java汇合面试题及答案你必须都要分明。
然而这里的知识点并不难,然而对于汇合最好要理解外部的实现形式,因为这样有助于你在各个不同的场景抉择适宜的框架来解决问题,比方有1W个元素的汇合,常常要进行contains判断操作,晓得了汇合的个性或者外部实现,就很容易做出正确的抉择。
这里包含了如下内容(并发相干不蕴含在内):
汇合框架的体系:根底Collection ,Map
具体汇合实现的内容, List ,Set ,Map 具体的实现,内部结构, 非凡的办法, 实用场景等
汇合相干的工具类 Collections 等的用法
11. 异样框架
异样在java的开发中可能没有那么被器重,异样解决的最佳实战具体阐明了。
个别遇到异样,间接上抛,或者轻易catch一下解决之后对于程序整体运行也没有什么大的影响。不过在企业级设计开发中, 异样的设计与解决的好坏,往往就关系着这个零碎整体的健壮性。
一个好的零碎的异样对于开发者来说,解决应该对立,防止各处散落很多异样解决逻辑;对于零碎来说,异样应该是可控的,并且是易于运维的,某些异样呈现后,应该有应答的办法,晓得如何运维解决,所以尽管异样框架很简略,然而对于整个企业级利用开发来说,异样解决是很重要的,解决好异样就须要理解Java中的异样体系。
这部分须要把握的知识点不多,次要就是:
异样的体系:
Throwable Exception RuntimeException Error RuntimeException 和 个别 Exception 的区别, 具体解决办法等
12. Java IO
IO 在java中不仅仅是文件读写那么简略,也包含了 socket 网络的读写等等所有的输入输出操作。比如说 规范HTTP申请中Post的内容的读取也是一个输入的过程,等等…
对于IO,Java不仅提供了根本Input、Output相干的api,也提供了一些简化操作的Reader、Writer等api,在某些开发(波及大量IO操作的我的项目)中也很重要,个别日常的开发中也会波及(日志,临时文件的读写等)。
在这中的知识点次要有:
根本IO的体系包含有InputStream , OutputStream, Reader/Writer, 文件读取,各种流读取等,NIO 的概念, 具体应用形式和应用场景。
13. 多线程并发
多线程是Java中普遍认为比拟难的一块。
多线程用好了能够无效进步cpu使用率, 晋升整体零碎效率, 特地是在有大量IO操作阻塞的状况下;这里整顿的Java多线程面试题及答案你必须都要分明。
然而它也是一柄双刃剑, 如果用不好,零碎非但晋升不大,或者没有晋升,而且还会带来多线程之间的调试时等问题。
在多线程中内容有很多,只是简略阐明一下Java中初步应用多线程须要把握的知识点,当前有机会独自再具体介绍一些高级个性的应用场景。
14. 网络
Java中也是提供了能够间接操作 TCP协定、UDP协定的API。
在须要强调网络性能的状况下,能够间接应用TCP/UDP 进行通信。
在查看Tomcat等的源码中,就能够看到这些相干API的应用状况。
不过个别也比拟少会间接应用TCP,会应用诸如MINA、Netty这样的框架来进行解决,因为这个方面的开发波及不多,所以就不再具体列举了。
15. 工夫日期解决
简直对于每个利用来说,工夫日期的解决也是绕不过来的,然而JDK8 之前的工夫相干API用法并不敌对。
在那个时代,能够抉择Joda等工夫框架。到了JDK8 公布之后,全新的工夫API根本交融了其余框架的长处,曾经能够很好的间接应用了。
对于Java开发者来说,须要熟练地应用API来对工夫和日期做相干的解决。
具体知识点不再列举,会在当前再写个专门的文章来总结一下JDK8中工夫日期API的用法。
16. XML解析/JSON解析
其实这两块内容都不是J2SE外面的内容,然而在日常开发中,和其余程序交互,和配置文件交互,越来越离不开这两种格局的解析。
不过对于一个开发者来说,可能理解一些XML/JSON具体解析的原理和办法,有助于你在各个具体的场景中更好的抉择适合你的形式来使得你的程序更有效率和更加强壮。
XML:须要理解 DOM解析和 SAX解析的基本原理和各自的实用场景
JSON:须要理解一些罕用JSON框架的用法, 如 Jackson, FastJson, Gson 等。
17. Maven 应用
Maven也不是Java外面的内容,然而maven是革命性的,给java开发带来了微小的便当,这30个Maven命令你必须相熟。
从依赖的引入和治理,开发流程的更新和公布产出,乃至版本的更新,应用maven能够大大简化开发过程中的复杂度,从而节俭大量工夫。
能够说,maven曾经成为java开发者的标配了。所以我把maven也作为一个java开发者对于根底必备的知识点。
18. 泛型
这是JDK5开始引入的新概念,其实是个语法糖。
在编写java代码时会有些许便当, 个别的利用或者是业务的开发,只须要简略应用,不肯定会用到定义泛型这样的操作。
然而开发一些根底公共组件会应用到,能够在须要的时候再细看这个局部,个别状况下只有会简略应用即可。
19. 注解
也是jdk5 之后引入的,元注解你必须理解。
spring是个优良的框架,最开始就以xml作为规范的配置文件。
不过到了Spring3 之后,尤其是 spring-boot 衰亡之后,越来越推崇应用标注来简化xml配置文件了,对于开发者来说,能够节俭不少xml配置的工夫。
然而劣势是在于标注散落在各个类中,不像xml,能够对所有配置有个全局性的了解和治理,所以还没有方法说齐全就取代所有的xml。
对于个别开发者,会应用标注即可,一些公共组建的开发者可能会须要理解标注的定义和实现,能够在具体须要的时候再细看。
20. RMI
RemoteMethodInvocation ,Java语言特有的近程调用接口,应用还是比较简单不便,点击这里理解RMI与RPC的区别详情。
不过须要跨语言的状况下,就须要应用 webservice 等其余形式来反对。
一般来说,程序都不须要应用RMI,不过能够在特定的状况下应用,我就在一个我的项目中,应用RMI来进行程序近程启动进行的管制。
21. JNI
Java Native Interface,能够容许Java中调用本地接口办法,个别用于C/C++代码的调用。
须要留神的是在java中加载so/dll文件的门路问题,自身调用接口并不简单,然而常常在是否加载了所需的本地接口库中破费较多工夫。
以上也只是简略介绍了下我对于这些java根本知识点和技术点的一些认识和介绍。
感激大家的认同与反对,小编会继续转发《乐字节》优质文章