php
文章平均质量分 62
pardon110
这个作者很懒,什么都没留下…
展开
-
php非递归层序化数据库记录
需求从数据库读取到一系列分类记录,如下$arr = array(array('id' => 1, 'pid' => 0, 'name' => '分类1'),array('id' => 2, 'pid' => 0, 'name' => '分类2'),array('id' => 3, 'pid' => 0, 'name' => '分类3'),array('id' => 4, 'pid' => 2, 'name' => '分类2-原创 2020-09-27 13:03:03 · 105 阅读 · 0 评论 -
golang 组合数总和
题面给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例输入:candidates = [2,3,6,7], target = 7,所求解集为:[ [7], [2,2,3]]回溯思想回溯算法实际上一个类似枚举的深度优先搜索尝试过程,主要是在搜索尝试原创 2020-09-09 20:11:28 · 762 阅读 · 0 评论 -
php 已知前中序重构二叉树
已知先序遍历与中序遍历,可以确定重建一颗二叉树,本例用php演示题面输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。(注存在空结点)上图演示了先序遍历 根->左子->右子, 中序遍历 左子->根–>右子分析分治的思想来解决根据先序遍历,可知道根节点就是给定数组的第一个元素pre[.原创 2020-07-30 19:17:25 · 214 阅读 · 0 评论 -
php自定义排序函数
一般而言系统库函数效率高,有时站在巨人的肩膀上也不失为一种解决办法最小数字需求输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。分析全排列组合,选择最小的一个对两个数字依据字符串拼接形式,自定义排序规则实现function PrintMinNumber($numbers){ usort($numbers,function($a,$b){ .原创 2020-07-30 12:23:34 · 716 阅读 · 0 评论 -
顺时针打印矩阵
游戏也能开拓思路题面输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.思路分析常规解法:每轮打印一圈外围内层分方向上,右,下,左外层控制循环次数,但易越界魔方逆时旋转,每次取第一行,即为旋转后的效果,被涂部分即为每次想要的结果每次取完第一行,该行丢弃,将剩下的.原创 2020-07-29 20:24:39 · 108 阅读 · 0 评论 -
golang希尔排序
概述思路 先将整个待排序的记录序列分割成为若干子序列,分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。希尔排序亦称之为增量递减排序,是对插入排序的改进,因此有必要先了解下插入排序。插入排序工作原理 通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。算法主要在于移动有序序列位置,寻找被插入数据在有序数据中的位置点,其golang 与 python 算法如下func insertSort(arr []int) []int {原创 2020-07-16 13:10:11 · 213 阅读 · 0 评论 -
根据二叉搜索树数组建立树结构对象
前言二叉树遍历顺序先序遍历 根->左->右中序遍历 左->根->右后良遍历 左->右->根若将遍历数据当一维数组存储,通常需要中序遍历与 先序或后序两相结合,才能画出一棵完整的二叉树。但遵行【先上后下,从左右至右】的打描方式,组成的层序单个数组,也可画出一颗树,如下所示(空结点用null表示)如上所示,实际层的是一棵完全二叉树,它的存储一维数组为[10,5,15,3,7,13,18,1,null,6]。该数组描述的其实是一个在某序列中寻找6的查找树过原创 2020-07-14 10:45:26 · 577 阅读 · 2 评论 -
一道与 for 相关的字符串面试题
需求分析1.php字符串格式化输出补全2.每组首列自然序列,后续行元素等差20(每组的行数)叠加3.关键 计算组,行首部,及分组列等差元素,使用三个for循环嵌套代码先实现缩小规模,分组为2行3列,15个序列数的货物单号。$str = "";$end = 15;$start = 1;$g_rows = 3;$g_lines = 2;$prefix = "YX-HL-";...原创 2020-03-06 11:19:48 · 152 阅读 · 0 评论 -
PhpSpreadsheet读取excel
PhpSpreadsheet composer require phpoffice/phpspreadsheet支持的格式格式读写Open Document Format/OASIS (.ods)✓✓Office Open XML (.xlsx) Excel 2007 and above✓✓BIFF 8 (.xls) Excel 97 and a...原创 2019-12-10 11:32:39 · 2212 阅读 · 0 评论 -
php匿名类与索引重建
本文主要介绍匿名类与索引重建在json 编码方面的一些小技巧问题将下面源数据结构 json 转为目标 json源 json 数据{ "code": 200, "message": "操作成功", "data": [ { "id": 1, "goods_id": 1, "pro...原创 2019-12-09 19:41:47 · 136 阅读 · 0 评论 -
Callback / Callable 类型
Callback / Callable 类型自 PHP 5.4 起可用 callable 类型指定回调类型 callback回调函数不止可以是简单函数,还可以是对象的方法,包括静态类方法。类型传递PHP是将函数以string形式传递的,可以使用任何内置或用户自定义函数。但除了语言结构 例如:array(),echo,empty(),eval(),exit(),isset()...转载 2019-03-18 00:12:00 · 560 阅读 · 0 评论 -
通过Cookie 实现基于Session 的SSO
缘起简称SSO,在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的其它应用系统应用场景 同一家公司的不同子系统之间的登录认证单点登录实现方式基于cookie凭证适用子系统之间主域名一致,如此这般才能让不同子系统之间共享Cookie通过CAS实现SSO系统该方案适用于所有场景实现思路场景需求不同子系统之间是分离的,域名也不一样,比如主系统是 b...原创 2019-04-14 13:10:46 · 320 阅读 · 0 评论 -
Token
token认证流程用户登录校验,校验成功后就返回Token给客户端客户端收到数据后保存在客户端客户端每次访问API是携带Token到服务端,通常置于header头内服务器端采用filter过滤器校验。校验成功则返回请求数据,校验失败则返回错误码token缺陷token 一般都是 hash/encrypt 的字符串,会额外附加 加密/解密,需要一定性能开销无法作废已颁布的令牌...原创 2019-04-14 12:28:02 · 153 阅读 · 0 评论 -
CAS单点登录
CAS (Central Authentication Service)用户在 CAS 服务端录入用户名和密码之后通过 Ticket 在不同系统间进行认证一个 CAS Server,多个 CAS Client(需要认证的 Web 应用)CAS术语TGT(Ticket Granting ticket)作为认证中心的全局会话CAS Server根据用户名密码生成的一张票,存在CAS...原创 2019-04-14 12:19:42 · 554 阅读 · 1 评论 -
Passport 之API令牌
OAuth 与PassportSession 技术都是结合客户端 Cookie 来实现从后端剥离出去的前端应用无法通过 API 请求从客户端传递 Cookie 及 CSRF Token 到后端即Api请求方式无法通过Session实现用户认证,客户端负责维护应用状态,而服务端维护资源状态前后端分离的API认证用户认证信息存储在后端网站,当前端需要访问认证资源时,通过后端应用...原创 2019-04-13 16:13:28 · 983 阅读 · 0 评论 -
laravel 模型事件概述
监听模型事件通过静态方法在模型类上调用要监听事件对应的静态方法通常在某个服务提供者的 boot 方法中完成静态调用通过模型观察者优点- 订阅者处理模型事件的简化版本,不需要自定义事件类,不需要建立映射关系- 只需要在观察者类中将需要监听的事件定义为同名方法,并在相应方法中编写业务处理代码执行某个模型事件触发,Eloquent 底层去该模型上注册的观察者类中通过反射查找是...原创 2019-04-13 11:43:45 · 386 阅读 · 0 评论 -
数据结构 排序思想
数据结构,问题归约,目标,算子集数学模型准确性,可自动计算,过程与步骤用算法表示,算法描述与算法分析顺序,分支,重复流程结构回溯法,由后至前不停的试探-返回-再试探。比枚举法更先进,它缩小了解空间,也是一种穷举(部分穷举)。最优解,整体的所有解中最恰当的一个。数据类型表达数据本身,数据结构抽象:集合,线性,树形,图线性表 强调有序,即是一个序列。物理实现 链式存储与顺序存储...原创 2019-03-28 23:45:53 · 349 阅读 · 0 评论 -
xdebug详解及在vscode应用
Xdebug的工作流程IDE(比如vscode客户端)中已经集成了一个遵循BGDp的Xdebug插件。当要debug的时候,点击一些IDE的某个按钮,启动这个插件。该插件会启动一个9000的端口监听远程服务器发过来的debug信息。浏览器向Httpd服务器发送一个带有XDEBUG_SESSION_START参数的请求,Httpd收到这个请求之后交给后端的PHP进行处理(下面就忽略Htt...原创 2019-04-07 15:08:51 · 2478 阅读 · 1 评论 -
php关键字static最简分析
static在方法体使用,可以达到java中父类型持有子类型引用的效果class A { public function fa(){ return static :: za(); }}class B extends A { public $name = 'test_b'; public function za(){ ret...原创 2019-03-13 00:07:13 · 88 阅读 · 0 评论 -
laravel小札之Gate与Policy
Gate 和 Policy管理授权逻辑以便控制对资源的访问权限Gate 提供了简单的基于闭包的方式进行授权Policy 和控制器一样,对特定模型或资源上的复杂授权逻辑进行分组GateGate 通常用于与模型或资源无关的权限,如访问管理后台Policy 则用于对指定模型或资源的动作进行授权Gate编排Gate 总是接收用户实例作为第一个参数,亦可以接收相关的 E...原创 2019-04-15 11:54:06 · 368 阅读 · 0 评论 -
redis 原生命令行快速入门
连接查库连接命令 redis-cli 127.0.0.1:6379> 查库命令 info keyspace# Keyspacedb0:keys=9,expires=0,avg_ttl=0db1:keys=7,expires=0,avg_ttl=0db0 示0索引库(默认库,相当于mysql的test库)keys 键数,类似于关系数据库的表,其值为键总数选库...原创 2019-04-20 18:15:42 · 647 阅读 · 0 评论 -
php 绑定vs执行
问题程序中经常遇到这样的问题,A依赖于B,B依赖于C 因此需要解耦,而解耦的关键在于执行控制权与代码定义分离。<?php// 定义与执行class Bim{ public function doSomething() { echo __METHOD__, '|',"\n"; }}class Bar{ private $bim;...原创 2018-04-28 10:36:28 · 130 阅读 · 0 评论 -
pcntl_fork 与 for循环合用
linux脚本后台化方式php task.php &nohup php task.php &fork 和 setsid *nix解决方案php多线程与进程1.使用线程安全版本ZTS2. 安装pecl的 【pthread扩展】额外php多进程需要在安装PHP的时候开启pcntl不要在apache或者fpm环境下使用php多进程进程是程序执行的实例php多进程...原创 2019-09-17 12:00:08 · 927 阅读 · 0 评论 -
php科里化与多值化一
组合将序列函数嵌套调用组成一个新函数,返回一个可调用对象应用场景 多值化一,流水线加工function compose(...$functions){ return array_reduce( $functions, function ($carry, $function) { return function ($x) u...翻译 2019-08-11 12:24:42 · 298 阅读 · 0 评论 -
Yii2 数据操作指引
数据库访问对象(Database Access Objects)Yii 包含了一个建立在 PHP PDO 之上的数据访问层 (DAO)DAO为不同的数据库提供了一套统一的APIActiveRecord 提供了数据库与模型(MVC 中的 M,Model) 的交互QueryBuilder 用于创建动态的查询语句使用 Yii DAO 时,需要处理纯 SQL 语句和 PHP 数组代价 因不...原创 2019-07-22 17:16:40 · 701 阅读 · 0 评论 -
php7.2 在windows上 安装 imagick 扩展
流程类似于安装mysql,imagick是用C++写的,相当于php调用它的程序来操作图像数据。类似于C/S形式,要安装imagick程序本身,然后php通过扩展实现imagick的调用接口,从而达到php使用imagick应用程序的效果。安装imagick在操作系统(以windows)为例上的版本下载php7.2 操作对应的 php-imagick 扩展版本,置于 php 扩展文件夹...原创 2019-07-18 19:57:26 · 2127 阅读 · 0 评论 -
php原生 网页数据提取
需求来源于实验楼挑战赛先匹配课程区域,然后在该区域内匹配子域分析php 流式数据读取 filte_get_contenspreg_match,preg_match_all,str_replace 局部/全局/数组替换 匹配关键 php正则 s修饰符与.组合执行可进行换行匹配为方便,用了sqlite3扩展,连接建表插入保存数据,小巧灵活代码开启sqlite3扩展,建库建表...原创 2019-06-13 23:29:48 · 609 阅读 · 0 评论 -
一个命令开启http服务器
命令python -m http.server# 参数 [-h] [--cgi] [--bind ADDRESS] [--directory DIRECTORY] [port]详解cgi 指定cgi脚本服务器本质将http请求转为python命令行执行映射脚本并返回对应结果以服务器的形式访问python脚本文件py脚本代码文件默认目录在cgi-bin或者htb...原创 2019-05-18 21:48:25 · 2047 阅读 · 0 评论 -
Failed to connect to vagrantcloud-files-production.s3.amazonaws.com port 443
场景使用vagrant添加box,vagrant box add laravel/homestead报如下错误Enter your choice: 3==> box: Adding box 'laravel/homestead' (v7.2.1) for provider: virtualbox box: Downloading: https://vagrantcloud...原创 2019-05-06 10:09:17 · 2119 阅读 · 0 评论 -
"oauth-public.key" permissions are not correct, should be 600 or 660 instead of 666
场景在windows平台下,使用laraval/passport包,报错如下"oauth-public.key" permissions are not correct, should be 600 or 660 instead of 666..解决方案 $privateKey = new CryptKey('file://' . Passport::keyPath('oauth-pr...翻译 2019-04-25 17:04:40 · 969 阅读 · 0 评论 -
syntax error, unexpected '->' (T_OBJECT_OPERATOR)
laravel项目报如下错误ErrorException (E_ERROR)syntax error, unexpected '-&amp;gt;' (T_OBJECT_OPERATOR) (View: D:\laragon323\www\lar57\blog57\resources\views\admin\partials\errors.blade.php) (View: D:\laragon323...原创 2019-03-12 10:05:34 · 5379 阅读 · 0 评论 -
php socket 简记
socket服务端socket资源socket_create(AF_INET, SOCK_STREAM, SOL_TCP) 建立socket资源,确定ip/tcp协议,阻塞函数socket_bind($sock, "127.0.0.1", 8080) 绑定地址及端口socket_listen($sock) 监听socket资源循环接收socket连接4.1....原创 2019-03-11 15:12:03 · 141 阅读 · 0 评论 -
refusing to merge unrelated histories
使用git合并两个不同项目时报如下错$ git pull https://gitee.com/pardon110/Laravel_Vue_GraphQL.git masterFrom https://gitee.com/pardon110/Laravel_Vue_GraphQL * branch master -> FETCH_HEADfatal: re...原创 2018-05-30 14:31:53 · 377 阅读 · 0 评论 -
Class 'Faker\Factory' not found
在用laravel 开发项目时,新建分支填充数据库后报如下错Class 'Faker\Factory' not found检查:命名空间没问题,重新生成自动加载文件,仍然报如上所错 install照旧检查composer.json文件 中dev依赖 发现没有 fzaninotto/faker 组件加上,composer update 重新下载了一下该组件包此时想起,用git建分支时,只锁定了....原创 2018-05-29 17:07:07 · 1690 阅读 · 0 评论 -
composer.lock VS composer.json
composer install 命令 从当前目录读取 composer.json 文件,处理依赖关系,创建composer.lock文件, 并把依赖安装到 vendor 目录下。composer.lock vs composer.json如果当前目录下存在 composer.lock 文件,它会从此文件读取依赖版本,而不是根据 composer.json 文件去获...原创 2018-05-23 15:08:29 · 1284 阅读 · 0 评论 -
Laravel 权限控制 Gate Policy
关于权限本质 针对一段可执行的逻辑单元描述是否开启生产的断言(判断真假)。定义 必定有一用户实例或唯一标识参数,以及与之关联的使用资源。通常使用闭包或函数或方法使用 调用权限逻辑单元句柄,参数 权限操作对象,用户信息。源起最基本的权限控制,三元运算符 ?:。很显然条件判断,后面跳到相应的执行逻辑。laravel的思路是将执行逻辑(生产代码),授权(条件判断逻辑)进行分离。重...原创 2018-06-04 09:17:18 · 2065 阅读 · 0 评论 -
Xdebug 端口之迷 vscdoe 极简配置Xdebug
vscode,sublime, vim,phpstorm 配置xdebug,一般流程1.下载扩展相应版本debug扩展 方法:复制phpinfo()输出的页面信息,粘贴到xdebug 官网的页面指引表单域,提交,得到相关的下载项,下载。2.配置php.ini文件 扩展修改,开启调试配置 默认9000端口与配置mysql,pdo扩展一致3.修改ide工具对应的配置项,包括ide所使用相应的php解...原创 2018-05-16 18:46:14 · 1650 阅读 · 0 评论 -
PSR4 目录映射
PSR4 VS PSR01.在类名中使用下划线没有任何特殊含义。2. 命名空间与文件目录的映射方法有所调整。假如我们有一个命名空间:Foo/classFoo 是顶级命名空间,其存在着用户定义的与目录的映射关系:"Foo/" => "src/"按照PSR0标准,映射后的文件目录是: src/Foo/class.php但是按照PSR4标准,映射后的文件目录就会是: src/class.p...原创 2018-06-03 16:33:21 · 798 阅读 · 0 评论 -
laravel 套件排行 Top 10
1.intervention/image 2.barryvdh/laravel-debugbar 3.barryvdh/laravel-ide-helper 4.maatwebsite/excel 5.jenssegers/agent 6.barryvdh/laravel-cors 7.tym...原创 2018-06-03 11:03:16 · 599 阅读 · 0 评论 -
laravel源码分析之 Macroable mixin
前置知识:Mixin(织入)模式并不是GOF的《设计模式》归纳中的一种,但是在各种语言以及框架都会发现该模式(或者思想)的一些应用。简单来说,Mixin是带有全部实现或者部分实现的接口,其主要作用是更好的代码复用。对比java interface和python protocol,这二者本身是没有任何实现的,都是需要使用者来实现相应的方法。laravel场景:Mixin本身也是一种能力的承诺,但Mi...原创 2018-04-14 09:59:16 · 572 阅读 · 0 评论