<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[落叶成冰]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/u012302539</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u012302539]]></copyright><item><title><![CDATA[PHP 命令行参数解析工具类]]></title><link>https://blog.youkuaiyun.com/u012302539/article/details/62045208</link><guid>https://blog.youkuaiyun.com/u012302539/article/details/62045208</guid><author>u012302539</author><pubDate>Tue, 14 Mar 2017 16:43:56 +0800</pubDate><description><![CDATA[<?php
/**
 * 命令行参数解析工具类
 * @author guolinchao
 */
class CommandLine
{
	// 临时记录短选项的选项值
	private static $shortOptVal = null;
	// options value
	private static $optsArr = array();
	// command args
	priva]]></description><category></category></item><item><title><![CDATA[REPLACE INTO 和 INSERT INTO ... ON DUPLICATE KEY UPDATE SET ...]]></title><link>https://blog.youkuaiyun.com/u012302539/article/details/61936392</link><guid>https://blog.youkuaiyun.com/u012302539/article/details/61936392</guid><author>u012302539</author><pubDate>Mon, 13 Mar 2017 23:11:35 +0800</pubDate><description><![CDATA[REPLACE INTO 的三种形式：
1. replace into tbl_name (col_name, ...) values (...)
2. replace into tbl_name (col_name, ...) select ...
3. replace into tbl_name set col_name=value, ...

REPLACE INTO 和 INSERT]]></description><category></category></item><item><title><![CDATA[MySQL 视图]]></title><link>https://blog.youkuaiyun.com/u012302539/article/details/61927189</link><guid>https://blog.youkuaiyun.com/u012302539/article/details/61927189</guid><author>u012302539</author><pubDate>Mon, 13 Mar 2017 20:57:19 +0800</pubDate><description><![CDATA[创建视图
create [algorithm = merge | temptable | undefined ] view VIEW_NAME 
as SELECT_STATEMENT 
[with check option];

/*
algorithm:
merge		使用合并算法处理视图
temptable	使用临时表算法处理视图
undefined	自动选择，默认值

with chec]]></description><category></category></item><item><title><![CDATA[MySQL 触发器]]></title><link>https://blog.youkuaiyun.com/u012302539/article/details/61430740</link><guid>https://blog.youkuaiyun.com/u012302539/article/details/61430740</guid><author>u012302539</author><pubDate>Sat, 11 Mar 2017 22:26:59 +0800</pubDate><description><![CDATA[查看触发器
show triggers;

删除触发器
drop trigger [if exists] [schema_name.]trigger_name;

修改触发器
触发器不能被更新或者覆盖，若要修改，则需先删除然后再创建。


创建触发器
create trigger TRIGGER_NAME
after | before				-- 触发时间
insert | up]]></description><category></category></item><item><title><![CDATA[MySQL 游标]]></title><link>https://blog.youkuaiyun.com/u012302539/article/details/61198288</link><guid>https://blog.youkuaiyun.com/u012302539/article/details/61198288</guid><author>u012302539</author><pubDate>Fri, 10 Mar 2017 15:54:40 +0800</pubDate><description><![CDATA[声明游标
declare CURSOR_NAME curosr for SELECT_STATEMENT;

打开游标
open CURSOR_NAME;

关闭游标
close CURSOR_NAME;

从游标中取数据
fetch CURSOR_NAME into var1, var2, ...;

示例1：
delimiter //
drop procedure if ex]]></description><category></category></item><item><title><![CDATA[MySQL 之 SQL 编程]]></title><link>https://blog.youkuaiyun.com/u012302539/article/details/61197879</link><guid>https://blog.youkuaiyun.com/u012302539/article/details/61197879</guid><author>u012302539</author><pubDate>Fri, 10 Mar 2017 15:41:11 +0800</pubDate><description><![CDATA[一、注释
# 单行注释
-- (两个横线一个空格) 单行注释
/* */ 多行注释





二、语句分隔符
默认的有以下三种
; \g \G

修改语句分隔符
delimiter DELIM;	#除了 \，任何字符都可以作为语句分隔符



三、变量
1. 定义变量
set var=valur 或者 set var:=value
select STATEM]]></description><category></category></item><item><title><![CDATA[有限状态机的简单使用案例：“将字符串中多于一个的空格变为一个空格输出”]]></title><link>https://blog.youkuaiyun.com/u012302539/article/details/60902367</link><guid>https://blog.youkuaiyun.com/u012302539/article/details/60902367</guid><author>u012302539</author><pubDate>Thu, 09 Mar 2017 00:55:20 +0800</pubDate><description><![CDATA[<?php
// 有限状态机的简单应用
// 解决问题：将字符串中多于一个的空格变为一个空格输出

