
php
Michael·Ren
这个作者很懒,什么都没留下…
展开
-
and和or的优先级
MySQL中and和or的优先级MySQLphpMySQLMySQL中关于and和or的运算,类似与*和+的预算,举例如下-- 这个返回返回全部数据select * from table_a where 1 or 0 and 0;--这个返回空集select * from table_a where 0 or 1 and 0;phpif (1 || 0 && 0) { //会执行}if (0 || 1 && 0) { //不会执行}...原创 2020-08-28 17:22:17 · 1605 阅读 · 0 评论 -
yield生成器
yield生成器背景定义具体实现对于内存的应用对比背景在项目开发中,经常会遇到处理大量数据的情况,所以偶尔会出现内存溢出的情况,例如需要生成10万个递增编码信息,需要的内存往往会很大,本着资源节省的目的,团队中有人提出使用yield进行数据迭代生成,从而减少资源的浪费定义生成器提供了一种更容易的方法来实现简单的对象迭代,相比较定义类实现 Iterator 接口的方式,性能开销和复杂性大大降低。生成器允许你在 foreach 代码块中写代码来迭代一组数据而不需要在内存中创建一个数组, 那会使你的内存原创 2020-07-29 17:00:43 · 469 阅读 · 0 评论 -
PHP接入钉钉机器人报警
PHP接入钉钉机器人报警首先在钉钉群设置里面增加机器人PHP访问首先在钉钉群设置里面增加机器人具体可参考文章:https://ding-doc.dingtalk.com/doc#/serverapi2/krgddiPHP访问如果设置的敏感词,那么发送的消息中必须含有敏感词,才可以成功发送如果设置了验签,那么必须要计算签名才可以发送下面是验签方式的代码<?php$url = 'webhook地址';// 第一步,把timestamp+"\n"+密钥当做签名字符串,使用HmacSHA2原创 2020-06-01 14:16:27 · 1332 阅读 · 0 评论 -
php开发lua-redis脚本踩坑
php开发lua-redis脚本踩坑问题复现查找原因解决方法问题复现在业务开发中,需要反复读取并设置redis数据,为防止出现数据脏读现象,所以把一次操作写成lua脚本去redis中执行,在redis单进程下,使数据保持强一致性,但是后来开发完的脚本在本地可以正常运行,但是在测试环境不行查找原因在反复对比了测试环境与本地环境的区别,以及不停调整lua脚本测试得知,出现的原因是测试环境php与redis插件版本偏低,导致lua脚本脚本中无法执行二维数组测试环境php版本:7.1,redis插件版本:原创 2020-05-11 15:46:27 · 366 阅读 · 0 评论 -
php函数--array_filter
php函数--array_filter定义使用方法注意事项定义数组过滤使用方法array_filter(array[, callback [, flag = 0 ]] );参数描述array必需。需要过滤的数组。callback非必需。过滤数组的回调方法。flag非必需。callback函数需要的参数,ARRAY_FILTER_USE_KEY(0) ...原创 2020-01-08 15:16:45 · 212 阅读 · 0 评论 -
PHP学习指南
PHP学习指南前端后端其他常用数据或网站自己整理学习使用,欢迎大家补充,目前正在完善中。。。前端HTMLCSSjsvuenodejs后端服务器linux熟练使用Linux基本命令及LNMP环境搭建&配置&优化看懂服务器各项监控指标,如CPU负载,IO&内存&磁盘剩余,抓包(top vmstat w ps pidstat ios...原创 2019-11-22 15:57:35 · 296 阅读 · 1 评论 -
PHP--INF
php-INF最近看文章看到个有意思的事情,对于强类型语言,精度对于计算的影响是很大的,所以导致2/0和2.0/0展示的结果不一致,所以好奇,PHP作为弱类型语言,这些有什么区别,实验如下:首先,我使用 2/0 得到了两个报错,显示如下:Warning: Division by zero in E:\project\localhost\test\test.php on line 3IN...原创 2019-05-21 17:35:49 · 2574 阅读 · 0 评论 -
strtotime问题
strtotime问题问题起因原因解决方案转载自风雪之隅问题起因strtotime('-1 month')使用时,发现,当当前时间是3月最后一天的时候,会返回2019-03-03原因strtotime函数的操作方式是,取出当前时间的月份信息,如果当前是2019-03-31,那么会对3进行操作,那么这个时候时间就变成了2019-02-31,但是2月是没有31号的,所以这个时间就变成了201...转载 2019-05-17 09:58:32 · 376 阅读 · 0 评论 -
docker下安装nginx和php
docker下安装nginx和php安装docker我使用的是centos7.0系统,具体安装要求,大家可以去官网上查询sudo yum install -y yum-utils device-mapper-persistent-data lvm2 #安装工具,我安装docker的时候并没有安装,也没出现错误,不知道是不是环境的问题sudo yum-config-manager --add...原创 2019-05-22 18:08:32 · 2438 阅读 · 0 评论 -
算法学习--排序算法--快排
算法学习--排序算法--快排冒泡算法代码实现冒泡算法快速排序是系统中常用的排序方法,也是面试常考题目,快排的本质是利用空间解决时间问题,通过并发运算,解决运算耗时问题。快速排序本身需要比较的次数比冒泡会多,但是其递归的良好应用,使得排序效率极高。具体做法(这里的做法是主要针对我自己的代码,与百度算法有一些区别):从数组中取出关键数据,一般都是取第一个数据将数组中的数据与关键数据进行对比...原创 2019-05-13 17:32:58 · 354 阅读 · 0 评论 -
算法学习--排序算法--选择排序
算法学习--排序算法--选择排序选择排序代码实现选择排序选择排序算法的基本思想时,每次选择出待排序队列中的最小或最大值,放到队列的最左侧,然后依次进行比较,知道所有的数据都被选择完毕代码实现$array = range(0,50,2);shuffle($array);//打乱数组$res = selectSort($array);var_dump($res);die;functio...原创 2019-05-28 15:22:11 · 206 阅读 · 0 评论 -
算法学习--排序算法--插入排序
算法学习--排序算法--插入排序插入排序算法代码实现插入排序算法插入排序(Insertion sort)是一种简单直观且稳定的排序算法。如果有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用...原创 2019-05-28 15:49:13 · 1105 阅读 · 0 评论 -
php对象赋值
php对象赋值对象赋值对象赋值php中,关于对象的赋值,默认使用引用传参的,如下面的代码:Class Test{ public $test;}$object = new Test();$objects = [$object];foreach ($objects as $key => $value) { $value->test = 'test';...原创 2019-06-18 14:36:59 · 4294 阅读 · 2 评论 -
php框架压力测试
php框架压力测试背景前期准备进行测试测试结果结果分析背景因为公司要开发一个高并发的接口,为了节省服务器资源,所以对一些常见的框架进行调研,判断哪一款性能符合要求前期准备安装压力测试工具(我用的是ab)安装框架我这里安装了yii2、ci、lumen5.0、tp5、biny框架进行测试将每个框架都链接本地数据库,打开缓存,进行两轮测试,分别为纯html页面和数据库运算页面压测量...原创 2019-06-24 15:27:00 · 3592 阅读 · 3 评论 -
设计模式--抽象工厂
设计模式–工厂模式之前的文章写了工厂模式的实现,但是当产品类型过多的时候,或者有产品系的问题的时候,工厂模式就会出现很多并不是并列关系的实现类,所以出现了抽象工厂。定义:抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,接口是负...原创 2019-05-21 15:21:56 · 154 阅读 · 0 评论 -
设计模式--工厂模式
设计模式–工厂模式简单工厂简单图示如下:定义:工厂模式(Factory Pattern)是最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。PHP代码实现interface Car{ public function made();}...原创 2019-05-21 14:57:28 · 138 阅读 · 0 评论 -
foreach中使用引用传参造成的错误
foreach中使用引用传参造成的错误背景发现问题原理分析解决方案背景同事写的代码,上传数据的时候,总是会最后一条数据被上一条数据覆盖掉,导致倒数第二条数据出现两次,最后一条数据丢失发现问题经排查,是对同一数据进行多次foreach时,有时用的引用传参,有时没有用引用传参造成的,复现问题如下:$test_array = array( 'one' => '小明', '...原创 2019-05-08 15:58:19 · 1153 阅读 · 0 评论 -
yii框架实现phpexcel导入导出
yii框架实现phpexcel导入导出首先进行phpexcel安装网上有很多扩展安装,这里就不介绍了,可以通过composer安装,也可以手动下载引入,这里需要注意的是composer和手动下载在引用类时不太一样,composer安装的直接用根命名空间即可"/PHPExcel",手动安装需按照自己定义的引用。一.文件导入html代码php代码insert=array(原创 2018-01-08 13:54:57 · 2064 阅读 · 1 评论 -
php生成excel的三种方式
php生成excel的三种方式一、用原生代码生成csv格式的文件生成csv格式比较简单,这里主要是记住格式问题,单元格之间用‘,’隔开,行于行之间用\n隔开csv生成文件,简单快捷,对内存占用很低,适合生成大量数据的文件,确定是不能设置单元格格式,在生成头部为0的全数字字符串时需要特殊处理一下,而且格式后期电脑维护比较麻烦。$csv_header = ['班级','学号','姓名'...原创 2018-02-27 20:49:09 · 9858 阅读 · 0 评论 -
php输出中文乱码问题
解决php输出中文乱码问题php页面输出乱码方法一设置php.ini字符集,修改【default_charset = "UTF-8"】方法二在php文件开头设置默认字符集header("Content-Type: text/html;charset=utf-8");html页面输出乱码设置html页面字符集<meta http-equi...原创 2018-04-08 16:48:39 · 1558 阅读 · 0 评论 -
Yii1.0框架加载phpexcel报错问题
Yii1.0框架加载phpexcel报错问题首先在protected/extensions中下载phpexcel扩展,可以通过composer下载,也可以通过手动下载 然后在需要引用的地方加入如下代码/*静用Yii自身的自动加载方法,使PHPExcel自带的autoload生效*/ Yii::$enableIncludePath=false;/*引入PHPExcel....原创 2018-05-08 20:30:08 · 487 阅读 · 0 评论 -
yii2.0邮件发送问题
yii2.0邮件发送问题首先贴出我发送邮件的源码$mail= Yii::$app->mailer->compose(); $mail->setFrom(['no-reply@dianhua.cn'=>$from]); $mail->setTo($to); if($cc){ $mail->setCc($cc); }$mail->se...原创 2018-09-29 11:53:28 · 1098 阅读 · 1 评论 -
php接收post参数时报错
php接收postman数据时报错Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in...原创 2018-10-25 15:32:20 · 1769 阅读 · 0 评论 -
php函数--array_merge
array_merge在PHP5.6下使用的坑array_merge是常用的数组合并函数,将多个数组合并到第一个数组中去,这里有两点值得注意:array_merge是将第二个参数的数据合并到第一个参数中去,如果有相同的键名,则会覆盖如果第二个参数的键是数字键名,则会重新生成新的索引键名这个特殊的地点主要是第二个,我们的开发中自定义的键名,在PHP5.6环境下使用,如果是纯数字格式的键名...原创 2018-10-31 14:10:20 · 628 阅读 · 0 评论 -
时间戳问题
关于时区引发的bugtime()方法不会受到时区设置的影响,返回的一直是格林威治时间,也就是这个数值始终是一直的但是date函数和strtotime函数,在进行格式化转换时,会将时区的偏移量计算进去,也就是虽然time()返回的是正确的时间戳,但是date后,得到的并不是想要的时间,同理strtotime得到的时间戳也会是加上偏移量的时间戳所以PHP环境中一定要设置时区:修改php.in...原创 2018-11-08 10:16:14 · 780 阅读 · 0 评论 -
windows下安装playsms
因为业务需求,我们需要开发一款集合很多短信接口的平台,时间问题只能找开源项目了,首先找到了playsms,但是playsms是针对linux端的软件,我这里只需要平台,后台进程需要自己开发,所以只需要平台架构,废话不多说,开始部署!项目环境部署这里需要注意的是PHP版本,必须是5.3以上,其次是必要的插件要打开(文档目录:https://help.playsms.org/en/)下载代码文...原创 2019-01-23 18:00:42 · 714 阅读 · 0 评论 -
php系统常量和全局变量
PHP常量和系统常量集合常量名类型用途_FILE_系统常量当前PHP文件的相对路径_LINE_系统常量当前PHP文件中所在的行号_CLASS_系统常量当前类名,只对类起作用DIRECTORY_SEPARATOR系统常量目录分隔符,windows下为\,linux下为/PHP_EOL系统常量换行符PHP_VERSION系统常...原创 2019-01-25 16:05:43 · 892 阅读 · 0 评论 -
php函数--array_fill
php函数--array_fill定义使用方法注意事项定义用给定的键值填充数组。使用方法array_fill(index,number,value);参数描述index必需。规定返回数组的起始索引。number必需。规定填充的元素的数量,其值必须大于 0。value必需。规定用于填充数组的键值。注意事项这里需要注意两点number可以填0...原创 2019-04-03 10:20:28 · 199 阅读 · 0 评论 -
yum安装php7.0
安装PHP的版本为7.0,具体版本可以更改按照系统更新yum源,我的是centos7,所以我运行下面的代码!CentOS/RHEL 7.x:rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpmrpm -Uvh https://mirror.webtatic.com/yum/el7/we...转载 2019-04-15 14:29:24 · 1404 阅读 · 0 评论 -
算法学习--排序算法--冒泡
算法学习--排序算法--冒泡冒泡算法代码实现冒泡算法冒泡算法是常用的排序算法之一,他的主要思想是将数组相邻之间的值进行对比,让最大值(或最小值)浮到每次排序的顶端,当所有的数据都对比过一次之后,排序也就完成了。具体做法:比较相邻的元素。如果第一个比第二个大(或小),就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所...原创 2019-04-24 14:03:48 · 237 阅读 · 0 评论 -
yii框架实现文件上传
yii框架实现文件上传1.首先yii框架下载uploadFile类2.html代码3.js代码var business_license = $('.file').get(0).files[0];var data = new FormData();data.append('business_license',business_license);$.ajax({原创 2018-01-08 13:37:23 · 2102 阅读 · 0 评论