第一章Netty,更高级一些API的介绍
一、高级读写与字节序控制在基础读写之外处理跨平台数据交互或特定协议解析时需关注绝对位置读写及字节序设置绝对位置读写使用 get(int index) 和 put(int index, byte b) 可直接操作指定索引不改变 position适合随机访问或修改头部元数据。字节序切换通过 order(ByteOrder.LITTLE_ENDIAN) 设置小端序确保与 C/C 程序或网络协议如 x86 架构数据交互时数值解析正确默认为大端序。二、缓冲区比较与复制用于数据校验或安全拷贝避免直接操作底层数组带来的风险内容比较compareTo(ByteBuffer other) 按字典序比较剩余元素equals(Object ob) 判断剩余元素是否完全一致常用于消息指纹校验。安全复制duplicate() 创建共享底层数据但拥有独立 position/limit 的新缓冲区slice() 截取从当前 position 到 limit 的子视图适合拆包处理。三、字符集编码转换实现字节流与字符串的高效互转避免手动处理编码细节编码写入Charset.forName(“UTF-8”).encode(str) 将字符串转为 ByteBuffer自动处理多字节字符。解码读取Charset.forName(“UTF-8”).decode(buffer) 将缓冲区剩余字节转为 CharBuffer再调用 toString() 获取字符串确保中文不乱码。四、内存映射文件MappedByteBuffer处理超大文件时利用操作系统虚拟内存机制实现零拷贝读写获取映射通过 FileChannel.map(MapMode.READ_WRITE, position, size) 获取 MappedByteBuffer。直接操作像操作普通 ByteBuffer 一样读写文件内容数据由 OS 负责分页加载极大提升大文件随机读写性能无需手动管理文件指针。