手写数据库MYDB(一):项目启动效果展示和环境配置问题说明
1.项目概况
这个项目实际上就是一个轮子项目,现在我看到的这个市面上面比较火的就是这个首先RPC,好多的机构都在搞这个,还有这个消息队列之类的,但是这个是基于MYSQL的,我们知道这个MYSQL在八股盛宴里面是重点考察对象(就连我前段时间面试一个实习生都考察我的MYSQL),大家都知道这个MYSQL,Redis是重点;
因此我们做一个这样的轮子项目,不仅可以做项目写到简历上面去,也可以巩固MYSQL,因为这个简历上面的项目设计的知识你需要会把,这个时候顺序就把我们的八股文复习了,因此我觉得这个事一个不错的选择;
这个项目叫做MYDB,就是直接翻译:我的DB,就是database,现在这个名字是五花八门,但是内核都是一样的,有的叫做miniDB,有的叫simpleDB,有的叫做基于Java的轻量存储引擎,反正叫法好多好多,但是基本上说的都是这个东西;
我今天上午是试运行了一下,看看这个效果,测试了一下;
2.环境说明
2.1关于项目配置
这个项目是基于jdk8运行的,我之前使用的是jdk17,这个时候需要对于我们的环境里面的相关内容进行修改,我简单的谈几点我遇到的情况吧(因为我也是新手,也遇到了很多问题,希望对大家有所帮助);
pom.xml里面的对应版本(需要对应上);

下面的这个jdk核对一下:

modules里面的版本核对一下:

基本上就是这几个地方吧,我觉得,这些是我遇到的情况,提醒下大家,大家可以去检查一下;
2.2关于环境变量
下面的这个是我真实遇到的问题:

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

3.效果展示
下面的这个是我的终端上面展示的效果,基本上和我们学习的MYSQL是没有太大的这个区别的,基本的SQL语句他也是支持的哈,效果如下:
CRUD,基本的这个增删查改语句都是可以使用生效的,下面的这个测试里面包含了select,delete,insert发现这个现实的结果都是没问题的;

4.项目如何跑起来
因为在这个项目文档的README里面已经写的很完整了,我在这里就简单的说明一下吧:
首先就是使用mvn compile进行项目代码的编译:这个实际上也容易出错,我在这个地方就出错了,这个就是上面说的环境变量的配置问题,如果大家遇到了上面的这个问题,按照我上面说的思路,可以去尝试解决一下;

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

上面的报错的解决方案:使用下面的这个语句可以尝试一下(其实这个时候遇到的问题不多,主要是链接数据库的时候盘符导致的问题多);
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端口,开始建立连接:

这个时候我们需要在这个IDEA里面新开一个终端,开始连接:输入下面的这个指令:
mvn exec:java -Dexec.mainClass="top.guoziyang.mydb.client.Launcher"
上面的这个如果报错,试试下面的这个:(这个是一个网友提供的,亲测有效)
mvn exec:java "-Dexec.mainClass=top.guoziyang.mydb.client.Launcher"
5.我的最后一点总结
上面的这个事我第一次运行的情况:但是当我想要再次去运行的时候,就是我想要再次尝试一下,这个时候又出现了很多的报错:时候发现我自己是稀里糊涂蒙对的,因为这个tmp需要我们自己去创建,但是我第一遍的时候都没有创建,我也不知道是怎么运行成功的(应该是蒙对的),因为第一遍的时候我都没有配置路径;
下面的这个就是我第二次的报错和最后解决的情况;
我提出几点建议:
- 上面的这个create看着说的是创建,我本来以为这个系统会自己创建,但是如归你不创建,这个时候就会出现异常,因此我们的这个tmp\mydb需要自己手动创建;
- 这个create后面的路径在我们的本地一定要存在,我第一次就没有,但是稀里糊涂的运行出来了;
- 下面的这个指令里面的open就是打开我们的文件的对应位置,就是我们创建的位置,这两个地方是对应的,一般你创建成功了,这个就不会报错;
- 当你想要二次运行的时候,把他的生成文件删除一下,不然create的时候就会告诉你这个文件已经存在了;

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

