OB数据库大赛初赛总结
Posted adventure.Li
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OB数据库大赛初赛总结相关的知识,希望对你有一定的参考价值。
一、背景
在校的学长举办讲座时,了解到该项目;抱着学习、探索底层的态度进行参与了。虽然现在还没截止(11.6晚截止),但是由于课程繁重和能力有限提前给自己做个总结了。作为Java选手,没有C\\C++的开发基础(工程开发,简单的函数编写除外)还是挺难的,所以虽然在一两周中只收获了90分,还是十分开心的,也更加触发了个人的思考和数据库的理解。
二、基本过程
环境搭建
对于MiniOB的环境搭建,编译其实官方给出的十分明确的文档。但由于欠缺C\\C++的编程了解。刚好C的软件基本上是需要Linux环境的,对于Windows用户来说,需要去搭建Linux环境,当然对于虚拟机、Dokcer、WSL或者云服务器的使用还是比较能够驾驭,而对于Cygwin,CMake还是比较陌生。所以开赛前两天基本上在研究如何搭环境上面了,因为个人比较喜欢Jetbrains系列最终采用了
- Clion + 远程开发(连接虚拟机的方式
本来,前两天已经将代码拉下来并在虚拟机搭好环境了,结果后面虚拟机突然出现问题。然后又花了一天浪费在整理环境方面。回头来看关键注意点有以下:
- MiniOB的编译环境:Linux环境下(需要Linux的一些包)+ gdb + gcc
- MiniOB的本身依赖:libevent,jsonsoup,googletest,…(可先看一下MiniOB的整体执行框架和流程),先改用gitmoudule了,可能有时拉不下来,需要多拉几下。
- MiniOB的启动调试:在群里了解到,其实C\\C++的启动有多种模式,Debug,Release。正常下采用Debug模式即可,如果Debug测试没问题,提测有问题,可以考虑coredump问题,改用Release模式,使用ASAN工具分析。
基础学习
MiniOB的训练营的学习文档和入门视频真的不错。当自己跟着模仿,写上几句代码,实现功能,提测成功是真的很快乐。但时常也会遇到内存分配问题,甚至字符串处理和预期不同带来的不爽。个人比较行动派,边看边进行代码尝试。现在看来,对于该方面零基础的朋友。以以下路线去学习较好。
- 执行流程(采用seda模型,流程的执行过程;主要关注解析、转化、执行、存储以及索引、Record记录等);可以进行打断点一步步调试、深入,第一周不要着急实现功能(虽然我第一周因为课程原因只去搭建了环境,但是想参与的朋友其实可以尽早地去提测往年的题目,搭建好环境,然后正式比赛了就会游刃有余,不至于白白浪费一次参赛机会,当然啦我本来也是抱着来学习的态度,嘿嘿)
- 解析部分:flex\\bison的学习了解,该部分是起始部分,十分重要
- SQL的基本语句语法,作为与数据库交互的首要对象,十分熟悉SQL语句才能更好地去解析,分析语法语义。
- db、table、record、index的基本概念
- C++的基础知识(特别是char* string,以及char,int,float几种基本数据类型的熟悉,char*是其中使用最多的)
- 可利用Notion去记录自己的学习,探索过程。
三、启发思考
虽然这次最终在正则匹配(解析莫名出现like and like则只能解析出一个值)和insert(修改面积较大)这样简单的题就止步了!但是也有些值得去思考反思和收获的地方。
- 实现功能需要考虑全面,具有大局意识。先进行分析思考,思想上确定无误在行动,不要急于实现!
- 排查问题,合理利用日志和调试打断工具,设计测试用例时需要尽量全面而简洁。
- 任何软件都离不开业务对象,熟悉业务流程很重要(例如数据库主要和SQL打交道,就需要熟悉SQL)
- 学习一门编程语言就打开一扇新世界的窗户,作为偏底层的C\\C++在构建基础系统级软件具有统治性地位,mysql,Redis,Linux都是其杰作。在研究Java中间件有余力,可适当去学习、开拓。
- 本次大赛只是开启对数据库的认知学习的大门,而非终点,在学有余力之时可以去训练营学习提测。
以上是关于OB数据库大赛初赛总结的主要内容,如果未能解决你的问题,请参考以下文章
2021 RoboCom 世界机器人开发者大赛-本科组(初赛)完结
2021 RoboCom 世界机器人开发者大赛-本科组(初赛)
2021 RoboCom 世界机器人开发者大赛-本科组(初赛)
HDU 6113 度度熊的01世界 DFS(2017"百度之星"程序设计大赛 - 初赛(A))