随笔分类 - PHP
摘要:PHP的类是单一继承模式,也就是每个类只能继承一个父类(基类)。 但有时需要引入更多通用(共用)的方法,同时这些方法又不适合集成到基类。 那么这时,就需要使用其他方法来引入这些方法。其中trait,就是方法之一。 trait是PHP5.4之后出现的一种代码复用方法,形式和Class非常相似,同时可以
阅读全文
摘要:首先还是先解释一下什么是回文串:就是从左到右或者从右到左读,都是同样的字符串。比如:上海自来水来自海上,bob等等。 那么什么又是找出最长回文串呢? 例如:字符串abcdefedcfggggggfc,其中efe,defed,cdefedc,gg,ggg,gggg,ggggg,gggggg,fgggg
阅读全文
摘要:RabbitMQ是常见的消息中间件。也许是还是不够了解的缘故,感觉功能还好吧。 讲到队列,大家脑子里第一印象是下边这样的。 P生产者推送消息-->队列-->C消费者取出消息 结构很简单,但是RabbitMQ应该是为了丰富的功能吧,把“队列”拆分了。 分成了:exchange(交换机)和queue(队
阅读全文
摘要:遍历二叉树,这个相对比较复杂。 二叉树的便利,主要有两种,一种是广度优先遍历,一种是深度优先遍历。 什么是广度优先遍历?就是根节点进入,水平一行一行的便利。 什么是深度优先遍历呢?就是根节点进入,然后按照一个固定的规律,一直向下走,一个方向的子树遍历之后再遍历另一个方向的子树。 深度优先遍历,主要有
阅读全文
摘要:二分查找算是一种比较快的查找方法,因为其前提是有序的的存储结构,所以每次查获找定位都可以淘汰当前一半的情况。 代码实现的大致思路是从一个有序(从小到大)数组,找到中间的元素,然后判断要查找的值是否相等,相等则找到,否则判断大小。 查找值小于中间值,则继续从第一个元素到中间值前一个元素,继续使用二分查
阅读全文
摘要:选择排序,非常的直观,也相对简单。 思路如下: 假设,从小到大排序。 首先,第一轮循环,从所有数组中,找出最小的元素,然后将其下标记录下来。 然后,确定不是第一个元素,则和第一个元素进行交换。 接下来,从第二个元素开始,再找出最小的一个元素,记录其下标。再和第二个进行交换。 一直到最后。每一轮循环,
阅读全文
摘要:这个应该是最大众的排序了。也算是简单排序算法中知名度最高的。 冒泡排序的思路是怎么样的呢? 首先就是先比较相邻的两个元素,如果满足条件,就交换,否则不动。 然后是再比较接下来的两个相邻的元素,然后满足条件就交换,否则依然不动。 依次循环操作下去,最终一个元素,会固定在最下边。 举例: 数组有5个元素
阅读全文
摘要:日常的排序算法中,快速排序是其中一种。实现起来相对简单。 假设有一个数组,有若干(N)个元素(数字且无序),需要对其进行从小到大的排序。 快速排序的思路是怎么样的呢? 取一个中间值,然后,用其他数组元素逐一和这个中间值比较,小于中间值的放在一个数组里,大于中间值的放到另一个数组里。 这样就以中间值为
阅读全文
摘要:正常直接使用opendir方法,就可以读到所有的目录和文件 文件可以直接记录下来,目录则需要再进一步获取里边的文件信息 也就是,如果当前读出来是目录,则需要再次调用函数本身(递归),直到没有目录 循环最后是读到没有文件(目录也是文件)结束
阅读全文
摘要:有些项目可能会用到一个IP地址的白名单黑名单之类的验证。 比如,只有IP地址在白名单中,才可以访问该系统。 那么此时,白名单的维护,一般是一个文件,里边是一些IP地址(每行一个IP),当然也有的可能是用数据库记录白名单。 当然,即使放在数据库中记录(方便管理),也可以在后台根据数据库生成IP白名单的
阅读全文
摘要:最近碰到一些情况,把思路重新整理了一下,敲出代码。记下来,以后可以借鉴,进一步优化等。 大致的思路:红包主要分两种,一种是平均分配,一种是随机分配。 1、平均分配 平均分配相对好理解,只要把钱平均分给每一个人就可以了 这里有一个情况,就是钱的总额是固定的,但是分配的人数,不一定可以整除余0,那么剩下
阅读全文