了解文件页面管理程序的功能
Understanding function for file-page-manager program
,所以我必须为文件页面程序程序编码以下函数,但是我不明白如何处理null终止功能。
RC insertRecord(FileHandle &fileHandle, const vector<Attribute>
&recordDescriptor, const void *data, RID &rid)
给定记录描述符,将新记录插入提供的句柄标识的文件中。你可以假设输入始终是正确且没有错误的。也就是说,您无需检查查看输入记录是否具有正确数量的属性数量或属性类型是否匹配。然而,为了处理属性中的null值, *数据中的第一部分包含n个字节传递有关每个字段的空信息。值n可以使用此功能来计算公式:CEIL(记录/8中的字段数(。例如,如果有5个字段,则ceil(5/8(= 1字节。如果有20个字段,则大小为ceil(20/8(= 3个字节。第一个字节中最左侧的位对应于第一个字段。第一个字节中最右侧的位对应于第八字段。如果有八个以上的字段,第二个字节中的最左侧位对应于第九个字段等等。如果对每个字段的相应位设置为1,则实际数据不包含该字段的任何值。例如,如果记录中有三个字段,第二个字段包含null,一个字节中的位表示为0100000。此外,在实际数据中,传入记录仅包含第一个和第三个值。也就是说,第三个字段值是在这种情况下,立即放置在第一个字段值之后。
我不明白,因此,如果我们有3个属性,则3/8 = 3个字节,因此,数据的前3个字节将与NULL功能相对应。但是,我们如何将这些字节转换为C 中的位,因此我们实际上可以看到零值在哪里?
指令描述的是bitmask。记录中的每个字段由一个位表示。如果该位是1,则数据不包含该字段的输入。这使您可以确定data
指向的数据的长度。
通常每个字节有8位,因此,如果您有9个字段,则需要9位,将需要2个字节。17个字段,17位,3个字节等。这是提供计算零信息长度的提供的公式的来源。
因此,如果您有3个字段,则需要3/8 = 0.375字节。需要将其舍入(CEIL函数(到最近的整个字节或1个字节。
- 如何在GTK程序运行时禁用屏幕保护程序/电源管理/屏幕消隐
- 在气泡排序程序中未声明错误功能
- 反向功能超出了我的 cpp 程序的范围
- LLVM | codegen 用于带有命令行选项的程序输入功能
- Cuda 基本程序 (将值写入矩阵和 std:cout 不起作用) ;主功能不启动
- 为什么我的显示功能会终止程序?
- 如何获得CMake Tools以在Visual Studio Code中编译具有C++11(或更高版本)功能的程序?
- 从 GUI 文件资源管理器执行程序,并且不生成终端
- 如何为带有计时功能的程序创建计时器?
- 搜索功能使程序崩溃
- 了解文件页面管理程序的功能
- 具有SPI_SETDESKWALLPAPER功能的程序仅在尝试使用C++将其更改为图像时将桌面背景更改为黑色
- 纠正C++学校图书馆管理程序中的两个错误
- 功能使程序暂停或睡眠C
- Qthread中的运行功能 - 应用程序将悬挂
- 队列:取消队列功能使程序崩溃
- 使用Jenkins、内部版本号和svn修订版管理程序版本
- 使用命令行管理程序执行属性谓词的特定属性选项卡
- 执行命令行管理程序命令时出现性能问题
- 内存管理-C++程序立即使用2GB的RAM:如何找到罪魁祸首