<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ajqy4635的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ajqy4635</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ajqy4635]]></copyright><item><title><![CDATA[laravel框架源码分析（一）自动加载]]></title><link>https://blog.youkuaiyun.com/ajqy4635/article/details/102173090</link><guid>https://blog.youkuaiyun.com/ajqy4635/article/details/102173090</guid><author>ajqy4635</author><pubDate>Sat, 08 Dec 2018 17:50:00 +0800</pubDate><description><![CDATA[一、前言
　　使用php已有好几年，laravel的使用也是有好长时间，但是一直对于框架源码的理解不深，原因很多，归根到底还是php基础不扎实，所以源码看起来也比较吃力。最近有时间，所以开启第5、6遍的框架源码探索之旅，前面几次都是看了一些就放弃，希望这次能够看完。每一次看源码都会有新的收获，因为框架用到的一些设计模式、高级特性，在平时的业务需求里面根本用不到，或者说项目前期就把需要用...]]></description><category></category></item><item><title><![CDATA[在laravel框架中使用mq]]></title><link>https://blog.youkuaiyun.com/ajqy4635/article/details/102173092</link><guid>https://blog.youkuaiyun.com/ajqy4635/article/details/102173092</guid><author>ajqy4635</author><pubDate>Wed, 28 Nov 2018 16:53:00 +0800</pubDate><description><![CDATA[本文写于2018-11-28
1、部署laravel项目
https://github.com/laravel/laravel 通过git克隆项目，或者下载zip包然后解压等方式都可以把laravel框架源码下载下来。
然后composer install 安装各种依赖
然后复制.env.example 为.env文件，执行php artisan key:generate 生成...]]></description><category></category></item><item><title><![CDATA[window环境rabbitMQ安装和php扩展安装]]></title><link>https://blog.youkuaiyun.com/ajqy4635/article/details/102173091</link><guid>https://blog.youkuaiyun.com/ajqy4635/article/details/102173091</guid><author>ajqy4635</author><pubDate>Tue, 27 Nov 2018 17:27:00 +0800</pubDate><description><![CDATA[下面的安装步骤，已经在2018-11-27试验通过。
1、安装前的准备
phpinfo查看php的版本、系统是多少位的，php版本是否是线程安全，php.ini文件的路径

2、安装rabbitMQ
安装过程可以参考： https://www.cnblogs.com/ericli-ericli/p/5902270.html 默认安装就好了。或者按照我下面整理的：
1）先安...]]></description><category></category></item><item><title><![CDATA[git常用命令]]></title><link>https://blog.youkuaiyun.com/ajqy4635/article/details/102173088</link><guid>https://blog.youkuaiyun.com/ajqy4635/article/details/102173088</guid><author>ajqy4635</author><pubDate>Sat, 24 Nov 2018 15:28:00 +0800</pubDate><description><![CDATA[git教程参考（廖雪峰的教程）：https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
1、基础命令
1）初始本地库
命令：git init

2）添加修复到缓冲区
命令：git add
命令：git add . 【注意有个句点】是添加所有文件的修...]]></description><category></category></item><item><title><![CDATA[php7新特性]]></title><link>https://blog.youkuaiyun.com/ajqy4635/article/details/102173089</link><guid>https://blog.youkuaiyun.com/ajqy4635/article/details/102173089</guid><author>ajqy4635</author><pubDate>Mon, 08 Oct 2018 23:23:00 +0800</pubDate><description><![CDATA[一、前言
　　php7目前（截止2018-09-17），最新的稳定版本是7.2.10（http://php.net/downloads.php上可查看版本信息），目前还有不少项目是用5.6甚至更早的版本。相比于php5.x的版本，php7有不少新的改进，性能方面也是有不少提升。下面来详细讲下。

