PHP
文章平均质量分 60
xubin.nic
嘿嘿大是大非
展开
-
2020 PHP 面试面经分享,历时三个月拿,最终入手字节,面试经历经验分享
这是一篇迟到的面经。为什么呢?因为我现在已经入职字节快一周了。本应该在提离职后,入职字节前的一段时间内,完成历时差不多 3 个月的面试经历。但是,emem..... 懒嘛 ……^ _ ^。写下这篇文章的目的,一方面是:整理面试知识、经验;另一方是:给同样准备找工作、跳槽的你,自己的一些经验。先自我介绍一下:本人双非、一个普通的二本本科生,大学期间很有幸加入 Topcoder 工作室,工作室有两部分:ACM 算法、项目。加入工作室后,由于对算法不怎么感兴趣,就选择去了项目组。项目组主要学习一些 We.原创 2020-11-07 16:14:36 · 3640 阅读 · 8 评论 -
day01 --- PHP实现 n*n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素
378. 有序矩阵中第K小的元素第一次双百:二分查找思路:1. 从矩阵的左下角开始遍历元素,矩阵中当不大于 mid 的数大于等于 k 时,说明目标值一定在左半边范围内2. 否则在右半边范围内3. 从矩阵左上角最小值,右下角最大值,确定 mid 值代码如下:function kthSmallest($matrix, $k) { $n = count($matrix); $min = $matrix[0][0]; $max = $matrix[$n-1][$原创 2020-10-01 19:19:52 · 691 阅读 · 0 评论 -
PHP 实现对正整数数组元素拼接后值最大
思路:跟普通的排序算法不同的是,排序的规则的调整。需要拼接两个字符串并比较大小。将拼接后的大的结果放到前面。function findTheMax($arr){ $size = count($arr); if ($size <= 1) { return $arr; } $mid = ceil(($size - 1) / 2); $left = array_slice($arr, 0, $mid); $right = a..原创 2020-09-10 21:09:33 · 384 阅读 · 0 评论 -
php 实现链表的排序
leetcode 148: 排序一个无序链表说明:1. 通过快慢指针找到链表的中间位置,low 表示右边链表;2. 左边链表理解起来就比较费事了。左边链表:因为对象赋值是引用拷贝。所以,当 low 变化的时候,head 会记录变化,通过 low->next = null 终止变化,得到左链表。2. 然后再通过有序链表的合并完成排序/** * Definition for a singly-linked list. * class ListNode { * pub.原创 2020-09-01 22:34:39 · 459 阅读 · 0 评论 -
php 实现 2n 个无序的数,n 个奇数,n 个偶数,奇数在奇数位,偶数在偶数位--两种解法
2n 个无序的数,n 个奇数,n 个偶数,实现一个算法:奇数在奇数位,偶数在偶数位这个题,在面试的过程中,面试官提示我可以参考 链表的有环的方法,有环的判断是有两个指针,一个快 fast 指针,一个慢 slow 指针,设置步长相差一个。但是,但是,但是,我没有做出来。。。。下来后,参考了别人的解法:一个数组有2n个元素,其中有n个奇数、n个偶数,数组无序,写一个算法使得奇数位置放置奇数,偶数位置放置偶数。我自己手动实现了一下。代码入下:function revertTheNum($ar.原创 2020-08-28 20:53:31 · 452 阅读 · 0 评论 -
PHP 二叉搜索树的第 K 大
刚做这个题的时候,就一直想着怎么能不遍历整个树,而优化查询时间。最终还是没有实现这个想法。因为递归遍历二叉树,是会遍历所有的节点,无法控制。还有一点就是遍历的时候,如果用 --$k == 0 来作为取数条件的话,是有问题的,因为每次递归都重新传递 $k 值了下面这个代码 空间复杂度为 O(1),先遍历整个树后,拿到有序数组的话,时间复杂度为 O(n)。class Solution { /** * @param TreeNode $root * @param I..原创 2020-08-27 21:56:49 · 203 阅读 · 0 评论 -
PHP 的 laravel 导出 csv 时,在 Windows 的 Micr Office 中出现乱码解决办法总结
背景:一次使用 laravel 的 Excel Facades 时,测试同事发现在他的 Windows Micro Office Excel 中打开是乱码的,这是故事的开始。下面是我使用 Excel 的方法:$exportArr = [ ['1']];$top = ['test'];array_unshift($exportArr, $top);$fileName = 'xx';Excel::create($fileName, function($excel) use.原创 2020-08-20 23:00:52 · 733 阅读 · 0 评论 -
php 实现链表的反转--迭代和递归
1. 递归:思路说明请看 代码注释/** * Definition for a singly-linked list. * class ListNode { * public $val = 0; * public $next = null; * function __construct($val) { $this->val = $val; } * } */class Solution { /** * @param ListNode $h原创 2020-08-17 21:22:26 · 439 阅读 · 0 评论 -
PHP 实现旋转有序数组的查找 target
先贴代码,等有时间了,再来详细整理一下思路class Solution { /** * @param Integer[] $nums * @param Integer $target * @return Integer */ function search($nums, $target) { $low = 0; $size = count($nums); if ($size == 1) {原创 2020-08-12 23:29:22 · 265 阅读 · 0 评论 -
PHP 归并排序和合并两个有序数组
思路:有时间再整理把function dividArr($arr){ $size = count($arr); // 这一步很重要,否则可能死循环 if ($size < 2) { return $arr; } $mid = floor($size / 2); $leftArr = array_slice($arr, 0, $mid); $rightArr = array_slice($arr, $mid); return merge(dividArr($left原创 2020-08-12 12:59:11 · 291 阅读 · 0 评论 -
PHP实现二叉树列遍历 从根结点到叶子结点的遍历并 求和
/** * Definition for a binary tree node. * class TreeNode { * public $val = null; * public $left = null; * public $right = null; * function __construct($value) { $this->val = $value; } * } */class Solution { /** * @pa.原创 2020-08-10 21:25:42 · 428 阅读 · 0 评论 -
PHP实现常见的设计模式--观察者模式
// 事件注册器abstract class EventGenerator{ // 观察者 private $obversor = []; public function attach(Obversor $obversor) { $this->obversor[] = $obversor; } // 事件通知 public function notify() { foreach ($this->obversor as $obversor) { $obversor原创 2020-08-09 18:09:28 · 188 阅读 · 0 评论 -
php-fpm 平滑重启原理
关于PHP平滑启动可以参考 PHP 重启 php-fpm 的几种方法信号SIGINT、SIGTERM、SIGQUIT:退出Fpm,在master收到退出信号后将向所有的 worker 进程发送退出信号,通知 worker 退出,然后 master 退出SIGUSR1: 重新加载日志文件,生产环境中通常会根据时间对日志进行切割,切割后会生成一个新的日志文件,如果进程不重新加载文件,则无法继续写入日志,这时就需要向 master 发送一个 USR1 的信号,告诉 master 重新加载日志文件。.原创 2020-08-08 10:38:22 · 813 阅读 · 0 评论 -
PHP 最大连续子数组 最长回文子串
1. 数组最大连续子数组/** * 最大连续子数组 * **/$arr = [6,-3,-2,7,-17,1,7]; function consistArr($arr) { $tmp = $max = $arr[0]; $i = 1; $size = count($arr); while($i < $size) { if ($tmp > 0) { $tmp += $arr[$i]; } else { $tmp = $arr[$i];原创 2020-08-06 09:59:11 · 360 阅读 · 0 评论 -
mkw, 360大牛全面解读PHP面试资源下载
mkw, 大牛全面解读PHP面试资源下载最近在找工作,同事说上面的这个视频挺不错的。我就搜罗搜罗罗一下。看完之后的总结:这个视频适合高级工程师以下的PHPer 学习,当然无论哪个阶段看下,都会有一些进步和学习。需要资源的可以私信我请大家保密...原创 2020-08-02 23:14:39 · 421 阅读 · 0 评论 -
php 实现快速排序算法 PHP 无序数组求中位数
php 实现快速排序算法:第一种:1. 选取第一个元素为基数,分别从右(high)往左(high--)查找,找到一个比基数小的数,进行位置交换, 直到 low == high,结束一次排序;然后从 左 往右查找,找到一个比基数大的数,进行位置交换,直到 low == high,结束一次排序;最后将基数 放到 low 位置上。2. 此时的 low 值代表一次排序后 基数所在的数组下标位置。3. 通过递归进行 左右子数组排序,直到 low == high代码如下:$arr = [49,原创 2020-07-04 22:34:22 · 875 阅读 · 0 评论 -
刚搭建好centos7 下Nginx服务器 将thinkPHP 项目放到Nginx下出现404Not Found解决办法
出现这个问题首先就是因为Nginx无法识别,当前的URL。即可能的,thinkPHP路由模式URL_model 0 (普通模式)1(pathinfo模式)2(rewrite模式) 3 (兼容模式)默认是pathinfo模式。首先打开Nginx的配置文件/usr/local/nginx/conf/nginx.conf:location ~ \.php { root ...原创 2018-06-20 11:13:46 · 6210 阅读 · 1 评论 -
PHP中使用redis函数正确使用redis,PHP如何使用redis(转载)下载PHP-Redis手册中文
内容摘自:Redis函数在PHP中的使用方法/*1.Connection*/ $redis = new Redis(); $redis->connect('127.0.0.1',6379,1);//短链接,本地host,端口为6379,超过1秒放弃链接 $redis->open('127.0.0.1',6379,1);//短链接(同上) $redis->pconn...原创 2018-06-11 08:20:06 · 4212 阅读 · 2 评论 -
2018--滴滴顺风车PHP实习生面试之二面分享总结(待更)
两次面试都是视频面的。二面面试官先让我做的自我介绍。我就从大一开始简单的介绍了下。1、下面是我的介绍: 从大一开始,我就加入了我们系的Topcoder工作室, 并进入了项目组开始学习PHP基础知识,一直持续到现在。期间在学习的同时,完成了我们工作室网站前后台的建设,然后跟学长接触了小程序商城的开发,后来改版成了现在中玉玉器微商平台包括,后台玉器上传,修改删除,分类,添加品牌,咨讯,广告等功能...原创 2018-06-15 20:47:07 · 1853 阅读 · 1 评论 -
微信小程序--多张图片下载问题--for循环出现 漏下,乱序。最多下载5张图片的问题解决(附带个人开发小程序源码)
微信小程序多图下载,之前肯定对单张图片下载了解了。这里就不再多说。首先,多图下载肯定是用到循环了。那么问题就出在循环这里。在循环里调用单图下载方法。这样就会出现一个问题,就是下载时先遍历完了,然后再依次执行wx.downloadfile 获取到下载的临时文件路径,再使用wx.saveImageToAlbum这个API。如果调试过的话,你就发现这两个api是异步执行的,也就是各执行各的。这样就会...原创 2018-07-09 16:16:56 · 7903 阅读 · 4 评论 -
PHP和Apache是如何通信的?Apache默认的mod_php模式运行
看了Nginx和PHP的通信方式,就特别想了解下,Apache和PHP的通信方式。真的是,只有了解他们的底层运行方式,才更能看出来,Nginx和Apache的区别。PHP作为Apache的一个模块集成到Apache进程(httpd)运行,这种mod_php的运行模式是最常用的,这时PHP的运行跟php-cgi没有任何关系.mod_php 通过嵌入 PHP 解释器到 Apache 进程中,mod_p...原创 2018-06-15 16:16:06 · 3640 阅读 · 0 评论 -
ssl证书安装完后,https访问后下载index文件,HTTP访问正常的。Nginx ssl设置后自动下载根目录的index.php而不是载入
给Nginx安装ssl证书,https访问后,重新自动下载index.php文件。一开始的Nginx的配置文件如下:#user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid ...原创 2018-06-23 10:08:59 · 8694 阅读 · 6 评论 -
Nginx跟PHP实现通信原理图,fastcgi接口监听IP地址和端口号 php-fpm管理fastcgi子进程
通过看这篇博客nginx和php之间是怎样通信的呢,我对Nginx和PHP通信做了个总结,如下图:如果总结的有问题,希望大家留言指出来。那么Nginx是如何跟PHP通信交流的呢?首先Nginx下关于PHP的配置:location ~ \.php${root:/path;fastcgi_pass:127.0.0.1:9000;}通过上面的配置文件,可以看出当请求过来时...原创 2018-06-14 21:50:40 · 2340 阅读 · 0 评论 -
排序算法和查找算法--PHP代码实现方式
由于对这些算法的概念比较抵触,很难理解痛彻。但是我对代码还是很上手的,通过看代码,我就能清晰明了的知道原理和思想。1、归并排序:下面代码可以直接运行。摘抄自:常用的排序算法(四)--归并排序(PHP实现)。其中原文中,理论部分讲解有问题。思路:分治思想。选取中间值,进行分隔。分为左边数组和右边数组。递归的调用该方法,目的在于一直分隔数组,直到当前数组只有一个元素为止。时间复杂...原创 2019-06-27 00:00:22 · 290 阅读 · 0 评论 -
linux centos7 下Nginx服务器实现URL重写去掉index.php方法,跟Apache还是不一样的。
想要的URL :http://localhost/Admin/ 而自己的是http://localhost/index.php/Admin/方法:在nginx配置文件nginx.conf中添加:location / { if ( !e $request_filename ) { rewrite ^/(.*)$ /index.php/$1 last; }}切记:不可以出现两个locatio...原创 2018-06-21 10:53:47 · 1290 阅读 · 0 评论 -
crontab 定时执行命令,参数解释,如何结合PHP artisan执行,crontab -e -l等 分 时 日 月 周 commands
请认真阅读下面文字:crontab命令用于安装、删除或者列出用于驱动cron后台进程的表格。用户把需要执行的命令序列放到crontab文件中以获得执行。 每个用户都可以有自己的crontab文件。/var/spool/cron下的crontab文件不可以直接创建或者直接修改。该crontab文件是通过crontab命令创建的在crontab文件中如何输入需要执行的命令和时间。该文...原创 2018-09-11 14:56:31 · 1205 阅读 · 0 评论 -
阿里云 云数据库 RDS 版 公共请求参数 签名结果串 Signature PHP生成方法,亲测实例可用 PHP签名生成
首先看下阿里的签名机制:签名机制,好吧,太多太乱的。不过慢慢看,还是能看懂。PHP,编写的代码:function getSignature($data = []){ $key = env('AKI', '');//这里是阿里云的accesskeyid 和accesskeysecret $secret = env('AKS', '');//这是请求api 的公共请求参数...原创 2018-09-10 19:26:25 · 2109 阅读 · 0 评论 -
剑指offer---查找链表倒数第K个结点(PHP)
刚看到这个题就以为是和之前做过的一个类似了。之前的一个是:输入链表,按从后到前的顺序输出每个结点的值。本题:以为遍历一下整个链表然后把每个结点的值从信使用array_unshift()函数生成一个从后到前的数组,然后输出第k个元素,就是正确的。然而,这是错误的。首先:结点和结点的值是不一样的。链表是使用指针的,不像数组那样。然后,就是怎么样才能找到倒数第k个结点呢。1:先遍历一遍整原创 2018-01-09 14:36:28 · 233 阅读 · 0 评论 -
es should查询--一个字段多个值的查询情况 相当于mysql中的in的操作,OR 和AND用法
在工作中,ES,遇到了一个字段多个值的查询情况。可以用should 和 terms。其中minimum_should_match 表示最小匹配项数量.可以参考这篇文章:elasticsearch查询api:terms query下面是尝试:在kibana中运行terms:{ "query": { "terms": { "subopt": [ ...原创 2019-08-15 20:27:53 · 9948 阅读 · 0 评论 -
php 解决leetcode 数据流中的第K大元素 php
原题链接:703. 数据流中的第K大元素本题主要可以用到最小堆。刚拿到这个题,有下面俩个思路:1、接受参数,设置类属性,方便add()方法调用。class KthLargest { /** * @param Integer $k * @param Integer[] $nums */ static $nums; ...原创 2019-07-06 10:58:11 · 435 阅读 · 0 评论 -
Using $this when not in object context 静态方法调用非静态属性和方法 出错 解决
Using $this when not in object context----出现这个报错是因为:静态方法内不能使用 $this, 静态属性和方法被创建时,可能还没有任何这个类的实例可以被调用,静态属性不需要实例化就可以直接使用,在类还没有创建时就可以直接使用;原因:由于静态方法在内存中只有一份,无论你调用多少次,都是共用的,而且没有对象的概念,所以不能在静态方法里面使用$thi...原创 2019-03-04 17:26:29 · 5170 阅读 · 1 评论 -
laravel 查询数据库时【分布式主从分离-读取数据使用主库读取数据方法】--写读数据库同步--解决主从数据同步延迟问题
场景:课程批量添加学生,在添加完后需要及时获取新增的学生,并展示出来。问题:1、当添加学生数低于10人时,能够正常显示数据 2、超过10人时,就不显示新增学生信息经过几次复现此问题,发现是主从数据库同步问题。主库新增数据,没有及时同步到从库中。此时解决为,直接读取主库,而拿到最新数据。经过谷歌百度,发现有如下方法可以执行1、由于使用的是 DB facade ...原创 2019-01-04 19:52:49 · 1480 阅读 · 0 评论 -
每周工作总结-记录总结自己遇到问题及学习内容,及时分析,找到不足,让自己不断进步
2018-10-29 2018-11-02 总结: 周一:1、git reset 和 git revert 在使用时区别,避免自己在开发中,未在指定分支开发提交代码,并推到远程,导致再合并分支后,推到远端出现不一致问题。刚开始,出现问题后是使用git push -f 解决,导致其他伙伴开发代码丢失。还有就是本地开发完成推到远端时,没有先拉取远程新的分支内容,同出现本地和远端不一致问题,一...原创 2018-11-01 15:25:38 · 1825 阅读 · 0 评论 -
PHP 底层的运行机制与原理解析(转载)
我的另一篇文章:PHP底层工作原理 两篇结合起来看,会更加好理解。由于本人数据结构方面知识,浅薄,后面的尚未研究关于 hash table ,这有个文章可以学习:HashTable原理和底层实现关于 zval 可以研读这个:入理解PHP7内核之zval PHP说简单,但是要精通也不是一件简单的事。我们除了会使用之外,还得知道它底层的工作原理。PHP是一种适用于web...转载 2018-10-31 16:23:02 · 410 阅读 · 0 评论 -
phpstudy 提示安装VC9 VC14等,MySQL启动失败红色小点点,解决办法。PHP VC版本下载集合
phpStudy启动失败时的解决方法 提示缺vc9运行库php5.3、5.4和apache都是用vc9编译,电脑必须安装vc9运行库才能运行。php5.5、5.6是vc11编译,如用php5.5、5.6必须安装vc11运行库。php7.0、7.1是vc14编译,如用php7.0、7.1必须安装vc14运行库。 vc9-vc14(32+64位)运行库合集(链接在下方) ...原创 2018-09-19 14:49:35 · 2996 阅读 · 2 评论 -
2018 PHP滴滴-顺风车PHP研发实习生面试总结
个人感受: 面试官人挺nice的,中间不会、不理解问题都耐心帮讲解,非常感谢。前面是面试题基础知识点的东西,后面两个人聊了聊其他方面的。总体下来,由于前面的面试题好多自己都没有答对,也没有答到点上去,觉得一点自信心也没有,在好多基础方面都了解的不够,不深。不足方面: PHP面向对象【public protected private 和static abs...原创 2018-06-12 21:45:58 · 2177 阅读 · 1 评论 -
MySQL分表分库之分库的方法以及原因简单明了-适合刚接触
感谢:MySQL分区讲解 分享,仰慕大佬。更多知识,欢迎学习。我的另外一个也是转自他的MySQL分表。一:分区mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可以通过my.cnf中的datadir来查看),一张表主要对应着三个文件,一个是frm存放表结构的,一个是myd存放表数据的,一个是myi存表索引的。如果一张表的数据量太大的话,那么myd,myi就会变...转载 2018-05-29 17:02:32 · 1079 阅读 · 2 评论 -
MySQL分表分库----分表的方法以及原因简单明了-适合刚接触
感谢:分表3种方法 分享,更多问题请访问原网站一,先说一下为什么要分表当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。根据个人经验,mysql执行一个sql的过程如下:1,接收到sql;2,把sql放到排队队列中 ;3,执行sql;4,返回执行结果。在这个执行过程中最花时间在什么地方呢?第一,是排...转载 2018-05-29 16:24:09 · 2686 阅读 · 0 评论 -
2018PHP春招面试--百度一面(电面)总结
重写和重载的区别:详细介绍(构造重载)重载:1、在使用重载时只能通过相同的方法名、不同的参数形式实现。不同的参数类型可以是不同的参数类型,不同的参数个数,不同的参数顺序(参数类型必须不一样); 2、不能通过访问权限、返回类型、抛出的异常进行重载; 3、方法的异常类型和数目不会对重载造成影响;使用__call方法:function __call ($name,原创 2018-02-04 13:57:23 · 2460 阅读 · 3 评论 -
关于微信程序开发---thinkPHP出现 "无法加载模块:Index"
thinkphp分项后,无法加载模块的问题。我这里所说得分项的目录示意图是:Application/Common/Conf/config.php //配置文件写在这里被两个项公用/Home/Controller/CsstestController.class.php / Admin要解决这个问题,只是需要在index.php和admin.php入口文件中都要原创 2018-01-28 11:52:07 · 1493 阅读 · 0 评论