Fork me on GitHub

随笔分类 -  java-base-new

java基础和JDK9,10,11,12,13,14,15的新特性
摘要:Java Flight Recorder(JFR)是JVM的诊断和性能分析工具。它可以收集有关JVM以及在其上运行的Java应用程序的数据。JFR是集成到JVM中的,所以JFR对JVM的性能影响非常小,我们可以放心的使用它。 一般来说,在使用默认配置的时候,性能影响要小于1%。 JFR的历史很久远了。早在Oracle2008年收购BEA的时候就有了。JFR一般和JMC(Java Mission Control)协同工作。 JFR是一个基于事件的低开销的分析引擎,具有高性能的后端,可以以二进制格式编写事件,而JMC是一个GUI工具,用于检查JFR创建的数据文件。 这些工具最早是在BEA的JRockit JVM中出现的,最后被移植到了Oracle JDK。最开始JFR是商用版本,但是在JDK11的时候,JFR和JMC完全开源了,这意味着我们在非商用的情况下也可以使用了。 而在今天的JDK 14中,引入了一个新的JFR特性叫做JFR Event Streaming,我们将在本文中详细讲解。 阅读全文
posted @ 2020-05-12 07:03 flydean 阅读(2462) 评论(0) 推荐(0) 编辑
摘要:拷贝对象是java中经常会遇到的问题。java中存在两种类型,基础类型和引用类型。 java的赋值都是传值的,对于基础类型来说,会拷贝具体的内容,但是对于引用对象来说,存储的这个值只是指向实际对象的地址,拷贝也只会拷贝引用地址。 因为引用对象的存在,所以经常会出现和预期不一样的情况。 本文将会深入的探讨一下在拷贝对象中会出现的浅拷贝和深拷贝的情况。 阅读全文
posted @ 2020-05-11 06:51 flydean 阅读(1708) 评论(0) 推荐(0) 编辑
摘要:[toc] 简介 jcmd是JDK自带的调试工具,具有非常强大的功能。jcmd是JDK7中正式引入的,有了jcmd,完全可以替换很多常用的其他工具,比如jstak和jmap。 jcmd可以将具体的诊断命令发送给JVM。为了安全起见,使用jcmd的用户必须跟运行的java程序具有同样的用户和用户组。 阅读全文
posted @ 2020-05-11 06:42 flydean 阅读(878) 评论(0) 推荐(0) 编辑
摘要:在面向对象的世界,Class是java的基础。java.lang.Class实际上是继承自java.lang.Object。 class有一个方法叫做getName,该方法会返回(class, interface, array class, primitive type,或者 void)的Class 阅读全文
posted @ 2020-05-10 06:56 flydean 阅读(3060) 评论(0) 推荐(0) 编辑
摘要:在还没有IDE的时代,高手们还是通过记事本来编程。那时候能够写程序的都是牛人。能把程序写得好的更是牛人中的牛人。 秃头大叔的程序员形象就是在那个时候建立起来的。 还记得十几年前的那一个春天,微风不动,太阳都羞红了脸。因为那时候的我还在一个javac,一个java的编译,运行着java程序。 虽然效率低下,但是看着我跑起来的一个又一个hello world,心里充满了欢喜。 惊喜过后便是失落,java实在太难用了太复杂了,我还是回去写C语言吧。 阅读全文
posted @ 2020-05-10 06:38 flydean 阅读(1664) 评论(0) 推荐(0) 编辑
摘要:[toc] 简介 switch的新特性可是源远流长,早在JDK 12就以预览功能被引入了,最终在JDK 14成为了正式版本的功能:JEP 361: Switch Expressions (Standard)。 其实Switch新增的功能有两个,一个就是可以连写case,一个就是switch可以带返回 阅读全文
posted @ 2020-05-09 06:34 flydean 阅读(1792) 评论(0) 推荐(0) 编辑
摘要:[toc] 说起来,Text Blocks是在JDK13中以第一次预览版本引入的。现在在JDK14中是第二次预览版本 JEP 368: Text Blocks。 在我们日常的工作中,有时候需要用到一大段的字符串,这些字符串需要换行,需要排版,需要转义。在一个文本编辑器中,这当然是非常容易的事情。但是 阅读全文
posted @ 2020-05-09 06:28 flydean 阅读(1235) 评论(0) 推荐(0) 编辑
摘要:[toc] 简介 一般来说,我们创建类和接口的时候都是一个类一个文件,一个接口一个文件,但有时候为了方便或者某些特殊的原因,java并不介意在一个文件中写多个类和多个接口,这就有了我们今天要讲的内部类和内部接口。 内部类 先讲内部类,内部类就是在类中定义的类。类中的类可以看做是类的一个属性,一个属性 阅读全文
posted @ 2020-05-08 06:29 flydean 阅读(1901) 评论(0) 推荐(1) 编辑
摘要:[toc] 简介 String是java中非常常用的一个对象类型。可以说java中使用最多的就是String了。那么String到底有哪些秘密呢?接下来本文将会一一讲解。 String是不可变的 String是不可变的,官方的说法叫做immutable或者constant。 String的底层其实是 阅读全文
posted @ 2020-05-08 06:20 flydean 阅读(296) 评论(0) 推荐(0) 编辑
摘要:[toc] 简介 泛型是JDK 5引入的概念,泛型的引入主要是为了保证java中类型的安全性,有点像C++中的模板。 但是Java为了保证向下兼容性,它的泛型全部都是在编译期间实现的。编译器执行类型检查和类型推断,然后生成普通的非泛型的字节码。这种就叫做类型擦除。编译器在编译的过程中执行类型检查来保 阅读全文
posted @ 2020-05-07 07:34 flydean 阅读(287) 评论(0) 推荐(0) 编辑
摘要:[toc] 简介 泛型是java从JDK 5开始引入的新特性,泛型的引入可以让我们在代码编译的时候就强制检查传入的类型,从而提升了程序的健壮度。 泛型可以用在类和接口上,在集合类中非常常见。本文将会讲解泛型导致的类型擦除。 举个例子 我们先举一个最简单的例子: ~~~java @Slf4j publ 阅读全文
posted @ 2020-05-07 07:15 flydean 阅读(633) 评论(0) 推荐(0) 编辑
摘要:[toc] 一文读懂java中的Reference和引用类型 简介 java中有值类型也有引用类型,引用类型一般是针对于java中对象来说的,今天介绍一下java中的引用类型。java为引用类型专门定义了一个类叫做Reference。Reference是跟java垃圾回收机制息息相关的类,通过探讨R 阅读全文
posted @ 2020-05-04 07:08 flydean 阅读(8719) 评论(0) 推荐(7) 编辑
摘要:[toc] fail safe fail fast知多少 简介 我们在使用集合类的时候,通常会需要去遍历集合中的元素,并在遍历中对其中的元素进行处理。这时候我们就要用到Iterator,经常写程序的朋友应该都知道,在Iterator遍历的过程中,是不能够修改集合数据的,否则就会抛出Concurren 阅读全文
posted @ 2020-04-30 06:56 flydean 阅读(351) 评论(0) 推荐(0) 编辑
摘要:[toc] JDK 14的新特性:Lombok的终结者record 简介 自从面向对象产生之后,程序界就开始了新的变化,先是C发展到了C++,后面java横空出世,大有一统江湖的趋势。 面向对象凭借其结构化的特点和在大型项目中的优势,一路蓬勃发展到今。面向对象不是不好,但是太繁琐。 比如我们要定义一 阅读全文
posted @ 2020-04-30 06:51 flydean 阅读(2585) 评论(0) 推荐(0) 编辑
摘要:JDK 14的新特性:更加好用的NullPointerExceptions 让99%的java程序员都头痛的异常就是NullPointerExceptions了。NullPointerExceptions简称NPE,它是运行时异常的一种,也是java程序中最最容易出现的异常。 出现了NullPoin 阅读全文
posted @ 2020-04-28 07:36 flydean 阅读(272) 评论(0) 推荐(0) 编辑
摘要:JDK 14的新特性:instanceof模式匹配 JDK14在2020年的3月正式发布了。可惜的是正式特性只包含了最新的Switch表达式,而Records,patterns,text blocks仍然是预览特性。 本文要讲的就是JDK14的一个预览特性instanceof的pattern mat 阅读全文
posted @ 2020-04-27 07:38 flydean 阅读(1604) 评论(0) 推荐(0) 编辑
摘要:伴随着2020的寒冬和新冠病毒的肆虐,JAVA迎来了久未已久的JAVA 14。自从2017年JAVA 9发布之后,JAVA的发布版本跟上了敏捷开发的步伐,小步快跑,Java平台发布节奏已从每3年以上的主要版本转变为每6个月发布一次功能。现在,每年的3月和9月都会发布新的版本功能。 三月已过,九月还远吗? 在JAVA 14中,推出了swith的最终版本,并且支持了NVM。 今天本文将会展望一下JAVA 15中会带给我们的新特性 阅读全文
posted @ 2020-04-27 07:30 flydean 阅读(16727) 评论(0) 推荐(2) 编辑
摘要:[toc] java关于throw Exception的一个小秘密 简介 之前的文章我们讲到,在stream中处理异常,需要将checked exception转换为unchecked exception来处理。 我们是这样做的: ~~~java static Consumer consumerWr 阅读全文
posted @ 2020-04-24 07:44 flydean 阅读(856) 评论(0) 推荐(0) 编辑