当前位置: 首页 > article >正文

手写数据库MYDB(一):项目启动效果展示和环境配置问题说明

1.项目概况

这个项目实际上就是一个轮子项目,现在我看到的这个市面上面比较火的就是这个首先RPC,好多的机构都在搞这个,还有这个消息队列之类的,但是这个是基于MYSQL的,我们知道这个MYSQL在八股盛宴里面是重点考察对象(就连我前段时间面试一个实习生都考察我的MYSQL),大家都知道这个MYSQL,Redis是重点;

因此我们做一个这样的轮子项目,不仅可以做项目写到简历上面去,也可以巩固MYSQL,因为这个简历上面的项目设计的知识你需要会把,这个时候顺序就把我们的八股文复习了,因此我觉得这个事一个不错的选择;

这个项目叫做MYDB,就是直接翻译:我的DB,就是database,现在这个名字是五花八门,但是内核都是一样的,有的叫做miniDB,有的叫simpleDB,有的叫做基于Java的轻量存储引擎,反正叫法好多好多,但是基本上说的都是这个东西;

我今天上午是试运行了一下,看看这个效果,测试了一下;

2.环境说明

2.1关于项目配置

这个项目是基于jdk8运行的,我之前使用的是jdk17,这个时候需要对于我们的环境里面的相关内容进行修改,我简单的谈几点我遇到的情况吧(因为我也是新手,也遇到了很多问题,希望对大家有所帮助);

pom.xml里面的对应版本(需要对应上);

image-20250327114111368

下面的这个jdk核对一下:

image-20250327114235325

modules里面的版本核对一下:

image-20250327114307758

基本上就是这几个地方吧,我觉得,这些是我遇到的情况,提醒下大家,大家可以去检查一下;

2.2关于环境变量

下面的这个是我真实遇到的问题:

image-20250327115340213

下面的这个是我在网上找到的这个解决方案,确实有效,也让我学到了知识:

为什么需要把这个bin去掉,现在我是终于明白了,就是因为我们的JAVA_HOME在这个path里面是被使用的,但是在这个path里面就是%JAVA_HOME%/jre/bin,因此如果我们在这个JAVA_HOME里面还去添加这个bin就是重复的,所以下面的这些评论区的答案说的都对,我按照下面的这个方法去修改之后,重启项目,确实是没有问题的;

image-20250327115002817

3.效果展示

下面的这个是我的终端上面展示的效果,基本上和我们学习的MYSQL是没有太大的这个区别的,基本的SQL语句他也是支持的哈,效果如下:

CRUD,基本的这个增删查改语句都是可以使用生效的,下面的这个测试里面包含了select,delete,insert发现这个现实的结果都是没问题的;

image-20250327112352813

4.项目如何跑起来

因为在这个项目文档的README里面已经写的很完整了,我在这里就简单的说明一下吧:

首先就是使用mvn compile进行项目代码的编译:这个实际上也容易出错,我在这个地方就出错了,这个就是上面说的环境变量的配置问题,如果大家遇到了上面的这个问题,按照我上面说的思路,可以去尝试解决一下;

image-20250327115449868

如果你在上面的操作过程中遇到了和我一样的问题(如下所示):我可以提供一下我的解决方案,仅供参考;

image-20250327115916693

上面的报错的解决方案:使用下面的这个语句可以尝试一下(其实这个时候遇到的问题不多,主要是链接数据库的时候盘符导致的问题多);

1. mvn exec:java "-Dexec.mainClass=top.guoziyang.mydb.backend.Launcher" "-Dexec.args=-create D:\\java_project\\MYDB\\tmp\\mydb"

2.mvn exec:java "-Dexec.mainClass=top.guoziyang.mydb.backend.Launcher" "-Dexec.args=-open D:\\java_project\\MYDB\\tmp\\mydb" 

下面的这个就是成功的标志:监听9999端口,开始建立连接:

image-20250327120152174

这个时候我们需要在这个IDEA里面新开一个终端,开始连接:输入下面的这个指令:

mvn exec:java -Dexec.mainClass="top.guoziyang.mydb.client.Launcher"

上面的这个如果报错,试试下面的这个:(这个是一个网友提供的,亲测有效)

mvn exec:java "-Dexec.mainClass=top.guoziyang.mydb.client.Launcher" 

5.我的最后一点总结

上面的这个事我第一次运行的情况:但是当我想要再次去运行的时候,就是我想要再次尝试一下,这个时候又出现了很多的报错:时候发现我自己是稀里糊涂蒙对的,因为这个tmp需要我们自己去创建,但是我第一遍的时候都没有创建,我也不知道是怎么运行成功的(应该是蒙对的),因为第一遍的时候我都没有配置路径;

下面的这个就是我第二次的报错和最后解决的情况;

我提出几点建议:

  1. 上面的这个create看着说的是创建,我本来以为这个系统会自己创建,但是如归你不创建,这个时候就会出现异常,因此我们的这个tmp\mydb需要自己手动创建;
  2. 这个create后面的路径在我们的本地一定要存在,我第一次就没有,但是稀里糊涂的运行出来了;
  3. 下面的这个指令里面的open就是打开我们的文件的对应位置,就是我们创建的位置,这两个地方是对应的,一般你创建成功了,这个就不会报错;
  4. 当你想要二次运行的时候,把他的生成文件删除一下,不然create的时候就会告诉你这个文件已经存在了;

image-20250327122659858

下面的这个就是生成的日志文件之类的,二次运行的时候需要清除一下;

image-20250327123044125


http://www.kler.cn/a/612588.html

相关文章:

  • 【测试工具】如何使用 burp pro 自定义一个拦截器插件
  • 工具介绍《WireShark》
  • Ubuntu22.04美化MacOS主题
  • 前端技术(28) : 拖拽、粘贴和点击浏览文件上传
  • 3大支柱+8种方法:拆解分布式系统性能优化的底层逻辑
  • 谷歌决定终止开源Android
  • 【黑皮书】 AVL树
  • kafka部署手册
  • 关于ArcGIS中加载影像数据,符号系统中渲染参数的解析
  • HarmonyOS:GridObjectSortComponent(两个Grid之间网格元素交换)
  • 深度探秘K8s服务(Service):架构基石与应用实践
  • 【LeetCode 热题 100】解答汇总
  • 苏宁开放平台关键字搜索接口接入教程‌
  • springboot 四层架构之间的关系整理笔记一
  • es 3期 第27节-运用Script脚本实现复杂需求
  • 简记_FPGA 硬件最小系统设计
  • Springbean(二)@Component及其派生注解自动注入(2)使用注意和加载问题
  • 一周掌握Flutter开发--8. 调试与性能优化(下)
  • 计算机网络--传输层(1)
  • html dom 的 event 事件