自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Laravel单元测试

简介Laravel 植根于测试,实际上,内置使 PHPUnit 对测试提供支持是开箱即用的,并且phpunit.xml文件已经为应用设置好了。框架还提供了方便的辅助方法允许你对应用进行优雅的测试。默认情况下,tests目录包含了两个子目录:Feature和Unit,分别用于功能测试和单元测试,单元测试专注于小的、相互隔离的代码,实际上,大部分单元测试可能都是聚焦于单个方法。功能测试可用于测试较大区块的代码,包括若干组件之前的交互,甚至一个完整的HTTP请求。单元测试 & 功能测...

2021-05-07 15:55:23 1892

原创 PHP strtotime -1 month 获取上个月月份踩坑

项目中需要循环获取前几个月,但是前几天还好好的,今天突然发现错误,直接上代码(当前日期:2020-12-31)public function testB(){ for ($i=5; $i>=0; $i--) { $month = date('Ym', strtotime(" - $i month")); echo $month . PHP_EOL; }}//输出(当前日期2020-12-31)//202007//202008//202010

2020-12-31 13:07:19 1615

原创 Redis 事务的实现

目录1事务的实现1.1 事务开始1.2 命令入队1.3 事务队列1.4 执行事务2 WATCH 命令的实现2.1 使用 WATCH 命令监视数据库键2.2 监视机制的触发2.3 判断事务是否安全2.4 一个完成的 WATCH 事务执行过程2.5 取消数据库键的监视3 事务的 ACID 性质3.1 原子性3.2 一致性3.3 隔离性3.4 持久性4 重点总结Redis 通过 MULTI、EXEC、WATCH 等命令来实现事务(tran..

2020-09-01 15:57:47 2736

原创 Redis 五种数据类型常用命令及应用场景

Redis 数据库里面的每个键值对(key-value pair)都是由对象(object)组成,其中数据库键总是一个字符串对象,而数据库键的值则可以是字符串对象(string object)、列表对象(list objec)、哈希对象(hash object)、集合对象(set object)、有序集合对象(sorted set object)五种的其中一种。Redis 数据库支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:

2020-08-21 17:09:51 296

原创 Redis 持久化——RDB 与 AOF 优缺点及混合持久化

目录1. RDB 持久化的优缺点2. AOF 持久化的优缺点3. 混合持久化Redis 是一个键值对数据库服务器,服务器中通常包含着任意个非空数据库,而每个非空数据库中有可以包含任意个键值对,为了方便起见,我们将服务器中的非空数据库以及它们的键值对统称数据库状态。Redis 是内存数据库,它将自己的数据库状态储存在内存里,如果不想办法将储存在内存中的数据库状态保存到磁盘里,那么一旦服务器进程退出,服务器中的数据库状态也会消失不见。为了解这个问题,Redis 提供了两种持久化方式——RD.

2020-08-10 17:46:29 2209

原创 Redis 持久化——AOF 详解

Redis 是一个键值对数据库服务器,服务器中通常包含着任意个非空数据库,而每个非空数据库中有可以包含任意个键值对,为了方便起见,我们将服务器中的非空数据库以及它们的键值对统称数据库状态。Redis 是内存数据库,它将自己的数据库状态储存在内存里,如果不想办法将储存在内存中的数据库状态保存到磁盘里,那么一旦服务器进程退出,服务器中的数据库状态也会消失不见。为了解这个问题,Redis 提供了两种持久化方式——RDB(Redis DataBase) 和 AOF(Append Only File),.....

2020-08-10 17:43:48 27187 11

原创 Redis 持久化——RDB 详解

Redis 是一个键值对数据库服务器,服务器中通常包含着任意个非空数据库,而每个非空数据库中有可以包含任意个键值对,为了方便起见,我们将服务器中的非空数据库以及它们的键值对统称数据库状态。Redis 是内存数据库,它将自己的数据库状态储存在内存里,如果不想办法将储存在内存中的数据库状态保存到磁盘里,那么一旦服务器进程退出,服务器中的数据库状态也会消失不见。为了解这个问题,Redis 提供了两种持久化方式——RDB(Redis DataBase) 和 AOF(Append Only File),这可以..

2020-08-10 17:41:19 2088

原创 彻底搞懂 Redis 过期键删除策略

对 Redis 过期键删除策略一直懵懵懂懂、一知半解,今天有时间就整理一下,加深一下自己的印象,同时也希望能帮助其他小伙伴,废话不多说,直接上干货~一 过期删除策略Redis 数据库键的过期时间都保存在过期字典中,根据过期时间判断一个键是否过期,如果一个键过期了,那么它是什么时候会被删除呢?Redis数据库有三种不同的删除策略:定时删除:在设置键的过期时间的同时,创建一个定时器(timer),让定时器在键的过期时间来临时,立即执行对键的删除操作。惰性删除:放任过期键不管,但是每次从键空.

2020-08-05 10:34:02 310

原创 你对PHP抽象类和接口还有疑问吗?

对于面向对象开发,抽象类与接口这两个东西是比较难理解的。也是面试经常问到的一个问题。抽象类在说抽象类 之前,先了解一下抽象方法。抽象方法:没有方法实体的方法即为抽象方法,用abstract来修饰 abstract function abc();抽象类:任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。(抽象类可以没有抽象方法,但是抽象类依然不能被实例化)被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。用abstract来修饰 ab

2020-07-28 16:08:54 112

原创 彻底明白php中cgi、fastcgi和php-cgi、php-fpm及php运行原理

1.CGI最早的Web服务器只处理静态的html文件。随着技术的不断发展,网站越来越复杂,然后出现到动态网站,但是服务并不能直接运行php,asp这个的动态语言文件,然后出现了cgi,cgi只是接口协议。CGI(Common Gateway Interface)全称是“通用网关接口”,它是Web服务器与外部应用程序(CGI程序)之间传递信息的接口标准。通过CGI接口,Web服务器就能够获取客户端提交的信息,并转交给服务器端的CGI程序处理,最后返回结果给客户端。CGI可以用任何一种语言编写,只要这种

2020-07-24 18:29:01 2445 1

原创 你对 linux 定时任务crontab 了解多少

目录一、crond 简介二、定时任务分类2.1 系统任务调度2.2 用户任务调度三、crond服务四、crontab命令参数五、crontab内容格式六、使用注意事项一、crond 简介crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。二.

2020-07-01 18:21:07 400

原创 linux定时任务crontab文件锁flock问题

这几天linux的定时任务不运行,各种找原因,最终是因为文件锁的问题,自己总结一下,也希望能帮助其他小伙伴。如果你的crontab还不熟悉可以参考:linux定时任务crontab下面是我的定时任务:*/1 * * * * flock -n /tmp/timing_pub.lock /data/server/php/bin/php /data/server/www/web/app/script/index.php article timing_pub ZYBL10wh94 >> /

2020-07-01 15:33:14 1418

原创 MySql系列六:MySQL索引详解

一、索引介绍1.1 什么是索引?索引在MySQL中也叫做“键”,是存储引擎用于快速找到记录的一种数据结构,类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,然后直接获取即可。1.2 为什么要有索引?索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要。索引优化应该是对查询性能优化最有效的手段了。索引能够轻易将查询性能提高好几个数量级。1.3 索引的优缺点优点: 极大的提高检索数据的速度,减少IO次数; 创建唯一索引,

2020-06-08 20:08:48 639

原创 MySql系列五:SQL语句 的执行顺序

了解一个sql语句的执行顺序,可以让我们清楚到sql执行时的操作顺序,进而有利于我们更好的优化自己的sql语句,提升程序性能。

2020-06-02 10:04:36 262

原创 MySql系列四:MySQL 基础架构

目录Server层和存储引擎层Server层一、连接器二、查询缓存三、分析器四、优化器五、执行器Server层和存储引擎层为了方便理解,先看一下Mysql的基本架构示意图,可以把 MySQL 拆解成几个零件大致上来说,MySQL 可以分为Server层和存储引擎层。Server 层包括连接器、查询缓存、分析器、优化器、执行器,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图,内置函数(日期,时间,数学和加密函数等)等,还有一个通用的日志模块 ..

2020-06-01 12:19:09 193

原创 MySql系列三:常见存储引擎及区别

MySQL 常见的存储引擎可以使用命令SHOW ENGINES来列出所有的存储引擎可以看到,InnoDB 是 MySQL(5.5.5版本之后) 默认支持的存储引擎,支持事务、行级锁定和外键。MyISAM 存储引擎的特点在5.5.5版本及之前的版本,MyISAM 是 MySQL 的默认存储引擎,MyISAM 并发性比较差,使用的场景比较少,主要特点是不支持事务:ACID 的特性也就不存在了,这一设计是为了性能和效率考虑的; 不支持外键但支持全文索引:如果强行增加外键,MySQL...

2020-05-27 10:51:24 265

原创 MySql系列二:事务四大特性及隔离级别

mysql四大特性:原子性(Atomicity)、一致性(Consistency)、持久性(Durability)、隔离性(Isolation)。原子性(Atomicity)原子性指的就是 MySQL 中的包含事务的操作要么全部成功、要么全部失败回滚,因此事务的操作如果成功就必须要全部应用到数据库,如果操作失败则不能对数据库有任何影响。这里涉及到一个概念,什么是 MySQL 中的事务?事务是一组操作,组成这组操作的各个单元,要不全都成功要不全都失败,这个特性就是事务。在 MySQL 中.

2020-05-24 19:24:15 232

原创 MySql系列一:关系型数据库和非关系型数据库比较

非关系型数据库称为 NoSQL,也就是 Not Only SQL,不仅仅是 SQL。非关系型数据库不需要写一些复杂的 SQL 语句,其内部存储方式是以 key-value 的形式存在,可以把它想象成电话本的形式,每个人名(key)对应电话(value)。常见的非关系型数据库主要有 Hbase、Redis、MongoDB 等。非关系型数据库不需要经过 SQL 的重重解析,所以性能很高;非关系型数据库的可扩展性比较强,数据之间没有耦合性,遇见需要新加字段的需求,就直接增加一个 key-value 键

2020-05-22 16:35:07 822

原创 终于彻底明白了TCP三次握手和四次挥手

目录TCP/IP协议简介TCP报文格式三次握手为什么要三次握手四次挥手为什么要四次挥手为什么最后客户端还要等待 2*MSL的时间呢?如果已经建立了连接, 但是客户端突发故障了怎么办TCP/IP协议简介TCP/IP(Transmission Control Protocol / Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是 TCP和 IP 两个协议,而是指一个由FTP、SMT...

2020-05-22 16:29:44 205

原创 HTTP状态码及描述

HTTP状态码的英文为HTTP Status Code,可以让我很方便的了解到请求的所在状态,今天有时间整理了一下,方便自己查阅。HTTP状态码分类:HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:HTTP状态码分类 分类 描述 1xx 信息,服务器收到请求,需要请求者继续执行操作 2xx 成功,操作被成功接收并处理 3xx 重定向,需要进一步的操作以完成请求 4xx

2020-05-20 16:41:12 1181

原创 地址栏输入url回车到底发生了什么

问:从浏览器输入一个网址敲回车,到看到这个页面,期间发生了什么?面试会经常问到这个问题,作为一名渣渣攻城狮,虽然略懂一二,但是还是抵不住面试官一步步追问,很多细节还是不知道的。其实这个问题很深,这个过程涉及到的东西很多。大致过程如下: 在浏览器中输入一个URL 浏览器查找域名的 IP 地址   浏览器向 web 服务器发送一个 HTTP 请求 服务器的永久重定向响应 浏览器跟踪重定向地址 服务器处理请求 服务器返回一个 HTTP 响应

2020-05-20 15:25:26 552 2

原创 php数组函数

PHP数组函数整理array() 创建数组array_change_key_case(array,case) 把数组中所有键更改为小写或大写。参数描述array必需。规定要使用的数组。case可选。可能的值:CASE_LOWER - 默认值。将数组的键转换为小写字母。CASE_UPPER - 将数组的键转换为大写字母。preserve_key可选。...

2020-05-06 11:04:13 73

转载 消息中间件优缺点

消息中间件的优点:在特殊场景下有其对应的好处,解耦、异步、削峰。1. 解耦场景:A系统发送数据,同步到BCD系统,可以通过几口发送,但是随着业务的拓展,现在E系统也要这个数据怎么办?再去写接口?那现在BCD中某个系统不需要这个数据,又怎么办?如果使用接口那么A系统的代码严重耦合,还要考虑BCD系统有没有处理成功。如果使用MQ这些问题就迎刃而解,A系统产生一条数据,放到MQ中,哪个系统需要...

2020-04-26 16:17:34 884

转载 Mysql批量插入时重复数据问题

之前写的代码批量插入遇到了问题,原因是有重复的数据(主键或唯一索引冲突),所以插入失败。现在总结一下如何解决批量插入数据重复问题。三种方法:insert ingnore into:若没有则插入,若存在则忽略insert into ... on duplicate key update:若没有则正常插入,若存在则更新`replace into:若没有则正常插入,若存在则先删除后插入注意...

2020-04-15 16:31:57 1944

转载 PHP之高并发解决方案

1.流量优化防盗链处理把一些恶意的请求拒之问外。如:现在有A,B两个站,A站 想用 B站 的资源,直接在页面嵌入了一些图片,JS,CSS,本身来说,A站并不关心B站会消耗多少流量,但是对于B站来说,如果我们调用了B站的一些图片,JS或者CSS,都会对它做一个HTTP请求,就会消耗流量和带宽,所以本身对B站来说,会有不好的影响。从另一个角度来说,也侵犯了B站的版权问题,因此在这儿,要做 防盗链...

2020-04-14 20:56:09 1191

原创 linux后台运行脚本

前几天接到一个任务,要运行一个脚本,批量操作数据。首先想到的是定时任务:crontab -e 编辑定时脚本。后来尝试后台运行。现在整理一下:nohup php test.php > out.log 2>&1 &nohup和&的区别**&:**指在后台运行。当在前台运行某个作业时,终端被该作业占据;可以在命令后面加上& 实现后台运行。使用...

2020-01-09 16:31:12 197

转载 ps -ef | grep xxx详解

针对上述内容:UIDPIDPPIDCSTIMETTYTIMECMD拥有者程序ID父级IDCPU系统启动时间登陆者的终端机位置使用掉的CPU时间下达的命令mysql110610Dec21?00:02:37/usr/sbin/mysqldroot5153550274023:43pts/200:00:00grep -...

2019-12-24 15:14:15 1910

转载 linux中的tar命令的使用

一、tar命令概述1. 作用: tar命令是Unix/Linux系统中备份文件(打包/解压)的可靠方法,几乎可以工作于任何环境中,它的使用权限是所有用户。2. 格式: tar [命令] [参数] 文件或目录    示例:    ① tar -czvf test.tgz test; 将当前目录下的tes...

2019-12-19 15:35:24 689

转载 Linux统计文本中某个字符串出现的次数

常用的有如下两种方式:1.VIM用vim打开文件,然后输入::%s/hello//gn统计文本中”hello”字符串出现的次数说明:%s/pattern/string/flags 意思是把pattern替换为string参数说明:% - 指明操作区间,%表示全文本;可以使用1,$或者行区间代替 %s相当于1,$ss – substitute,表示替换g是全局pattern -...

2019-11-01 14:19:36 554

转载 mysql数据类型——字符串char(m)和varchar(m)

char(m)     定长字符串类型 非 Unicode 字符varchar(m)   变长字符串类型 非 Unicode 数据说明:M为最大可存储字节数,汉字占两个字节,通过指定m,来限制存储的最大字符数长度,char(20)和varchar(20)将最多只能存储20个字符,超过的字符将会被截掉。m必须小于该类型允许的最大字符数。一 char(m)类型Char(m) 最大字节数...

2019-10-30 11:53:59 1076

翻译 Mysql中数据类型括号中的数字代表的含义

我们平时用sql语句建数据库的时候,总是会写到int(11),varchar(200)。但是括号里面的值具体代表什么意思呢?今天被问到,然而彻底懵逼,在查阅了网上的资料后发现:int(1),这个长度1并不代表允许存储的宽度首先查找一个整数类型存储和范围:类型字节范围(有符号)范围(无符号)TINYINT1(-128,127)(0,255)SMALLIN...

2019-10-30 11:27:26 1934

原创 PHP经典面试题

1.猴子选大王一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。用程序模拟该过程。function monkey($n, $m) { $arr = range(1, $n);/...

2019-10-18 15:32:56 274

原创 PHP常见算法与排序

PHP算法与排序冒泡排序选择排序快速排序插入排序二分查找冒泡排序思路分析:在未排序的数组中,从前往后对相邻的两个数一次对比,较大的数往下沉,较小的往上冒。即,从左到右,数组中相邻的两个元素进行比较,将较大的放到后面。function bubbleSort($arr) { if(empty($arr)) return $arr; $len = count($arr); ...

2019-10-17 15:52:29 93

空空如也

空空如也

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

TA关注的人

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