$str = 'Memcached   is  simple  yet    powerful.'; //最初字符串
var_dump($str);

$state = 0; // 初始状态
$index = 0;
$len = strlen($str); // str length
$input ]]></description><category></category></item><item><title><![CDATA[PHP 使用 openssl 扩展实现公钥加密]]></title><link>https://blog.youkuaiyun.com/u012302539/article/details/60779715</link><guid>https://blog.youkuaiyun.com/u012302539/article/details/60779715</guid><author>u012302539</author><pubDate>Tue, 07 Mar 2017 21:18:04 +0800</pubDate><description><![CDATA[使用 openssl 命令生成公钥和私钥
// 生成私钥
# openssl genrsa -out rsa_private_key.pem 1024
// 生成公钥
# openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem



下面是示例代码：
<?php
// openssl 扩展检测
var_dum]]></description><category></category></item><item><title><![CDATA[php 扩展 hash 模块的基本使用]]></title><link>https://blog.youkuaiyun.com/u012302539/article/details/60605393</link><guid>https://blog.youkuaiyun.com/u012302539/article/details/60605393</guid><author>u012302539</author><pubDate>Mon, 06 Mar 2017 22:31:07 +0800</pubDate><description><![CDATA[<?php
echo '';

$algos = hash_algos(); //列出所有支持的hash算法
// print_r($algos);


// ------------------------------------------------------
// 字符串hash
$data = 'The quick brown fox jumped over the lazy dog.]]></description><category></category></item><item><title><![CDATA[php 正则表达式匹配中文字符]]></title><link>https://blog.youkuaiyun.com/u012302539/article/details/60364896</link><guid>https://blog.youkuaiyun.com/u012302539/article/details/60364896</guid><author>u012302539</author><pubDate>Sat, 04 Mar 2017 23:03:15 +0800</pubDate><description><![CDATA[<?php
$str = 'i love you, 中国';
// $str = 'i love you, ';
// if(preg_match('/[\x7f-\xff]/i',$str)) { //
if(preg_match('/[\x{4e00}-\x{9fa5}]+/u',$str)) { // 可以没有花括号, /[\x4e00-\x9fa5]+/u
	echo '字符串中含有中文!]]></description><category></category></item><item><title><![CDATA[PHP 加密扩展 mcrypt 的基本使用]]></title><link>https://blog.youkuaiyun.com/u012302539/article/details/58692259</link><guid>https://blog.youkuaiyun.com/u012302539/article/details/58692259</guid><author>u012302539</author><pubDate>Tue, 28 Feb 2017 22:56:14 +0800</pubDate><description><![CDATA[Mcrypt 支持以下四种分组密码模式：CBC， OFB，CFB 和 ECB。 如果使用 libmcrypt-2.4.x 或更高版本链接， 还可以
支持 nOFB 分组模式 和 流 模式。 下列是所支持的加密模式以及其对应的预定义常量。
1. MCRYPT_MODE_ECB (electronic codebook) 适用于随机数据， 比如可以用这种模式来加密其他密钥。 由于要加密
的数据很]]></description><category></category></item><item><title><![CDATA[《MySQL技术内幕 InnoDB存储引擎》一书中用于查看数据页内容的python小工具]]></title><link>https://blog.youkuaiyun.com/u012302539/article/details/58686581</link><guid>https://blog.youkuaiyun.com/u012302539/article/details/58686581</guid><author>u012302539</author><pubDate>Tue, 28 Feb 2017 22:20:21 +0800</pubDate><description><![CDATA[工具包中用到的三个文件内容如下：
include.py
#encoding=utf-8
INNODB_PAGE_SIZE=1024*16 # InnoDB Page 16K

# Start of the data on the page
FIL_PAGE_DATA = 38

FIL_PAGE_OFFSET = 4 # page offset inside space
FIL_PAGE_TY]]></description><category></category></item><item><title><![CDATA[MySQL 关于日志的一些配置参数总结]]></title><link>https://blog.youkuaiyun.com/u012302539/article/details/58300900</link><guid>https://blog.youkuaiyun.com/u012302539/article/details/58300900</guid><author>u012302539</author><pubDate>Mon, 27 Feb 2017 22:27:42 +0800</pubDate><description><![CDATA[============================================================
日志管理
============================================================
1. 错误日志
log_error = {datadir}/{HOSTNAME}.err
错误日志, 通常在 datadir 目录下, ]]></description><category></category></item><item><title><![CDATA[PHP 实现猜数游戏]]></title><link>https://blog.youkuaiyun.com/u012302539/article/details/57625780</link><guid>https://blog.youkuaiyun.com/u012302539/article/details/57625780</guid><author>u012302539</author><pubDate>Mon, 27 Feb 2017 00:39:49 +0800</pubDate><description><![CDATA[猜数游戏有两种玩法：
第一种：两个人玩，一方出数字，一方猜。出数字的人要想好一个指定位数的数，数字可重复，不能让猜的人知道。
猜的人就可以开始猜。每猜一个数，出数者就要说大过或小过出的数。

