- 博客(33)
- 资源 (1)
- 收藏
- 关注
原创 PHP实现先序、中序及后序遍历二叉树操作实例
本文主要介绍了PHP基于非递归算法实现先序、中序及后序遍历二叉树操作,结合实例形式分析了php采用非递归算法对二叉树进行先序、中序及后序遍历操作的原理与具体实现技巧,需要的朋友可以参考下,希望能帮助到大家。概述:二叉树遍历原理如下:针对上图所示二叉树遍历:1. 前序遍历:先遍历根结点,然后遍历左子树,最后遍历右子树。ABDHECFG2.中序遍历:先遍历左子树,然后遍历根结点,最后遍历右子树。HDBEAFCG3.后序遍历:先遍历左子树,然后遍历右子树,最后遍历根节点。HDE.
2021-03-22 20:34:58 220
转载 php函数 array_multisort详解 容易误解
学一个php函数,首先是看手册http://php.net/manual/zh/function.array-multisort.php然后在一些权威网站看更多的说明,比如http://www.w3school.com.cn/php/func_array_multisort.asp对于array_multisort, 网站w3school上面给了详细的说明,如下(只要多读几遍就能理解)定义和用法array_multisort() 函数返回排序数组。您可以输入一个或多个数组。函数先对第一个数
2021-03-20 17:49:48 353 3
原创 PHP面试题,求下属,找所有人的全部下属并输出
有如下数据结构,找出所有人的下属以及下属的下属$arr = [ '小红' => [ '张三' => null, '李四' => [ '东东' => [ '一一' => null, '二二' => [ '小明' => null ] ],
2021-03-19 20:50:37 442
原创 PHP面试题,计算两个文件之间的相对路径方法
看了网友https://blog.csdn.net/fdipzone/article/details/27261751的代码,很精简,而且测试结果也很满意先看题目吧:例如:文件A 的路径是/home/web/lib/img/cache.php文件B的路径是/home/web/api/img/show.php那么,文件A相对于文件B的路径是../../lib/img/cache.php,即文件B 访问 文件A的相对路径。上代码function getRelativ...
2021-03-18 22:50:03 199
原创 PHP面试题狼与兔子,假设一座圆形的山, 山脚分布着N个山洞, 山洞与山洞形成一个圆环,选择其中一个山洞作为起始, 兔子每天前进到l个洞, 狼每天前进到第k个洞 求多少天后, 兔子与狼在一个洞里
题目如下:假设一座圆形的山, 山脚分布着N个山洞, 山洞与山洞形成一个圆环(如图)选择其中一个山洞作为起始, 兔子每天前进到l个洞, 狼每天前进到第k个洞求多少天后, 兔子与狼在一个洞里。请将该函数补充完成:function ($N, $l, $k)分析这种图应该叫约瑟夫环,其实可以简单化,就从0号洞一起开始走,假如狼走的快,兔子走的慢,那狼肯定走在前面,如果狼走几天后绕一圈回来,就得重新开始追兔子(不是重新从起点开始追)即相当于狼在兔子的后面,所以狼此时的洞数就得减去一圈,即.
2021-03-18 19:27:21 447
转载 php-fpm解读-进程管理的三种模式
php-fpm进程管理一共有三种模式:ondemand、static、dynamic,我们可以在同一个fpm的master配置三种模式,看下图1。php-fpm的工作模式和nginx类似,都是一个master,多个worker模型。每个worker都在accept本pool内的监听套接字(linux已不存在惊群现象)。ondemand在php-fpm启动的时候,不会给这个pool启动任何一个worker,是按需启动,当有连接过来才会启动。配置文件(我的配置文件地址为:/usr/lo.
2021-03-18 17:21:33 119
原创 mysql根据group by统计总数横向输出结果
遇到一个面试题,统计每个用户支付成功和失败的订单数,并且失败和成功的结果横向输出,结果如下uid 成功 失败 1 2 1 2 1 1 sql语句如下,用到了sum(if)函数CREATE TABLE `testtable` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_
2021-03-17 19:56:45 659
原创 Mysql中使用SQL删除多字段相同的重复记录
创建一个表 我这里用的是mysql8.0CREATE TABLE `testtable` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT 'aaa', `uid` int DEFAULT NULL, `pay_status` int DEFAULT NULL, PRIMARY KEY (`
2021-03-17 17:32:03 925
转载 MySQL InnoDB MVCC机制吐血总结
谈到MySQL事务,必然离不开InnoDB和MVCC机制,同时,MVCC也是数据库面试中的杀手问题,写这篇总结的目的,就是为了让自己加深映像,这样面试就不会忘记了。在搜索时发现关于MVCC的文章真的是参差不齐(老子真的是零零散散看了三个月都迷迷糊糊),所以这里集合了各家所言之后进行了自我总结,苦苦研究了许久,才得到的比较清晰的认知,这可能也是我目前最有深度的一篇博客了把,希望对我和看到的人都有所帮助,哈哈。MVCC: Multiversion Concurrency Control,翻译为多版本并发控制
2021-03-17 12:19:01 168
转载 如何写一个 Laravel 的 Artisan 命令行工具?
像 Artisan 那样创建文件我们先创建一个命令行文件php artisan make:MakeController 修改继承Command为use Illuminate\Console\GeneratorCommand;<?phpnamespace App\Console\Commands;use Illuminate\Console\GeneratorCommand;class MakeController extends GeneratorCommand{ ...
2021-03-16 20:16:51 91
转载 MySQL如何选择float, double, decimal
前言我们知道在MySQL中有3种类型可以表示实数,分别是float,double和decimal。关于如何合理得使用这三种类型,网上的答案也层出不穷。但是究竟该选择哪一种类型,好像并没有统一的答案,接下来,将通过一个例子来说明什么情况下选择float,什么情况下选择double,什么情况下选择decimal。相信对这个例子的剖析之后,你就会明白什么时候用什么样的类型举个例子假如我们有一张表,用来存储用户的积分,表定义如下:CREATE TABLE`f`( `f1`float(1...
2021-03-15 22:22:37 667
原创 MAC php7.4.13 使用pecl安装扩展报错
最近安装php7.4,安装成功以后用pecl安装扩展报错In file included from /usr/local/Cellar/php@7.4/7.4.13_1/include/php/Zend/zend.h:356:/usr/local/Cellar/php@7.4/7.4.13_1/include/php/Zend/zend_operators.h:523:10: error: 'asm goto' constructs are not supported yet __a...
2021-03-15 20:17:08 433
转载 nginx 配置文件vim 下语法高亮显示
1.下载vi语法高亮配置到 ~/.vim/syntax,如果不存在则创建该目录,cd ~/.vim/syntaxwget http://www.vim.org/scripts/download_script.php?src_id=14376 -O nginx.vim2.增加配置~/.vim/filetype.vim 到最后一行,如果文件不存在则创建,vi ~/.vim/filetype.vimau BufRead,BufNewFile /usr/local/nginx/* set ft=ng
2021-03-14 22:55:09 141
转载 深入浅出JSONP--解决ajax跨域问题
取不到数据! 上周客户新买了服务器,原本在旧的服务器上放着客户的Web主页信息和一个后台程序(asp.net),在客户的主页中有一个动态显示最新消息的处理,这个处理就是通过ajax异步从那个后台程序中取得的。由于又购买了新的服务器,客户想把web主页和那个后台程序分开来,后台程序被部署到了新的服务器上。不过这个项目是我的同事小福同志开发的,也就由他来把程序分开部署,然后进行一些小改动。 "怎么最新消息取不到了,异步处理的url也已经添加上新服务器的地址(http://xxxx.com/.../n
2021-03-14 22:25:59 108
转载 MyISAM与InnoDB的区别
MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良。虽然性能极佳,但却有一个缺点:不支持事务处理(transaction)。不过,在这几年的发展下,MySQL也导入了InnoDB(另一种数据库引擎),以强化参考完整性与并发违规处理机制,后来就逐渐取代MyISAM。InnoDB,是MySQL的数据库引擎之一,为MySQL AB发布binary的标准之一。InnoDB由Innobase O
2021-03-14 20:47:20 63
原创 mac brew卸载老版本mysql 安装mysql8
brew remove mysqlbrew cleanuplaunchctl unload -w ~/Library/LaunchAgents/com.mysql.mysqld.plistrm ~/Library/LaunchAgents/com.mysql.mysqld.plistsudo rm -rf /usr/local/var/mysqlbrew doctor and fix any errorsbrew updatebrew install mysqlunset TMP...
2021-03-14 10:44:16 292
转载 PHP7的异常处理机制,set_error_handler和set_exception_handler方法介绍
https://blog.csdn.net/zhang197093/article/details/75094816
2021-03-13 20:16:47 134
原创 Mac相关小技巧
Mac设置比较友好的且带颜色的命令行提示符PS1 如下:PS1=’[\e]2;\u@\h:\w\a][\e[36;1m]\u@doit:[\e[32;1m]\w[\e[36;1m]> [\e[0m] ‘Mac vscode 请更新includePath错误修复:执行以下命令$gcc -v -E -x c++ -找到如下内容#include “…” search starts here:#include <…> search starts here:/usr/loc
2020-09-08 20:43:59 335
原创 PHP7内存管理
内存管理的意义:内存是系统中重要的基本资源之一,内存的管理是指其分配、使用和回收的管理;保障各个程序内存的正常分配和回收。虽然操作系统以及提供了一套内存管理的函数,但是PHP还是自己实现了一套内存管理方案-PHP内存管理器(Zend Memory Manager简称MM)如下图:PHP7内存管理器示意图从图中可以看出PHP脚本运行所需内存不是直接从系统调用的,而是先通过内存管理器提供的一系列API接口(zend-mm-alloc-small、alloc-large、alloc-huge等,all.
2020-09-08 20:42:55 473
原创 设计模式三-工厂模式
概念工厂模式是我们最常用的实例化对象模式,是用工厂方法代替new操作的一种模式。使用工厂模式的好处是,如果你想要更改所实例化的类名等,则只需更改该工厂方法内容即可,不需逐一寻找代码中具体实例化的地方(new处)修改了。为系统结构提供灵活的动态扩展机制,减少了耦合。根据抽象程度的不同,PHP工厂模式分为三种:简单工厂模式工厂方法模式抽象工厂模式讲解简单工厂模式简单工厂模式又称静态工厂方法模式,之所以可以这么说,是因为简单工厂模式是通过一个静态方法来创建对象的。代码示例:<?ph
2020-09-08 20:41:32 84
原创 设计模式二-观察者模式
单例模式是所有设计模式里第一个先讲的模式,相信所有人对单例已经有了解了,所以直接跳过了单例模式的讲解本文章是结合了《深入PHP面向对象、模式与实践》和 Laravel学员君设计模式讲解 中的内容,说实话,对比起来学习效果真的很好。如果看不懂就抄写代码,抄完了可能就一知半解了,最后再搜索几个设计模式的场景看看就差不多了,反正我是这么搞过来的,效果还不错哈哈。观察者模式问题我们直接从一个代码来看一下,这是一个负责处理用户登录以后的实例:class Login{ private $stat
2020-09-08 20:40:02 85
原创 PHP生命周期
SAPI运行PHP都经过下面几个阶段:模块初始化阶段(module init):这个阶段主要进行php框架、zend引擎的初始化操作。这个阶段一般是在SAPI启动时执行一次,对于FPM而言,就是在fpm的master进行启动时执行的。php加载每个扩展的代码并调用其模块初始化例程(MINIT),进行一些模块所需变量的申请,内存分配等。请求初始化阶段(request init):当一个页面请求发生时,在请求处理前都会经历的一个阶段。对于fpm而言,是在worker进程accept一个请求并读取、解析
2020-09-08 20:38:11 71
原创 PHP奇淫技巧
可变参数的函数//第一种##$param = ['a','b','c'];function test($a,$b,$c){ var_dump($a,$b,$c);}echo "old style:\n";//旧方式test($param[0],$param[1],$param[2]);echo "new style:\n";//可变参数test(...$param);//第二种##function test(...$params){ return array_sum($
2020-09-08 20:37:17 200
原创 Redis主从同步
主从复制概述主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。主从复制的作用主从复制的作用主要包括:数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是
2020-09-08 20:36:20 433
原创 解决Mac升级到10.15.4后nginx和mysql无法启动的问题
昨晚将Mac升级后,nginx和mysql无法启动,提示错误如下:yanghang@doit:~/work/study/php/test> nginx -s reloaddyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib Referenced from: /usr/local/bin/nginx Reason: image not foundAbort trap: 6发现是openssl升级
2020-09-08 20:33:35 347
原创 算法题,输出是父的元素以及其所有下属
今天面试有一道算法题,有一个上级和下属的关系数组如下:$teams = [ '一'=>[ '三'=>null, '四'=>[ '五'=>null, '六'=>[ '七'=>null, '八'=>null ], ] ], '二'=>[ '九
2020-09-08 20:27:56 116
原创 Redis高级数据类型与其应用
一、分布式锁比如一个操作要修改用户的状态,修改状态需要先读出用户的状态,在内存里进行修改,改完了再存回去。如果这样的操作同时进行了,就会出现并发问题,因为读取和保存状态这两个操作不是原子的。(Wiki 解释:所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch 线程切换。)Redis 2.8 版本中作者加入了 set...
2020-03-14 12:56:27 383 1
原创 Mac 休眠启动后无声音修复(转发)
有时候 Mac 从睡眠状态恢复之后没有声音,这是 Mac OS X 系统的一个 Bug。这是因为 Mac OS X 的核心音频守护进程「coreaudiod」出了问题,虽然简单的重启电脑就能解决,但是如果此时开启了很多程序后者有其他情况不想重启电脑的话,可以按照下面的方法解决此问题。操作步骤:1、在 Mac 中打开活动监视器(在 Finder 的「应用程序」中搜索「活动监视器」可以找到)。2...
2020-03-12 19:34:19 662
原创 centos 记录用户登陆
在/etc/profile配置文件的末尾加入以下脚本代码就可以实现,下面脚本是我网上找来的,原作者不知。但原脚本的时间变量有错误,不能记录时间,本人测试发现并检查修正:# userlogin export PROMPT_COMMAND='{ date +"%Y%m%d %H:%M:%S [$(who am i | tr -s [[:blank:]] | cut -d" " -f1,2,5)-
2015-01-28 10:57:46 385
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人