二、新特性
1、php7.0相比于php5.6的新特性
参考：http://p...]]></description><category></category></item><item><title><![CDATA[API接口设计]]></title><link>https://blog.youkuaiyun.com/ajqy4635/article/details/102173086</link><guid>https://blog.youkuaiyun.com/ajqy4635/article/details/102173086</guid><author>ajqy4635</author><pubDate>Thu, 26 Jul 2018 00:06:00 +0800</pubDate><description><![CDATA[1、场景描述
　　比如说我们要做一款APP，需要通过api接口给app提供数据。假设我们是做商城，比如我们卖书的。我们可以想象下这个APP大概有哪些内容：
　　1）首页：banner区域（可以是一些热门书籍的图片做推广）、本周热卖书籍区域、本月好评书籍区域、活动打折的书籍区域。。。
　　2）排行榜：比如第一季度热销榜、新书版。。。
　　3）书单：管理后台运营添加的书单，比如《程序...]]></description><category></category></item><item><title><![CDATA[关于redis的使用]]></title><link>https://blog.youkuaiyun.com/ajqy4635/article/details/102173087</link><guid>https://blog.youkuaiyun.com/ajqy4635/article/details/102173087</guid><author>ajqy4635</author><pubDate>Wed, 27 Dec 2017 00:06:00 +0800</pubDate><description><![CDATA[　　距离上次写博客有两三个月了，这段时间去了新公司上班，忙了很多。接手了一个项目，刚好用到redis，先总结下遇到的问题（跟redis相关的问题）：
　　1、列表问题
　　举例：展示商品列表，但是要先展示运营置顶的数据，如果排序的序号一样，则按照id降序排序，就是需要按照sort asc, id desc 来排序；用redis怎么处理？
　　【分析】
　　首先这个问题可能本身有点...]]></description><category></category></item><item><title><![CDATA[redis的string类型]]></title><link>https://blog.youkuaiyun.com/ajqy4635/article/details/102173084</link><guid>https://blog.youkuaiyun.com/ajqy4635/article/details/102173084</guid><author>ajqy4635</author><pubDate>Sun, 10 Sep 2017 16:25:00 +0800</pubDate><description><![CDATA[1、简单描述
　　string类型是redis最基本的类型，而且string类型是二进制安全的，就是说redis的string类型可以包含任何数据，比如jpg图片或者序列化的对象。string类型最大可以存储1G字节数据。另外，string类型可以被部分命令（比如inrc）按照int类型处理。如果只使用string类型，那么redis可以被当做是拥有持久化功能的memcached，但...]]></description><category></category></item><item><title><![CDATA[面试题（php部分）]]></title><link>https://blog.youkuaiyun.com/ajqy4635/article/details/102173071</link><guid>https://blog.youkuaiyun.com/ajqy4635/article/details/102173071</guid><author>ajqy4635</author><pubDate>Tue, 05 Sep 2017 11:43:00 +0800</pubDate><description><![CDATA[1、用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分)
【答案】
$a = date("Y-m-d H:i:s", strtotime("-1 day"));
print_r($a);
【备注】
strtotime的参数还可以是：
echo date("Y-m-d H:i:s", strtotime("-1 year+1 week 1 month ...]]></description><category></category></item><item><title><![CDATA[redis持久化机制]]></title><link>https://blog.youkuaiyun.com/ajqy4635/article/details/102173072</link><guid>https://blog.youkuaiyun.com/ajqy4635/article/details/102173072</guid><author>ajqy4635</author><pubDate>Tue, 29 Aug 2017 15:38:00 +0800</pubDate><description><![CDATA[1、简单介绍
　　redis的持久化机制是用于把内存的数据存储到硬盘上，作用是当redis服务重启时或者当系统奔溃或故障，那么redis重启可以把数据从硬盘上恢复到内存。
　　redis的持久化机制有2种，第一种是快照；第二种是aof。

1）快照方式
　　快照方式是指在一定时间间隔后当写命令达到了配置要求的数量，则把内存中的所有数据全部保存到文件。这里是采用的写时复制机制，...]]></description><category></category></item><item><title><![CDATA[redis的pipeline操作]]></title><link>https://blog.youkuaiyun.com/ajqy4635/article/details/102173083</link><guid>https://blog.youkuaiyun.com/ajqy4635/article/details/102173083</guid><author>ajqy4635</author><pubDate>Mon, 28 Aug 2017 17:44:00 +0800</pubDate><description><![CDATA[1、简单描述
　　redis是一个CS模式的tcp的server，一个client发起了命令操作的请求，然后会阻塞等待服务端的处理和数据的返回。基本上一个命令请求就是2个报文，一去一回。如果多个命令，每次都是2个报文，这样网络传输的开销不小，在批量命令处理的时候，pipeline就可以减少这种网络开销而提升性能。假如client一个命令一个命令地发，一秒之内只能执行4个命令的，用了pi...]]></description><category></category></item><item><title><![CDATA[redis的事务（简单介绍）]]></title><link>https://blog.youkuaiyun.com/ajqy4635/article/details/102173082</link><guid>https://blog.youkuaiyun.com/ajqy4635/article/details/102173082</guid><author>ajqy4635</author><pubDate>Mon, 28 Aug 2017 16:56:00 +0800</pubDate><description><![CDATA[1、简单描述
　　redis对事务的支持目前还是比较简单。redis只能保证一个client发起的事务中的命令是可以连续的执行，而中间不会插入其他client的命令。由于redis是但现场来处理所有client的请求的，所以这种事务的实现还是容易的。

