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))

2018 “百度之星”程序设计大赛 - 初赛(A)1004 / hdu6377 度度熊看球赛 dp递推

2021 年百度之星·程序设计大赛 - 初赛二 1003 魔怔(并查集,联通性,欧拉回路)