摘要: 并发编程基础 什么是线程 进程是操作系统中的一个实体,是操作系统资源分配的基本单位,在Java中,一个进程必然至少有一个线程,这个线程被称为主线程。进程下的多个线程共享进程的资源。 操作系统分配CPU资源是以进程下的线程为基本单位而分配的,因为线程才是主要执行任务的。 undefined。每个线程都 阅读全文
posted @ 2024-08-18 20:36 RainbowMagic 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 数据读写流程 在bitcast论文中,想要获取内存中存储的数据,我们首先得获取索引数据,在索引数据中获取到文件id以及数据存储所在位置,然后根据这些信息去读取文件内容。 所有我们在进行写数据时也得有两步,第一步将key value信息持久化到文件中,第二部是将索引信息保存到内存中。 流程如下图所示 阅读全文
posted @ 2024-06-15 16:18 RainbowMagic 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 内存设计 根据之前论文之中所写,我们在内存中需要存储一份key所对应value的映射位置便于以后读出,在内存中存储的数据结构有许多,例如hash、跳表和b tree等。 在教程中我们使用的是b tree便于以后很方便的遍历key。 数据结构的话直接拿现成的包直接用就行了 btree库: https: 阅读全文
posted @ 2024-06-10 12:49 RainbowMagic 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 论文地址: https://riak.com/assets/bitcask-intro.pdf bitcask实例 按目录来划分实例,保证只有一个实例能对该目录进行读写操作,实例下有多个文件,有一个活跃数据文件,多个旧的数据文件,当活跃文件写入到达阈值时会变为旧的数据文件并创建一个活跃数据文件,活跃 阅读全文
posted @ 2024-06-06 14:11 RainbowMagic 阅读(21) 评论(0) 推荐(0) 编辑
摘要: KV数据库是以二元组的方式对数据进行存储,一个Key对应着一个Value,我们熟悉的Redis就是这样对数据进行存储的。但是与我们将要实现的数据库不同之处在于,redis是基于内存的方式来存储数据的,虽然它也有持久化策略,但是它本质上还是基于内存来进行设计的,而我们实现的数据库是会将数据持久化到硬盘 阅读全文
posted @ 2024-06-06 08:39 RainbowMagic 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 创建配置文件目录 mkdir -p /docker/rocketmq/data/namesrv/logs /docker/rocketmq/data/namesrv/store mkdir -p /docker/rocketmq/data/broker/logs /docker/rocketmq/d 阅读全文
posted @ 2024-05-11 11:29 RainbowMagic 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 概述 Fink用于处理计算的,如下图所示,将交易、日志、物联网、点击流的数据输入到Flink中进行处理计算,处理完成之后输出到应用、日志、数据库中。Flink是以流的方式对数据进行处理的,所谓流就是源源不断,每时每刻都在有序的产生,例如设备仪器运行数据就属于数据流,因为设备仪器无时无刻都再运行并产生 阅读全文
posted @ 2024-05-08 01:52 RainbowMagic 阅读(6) 评论(0) 推荐(0) 编辑
摘要: match_all 匹配所有文档,默认分页查询,只显示后十条数据,如下所示在索引中的数据有11条数据,在进行match_all查询时只返回了十条数据. "total": { "value": 11, "relation": "eq" } GET /es_db/_search { "query": { 阅读全文
posted @ 2024-03-06 08:30 RainbowMagic 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 全文检索 根据搜索条件将相关内容结果进行检索。 查询: 根据明确的条件对数据进行过滤,例如年龄 > 20且工资 < 10000的人进行过略。 检索: 没有明确的条件,通过相关性将结果进行返回,例如根据查询条件的同义词、错别字等等进行查询。 通过常规的模糊查询只能查出包含xxx的内容,而没办法根据相关 阅读全文
posted @ 2024-03-04 08:36 RainbowMagic 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 获取按键编码 当中断程序处理完毕之后需要相8259A发送一个处理完毕的信号,这样8259A才知道中断已经处理完毕,可以接收下一个中断信号了,不然的话,我们的键盘中断一直阻塞在哪里没办法进行处理下一个按键操作。 io_out8(PIC0_OCW2, 0x61);就是为了满足这个操作的。键盘的中断是IR 阅读全文
posted @ 2023-12-11 00:11 RainbowMagic 阅读(20) 评论(0) 推荐(0) 编辑