鼻息肉-ballbet贝博app西甲-ballbet贝博app下载

来历:java进阶架构师

链接:https://dwz.cn/z9H5Ebx9

51闲来无事,师长一贯不(没)喜(有)欢(钱)凑热闹,倒不如趁着这时分复盘复盘。而写这篇文章的意图是想总结一下自己这么多年来运用java的一些心得体会,期望能够给咱们一些经历,能让咱们更好学习和运用Java。

这次介绍的首要内容是和J2SE相关的部分,别的,会在今后再介绍些J2EE相关的、和Java中各个结构相关的内容。

经过这么多年的Java开发,以及结合平常面试Java开发者的一些经历,我觉得关于J2SE方面首要便是要把握以下的一些内容。

1. JVM相关

关于刚刚触摸Java的人来说,JVM相关的常识纷歧定需求了解很深,对此里边的概念有一些简略的了解即可。

不过关于一个有着3年以上Java经历的资深开发者来说,不会JVM简直是不行承受的。

JVM作为java运转的根底,很难信任关于JVM一点都不了解的人能够把java言语吃得很透。

我在面试有超越3年Java经历的开发者的时分, JVM简直便是一个必问的问鼻息肉-ballbet贝博app西甲-ballbet贝博app下载题了。

当然JVM不是仅有决议技能才能好坏的面试问题,可是能够佐证java开发才能的凹凸。

在JVM这个大类中,我以为需求把握的常识有:

  • JVM内存模型和结构
  • GC原理,功能调优
  • 调优:Thread Dump, 剖析内存结构
  • class 二进制字节码结构, class loader 体系 , class加载进程 , 实例创立进程
  • 办法履行进程
  • Java各个大版别更新供给的新特性(需求简略了解)

2. Java的运转

这条或许出看很简略,java程序的运转谁不会呢?

不过许多时分, 咱们仅仅单纯经过IDE去履行java程序,底层IDE又是怎么履行java程序呢?许多人并不了解。

这个常识点是最最根本的java开发者需求把握的,第一个肯定是教你怎么在指令行中履行java程序,可是许多人一旦把java学完了,IDE用上了,就把这个都忘了。

为什么着重要知道这个呢,知道了java最朴实的发动办法之后,你才能在发动出问题的时分,去剖析其时发动的目录多少,履行命名怎么,参数怎么,是否有缺失等。

这样有利于你真实开发中去处理那些奇奇怪怪的或许和环境相关的问题。

在这儿需求把握的常识有:

  • javac 编译java文件为 class 文件
  • java 指令的运用, 带package的java类怎么在指令行中发动
  • java程序触及到的各个途径(classpath, java。library。path, java运转的主目录等)

3. 数据类型

这条没有什么许多说的,无非便是Java中的根本类型和目标类型的把握。

能够再了解一些JDK怎么主动转化方面的常识,包含装箱拆箱等,还要留意防止装箱之后的类型持平的判别。

首要常识点:

  • 根本类型: int, long, float, double, boolean 。。。
  • 对应的目标类型: Integer 等类型到根本类型的转化, 装箱和拆箱
  • Object类型: equals, hashcode
  • String 类型的特色

4. 目标和实例

在这方面,开发者需求了解class和instance的概念以及之间的不同, 这是java面向目标特性的一个根底。

首要常识点有:

Class和 Instance 的概念

Instance 创立的进程:

  • 无承继:分配内存空间, 初始化变量, 调用结构函数
  • 有承继:处理静态动作, 分配内存空间, 变量界说为初始值 , 从基类->子类, 处理界说处的初始化, 履行结构办法

需求留意的点:

  • 静态特色等从基类->子类进行初始化
  • 默许无参结构办法相关的特性  

5. 拜访操控

这也是java封装特性的一个根底,需求把握的有:public protected default priv标签14ate 关于class, method, field 的润饰效果。

6. 流程操控

Java 流程操控的根底, 尽管有些语法纷歧定很常用,可是都需求了解,并且在适宜的当地运用它们。

需求把握的有:if, switch, loop, for, while 等流程操控的语法。

7. 面向目标编程的概念

这是一个java的中心概念,关于任何java开发者都需求熟练把握。

Java中许多特性或许说常识点都是和java面向目标编程概念相关的。

在我的了解,一个好的开发者不只仅需求了解这些特性(常识点)自身。

也更需求知道这些目标在java的面向目标编程概念中是怎么表现出来的,这样更有利于开发者把握java这门开发言语,以及其他面向目标编程的言语。

