漫谈非加密哈希算法(MurMurHash,CRC32,FNV,SipHash,xxHash)

HASH算法介绍 Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从...

标签: 算法
发表于:2021-11-22 / 阅读(4235) / 评论(0) 分类 经典算法
Java & PHP RSA 互通密钥、签名、验签、加密、解密

RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头...

标签: php java rsa
发表于:2021-9-10 / 阅读(484) / 评论(0) 分类 经典算法
单向链表翻转

struct linka { int data; linka next; }; void reverse(linka& head) { if(head ==NULL) return; linka pre, cur, *ne; pre=head; cur=head->next; whil...

标签: 算法
发表于:2013-3-10 / 阅读(1732) / 评论(0) 分类 经典算法
行程长度编码(游程编码)

游程编码(RLE,run-length encoding),又译行程长度编码,又称变动长度编码法(run coding),在控制论中对于二值图像而言是一种编码方法,对连续的黑、白像素数(游程)以不同的码字进行编码。游程编码是一种简单的非破坏性资料压缩法,其好处是加压缩和解压缩都非常快。其方法是计算连...

发表于:2013-3-9 / 阅读(4821) / 评论(0) 分类 经典算法
标签(Tag)的数据库设计

最近,在del.icio.us mailinglist(译者按:应该是美味书签的讨论版块。以下del.icio.us翻译为美味书签)上面发了一个问题:“有人知道美味书签的数据库设计吗?”。之后我得到了一些回复,所以我想把这部分东西的知识分享给大家。 疑问 当你要为一个书签添加你认为需要的一个或多个标...

发表于:2013-2-28 / 阅读(1376) / 评论(0) 分类 经典算法
推荐算法

如今,到网上购物的人已经习惯了收到系统为他们做出的个性化推荐。Netflix 会推荐你可能会喜欢看的视频。TiVo 会自动把节目录下来,如果你感兴趣就可以看。Pandora 会通过预测我们想要听什么歌曲从而生成个性化的音乐流。所有这些推荐结果都来自于各式各样的推荐系统。它们依靠计算机算法运行,根据顾...

发表于:2012-11-13 / 阅读(1076) / 评论(0) 分类 经典算法
从10亿查询词找出出现频率最高的10个

1. 问题描述在大规模数据处理中,常遇到的一类问题是,在海量数据中找出出现频率最高的前K个数,或者从海量数据中找出最大的前K个数,这类问题通常称为“top K”问题,如:在搜索引擎中,统计搜索最热门的10个查询词;在歌曲库中统计下载率最高的前10首歌等等。2. 当前解决方案针对top k类问题,通常...

发表于:2012-5-24 / 阅读(1235) / 评论(0) 分类 经典算法
缓存中的算法-RAND算法,FIFO算法,LFU算法,LRU算法,OPT算法

在段式虚拟存储器中,虚存空间中能容纳的程序段数要比主存空间中能存放的相同长度的程序段数多得多。因此,必然会出现当主存中所有页面都已经被占用,或者所有主存空间都已经被占用,而又要从磁盘存储器中调入新页的情况。这时,必须从主存储器中淘汰掉一个不常用的页面,以便腾出主存空间来存放新调入的页面。下面介绍几种...

发表于:2011-2-20 / 阅读(2581) / 评论(0) 分类 经典算法
23种设计模式有趣诠释

创建型模式 1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂...

发表于:2009-10-18 / 阅读(1757) / 评论(0) 分类 经典算法
约瑟夫环 php实现

一群猴子排成一圈,按1,2,...,n依次编号。 然后从第1只开始数,数到第m只,把它踢出圈, 从它后面再开始数, 再数到第m只,在把它踢出去..., 如此不停的进行下去, 直到最后只剩下一只猴子为止,那只猴子就叫做大王。 要求编程模拟此过程,输入m...

发表于:2009-10-12 / 阅读(2548) / 评论(0) 分类 经典算法
哈希算法

哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。

发表于:2009-10-10 / 阅读(1478) / 评论(0) 分类 经典算法
二分查找(也叫做折半查找)及PHP实现

折半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。 【基本思想】 将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。如果x<a[n/2]...

发表于:2009-10-10 / 阅读(1763) / 评论(0) 分类 经典算法
折半查找

算法思想:   将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。通过一次比较,将查找区间缩小一半。   折半查找是一种高效的查找方法。它可以明显减...

发表于:2009-10-10 / 阅读(1235) / 评论(0) 分类 经典算法
匈牙利命名法

匈牙利命名法是一种编程时的命名规范。基本原则是:变量名=属性+类型+对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。命名要基于容易记忆容易理解的原则。保证名字的连贯性是非常重要的。 [break] 据说这种命名法是一位叫 Charles Simonyi 的匈牙利程序...

发表于:2009-6-14 / 阅读(1443) / 评论(0) 分类 经典算法
驼峰命名法

驼峰命名法(Camel-Case)是电脑程式编写时的一套命名规则(惯例)。     程序员们为了自己的代码能更容易的在同行之间交流,所以多才取统一的可读性比较好的命名方式。例如:有些程序员喜欢全部小写,有些程序员喜欢用下划线,所以如果要写一个my name的变量,他们常用的写法回有myna...

发表于:2009-6-14 / 阅读(1277) / 评论(0) 分类 经典算法