自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

pythonluo的专栏

天真岁月不忍弃,青春荒唐我不负你

  • 博客(109)
  • 问答 (2)
  • 收藏
  • 关注

原创 PHP7 错误异常处理

/* * 1 interface Throwable2 |- Exception implements Throwable3 |- ...4 |- Error implements Throwable5 |- TypeError extends Error6 |- ParseError extends Error7 |- ArithmeticError extends Error8 |-.

2020-10-29 11:56:54 337

原创 快速笔记

GIT ADDgit add -A 提交所有变化git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件

2020-06-17 17:44:34 277

原创 Laravel Log 流程

Laravel 记录日志也是用了monolog/log ,只是在上面加了一层可配置和包裹了一层测试代码Log::channel('zip')->info(' begin');对应日志配置'zip' => [ 'driver' => 'daily', 'path' => storage_path('logs/zip/zip.log'), ...

2020-04-02 13:19:59 2722

原创 PHP Guzzle包 用法

总结: 1.GUZZLE包最终还是用的curl的curl_exec和curl_multi_exec去请求,可以添加自定义配置,这些配置最终还是会对应到 curl_setopt_array($easy->handle, $conf); 设置 2.还有一个就是可以做一些请求前或者请求返回后的中间件。接入请求的过程中处理$stack = new HandlerStack(); push,ha...

2020-03-26 19:27:28 1489

转载 git rebase 还是 merge的使用场景最通俗的解释

什么是 rebase?git rebase 你其实可以把它理解成是“重新设置基线”,将你的当前分支重新设置开始点。这个时候才能知道你当前分支于你需要比较的分支之间的差异。原理很简单:rebase需要基于一个分支来设置你当前的分支的基线,这基线就是当前分支的开始时间轴向后移动到最新的跟踪分支的最后面,这样你的当前分支就是最新的跟踪分支。这里的操作是基于文件事务处理的,所以你不用怕中间失败会影响...

2020-01-09 13:17:10 372 1

转载 git同步远程已删除的分支和删除本地多余的分支

使用git branch -a可以查看本地分支和远程分支情况但远程分支(红色部分)删除后,发现本地并没有同步过来。一. 同步本地的远程分支查看本地分支和追踪情况:git remote show origin可以发现红框中的分支是远程分支已被删除的分支,根据提示可以使用git remote prune来同步删除这些分支。运行命令:...

2019-12-26 09:57:18 704

原创 【PHP】 phpredis 长连接实现原理

前言; 多年以前有个大佬问过一个问题,PHP的phpredis第三方扩展(客户端)怎么实现与redis服务端维持长连接,并且每个请求是怎么复用这些连接的,今天才突然想一探究竟,便翻了翻一下源码。PHP源码版本是php-7.2.19, phpredis扩展版本是redis-5.0.2。 首先在传统的网络通信中,普通的交互流程中,客户端发起连接请求,三次握手...

2019-10-05 23:07:21 2914

原创 PHP xhprof 扩展原理

简介:由于公司项目,最近需要分析后端PHP接口的性能数据,就采用了FACEBOOK之前开源的一个扩展,现在市面上很多分支都是基于FB最开始的线开发的,但是由于FB已经停止维护,所以现在其他线都是自己个人在维护。今天我分析的这个分支是兼容PHP7+的版本收集性能数据,先贴出GITHUB的链接https://github.com/longxinH/xhprof扩展的安装方式和PHP调用的A...

2019-09-03 19:56:38 635

转载 使用 gdb 调试 PHP 扩展

https://blog.csdn.net/carzyer/article/details/53339565php的扩展使用c/c++开发,可以很容易的使用gdb进行调试。具体步骤如下:首先编译php的时候需要加上** --enable-debug**参数 ./configure --enable-debug make && make install...

2019-09-03 15:11:24 362

转载 MySQL事务 - 自增ID的回滚以及Auto Increment在InnoDB的实现

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/BDuck2014/article/details/81709777自增ID未回滚首先做一个测试CREATE TABLE auto_inc_test( id int auto_increment, test_id int, prim...

2019-08-15 09:41:58 710

转载 调试PHP的Core

如何调试PHP的Core之获取基本信息Published on23 June 2011本文地址:http://www.laruence.com/2011/06/23/2057.html 转载请注明出处其实一直想写这个系列, 但是一想到这个话题的宽泛性, 我就有点感觉无法组织.今天我也不打算全部讲如何调试一个PHP的Core文件, 也不会介绍什么是Coredump, 选择一...

2019-08-14 10:44:33 239

原创 Mysql 索引总结

1.varchar型字段的索引explain select * from users where rtx = '1' 用到了索引explain select * from users where rtx = 1 没用到索引当MySQL中字段为int类型时,搜索条件where num=‘111‘ 与where num=111都可以使用该字段的索引。当MySQL中字段为va...

2019-08-09 13:03:14 140

转载 Mysql 覆盖索引

话说有这么一个表:CREATE TABLE `user_group` ( `id` int(11) NOT NULL auto_increment, `uid` int(11) NOT NULL, `group_id` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `uid` (`uid`), KEY `grou...

2019-08-09 10:24:43 863

转载 Mysql 聚簇索引

聚簇索引并不是一种单独的索引类型,而是一种数据存储方式。具体的细节依赖于其实现方式,但innoddb 的聚簇索引实际上在同一个结构中保存了B-Tree索引和数据行。  当表有聚簇索引时,它的数据实际上存放在索引的叶子页(leaf page)中。术语‘聚簇’表示数据行和相邻的键值聚簇的存储在一起。因为无法同时把数据行存放在两个不同的地方,所以在一个表中只能有一个聚簇索引(不过,覆盖索引可以模拟多...

2019-08-09 10:23:58 311

原创 Laravel 框架和路由中间件

路由中间件处理代码框架中间件处理代码

2019-07-31 14:34:34 402

原创 Laravel 队列执行流程

执行队列php artisan queue:work执行队列过程,从queues:detault:delayed有序集合拿出到期的JOB数据放到queues:detault队列中,然后从首先从queues:detault 队列拿出要执行的JOB数据放入到queues:detault:reserved有序集合中,然后laravel 这边的延迟队列使用了三个队列。queue:de...

2019-07-26 16:30:31 2451

原创 PHP __sleep和__wakeup

class B{ public $c; public function __construct() { $this->c = 111; } public function __sleep() { return []; // return ['c']; }}cl...

2019-07-10 15:31:23 246

原创 Laravel Cache流程

记录一下,省的每次忘记都要重新看下源码dd(Cache::get(1));exit();Cache::put(1,2,3);exit();dd(app('cache'));这里注入了CACHE的门面类class CacheServiceProvider extends ServiceProvider{ /** * Indicates if loading of ...

2019-07-09 14:48:21 2635

原创 CURL远程大文件,重定向给浏览器下载

需求背景:最近在做一个项目,用户下载文件后端用的是LARAVEL框架,先贴出代码:return (new StreamedResponse(function() use ($id, $model) {// $handle = fopen('php://output', 'w'); $ch = curl_init();// ...

2019-06-24 17:07:15 777

原创 nginx php 字节对齐

ngxin这种内存对其是为了减少向内存或者CPU缓存读取数据的时候,减少读取的次数。 类似于读取硬盘数据时,都是一页一页单位读取的。 能够保证一次性能够读取到完整的数据.#define ngx_align(d, a) (((d) + (a - 1)) & ~(a - 1))ngx_align(23,16) 就是取16的最小整数倍 且这个值要大于23 = 3237&...

2019-05-31 19:15:35 195

原创 Mysql Top N

此MYSQL基于5.7,only_full_group_by模式Having 和 Where 区别 :https://blog.csdn.net/jdjh1024/article/details/76647866准备数据CREATE TABLE `test1` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(2...

2019-05-09 10:45:29 1182

原创 PHP &and| 位运算

$a = 0x01000000; //1000000000000000000000000 16777216$b = 0x00010000; //0000000010000000000000000 65536$c = $a | $b; //1000000010000000000000000 16842752$d = $a & $b; //00000000...

2019-03-25 14:30:50 365

原创 nginx源码分析 (信号机制)

这篇文章讲解nginx的信号机制,因为是信号,所以其他方面的没有深究,放在后面分享出来,欢迎有兴趣的朋友留言交流nginx运行的进程模式为master-worker的话,那master和worker进程间是通过信号来通信,关于信号相关的知识可以参考下面的链接Linux信号(signal) 机制分析下面讲解代码执行流程都是以quit命令来执行的一、信号的安装nginx启动的过程中,m...

2019-03-10 20:23:23 507

原创 git 免密操作、TortoiseGit SSH免密码操作

一,命令行配置1.先用gitbash生成公钥和秘钥2.ssh-keygen -t rsa -C [email protected]然后回车,回车,直到生成了公钥和秘钥,再把公钥放到你的GITHUB上 SSH公钥管理上面,这样GITBASH就可以直接免密码操作二,小乌龟GUI配置可以直接加载命令行生成的私钥,用PUTTYGEN加载命令行生成的私钥,然后保存为小乌龟指定的私钥格...

2019-03-05 23:57:48 874

原创 PHP 设置COOKIE和读取COOKIE的问题

setcookie('user-token-test', 'asdfasdfasdf', time() + 1111, '/', $cookieDiamon);filedump($_COOKIE['user-token-test']); 、、 NULLexit(1);在一次功能上,有遇到一个的BUG一个场景下面,在执行的一个PHP脚本周期下面,有同事直接执行setcookie一个...

2019-02-22 13:41:09 2524

原创 docker lnmp lamp 搭建

镜像的构建是基于centos7.2镜像,然后yum安装lnmplnmp 环境php7.0yum安装 lnmp软件参考我的另外一篇博客 https://blog.csdn.net/luolaifa000/article/details/86657353登录阿里云Docker Registry$ sudo docker login --username=yumancang1 re...

2019-02-17 22:12:03 391

原创 yum rpm原理

简单罗列基础命令,不粘贴、不复制,只分享我的想法!GNU/LINUX是一个开源的操作系统,遵循POSIX规范,种类异常丰富的开源软件均能在以Linux为kernel的OS中运行,前提是你需要把你想要安装的开源软件在你的硬件平台上进行编译和安装,非常的麻烦,为了解决流行软件安装的复杂问题,程序包管理器应运而生。程序包管理器其实是Linux Release推出一种程序包的管理程序,这个程序包管...

2019-02-16 11:57:43 940

原创 APP接口抓包调试方法

首先APP端请求 是代理到你PC的网络网卡上面,相当于你APP的请求是转发到PC,PC再去请求对应的接口或者地址。 要求:1. APP和PC必须在同一个网络下面,然后APP连接WIFI要设置代理IP到PC的机器上,端口8899、2.然后PC要装一个nodejs的工具,  http://wproxy.org/whistle过程1.npm install -g whist...

2019-02-15 16:59:10 1679

转载 C-内存对齐以及对齐规则

#include<iostream>using namespace std;struct A{ char a; int b; short c;};struct B{ short c; char a; int b;};int main(){ cout<<sizeof(A)<<endl; ...

2019-02-14 23:36:00 244

原创 git 撤销 commit,并推送到远程

reset与revert的区别git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。 在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些c...

2019-02-12 10:55:15 1054

原创 NGINX PHP-FPM 共享WINDOWS文件夹 开发环境

主要安装过程中出现的问题:1.执行PHP文件出现空白nginx 默认配置文件中​fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;改成​fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;将要执行的文件的绝对路径地址传给PHP-FPM 执行 PH...

2019-01-26 15:02:22 854

原创 Sphinx 实现复杂查询

曾经有一天 一个运营提个需求,需要在一个列表页面中按照条件选出商品条件是用SQL的形式就是is_on_sale AND ( (price >20 AND cat_id iN(1,2)) OR (price >30 AND cat_id iN(3,4)) )SPHINX 实现就是 $cl->SetSelect("@id, IF((shop_price >...

2019-01-24 15:37:44 815

原创 Charles 抓包 APP请求后端接口工具使用

APP的WIFI 要配置手动配置代理,而且电脑的和手机的网络要在同一个局域网当要抓取的线上环境是HTTPS的域名的话,手机端需要安装证书PC客户端还要配一个SSL 代理端口    ...

2019-01-22 14:37:24 488

原创 esearch多级查询

类似于 SQL =  is_on_sale AND ( (price >20 AND cat_id iN(1,2)) OR (price >30 AND cat_id iN(3,4)) )ES里面用这个类似查询相同效果{ "filters": [        {             "type":"pairs",             "operators":[...

2019-01-20 17:32:24 774 1

原创 Redis Lua 源码调用流程

1.Redis服务端在启动的时候会初始化lua的运行环境,Redis是C写的,所以实际上就是C与LUA的交互。2.Lua 是通过一个虚拟堆栈来与C交互的,如下图。请注意红色数字,代表通信顺序:1) C想获取Lua的myName字符串的值,所以它把myName放到Lua堆栈(栈顶),以便Lua能看到2) Lua从堆栈(栈顶)中获取myName,此时栈顶再次变为空3) Lua拿...

2019-01-13 21:44:57 480

转载 Lua C 交互

转自:https://blog.csdn.net/yhhwatl/article/details/93036751. Lua的堆栈和全局表我们来简单解释一下Lua的堆栈和全局表,堆栈大家应该会比较熟悉,它主要是用来让C++和Lua通信的,是的,它们并不认识对方,只能通过堆栈来沟通,就像写信一样。(旁白:它们不会用微信吗?!微信~!不知道?)  Lua的全局表又是什么呢?可以...

2019-01-13 20:48:18 176

原创 redis->predis-lua脚本

192.168.127.128:6379>eval "return redis.call('set',KEYS[1],ARGV[1])" 1 name luolaifa OK 192.168.127.128:6379>get name "luolaifa" #哨兵模式下一主多从,执行setnx命令,predis ...

2019-01-04 11:35:05 754

转载 HTTP Keep-Alive

什么是HTTP Keep-Alive呢?在通过调试工具查看网络请求的时候,通常在response header能看到类似下面这种:Keep-Alive: timeout=10, max=94 。那么Keep-Alive到底是什么呢?HTTP Keep-Alive在http早期,每个http请求都要求打开一个tpc socket连接,并且使用一次之后就断开这个tcp连接。使用keep...

2018-12-30 19:24:10 4780

转载 Mysql 死锁

MySQL批量更新死锁案例分析2012年12月12日 18:25:34 绝情谷 阅读数:50527问题描述在做项目的过程中,由于写SQL太过随意,一不小心就抛了一个死锁异常,如下:com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock...

2018-12-27 16:35:54 139

原创 一天当中评论数量最多的10个用户SQL

select count(*) as num,u.email  from eload_order_info as o LEFT JOIN eload_users as u on u.user_id = o.user_id   GROUP BY o.user_id ORDER BY num desc LIMIT 0,10select * from (select count(*) as n...

2018-12-19 17:52:35 2103

空空如也

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

TA关注的人

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