<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[nexttrial的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/nexttrial</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; nexttrial]]></copyright><item><title><![CDATA[Linux下mysql数据文件转移攻略]]></title><link>https://blog.csdn.net/nexttrial/article/details/126783767</link><guid>https://blog.csdn.net/nexttrial/article/details/126783767</guid><author>nexttrial</author><pubDate>Fri, 09 Sep 2022 15:42:14 +0800</pubDate><description><![CDATA[随着业务的持续运行，mysql的数据文件越来越大，磁盘空间告急。用cp -a, 可以保留原目录的上下文信息，如权限等设置。需要将mysql的数据文件转移到另一块更大的有磁盘上。4.1 安装修改工具semanage。4.3 修改后的策略可通过命令。4.2 执行如下两条修改指令。]]></description><category></category></item><item><title><![CDATA[wkhtmltopdf乱码解决方案]]></title><link>https://blog.csdn.net/nexttrial/article/details/125504683</link><guid>https://blog.csdn.net/nexttrial/article/details/125504683</guid><author>nexttrial</author><pubDate>Tue, 28 Jun 2022 16:23:47 +0800</pubDate><description><![CDATA[wkhtmltopdf 乱码]]></description><category></category></item><item><title><![CDATA[Windows下配置mysql 8表名大小写敏感]]></title><link>https://blog.csdn.net/nexttrial/article/details/123202075</link><guid>https://blog.csdn.net/nexttrial/article/details/123202075</guid><author>nexttrial</author><pubDate>Tue, 01 Mar 2022 11:40:46 +0800</pubDate><description><![CDATA[前言：对于mysql8而言，如果已经初始化了数据库，则无法直接配置大小写敏感
本教程针对的是已经初始化数据库后的情形，步骤如下：

备份自己的数据库文件，具体方法自行百度，易搜…
清空mysql安装目录下的data文件夹
修改my.ini，在[mysqld]配置区块下添加：lower_case_table_names=2 （请注意是2不是0，网上很多说是配置为0，会报错的…）
在bin目录下打开cmd窗口，执行 mysqld --initialize --console 进行数据库的初始化，初始化完成后，.]]></description><category></category></item><item><title><![CDATA[解决php错误抑制符@抑制的错误仍能被自定义错误函数捕获的问题]]></title><link>https://blog.csdn.net/nexttrial/article/details/123064374</link><guid>https://blog.csdn.net/nexttrial/article/details/123064374</guid><author>nexttrial</author><pubDate>Tue, 22 Feb 2022 11:28:09 +0800</pubDate><description><![CDATA[本段摘录自php manual
PHP supports one error control operator: the at sign (@). When prepended to an expression in PHP, any diagnostic error that might be &gt;generated by that expression will be suppressed.

If a custom error handler function is set with set_e.]]></description><category></category></item><item><title><![CDATA[crontab定时任务--踩坑记录]]></title><link>https://blog.csdn.net/nexttrial/article/details/122882603</link><guid>https://blog.csdn.net/nexttrial/article/details/122882603</guid><author>nexttrial</author><pubDate>Fri, 11 Feb 2022 16:15:39 +0800</pubDate><description><![CDATA[crontab 默认是使用 /bin/sh 来执行命令，然后这个导致了我的脚本程序出了问题
项目中，我的一个php脚本是一直在跑的，然后每天会自动停一次，为了保证脚本的持续运行，我给该脚本加入cron定时任务，设计的是每一分钟执行一次，并在脚本中检测当前运行该脚本的进程数，如果进程数 &gt; 1, 则停止，这样保证了系统中始终只有一个运行这个脚本的进程，进程检测命令如下：
'ps ax|grep '.basename(__FILE__).' |grep -vE "grep|vim|bash" |wc -.]]></description><category></category></item><item><title><![CDATA[ThinkPHP__安装与使用]]></title><link>https://blog.csdn.net/nexttrial/article/details/122634580</link><guid>https://blog.csdn.net/nexttrial/article/details/122634580</guid><author>nexttrial</author><pubDate>Sat, 22 Jan 2022 14:27:21 +0800</pubDate><description><![CDATA[安装（tp 5.1)

composer create-project topthink/think=5.1.36


简单使用
查询学生表的名称

sql

