- 博客(16)
- 收藏
- 关注
原创 PHP性能提升想法
众所周知PHP是解释性的语言,对于QPS一直是个硬伤,同样的最近火热的GO语言是个编译型的语言,但是两者的接口QPS天壤之别啊,无法比拟。php单台机子qps达到四五百已经很不错了,但是GO可以轻松的上千。这就是解释性语言不能逾越的弊端吗?今天老司机带你们了解一下解释性语言也可以达到这种QPS的成就。 php最多的使用场景就是与nginx通过cgi来交互,这里php-fpm承担了重要...
2018-06-30 11:35:25 332
原创 redis缓存穿透之setnx使用场景
随着业务的增长,请求并发的增大。很多公司在业务场景中会增加缓存策略,而缓存用的最多的也就是redis了。 今天我们来说一下缓存穿透,我们缓存一般是有时效性的,一定的生命周期过去之后就会消失,一般的系统不会设置永久性的存储,这时候就会遇到一个问题,要么就是主动刷新缓存,要么就是程序被动刷新缓存。 事实证明很多程序当中很少主动刷新因为你要去写脚本,定时去刷新数据,这样的话代价比较大...
2018-06-30 11:13:34 2769
原创 Redis数据类型——列表(链表与数组的差别对比)
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。Redis的列表其实就是一个双向链表,他对于操作列表里面的数据就是0(1)的时间复杂度,到这里我们说一下链表和数组对于内存中的优劣势其实在c或者c++中每一个变量的申明都会去内存申请空间,然而我...
2018-03-31 13:37:37 1351
原创 Redis数据类型——散列类型
我们用的redis的散列其实就是一个hash散列:储存多个域值对。一个散列由多个域值对组成,散列的域和值都是以字符串类型来存储的。同一个散列里面域是不能相同的,而域的值则没有这一要求,换句话说,不同域的值可以是重复的。通过命令,用户可以对散列执行设置域值对、获取域的值、检查域是否存在等操作,也可以让 Redis 返回散列包含的所有域、所有值或者所有域值对。这是网上找的一个字符串类型与散列类型命令的...
2018-03-31 13:20:48 246
原创 Redis数据类型——字符串
redis字符串类型他能存储任何类型的字符串,包括二进制,json化对象、邮箱、图片等等的,不过存储的最大最大容量是512MB。命令常用的比如set 设置一个key和value,原本的key有值的时候会覆盖原先的值,重新赋值新的值。成功的时候会返回一个ok。取值的时候就是get key这样子,有key的时候会取出其值,不存在的时候会返回一个false其他的count 是否存在的一些命令手册有,这里...
2018-03-31 13:07:08 223
原创 php设计模式之单例模式
单例模式的要点有三个:1. 一是某个类只能有一个实例;2. 二是它必须自行创建这个实例;3. 三是它必须自行向整个系统提供这个实例。为什么要使用PHP单例模式1. php的应用主要在于数据库应用, 一个应用中会存在大量的数据库操作, 在使用面向对象的方式开发时, 如果使用单例模式, 则可以避免大量的new 操作消耗的资源,还可以减少数据库连接这样就不容易出现 too many connection...
2018-03-21 20:43:08 923
原创 简单实现一个laravelapp容器绑定实例
纵观laravelapp容器里面有一些kernel先行注册的服务,所谓的这些服务就是我们php常用的一些类,laravel预加载的一些框架所用到的类。还有一些就是每次单一绑定实例也就是singleton绑定一个共享实例。下面我们用自己的方式实现一个app的容器绑定<?phpclass App implements \ArrayAccess{ private $_bindings = a...
2018-03-21 20:31:16 1371
原创 php结合echarts画多个折线图
echarts是百度出的一个画图工具基本上是js写出来的,对于php来生成一个折线图或者饼图这些数据可视化来说是相当的方便。在工作中也会常遇到数据可视化的东西,一些简单的图可以用echarts特别的方便。还有hcharts这种的。今天我们以echarts来做例子。下面直接上代码,首先对于一个图形要有一个html的画图的div<div class="container"> <...
2018-03-20 20:19:36 2165
原创 mysql锁与锁调度
MySQL锁· 表锁:开销小,加锁快;不会出现死锁;锁定力度大,发生锁冲突概率高,并发度最低· 行锁:开销大,加锁慢;会出现死锁;锁定粒度小,发生锁冲突的概率低,并发度高· 页锁:开销和加锁速度介于表锁和行锁之间;会出现死锁;锁定粒度介于表锁和行锁之间,并发度一般MyISAM表锁MyISAM存储引擎只支持表锁,查询表级锁争用情况可以通过检查table_locks_waited和table_lock...
2018-03-20 15:22:35 466
原创 mysql事务以及事务隔离级别
事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称为事务的ACID属性。· 原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。· 一致性(Consistent):在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性;事务结束时,所有的内部数据结构(如B树索引或双向链表...
2018-03-17 11:56:36 150
原创 mysql五大存储引擎
mysql存储引擎:MyISAM:创建一个myisam存储引擎的表的时候回出现三个文件1.tb_demo.frm,存储表定义;2.tb_demo.MYD,存储数据;3.tb_demo.MYI,存储索引。MyISAM表无法处理事务,这就意味着有事务处理需求的表,不能使用MyISAM存储引擎。MyISAM存储引擎特别适合在以下几种情况下使用:1.选择密集型的表。MyISAM存储引擎在筛选大量数据时非常...
2018-03-15 15:29:29 559
原创 基于swoole、redis集合做一个消息订阅
利用swoole开启常驻进程,需要几个按自己的情况来定,swoole进程数最好是和服务器cpu核数相等上篇和这里我用的都是woker进程没有用task_workerredis 有序集合score可以按时间戳来吧需要发送的数据存储起来利用swoole启动的常驻进程不断的去探测,可以设定一段时间去按照score时间排序去把这个时间段的有序集合的数据取出来消费下面上代码:swoole启动代码functi...
2018-03-14 17:39:10 1912
原创 基于swoole、redis做一个消息通知功能
利用swoole开启常驻进程,需要几个按自己的情况来定,swoole进程数最好是和服务器cpu核数相等利用swoole启动的常驻进程不断的去探测redis队列里面的值,可以按键值来做一个快中慢这样的权重处理,需要急需处理,数据量大的可以用多几个进程,一般的可以分配不同的进程数来执行。下面上代码:swoole启动代码function run(){ try { $swoole...
2018-03-14 17:28:21 6537
原创 curl高低版本传输文件
这几天因为要调用java接口所以要传输文件 我选择了curl传文件,这边说一个坑,就是我在文件传输的时候用了原来的@后边直接加上文件绝对路径。然而一直没有错误就感觉一直没有发送出去,后来我用了win下的试了一下,直接抛出警告说这个方法已经过时了,请用curlfile函数代替。到现在我才知道原来是自己的电脑一直没开警告报错,win下我一直开着的,这个问题纠结看好一段时间。下面就上代码看看c
2016-07-03 08:48:59 593
原创 ajax跨域post方式
上一篇博客说了ajaxgetjsonp跨域方式,需要注意的一些事项下面说一下post方式传输数剧以及后端接受。先直接上ajax代码:$(document).ready(function() { $('#submit1').click(function(){ var data = new FormData($("#form1")[0]); //$("form").se
2016-07-03 08:35:21 8091
原创 ajax跨域getjsonp
最近研究了一下ajax跨域传输的问题,ajax跨域有两种方式,一种就是按getjsonp得方式,另一种就是post传输。先来说一下getjsonp传输吧,getjsonp传输最重要的就是以下几点:1:必须是get方式2:数据类型必须是jsonp3:就是ajax必须加上jsonp: "callback",回调4:同样的也要在服务端加上回调下边直接上代码前端ajax代码
2016-07-03 08:26:21 1713
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人