2、相关操作
1）mulit命令：发起事务。
2）exec命令：收到此命令后，redis会执行client开启事务后发来的...]]></description><category></category></item><item><title><![CDATA[redis的sort命令]]></title><link>https://blog.youkuaiyun.com/ajqy4635/article/details/102173080</link><guid>https://blog.youkuaiyun.com/ajqy4635/article/details/102173080</guid><author>ajqy4635</author><pubDate>Mon, 28 Aug 2017 16:22:00 +0800</pubDate><description><![CDATA[1、简单描述
　　sort命令可以对list、set和sorted set的元素进行排序，然后显示排序的结果，不影响这些类型里面存储的数据的排序。就是说sort可以对list的元素排序，但是执行lrange等命令会发现在内存中存储的元素的顺序没变。

2、相关操作（基于4.0.1版本）
sort的格式：
　　sort key [BY pattern] [LIMIT offs...]]></description><category></category></item><item><title><![CDATA[redis的hash类型]]></title><link>https://blog.youkuaiyun.com/ajqy4635/article/details/102173081</link><guid>https://blog.youkuaiyun.com/ajqy4635/article/details/102173081</guid><author>ajqy4635</author><pubDate>Sun, 27 Aug 2017 22:52:00 +0800</pubDate><description><![CDATA[1、简单描述
　　hash是一个string类型的field和value的映射表。添加和删除操作都是O（1）（平均）的复杂度。hash类型特别适合用于存储对象。在field的数量在限制的范围内以及value的长度小于指定的字节数，那么此时的hash类型是用zipmap存储的，所以会比较节省内存。可以在配置文件里面修改配置项来控制field的数量和value的字节数大小。
　　hash...]]></description><category></category></item><item><title><![CDATA[redis的sorted set类型]]></title><link>https://blog.youkuaiyun.com/ajqy4635/article/details/102173078</link><guid>https://blog.youkuaiyun.com/ajqy4635/article/details/102173078</guid><author>ajqy4635</author><pubDate>Sun, 27 Aug 2017 21:58:00 +0800</pubDate><description><![CDATA[1、简单描述
　　和set类型一样，sorted set也是string类型元素的集合，不同的是每个元素都会关联一个double类型的score。sorted set的实现是skip list和hash table的混合体。当元素被添加到集合中时，一个元素到score的映射被添加到hash table中，所以给定一个元素获取score的开销是O（1），另外就是score到...]]></description><category></category></item><item><title><![CDATA[redis的set类型]]></title><link>https://blog.youkuaiyun.com/ajqy4635/article/details/102173077</link><guid>https://blog.youkuaiyun.com/ajqy4635/article/details/102173077</guid><author>ajqy4635</author><pubDate>Sun, 27 Aug 2017 20:59:00 +0800</pubDate><description><![CDATA[1、简单描述
　　redis的set类型是string类型数值的无序集合。set元素最大可以包含2的32次方减1个元素。由于set类型是通过hash table实现（旧版本是这样，新版本不确定是不是改用了skip list来实现），所以添加/删除/查找的时间复杂度都是O（1）。hash table有个问题，就是添加或删除的时候，伴随着长度的变化的是需要同步（获取写锁）会阻塞其他读写操...]]></description><category></category></item><item><title><![CDATA[redis的list类型]]></title><link>https://blog.youkuaiyun.com/ajqy4635/article/details/102173075</link><guid>https://blog.youkuaiyun.com/ajqy4635/article/details/102173075</guid><author>ajqy4635</author><pubDate>Sun, 27 Aug 2017 17:33:00 +0800</pubDate><description><![CDATA[1、简单介绍
　　redis的list类型其实就是一个每个元素都是string类型的双向链表。所以lpush、rpush、lpop和rpop命令的时间复杂度是O(1)，list会记录链表的长度，所以llen操作也是O（1）的时间复杂度。链表的最大长度是2的32次方减1,。list类型可以用作队列或者栈。list还有阻塞版本，就是说如果队列为空，就会等待直到超时或者有数据放入队列。阻塞...]]></description><category></category></item><item><title><![CDATA[redis中与key相关的命令]]></title><link>https://blog.youkuaiyun.com/ajqy4635/article/details/102173076</link><guid>https://blog.youkuaiyun.com/ajqy4635/article/details/102173076</guid><author>ajqy4635</author><pubDate>Sun, 27 Aug 2017 13:41:00 +0800</pubDate><description><![CDATA[1、简单描述
redis本质上是一个key-value db，value可以有多种类型（string、hash、set、sorted set、list等），本章节不讲这些类型的命令，这里是讲跟key相关的命令操作。
key本身是string类型，不支持边界符，比如my key 这种含有空格的名字是会报错的，mykey\n这样包含换行符的也不行，包含\r\n的会被特殊处理，暂不细说。...]]></description><category></category></item><item><title><![CDATA[redis远程连接问题（安全模式问题）]]></title><link>https://blog.youkuaiyun.com/ajqy4635/article/details/102173073</link><guid>https://blog.youkuaiyun.com/ajqy4635/article/details/102173073</guid><author>ajqy4635</author><pubDate>Sun, 27 Aug 2017 00:23:00 +0800</pubDate><description><![CDATA[我在windows上远程连接linux上的redis（我虚拟机上的）遇到了问题，我是在windows上php代码中的调用redis接口来远程连接的，代码中ping()的时候报错。
服务器端我确定了iptables和selinux是关闭的，我的redis-server有启动，因为ps能查到，端口6379也是有监听的，netstat能查到。

我的redis-server是部署在19...]]></description><category></category></item><item><title><![CDATA[redis的安装和配置]]></title><link>https://blog.youkuaiyun.com/ajqy4635/article/details/102173074</link><guid>https://blog.youkuaiyun.com/ajqy4635/article/details/102173074</guid><author>ajqy4635</author><pubDate>Sat, 26 Aug 2017 23:19:00 +0800</pubDate><description><![CDATA[1、选定一个稳定版本
打开redis官网的下载页
https://redis.io/download
选一个稳定版本安装，当前的最新稳定版本是4.0.1

2、安装
切换到linux系统的/usr/local/src目录下载redis安装包：
$ wget http://download.redis.io/releases/redis-4.0.1.tar.gz
...]]></description><category></category></item></channel></rss>