在这儿仅仅简略罗列了一下,首要的常识点包含有

  • 面向目标三大特性:封装,承继,多态;
  • 各自的界说概念,有哪些鼻息肉-ballbet贝博app西甲-ballbet贝博app下载特性表现出来,各自的运用场景
  • 静态多分配,动态单分配的概念
  • 重载的概念和运用
  • 承继:接口多完成,基类单承继
  • 笼统,笼统类,接口
  • 多态:办法掩盖的概念和运用
  • 接口回调

8. static

静态特色在java日常开发中也是常常运用,需求了解和 static 关键字相关的用法,还有和其他关键字的合作运用, 如是否能够和 标签14abstract, final 等关键字联合运用。

首要需求把握的有:

  • 静态特色的界说,运用,以及类加载时怎么初始化
  • 静态办法的界说和运用
  • 静态类的界说和运用
  • 静态代码块的界说和初始化机遇

9. 根底知标签14识点

这儿首要罗列一些散落的,没有体系归类的一些java常识点。

在日常的开发中用到也不少。 这块内容其实还有许多,现在仅仅暂时概括了这几个在这儿:

包含有:

  • equals
  • hashcode
  • tring/stringbuffer
  • final
  • finally
  • finalize

10. 调集结构

这个是一个需求多加把握的部分,做java开发,能够说没有不用到调集结构的,这很重要,这儿收拾的Java调集面试题及答案你有必要都要清楚。

可是这儿的常识点并不难,可是关于调集最好要了解内部的完成办法,由于这样有助于你在各个不同的场景挑选适宜的结构来处理问题,比方有1W个元素的调集,常常要进行contains判别操作,知道了调集的特性或许内部完成,就很简略做出正确的挑选。

这儿包含了如下内容(并发相关不包含在内):

调集结构的体系: 根底Collection ,Map

详细调集完成的内容, List ,Set ,Map 详细的完成,内部结构, 特别的办法, 适用场景等

调集相关的东西类 Collections 等的用法

11. 反常结构

反常在java的开发中或许没有鼻息肉-ballbet贝博app西甲-ballbet贝博app下载那么被注重,反常处理的最佳实战详细阐明晰。

一鼻息肉-ballbet贝博app西甲-ballbet贝博app下载般遇到反常,直接上抛,或许随意catch一下处理之后关于程序全体运转也没有什么大的影响。不过在企业级规划开发中, 反常的规划与处理的好坏,往往就关系着这个体系全体的强健性。

一个好的体系的反常关于开发者来说,处理应该一致,防止遍地散落许多反常处理逻辑;关于体系来说,反常应该是可控的,并且是易于运维的,某些反常呈现后,应该有应对的办法,知道怎么运维处理,所以尽管反常结构很简略,可是关于整个企业级运用开发来说,反常处理是很重要的,处理好反常就需求了解Java中的反常体系。

这部分需求把握的常识点不多,首要便是:

反常的体系:

Throwable
Exception
RuntimeException
Error
RuntimeException 和 一般 Exception 的差异, 详细处理办法等

12. Java IO

IO 在java中不只仅是文件读写那么简略,也包含了 socket 网络的读写等等一切的输入输出操作。比方说 规范HTTP恳求中Post的内容的读取也是一个输出的过鼻息肉-ballbet贝博app西甲-ballbet贝博app下载程,等等…

关于IO,Java不只供给了根本Input、Output相关的api,也供给了一些简化操作的Reader、Writer等api,在某些开发(触及许多IO操作的项目)中也很重要,一般日常的开发中也会触及(日志,临时文件的读写等)。

在这中的常识点首要有:

根本IO的体系包含有InputStream , OutputStream, Reader/Writer, 文件读取,各种流读取等,NIO 的概念, 详细运用办法和运用场景。

13. 多线程并发

多线程是Java中普遍以为比较难的一块。

多线程用好了能够有用进步cpu运用率, 提高全体体系功率, 特别是在有许多IO操作堵塞的状况下;这儿收拾的Java多线程面试题及答案你有必要都要清楚。

可是它也是一柄双刃剑, 假如用欠好,体系非但提高不大,或许没有提高,并且还会带来多线程之间的调试时等问题。

在多线程中内容有许多,仅仅简略阐明一下Java中开端运用多线程需求把握的常识点,今后有时机独自再详细介绍一些高档特性的运用场景。

  • 多线程的完成和发动
  • callable 与 runable 差异
  • syncrhoized ,reentrantLock 各自特色和比对
  • 线程池
  • future 异步办法获取履行成果
  • concurrent 包
  • lock

14. 网络

Java中也是供给了能够直接操作 TCP协议、UDP协议鼻息肉-ballbet贝博app西甲-ballbet贝博app下载的API。

