哈希表及其企业级应用

这里写目录标题

  • 哈希表的原理精讲
    • 哈希表结构体定义
      • 企业级应用
      • 文件接口
      • 储存基本单位
      • 文件存储单位
      • 文件结构

哈希表的原理精讲

哈希表 - 散列表,它是基于快速存取的角度设计的,也是一种典型的“空间换时间”的做法

键(key) 组员的编号
值(value) 组员的其它信息
索引 数组的下标(0,1,2,3,4) ,用以快速定位和检索数据
哈希桶 保存索引的数组(链表或数组),数组成员为每一个索引值相同的多个元素
哈希函数 将组员编号映射到索引上,采用求余法

原理示意图:
哈希表及其企业级应用_第1张图片

哈希表结构体定义

	#define DEFAULT_SIZE 16
	
	 typedef struct _ListNode 
	 {
      
		 struct _ListNode *next;
		 int key; void *data; 
	  }ListNode; 
	
	 typedef ListNode *List;
	 typedef ListNode *Element; 
	 
	 typedef struct _HashTable
	  {
      
		 int TableSize; 
		 List *Thelists;
	  }HashTable;

企业级应用

根据淘宝数据分析,有上十亿的商品。每一个商品有包括大量的图片和文字需要大量块磁盘来保存.

1PB = 1024 TB = 1024 * 1024 GB

淘宝针对海量非结构化数据存储设计出了的一款分布式系统,叫TFS,它构筑在普通的Linux机器集群上,可为外部提供高可靠和高并发的存储访问。

文件接口

文件系统 -一种把数据组织成文件和目录的存储方式,提供了基于文件的存取接口,并通过文件权限控制访问。
哈希表及其企业级应用_第2张图片

储存基本单位

扇区 - 硬盘的最小存储存储单位(Sector)。一般每个扇区储存512字节(相当于0.5KB)
哈希表及其企业级应用_第3张图片

  1. 磁盘的每一面被分为很多条磁道,即表面上的一些同心圆,越接近中心,圆就越小。
  2. 而每一个磁道又按512个字节为单位划分为等分,叫做扇区.

文件存储单位

块 - 文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。
哈希表及其企业级应用_第4张图片
哈希表及其企业级应用_第5张图片

文件结构

操作系统自动将硬盘分成三个区域。

  1. 目录项区 - 存放目录下文件的列表信息
  2. 数据区 - 存放文件数据
  3. inode区(inode table) - 存放inode所包含的信息

在这里插入图片描述

关于Inode

  1. inode - “索引节点”,储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。每个inode都有一个号码,操作系统用inode号码来识别不同的文件。
  2. inode节点大小 - 一般是128字节或256字节。inode节点的总数,格式化时就给定,一般是每1KB或每2KB就设置一个inode。一块1GB的硬盘中,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%。

你可能感兴趣的:(笔记,技术分享,数据结构,数据结构,分布式,c++,后端)