算法
luyaran
像永远快乐的阳光,追求那至高无上的完美乐园。
展开
-
算法(Algorithm)
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。算法中的指令描述的是一个转载 2016-11-10 14:01:15 · 1191 阅读 · 0 评论 -
一致性hash原理
一致性hash最常见的应用情形就是缓存,其实只要涉及到hash和多台主机请求路由的情况,都可能涉及到一致性hash问题。一致性hash主要是考虑到集群中节点挂掉或新增节点的时候,要对已有节点的影响降到最小,传统hash值取余方式肯定不能满足这个要求,交换节点位置影响还有限,但是新增节点、删除节点会让绝大多数的缓存失效,除了导致性能骤降外很有可能会压垮后台服务器。对于日常使用的情况,节点挂掉算是小概转载 2016-12-15 09:34:19 · 2692 阅读 · 0 评论 -
二叉树算法应用案例
笔者在1月4号将在CSDN学院开设一门公开课《算法与游戏实战》,在这里先把课程内容透露一部分给读者。首先讲述二叉树算法,二叉树在IT领域应用是非常广泛的,它不仅在游戏开发中,在当前比较火的人工智能上也得到了广泛的应用。作为使用者,首先要清楚二叉树的特性:它是n(n≥0)个结点的有限集;它的孩子节点做多是2个;它的遍历有先序,中序,后序;它的存储结构分为线性和链式存储等等;还有一种是最优二叉树也称为转载 2017-01-03 11:23:55 · 21505 阅读 · 1 评论 -
工厂模式
工厂模式何为工厂模式:定义一个用于创建对象的接口,让子类去决定实例化那一个类,FactoryMethod可以使一个类的实例化延迟到其子类。工厂模式分类工厂模式按其形态分主要分为三类:简单工厂、工厂模式和抽象工厂模式。简单工厂模式简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。顾名思义工厂就是生产东西的,有原料(参数),模子(对象)就能生产出很多个具有相同功能的对象啦。转载 2016-12-27 09:33:04 · 211 阅读 · 0 评论 -
从1亿个ip中找出访问次数最多的IP
问题一: 怎么在海量数据中找出重复次数最多的一个算法思想: 方案1:先做hash,然后求模映射为小文件,求出每个小文件中重复次数最多的一个,并记录重复次数。 然后找出上一步求出的数据中重复次数最多的一个就是所求(如下)。 问题二: 网站日志中记录了用户的IP,找出访问次数最多的IP。转载 2017-01-06 11:38:30 · 4266 阅读 · 0 评论 -
PHP中的AES算法
AES算法加密模式和填充方式有如下一些(可能不完整)算法/模式/填充 16字节加密后数据长度 不满16字节加密后长度AES/CBC/NoPadding 16 不支持AES/CBC/PKCS5Padding 32 16AES/CBC/ISO10126Padding 32 16AES/CFB/NoPadding 16 原始数据长度AES/CFB/PKCS5Padding 32 16AES/CF转载 2017-06-29 16:50:47 · 1525 阅读 · 0 评论 -
PHP RSA2 签名算法
什么是RSA2?RSA2是在原来SHA1WithRSA签名算法的基础上,新增了支持SHA256WithRSA的签名算法。该算法在摘要算法上比SHA1WithRSA有更强的安全能力。SHA1WithRSA的签名算法会继续提供支持,但为了您的应用安全,强烈建议使用SHA256WithRSA的签名算法。开发平台算法名称标准签名算法名称备注转载 2017-06-29 16:28:08 · 852 阅读 · 0 评论 -
PHP加密算法
1.Discuz authcode /** * $string 明文或密文 * $operation 加密ENCODE或解密DECODE * $key 密钥 * $expiry 密钥有效期 */ function authcode ( $string , $operation = 'DECODE' , $key = '' , $expiry = 0 ) { //转载 2017-06-29 16:20:59 · 487 阅读 · 0 评论 -
php数据结构算法
常用算法数学ax=N 可以记做 x=logaN时间复杂度时间复杂度是指执行算法所需要的计算工作量1.一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n))转载 2017-06-29 16:16:30 · 372 阅读 · 0 评论 -
php mcrypt加密实例
php//当前mcrypt支持的加密模型$modes_list = mcrypt_list_modes();// Array// (// [0] => cbc// [1] => cfb// [2] => ctr// [3] => ecb// [4] => ncfb// [5] =>转载 2017-06-29 16:52:56 · 267 阅读 · 0 评论 -
PHP加密扩展库Mcrypt安装和实例
mcrypt简单介绍PHP程序员们在编写代码程序时,除了要保证代码的高性能之外,还有一点是非常重要的,那就是程序的安全性保障。PHP除了自带的几种加密函数外,还有功能更全面的PHP加密扩展库Mcrypt和Mhash。其中,Mcrypt扩展库可以实现加密解密功能,就是既能将明文加密,也可以密文还原。mcrypt 是 php 里面重要的加密支持扩展库,linux环境下:该库在默认情况下不开转载 2017-06-29 16:54:10 · 1138 阅读 · 0 评论 -
PHP实现四种基本排序算法
前提:分别用冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中的值按照从小到大的顺序进行排序。 $arr(1,43,54,62,21,66,32,78,36,76,39); 1. 冒泡排序思路分析:在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即,每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它转载 2016-12-13 08:24:29 · 215 阅读 · 0 评论 -
如何用PHP实现插入排序?
插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据。算法描述:⒈ 从第一个元素开始,该元素可以认为已经被排序⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置⒋ 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置⒌ 将新元素插入到下一位置中⒍ 重复步骤2转载 2016-12-13 08:23:32 · 297 阅读 · 0 评论 -
用php实现选择排序的解决方法
1,定义:选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。参考代码:复制代码 代码如下: //选择排序(Selection sort)是一种简单直观的排序算法。转载 2016-12-13 08:22:14 · 304 阅读 · 0 评论 -
十大编程算法
算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比 较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构 上很有效率地被实现出来。 快速排序使用分治法(Divide a转载 2016-11-10 14:13:42 · 201 阅读 · 0 评论 -
哈希算法
哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上是不可能的,所以数据的哈希值可以检验数据的完整性。一般用于快速查找和加密算法。[1] 中文名 哈希算法 外文名 Hash别转载 2016-11-10 14:19:36 · 595 阅读 · 0 评论 -
从头到尾彻底解析Hash表算法
第一部分:Top K 算法详解 问题描述(百度面试题): 搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一个查询串的重复度越高,说明查询它的用户越多,也就是越热门。),请你统计最热门的10个查询串,要求使用的内存不能超过1G。转载 2016-11-10 14:21:18 · 3594 阅读 · 0 评论 -
一致性哈希
一致性哈希算法在1997年由麻省理工学院提出,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应用。中文名一致性哈希时 间1997年地 区麻省理工学院哈希算法一致性哈希提出了在动态变化的Cache环境中,哈希算法应该转载 2016-11-10 14:32:22 · 288 阅读 · 0 评论 -
一致性hash算法释义
一致性Hash算法背景一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应用。 但现在一致性hash算法在分布式系统中也得到了广泛应用,研究过memcached缓存数据库的人转载 2016-11-10 14:35:32 · 229 阅读 · 0 评论 -
Nginx的负载均衡 - 一致性哈希 (Consistent Hash)
算法介绍 当后端是缓存服务器时,经常使用一致性哈希算法来进行负载均衡。使用一致性哈希的好处在于,增减集群的缓存服务器时,只有少量的缓存会失效,回源量较小。在nginx+ats / haproxy+squid等CDN架构中,nginx/haproxy所使用的负载均衡算法便是一致性哈希。 我们举个例子来说明一致性哈希的好处。假设后端集群包含三台缓存服务器,A、B、C。请转载 2016-11-10 14:42:14 · 1378 阅读 · 0 评论 -
memcache的一致性hash算法使用
一、概述 1、我们的memcache客户端(这里我看的spymemcache的源码),使用了一致性hash算法ketama进行数据存储节点的选择。与常规的hash算法思路不同,只是对我们要存储数据的key进行hash计算,分配到不同节点存储。一致性hash算法是对我们要存储数据的服务器进行hash计算,进而确认每个key的存储位置。 2、常规hash算法的应用以及其弊端 最转载 2016-11-10 14:44:13 · 283 阅读 · 0 评论 -
php 经典的算法题你懂的
有5个人偷了一堆苹果,准备在第二天分赃。晚上,有一人遛出来,把所有菜果分成5份,但是多了一个,顺手把这个扔给树上的猴了,自己先拿1/5藏了。没想到其他四人也都是这么想的,都如第一个人一样分成5份把多的那一个扔给了猴,偷走了1/5。第二天,大家分赃,也是分成5份多一个扔给猴了。最后一人分了一份。问:共有多少苹果?for ($i = 1; ; $i++){ if ($i%5 ==转载 2016-12-13 08:00:25 · 367 阅读 · 0 评论 -
PHP实现二分查找(递归与非递归)
binarySearch二分查找采用的方法比较容易理解,以数组为例,先取数组中间的值floor((low+top)/2),然后通过与所需查找的数字进行比较,若比中间值大,则将首值替换为中间位置下一个位置,继续第一步的操作;若比中间值小,则将尾值替换为中间位置上一个位置,继续第一步操作重复第二步操作直至找出目标数字 比如从1,3,9,23,54 中查找数字23转载 2016-12-13 08:19:02 · 334 阅读 · 0 评论 -
PHP 快速排序算法详解
其实快速排序之所以称之快速,就是因为,冒泡排序是每次对比只交换相邻的两个值的位置,这样每个值要移动到它最终的排序结果中所对应的位置,可能需要很多次位置的变化。但是快速排序可在一次划分中,就确定你选定的那个对比值在最终排序好的队列中的位置。概念这里借用百度百科的一张图来,非常形象:快速排序算法是对冒泡算法的一个优化。他的思想是先对数组进行分割, 把大的元素数值转载 2016-12-13 08:20:30 · 466 阅读 · 0 评论 -
PHP mcrypt启用、加密以及解密过程
Mcrypt扩展库可以实现加密解密功能,就是既能将明文加密,也可以密文还原。1.安装PHP加密扩展Mcrypt要使用该扩展,必须首先安装mcrypt标准类库,注意的是mcrypt软件依赖libmcrypt和mhash两个库。2.PHP加密扩展库Mcrypt的算法和加密模式Mcrypt库支持20多种加密算法和8种加密模式,具体可以通过函数mcrypt_list_alg转载 2017-06-29 17:05:39 · 1199 阅读 · 0 评论