0%

数据仓库的概念

数据仓库提供集成化的和历史化的数据,它集成种类不同的应用系统,数据仓库从事物发展和历史的角度来组织和存储数据,以提供信息化和分析处理之用,是面向主题的、集成的、具有时间特征的、稳定的数据集合,用以支持经营管理中的决策制定过程

特征

  • 数据仓库的数据是面向主题的。传统数据库是面向应用而设计的,它的数据为了处理具体应用而组织到一起的。而主题是一个在较高层次将数据进行归类的标准,每个主题基本对应一个宏观的分析领域,满足该领域分析决策的需要。因此,主题的抽取是按照分析的要求来确定的,数据在进入数据仓库之前必须要经历加工和集成,将原始数据结构做一个从面向应用到面向主题的转变
  • 数据仓库的数据是集成性的。数据仓库中的数据来自于多个应用系统,要将这些数据统一到数据仓库的数据模式中来
  • 数据仓库的数据具有时间特征。数据仓库随着时间变化要不断增加新的内容,将数据库的数据变化追加到数据仓库中
  • 数据仓库的数据是相对稳定的。数据仓库是随时间而变化的,但又是相对稳定的。这种稳定是指数据仓库中的数据主要供企业决策分析之用,决策人员所涉及的数据操作主要是数据查询,一般情况下并不进行数据修改
阅读全文 »

URL访问工具

有时候想在命令行下通过http访问接口/网页,可以使用curl来进行操作

发起请求

1
curl www.baidu.com

会返回网页内容

参数选项

-i参数

使用-i参数,会返回响应header

1
curl -i www.baidu.com

-I参数

使用-I参数,只会返回响应header

1
curl -I www.baidu.com
阅读全文 »

SpringBoot打成jar包的结构

springboot通常会打成jar包,然后使用java -jar来进行执行,那么这个jar包里的结构是什么样的呢

springboot打成jar包的结构

其中

阅读全文 »

搜索引擎重要概念

倒排索引

倒排索引(inverted index),也称为反向索引,是搜索引擎中最常见的数据结构,几乎所有的搜索引擎都会使用到倒排索引,它将文档中的词作为关键字,建立词与文档的映射关系,通过对倒排索引的检索,可以根据词快速获取包含这个词的文档列表,这对于搜索引擎来说至关重要

存储的结构大概是这样的

单词 文档ID
this 1,2,3
people 5
love 13
阅读全文 »

零拷贝

零拷贝是服务器网络编程的关键,指的是计算机操作的过程中,CPU不需要为数据在内存之间的拷贝消耗资源,其通常是指计算机在网络上发送文件时,不需要将文件内容拷贝到用户空间而直接在内核空间中传输到网络的方式,常用的零拷贝有mmap和sendFile

内核空间和用户空间

在说零拷贝之前,先了解一下计算机的内存空间

当前操作系统都是采用的虚拟存储器,对32位操作系统而言,寻址地址为$2^{32}$也就是4G,操作系统将虚拟空间划分为两部分,一部分是内核空间,一部分是用户空间,将最高的1G字节分配给内核使用,称为内核空间;将较低的3G字节供各个进程使用,称为用户空间

内核空间

内核空间主要是指操作系统运行时所使用的用于程序调度、虚拟内存的使用或者连接硬件资源等的程序逻辑

用户空间

由于操作系统中除了操作系统之外,还有运行在操作系统中的用户程序,而每个进程都独立的使用属于自己的内存,为了操作系统的稳定性,运行在操作系统中的用户程序不能访问操作系统所使用的内存空间。

如果用户程序需要访问硬件资源,可以调用操作系统提供的接口来实现,这个调用接口的过程就是系统调用,每一次系统调用都会存在两个内存空间的切换

传统数据读写的过程

  • 第一次数据拷贝,read调用导致用户态到内核态的一次变化,同时,第一次复制开始:DMA(Direct Memory Access,直接内存存取,即不使用CPU拷贝数据到内存,而是DMA引擎传输数据到内存,用于解放CPU),从磁盘读取文件,将数据放入到内核缓冲区
  • 第二次数据拷贝,即:将内核缓冲区的数据拷贝到用户缓冲区,同时,发生了一次内核态到用户态的上下文切换
  • 第三次数据拷贝,调用write方法,系统将用户缓冲区的数据拷贝到Socket缓冲区,此时,又发生了一次用户态到内核态的上下文切换
  • 第四次数据拷贝,数据异步的从Socket缓冲区,使用DMA引擎拷贝到网络协议引擎,此次不需要进行上下文切换
  • write方法返回,再次从内核态切换到用户态

传统数据读写

需要 4 次数据拷贝、4 次上下文切换

阅读全文 »