手写数据库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.mzph.cn/diannao/75786.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Spring Boot的电动车智能充电服务平台的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

【AI学习】人工神经网络

1,人工神经网络(Artificial Neural Networks,ANNs,连接模型,Connection Model) 模仿动物神经网络行为特征(突触联接的结构),进行分布式并行信息处理的算法数学模型。依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。 2,前馈神…

场馆预约小程序的设计与实现

摘 要 时代在进步,人们对日常生活质量的要求不再受限于衣食住行。现代人不仅想要一个健康的身体,还想拥有一身宛如黄金比例的身材。但是人们平常除了上下班和上下学的时间,其余空余时间寥寥无几,所以我们需要用体育场馆预约来节省…

笔记:纯真IP库

最近需要使用到ip解析成对应的地域,查找了一些资料,发现纯真ip库,这个比较好用,而且社区版可以获得免费授权。 纯真ip库官网地址:https://www.cz88.net/ python版本git地址:https://github.com/tagphi/cz…

骨密度以及骨密度测量,测量方案,意义;提高;实现方案

骨密度及骨密度测量 骨密度(Bone Mineral Density, BMD) 是指骨骼单位体积或单位面积内矿物质(主要是钙和磷)的含量,是评估骨骼强度的重要指标。骨密度降低可能导致骨质疏松,增加骨折风险。 简单分析效果&…

MySQL 体系结构与存储引擎

目录 一、MySQL 体系结构 1. 连接层 (Connection Layer) 2. 服务层 (Server Layer) 3. 存储引擎层 (Storage Engine Layer) 二、MySQL 核心存储引擎比较 1. InnoDB (默认引擎) 2. MyISAM 3. Memory (HEAP) 4. 其他存储引擎 三、InnoDB 存储引擎深度解析 1. 核心架构组…

知识就是力量——物联网应用技术

基础知识篇 一、常用电子元器件1——USB Type C 接口引脚详解特点接口定义作用主从设备关于6P引脚的简介 2——常用通信芯片CH343P概述特点引脚定义 CH340概述特点封装 3——蜂鸣器概述类型驱动电路原文链接 二、常用封装介绍贴片电阻电容封装介绍封装尺寸与功率关系&#xff1…

vue复习1~45

1.关于vue 要理解记忆规则,可以到官网上去找 vue的两种使用方式 vue核心包开发 场景:局部模块改造vue核心包 & vue插件 工程化开发 场景:整站开发 2.创建vue实例 构建用户页面->创建vue实例初始化渲染 学习阶段用开发版本 3.插值…

Netty和Project Reactor如何共同处理大数据流?

在处理大数据流时,Netty和Project Reactor可以协同工作,充分利用Netty的高性能非阻塞IO和Project Reactor的响应式编程模型,实现高效的数据处理和背压控制。以下是如何共同处理大数据流的详细步骤和示例代码: ### 1. Netty和Proj…

【Nginx】location匹配模式与规则

文章目录 一、环境二、匹配模式1. 精准模式2. 前缀模式(不继续匹配正则)3. 前缀模式(继续匹配正则)4. 正则模式(大小写敏感)5. 正则模式(大小写不敏感) 三、需要注意的地方1. 命中多…

JavaScript基础-定时器

在Web开发中,有时我们需要延迟执行某些操作或者定期重复执行某段代码。JavaScript提供了强大的定时器功能,使得这些需求变得简单易行。本文将详细介绍JavaScript中的定时器,包括setTimeout和setInterval函数的使用方法、注意事项以及一些实际…

【Python】and 和 or 的返回值

文章目录 选项 A选项 B选项 C选项 D正确答案 以下哪些选项输出结果为True ( ) A、print(2 0 or True) B、print(2 ! 0 or True) C、print(str(2) and str(0) or True) D、print(str(2) or str(0) or True)要确定哪些选项的输出结果为 True,我们需要分析每个表达式的…

【deepseek 学c++】weakptr引用场景

std::weak_ptr 是 C 中与 std::shared_ptr 配合使用的智能指针,它本身不拥有资源的所有权,仅观察资源的状态,主要用于解决 shared_ptr 的循环引用问题和临时访问共享资源的需求。以下是 weak_ptr 的典型应用场景和核心价值:![ 为…

新手SEO优化实战快速入门

内容概要 对于SEO新手而言,系统化掌握基础逻辑与实操路径是快速入门的关键。本指南以站内优化为切入点,从网站结构、URL设计到内链布局,逐层拆解搜索引擎友好的技术框架;同时聚焦关键词挖掘与内容策略,结合工具使用与…

如何用Redis统计网站的UV

在 Java 项目中使用 Redis 统计网站的 UV(独立访客数),我们可以利用 Redis 提供的 HyperLogLog 数据结构。HyperLogLog 适合用来做基数统计,它在空间复杂度上非常高效,可以在存储大量数据的情况下,提供非常…

Android系统的安全问题 - Android的启动时验证

Android 启动时验证(Verified Boot) Android 的 启动时验证(Verified Boot) 是一项关键安全机制,用于确保设备启动过程中加载的所有系统镜像(如 Bootloader、内核、系统分区)未被篡改&#xff…

【操作系统】(四)体系结构

(一)大内核与微内核 把橘色部分划分到内核中的操作系统属于大内核,不把橘色划到内核中的操作系统属于微内核 大内核与微内核的具体区别: (二)计算机的层次结构 (三)操作系统内核非内…

Kotlin 协程官方文档知识汇总(一)

1、协程基础 Kotlin 是一门仅在标准库中提供最基本底层 API 以便其他库能够利用协程的语言。与许多其他具有类似功能的语言不同,async 与 await 在 Kotlin 中并不是关键字,甚至都不是标准库的一部分。此外,Kotlin 的挂起函数概念为异步操作提…

MySQL 的 JSON 查询

MySQL 的 JSON 路径格式 MySQL 使用特定的 JSON 路径表达式语法来导航和提取 JSON 文档中的数据 基本结构 MySQL 中的 JSON 路径遵循以下通用格式 $[路径组件]路径组件详解 | 操作符 | 描述 | 示例 | | ----------- | --------- | ----------…

Wi-SUN技术,强势赋能智慧城市构筑海量IoT网络节点

在智慧城市领域中,当一个智慧路灯项目因信号盲区而被迫增设数百个网关时,当一个传感器网络因入网设备数量爆增而导致系统通信失效时,当一个智慧交通系统因基站故障而导致交通瘫痪时,星型网络拓扑与蜂窝网络拓扑在构建广覆盖与高节…