MYDB运行环境的搭建
前言
再将该项目跑起来之前,我想你的环境应该是准备的差不多啦!只需要稍稍的配置一下即可。
我在本地已经跑通了,说是兼容JDK8,但我本地刚好有11就用了11啦,跑起来的方法在仓库的 readme 里写的很清楚。

在运行mvn compile命令时出现

在bug知识库记录啦!已解决。
注意首先需要在 pom.xml 中调整编译版本,如果导入 IDE,请更改项目的编译版本以适应你的 JDK
首先执行以下命令编译源码
mvn compile

接着执行以下命令以 /tmp/mydb 作为路径创建数据库:其中路径改为我本地的D:\tmp\mydb
完成以上步骤之后,开启终端。
开两个终端启动
先启动 Server
随后通过以下命令以默认参数启动数据库服务:
mvn exec:java -Dexec.mainClass="top.guoziyang.mydb.backend.Launcher" -Dexec.args="-open D:\tmp\mydb"

再启动 client。
这时数据库服务就已经启动在本机的 9999 端口。重新启动一个终端,执行以下命令启动客户端连接数据库:
mvn exec:java -Dexec.mainClass="top.guoziyang.mydb.client.Launcher"
会启动一个交互式命令行,就可以在这里输入类 SQL 语法,回车会发送语句到服务,并输出执行的结果。

