赞
踩
Akka的IO层设计可以参考这篇文档,本文简单介绍一下ByteString的设计。
Actor之间是通过消息沟通的,但为了避免同步问题,消息必须是Immutable。因此,Akka无法使用byte[]或ByteBuffer,而是设计了ByteString来表示二进制数据。理解这一点很重要,因为ByteString是不可变的,所以ByteString的很多看似修改状态的方法实际上都是返回一个新的ByteString实例。如果对String或BigInteger等Java自带的不可变类比较了解,那么就很容易理解这一点。
ByteString是一种类似Rope的数据结构,如下图所示:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。