- 博客(24)
- 收藏
- 关注
原创 Ubuntu-18.04安装Docker
1):先更新ubuntu的apt源索引sudo apt update2):安装依赖sudo apt install apt-transport-https ca-certificates curl software-properties-common3):添加Docker官方GPG key,并验证秘钥curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -sudo apt-key fingerp
2021-09-06 18:34:42
238
原创 ubuntu 18.04 安装之后的常用配置
一:设置主机桥联右键我的虚拟机,然后选择设置,网络适配器选择桥联模式,确定保存即可;注意桥联之后打开浏览器看看是否能够连接网络,终端窗口 ping 是否能够ping 通;二:取消每次执行 sudo 命令都要输入密码确认1): 在ubuntu 桌面右键打开终端open terminall ,执行命令:sudo visudo2):找到 ALL=(ALL:ALL) ALL 修改为 ALL=(ALL:ALL) NOPASSWD:ALL 之后,Ctrl+X 执行保存退出;三:ubuntu 修
2021-09-06 18:07:50
392
原创 PHP算法题猴子选大王最简单写法
1、题目:现有 n 只猴子围坐成一个圈,按顺时针方向从1到n编号。然后从1号猴子开始沿顺时针方向从1开始报数,报到m的猴子出局,继续从刚出局猴子的下一个位置重新从1开始报数,报到m猴子出局。如此循环重复,直至剩下一个猴子,它就是大王。2、算法:思路:利用数组队列, m 的直接从数组去除,不是 m 的排到数组队列的最后面,然后删除其在原数组中的位置; function findMonkeyKing($n,$m){ $monkeys = range(1, $n); $i = 0;
2021-08-26 18:23:19
428
原创 Laravel项目部署到线上需要注意的一些问题
Laravel项目部署到线上常见问题1 目录权限问题2 Nginx的配置文件的问题3 PHP扩展要记得开启4 git clone 缺少核心库5 git clone app_key的错误6 出现 The cipher and / or key length are invalid7 Laravel 中 seeder 执行失败准备部署 Laravel 应用到生产环境时,却出现了以下一些问题,你在本地上基本不会出现问题,但是到线上很多问题都出来了。整理了一些问题与bug,希望在你部署laravel项目的时候,如
2021-07-12 12:35:46
794
2
原创 Mysql数据库架构设计与优化
Mysql数据库架构设计与优化1. 数据库命名规范所有数据库对象名称必须使用小写字母并用下划线分隔mysql是大小写敏感的,sql除外。不同的数据库名:Dbname、dbname;不同的表名:Table、table所有数据库对象名称,禁止使用mysql保留关键字比如以下,查询的列表中有from关键字,必须用反单引号转义才行,否则会报错!select id,username,from,age from tb_user;常见的mysql关键字数据库对象的命名要能做到见名知意,并且最好
2021-02-26 13:12:04
271
原创 PHP 接口的安全设计要素:Token,签名,时间戳
后端以api的方式将数据源呈现出来是目前的趋势,可以用在前后端分离的架构中,前后端分离之后,前后端人员能够更加专注于自己板块的东西;也可以用在后端与后端相互调用中。拿到接口后,前台就可以通过链接获取接口提供的数据,而返回的数据一般分为两种情况,xml和json,在这个过程中,服务器并不知道,请求的来源是什么,有可能是别人非法调用我们的接口,获取数据,因此就要使用安全验证。验证原理原理从图中可以看得很清楚,前台想要调用接口,需要使用几个参数生成签名。1 时间戳:当前时间2 随机数:随机生成的随机
2021-02-25 11:11:47
1082
原创 PHP 程序员该如何有效调试Bug
调试的定义:通过一定方法,在程序中找到并减少缺陷的数量,从而使其能正常工作。这里说一些如何调试PHP程序的经验。一、PHP自带的调试功能1、自带的报错功能两个名词:开发环境是开发人员在进行开发和调试的环境,生产环境是最终客户在用的线上环境;开发环境和生产环境要分开设置报错功能。(1)开发环境开发环境需要打开报错,以下是php.ini的配置项及其说明:; This directive sets the error reporting level.; Development Value:
2021-01-27 15:40:15
378
原创 Mysql 分库分表设计
一. 分表场景:对于大型的互联网应用来说,数据库单表的记录行数可能达到千万级甚至是亿级,并且数据库面临着极高的并发访问。采用Master-Slave复制模式的MySQL架构,只能够对数据库的读进行扩展,而对数据库的写入操作还是集中在Master上,并且单个Master挂载的Slave也不可能无限制多,Slave的数量受到Master能力和负载的限制。 因此,需要对数据库的吞吐能力进行进一步的扩展,以满足高并发访问与海量数据存储的需要!对于访问极为频繁且数据量巨大的单表来说,我们首先要做的就是减少单表的记录
2021-01-19 14:31:07
311
原创 PHP 用递归法和引用实现无限极分类
1、递归法实现将原始数组无限循环,按照层级向下找到子类并归类,找到一个删除一个,知道原始数组下最后一组数据function getChildTree($data, $id = 0) { //初始化儿子 $child = []; //循环所有数据找$id的儿子 foreach ($data as $key => $datum) { //找到儿子了 if ($datum['pid']
2020-12-22 14:37:30
223
原创 Nginx 配置 404 错误页面
1:找到 nginx 配置文件 ,由于我的网站自定义了域名,我的配置文件在 /usr/local/nginx/conf/vhost 下 的 www.xxxxxx.com.conf 将 server 区域中的 # error_page 404 /404.html 前的 # 去掉 ; 没有的话则加上 error_page 404 /404.html 或者 error_page 404 = https://www.xxx.com/404.html2: 测试nginx.conf
2020-12-17 19:11:11
395
原创 Linux 下 ThinkPhp 5 执行定时任务详解
在 application/crontab 下新建 command 目录,所有要执行的任务文件都放在这下面,然后在command下新建要执行的任务文件 Task.php,下载地址 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1 首先从查询sql-model 现有值SELECT @@GLOBAL.sql_mode;修改全局S ET @@GLOBAL.sql_mode='NO_AUTO_CREATE
2020-10-15 17:10:06
1873
转载 PhpStorm 快捷键大全
查询快捷键 CTRL+N 查找类 CTRL+SHIFT+N 查找文件,打开工程中的文件(类似于eclipse中的ctrl+shift+R),目的是打开当前工程下任意目录的文件 CTRL+SHIFT+ALT+N 查 找类中的方法或变量(JS) CIRL+B 找变量的来源,跳到变量申明处 CTRL+ALT+B 找所有的子类 CTRL+SHIFT+B 找变量的 类 CTRL+G 定位行,跳转行 CTRL+F 在当前窗口查找文本 CTRL+SHIFT+F 在指定路径查找文本
2020-10-13 10:16:49
371
原创 PHP + Redis 结合定时任务实现消息队列
1、创建入列脚本 rpush.php<?php$redis = new Redis(); $redis->connect('127.0.0.1',6379); $password = '****'; $redis->auth($password); $arr = array('h','e','l','l','o','w','o','r','l','d'); foreach($arr as $k=>$v){ $redis->rpush("myli
2020-10-12 19:29:57
661
转载 vim 编辑常用命令大全
在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是自然数)表示自动缩进从当前行起的下面n行。你可以试试把代码缩进任意打乱再用n==排版,相当于一般IDE里的code format。使用gg=G可对整篇代码进行排版。vim 选择文本,删除,复制,粘贴文本的选择,对于编辑器来说,是很基本的东西,也经常被用到,总结如下:v 从光标当前位置开始,光标所经过的地方会被选中,再按一下v结束。 V 从光标当前行开始,光标经过的行都会被选中,再按一下V结束。 Ctrl + v.
2020-10-12 18:36:09
451
原创 Linux 下定时任务执行 PHP 脚本并传递变量参数
xshell 远程连接上服务器之后,输入编辑命令 crontab -l 可查看 所有的定时任务列表[root@1dae434fd root]# crontab -l在编写定时任务之前我们要先熟悉计划任务的规则语法格式,以行为单位,一行为一个计划:分 时 日 月 周 需要执行的命令执行的命令建议写成绝对路径的格式!取值范围(常识): 分:0~59 时:0~23 日:1~31 月:1~12 周:0~7,0和7表示星期天四个符号:*:表示取值范围中的每一个数字
2020-10-12 17:50:31
936
原创 PHP fwtire 将数据批量写入并生成文件
PHP fwtire 将数据批量写入并生成文件利用 foreach 将有规律的链接写入本地文件<php? function writeFile($arr) { if (!is_array($arr) && !empty($arr)) { return '数组异常'; } $path = "C:/test.txt"; $file = fopen($path, 'w');
2020-08-20 17:36:53
504
转载 PHP 中 超全局变量 $_SERVER 详细介绍
PHP 中 超全局变量 $_SERVER 详细介绍$_SERVER[‘SERVER_ADDR’]//—— 当前运行脚本所在的服务器的 IP 地址。$_SERVER[‘SERVER_NAME’]//——当前运行脚本所在的服务器的主机名。如果脚本运行于虚拟主机中,该名称是由那个虚拟主机所设置的值决定。//Note: 在 Apache 2 里,必须设置 UseCanonicalName = On 和 ServerName。否则该值会由客户端提供,就有可能被伪造。 上下文有安全性要求的环境里,不应
2020-08-20 17:19:06
1645
原创 PHP 冒泡排序法对数组排序,从小到大以及从大到小
PHP 冒泡法对数组排序,从小到大以及从大到小冒泡法排序可简单的理解为,从数组的第一个值开始,循环的与后面的所有值进行对比,选出大(小)的那个,继续与后续的值对比,继续选出大(小)的值一直到两两比较完,并把它放到最后;接下来就是进入循环 ,第二个依次与后面数组值比较,知道字后一个比较完成,则排序完成,接下来是我写好的冒泡排序,代码如下:冒泡排序法(从小到大)<?php // 冒泡排序 从小到大 function arrSort($arr) { $len = co
2020-08-20 15:45:59
3030
1
原创 Redis-cli 报错:-bash: redis-cli: command not found ,设置全局使用redis-cli 命令
Redis-cli 报错:-bash: redis-cli: command not found ,设置全局使用redis-cli 命令相信经常有跟我一样的小白,想要连接redis时,直接使用 redis-cli 却不能正确连接,出现: -bash: redis-cli: command not found 报错的问题,其实这时候我们需要配置可以全局使用 redis-lic 命令,解决办法如下:解决方法找到 redis-cli ,根据自己安装reids 的位置来找,通常在 /usr/local/r
2020-08-20 13:46:47
13503
原创 lnmp 环境下 php-fpm 开启mysql 慢查询日志并记录
lnmp 环境开启sql 慢查询并记录到日志找到 php-fpm.cof一般默认在 /usr/loca/php/etc/php-fpm.conf ,找到并编辑,执行一下命令root@xlkmelac:/# cd /usr/loca/php/etc/php-fpm.confroot@xlkmelac:/# vim php-fpm.conf找到 php-fpm.conf 中 的 request_slowlog_timeout 设置慢查询超时时间,我现在设置的是 10s(可自己设定时间)
2020-08-20 12:49:07
463
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人