哈希表及其企业级应用

哈希表的原理精讲

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

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

原理示意图:
在这里插入图片描述

哈希表结构体定义

	#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机器集群上,可为外部提供高可靠和高并发的存储访问。

文件接口

文件系统 -一种把数据组织成文件和目录的存储方式,提供了基于文件的存取接口,并通过文件权限控制访问。
在这里插入图片描述

储存基本单位

扇区 - 硬盘的最小存储存储单位(Sector)。一般每个扇区储存512字节(相当于0.5KB)
在这里插入图片描述

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

文件存储单位

块 - 文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。
在这里插入图片描述
在这里插入图片描述

文件结构

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

  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%。
  • 12
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Respect@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值