在需求着重网络功能的状况下,能够直接运用TCP/UDP 进行通讯。

在检查Tomcat等的源码中,就能够看到这些相关API的运用状况。

不过一般也比较少会直接运用TCP,会运用比如MINA、Netty这样的结构来进行处理,由于这个方面的开发触及不多,所以就不再详细罗列了。

15. 时刻日期处理

简直关于每个运用来说,时刻日期的处理也是绕不过去的,可是JDK8 之前的时刻相关API用法并不友爱。

在那个年代,能够挑选Joda等时刻结构。到了JDK8 发布之后,全新的时刻API根本交融了其他结构的长处,现已能够很好的直接运用了。

关于Java开发者来说,需求熟练地运用API来对时刻和日期做相关的处理。

详细常识点不再罗列,会在今后再标签3写个专门的文章来总结一下JDK8中时刻日期API的用法。

16. XML解析/JSON解标签3析

其实这两块内容都不是J2SE里边的内容,可是在日常开发中,和其他程序交互,和装备文件交互,越来越离不开这两种格局的解析。

不过关于一个开发者来说,能够了解一些XML/JSON详细解析的原理和办法,有助于你在各个详细的场景中更好的挑选适宜你的办法来使得你的程序更有用率和愈加强健。

XML: 需求了解 DOM解析和 SAX解析的根本原理和各标签17自的适用场景

JSON: 需求了解一些常用JSON结构的用法, 如 Jackson, FastJson, Gson 等。

17. Maven运用

Maven也不是Java里边的内标签1容,可是maven是革命性的,给java开发带来了巨大的便当,这30个Maven指令你有必要了解。

从依靠的引进和办理,开发流程的更新和发布产出,甚至版别的更新,运用maven能够大大简化开发进程中的杂乱度,然后节省许多时刻。

能够说,maven现已成为java开发者的标配了。所以我把maven也作为一个java开发者关于根底必备的常识点。

18. 泛型

这是JDK5开端引进的新概念,其实是个语法糖。

在编写java代码时会有少许便当, 一般的运用或许是事务的开发,只需求简略使鼻息肉-ballbet贝博app西甲-ballbet贝博app下载用,纷歧定会用到界说泛型这样的操作。

可是开发一些根底公共组件会运用到,能够在需求的时分再细看这个部分,一般状况下只需会简略运用即可。

19. 注解

也是jdk5 之后引进的,元注解你有必要了解。

spring是个优异的结构,最开端就以xml作为规范的装备文件。

不过到了Spring3 之后,尤其是 spring-boot 鼓起之后,越来越推重运用标示来简化xml装备文件了,关于开发者来说,能够节省不少xml装备的时刻。

可是下风是在于标示散落在各个类中,不像xml,能够对一切装备有个全局性的了解和办理,所以还没有办法说彻底就替代一切的xml。

关于一般开发者,会运用标示即可,一些公共组成的开发者或许会需求了解标示的界说和完成,能够在详细需求的时分再细看。

20. RMI

RemoteMethodInvocation ,Java言语特有的长途调用接口,运用仍是比较简略便利,点击这儿了解RMI与RPC的差异概况。

不过需求跨言语的状况下,就需求使标签3用 webservice 等其他办法来支撑。

一般来说,程序都不需求运用RMI,不过能够在特定的状况下运用,我就在一个项目中,运用RMI来进行程序长途发动中止的操控。

21.标签11 JNI

Java Native Interface,能够答应Java中调用本地接口办法,一般用于C/C++代码的调用。

需求留意的是在java中加载so/dll文件的途径问题,自身调用接口并不杂乱,可是常常在是否加载了所需的本地接口库中花费较多时刻。

以上也仅仅简略介绍了下我关于这些java根本常识点和技能点的一些观点和介绍。

这些内容都源自于我这些年来运用java的一些总结 。这傍边还有些内容不行完善的当地,会经过今后的文章再添加上。

我是一名Java程序员,最近发现有许多头条的小伙伴在学习Java的时分,感觉学的没有方向,越学越苍茫,这样的状况一般都是学习办法开端便是过错的。没有把Java技能进行专业体系化的学习。从工作和节省时刻的视点考虑,假如有谁遇到这方面的问题,能够随时问我,由于我做Java也比较久了,关于这些问题比较了解。

你们能够重视我的头条号并在后台私信我:Java,里边有Java学习2019年精讲视频和收拾的一些学习手册,面试题,开发东西,PDF文档书本教程(更多的适宜于根底的初学者)

标签:

Write a Comment

电子邮件地址不会被公开。 必填项已用 *标注