《Java架构师的第一性原理》20Java基础之语言基础
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 用法和原理
面试官:说说CountDownLatch,CyclicBarrier,Semaphore的原理?
|
作者:沙漏哟 出处:计算机的未来在于连接 本文版权归作者和博客园共有,欢迎转载,请留下原文链接 微信随缘扩列,聊创业聊产品,偶尔搞搞技术 |