06 — IO与NIO索引
定位: Java 的输入输出系统 — 字节/字符、阻塞/非阻塞,从文件到网络的数据通道 面试高频度: ⭐⭐⭐⭐
一、知识全景图
┌─────────────────────────────────────────────────────────────┐
│ Java IO 系统全景 │
│ │
│ ┌──────────── 传统 IO (java.io) ────────────────────┐ │
│ │ │ │
│ │ 字节流: InputStream / OutputStream (1字节=8位) │ │
│ │ 字符流: Reader / Writer (1字符=2字节) │ │
│ │ 缓冲流: BufferedInputStream → 减少磁盘IO次数 │ │
│ │ 装饰器: 多层包装 → IO 是装饰器模式的典型应用 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────── NIO (java.nio) ───────────────────────┐ │
│ │ │ │
│ │ 核心三件套: Channel + Buffer + Selector │ │
│ │ 非阻塞 IO → 一个线程管多个连接 (Reactor 模式) │ │
│ │ 直接内存 → 减少用户态/内核态拷贝 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────── 序列化 ──────────────────────────────┐ │
│ │ │ │
│ │ Serializable 接口 → 对象↔字节流的双向转换 │ │
│ │ serialVersionUID → 版本控制 │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘二、子专题导航
| # | 主题 | 面试频率 | 核心内容 |
|---|---|---|---|
| **字节流与字符流** | 字节流与字符流 | ⭐⭐⭐ | 流分类、编码问题、InputStream/Reader 层级 |
| **缓冲流与装饰器模式** | 缓冲流与装饰器模式 | ⭐⭐⭐ | 装饰器模式在 IO 中的应用、缓冲区设计 |
| **NIO核心** | NIO核心 | ⭐⭐⭐⭐ | Channel/Buffer/Selector、BIO vs NIO、直接内存 |
| **序列化机制** | 序列化机制 | ⭐⭐⭐ | Serializable、serialVersionUID、transient、自定义序列化 |
📚 相关文件
- **Java文库设计文档** — 返回总纲
- **直接内存** — NIO 直接内存的 JVM 原理