初识项目
MYDB 分为前端和后端,前后端通过 socket 进行通信,前端读取用户输入,发送到后端,输出返回结果,并等待下一次输入;后端则负责解析 SQL,如果是合法的 SQL 就执行并返回结果。
不包括解析器的话,MYDB 分了五个模块:
- transaction manager(TM),通过维护 XID 文件来维护事务状态,并提供接口供其他模块来查询某个事务的状态。
- data manager(DM),管理数据库 DB 文件和日志文件。
- version manager(VM),基于两段锁协议实现调度序列的可串行化,并实现 mvcc 以消除读写阻塞,并实现两种隔离级别。
- index manager(IM),基于 B+ 树的索引。
- Table manager(TBM),实现对字段和表的管理,同时解析 SQL 语句并根据语句操作表。
还有雷锋同学总结了 select 语句 insert 语句的执行流程,比如说现在要执行 insert into student values "偶你家" 2012141461290 这条语句。
假设. 执行过程如下:
- 1、TBM接受语句, 并进行解析.
- 2、TBM将values的值二进制化.
- 3、TBM利用VM的insert操作, 将二进制化后的数据, 插入到数据库文件.
- 4、VM为该条数据建立版本控制, 并利用DM的insert操作, 将数据插入到数据库.
- 5、DM将数据插入到数据库, 并返回其被存储的地址.
- 6、VM将得到的地址, 作为该条记录的handler, 返回给TBM.
- 7、TBM计算该条语句的key, 并将handler作为data, 并调用IM的insert, 建立索引.
- 8、IM利用DM提供的read和insert等操作, 将key和data存入索引中.
- 9、TBM返回客户端插入成功的信息.
总结
以上为拿到该项目做的第一件事情,源地址我已经放在下面啦,本着学习的心态输出一些内容,检测监督自己学习。
新的地址:MYDB
相关文章:
MYDB运行环境的搭建
前言 再将该项目跑起来之前,我想你的环境应该是准备的差不多啦!只需要稍稍的配置一下即可。 我在本地已经跑通了,说是兼容JDK8,但我本地刚好有11就用了11啦,跑起来的方法在仓库的 readme 里写的很清楚。 在运行mvn c…...
Flink Stream API实践
目录 Flink程序的基本构成 获得执行环境(environment) 加载/初始化数据(source) 基于文件 基于socket 基于集合 自定义 转换操作(transformation) 基本转换 物理分区 任务链和资源组 名称和描述…...
AI图像生成-原理
一、图像生成流程总结 【AI绘画】深入理解Stable Diffusion!站内首个深入教程,30分钟从原理到模型训练 买不到的课程_哔哩哔哩_bilibili 二、如果只是用comfy UI生成图片 1、找到下面几个文件,把对应模型移动到对应文件夹即可使用 2、选择对…...
【JavaScript】尺寸和位置
DOM对象相关的尺寸和位置属性 用于获取和修改元素在页面中的尺寸和位置。 只读属性: clientWidth和clientHeight:获取元素可视区域的宽度和高度(padding content),不包括边框和滚动条。 offsetWidth和offsetHeight…...
Express框架下搭建GraphQL API
需要先下载apollo-server-express,apollo-server-express是Express框架下,用于构建GraphQL服务的中间件,属于Apollo Server的一部分: npm install apollo-server-express 随后在index.js添加 apollo-server-express包࿱…...
发布订阅模式
一、常见的发布订阅模式 1、Dom的事件 Event addEventListener dispatchEvent //订阅中心 const event new Event(zyk); //订阅 document.addEventListener(zyk, (value)>{console.log(我收到了:, value) }); //发布 document.dispatchEvent(e, 1); docume…...
【Java 演示灵活导出数据】
演示灵活导出数据 🎉🎉🎉🎉🎉🎉【小吴小吴bug全无开通公众号】关注公众号获取第一时间博客动态 背景今天临时起兴打开稀土掘金导航栏看到页面推广gitee项目恰巧最近也在学习python了解到python爬虫很厉害&…...
一对一WebRTC视频通话系列(六)——部署到公网
本系列博客主要记录一对一WebRTC视频通话实现过程中的一些重点,代码全部进行了注释,便于理解WebRTC整体实现。 本专栏知识点是通过<零声教育>的音视频流媒体高级开发课程进行系统学习,梳理总结后写下文章,对音视频相关内容感…...
【数据结构】线性表----链表详解
数据结构—-链表详解 目录 文章目录 链表的定义链表的构成链表的分类双向和单向带头和不带头循环和不循环 链表的命名基本操作的实现初始化打印取值查找插入指定位置插入删除删除销毁 部分其他链表的代码实现循环链表双向链表 优点/缺点(对比顺序表)优点…...
【小程序】小程序如何适配手机屏幕
小程序如何适配手机屏幕 1. 使用rpx单位2. 百分比布局3. 弹性盒子(Flexbox)和网格布局4. 媒体查询5. 响应式布局6. 测试和调试 1. 使用rpx单位 rpx(responsive pixel)是小程序中的一种长度单位,可以根据屏幕宽度进行自…...
第15节 编写shellcode加载器
我最近在做一个关于shellcode入门和开发的专题课👩🏻💻,主要面向对网络安全技术感兴趣的小伙伴。这是视频版内容对应的文字版材料,内容里面的每一个环境我都亲自测试实操过的记录,有需要的小伙伴可以参考…...
JAVA学习-练习试用Java实现爬楼梯
问题: 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例 1: 输入: 2 输出: 2 解释: 有两种方法可以爬到楼…...
[SWPUCTF 2021 新生赛]PseudoProtocols、[SWPUCTF 2022 新生赛]ez_ez_php
[SWPUCTF 2021 新生赛]PseudoProtocols 打开环境,提示hint.php就在这里,且含有参数wllm 尝试利用PHP伪协议读取该文件 ?wllmphp://filter/convert.base64-encode/resourcehint.php//文件路径php://filter 读取源代码并进行base64编码输出。 有一些敏…...
Hive-拉链表的设计与实现
Hive-拉链表的设计与实现 在Hive中,拉链表专门用于解决在数据仓库中数据发生变化如何实现数据存储的问题。 1.数据同步问题 Hive在实际工作中主要用于构建离线数据仓库,定期的从各种数据源中同步采集数据到Hive中,经过分层转换提供数据应用…...
AI应用案例:会议纪要自动生成
以腾讯会议转录生成的会议记录为研究对象,借助大模型强大的语义理解和文本生成等能力,利用指令和文本向量搜索实现摘要总结、要点提取、行动项目提取、会议纪要生成等过程,完成会议纪要的自动总结和生成,降低人工记录和整理时间成…...
基于光纤技术的新能源汽车电池安全监测--FOM²系统
为什么要进行动力电池包的温度监测? 新能源电动汽车的动力电池包的工作温度,不仅会影响电池包性能,而且直接关系到车辆安全。时有发生的新能源汽车电池包起火事件,对电池包、冷却系统以及电池管理系统(BMS)…...
基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (二)
基于 LlaMA 3 LangGraph 在windows本地部署大模型 (二) #Options local_llm llama3 llm ChatOllama(modellocal_llm, format"json", temperature0) #embeddings #embeddings OllamaEmbeddings(model"nomic-embed-text") embed…...
Spring MVC(三) 参数传递
1 Controller到View的参数传递 在Spring MVC中,把值从Controller传递到View共有5中操作方法,分别是。 使用HttpServletRequest或HttpSession。使用ModelAndView。使用Map集合使用Model使用ModelMap 使用HttpServletRequest或HttpSession传值 使用HttpSe…...
常见加解密算法02 - RC4算法分析
RC4是一种广泛使用的流密码,它以其简洁和速度而闻名。区别于块密码,流密码特点在于按位或按字节来进行加密。 RC4由Ron Rivest在1987年设计,尽管它的命名看起来是第四版,实际上它是第一个对外发布的版本。 RC4算法的实施过程简洁…...
如何使用 ERNIE 千帆大模型基于 Flask 搭建智能英语能力评测对话网页机器人(详细教程)
ERNIE 千帆大模型 ERNIE-3.5是一款基于深度学习技术构建的高效语言模型,其强大的综合能力使其在中文应用方面表现出色。相较于其他模型,如微软的ChatGPT,ERNIE-3.5不仅综合能力更强,而且在训练与推理效率上也更高。这使得ERNIE-3…...
G-Helper:让华硕笔记本焕发新生的轻量级控制中心
G-Helper:让华硕笔记本焕发新生的轻量级控制中心 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar, a…...
新手福音:通过快马生成wsl2入门项目,轻松迈出linux开发第一步
作为一个刚接触Linux开发的新手,我最近在尝试使用WSL2搭建开发环境时遇到了不少麻烦。从安装配置到基础命令学习,每一步都让我这个Windows用户感到手足无措。直到发现了InsCode(快马)平台,它帮我生成了一套完整的WSL2入门项目,让我…...
Windows USB设备独占访问技术解决方案:UsbDk架构解析与实践指南
Windows USB设备独占访问技术解决方案:UsbDk架构解析与实践指南 【免费下载链接】UsbDk Usb Drivers Development Kit for Windows 项目地址: https://gitcode.com/gh_mirrors/us/UsbDk Windows系统对USB设备的严格管理限制了用户模式应用程序直接访问硬件的…...
LaTeX公式一键转换Word:学术写作的效率革命
LaTeX公式一键转换Word:学术写作的效率革命 【免费下载链接】LaTeX2Word-Equation Copy LaTeX Equations as Word Equations, a Chrome Extension 项目地址: https://gitcode.com/gh_mirrors/la/LaTeX2Word-Equation 作为一名研究生,你是否曾经为…...
Windows下OpenClaw安装指南:快速对接Phi-3-vision-128k-instruct图文模型
Windows下OpenClaw安装指南:快速对接Phi-3-vision-128k-instruct图文模型 1. 环境准备与安装 在Windows系统上部署OpenClaw需要先确保基础环境就绪。我使用的是Windows 11专业版22H2版本,整个过程大约需要15分钟。建议提前准备管理员权限的PowerShell窗…...
Spoon与Gradle插件集成:现代化Android项目的最佳实践指南 [特殊字符]
Spoon与Gradle插件集成:现代化Android项目的最佳实践指南 🚀 【免费下载链接】spoon Distributing instrumentation tests to all your Androids. 项目地址: https://gitcode.com/gh_mirrors/sp/spoon Spoon是一个强大的Android测试分发工具&…...
关键词SEO服务对网站排名有什么影响_关键词SEO服务与移动端优化有什么关系
SEO服务对网站排名有什么影响 在当前数字化时代,网站排名的重要性不言而喻。无论是企业、个人博客还是新媒体,网站的流量直接关系到业务的发展和品牌的影响力。而在这其中,关键词SEO服务起到了至关重要的作用。关键词SEO服务对网站排名究竟有…...
ICLR2025杰出论文启示录:大模型安全、微调与知识编辑的三大前沿突破
1. 深度安全对齐:从表层防御到系统级防护 大语言模型的安全性问题一直是业界关注的焦点。普林斯顿大学和Google DeepMind的研究团队发现,当前主流的安全对齐方法存在一个致命缺陷——它们只停留在模型输出的前几个token层面。这就好比给房子装防盗门却忘…...
MAI-UI-8B应用案例:医疗登记表智能填充实战
MAI-UI-8B应用案例:医疗登记表智能填充实战 1. 医疗表单处理的痛点与解决方案 在医疗信息化系统中,患者登记表是每个医疗机构每天都要处理的基础文档。传统方式下,医护人员需要手动填写大量重复信息,不仅效率低下,还…...
OpenClaw低成本方案:Qwen3-14B私有镜像替代OpenAI API实战
OpenClaw低成本方案:Qwen3-14B私有镜像替代OpenAI API实战 1. 为什么选择本地模型替代商用API 去年冬天,当我第一次用OpenClaw自动整理全年会议纪要时,看着账单里OpenAI API的消耗记录,手指悬在键盘上半天没敢点"重试"…...
