《Java架构师的第一性原理》20Java基础之语言基础

发布时间 2023-12-21 13:58:16作者: 沙漏哟

1 Java基础知识

1.1 面向对象

1.2 基本数据类型

1.3 基础API

 

 

 

8 JDK1.8新特性

Lambda表达式

java也开始承认了函数式编程, 就是说函数既可以作为参数,也可以作为返回值, 大大的简化了代码的开发

default关键字

打破接口里面是只能有抽象方法,不能有任何方法的实现,接口里面也可以有方法的实现了

新时间日期APILocalDate | LocalTime | LocalDateTime

之前使用的java.util.Date月份从0开始,我们一般会+1使用,很不方便,java.time.LocalDate月份和星期都改成了enum java.util.Date和SimpleDateFormat都不是线程安全的,而LocalDate和LocalTime和最基本的String一样,是不变类型,不但线程安全,而且不能修改。新接口更好用的原因是考虑到了日期时间的操作,经常发生往前推或往后推几天的情况。用java.util.Date配合Calendar要写好多代码,而且一般的开发人员还不一定能写对。

JDK1.7与JDK1.8 ConcurrentHashMap对比

(1):JDK1.7版本的ReentrantLock+Segment+HashEntry(数组)

(2):JDK1.7采用segment的分段锁机制实现线程安全

(3):JDK1.8版本中synchronized+CAS+HashEntry(数组)+红黑树

(4):JDK1.8采用CAS+Synchronized保证线程安全

(5):查询时间复杂度从原来的遍历链表O(n),变成遍历红黑树O(logN)

1.8 HashMap数组+链表+红黑树来实现hashmap,当碰撞的元素个数大于8时 & 总容量大于64,会有红黑树的引入 除了添加之后,效率都比链表高,1.8之后链表新进元素加到末尾

JDK1.8使用synchronized来代替重入锁ReentrantLock?

(1):因为粒度降低了,在相对而言的低粒度加锁方式,synchronized并不比ReentrantLock差

(2):基于JVM的synchronized优化空间更大

(3):在大数据量下,基于API的ReentrantLock会比基于JVM的内存压力开销更多的内存

9 JDK1.9新特性

模块系统:

模块是一个包的容器,Java 9 最大的变化之一是引入了模块系统(Jigsaw 项目)。

集合工厂方法

通常,您希望在代码中创建一个集合(例如,List 或 Set ),并直接用一些元素填充它。实例化集合,几个 “add” 调用,使得代码重复。Java 9,添加了几种集合工厂方法:

Set<Integer> ints = Set.of(1, 2, 3);
List<String> strings = List.of("first", "second");

改进的 Stream API

Stream 接口中添加了 4 个新的方法:dropWhile, takeWhile, ofNullable。还有个 iterate 方法的新重载方法

改进的 Javadoc:

Javadoc 现在支持在 API 文档中的进行搜索。另外,Javadoc 的输出现在符合兼容 HTML5 标准。

redis代理集群模式,spring有哪些注解,b+b 红黑树区别,三次握手,valitile重排序底层代码, cas 事务的4个特性,java8 java11 特性, filter和interceptor的区别 @autowired原理, dispatcherservlet,分布式事务解决方案spring都有哪些模块,fork join队列,排序算法,

99  直接读这些牛人的原文

查看JDK源码 OpenJDK6,7,8,9,10,11下载链接

跟上Java8 https://github.com/biezhi/learn-java8

8000字长文让你彻底了解 Java 8 的 Lambda、函数式接口、Stream 用法和原理

《我想进大厂》之Java基础夺命连环16问

面试官:说说CountDownLatch,CyclicBarrier,Semaphore的原理?

《我想进大厂》之JVM夺命连环10问

是时候捋一捋Java的深浅拷贝了