- 博客(63)
- 资源 (1)
- 收藏
- 关注
原创 PHP 命令行参数解析工具类
<?php/** * 命令行参数解析工具类 * @author guolinchao */class CommandLine{ // 临时记录短选项的选项值 private static $shortOptVal = null; // options value private static $optsArr = array(); // command args priva
2017-03-14 16:43:56
2827
原创 REPLACE INTO 和 INSERT INTO ... ON DUPLICATE KEY UPDATE SET ...
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
2017-03-13 23:11:35
425
原创 MySQL 视图
创建视图create [algorithm = merge | temptable | undefined ] view VIEW_NAME as SELECT_STATEMENT [with check option];/*algorithm:merge 使用合并算法处理视图temptable 使用临时表算法处理视图undefined 自动选择,默认值with chec
2017-03-13 20:57:19
416
原创 MySQL 触发器
查看触发器show triggers;删除触发器drop trigger [if exists] [schema_name.]trigger_name;修改触发器触发器不能被更新或者覆盖,若要修改,则需先删除然后再创建。创建触发器create trigger TRIGGER_NAMEafter | before -- 触发时间insert | up
2017-03-11 22:26:59
327
原创 MySQL 游标
声明游标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
2017-03-10 15:54:40
336
原创 MySQL 之 SQL 编程
一、注释# 单行注释-- (两个横线一个空格) 单行注释/* */ 多行注释二、语句分隔符默认的有以下三种; \g \G修改语句分隔符delimiter DELIM; #除了 \,任何字符都可以作为语句分隔符三、变量1. 定义变量set var=valur 或者 set var:=valueselect STATEM
2017-03-10 15:41:11
1137
原创 有限状态机的简单使用案例:“将字符串中多于一个的空格变为一个空格输出”
<?php// 有限状态机的简单应用// 解决问题:将字符串中多于一个的空格变为一个空格输出$str = 'Memcached is simple yet powerful.'; //最初字符串var_dump($str);$state = 0; // 初始状态$index = 0;$len = strlen($str); // str length$input
2017-03-09 00:55:20
460
原创 PHP 使用 openssl 扩展实现公钥加密
使用 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
2017-03-07 21:18:04
6254
原创 php 扩展 hash 模块的基本使用
<?phpecho '';$algos = hash_algos(); //列出所有支持的hash算法// print_r($algos);// ------------------------------------------------------// 字符串hash$data = 'The quick brown fox jumped over the lazy dog.
2017-03-06 22:31:07
1885
原创 php 正则表达式匹配中文字符
<?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 '字符串中含有中文!
2017-03-04 23:03:15
886
原创 PHP 加密扩展 mcrypt 的基本使用
Mcrypt 支持以下四种分组密码模式:CBC, OFB,CFB 和 ECB。 如果使用 libmcrypt-2.4.x 或更高版本链接, 还可以支持 nOFB 分组模式 和 流 模式。 下列是所支持的加密模式以及其对应的预定义常量。1. MCRYPT_MODE_ECB (electronic codebook) 适用于随机数据, 比如可以用这种模式来加密其他密钥。 由于要加密的数据很
2017-02-28 22:56:14
1928
原创 《MySQL技术内幕 InnoDB存储引擎》一书中用于查看数据页内容的python小工具
工具包中用到的三个文件内容如下:include.py#encoding=utf-8INNODB_PAGE_SIZE=1024*16 # InnoDB Page 16K# Start of the data on the pageFIL_PAGE_DATA = 38FIL_PAGE_OFFSET = 4 # page offset inside spaceFIL_PAGE_TY
2017-02-28 22:20:21
441
原创 MySQL 关于日志的一些配置参数总结
============================================================日志管理============================================================1. 错误日志log_error = {datadir}/{HOSTNAME}.err错误日志, 通常在 datadir 目录下,
2017-02-27 22:27:42
436
原创 PHP 实现猜数游戏
猜数游戏有两种玩法:第一种:两个人玩,一方出数字,一方猜。出数字的人要想好一个指定位数的数,数字可重复,不能让猜的人知道。猜的人就可以开始猜。每猜一个数,出数者就要说大过或小过出的数。第二种:两个人玩,一方出数字,一方猜。出数字的人要先想好一个没有重复数字的4位数,不能让猜的人知道。猜的人就可以开始猜。每猜一个数,出数者就要根据这个数字给出几A几B,其中A前面的数字表示位置正确
2017-02-27 00:39:49
4305
1
原创 xcache 的安装及配置文件参数解释
下载地址: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
2017-02-26 12:26:52
2590
原创 show processlist 命令执行结果解释
show [full] processlist;show processlist 显示哪些线程正在运行。也可以通过 INFORMATION_SCHEMA.PROCESSLIST 表或 mysqladmin processlit 获取这些信息。如果拥有 process 权限,将可以看到所有的线程。否则,只能看到和您正在使用的MySQL 账号相关的线程。如果不使用 full 关键字,则只显
2017-02-25 22:09:48
3273
原创 pkcs5填充
<?php/** * pkcs5 padding */function pkcs5_pad($text, $blocksize = 8) { // $pad 既是要填充的值也是要填充的长度 $pad = $blocksize - (strlen($text) % $blocksize); return $text . str_repeat(chr($pad), $pad);}/
2017-02-24 15:00:42
3214
原创 状态模式
<?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)) { $
2017-02-24 12:57:48
261
原创 解释器模式的一个简单示例
<?php// 解释器模式abstract class Expression{ private static $keyCount = 0; private $key = NULL; abstract function interpret(InterpreterContext $ctx); /** * as array key * @return auto increme
2017-02-24 12:34:52
701
原创 设计模式中的六大原则
单一职责原则定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。里氏替换原则定义1:如果对每一个类型为 T1 的对象 o1,都有类型为 T2 的对象o2,使得以 T1 定义的所有程序 P 在所有的对象 o1都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型。定义2:所有引用基类的地方必须能透明地使用其子
2017-02-23 18:47:41
333
原创 访问者模式
<?php// 访问者模式interface Visitor{ public function visit(Subject $subject);}interface Subject{ public function accept(Visitor $visitor); public function operation();}class ConcreteVisitor im
2017-02-23 00:53:58
188
原创 组合模式实现方式二
<?php// 组合模式interface Component{ public function doAction(); public function addComponent(Component $c); public function removeComponent(Component $c);}abstract class AbstractComponent{ //
2017-02-22 15:55:56
409
原创 组合模式实现方式一
<?php// 组合模式function echoLine($msg) { echo $smg, '';}interface Component{ public function doAction();}/** * 局部类 */class Leaf implements Component{ public function doAction() { echo
2017-02-22 15:49:02
374
原创 适配器模式之接口适配
<?php// 适配器模式-接口适配/** * 问题:实现此接口的类需要实现所有的方法,但是实际使用的仅仅是其中的某一个方法而已,比较繁琐 * 解决方法:增加一个中间类,对所有的方法空实现,然后不再直接实现接口而是继承这个中间类 * 这就是 接口适配. */interface Sourceable{ function action1(); function action2()
2017-02-22 12:01:18
335
原创 适配器模式之对象适配
<?php// 适配器模式-对象适配/** * 需要被适配的类 * 需求:给 Source 新增一个新的方法但又不修改 Source 的源代码 */class Source{ public function action() { echo 'call action', ''; }}interface Targetable{ /** * Source 类中同名的
2017-02-22 11:51:03
337
原创 适配器模式之类适配
<?php// 适配器模式-类适配/** * 需要被适配的类 * 需求:给 Source 新增一个新的方法但又不修改 Source 的源代码 */class Source{ public function action() { echo 'call action', ''; }}interface Targetable{ /** * Source 类中同名的方
2017-02-22 11:43:43
249
原创 命令模式的简单实现
<?php// 命令模式interface Command{ public function execute();}/** * concrete command, 具体的命令 */class ConcreteCommand implements Command{ private $receiver; public function __construct(Receiv
2017-02-22 00:40:06
250
原创 PHP对观察者模式的原生支持
<?php// 观察者模式// PHP(SPL)原生支持/*类摘要SplSubject { abstract public void attach ( SplObserver $observer ); abstract public void detach ( SplObserver $observer ); abstract public void notify ( void )
2017-02-21 15:34:32
261
原创 观察者模式
<?php// 观察者模式/** * abstract subject */interface Subject{ /** * add Observer */ public function attach(Observer $obs); /** * remove Observer */ public function detach(Observer $obs
2017-02-21 15:26:52
301
原创 单例模式之继承碰见的问题
<?php// 单例模式之继承class Singleton{ protected static $ins = null; private final function __construct() { } protected final function __clone() { } // public static function getIns() { // if(se
2017-02-21 10:49:59
2207
原创 单例模式
<?php// 单例模式class Singleton{ protected static $ins = null; /** * 禁止子类重载 __construct() 构造方法 */ private final function __construct() { // 禁止 new } /** * 禁止子类重载 __clone() 方法 */ prot
2017-02-21 10:14:49
278
原创 外观模式
<?php// 外观模式function echoLine($msg) { echo $msg, '';}/** * 外观模式是一个十分简单的概念,它只是为一个分层或一个子系统创建一个单一的入口。这会带来很多好处。 * 首先,有助于分离项目中不同的部分。其次,对于客户端开发者来说,访问代码变得简洁,非常方便。另外, * 由于只在一个地方调用子系统,减少了出错的可能性,并因此可以
2017-02-20 22:13:38
190
原创 建造者模式
<?php// 建造者模式class Product{ private $size; private $color; private $type; public function setSize($size) { $this->size = $size; } public function setColor($color) { $this->color = $col
2017-02-20 22:02:22
174
原创 工厂模式的三种形式
<?php// 简单工厂模式interface ICar { function run();}class BMWCar implements ICar { public function run() { echo 'bmw run!'; }}class AuDiCar implements ICar { public function run() { ech
2017-02-20 20:11:55
314
原创 装饰模式
<?php// 装饰模式function echoLine($msg) { echo $msg, ''; }class RequestHelper{ /** * return class resource id */ public function __toString() { ob_start(); var_dump($this); $str
2017-02-20 11:54:54
163
原创 策略模式
<?php// 策略模式interface Calculator{ public function calc($a, $b);}/** * add strategy */class AddCalculator implements Calculator{ public function calc($a, $b) { return intval($a) + intva
2017-02-20 11:43:02
183
原创 代理模式
<?php// 代理模式function echoLine($msg) { echo $msg, '';}interface Sourceable{ function method();}// 被代理对象class Source implements Sourceable{ public function method() { echoLine('call met
2017-02-20 11:35:01
183
原创 原型模式
<?php// 原型模式class Obj{ private $name = 'obj';}class Prototype{ private $type = 'prototype'; private $obj = null; public function __construct($type = null) { $this->type = $type; $th
2017-02-18 23:55:12
167
原创 模板方法模式
模板方法模式:模板方法模式定义了一个算法的步骤, 并允许子类为一个或多个步骤提供实现。模板方法模式:在一个方法中定义一个算法的骨架, 而将一些步骤延迟到子类中, 模板方法使得子类在不改变算法结构的情况下,重新定义算法中的某些步骤。<?php// 模板方法模式function echoLine($msg) { echo $msg, '';}abstract class
2017-02-18 21:54:10
277
原创 堆排序
堆的定义:n个关键字序列Kl,K2,…,Kn称为(Heap),当且仅当该序列满足如下性质(简称为堆性质):(1) ki=号。k(i)相当于二叉树的非叶子结点,K(2i)则是左子节点,k(2i+1)是右子节点。若将此序列所存储的向量R[1..n]看做是一棵完全二叉树的存储结构,则堆实质上是满足如下性质的完全二叉树:树中任一非叶子结点的关键字均不大于(或不小于)其左右孩子(若存在)结点的关键字。
2017-02-18 10:58:44
206
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人