第一章 深入Web请求过程
1. 发起请求
2. DNS域名解析
第二章 深入分析Java I/O的工作机制
1. Java的I/O类库的基本架构
Java的I/O操作类在包java.io下,大概有将近80个类,这些类大概可以分成如下四组。
- 字节操作:InputStream、OutputStream
- 字符操作:Writer、Reader
- 磁盘操作:File
- 网络操作:Socket
2. 磁盘I/O的工作机制
- 几种访问文件的方式:
- 标准访问文件方式:用户调用read()、write()接口通过内核地址空间的缓存操作磁盘。
- 直接I/O方式:应用程序直接访问磁盘数据,而不经过操作系统内核数据缓冲区,这样做的目的就是减少一次从内核缓冲区到用户程序缓存的数据复制。
- 同步访问文件方式:数据的读取和写入是同是操作
- 异步访问文件方式
- 内存映射方式
- Java序列化就是将一个对象转化成一串二进制表示的字节数组,通过保存或转移这些字节数据来达到持久化的目的。需要持久化,对象必须继承java.io.Serializable接口
3. 网络I/O的工作机制
- Java Socket的工作机制
4. NIO的工作方式
- NIO的工作机制
5. 设计模式之适配器模式
- 适配器模式的功能很好理解,就是把一个类的接口变换成客户端所能接受的另一种接口,从而使两个接口不匹配而无法在一起工作的两个类能够在一起工作。
- InputStreamReader实现了Reader接口,并且持有了InputStream的引用,这里是通过StreamDecoder类间接持有的,适配器就是InputStreamReader类,而源角色就是InputStream代表的实例对象,目标接口就是Reader类了。
6. 设计模式之装饰器模式
- 装饰器模式,顾名思义,就是将某个类重新装扮一下,在功能上更强大,这就是装饰器模式所要达到的目的。
- InputStream类就是以抽象组件存在的;而FileInputStream就是具体组件,它实现了抽象组件的所有接口;FilterInputStream类无疑就是装饰角色,它实现了InputStream类的所有接口,并且持有InputStream的对象实例的引用;BufferedInputStream是具体的装饰器实现者,它给InputStream类附加了功能,这个装饰器类的作用就是使得InputStream读取的数据保存在内存中,而提高读取的性能。