CREATE TABLE `student` (
	`id` INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
	`name` VARCHAR(10) NOT NULL UNIQUE DEFAULT '',
	`gender` TINYINT UNSIGNED NOT NULL DEFAULT 0,
	`email` ]]></description><category></category></item><item><title><![CDATA[redis加入windows服务并自启动]]></title><link>https://blog.csdn.net/nexttrial/article/details/122300549</link><guid>https://blog.csdn.net/nexttrial/article/details/122300549</guid><author>nexttrial</author><pubDate>Tue, 04 Jan 2022 12:47:48 +0800</pubDate><description><![CDATA[打开命令行窗口，进入redis安装目录，执行命令：
.\redis-server.exe --service-install redis.windows-service.conf --loglevel verbose
然后就可以在服务中看到redis了



]]></description><category></category></item><item><title><![CDATA[Laravel容器----依赖注入【部分源码】]]></title><link>https://blog.csdn.net/nexttrial/article/details/121946545</link><guid>https://blog.csdn.net/nexttrial/article/details/121946545</guid><author>nexttrial</author><pubDate>Wed, 15 Dec 2021 10:29:09 +0800</pubDate><description><![CDATA[&lt;?php

class Container
{
	protected $bindings = [];
	// bind用于绑定或者注册服务
	public function bind($abstract, $concrete = null, $shared = false) {
		if (! $concrete instanceof Closure) {
			$concrete = $this-&gt;getClosure($abstract, $concrete);
		}
		$this-&]]></description><category></category></item><item><title><![CDATA[记一次php请求报504的错误]]></title><link>https://blog.csdn.net/nexttrial/article/details/121776302</link><guid>https://blog.csdn.net/nexttrial/article/details/121776302</guid><author>nexttrial</author><pubDate>Tue, 07 Dec 2021 19:12:27 +0800</pubDate><description><![CDATA[nginx: upstream timed out]]></description><category></category></item><item><title><![CDATA[常用正则表达式]]></title><link>https://blog.csdn.net/nexttrial/article/details/120949677</link><guid>https://blog.csdn.net/nexttrial/article/details/120949677</guid><author>nexttrial</author><pubDate>Mon, 25 Oct 2021 12:02:12 +0800</pubDate><description><![CDATA[数字：^[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]+]]></description><category></category></item><item><title><![CDATA[RabbitMQ基础【php版】]]></title><link>https://blog.csdn.net/nexttrial/article/details/120362023</link><guid>https://blog.csdn.net/nexttrial/article/details/120362023</guid><author>nexttrial</author><pubDate>Wed, 22 Sep 2021 10:42:10 +0800</pubDate><description><![CDATA[RabbitMQ基础---php版特点RabbitMQ的基础结构图RabbitMQ的相关概念MessagePublisherExchangeBindingQueueConnectionChannelConsumerVirtual HostBrokerRabbitMQ六种工作模式1. Work queues(工作队列模式)流程示意图特点代码示例注意2. Publish/Subscribe (发布订阅模式）流程示意图特点代码示例3. Routing (路由模式）流程示意图特点代码示例4. Topics（通配符模]]></description><category></category></item><item><title><![CDATA[Go语言解析命令行参数]]></title><link>https://blog.csdn.net/nexttrial/article/details/120197547</link><guid>https://blog.csdn.net/nexttrial/article/details/120197547</guid><author>nexttrial</author><pubDate>Thu, 09 Sep 2021 11:19:14 +0800</pubDate><description><![CDATA[通过 flag 包解析命令行参数
可以使用flag.StringVar   flag.IntVar  flag.String  flag.Int等来解析

package main

