自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(93)
  • 收藏
  • 关注

原创 Linux下mysql数据文件转移攻略

随着业务的持续运行,mysql的数据文件越来越大,磁盘空间告急。用cp -a, 可以保留原目录的上下文信息,如权限等设置。需要将mysql的数据文件转移到另一块更大的有磁盘上。4.1 安装修改工具semanage。4.3 修改后的策略可通过命令。4.2 执行如下两条修改指令。

2022-09-09 15:42:14 1914 1

原创 wkhtmltopdf乱码解决方案

wkhtmltopdf 乱码

2022-06-28 16:23:47 4209

原创 Windows下配置mysql 8表名大小写敏感

前言:对于mysql8而言,如果已经初始化了数据库,则无法直接配置大小写敏感本教程针对的是已经初始化数据库后的情形,步骤如下:备份自己的数据库文件,具体方法自行百度,易搜…清空mysql安装目录下的data文件夹修改my.ini,在[mysqld]配置区块下添加:lower_case_table_names=2 (请注意是2不是0,网上很多说是配置为0,会报错的…)在bin目录下打开cmd窗口,执行 mysqld --initialize --console 进行数据库的初始化,初始化完成后,.

2022-03-01 11:40:46 1985 1

原创 解决php错误抑制符@抑制的错误仍能被自定义错误函数捕获的问题

本段摘录自php manualPHP supports one error control operator: the at sign (@). When prepended to an expression in PHP, any diagnostic error that might be >generated by that expression will be suppressed.If a custom error handler function is set with set_e.

2022-02-22 11:28:09 368 1

原创 crontab定时任务--踩坑记录

crontab 默认是使用 /bin/sh 来执行命令,然后这个导致了我的脚本程序出了问题项目中,我的一个php脚本是一直在跑的,然后每天会自动停一次,为了保证脚本的持续运行,我给该脚本加入cron定时任务,设计的是每一分钟执行一次,并在脚本中检测当前运行该脚本的进程数,如果进程数 > 1, 则停止,这样保证了系统中始终只有一个运行这个脚本的进程,进程检测命令如下:'ps ax|grep '.basename(__FILE__).' |grep -vE "grep|vim|bash" |wc -.

2022-02-11 16:15:39 794

原创 ThinkPHP__安装与使用

安装(tp 5.1)composer create-project topthink/think=5.1.36简单使用查询学生表的名称sqlCREATE TABLE `student` ( `id` INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, `name` VARCHAR(10) NOT NULL UNIQUE DEFAULT '', `gender` TINYINT UNSIGNED NOT NULL DEFAULT 0, `email`

2022-01-22 14:27:21 768

原创 redis加入windows服务并自启动

打开命令行窗口,进入redis安装目录,执行命令:.\redis-server.exe --service-install redis.windows-service.conf --loglevel verbose然后就可以在服务中看到redis了

2022-01-04 12:47:48 693

原创 Laravel容器----依赖注入【部分源码】

<?phpclass Container{ protected $bindings = []; // bind用于绑定或者注册服务 public function bind($abstract, $concrete = null, $shared = false) { if (! $concrete instanceof Closure) { $concrete = $this->getClosure($abstract, $concrete); } $this-&

2021-12-15 10:29:09 380

原创 记一次php请求报504的错误

nginx: upstream timed out

2021-12-07 19:12:27 576

原创 常用正则表达式

数字:^[0-9]*$n位的数字:^\d{n}$至少n位的数字:^\d{n,}$m-n位的数字:^\d{m,n}$零和非零开头的数字:^(0|[1-9][0-9]*)$非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(\.[0-9]{1,2})?$带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})$正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$有两位小数的正实数:^[0-9]+(\.[0-9]{2})?$有1~3位小数的正实数:^[0-9]+

2021-10-25 12:02:12 68

原创 RabbitMQ基础【php版】

