<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[orangeholic的专栏]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/orangeholic</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; orangeholic]]></copyright><item><title><![CDATA[深入PHP-直观观察array的扩展]]></title><link>https://blog.csdn.net/orangeholic/article/details/44855507</link><guid>https://blog.csdn.net/orangeholic/article/details/44855507</guid><author>orangeholic</author><pubDate>Fri, 03 Apr 2015 14:58:23 +0800</pubDate><description><![CDATA[皆知PHP的数组是由HashTable和双链表实现的，为了方便大家查看数组的数据结构，开发一个遍历PHP的数组生成Dot描述的PHP插件，生成dot描述以后可以通过一些渲染工具生成图像，本例用的是 Graphviz。 
        扩展的实现很简单，PHP数组源码是由下面的两种结构体实现的，扩展就是将这两种结构体和各个结构体的关系遍历一遍，生成对应的Dot描述即可。 


Java代码]]></description><category></category></item><item><title><![CDATA[PHP延迟静态绑定]]></title><link>https://blog.csdn.net/orangeholic/article/details/42581987</link><guid>https://blog.csdn.net/orangeholic/article/details/42581987</guid><author>orangeholic</author><pubDate>Sat, 10 Jan 2015 12:12:57 +0800</pubDate><description><![CDATA[延迟静态绑定]]></description><category></category></item><item><title><![CDATA[UDP socket_read接收数据导致错误Resource temporarily unavailable]]></title><link>https://blog.csdn.net/orangeholic/article/details/41851345</link><guid>https://blog.csdn.net/orangeholic/article/details/41851345</guid><author>orangeholic</author><pubDate>Wed, 10 Dec 2014 20:36:32 +0800</pubDate><description><![CDATA[项目中经常用到PHP用UDP调用C++服务，我们这边的PHP 请求方法封装如下，一直没有问题出现，今天接入新的服务出现了问题
   
   public static  function request($reqBuffer,$host,$port)
    {

        $socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
  ]]></description><category></category></item><item><title><![CDATA[PHP RSA加解密示例]]></title><link>https://blog.csdn.net/orangeholic/article/details/41593953</link><guid>https://blog.csdn.net/orangeholic/article/details/41593953</guid><author>orangeholic</author><pubDate>Sat, 29 Nov 2014 11:00:18 +0800</pubDate><description><![CDATA[1.生成密钥和公钥
开始前需要准备openssl环境
linux 需要安装openssl工具包，传送门http://www.openssl.org/source/
window 下需要安装openssl的程序，传送门http://slproweb.com/products/Win32OpenSSL.html
如果不想安装，可以用本例提供的密钥和公钥进行测试。


密钥生成
open]]></description><category></category></item><item><title><![CDATA[夭折的会员开通系统]]></title><link>https://blog.csdn.net/orangeholic/article/details/40870327</link><guid>https://blog.csdn.net/orangeholic/article/details/40870327</guid><author>orangeholic</author><pubDate>Thu, 06 Nov 2014 22:39:27 +0800</pubDate><description><![CDATA[花了半个月实现实现的会员开通系统，最近需求更改导致这个系统报废........ ,  心里几万匹羊驼在咆哮。在这里留个存档，表明俺也奋斗过。


系统用了陈硕的muduo网络库，被我们这边同事改进，增加了UDP支持以适配公司的内部协议。


整个系统有3个模块，接收用户付账信息模块、订单处理模块和用户会员信息存储模块。各模块通讯通过protobuf编码的UDP协议。接收用户付账信息模块]]></description><category></category></item><item><title><![CDATA[boost::function对象  convert  函数指针]]></title><link>https://blog.csdn.net/orangeholic/article/details/40654761</link><guid>https://blog.csdn.net/orangeholic/article/details/40654761</guid><author>orangeholic</author><pubDate>Fri, 31 Oct 2014 14:55:26 +0800</pubDate><description><![CDATA[boost::function对象与函数指针比较相似，优点在于它拥有更大的弹性，目标既可以是普通函数、函数对象或者类的成员函数，而且还可绑定参数，给回调提供了极大的方便。但是C语言的函数是不支持boost::function对象的，当需要函数指针的C函数填写上boost::function对象时候，就出现下面的error