相关文章:
手写数据库MYDB(一):项目启动效果展示和环境配置问题说明
1.项目概况 这个项目实际上就是一个轮子项目,现在我看到的这个市面上面比较火的就是这个首先RPC,好多的机构都在搞这个,还有这个消息队列之类的,但是这个是基于MYSQL的,我们知道这个MYSQL在八股盛宴里面是重点考察对象…...
深入理解椭圆曲线密码学(ECC)与区块链加密
椭圆曲线密码学(ECC)在现代加密技术中扮演着至关重要的角色,广泛应用于区块链、数字货币、数字签名等领域。由于其在提供高安全性和高效率上的优势,椭圆曲线密码学成为了数字加密的核心技术之一。本文将详细介绍椭圆曲线的基本原理…...
使用 PowerShell 脚本 + FFmpeg 在 Windows 系统中批量计算 MP4视频 文件的总时长
步骤 1:安装 FFmpeg 访问 FFmpeg 官网(Download FFmpeg),下载 Windows 版编译包(如 ffmpeg-release-full.7z)。或者到(https://download.csdn.net/download/zjx2388/90539014)下载完整资料 解压文件&#…...
中医气血精津辨证
中医气血精津辨证 一、气血精津辨证概述 基本概念: 气血精津是构成人体和维持生命活动的基本物质,其生成、运行、输布与脏腑功能密切相关。辨证核心:通过分析气血精津的盛衰、运行障碍及其相互关系,判断疾病本质。 生理关系&…...
Intellij IDEA2023 创建java web项目
Intellij IDEA2023 创建java web项目 零基础搭建web项目1、创建java项目2、创建web项目3、创建测试页面4、配置tomcat5、遇到的问题 零基础搭建web项目 小白一枚,零基础学习基于springMVC的web项目开发,记录开发过程以及中间遇到的问题。已经安装了Inte…...
Scrapy结合Selenium实现滚动翻页数据采集
引言 在当今的互联网数据采集领域,许多网站采用动态加载技术(如AJAX、无限滚动)来优化用户体验。传统的基于Requests或Scrapy的爬虫难以直接获取动态渲染的数据,而Selenium可以模拟浏览器行为,实现滚动翻页和动态内容…...
Node.js从0.5到1学习计划
以下是针对零基础学习者的10天Node.js高效学习计划,每天聚焦核心知识点并配合实战练习: 📆 10天Node.js速成计划(每日4-6小时) 核心目标:掌握Node.js核心机制 完成3个实战项目 📍 Day 1-2&…...
python 的 obj的key 变成双引号
在Python中,当你序列化一个对象(例如使用json.dumps()方法将对象转换为JSON字符串)时,默认情况下,字典的键(keys)会被转换为字符串。如果你的字典中的键本身就是字符串,并且你想要在…...
sqlmap 源码阅读与流程分析
0x01 前言 还是代码功底太差,所以想尝试阅读 sqlmap 源码一下,并且自己用 golang 重构,到后面会进行 ysoserial 的改写;以及 xray 的重构,当然那个应该会很多参考 cel-go 项目 0x02 环境准备 sqlmap 的项目地址&…...
DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例6,TableView16_06 分页表格拖拽排序
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...
asp.net mvc 向前端响应json数据。用到jquery
最近在给客户开发提醒软件时,用asp.net mvc 开发。该框架已经集成了bootstrap,直接贴asp.net mvc 端代码: {Layout null; }<!DOCTYPE html><html> <head><meta name"viewport" content"widthdevice-width" /…...
基于物联网的新房甲醛浓度监测系统的设计(论文+源码)
2.1总体方案设计 本次基于物联网的新房甲醛浓度监测系统的设计其系统总体架构如图2.1所示,整个系统在硬件架构上采用了STM32f103作为主控制器,在传感器部分采用了MQ135实现甲醛浓度的检测,并且通过ESP8266 WiFi模块将当前检测的数据传输到手…...
deadsnakes
deadsnakes 是一个 第三方 PPA(Personal Package Archive),专门为 Ubuntu 系统提供较新版本的 Python,包括旧版本(如 Python 3.9)和开发中的测试版本。它的名称是一个幽默的双关,源自电影《Mont…...
Stable Diffusion 图标与像素风格LoRA训练的模型选择及参数设置
图标与像素风格LoRA训练的模型选择及参数设置指导意见 一、基础模型选型策略 图标生成推荐模型 Stable Diffusion 2.1-base 适用场景:通用UI图标、矢量风格设计核心优势:支持768x768分辨率,对几何形状捕捉精准需加载VAE模型:vae…...
【AI学习】人工神经网络
1,人工神经网络(Artificial Neural Networks,ANNs,连接模型,Connection Model) 模仿动物神经网络行为特征(突触联接的结构),进行分布式并行信息处理的算法数学模型。依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。 2,前馈神…...
linux--网络协议初识
linux–网络协议初识 事实: 通信的主机之间距离变长了---->引发出新的通信问题? 如何使用数据问题(应用层)可靠性问题(传输层)主机定位问题(网络层)数据报局域网转发问题(数据链路层) 人提出网络协议解决方案—方案有好有坏–为了方便扩展,替换或维护–故将网络协议设置…...
Linux MariaDB部署
1:查看Linux系统版本 cat /etc/os-release#返回结果: NAME"CentOS Linux" VERSION"7 (Core)" ID"centos" ID_LIKE"rhel fedora" VERSION_ID"7" PRETTY_NAME"CentOS Linux 7 (Core)" ANSI…...
window系统下安装elk
Elasticsearch、logstash、kibana 都为8.17.3版本 Elasticsearch 安装流程 # 下载 https://www.elastic.co/cn/downloads/elasticsearch#ga-release elasticsearch-8.17.3-windows-x86_64 # 解压配置 elasticsearch.yml,下个代码块 # bin目录下双击下述文件&…...
uniapp用户登录及获取用户信息(头像昵称)
低版本情况 微信开发者工具的基础库版本要调到2.27版本以下,能够直接申请用户权限获取用户信息,但是会仅限于开发者调试,在真机测试或已上传的小程序在手机上就不能获取以上的原因是微信小程序wx.getUserProfile 和wx.getUserInfo 这两个获取…...
第五周日志-重新学汇编(2)
机器语言 汇编语言(直接在硬件上工作——硬件系统结构): 1.机器语言 每一种微处理器硬件设计和内部结构不同(决定了电信号不同,进而需要不同的机器指令) #早期通过纸带机/卡片机输入计算机,进行运算 2…...
Linux下EC11旋转编码器驱动调试
文章目录 1、前言2、使用gpio-keys驱动2.1、dts配置2.2、识别原理2.3、应用层驱动实现2.4、编译测试 3、使用rotary-encoder驱动3.1、dts配置3.2、app测试程序编写3.3、编译测试 4、总结 1、前言 本来是没有这篇文章的。最近在rk3576下调试ec11旋转编码器时,一直没…...
【无标题】Java的基础准备
一、cmd的常见命令 盘符名称冒号 说明:盘符切换dir 说明:查看当前路径下的内容cd目录 说明:进入单极目录cd.. 说明:回退到上一级目录cd目录1\目录2\... 说明:进入多级目录cd\ …...
【数学建模】(启发式算法)遗传算法:自然选择的计算模型
遗传算法:自然选择的计算模型 文章目录 遗传算法:自然选择的计算模型1. 引言2. 遗传算法的基本原理2.1 基本概念2.2 算法流程 3. 编码方式3.1 二进制编码3.2 实数编码3.3 排列编码 4. 选择操作4.1 轮盘赌选择4.2 锦标赛选择4.3 精英保留策略 5. 交叉操作…...
嵌入式八股,static在Linux驱动编写时的用处
1. 限制作用域 static关键字可以用来限制函数或变量的作用域,使其只能在当前文件内被访问。这有助于避免命名冲突,并提高代码的模块化和可维护性。 只能在当前文件里访问,或调用当前文件里有的函数。 // 文件 A.h static int globalVar 1…...
RCE——回调后门
目录 rce简述 rce漏洞 rce漏洞产生分类 rce漏洞级别 创造tips的秘籍——回调后门 call_user_func 解析 如何执行后门 call_user_func_array array_filter、array_map 解析 如何执行后门 php5.4.8中的assert——二参数的回调函数 uasort uksort array_reduce() …...
JavaScript 调试入门指南
JavaScript 调试入门指南 一、调试准备阶段 1. 必备工具配置 浏览器套件:安装最新Chrome102+,开启实验性功能(地址栏输入chrome://flags/#enable-devtools-experiments)编辑器集成:VS Code安装以下扩展: JavaScript Debugger:支持浏览器与Node.js双端调试Error Lens:实…...
字节真题,问a,b,c指的地址是否相同?
题目: class A{ int a, int d } class B { int b }class C: public A,public B { int b } C* c new C; A* a c; B* b c; 问a,b,c指的地址是否相同? 在 C 中,由于类的继承关系以及内存布局的规则,a、b 和 c 指针的地址可能不…...
2025年03月18日柯莱特(外包宁德)一面前端面试
目录 自我介绍你怎么从0到1搭建项目的webpack 的构建流程手写webpack插件你有什么想问我的吗 2. 你怎么从 0 到 1 搭建项目的 在面试中回答从 0 到 1 搭建前端项目,可按以下详细步骤阐述: 1. 项目前期准备 需求理解与分析 和产品经理、客户等相关人…...
OpenGL ES 2.0与OpenGL ES 3.1的区别
如果硬件支持且需要更高质量的图形效果,推荐3.1;如果兼容性和开发简便更重要,且效果需求不高,2.0更合适。不过现代车载系统可能越来越多支持3.x版本,所以可能倾向于使用3.1,但具体情况还需调查目标平台的硬…...
Unity Shader 学习17:合批渲染
一、基础概念 合批主要是针对这三个概念进行优化减少: ① SetPass Call:一次渲染状态切换,也就是每次切换 材质/Pass 时,就会触发一次SetPass Call ② Draw Call:cpu 调用一次 gpu 绘制函数 ③ Batch:表示…...
