![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PHP
抬山
平平无奇程序猿
展开
-
PHP实现常用设计模式之观察者模式
观察者模式定义对象的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新!设计原则在观察者模式中,会改变的是目标对象的状态以及观察者的数目。用这个模式,你可以改变依赖于目标对象状态的对象,却不必改变主题。——找出程序中会变化的方面,然后将其和固定不变的方面相分离!主题和观察者都使用接口:观察者利用主题的接口向主题注册,而主题利用观察者接口通知观察者。这样可以...原创 2018-08-14 12:58:32 · 140 阅读 · 0 评论 -
PHP实现常用设计模式之装饰模式
装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。 日常开发装饰模式具体的应用场景? 比如文章编辑难题:<?php/*文章编辑难题 *///定义一个文章类class Article{ protected $content; public function __construct...原创 2018-08-17 18:29:12 · 185 阅读 · 0 评论 -
PHP实现常用设计模式之责任链模式
责任链模式是一种设计模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。 看下面的案例: 面向过程实现举报功能<!DOCTYPE html><html lang="e...原创 2018-08-20 16:46:45 · 651 阅读 · 0 评论 -
[100天每天一个算法--第9天] PHP实现直接插入排序
直接插入排序(Straight Insertion Sort)是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表。逻辑比较简单,这里博主直接贴代码供大家参考php实现代码如下:<?php/*直接插入排序*/$arr = [2,4,6,3,1,5,7,9,8];print_arr($arr);//排序前insertso...原创 2018-09-18 17:46:31 · 413 阅读 · 0 评论 -
[100天每天一个算法--第12天] PHP实现归并排序算法
摘自百度百科: 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序代码如下:&lt;?php/*归并排序 */function MergeSort(&amp;$arr = array()) { $s...原创 2018-10-02 22:25:15 · 223 阅读 · 0 评论 -
Redis安装教程
因为公司业务需求,需要用到redis,我就在虚拟机上安装了一下进行测试,之前在学校也搞过几次,于是遍干脆把安装过程写篇博客记录下来。我用的是Vmware虚拟机,系统是Centos 7,redis版本是3.29首先还是下载reids1.下载wget http://download.redis.io/releases/redis-3.2.9.tar.gz2.解压tar -zxvf redi...原创 2018-09-28 12:40:10 · 227 阅读 · 0 评论 -
用swoole实现简单IM聊天室demo
写在前面:本博文内容取自 http://www.php.cn/course/658.html 课程内容,课程讲的不深,但作为swoole入门教程是肯定够了,感兴趣的同学可以去学习一下博主最近开始学习swoole,闲来没事就想与大家分享一下这个用swoole+websocket实现的简单聊天室demo开发环境:Centos 7,PHP 版本7.0.32前端index.html页面:&l...原创 2018-10-07 19:23:25 · 9477 阅读 · 2 评论 -
用swoole实现实时弹幕网站demo
最近一直在学swoole就老想着用它做点东西,之前有接触过个一个jquery弹幕插件,于是我便使用这个插件结合swoole做了一个弹幕网站demo。插件github地址:https://github.com/chiruom/jquery.danmu.js使用教程:地址里都有介绍,这里就不一一赘述了官方提供了一个demo,前端页面我就直接在官方demo的基础上加上了websocket,页面效果...原创 2018-10-08 20:29:04 · 1722 阅读 · 0 评论 -
解决Laravel增加redis服务器配置不起作用问题
最近工作中有这么一个需求,需要在创建内容时往redis中存储一条记录,博主在本地虚拟机上搭建了一台redis服务器用来测试,结果出现了这个问题database.php中原本已经有了几台redis服务器,再把我的redis添加进去时使用Redis::connection(‘update_playlist_mid’); 连接失败,但是将我的服务器名称改成已经存在的服务器名称并把这个服务器去除掉之后...原创 2018-10-23 14:48:09 · 2842 阅读 · 0 评论 -
PHP JpGraph类库的介绍以及基本用法
JpGraph是一个面向对象的图形创建库,用于PHP5(&gt; = 5.1)和PHP7.0该库完全用PHP编写,可以在任何PHP脚本中使用(支持CGI / APXS / CLI版本的PHP),现在最新的版本是4.2.6( JpGraph 4.x系列支持PHP5(PHP 5.1.0或更高版本)和PHP 7(PHP 7.0,7.1和7.2))JpGraph能做什么呢?以前用PHP作图时我们是使用...原创 2018-12-12 16:38:37 · 1108 阅读 · 0 评论 -
php openssl扩展学习以及基本使用
https://www.cnblogs.com/baocheng/p/5910448.html先了解一下基本概念:公钥/私钥/签名/验证签名/加密/解密/对称加密/非对称加密公钥与私钥是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分。公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据.当然,公钥和私钥都可以用来...原创 2018-12-07 12:26:53 · 8460 阅读 · 0 评论 -
[100天每天一个算法--第8天] PHP实现双向队列
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。 双向队列呢?顾名思义就是头尾都可以进行插入删除操作的队列 PHP代码实现如下:<?php/** * Class Deque * 使用PHP实现双向队列 */cla...原创 2018-08-19 21:36:51 · 177 阅读 · 0 评论 -
[100天每天一个算法--第5天] 二分查找算法
二分查找又称折半查找,是一种效率比较高的查找算法,但是它也有它的局限,即线性表必须采用顺序存储结构,而且表中元素按关键字有序排 实现原理: 假设表中元素是按升序排列,取表中间位置记录的元素与要查找的元素比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的元素大于查找元素,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录...原创 2018-08-16 22:40:21 · 221 阅读 · 0 评论 -
PHP实现常用设计模式之单例模式
设计模式中的单例模式是一个简单但是会经常用到的设计模式,那怎么理解以及它有什么用呢? PHP以及其他的Java,C++等面向对象编程语言在开发中类肯定是要经常用到的,很多时候对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号)生成器。 如何做到这点呢? ...原创 2018-08-16 13:58:41 · 160 阅读 · 0 评论 -
Windows下安装PHP Redis扩展
作为一名合格的PHP程序员,肯定要能够熟练安装PHP扩展,今天因为工作,项目中使用了Redis,但是我本地的PHP没有安装Redis扩展,所以便动手安装了一下,现在把详细过程写下来。 博主用的是phpStudy2018集成开发环境 使用的php+apache,php版本是php-7.0.12-nts 如果你是自己搭建的开发环境大体步骤一致 首先检查php是否安装有redis扩展: 本地输...原创 2018-08-14 17:05:21 · 257 阅读 · 0 评论 -
[100天每天一个算法--第3天] 冒泡排序
冒泡排序是算法中一个入门算法,比较简单 摘自百度百科 算法描述:重复地走访过要排序的元素列,一次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。 这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气...原创 2018-08-14 18:25:03 · 209 阅读 · 0 评论 -
[100天每天一个算法--第1天] 背包算法
其实PHP程序员需不需要学算法,要不要深挖算法,一直没个定论。博主本人准大四,在找实习的过程中逐渐发现学习算法的重要性,博主以前在学校的工作室老大说过一句话,熟悉算法,可以让你的天花板更高一些,所以便有了这个博客系列,每天一个算法来由简到难逐步提升自己的编程能力。 今天博主想讲一下背包算法.。 由一道题开始,情景如下: 0-1背包问题: n个物品和1个背包,每个物品i对应的重量为...原创 2018-08-12 21:06:04 · 13460 阅读 · 0 评论 -
[100天每天一个算法--第4天] 堆排序(最大堆)
写在前面: 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。 定义:堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。 堆排序利用了大根堆(或小根堆)堆顶记录的关键字最大(或最小)这一...原创 2018-08-15 23:31:35 · 223 阅读 · 0 评论 -
LNMP环境搭建
前言:作为一名PHP程序员lamp集成环境搭建可以说是我们开始工作的第一步,但是即便是老鸟面对lamp环境编译安装也会感到繁琐麻烦,博主之前搭建过几次环境,今天本想干脆写一个总结算了,结果在遇到安装问题查阅资料时发现了这边博文,觉得写的非常不错,所以便转载过来与大家分享,中间可能会插入自己遇到的一些问题及解决方法。 转载链接:https://www.cnblogs.com/wujunt...转载 2018-08-13 20:34:33 · 2404 阅读 · 0 评论 -
[100天每天一个算法--第2天] 快速排序
快速排序(Quicksort)是对冒泡排序的一种改进。 它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。假设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数,当然选中间值也行)作为关键数据,...原创 2018-08-13 20:55:41 · 348 阅读 · 0 评论 -
[100天每天一个算法--第7天] 二维数组中的查找
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路一: 每个数组的长度相同,每一行从左到右递增,每一列从上到下递增,那么我们可以从这入手,设二维数组的高度即一维数组数目为height,每一个一维数组宽度为weight,从二维数组左下角的...原创 2018-08-18 20:39:32 · 121 阅读 · 0 评论 -
PHP实现常用设计模式之策略模式
定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。 是不是很官方,那么举个例子,就拿日常中使用的计算器来解释一下吧。 现在需要开发一个计算器实现加减功能,那么常规的解决方法,就是硬编码(Hard Coding)在一个计算器类中,类中实现加,减两个方法,每一个方法对应一个具体的算法;当然也可以把加减两种方法写到一个方法...原创 2018-08-18 22:52:27 · 135 阅读 · 0 评论 -
php解决Fatal error: Maximum execution time of 1 seconds exceeded问题
今天实习报到研究部门老大给的代码demo,里面有一段代码如下://@todo: 建议增加账户uid验证机制避免失误发送 $param["source"] = self::$_source; $param_str = http_build_query($param); $url = self::$_url_prefix . $url. "?"....原创 2018-08-16 13:09:01 · 2677 阅读 · 0 评论 -
PHP自带ZIP压缩、解压缩类ZipArchiv使用指南
原博文地址 https://www.jb51.net/article/61678.htm原作者 hebedich要使用该PHP扩展类,需要(PHP 5 >= 5.2.0, PECL zip >= 1.1.0),部分方法需要 PHP 5.2.+,且php.ini配置支持zip对于win系统,直接去掉php_zip.dll 扩展的注释,然后重启http服务(IIS或Apache...转载 2019-01-16 16:58:59 · 1102 阅读 · 0 评论