cannot convert 'boost::function' ]]></description><category></category></item><item><title><![CDATA[PHP中的Iterator、ArrayAccess、Countable接口]]></title><link>https://blog.csdn.net/orangeholic/article/details/39025249</link><guid>https://blog.csdn.net/orangeholic/article/details/39025249</guid><author>orangeholic</author><pubDate>Wed, 03 Sep 2014 11:29:05 +0800</pubDate><description><![CDATA[使用接口（interface），可以指定某个类必须实现（可空实现）一簇方法，实现关键字为  implements, 类可以实现多个接口，用逗号来分隔多个接口的名称。按理说interface是PHP开发中依赖倒置原则的重要力量，但是PHP弱类型特性使其地位非常尴尬，除非为了多继承，在项目中还真没有它来干过啥。PHP提供的多个接口主要是让对象试用数组的操作方式，在此主要介绍一下Iterator、A]]></description><category></category></item><item><title><![CDATA[PHP简单的手机验证码验证过程]]></title><link>https://blog.csdn.net/orangeholic/article/details/39025247</link><guid>https://blog.csdn.net/orangeholic/article/details/39025247</guid><author>orangeholic</author><pubDate>Wed, 03 Sep 2014 11:28:59 +0800</pubDate><description><![CDATA[做过一个需求：广告主后台发起调查活动，普通用户参加此调查后跳转值某个网址领取1Q点（1角钱）；上线一段时间以后，广告主反馈得到的很多手机号都是伪造的（我们开始只用正则匹配判断手机号正确与否），然后产品让我们加上手机短信验证，就变成了下面的样子.刚开始的思路应该很正常的那种,用rand生成随机码，然后存在redis里边，设置expire为60秒；后来考虑考虑，用户为了1角钱不至于如此，需要]]></description><category></category></item><item><title><![CDATA[PHP uniqid函数执行缓慢的问题]]></title><link>https://blog.csdn.net/orangeholic/article/details/39025243</link><guid>https://blog.csdn.net/orangeholic/article/details/39025243</guid><author>orangeholic</author><pubDate>Wed, 03 Sep 2014 11:28:49 +0800</pubDate><description><![CDATA[前段时间某个需求：客户提交简单的表单可以创建一个适应于全终端（PC，Pad，Phone）的刮刮卡活动H5页面，其中涉及到客户可在线生成限额6W奖品码的功能。因为需要保持每个活动奖品码的唯一，我们先是准备用PHP的uniqid函数来生成UUID（Universally Unique IDentifier，也叫GUID，为全局唯一标识符，是一种由算法生成的唯一标识）来生成。但当我们用生成1W测]]></description><category></category></item><item><title><![CDATA[PHP环境时区设置成Asia/Chongqing导致的一个bug]]></title><link>https://blog.csdn.net/orangeholic/article/details/39025241</link><guid>https://blog.csdn.net/orangeholic/article/details/39025241</guid><author>orangeholic</author><pubDate>Wed, 03 Sep 2014 11:28:44 +0800</pubDate><description><![CDATA[得到某个时间戳所对应的日期的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]]></description><category></category></item><item><title><![CDATA[用redis实现用户登录计数]]></title><link>https://blog.csdn.net/orangeholic/article/details/39025239</link><guid>https://blog.csdn.net/orangeholic/article/details/39025239</guid><author>orangeholic</author><pubDate>Wed, 03 Sep 2014 11:28:39 +0800</pubDate><description><![CDATA[最近有个问题 ：实现显示用户本月登录日期 ，累计天数到一定数目可参加活动，和下图展示的功能类似。

 
过去看过使用redis bitmap进行活跃用户统计的例子，觉得和本功能非常match，决定用redis的bitset来实现。
 
每个用户每月产生一个key，字段意义如下 0 位表示某月1日登录  ，1表示某月2日登录，以此类推。
 
