用java实现bustub|用java实现bustub (一)(关系型数据库的实现)
除了上一篇提到的基本要求之外,进一步地,为了保证有客户pin住的页面不被evict,还必须给每一个缓存池的slot维护一个atomic reference count。
为了让客户写入每一个Page
的内容,我还额外提供
fun writePage(
source: ByteArray,
destinationOffset: Int,
startIndex: Int,
endIndex: Int
)
此签名跟kotlin标准库的
copyInto
是一样的。接下来,我编写了初步的单元测试来检查缓存池管理器的实现,简单的说主要有:
newPage
调用:
- 应该检查缓存池的容量限制
- 应尝试evict unpinned页面来为新页面腾出空间
unpinPage
调用:
- 应该及时将脏页面写回磁盘
- 返回值要正确反映是否pin操作和unpin操作数量上是否相同
fetchPage
方法:
- 把读取磁盘的操作分派给
diskManager
- 把读取磁盘的操作分派给
pinPage
的操作,而是隐含在每一次fetchPage
调用中。推荐阅读
- Arrays.toString() 的用法
- SpringMVC中常用参数校验类注解使用示例教程
- Vue.set与this.$set的用法与使用场景介绍
- JavaScript滚动轮播图制作原理详解
- java|java spring mvc处理器映射器介绍
- 详解Python中sorted()和sort()的使用与区别
- python中使用正则表达式的方法详解
- Vue|Vue 简单配置公用接口地址方式
- python机器学习sklearn实现识别数字
- Python实现xml格式转txt格式的示例代码