CMU15-445(2)Project 0
主要记录一些注意事项
关于第一次运行项目的一些坑
本地测试都使用了DISABLE标记,需要加上参数--gtest_also_run_disabled_tests才能运行测试用例,一种方便的解决方法是这样配置launch.json文件
123456789101112131415161718192021222324252627{ "version": "0.2.0", "configurations": [ { "name": "Debug disabled test", "type": "cppdbg", "request": "launch", "program": "${command:cmake.launchTargetPath ...
CMU15-445(1)Database
暂时只是零散的记录一些东西,等有了整体的认知之后再整理
数据库领域最重要的一句话: 天下没有免费的午餐,各种设计都有其优缺点。
数据库系统结构,从上往下
Query Plan 查询计划
Operator Execution 执行操作
Access Methods 访问方法(向上提供访问方法)
Buffer Pool Manager 缓冲区管理器(将磁盘内容载入内存)
Disk Manager 磁盘管理器
Page
硬件Page,通常大小为4kb,操作是原子的
操作系统Page,通常大小为4kb,有巨页
数据库系统Page,数据库系统自己定义的Page
面向元组存储
行存储常使用槽页,槽数组从前往后扩展,元组从后往前扩展。槽数组存储偏移值。
日志结构存储
内存中有一个mem表,用于快速更新,如果mem表满了就写入disk中的SSTable,在disk中有层级,每当一层满了后就合并SSTable并将新的SSTable放入下一层级。
缺点:元组生命周期伴随整个数据库,
索引组织存储
CMU15-445(0)开始
不知不觉好久没有写博客,自从开始考虑工作之后就日渐焦虑,打了一年铁开始准备找工作才发现自己只会C++,再加上可能是生涯最后一场XCPC的CCPC东北邀请赛因为不会看钟喜提铜牌,一直都感觉干什么都提不起劲,
直到昨天看到C++群群主的回答想走数据库内核方向,该怎么办? - soulmate的回答 - 知乎,才又明确了方向。我一直都希望以后的工作能够是偏向计算机底层的基础设施,比如系统、引擎、框架,但又担心找不到工作,毕竟计算机大部分都是前端后端,很少看到招这些的厂商。也因此学了Go,准备走后端路线。但是现在既然看到了一条理想中的全新道路,并且有一点希望,我还是决定拼一把,遵从内心的选择,选择一条虽然难度可能很大但是喜欢的道路,就像当年选择打ACM一样。
CMake学习笔记
由于大部分情况下只有在项目创建时才会写一下CMake,甚至在用了项目模板之后连创建的时候也不需要写,因此老是忘记一些东西要怎么写,故写个笔记方便以后查看。目前只记录一些最常用的函数,后续再逐渐补充,并添加一些教程。
特性
在CMake中不论Linux还是Windows都使用/作为路径分割符
常用函数
通用函数
cmake_minimum_required
这个函数用来指定脚本所需的CMake最低版本,比如你用到了一些高版本CMake的语法,就可以用这个函数来指定最低版本,一般放在CMakeLists.txt的第一行,比如cmake_minimum_required(VERSION 3.13)。
project
指定项目名称,LANGUAGES字段可以指定项目使用的语言,目前支持以下语言:
C,C语言
CXX,C++
ASM,汇编
Fortran,Fortran语言
CUDA,英伟达的CUDA
OBJC,苹果的Objective-C
OBJCXX,苹果的Objective-C++
ISPC,一种英特尔的自动SIMD编程语言
VERSION字段可以指定项目版本,CMake使用 ...