RabbitMQ基础---php版特点RabbitMQ的基础结构图RabbitMQ的相关概念MessagePublisherExchangeBindingQueueConnectionChannelConsumerVirtual HostBrokerRabbitMQ六种工作模式1. Work queues(工作队列模式)流程示意图特点代码示例注意2. Publish/Subscribe (发布订阅模式)流程示意图特点代码示例3. Routing (路由模式)流程示意图特点代码示例4. Topics(通配符模

2021-09-22 10:42:10 1051

原创 Go语言解析命令行参数

通过 flag 包解析命令行参数可以使用flag.StringVar flag.IntVar flag.String flag.Int等来解析package mainimport ( "flag" "fmt")func main() { // 获取命令行参数 varMap := getVars() // 打印命令行参数 fmt.Printf("%+v\n", varMap) fmt.Printf("name is %s, pass is %s", *varMap["na.

2021-09-09 11:19:14 401

原创 统计go程序的时间消耗

有时候,我们需要查看程序的执行性能,最常用的方法就是统计 函数 的执行时间。在 Go 语言 中,统计函数的执行时长,最简单的方法就是在函数开始的时候计算时间,在函数运行结束时,计算函数的总运行时长。package mainimport ( "fmt" "time")func main() { f() fmt.Println("end")}func f() { // 当前时间 start := time.Now() // sleep 10 s time.Sleep(time.

2021-09-09 10:52:59 936

转载 Go语言recover

在 Go 语言 中,如果我们的函数或者程序出现了非常严重的问题,或者说我们的程序遇到了 panic 异常,此时我们的程序会终止运行。但是,我们希望我们程序在发生错误后,我们能够做一些处理,保证程序可以继续运行,那么这时候,我们就需要使用异常恢复,即 recover。Golang 中的 recover 一般都是配套 defer 一起使用。例:defer func() { if r := recover(); r != nil { fmt.Println("Recovere.

2021-09-09 10:38:14 3049

原创 支付宝风险推送接口接入指南【总结】

最近因公司业务,需要接入支付宝风险推送接口。文档有些零散,也踩了一些坑,在此总结一下。应用场景:基于强大的数据沉淀和精准的风险识别能力,主动向支付宝合作伙伴提供风险交易推送服务。风险类型主要包括欺诈、赌博、虚假交易,协助合作伙伴识别交易风险,助力合作伙伴业务健康发展。业务流程:风险类型:接入指南:a. 前期准备工作:登录(支付宝账号)并注册RiskGo安全合作平台, 平台地址:riskgo.alipay.com在开放平台创建一个新的应用,并申请上线,上线后在商户平台将.

2021-08-18 16:11:18 1730

原创 Monolog使用教程【入门案例版】

Monolog是PHP记录日志的神器,它真的很强大。在我们的日常工作中,掌握其中的几项,就大体够用了…1. 输出到文件中,并自定义格式 require_once('vendor/autoload.php'); use Monolog\Logger; use Monolog\Formatter\LineFormatter; use Monolog\Handler\StreamHandler; $log = new Logger('debug'); $dateFormat = "Y m j.

2021-08-16 19:49:55 1471 1

原创 接雨水【leetcode高级--php版】

在此提供动态规划、单调栈、双指针三种解法:动态规划:以leftMax[i]表示i及其左边的高度最大值, 以rightMax[i]表示i及其右边的高度最大值,则点i处能接的雨水为 min($leftMax[$i], $rightMax[$i]) - $height[$i]; function trap($height) { $len = count($height); $leftMax = $rightMax = []; $leftMax[0] = $height[0]; $r..

2021-08-11 12:37:05 196

原创 根据身高重建队列【php版】

<?phpclass Solution { /** * Q: [[6,0],[5,0],[4,0],[3,2],[2,2],[1,4]] * S: [[4,0],[5,0],[2,2],[3,2],[1,4],[6,0]] * 解题思路:先将原队列按身高升序排列,相同身高的按前面比自己高的人数降序排列 * 然后我们再将排列好的元素放入到结果数组中,先放入的元素对后放入的元素没有影响, * 故在放元素[x,y]时,只须保证该元素前面有y个空位即可,这y个空位是留给身高比...

2021-08-10 19:27:12 110

原创 php8新特性全览【超详细】

题外话:PHP 8.0 是 PHP 语言的重大更新。它包含许多新功能和优化,包括命名参数、联合类型、属性、构造函数属性提升、匹配表达式、空安全运算符、JIT,以及类型系统、错误处理和一致性方面的改进。废话不多说,开车1.便利的命名参数也就是说在传参的时候可以跳过可选参数, 格式如 argName:value, 如示例中的“c:44”, 表示将44传给cfunction namedArgs($a, $b=1, $c=2, $d=3) { var_dump($a); var_dump($

2021-08-10 18:01:12 4547

原创 直线上最多的点数【php版】

思路:对于点A、B、C,如何确定三点共线呢?首先线段AB、AC的斜率是相同的,为了更好地比较,求出AB的横纵坐标之差dx,dy后,将其按最大公约数化简,然后我们,记一个key为"dx : dy",将其保存在一个map中,对应的value为2(表示该直线上已经有AB两个点了);同样地,我们对AC进行如上处理,如果key相同,则说明ABC在同一条直线上(它们有相同起点A),我们再将value+1;为了不重复计算,我们记同线的点的最大数目为max,我们遍历points,取位置为i的点为起点,0 &l...

2021-08-09 11:56:43 115

原创 【超详细】Docker 配置 nginx、php-fpm、mysql 、phpmyadmin

老是搭环境也太烦了,最近有接触到docker,在此记录一下利用docker搭建lnmp环境的步骤docker的安装很简单,网上教程很多,不赘述运行环境:centos7docker版本docker官网:https://hub.docker.com/在家目录创建两个目录,一个是 nginx/conf.d(用于nginx的配置文件),一个是nginx/www(用于网站相关文件)php-fpm安装1. 拉取php镜像docker pull php:7.4-fpm2. 创建p.

2021-08-06 19:30:07 5885 7

原创 最大数【php版】

原理: 如果xy大于yx, yz 大于 zy ,则xz一定大于zx,即具有传递性<?phpclass Solution { /** * @param Integer[] $nums * @return String */ function largestNumber($nums) { usort($nums, function($x, $y){ $baseX = $baseY = 10; while ($baseX <= $x) { $bas..

2021-08-06 14:51:04 92

原创 实现 Trie (前缀树)【php版】

<?phpclass Trie { private $_children; private $_isEnd; /** * Initialize your data structure here. */ function __construct() { $this->_children = []; $this->_isEnd = false; } /** * Inserts a word into the trie. * @param Strin...

2021-08-06 10:28:52 131

原创 LRU缓存机制【php版】

class LRUCache { private $_capacity; private $_size; private $_hashMap; private $_head; private $_tail; /** * @param Integer $capacity */ function __construct($capacity) { $this->_capacity = $capacity; $this->_size = 0; $this->...

2021-08-05 11:12:36 98

原创 戳气球【php版】

<?phpclass Solution { /** * 方法二: * 动态规划 * @param $nums */ function maxCoinsV2($nums) { $len = count($nums); $vals = new SplFixedArray($len+2); $dp = array_fill(0, $len+2, array_fill(0, $len+2, 0)); $i=1; foreach ($nums as $num) ...

2021-08-04 19:51:20 71

原创 单词拆分 II【php版】

<?phpclass Solution { private $memo = []; private $ans = []; /** * @param String $s * @param String[] $wordDict * @return String[] */ function wordBreak($s, $wordDict) { $dict = array_flip($wordDict); $this->deepSearch($s, 0, $di...

2021-08-04 16:50:23 151

原创 单词拆分【php版】

/** * 采用动态规划 * 记dp[i]表示s的前i个字符组成的字串是否满足题意, * 则 dp[i] = dp[j] & (s[j~i]在字典列表中) 0<=j<i * @param String $s * @param String[] $wordDict * @return Boolean */ function wordBreak($s, $wordDict) { $dictArr = array_flip($wordDict)...

2021-08-03 17:06:02 237

原创 完全平方数【php版】

这是一个完全背包问题,套用模板就好了 /** * 动态规划 * @param Integer $n * @return Integer */ function numSquares($n) { $dp = array_fill(0, $n+1, 0); for($i=1; $i<=$n; $i++) { $min = PHP_INT_MAX; for ($j=1; $j*$j<=$i; $j++) { $min = min($min, $...

2021-08-03 16:15:15 137

原创 最佳买卖股票时机含冷冻期【php版】

/** * 动态规划:记dp0表示前一天持有股票的最大收益、 * dp1表示前一天卖出股票的最大收益 * dp2表示前一天不持有股票的最大收益(不持有股票包括处于前天不持有股票和前天持有但卖出) * * @param Integer[] $prices * @return Integer */ function maxProfit($prices) { // 初始化,对于第一天而言 $dp0 = -$prices[0]; $dp1 = 0; $dp2 =...

2021-08-03 11:35:27 79

原创 乘积最大子数组【php版】

/** * 动态规划:因为乘积的特性,需要维护一个最大值与最小值,记max表示以上一个元素结尾的 * 子数组乘积的最大值, min表示以上一个元素结尾的子数组乘积的最小值。 * 当前元素为负值时,其乘以最小值min后的结果反而比较大,所以在乘之前先交换max与min的值 * @param Integer[] $nums * @return Integer */ function maxProduct($nums) { $max = 1; $min = 1; $a...

2021-08-03 10:38:26 122

原创 寻找两个正序数组的中位数【php版】

<?phpclass Solution { /** * @param Integer[] $nums1 * @param Integer[] $nums2 * @return Float */ function findMedianSortedArrays($nums1, $nums2) { $l1 = count($nums1); $l2 = count($nums2); $l = $l1 + $l2; if ($l % 2 == 1) { $a...

2021-08-02 15:51:49 145

原创 有序矩阵中第K小的元素【php版】

思路:利用小顶堆+ 排序n个有序列表的方法, 先将n个有序列表的第一项加入小顶堆,每次弹出堆顶元素,再将该元素所属列表的下一个元素放入小顶堆中。 function kthSmallest($matrix, $k) { $minHeap = new class() extends SplHeap { protected function compare($value1, $value2) { return $value2[0] - $value1[0]; } }; ...

2021-08-02 11:03:42 68

原创 摆动排序 II【php版】

class Solution { /** * 使用桶排序 * @param Integer[] $nums * @return NULL */ function wiggleSort(&$nums) { // nums中的元素 0<=n<=5000,所以造一个容量为5001的桶 $bucket = array_fill(0, 5001, 0); foreach ($nums as $num) { $bucket[$num]++; } ...

2021-08-02 10:17:16 68

原创 正则表达式匹配【php版】

function isMatch($s, $p) { $sLen = strlen($s); $pLen = strlen($p); $dp = array_fill(0, $sLen+1, array_fill(0, $pLen+1, false)); $isMatch = function ($s, $p, $i, $j) { if ($i==0) { return false; } return $p[$j-1] == '.' || $p[$j-1]...

2021-07-30 15:31:28 142

原创 通配符匹配【php版】

方法1:动态规划 /** * 方法1: 动态规划,令dp[i][j]表示,s[0~i-1] 与 p[0~j-1]是否匹配,对s、p而言,下标从0开始,而dp而言,下标表示第几个字符 * 状态转移方程为: * 1. 当p[j-1]不为"*"时 :当s[i-1] 与 p[j-1]相等 或 p[j-1]是 "?"时, dp[i][j] = dp[i-1][j-1]; * 2. 当p[j-1]为"*"时 : dp[i][j] = dp[i-1][j] || dp[i][j-1] 解析...

2021-07-30 10:27:57 561

原创 删除无效的括号【php版】

代码如下,注释已经很详尽,思路就是,先计算左右括号应该至少删除的数量,然后对于每一个位置的括号而言,可删可不删就有两种情况,递归回溯class Solution { private $ans = []; /** * @param String $s * @return String[] */ function removeInvalidParentheses($s) { $len = strlen($s); // 计算左右括号应该至少删除的数量 $leftRem...

2021-07-29 10:47:51 90

原创 单词搜索 II【php版】

前记: trie数据结构trie数据结构是基于各个序列前缀构造出来的查找树如这样的字符序列[‘oath’、‘dog’、‘dig’、‘dogs’];其构造的trie如下:构造代码如下:class TrieNode { public $children = []; public $word = null; public function __construct() {}}function buildTrie($words) { // root node $root = new .

2021-07-28 11:17:17 94

原创 分割回文串【php版】

class Solution { private $rlt = []; private $ans = []; private $dp = null; /** * 递归回溯+动态规划预处理 * @param String $s * @return String[][] */ function partition($s) { $len = strlen($s); // 使用动态规划预处理$s, 获得所有从i到j字串是否是回文字串的结果数组 $this->dp ...

2021-07-27 15:35:54 104

原创 计算右侧小于当前元素的个数【php版】

方法1: 树状数组动态维护前缀和 (关于什么是树状数组,网上介绍的有很多,这儿不作赘述) /** * 使用树状数组 * @param Integer[] $nums * @return Integer[] */ function countSmaller($nums) { $len = count($nums); if ($len == 0) { return []; } // 将nums中的元素去重再排序 $uniqueArr = []; fo...

2021-07-27 11:40:33 112

原创 矩阵中的最长递增路径【php版】

使用记忆化深度优先搜索<?phpclass Solution { private $dir = [ [0,1], [0,-1], [1,0], [-1,0], ]; // 用于记录已经搜索过的点的最大路径值 private $path = []; private $rCnt; private $cCnt; /** * @param Integer[][] $matrix * @return Integer */ function lo...

2021-07-26 17:03:07 73

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除