
算法
文章平均质量分 64
mydriverc2
这个作者很懒,什么都没留下…
展开
-
二分查找算法和二分查找函数bsearch
二分查找时在给定已按升序排好序的n个元素a[0:n-1], 用折半查找法在从这n个元素中找出一特定元素x,时间复杂性为O(logn)。 具体实现如下://二分查找static int binarySearch(int []a, int x, int n){ int left = 0,right = n-1; int middle; while (l转载 2015-06-17 17:50:28 · 1076 阅读 · 0 评论 -
C++ map,set内部数据结构
http://www.cnblogs.com/renyuan/archive/2013/12/11/3469851.html 1)Set是一种关联容器,它用于存储数据,并且能从一个数据集合中取出数据。它的每个元素的值必须唯一,而且系统会根据该值来自动将数据排序。每个元素的值不能直接被改变。【重点】内部结构采用红黑树的平衡二叉树。multiset 跟set 类似,唯一的区别是允许键转载 2015-06-14 00:25:01 · 592 阅读 · 0 评论 -
从内存的角度观察 堆、栈、全局区(静态区)(static)、文字常量区、程序代码区
http://www.cnblogs.com/huhuuu/p/3440187.html之前写了一篇堆栈的,这里再补充下内存其他的区域1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放 , 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回转载 2015-06-14 13:20:31 · 517 阅读 · 0 评论 -
STL内存碎片
http://bbs.youkuaiyun.com/topics/390741968实现STL的内存分配器allocatorstl的内存碎片式老调重弹很多次了。加条内存的事。我不认为自己写的内存分配器和超越运行库和stl直接上google的tcmalloctcmalloc挺好,这个也不错,直接带STL风格的分配器:http://www.nedprod.com/pro转载 2015-06-15 16:42:13 · 1341 阅读 · 0 评论 -
公钥和私钥
http://blog.youkuaiyun.com/tanyujing/article/details/17348321公钥和私钥就是俗称的不对称加密方式,是从以前的对称加密(使用用户名与密码)方式的提高。用电子邮件的方式说明一下原理。 使用公钥与私钥的目的就是实现安全的电子邮件,必须实现如下目的: 1. 我发送给你的内容必须加密,在邮件的传输过程中不能被别人看到。转载 2015-10-25 20:55:04 · 344 阅读 · 0 评论 -
公钥与私钥
数字签名是什么?作者:David Youd翻译:阮一峰原文网址:http://www.youdzone.com/signature.html1.鲍勃有两把钥匙,一把是公钥,另一把是私钥。2.鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。3.苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的转载 2015-10-25 20:57:48 · 348 阅读 · 0 评论 -
Zookeeper与paxos算法
http://blog.jobbole.com/45721/一、 zookeeper是什么官方说辞:Zookeeper 分布式服务框架是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。好抽象,我们改变一下方式,先看看它都提供了哪些功转载 2015-12-02 13:51:22 · 358 阅读 · 0 评论 -
Hash算法
基本概念 * 若结构中存在和关键字K相等的记录,则必定在f(K)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系f为散列函数(Hash function),按这个思想建立的表为散列表。 * 对不同的关键字可能得到同一散列地址,即key1≠key2,而f(key1)=f(key2),这种现象称冲突。具有相同函数值的关键字对该散列函数来说称做同义词。综转载 2015-12-02 14:21:17 · 313 阅读 · 0 评论 -
hash算法和常见的hash函数 转载
Hash,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。数学表述为:h = H(M) ,其中H( )--单向散列函数,M--任意长度明文,h--固定长度散列值。 在信息安全领域中应用的Hash算法,还需要满足其他关键特性转载 2015-12-02 14:26:10 · 523 阅读 · 0 评论 -
“一致性哈希即Consistent Hashing” 和 “libconhash” 的学习感悟
http://m.blog.youkuaiyun.com/blog/guoqiangi1/8695284最近学习了一致性哈希算法及其在分布式中的应用,并且自己读取了libconhash的C语言版实现的源码。对一致性哈希和分布式中的均衡颇有些感悟。记下:libconhash下载地址:http://sourceforge.net/projects/libconhash/?source=转载 2015-12-02 14:42:12 · 638 阅读 · 0 评论 -
五分钟理解一致性哈希算法(consistent hashing)
转载请说明出处:http://blog.youkuaiyun.com/cywosp/article/details/23397179 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到转载 2015-12-02 14:29:33 · 313 阅读 · 0 评论 -
银联的MAC校验
http://www.tuicool.com/articles/VraMn2这两天做银联的接口,遇到了银联的MAC验证算法。上网查询了一下,银联的MAC算法原文是如下:a) 将欲发送给POS中心的消息中,从消息类型(MTI)到63域之间的部分构成MAC ELEMEMENT BLOCK (MAB)。b) 对MAB,按每8个字节做异或(不管信息中的字符格式)转载 2016-02-14 17:06:02 · 4954 阅读 · 0 评论 -
POS终端MAC算法-C语言实现
POS终端MAC算法-C语言实现本文根据《中国银联直联POS终端规范》的阐述,用C语言编程实现,该算法在实际的商业POS终端中使用。POS终端采用ECB的加密方式,简述如下:a) 将欲发送给POS中心的消息中,从消息类型(MTI)到63域之间的部分构成MAC ELEMEMENT BLOCK (MAB)。b) 对MAB,按每8个字节做异或(不管信息中的字符格式),如果最后不满8个转载 2016-02-14 17:06:45 · 1315 阅读 · 0 评论 -
对称加密 非对称加密
对称加密算法对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密转载 2016-03-14 15:07:46 · 413 阅读 · 0 评论 -
MD5 不可逆
你能从书本的摘要还原出原文吗?除非原文比摘要短。MD5作为一种校验手段而不是加密手段。在内容字节长度小于MD5值的字节长度,是可逆的,但存在重复的可能。由于概率较低,且基于加密前内容一般可识读,所以你懂的为毛有那么多md5解密的网站,但是又有人说md5绝对不可逆首先md5不是加密,只是根据已有数据生成特征值,用于签名,完整性检查。好的散列算法要求a到b容易,但找到能生成b的数据转载 2016-03-14 15:19:09 · 1229 阅读 · 0 评论 -
彩虹表完全参考手册
https://www.nigesb.com/talk-about-rainbowtables.html最近弄了个一T的硬盘,研究了一下目前网上彩虹表的现状,因此总结成此文,国内关于彩虹表的文章少得可怜,而且好多文章和地址都是旧的了。彩虹表就是一个庞大的、针对各种可能的字母组合预先计算好的哈希值的集合,不一定是针对MD5算法的,各种算法的都有,有了它可以快速的破解各类密码。越是转载 2016-03-14 15:30:31 · 4974 阅读 · 0 评论 -
TCMalloc小记
http://blog.youkuaiyun.com/chosen0ne/article/details/9338591周末抽空看了一下tcmalloc,了解了个大概。下面记录一下。一. 原理tcmalloc就是一个内存分配器,管理堆内存,主要影响malloc和free,用于降低频繁分配、释放内存造成的性能损耗,并且有效地控制内存碎片。glibc中的内存分配器是ptmall转载 2015-06-15 16:39:42 · 416 阅读 · 0 评论 -
内存区划分、内存分配、常量存储区、堆、栈、自由存储区、全局区
http://blog.sina.com.cn/s/blog_7edcf63b0100yhk9.html 一. 在c中分为这几个存储区1.栈 ——由编译器自动分配释放2.堆 ——一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收3.全局区(静态区)——全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静转载 2015-06-14 13:22:35 · 763 阅读 · 0 评论 -
内存堆和栈的区别
原文: http://student.youkuaiyun.com/link.php?url=http://www.top-e.org%2Fjiaoshi%2Fhtml%2F427.html在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到。但对于很多的初学着来说,堆栈是一个很模糊的概念。堆栈:一种数据结构、一个在程序运行时用于存放的地方,这可能是很多初学者的认识,转载 2015-06-14 13:10:40 · 402 阅读 · 0 评论 -
二分排序与二分查找
1、规定排序的实现 分治法的三步法: 划分问题:(把序列二分), 递归求解:(分别对左右子序列递归排序) 合并结果:(根据左右两个有序的子序列,依次取两个子序列的最小元素中的最小者加到结果中去) 实现如下:[cpp] view plaincopy转载 2015-06-17 17:52:41 · 416 阅读 · 0 评论 -
【每日算法】C语言8大经典排序算法(2)
http://www.cnblogs.com/fzhe/archive/2013/01/25/2871699.html二、插入类排序 插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。 插入排序一般意义上有两种:直接插入排序和希尔排序,下面分别介绍。转载 2015-06-17 17:54:41 · 540 阅读 · 0 评论 -
二分插入排序
http://my.oschina.net/wangliannet/blog/140480二分插入排序也称折半插入排序,基本思想是:设数列[0....n]分为两部分一部分是[0...i]为有序序列,另一部分是[i+1.....n]为无序序列,从无序序列中取一个数 x ,利用二分查找算法找到 x 在有序序列中的插入位置并插入,有序序列还是有序的,接下来重复上述步骤,直到无序序列全部插转载 2015-06-26 16:34:12 · 500 阅读 · 0 评论 -
二分查找插入排序
[cpp] view plaincopy#include #include void pr_arr(int a[],int len) { int i=0; for(i=0;i { printf("%d ",a[i]); } printf("\n");转载 2015-06-26 16:54:00 · 610 阅读 · 0 评论 -
C语言版的16进制与字符串互转函数
http://www.cnblogs.com/nio-nio/p/3309367.html/*// C prototype : void StrToHex(BYTE *pbDest, BYTE *pbSrc, int nLen)// parameter(s): [OUT] pbDest - 输出缓冲区// [IN] pbSrc - 字符串// [IN] nLen - 16进转载 2015-07-09 16:43:23 · 15128 阅读 · 0 评论 -
字符串转为为十六进制
char ConvertHexChar(char ch){ if((ch>='0')&&(ch return ch-0x30; else if((ch>='A')&&(ch return ch-'A'+10; else if((ch>='a')&&(ch return ch-'a'+10; else retur转载 2015-07-09 16:43:00 · 662 阅读 · 0 评论 -
char 与 unsigned char的区别
在数据类型转换时有区别:如果是char,系统认为最高位是符号位,那么将对最高位进行拓展如果是unsigned char,系统认为没有符号位,不会对最高位拓展。 对最高位拓展是什么意思呢?char在C里占一个字节,比如0x80的一个char,二进制为1000 0000,如果转为int则,认为最高位的1是符号位,int是4个字节,剩下的3个怎么办呢,肯定得填充了,系统会在转载 2015-07-09 17:18:52 · 1355 阅读 · 0 评论 -
char 与 unsigned char的本质区别
http://www.cnblogs.com/qytan36/archive/2010/09/27/1836569.html在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别 首先在内存中,char与unsigned char没有什么不同,都是一个字节,唯一的区别是,char的最高位为符号位,转载 2015-07-09 17:10:17 · 415 阅读 · 0 评论 -
sprintf %02x
#include#include#define lo(f) ((f)&0xff)#define hi(f) (lo(f>>8))int main(void){int key;do{ key=bioskey(0); printf("0x%02x 0x%02x %c\n",hi(key),lo(key),lo(key));//这条语句中0x%02x是什么意思??转载 2015-07-09 17:08:13 · 7754 阅读 · 0 评论 -
如何计算时间复杂度
求解算法的时间复杂度的具体步骤是: ⑴ 找出算法中的基本语句; 算法中执行次数最多的那条语句就是基本语句,通常是最内层循环的循环体。 ⑵ 计算基本语句的执行次数的数量级; 只需计算基本语句执行次数的数量级,这就意味着只要保证基本语句执行次数的函数中的最高次幂正确即可,可以忽略所有低次幂和最高次幂的系数。这样能够简化算法分析,并且使注意力集中在最重要的一点上:转载 2015-06-13 23:14:32 · 529 阅读 · 0 评论 -
常用的排序算法的时间复杂度和空间复杂度
http://blog.youkuaiyun.com/wuxinyicomeon/article/details/5996675常用的排序算法的时间复杂度和空间复杂度排序法最差时间分析平均时间复杂度稳定度空间复杂度冒泡排序O(n2)O(n2)稳定O(1)快速排序O(n2)O(n*log2n)不稳转载 2015-06-13 23:15:26 · 426 阅读 · 0 评论 -
速查表:常用算法和数据结构的复杂度
搜索算法数据结构时间复杂度空间复杂度 平均最差最差深度优先搜索 (DFS)Graph of |V| vertices and |E| edges-O(|E| + |V|)O(|V|)广度优先搜索 (BFS)Graph of |V| vertices and |E| edges-O(转载 2015-06-13 23:17:10 · 441 阅读 · 0 评论 -
浅谈算法和数据结构: 九 平衡查找树之红黑树
http://www.cnblogs.com/yangecnu/p/Introduce-Red-Black-Tree.html前面一篇文章介绍了2-3查找树,可以看到,2-3查找树能保证在插入元素之后能保持树的平衡状态,最坏情况下即所有的子节点都是2-node,树的高度为lgN,从而保证了最坏情况下的时间复杂度。但是2-3树实现起来比较复杂,本文介绍一种简单实现2-3树的数据结构,即红转载 2015-06-13 23:20:02 · 386 阅读 · 0 评论 -
红黑树
红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由Rudolf Bayer发明的,当时被称为平衡二叉B树(symmetric binary B-trees)。后来,在1978年被 Leo J. Guibas 和 Robert Sedgewick 修改为如今的“红黑树”。红黑树和AVL树类似转载 2015-06-13 23:22:47 · 335 阅读 · 0 评论 -
有感于STL的内存管理
http://blog.163.com/dengminwen@126/blog/static/870226720097189486788/1. 背景前些天在一个技术分享会上,某大牛说,STL使用了内存池,释放内存的时候,并不释放给OS,而是自己由留着用。听到这些观点后,我就有些着急了,因为我以前一直是直接使用STL的一些工具类的,比如std::string、std::map转载 2015-06-13 23:51:23 · 410 阅读 · 0 评论 -
撞库攻击:一场需要用户参与的持久战
http://www.freebuf.com/articles/database/29267.html转载 2016-03-14 15:31:42 · 439 阅读 · 0 评论