自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (2)
  • 收藏
  • 关注

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

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

2015-04-03 14:58:23 692

原创 PHP延迟静态绑定

延迟静态绑定

2015-01-10 12:12:57 564

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

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

2014-12-10 20:36:32 8955 1

原创 PHP RSA加解密示例

1.生成密钥和公钥开始前需要准备openssl环境linux 需要安装openssl工具包,传送门http://www.openssl.org/source/window 下需要安装openssl的程序,传送门http://slproweb.com/products/Win32OpenSSL.html如果不想安装,可以用本例提供的密钥和公钥进行测试。密钥生成open

2014-11-29 11:00:18 1072

原创 夭折的会员开通系统

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

2014-11-06 22:39:27 835

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

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

2014-10-31 14:55:26 763

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

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

2014-09-03 11:29:05 724

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

做过一个需求:广告主后台发起调查活动,普通用户参加此调查后跳转值某个网址领取1Q点(1角钱);上线一段时间以后,广告主反馈得到的很多手机号都是伪造的(我们开始只用正则匹配判断手机号正确与否),然后产品让我们加上手机短信验证,就变成了下面的样子.刚开始的思路应该很正常的那种,用rand生成随机码,然后存在redis里边,设置expire为60秒;后来考虑考虑,用户为了1角钱不至于如此,需要

2014-09-03 11:28:59 23576 1

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

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

2014-09-03 11:28:49 678

原创 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(date('Y-m-d

2014-09-03 11:28:44 2118

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

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

2014-09-03 11:28:39 3987 3

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

继续说说PHP的几个编码优化1.用逗号连接echo字符串$name='orange';$address='BeiJing';echo 'Hi,'.$name.'! Welcome to '.$address;//慢echo 'Hi,',$name,'! Welcome to ',$address;//快,建议方式原因可以查看两者的opcode,用逗号的方式和用点号方式的opco

2014-09-03 11:28:34 591

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

最近翻了翻,总结一下一.督促你的客户选用更快的浏览器,这样才能体验到更快的加载速度!具体什么的就不说了,上一张图,下图为Gomez收集了200个网站的18.6亿个别值,时间范围为1个月,得出的真实上网环境中的数据。图中蓝色代表网页加载速度,绿色代表渲染时间。二.Javascript的优化1.用Firebug查找执行消耗时间最长的Javascript函数。可通过Firebug控制

2014-09-03 11:28:29 2178

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

前几天看他人项目代码,有一功能为统计最近1月某功能的使用总量,代码实现竟然不做时间连续处理,出现下面情形。N星期前,也曾看到部分代码,时间连续处理竟然是以一天为时间间隔查询数据库,最近1月的统计竟然需要查询30+次。在此列一下按照日统计数据的sql和自己写的一个时间连续处理函数.1.测试表为test字段1:increase(int型,表每天增加)字段2:optime(int

2014-09-03 11:28:24 1226

原创 Python多线程和Python的锁

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

2014-09-03 11:28:18 763

原创 MySQL Connector/Python

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

2014-09-03 11:28:13 1121 1

原创 Mysql 查询缓存

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

2014-09-03 11:28:08 1928

原创 Mysql 慢查询日志

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

2014-09-03 11:28:03 415

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

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

2014-09-03 11:27:58 9723

原创 利用mysql的binlog恢复数据

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

2014-09-03 11:27:53 495

原创 PHP-模板(template)模式

1.定义:定义一个操作的算法的框架,将一些步骤的实现推迟到子类.其实意思就是操作的算法的骨架不变,即规定好了第一步应该干什么,第二步干什么,再次干什么,但是不规定具体内容.2.图示AbstractClass(抽象类):定义了一到多个的抽象方法,以供具体的子类来实现它们;而且还要实现一个模板方法,来定义一个算法的骨架。ConcreteClass(具体类):实现父类中的抽象方法以完成算法中与

2014-09-03 11:27:48 855

原创 PHP-中介者模式

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

2014-09-03 11:27:43 463

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

1.判断是POST/GET请求这个大家都知道了,就是$_SERVER['REQUEST_METHOD']返回用户的请求方式; i.e. 'GET', 'HEAD', 'POST', 'PUT'.eg:2.判断是AJAX请求框架中频繁用到:$_SERVER['HTTP_X_REQUESTED_WITH']来判断是否Ajax提交.  其实$_SERVER数组中无HTTP_X_REQUEST

2014-09-03 11:27:38 1391

原创 Yiic介绍

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

2014-09-03 11:27:33 3737

原创 Yii的log分析

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

2014-09-03 11:27:27 581

业务流程语言BPEL编程思想及架构

业务流程语言BPEL编程思想及架构 其他不解释

2011-03-09

Web服务搜索与执行引擎——WSDL与SOAP

Web服务搜索与执行引擎——WSDL与SOAP

2011-03-09

空空如也

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

TA关注的人

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