自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 mini-lsm通关笔记Week1Day3

由于键值条目以原始格式存储,偏移量存储在单独的数组中,这减少了解码数据时不必要的内存分配和处理开销——您需要做的是简单地将原始块数据复制到数据数组中,并每隔2个字节解码条目偏移量,而不是创建类似Vec将所有的键值对存储在内存中的一个块中。块的大小通常为4 KB(大小可能因存储介质而异),这相当于操作系统中的页面大小和SSD上的页面大小。如果到达块的末尾,我们可以将key设置为空,并从is_valid返回false,这样调用者可以在可能的情况下切换到另一个块。,它将定位在块中的第一个键。

2024-06-22 01:48:24 615

原创 mini-lsm通关笔记Week1Day2

但是,当我们走出if条件并将错误返回给调用者时,PeekMut的drop将尝试在堆中移动元素,这导致访问无效的迭代器。在PeekMut的范围内。你可以简单地用memtable迭代器构造一个LSM迭代器(记得把最新的memtable放在merge迭代器的前面),然后你的存储引擎就可以处理扫描请求了。您需要首先在单个memtable上创建迭代器,然后在所有memtable上创建合并迭代器,最后实现迭代器的范围限制。然而,在我们的情况下,我们不希望在迭代器上有这样的生命周期,以避免使系统过于复杂(并且难以编译…

2024-06-22 01:47:00 641

原创 mini-lsm通关笔记Week1Day1

使用RustRover打开项目,按照如下命令执行,运行第一天的ut需要先安装nextest。

2024-06-13 23:18:19 726

原创 libfort中文教程-翻译

属性可以设置为默认值(用于将来创建的表中的所有单元格)、用于指定表的所有单元格、用于指定某一行的单元格、用于指定某一列中的单元格以及用于指定表的特定单元格。libfort有许多内置的边框样式。要更改libfort表的边框样式,可以使用。所有用来写数据的函数都是成对的:(默认情况下,在libfort表中创建的所有单元格都将具有相同的属性。表都有一个当前单元格——在下一次写操作中将向其写入数据。在表生存期中分配的所有资源将在析构函数中自动释放。可以向表单元写入任意数量的字符串参数。向一组连续的单元格写入数据,

2024-01-18 22:22:35 932

原创 CMU 14-445/645 Project #2 Hash Index

在fall2019的版本中需要实现的hash table的测试代码()已经被注释掉了,所以这里实现的是fall2023版本中的可扩展哈希。

2024-01-11 22:52:38 1533

原创 使用Idea2023运行tomcat9项目

使用Idea2023运行tomcat9项目

2023-10-12 00:18:41 189

原创 手搓zookeeper样例实现记录

在学习zookeeper过程中,学习了一个监听节点状态变化,而开始、停止计数的案例。看懂了不代表就会了,于是想自己实现一个简单的版本。在自己实现的过程中也遇到了一些问题,在这里记录一下。

2023-06-02 21:06:06 67

原创 CMU15-445/645 Lecture#7 Tree Indexes I

Tree Indexes I构建索引的另一种方式就是通过Tree。B+ Tree有一个称为B树的特定数据结构。人们还使用该术语来泛指一类平衡树数据结构:→ B-Tree (1971)→ B+Tree (1973)→ B*Tree (1977?)→ B^link-Tree (1981)相关资料关于B树及B+树可以通过以下两篇文章了解:漫画:什么是B-树?https://juejin.im/post/5c31f64c6fb9a049ac794ffc漫画:什么是B+树?https://mp

2020-06-06 16:48:39 284

原创 CMU15-445/645 Lecture#6 Hash Tables

Hash Tables哈希表实现了将键映射到值的无序关联数组。它使用哈希函数为给定键计算数组的偏移量,从该偏移量可以可以找到值。空间复杂度:O(n)操作复杂度:→平均:O(1)→最差:O(n)Static Hash Tables分配一个巨大的数组,该数组为您需要存储的每个元素分配一个插槽。要查找条目,请通过%n以找到数组中的偏移量前提您会提前知道元素的数量每个键都是唯一的最完美的的哈希函数:→ 如果key1 ≠ key2,则 hash(key1) ≠ hash(key2)Ha

2020-05-10 20:50:30 256

原创 CMU15-445/645 Lecture#5 Buffer Pools

双重环境前端采用OLTP型数据库,负责数据的查询、修改。后端采用OLAP型数据库,负责数据的分析。Buffer Pool ManagerBuffer Pool 组织内存区域组织为固定大小的页面数组。数组条目称为frame。当DBMS请求页面时,将精确的副本放置在这些frame之一中。Buffer Pool元数据page table跟踪当前在内存中的页面。每页还维护其他元数据:→Dirty Flag→Pin/Reference 计数器LOCKS VS LATCHES在讨论DBM

2020-05-08 17:36:50 313

原创 CMU15-445/645 Lecture#4 Database Storage II

日志结构的文件组织DBMS只存储日志记录,而不是在页面中存储元组。系统将日志记录追加到有关如何修改数据库的文件中:→插入存储整个元组。→删除将元组标记为已删除。→更新仅包含已修改属性的增量。建立索引以使其跳至日志中的位置。定期压缩日志。数据表示元组本质上是字节序列。DBMS的工作是将这些字节解释为属性类型和值。DBMS的目录包含有关表的模式信息,系统使用这些表来确定元组的...

2020-05-08 17:30:58 198

原创 CMU15-445/645 Lecture#3 Database Storage I

面向磁盘的DBMS数据库全部在磁盘上,数据库文件中的数据被组织成页面,第一页是目录页面。 为了对数据进行操作,DBMS需要将数据带入内存。它通过具有一个缓冲池来实现此目的,该缓冲池管理着磁盘和内存之间的来回移动。 DBMS还具有将执行查询的执行引擎。 执行引擎将向缓冲池询问特定的页面,并且缓冲池将负责将该页面带入内存并为执行引擎提供指向内存中页面的指针。 当执行引擎在该内存上运行时,缓冲池管理器...

2020-05-08 17:15:46 252

原创 CMU15-445/645 Lecture#2 Advanced SQL

SQL的历史最新的SQL规范:2016→ SQL:2016 → JSON, Polymorphic tables→ SQL:2011 → Temporal DBs, Pipelined DML→ SQL:2008 → TRUNCATE, Fancy sorting→ SQL:2003 → XML, windows, sequences, auto-gen IDs.→ SQL:1999 ...

2020-05-08 16:34:38 329

原创 CMU15-445/645 Lecture#1 Course Introduction and the Relational Model

关系性数据库提出的背景刚开始是没有数据库这概念的.当数据量比较少时用一个啥txt文本文件就差不多就能搞定了.但数据量稍微多一点时,而且数据保存在不同的文件中.比如啥txt,doc,excel等文件.此时要处理数据还是手动去查询更改就非常之麻烦.可能得再整个简单应用程序帮你做些事了.只给你提供一些简单的用户界面.封装背后的一些复杂操作.此时数据的组织和保存还是主要依靠操作系统的文件系统.应用程序只...

2020-05-08 16:16:05 206

原创 CMU 14-445/645 Project #1 Buffer Pool

Lab1 Buffer Pool时钟更换策略时钟的组成对于单个frame应当有以下三部分组成:frame_id、Ref、PIN。frame_id:唯一确定id,与buffer pool相对应。Ref:该frame最近是否使用过。使挑选的frame尽量是很久之前使用的(类似与LRU)PIN:该frame是否正在使用。?> 注:该时钟不包含任何page信息,真正的page是存储在...

2020-05-08 15:36:19 989 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除