MIT6.5830-Lab2
MIT6.5830 的数据库课程。Lab2 主要是完成查询的连接和过滤、实现聚合下的查询操作、对表的插入删除以及实现数据库中非常重要的 LRU 页面置换算法。 任务目录 Exercise1:实现查询的连接和过滤 Exercise2:实现聚合操作MIN、MAX、COUNT、SUM、AVG Exercise3:实现修改表的方法,完成添加和删除 Exercise4:实现Insert和Delete操作符 Exercise5:实现BufferPool的页面置换算法 Exercise1 实现Predicate、JoinPredicate、Filter、Join Predicate类Filter的辅助类,用于筛选满足条件的tuple:将tuple中的字段与指定字段进行比较,实现对单个tuple的过滤操作(比较逻辑有==、>=、<=、>、<、!=、LIKE等)。 参数: 指定的比较字段(也是Field.compare()的参数):private Field operand; tuple中指定字段对应字段的索引:private...
MIT6.5830-Lab1
前段时间学习一下 MySQL,正好准备一个手撕轮子项目,就准备完成这个 MIT6.5830 的数据库课程。Lab1 主要是完成一些简单的数据库定义以及实现简单的全表扫描。 任务目录 exercise1:实现元组以及元组属性字段 exercise2:实现数据库目录,包含数据库现有的表信息 exercise3:实现BufferPool,将内存读取过的数据页缓存下来 exercise4:实现页面id、数据记录id以及Page类 exercise5:实现磁盘文件的接口HeapFile,通过HeapFile可以从磁盘读写数据 exercise6:实现全表扫描 Exercise1 实现Tuple、TupleDesc两个类 在数据库中,行被称为元组(tuple)或记录(record),列称为字段(field)。tuple元组在数据库中是一组Field对象的集合。 TupleDesc类 参数: private CopyOnWriteArrayList<TDItem>...
Java集合
复习一下Java的集合:分为单列集合和双列集合,单列集合有List和Set两类,双列集合是Map集合。List接口的实现类有ArrayList, LinkedList;Set和Map可以配合着学,主要有HashSet–HashMap, LinkedHashSet–LinkedHashMap, TreeSet–TreeMap三组。 Collection集合 总结一下Collection单列集合的常用功能有哪些,ArrayList、LinkedList、HashSet、LinkedHashSet、TreeSet集合都可以调用下面的方法: Collection集合的遍历方式: 迭代器遍历集合 当调用iterator()方法获取迭代器时,当前指向第一个元素; hasNext()方法则判断这个位置是否有元素,如果有则返回true,进入循环; 调用next()方法获取元素,并将当月元素指向下一个位置; 等下次循环时,则获取下一个元素,依此类推。 12345Iterator<String> it =...
Java的深浅拷贝
今天在刷算法题的时候忘记了引用数据类型深浅拷贝的问题,正好借此机会来复习一下。 拷贝的分类 引用拷贝 没有创建新的内存空间,只是复制了一个引用变量指向了堆空间中相同的地址。 对象拷贝 创建对象的一个副本,创建了新的对象指向不同的地址空间。而深浅拷贝的区别在于对象里面的属性拷贝方式。 浅拷贝 属性就是引用拷贝,指向同一地址。 深拷贝 属性也是对象拷贝,不是同一地址。 引用拷贝1234Teacher teacher = new Teacher("riemann", 28);Teacher otherTeacher = teacher; // 没有创建新的对象System.out.println(teacher);System.out.println(otherTeacher); 它们的地址值是相同的,teacher和otherTeacher只是引用而已,他们都指向了一个相同的对象Teacher(“riemann”,28)。 对象拷贝1234Teacher teacher = new...
Linux入门
Linux的常见命令和Linux中安装jdk、mysql等。 Linux基础命令文件目录操作命令 ls -a -l cd ~:表示用户的home目录 .:表示当前所在目录 ..:表示目前目录位置的上级目录 cat -n:显示行号 more:分页的形式显示文件内容 回车键:向下滚动一行 空格键:向下滚动一屏 b:返回上一屏 q或者Ctrl+C:退出more tail:查看文件末尾的内容 -f:动态读取文件末尾内容并显示,常用于日志文件的内容输出 mkdir:创建目录 -p:可以实现多级目录的同时创建(mkdir 1/2/3) rmdir:删除空目录 拷贝移动命令 cp:用来复制文件或目录(cp [-r] source dest) -r:复制该目录下的所有子目录和文件 mv:为文件或目录改名,或移动到其他位置(mv source...
01-MySQL基础
Mysql是一种关系型数据库,这篇博客作为数据库的基础篇主要讲解操作关系型数据的SQL编程语言。 数据库相关概念数据库 数据模型数据模型是数据库中数据的存储方式,是数据库系统的基础。 SQL语言DDL 数据定义语言 数据库操作 12345show databases;create database 数据库名;use 数据库名;select database();drop database 数据库名; 表操作 123456show tables;create table 表名 (字段 字段类型, 字段 字段类型...);desc 表名;show create table 表名;alter table 表名 add / modify / change / drop / rename to ...;drop table...
MybatisPlus
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。使用原生的Mybatis编写持久层逻辑时,所需要的代码是比较繁琐的,需要定义Mapper接口和Mapper.xml文件,每一个方法都需要编写对应的sql语句,会存在很多大量的重复工作,使用MP之后,对通用的方法做了高度的抽取,避免了很多重复工作,可以非常快速的实现了单表的各种增、删、改、查操作。 博客主要讲解Springboot项目下的MybatisPlus框架的核心功能,详细的可参考MP的中文开发文档。 入门配置 创建Springboot工程(在IDEA中集成功能) 引入 Spring Boot Starter 父工程: 12345<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> ...
瑞吉外卖项目实战day2
适合新手小白入门Java后端开发的Springboot + Mybatis Plus 项目。 后面我逐渐省略了一些功能的记录,主要是因为和前面的业务万变不离其宗,如果要看详细的代码可以到我的github仓库下拉reggie代码。 业务实现(后台系统)新增套餐数据模型 表现层要素 请求类型:POST 请求路径:/setmeal 请求参数:json格式的数据,除了setmeal套餐的基本信息外,还有套餐内的菜品信息setmealDishes也封装成json数组的格式。(还有idType和dishList是什么,当请求参数json数据key大于dto对象的时候,可以正常封装吗?) 12345678910111213141516171819202122232425262728addSetmeal(prams) .then((res) => { if (res.code === 1) { this.$message.success('套餐添加成功!') if (!st) { ...
瑞吉外卖项目实战day1
适合新手小白入门Java后端开发的Springboot + Mybatis Plus 项目。 项目构建配置静态资源映射为了访问静态资源,要进行静态资源映射的配置。 Springboot将静态资源都放在resource/static目录下,会进行自动配置静态资源映射。 如果静态资源没放在resource/static目录,要书写配置类实现WebMvcConfigurer接口,重写addResourceHandlers方法,进行手动配置。 123456789@Configurationpublic class WebMvcConfig implements WebMvcConfigurer { @Override protected void addResourceHandlers(ResourceHandlerRegistry registry) { log.info("开始进行静态资源映射..."); ...
IDEA中集成git
这篇博客主要记录git的常用命令以及在IDE中集成git简化版本控制操作。 git安装以及更新(macOS):安装Homebrew git常用命令git全局设置 git版本 1git --version 设置用户信息 12git config --global user.name "KiCheng"git config --global user.email "lijiacehng053@gmail.com" 查看配置信息 1git config --list 获取本地仓库 在本地初始化一个git仓库(不常用) 1git init 从远程仓库克隆(常用) 1git clone [URL] 本地仓库操作 查看文件状态 1git status 将文件的修改加入暂存区 1git add [文件名] / git add . 将暂存区的文件取消暂存或者是切换到指定版本 12git reset [文件名] / git reset .git reset --hard [版本号] 将暂存区的文件修改提交到本地版本库 1git commit -m...