第二种：两个人玩，一方出数字，一方猜。出数字的人要先想好一个没有重复数字的4位数，不能让猜的人知道。猜的
人就可以开始猜。每猜一个数，出数者就要根据这个数字给出几A几B，其中A前面的数字表示位置正确]]></description><category></category></item><item><title><![CDATA[xcache 的安装及配置文件参数解释]]></title><link>https://blog.youkuaiyun.com/u012302539/article/details/57407959</link><guid>https://blog.youkuaiyun.com/u012302539/article/details/57407959</guid><author>u012302539</author><pubDate>Sun, 26 Feb 2017 12:26:52 +0800</pubDate><description><![CDATA[下载地址:
http://xcache.lighttpd.net/wiki/Release-3.2.0


编译安装：
# wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz
# tar -zxvf xcache-3.2.0.tar.gz
# cd xcache-3.2.0
# /usr/local]]></description><category></category></item><item><title><![CDATA[show processlist 命令执行结果解释]]></title><link>https://blog.youkuaiyun.com/u012302539/article/details/57130290</link><guid>https://blog.youkuaiyun.com/u012302539/article/details/57130290</guid><author>u012302539</author><pubDate>Sat, 25 Feb 2017 22:09:48 +0800</pubDate><description><![CDATA[show [full] processlist;
show processlist 显示哪些线程正在运行。也可以通过 INFORMATION_SCHEMA.PROCESSLIST 表或 mysqladmin
 processlit 获取这些信息。如果拥有 process 权限，将可以看到所有的线程。否则，只能看到和您正在使用的MySQL
 账号相关的线程。如果不使用 full 关键字，则只显]]></description><category></category></item><item><title><![CDATA[pkcs5填充]]></title><link>https://blog.youkuaiyun.com/u012302539/article/details/56841522</link><guid>https://blog.youkuaiyun.com/u012302539/article/details/56841522</guid><author>u012302539</author><pubDate>Fri, 24 Feb 2017 15:00:42 +0800</pubDate><description><![CDATA[<?php
/**
 * pkcs5 padding
 */
function pkcs5_pad($text, $blocksize = 8) {
	// $pad 既是要填充的值也是要填充的长度
	$pad = $blocksize - (strlen($text) % $blocksize);
	return $text . str_repeat(chr($pad), $pad);
}

/]]></description><category></category></item><item><title><![CDATA[状态模式]]></title><link>https://blog.youkuaiyun.com/u012302539/article/details/56838055</link><guid>https://blog.youkuaiyun.com/u012302539/article/details/56838055</guid><author>u012302539</author><pubDate>Fri, 24 Feb 2017 12:57:48 +0800</pubDate><description><![CDATA[<?php
// 状态模式

class State
{
	// 有效状态常量值
	const st_dev = 0;
	const st_deploy = 1;
	const st_debug = 2;
	private $st = -1; //初始状态-1
	
	public function __construct($st=null) {
		if(!is_null($st)) {
			$]]></description><category></category></item><item><title><![CDATA[解释器模式的一个简单示例]]></title><link>https://blog.youkuaiyun.com/u012302539/article/details/56837334</link><guid>https://blog.youkuaiyun.com/u012302539/article/details/56837334</guid><author>u012302539</author><pubDate>Fri, 24 Feb 2017 12:34:52 +0800</pubDate><description><![CDATA[<?php
// 解释器模式

abstract class Expression
{
	private static $keyCount = 0;
	private $key = NULL;

	abstract function interpret(InterpreterContext $ctx);

	/**
	 * as array key
	 * @return auto increme]]></description><category></category></item><item><title><![CDATA[设计模式中的六大原则]]></title><link>https://blog.youkuaiyun.com/u012302539/article/details/56677714</link><guid>https://blog.youkuaiyun.com/u012302539/article/details/56677714</guid><author>u012302539</author><pubDate>Thu, 23 Feb 2017 18:47:41 +0800</pubDate><description><![CDATA[单一职责原则
定义：不要存在多于一个导致类变更的原因。通俗的说，即一个类只负责一项职责。



里氏替换原则
定义1：如果对每一个类型为 T1 的对象 o1，都有类型为 T2 的对象o2，使得以 T1 定义的所有程序 P 在所有的对象 o1
都代换成 o2 时，程序 P 的行为没有发生变化，那么类型 T2 是类型 T1 的子类型。

定义2：所有引用基类的地方必须能透明地使用其子]]></description><category></category></item></channel></rss>