01 2012 档案

摘要:关于哈希表C实现,写了两篇学习笔记,不过似乎网上流传最具传奇色彩的莫过于暴雪公司的魔兽文件打包管理器里的hashTable的实现了;在冲突方面的处理方面,采用线性探测再散列。在添加和查找过程中进行了三次哈希,第一个哈希值用来查找,后两个哈希值用来校验,这样可以大大减少冲突的几率。在网上找了相关代码,但不知道其来源是否地道:StringHash.h 1 #include <StdAfx.h> 2 #include <string> 3 4 using namespace std; 5 6 #pragma once 7 8 #define MAXTABLELEN 1024 阅读全文
posted @ 2012-01-17 11:07 红心李 阅读(11322) 评论(7) 推荐(3) 编辑
摘要:上次大致分析了一下哈希表的链地址法的实现,今天来分析一下另一种解决哈希冲突的做法,即为每个Hash值,建立一个Hash桶(Bucket),桶的容量是固定的,也就是只能处理固定次数的冲突,如1048576个Hash桶,每个桶中有4个表项(Entry),总计4M个表项。其实这两种的实现思路雷同,就是对Hash表中每个Hash值建立一个冲突表,即将冲突的几个记录以表的形式存储在其中;废话不多说,上代码和图示基本能说明清楚:完整的代码,请看:这里,一位圣安德鲁斯大学的讲师:KRISTENSSON博客这里截取几个主要的片段:主要的数据结构:struct Pair { char *key; c... 阅读全文
posted @ 2012-01-16 11:06 红心李 阅读(8743) 评论(3) 推荐(3) 编辑
摘要:哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。具体的介绍网上有很详细的描述,如闲聊哈希表 ,这里就不再累述了;哈希表在像Java、C#等语言中是与生俱来的。可是在C的世界中,似乎只有自己动手,丰衣足食;在网上google了一把,大致有几个版本,我会一一来分析对比;首先先来交代一下哈希表实现中需要注意的一些概念:(主要参考:这里)哈希函数也叫散列函数,即:根据key,计算出key对应记录的储存位置 position = f(key)散列函数满足以下的条件:1、对输 阅读全文
posted @ 2012-01-13 09:32 红心李 阅读(40136) 评论(5) 推荐(2) 编辑
摘要:今天在看云风的铁路订票系统的简单设计 时,看到他提到通过动态DNS实现负载均衡;感觉自己对负载均衡这块一直是模模糊糊,有必要补补钙。动态DNS(英语:Dynamic DNS,简称D-DNS)是一种把互联网域名指往可变IP地址的系统。简单的说,动态域名可以在你的电脑每次上网得到新的IP之后,自动设置了新域名的指向,使网上其他任何人访问该域名时,始终能定向到你机器的最新的正确IP上去,从而使得人们能使用一个能记忆的,对用户来说是永远不变的域名来访问你那台IP每天都在变化的机器。从而也就能实现了将个人电脑变成可以供任何人访问的“服务器”了。当然,我所关心的是动态DNS技术在负载均衡方面的应用,那么让 阅读全文
posted @ 2012-01-12 09:18 红心李 阅读(2868) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示