import (
	"flag"
	"fmt"
)
func main() {
	// 获取命令行参数
	varMap := getVars()
	// 打印命令行参数
	fmt.Printf("%+v\n", varMap)
	fmt.Printf("name is %s, pass is %s", *varMap["na.]]></description><category></category></item><item><title><![CDATA[统计go程序的时间消耗]]></title><link>https://blog.csdn.net/nexttrial/article/details/120196676</link><guid>https://blog.csdn.net/nexttrial/article/details/120196676</guid><author>nexttrial</author><pubDate>Thu, 09 Sep 2021 10:52:59 +0800</pubDate><description><![CDATA[有时候，我们需要查看程序的执行性能，最常用的方法就是统计 函数 的执行时间。
在 Go 语言 中，统计函数的执行时长，最简单的方法就是在函数开始的时候计算时间，在函数运行结束时，计算函数的总运行时长。

package main

import (
	"fmt"
	"time"
)
func main() {
	f()
	fmt.Println("end")
}
func f() {
	// 当前时间
	start := time.Now()
	// sleep 10 s
	time.Sleep(time.]]></description><category></category></item><item><title><![CDATA[Go语言recover]]></title><link>https://blog.csdn.net/nexttrial/article/details/120195801</link><guid>https://blog.csdn.net/nexttrial/article/details/120195801</guid><author>nexttrial</author><pubDate>Thu, 09 Sep 2021 10:38:14 +0800</pubDate><description><![CDATA[在 Go 语言 中，如果我们的函数或者程序出现了非常严重的问题，或者说我们的程序遇到了 panic 异常，此时我们的程序会终止运行。
但是，我们希望我们程序在发生错误后，我们能够做一些处理，保证程序可以继续运行，那么这时候，我们就需要使用异常恢复，即 recover。Golang 中的 recover 一般都是配套 defer 一起使用。


例：

defer func() {
    if r := recover(); r != nil {
        fmt.Println("Recovere.]]></description><category></category></item><item><title><![CDATA[支付宝风险推送接口接入指南【总结】]]></title><link>https://blog.csdn.net/nexttrial/article/details/119782233</link><guid>https://blog.csdn.net/nexttrial/article/details/119782233</guid><author>nexttrial</author><pubDate>Wed, 18 Aug 2021 16:11:18 +0800</pubDate><description><![CDATA[最近因公司业务，需要接入支付宝风险推送接口。文档有些零散，也踩了一些坑，在此总结一下。

应用场景：

基于强大的数据沉淀和精准的风险识别能力，主动向支付宝合作伙伴提供风险交易推送服务。风险类型主要包括欺诈、赌博、虚假交易，协助合作伙伴识别交易风险，助力合作伙伴业务健康发展。

业务流程：



风险类型：



接入指南：
a. 前期准备工作：


登录（支付宝账号）并注册RiskGo安全合作平台, 平台地址：riskgo.alipay.com
在开放平台创建一个新的应用，并申请上线，上线后在商户平台将.]]></description><category></category></item><item><title><![CDATA[Monolog使用教程【入门案例版】]]></title><link>https://blog.csdn.net/nexttrial/article/details/119740478</link><guid>https://blog.csdn.net/nexttrial/article/details/119740478</guid><author>nexttrial</author><pubDate>Mon, 16 Aug 2021 19:49:55 +0800</pubDate><description><![CDATA[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.]]></description><category></category></item><item><title><![CDATA[接雨水【leetcode高级--php版】]]></title><link>https://blog.csdn.net/nexttrial/article/details/119602462</link><guid>https://blog.csdn.net/nexttrial/article/details/119602462</guid><author>nexttrial</author><pubDate>Wed, 11 Aug 2021 12:37:05 +0800</pubDate><description><![CDATA[在此提供动态规划、单调栈、双指针三种解法：

动态规划：以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..]]></description><category></category></item><item><title><![CDATA[根据身高重建队列【php版】]]></title><link>https://blog.csdn.net/nexttrial/article/details/119577361</link><guid>https://blog.csdn.net/nexttrial/article/details/119577361</guid><author>nexttrial</author><pubDate>Tue, 10 Aug 2021 19:27:12 +0800</pubDate><description><![CDATA[&lt;?php
class 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个空位是留给身高比...]]></description><category></category></item><item><title><![CDATA[php8新特性全览【超详细】]]></title><link>https://blog.csdn.net/nexttrial/article/details/119572399</link><guid>https://blog.csdn.net/nexttrial/article/details/119572399</guid><author>nexttrial</author><pubDate>Tue, 10 Aug 2021 18:01:12 +0800</pubDate><description><![CDATA[题外话：

PHP 8.0 是 PHP 语言的重大更新。
它包含许多新功能和优化，包括命名参数、联合类型、属性、构造函数属性提升、匹配表达式、空安全运算符、JIT，以及类型系统、错误处理和一致性方面的改进。
废话不多说，开车

1.便利的命名参数

也就是说在传参的时候可以跳过可选参数， 格式如 argName:value， 如示例中的“c:44”, 表示将44传给c

function namedArgs($a, $b=1, $c=2, $d=3) {
	var_dump($a);
	var_dump($]]></description><category></category></item><item><title><![CDATA[直线上最多的点数【php版】]]></title><link>https://blog.csdn.net/nexttrial/article/details/119534449</link><guid>https://blog.csdn.net/nexttrial/article/details/119534449</guid><author>nexttrial</author><pubDate>Mon, 09 Aug 2021 11:56:43 +0800</pubDate><description><![CDATA[思路：对于点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...]]></description><category></category></item></channel></rss>