每个用户一月的活跃度需要8byte，1W用户每]]></description><category></category></item><item><title><![CDATA[PHP编码的几个最佳实践]]></title><link>https://blog.csdn.net/orangeholic/article/details/39025237</link><guid>https://blog.csdn.net/orangeholic/article/details/39025237</guid><author>orangeholic</author><pubDate>Wed, 03 Sep 2014 11:28:34 +0800</pubDate><description><![CDATA[继续说说PHP的几个编码优化1.用逗号连接echo字符串$name='orange';
$address='BeiJing';
echo 'Hi,'.$name.'! Welcome to '.$address;//慢
echo 'Hi,',$name,'! Welcome to ',$address;//快，建议方式原因可以查看两者的opcode，用逗号的方式和用点号方式的opco]]></description><category></category></item><item><title><![CDATA[前端优化的一些地方(JS/CSS/图片)]]></title><link>https://blog.csdn.net/orangeholic/article/details/39025233</link><guid>https://blog.csdn.net/orangeholic/article/details/39025233</guid><author>orangeholic</author><pubDate>Wed, 03 Sep 2014 11:28:29 +0800</pubDate><description><![CDATA[最近翻了翻，总结一下一.督促你的客户选用更快的浏览器，这样才能体验到更快的加载速度！具体什么的就不说了，上一张图，下图为Gomez收集了200个网站的18.6亿个别值，时间范围为1个月，得出的真实上网环境中的数据。图中蓝色代表网页加载速度，绿色代表渲染时间。二.Javascript的优化1.用Firebug查找执行消耗时间最长的Javascript函数。可通过Firebug控制]]></description><category></category></item><item><title><![CDATA[时间连续处理函数(PHP)]]></title><link>https://blog.csdn.net/orangeholic/article/details/39025229</link><guid>https://blog.csdn.net/orangeholic/article/details/39025229</guid><author>orangeholic</author><pubDate>Wed, 03 Sep 2014 11:28:24 +0800</pubDate><description><![CDATA[前几天看他人项目代码，有一功能为统计最近1月某功能的使用总量，代码实现竟然不做时间连续处理，出现下面情形。N星期前，也曾看到部分代码，时间连续处理竟然是以一天为时间间隔查询数据库，最近1月的统计竟然需要查询30+次。在此列一下按照日统计数据的sql和自己写的一个时间连续处理函数.1.测试表为test字段1：increase（int型，表每天增加）字段2：optime（int]]></description><category></category></item><item><title><![CDATA[Python多线程和Python的锁]]></title><link>https://blog.csdn.net/orangeholic/article/details/39025225</link><guid>https://blog.csdn.net/orangeholic/article/details/39025225</guid><author>orangeholic</author><pubDate>Wed, 03 Sep 2014 11:28:18 +0800</pubDate><description><![CDATA[Python多线程Python中实现多线程有两种方式，一种基于_thread模块(在Python2.x版本中为thread模块，没有下划线)的start_new_thread()函数，另一种基于threading模块的Thread类。其实Python的多线程编程不能真正利用多核的CPU，但是用开源模块使你的计算压力分布到多核CPU上.........一.使用start_new_thread]]></description><category></category></item><item><title><![CDATA[MySQL Connector/Python]]></title><link>https://blog.csdn.net/orangeholic/article/details/39025219</link><guid>https://blog.csdn.net/orangeholic/article/details/39025219</guid><author>orangeholic</author><pubDate>Wed, 03 Sep 2014 11:28:13 +0800</pubDate><description><![CDATA[MySQL Connector/Python 是 MySQL 官方提供的 Python 连接 MySQL 数据库的驱动程序.下载地址为： http://www.mysql.com/downloads/connector/python/，到现在位置发布支持Python2.7，Python3.2的版本，Python3.3的版本正在开发中，支持Python3.*的连接驱动真是太少，而且论坛的Python]]></description><category></category></item><item><title><![CDATA[Mysql 查询缓存]]></title><link>https://blog.csdn.net/orangeholic/article/details/39025213</link><guid>https://blog.csdn.net/orangeholic/article/details/39025213</guid><author>orangeholic</author><pubDate>Wed, 03 Sep 2014 11:28:08 +0800</pubDate><description><![CDATA[Mysql 查询缓存查询缓存的作用就是当查询接收到一个和之前同样的查询，服务器将会从查询缓存种检索结果，而不是再次分析和执行上次的查询。这样就大大提高了性能，节省时间。1.配置查询缓存 修改配置文件，修改[mysqld]下的query_cache_size和query_cache_type（如果没有则添加）。其中query_cache_size表示缓存的大小，而query_cache_typ]]></description><category></category></item><item><title><![CDATA[Mysql 慢查询日志]]></title><link>https://blog.csdn.net/orangeholic/article/details/39025209</link><guid>https://blog.csdn.net/orangeholic/article/details/39025209</guid><author>orangeholic</author><pubDate>Wed, 03 Sep 2014 11:28:03 +0800</pubDate><description><![CDATA[mysql慢查询日志对于跟踪有问题的查询非常有用，可以分析出代码实现中耗费资源的sql语句，对我们程序的优化有很高的参考。本篇主要将慢查询日志的开启，日志分析，这也是优化SQL程序的一般步骤中至关重要的一步。1.mysql慢查询日志          打开mysql的慢查询日志很简单,只需要在mysql的配置文件里(windows系统是my.ini,linux系统是my.cnf)的[mysq]]></description><category></category></item><item><title><![CDATA[如何在邮件中嵌入图片，而非上传在附件]]></title><link>https://blog.csdn.net/orangeholic/article/details/39025207</link><guid>https://blog.csdn.net/orangeholic/article/details/39025207</guid><author>orangeholic</author><pubDate>Wed, 03 Sep 2014 11:27:58 +0800</pubDate><description><![CDATA[现在好的邮件客户端如outlook等支持直接插入图片，接收方阅读时也表现为非附件形式. 但是如果我们用代码实现呢？我们可以用下面2种方式实现1.可以将图片传到有外链的网站，这个就无需介绍了，如果图片不变化，推荐这种形式。2.采用base 64编码的方式，在此重点讲讲这种方式。嵌入图片，可以说这是HTML的知识例了1.首先需要准备图片，这里有个限制，我们在最后说明。2.对图片进]]></description><category></category></item><item><title><![CDATA[利用mysql的binlog恢复数据]]></title><link>https://blog.csdn.net/orangeholic/article/details/39025205</link><guid>https://blog.csdn.net/orangeholic/article/details/39025205</guid><author>orangeholic</author><pubDate>Wed, 03 Sep 2014 11:27:53 +0800</pubDate><description><![CDATA[MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个:	* 数据回复	* 主从数据库。用于slave端执行增删改，保持与master同步。1.开启binary log功能     需要修改mysql的配置文件，本篇的实验环境是win7，配置文件为mysql安装目录\MySQL Server 5.1下的my.ini,添]]></description><category></category></item></channel></rss>