自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 介绍一下groupcache实现和使用

[size=x-large]一.groupcache介绍[/size]memcached作者Brad Fitzpatrick用Go开发了前者的替代版,现已在Google多个生产环境(如dl.google.com)中投入使用。本文粗略介绍一下groupcache的实现方式。memcached的业务架构如下图,memcache的分布式不是服务器端实现,而是通过客户端实现;是客户端根据key自己...

2015-11-17 10:22:30 807

原创 服务器端PHP生成curl命令行

记录请求到log,为了方便后续排查问题,在PHP里调用一个方法,实现将curl串记录下来即可方便复现请求。[code="java"]

2015-11-03 09:53:47 231

原创 Redis事务---那鸡肋一样的存在

弃之如可惜,食之无所得一.Redis事务简述Redis的事务是下面4个命令来实现1.multi,开启Redis的事务,置客户端为事务态。2.exec,提交事务,执行从multi到此命令前的命令队列,置客户端为非事务态。3.discard,取消事务,置客户端为非事务态。4.watch,监视键值对,作用时如果事务提交exec时发现监视的监视对发生变化,事务将被取消。...

2015-08-21 14:14:04 576

原创 Redis - PubSub(发布者-订阅者模式)的内部实现

[b]一.设计模式-发布订阅模式[/b]发布订阅模式,又叫观察者模式,属于四人帮的二十三个设计模式中的行为模式。”定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于他的对象都会得到通知并被自动更新“,模式UML如下图。[img]http://dl2.iteye.com/upload/attachment/0111/0664/3e98c481-85d4-3d03-b5...

2015-08-19 11:04:10 366

原创 Redis内部涉及 的数据结构

Redis就是内存中维持一个巨大的字典,字典的key节点及value节点是一个个数据结构。在这里简单介绍一下Redis用到的数据结构。[b]1.简易动态字符串(sds)[/b]Redis没有使用传统的C字符串形式,取而代之的是自己实现了一个简单动态字符串简易动态字符串结构,简称为SDS(Simple Dynamic Strings)。SDS兼容C字符串的同时,带来了...

2015-08-17 16:12:54 118

原创 减少if...else...的表驱动

