这周在经过前面两天忙碌后,后面集中精力复习了一些IO方面的概念, 在实践、知识整体结构梳理方面要加强。
Java8新特性之Optional
周一,记录了Java8引入的Optional,跟guava里的Optional一样,对java里判null空操作抽象出一个类,使用它可以让代码更简洁易懂:
Optional<String> userName = Optional.ofNullable(user).map(User::getName); return userName.orElse(null);
Java底层四个核心技术
笼统的说了Java虚拟机、类加载器体系结构、Class文件、Java API四方面内容。
Java IO 基础
主要是IO、NIO、AIO的概念。IO面向字节流,是同步阻赛的,api编程简单,但要一个请求对应一个线程,无法应对请求多大并非的情况,因此引入了NIO。NIO面向buffer,基于Reactor模式、事件驱动思想,通过chanel、select等核心类使请求变为异步非阻赛,以应对大并非的情况。AIO是Java7引入的异步IO,数据的读写操作有操作系统内核完成后通知应用,需要底层操作系统的支持。
Netty学习记录
Netty是基于NIO的高性能通信编程框架,统一了API使用更简单,解决了NIO的一些bug,被互联网、游戏,各类RPC框架广泛应用。
高性能IO之Reactor模式
说了Reactor模式的由来,单线程模型、多线程模型、主从线程模型,以及Reactor模式的构成,优缺点,不论如何它是目前大部分IO都采用的模式。