全站最硬核 百万字强肝RocketMq源码 火热更新中~(二十八)

可以看到内容很简单,根据文件路径创建文件,把内容写入文件中。

回到

string2File(final String str, final String fileName);

看下

String prevContent = file2String(fileName);

这一行干了什么,从外面看,是从文件名获取到一个前置内容prevContent,判断应该是把文件的前置内容落入.bak文件中

可以看到如果从文件中读出的字节数等于文件的字节数(也就是完全读出成功了),则返回读出的内容。

此时就明白这个prevContent的含义了,其实就是先从源文件中预读出一次,预读出成功后,再把预读出的内容全部写入到bak后缀的文件中。其实就是做了一层缓存,先预读出,再把缓存写入源文件。此时我们在.bak和.tmp两个后缀的文件中有读出内容,下面两个操作,

就把.tmp文件冲掉了,应该是这样的,这两行代码其实没有特别搞清楚。但可以肯定.bak文件是一定拥有全部输出内容的。

此时我们就把

persist( )

这个持久化方法读明白了,之前我们自己做持久化,就是落库落库落库,落mysql,但在RocketMq的源码中,我们看到了“持久化”的底层操作,其实就是io流写入本地硬盘。

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览93529 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年1月16日
下一篇 2022年1月16日

相关推荐