老师,重看了一下rocketmq源码,发现第五题答案好像有点问题,因为rocketmq的commitlog文件和consumeQueue文件大小都是固定的,commitlog默认是1G,consumeQueue是30w乘以20字节,所以查询消息所在文件的时候直接用(消息偏移量-第一个MappedFile的起始偏移量)/ 文件固定大小 即可得到所在文件下标,具体可以看下源码中MappedFileQueue.findMappedFileByOffset()方法,所以总体时间复杂度应该是O(1),不知道我有没有理解错,还望老师解答。
作者回复: 感谢你的指正!我检查了一下RocketMQ的源码,确实你的理解是正确的,我联系编辑小姐姐修改。