一、jdk1.8新特性
之前一直知道jdk1.8添加了许多东西,也没仔细了解过,现在看过之后做一下总结。
1、lambda表达式
匿名内部类和lambda表达式的区别:
- 所需类型不同
匿名内部类可以是接口、抽象类、具体类;lambda表达式只能是接口
- 使用限制不同
使用lambda表达式接口中只能有一个抽象方法;匿名内部类没有限制
- 实现原理不同
匿名内部类编译后产生一个单独的.class字节码文件;lambda表达式没有,对应的字节码会在运行的时候自动生成
2、方法引用
是指对lambda表达式只有一行代码的简写(::)
3、函数式接口
什么是函数式接口 --> 有且只有一个抽象方法的接口
4、Stream流
5、新的日期时间API
6、Optional类
二、NIO网络编程
1、TCP握手机制---三次握手(逻辑上的确认关系,确认可以传输数据)、四次挥手(断开连接)
2、UDP用户数据报协议
3、BIO 阻塞同步IO
4、NIO的三个核心组件:Buffer缓冲区、Channel通道、Selector选择器
5、ByteBuffer内存类型直接内存和非直接内存(堆内)
6、为什么要创建堆外内存,堆内进行io的时候比堆外多一步拷贝(先从堆内拷贝到堆外)
7、为什么要多一步拷贝?GC会移动对象内存,防止拷贝的时候内存地址发生改变,导致拷贝失败
8、Selector 事件驱动机制
9、Netty中的ChannelHandle
三、事务
1、事务隔离级别--Oracle默认读已提交、mysql默认可重复读
2、悲观锁、乐观锁
3、可重复读 级别已经屏蔽了脏读、可重复读、幻读(针对多个数据)
四、设计模式
1、六大设计原则
2、23种设计模式:创建型、
3、设计模式主要是为了解决什么问题,实际中有哪些应用,在什么样的情况下我们要使用设计模式
4、单例模式多种写法实际代码中使用的方式?
最安全:枚举类型
真正使用(从jdk源码中分析):双重校验锁(问题:a、性能 b、反射破坏 c、通过类加载器被多次加载)、饿汉式
5、反射加序列化,修改属性的访问级别
6、什么是静态内部类,静态内部类的作用,适用场景
7、Runtime 使用饿汉式 AbstractBeanFactory 双重校验锁
8、bean实例化就是 创建对象后将对象放到map中
9、重点掌握的设计模式:
创建型:单例模式、工厂模式、建造者模式
结构型:适配器模式、代理模式、装饰器模式、组合模式
行为型:责任链模式、观察者模式、策略模式、
10、工厂模式---解耦 -->类后面带Factory的
11、构建者模式 -->常见类后面有Builder
12、单例模式就是为了性能;工厂模式就是为了一个地方创建对象,减少修改;构建者模式一个类的构造函数超过4个,并且可选参数
13、链式调用
14、静态代理、动态代理
15、jdk动态代理,