自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 索引 vs 全表扫描

之前我们介绍了第一个文件格式:文件格式简介在这个文件格式里,数据没有排序,顺序存储,我们只提供了查询所有数据的接口,当我们想进行值过滤时,比如查询大于10的数据,需要将所有数据遍历一遍,如果把这个文件看做一个只有一列的表,这种查询方式就叫全表扫描。磁盘结构和基本耗时磁盘的组织结构 盘片->磁道->扇区。由于盘片是并行操作的,因此可以忽略寻找盘片的时间。所以基本上要找...

2018-07-13 15:33:10 3867 1

原创 Parquet 学习笔记

背景2010年 google 发表了一篇论文《Dremel: Interactive Analysis of Web-Scale Datasets》,介绍了其 Dermel 系统是如何利用列式存储管理嵌套数据的,嵌套数据就是层次数据,如定义一个班级,班级由同学组成,同学的信息有学号、年龄、身高等。Parquet 是 Dremel 的开源实现,作为一种列式存储文件格式,2015年称为 Apa...

2018-07-13 15:27:44 3769

原创 列式存储简介

业务背景关系表结构是被人们普遍接受的数据模型,通常一行数据由多个属性组成,每个属性是一列。但是磁盘是一维的,文件只能顺序写,那么先写谁后写谁呢?不同的写文件顺序就对应了不同的存储模型。传统数据库通常采用行式存储,即先存一行数据,再存下一行数据。在大数据时代,一个常见分析型场景是在数据仓库中进行分析,如商店的商品信息,有商品号,进货日期,价格等包含多个属性,这就是一个很常见的数据模型。而查询...

2018-07-13 15:24:19 12907 10

原创 Java文件Truncate

文件的恢复其实是一种 undo 日志。将文件的内容分成一个一个块,每一个块可以看成是一个事务,当事务完成时记录检查点。在数据库中,假如一个事务做了一半系统挂掉,可以根据 undo 日志将数据项设置为旧值。类似微信的撤销消息(因为要记录日志,为了减少空间占用,所以微信将其限制在了2分钟,我猜的)。写文件的 undo 日志很容易实现,记录每个完整小块的结尾位置。一旦出现错误,直接将最新检查点位置后...

2018-07-13 15:20:22 3172

原创 文件格式简介

什么是文件格式wiki 定义:A file format is a standard way that information is encoded for storage in a computer file. It specifies how bits are used to encode information in a digital storage medium.翻译一下:...

2018-07-13 15:18:32 4796

原创 java 字节流入门(读文件)

导读写文件基本是单线程顺序写的,用 FileOutputStream 就可以了。但是读文件一般不是顺序读的,为了实现想读哪里读哪里的功能,通常需要 RandomAccessFile。在我们读文件之前,首先要知道数据起始位置(offset)和长度(length),这样才能使用 RandomAccessFile 的 seek方法移动到数据起始位置,然后将数据读出来。基本过程就是这样的,很简...

2018-07-13 15:13:48 1271

原创 java 字节流入门(内存数组流->文件流)

导读本文介绍如何将内存数组流的数据写入文件流中。即将内存数组流中的数据通过文件流写到磁盘上,也叫flush,或持久化。毕竟内存是短暂的,磁盘才是永恒。流就像管道,数据就像管道里的水。管道最大的魅力就是可以连接,使水从一个管道流到另一个管道,流也一样。之前我们分别介绍了文件流和内存数组流,既然他们是流,那就应该可以连接起来。那么如何从内存数组流写入文件流呢?在 java 字节流入门(...

2018-07-13 15:02:10 1424

原创 java 字节流入门(内存数组流)

导读上篇文章介绍了两种常用的文件输入输出流:https://blog.csdn.net/qiaojialin/article/details/81031422其中向文件中写入的数据都是预先定义好的字节数组 byte[] ,本文介绍另一种在内存中维护字节数组更常用的方式:内存数组输入输出流。ByteArrayOutputStream内存数组流,就是和内存中的数组相关的一个流,...

2018-07-13 14:58:20 3731 1

原创 Java字节流入门(文件流)

导读在编程语言的教材中,文件流大多是放在最后一章介绍的,而且大学不怎么考流,所以没有重视过。在开始学习 java 流时,发现大多博客上来就放一大家子类图,每次看到都头大。在数据库领域,不可避免会接触到文件和流,而且磁盘上的文件组织是一件很有意思的事。因此,通过对实际项目中的流使用方式进行研究,加上网上博客学习,发现流也可以快速入门。本系列教程的目标是从最简单的入手,一步步入门 java...

2018-07-13 14:51:32 1499

原创 查找表(Lookup table)

查找表(look-up-table)这个名字很好听,缩写 LUT,听起来很高端,其实是一种很简单高效的索引操作,今天简单介绍一下。是啥wiki定义:a lookup table is an...

2018-07-12 16:41:14 6818 1

原创 java 调用 JNI 异常退出通过 core 定位

场景描述在 java 中存在jni调用,且不定期 java 进程全部消失,没有任何异常日志。通过分析 linux 的 core 文件来定位程序中哪里出了问题。JNI 示例首先构造一个带异常的 JNI,C函数中存在异常。以下文件和命令都在同一个文件夹下执行创建文件:TestJni.javaimport java.util.*;public class TestJ...

2018-07-11 20:04:10 3638 2

原创 重新认识数据结构:从空间占用开始

数据结构与算法是基础知识了,一般涉及数据结构的增删改查,深入一点的可以估计增删改查的时间复杂度和空间复杂度。本文介绍另一种衡量数据结构的方式:空间占用。这种分类让我对数据结构有了一个全新的...

2018-07-09 17:46:26 283

原创 站在行式存储的肩膀上实现列式存储

之前简单介绍了一下列式存储和其起源:和谐号为啥快?因为铁轨是列式存储!,列式存储的起源:DSM。在人们发现了列式存储的优点之后,就开始设计列存系统了。这些系统基本都是从头设计实现的。...

2018-07-05 16:09:50 138

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除