先从一个常见的问题入手,在页面中显示今天的星期,如果还用下面的方式,那就需要好好看看本文章了[code="java"]$result = '';switch (date('w')){ case 0: $result ='星期日';break; case 1: $result ='星期一';break; case 2: ...

2015-05-13 19:52:46 296

原创 深入PHP-直观观察array的扩展

皆知PHP的数组是由HashTable和双链表实现的,为了方便大家查看数组的数据结构,开发一个遍历PHP的数组生成Dot描述的PHP插件,生成dot描述以后可以通过一些渲染工具生成图像,本例用的是 Graphviz。 扩展的实现很简单,PHP数组源码是由下面的两种结构体实现的,扩展就是将这两种结构体和各个结构体的关系遍历一遍,生成对应的Dot描述即可。[cod...

2015-04-02 17:25:42 108

PHP延迟静态绑定

最近项目中遇到这样一个case,感觉所有的Model类都须是单例性能更高.因为所有的model皆继承统一父类BaseModel,所以在BaseModel中添加控制单例的代码,简单演示如下:[code="java"]/*基类*/class BaseModel{ private static $instance = null; public static f...

2015-01-10 12:19:49 92

原创 UDP socket_read接收数据导致错误Resource temporarily unavailable

项目中经常用到PHP用UDP调用C++服务,我们这边的PHP 请求方法封装如下,一直没有问题出现,今天接入新的服务出现了问题 [code="java"] public static function request($reqBuffer,$host,$port) { $socket = socket_create(AF_INET, SOCK_DG...

2014-12-10 20:34:47 1385

原创 PHP RSA加解密示例

[size=medium][b]1.生成密钥和公钥[/b][/size]开始前需要准备openssl环境linux 需要安装openssl工具包,传送门[url]http://www.openssl.org/source/[/url]window 下需要安装openssl的程序,传送门[url]http://slproweb.com/products/Win32OpenSSL.html...

2014-11-29 11:13:46 214

原创 废弃的会员开通系统

花了半个月实现实现的会员开通系统,最近需求更改导致这个系统报废........ , 心里几万匹羊驼在咆哮。在这里留个存档,表明俺也奋斗过。系统用了陈硕的muduo网络库,被我们这边同事改进,增加了UDP支持以适配公司的内部协议。整个系统有3个模块,接收用户付账信息模块、订单处理模块和用户会员信息存储模块。各模块通讯通过protobuf编码的UDP协议。接收用户付账信息模块和订单处...

2014-11-07 10:33:29 93

原创 boost::function对象 convert 函数指针

boost::function对象与函数指针比较相似,优点在于它拥有更大的弹性,目标既可以是普通函数、函数对象或者类的成员函数,而且还可绑定参数,给回调提供了极大的方便。但是C语言的函数是不支持boost::function对象的,当需要函数指针的C函数填写上boost::function对象时候,就出现下面的error[color=red]cannot convert 'boost::f...

2014-10-31 15:29:44 182

原创 PHP中的Iterator、ArrayAccess、Countable接口

使用接口(interface),可以指定某个类必须实现(可空实现)一簇方法,实现关键字为 implements, 类可以实现多个接口,用逗号来分隔多个接口的名称。按理说interface是PHP开发中依赖倒置原则的重要力量,但是PHP弱类型特性使其地位非常尴尬,除非为了多继承,在项目中还真没有它来干过啥。PHP提供的多个接口主要是让对象试用数组的操作方式,在此主要介绍一下Iterator...

2014-08-31 11:42:29 201

原创 PHP简单的手机验证码验证过程

做过一个需求:广告主后台发起调查活动,普通用户参加此调查后跳转值某个网址领取1Q点(1角钱);上线一段时间以后,广告主反馈得到的很多手机号都是伪造的(我们开始只用正则匹配判断手机号正确与否),然后产品让我们加上手机短信验证,就变成了下面的样子.[img]http://dl2.iteye.com/upload/attachment/0100/6987/162fb4b8-3ff5-3f5d-b...

2014-08-30 15:59:49 348

原创 PHP uniqid函数执行缓慢的问题

前段时间某个需求:客户提交简单的表单可以创建一个适应于全终端(PC,Pad,Phone)的刮刮卡活动H5页面,其中涉及到客户可在线生成限额6W奖品码的功能。因为需要保持每个活动奖品码的唯一,我们先是准备用PHP的uniqid函数来生成UUID(Universally Unique IDentifier,也叫GUID,为全局唯一标识符,是一种由算法生成的唯一标识)来生成。但当我们用生...

2014-08-29 17:01:52 117

原创 PHP环境时区设置成Asia/Chongqing导致的一个bug

        得到某个时间戳所对应的日期的0时在这边的数据统计中经常用到,如得到1409144737(2014/8/27 21:5:37)的0时1409068800(2014/8/27 0:0:0),可用的方法也比较多,在这里介绍常用的三种:      1.mktime函数方式   Java代码  $time =1409144737;     var_dump(d...

2014-08-28 11:14:25 308

原创 用redis实现用户登录计数

最近有个问题 :实现显示用户本月登录日期 ,累计天数到一定数目可参加活动,和下图展示的功能类似。 过去看过使用redis bitmap进行活跃用户统计的例子,觉得和本功能非常match,决定用redis的bitset来实现。 每个用户每月产生一个key,字段意义如下 0 位表示某月1日登录  ,1表示某月2日登录,以此类推。 每个用户一月的活跃度需要8byte,1W用...

2014-08-27 12:27:37 815

原创 PHP编码的几个最佳实践

继续说说PHP的几个编码优化[b]1.用逗号连接echo字符串[/b][code="java"]$name='orange';$address='BeiJing';echo 'Hi,'.$name.'! Welcome to '.$address;//慢echo 'Hi,',$name,'! Welcome to ',$address;//快,建议方式[/code]原因...

2013-01-06 17:41:46 105

原创 前端优化的一些地方(JS/CSS/图片)

最近翻了翻,总结一下[b]一.督促你的客户选用更快的浏览器,这样才能体验到更快的加载速度![/b]具体什么的就不说了,上一张图,下图为Gomez收集了200个网站的18.6亿个别值,时间范围为1个月,得出的真实上网环境中的数据。图中蓝色代表网页加载速度,绿色代表渲染时间。[img]http://dl.iteye.com/upload/attachment/0078/8502/e...

2013-01-05 13:31:41 92

原创 时间连续处理函数(PHP)

前几天看他人项目代码,有一功能为统计最近1月某功能的使用总量,代码实现竟然不做时间连续处理,出现下面情形。[img]http://dl.iteye.com/upload/attachment/0078/6593/edb00a70-f44e-32f0-9ea7-3b16b5d0f862.jpg[/img]N星期前,也曾看到部分代码,时间连续处理竟然是以一天为时间间隔查询数据库,最近1...

2012-12-31 15:07:31 120

原创 Python多线程和Python的锁

[size=large][b]Python多线程[/b][/size]Python中实现多线程有两种方式,一种基于_thread模块(在Python2.x版本中为thread模块,没有下划线)的start_new_thread()函数,另一种基于threading模块的Thread类。其实Python的多线程编程不能真正利用多核的CPU,但是用开源模块使你的计算压力分布到多核CPU上......

2012-11-08 16:54:29 1038

原创 MySQL Connector/Python

MySQL Connector/Python 是 MySQL 官方提供的 Python 连接 MySQL 数据库的驱动程序.下载地址为: [url]http://www.mysql.com/downloads/connector/python/[/url],到现在位置发布支持Python2.7,Python3.2的版本,Python3.3的版本正在开发中,支持Python3.*的连接...

2012-11-02 17:29:30 118

原创 Mysql 查询缓存

Mysql 查询缓存查询缓存的作用就是当查询接收到一个和之前同样的查询,服务器将会从查询缓存种检索结果,而不是再次分析和执行上次的查询。这样就大大提高了性能,节省时间。1.配置查询缓存 修改配置文件,修改[mysqld]下的query_cache_size和query_cache_type(如果没有则添加)。其中query_cache_size表示缓存的大小,而query_cache_...

2012-10-18 16:53:46 203

原创 Mysql 慢查询日志

mysql慢查询日志对于跟踪有问题的查询非常有用,可以分析出代码实现中耗费资源的sql语句,对我们程序的优化有很高的参考。本篇主要将慢查询日志的开启,日志分析,这也是优化SQL程序的一般步骤中至关重要的一步。1.mysql慢查询日志 打开mysql的慢查询日志很简单,只需要在mysql的配置文件里(windows系统是my.ini,linux系统是my.cnf)的[m...

2012-10-17 18:27:26 309

原创 如何在邮件中嵌入图片,而非上传在附件

现在好的邮件客户端如outlook等支持直接插入图片,接收方阅读时也表现为非附件形式. 但是如果我们用代码实现呢?我们可以用下面2种方式实现1.可以将图片传到有外链的网站,这个就无需介绍了,如果图片不变化,推荐这种形式。2.采用base 64编码的方式,在此重点讲讲这种方式。嵌入图片,可以说这是HTML的知识例了1.首先需要准备图片,这里有个限制,我们在最后说明。...

2012-10-16 11:34:50 2015

原创 利用mysql的binlog恢复数据

MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个: * 数据回复 * 主从数据库。用于slave端执行增删改,保持与master同步。[b]1.开启binary log功能[/b] 需要修改mysql的配置文件,本篇的实验环境是win7,配置文件为mysql安装目录\MySQL Server ...

2012-10-15 17:28:56 206

原创 PHP-模板(template)模式

1.定义:定义一个操作的算法的框架,将一些步骤的实现推迟到子类.其实意思就是操作的算法的骨架不变,即规定好了第一步应该干什么,第二步干什么,再次干什么,但是不规定具体内容.2.图示[img]http://dl.iteye.com/upload/attachment/0075/0592/14d58f39-e9f0-3de5-8fbc-34feec659eb3.png[/img]Abs...

2012-10-15 13:53:21 110

原创 PHP-中介者模式

大家都在说设计模式,俺们也来插一脚解说一下。先来中介者模式吧,大家都把设计模式将复杂了。GOF第一中介者模式为:用一个中介对象封装一系列对象的交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立的改变它们之间的交互。中介者模式使原有一对多的依赖变成了一对一的依赖,同事类只依赖中介者,降低了类之间的耦合。其实说白了就是将下面的联系方式A变成了B方式而已,不仅降低类与类之间...

2012-10-12 16:45:11 129

原创 判断是POST/GET请求+判断是AJAX请求

1.判断是POST/GET请求这个大家都知道了,就是$_SERVER['REQUEST_METHOD']返回用户的请求方式; i.e. 'GET', 'HEAD', 'POST', 'PUT'.eg:[img]http://dl.iteye.com/upload/attachment/0074/8245/4f0b74e3-df78-3cfc-98e1-eed7e5e9e440.pn...

2012-10-10 18:35:45 361

原创 Yiic介绍

[size=xx-large]Yiic介绍[/size]本来要介绍Yii的RBAC,但里面有部分内容需要用到Yiic,先开篇文章介绍一下Yiic,本篇主要介绍CConsoleCommand,至于其他如怎么利用Yiic创建应用等请参考Yii官方提供的文档。yii提供了强大的命令行工具来快速的创建相关组件和应用,要执行自己写的CConsoleCommand需要按照下面的步骤来1.配置...

2012-09-29 14:50:14 227

原创 Yii的log分析

我们可以通过Yii的日志级别和信息分类进行归类,所选的信息还可以进一步设置信息路由到答不同的目的地,例如一个文件,数据库,Email,浏览器窗口等。日志级别有: * trace: 这是在 Yii::trace 中使用的级别。它用于在开发中 跟踪程序的执行流程。 * info: 这个用于记录普通的信息。 * profile: 这个是性能概述(pr...

2012-09-29 11:36:29 162

空空如也

空空如也

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

TA关注的人

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