自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 2763

原创 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 377

原创 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 361

原创 MySQL 触发器

查看触发器show triggers;删除触发器drop trigger [if exists] [schema_name.]trigger_name;修改触发器触发器不能被更新或者覆盖,若要修改,则需先删除然后再创建。创建触发器create trigger TRIGGER_NAMEafter | before -- 触发时间insert | up

2017-03-11 22:26:59 291

原创 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 289

原创 MySQL 之 SQL 编程

一、注释# 单行注释-- (两个横线一个空格) 单行注释/* */ 多行注释二、语句分隔符默认的有以下三种; \g \G修改语句分隔符delimiter DELIM; #除了 \,任何字符都可以作为语句分隔符三、变量1. 定义变量set var=valur 或者 set var:=valueselect STATEM

2017-03-10 15:41:11 979

原创 有限状态机的简单使用案例:“将字符串中多于一个的空格变为一个空格输出”

<?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 429

原创 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 6121

原创 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 1833

原创 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 845

原创 PHP 加密扩展 mcrypt 的基本使用

Mcrypt 支持以下四种分组密码模式:CBC, OFB,CFB 和 ECB。 如果使用 libmcrypt-2.4.x 或更高版本链接, 还可以支持 nOFB 分组模式 和 流 模式。 下列是所支持的加密模式以及其对应的预定义常量。1. MCRYPT_MODE_ECB (electronic codebook) 适用于随机数据, 比如可以用这种模式来加密其他密钥。 由于要加密的数据很

2017-02-28 22:56:14 1805

原创 《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 396

原创 MySQL 关于日志的一些配置参数总结

============================================================日志管理============================================================1. 错误日志log_error = {datadir}/{HOSTNAME}.err错误日志, 通常在 datadir 目录下,

2017-02-27 22:27:42 379

原创 PHP 实现猜数游戏

猜数游戏有两种玩法:第一种:两个人玩,一方出数字,一方猜。出数字的人要想好一个指定位数的数,数字可重复,不能让猜的人知道。猜的人就可以开始猜。每猜一个数,出数者就要说大过或小过出的数。第二种:两个人玩,一方出数字,一方猜。出数字的人要先想好一个没有重复数字的4位数,不能让猜的人知道。猜的人就可以开始猜。每猜一个数,出数者就要根据这个数字给出几A几B,其中A前面的数字表示位置正确

2017-02-27 00:39:49 4181 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 2530

原创 show processlist 命令执行结果解释

show [full] processlist;show processlist 显示哪些线程正在运行。也可以通过 INFORMATION_SCHEMA.PROCESSLIST 表或 mysqladmin processlit 获取这些信息。如果拥有 process 权限,将可以看到所有的线程。否则,只能看到和您正在使用的MySQL 账号相关的线程。如果不使用 full 关键字,则只显

2017-02-25 22:09:48 3171

原创 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 3142

原创 状态模式

<?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 220

原创 解释器模式的一个简单示例

<?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 651

原创 设计模式中的六大原则

单一职责原则定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。里氏替换原则定义1:如果对每一个类型为 T1 的对象 o1,都有类型为 T2 的对象o2,使得以 T1 定义的所有程序 P 在所有的对象 o1都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型。定义2:所有引用基类的地方必须能透明地使用其子

2017-02-23 18:47:41 291

原创 访问者模式

<?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 156

原创 组合模式实现方式二

<?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 375

原创 组合模式实现方式一

<?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 332

原创 适配器模式之接口适配

<?php// 适配器模式-接口适配/** * 问题:实现此接口的类需要实现所有的方法,但是实际使用的仅仅是其中的某一个方法而已,比较繁琐 * 解决方法:增加一个中间类,对所有的方法空实现,然后不再直接实现接口而是继承这个中间类 * 这就是 接口适配. */interface Sourceable{ function action1(); function action2()

2017-02-22 12:01:18 289

原创 适配器模式之对象适配

<?php// 适配器模式-对象适配/** * 需要被适配的类 * 需求:给 Source 新增一个新的方法但又不修改 Source 的源代码 */class Source{ public function action() { echo 'call action', ''; }}interface Targetable{ /** * Source 类中同名的

2017-02-22 11:51:03 297

原创 适配器模式之类适配

<?php// 适配器模式-类适配/** * 需要被适配的类 * 需求:给 Source 新增一个新的方法但又不修改 Source 的源代码 */class Source{ public function action() { echo 'call action', ''; }}interface Targetable{ /** * Source 类中同名的方

2017-02-22 11:43:43 213

原创 命令模式的简单实现

<?php// 命令模式interface Command{ public function execute();}/** * concrete command, 具体的命令 */class ConcreteCommand implements Command{ private $receiver; public function __construct(Receiv

2017-02-22 00:40:06 205

原创 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 224

原创 观察者模式

<?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 266

原创 单例模式之继承碰见的问题

<?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 2160

原创 单例模式

<?php// 单例模式class Singleton{ protected static $ins = null; /** * 禁止子类重载 __construct() 构造方法 */ private final function __construct() { // 禁止 new } /** * 禁止子类重载 __clone() 方法 */ prot

2017-02-21 10:14:49 244

原创 外观模式

<?php// 外观模式function echoLine($msg) { echo $msg, '';}/** * 外观模式是一个十分简单的概念,它只是为一个分层或一个子系统创建一个单一的入口。这会带来很多好处。 * 首先,有助于分离项目中不同的部分。其次,对于客户端开发者来说,访问代码变得简洁,非常方便。另外, * 由于只在一个地方调用子系统,减少了出错的可能性,并因此可以

2017-02-20 22:13:38 153

原创 建造者模式

<?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 142

原创 工厂模式的三种形式

<?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 279

原创 装饰模式

<?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 135

原创 策略模式

<?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 155

原创 代理模式

<?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 151

原创 原型模式

<?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 145

原创 模板方法模式

模板方法模式:模板方法模式定义了一个算法的步骤, 并允许子类为一个或多个步骤提供实现。模板方法模式:在一个方法中定义一个算法的骨架, 而将一些步骤延迟到子类中, 模板方法使得子类在不改变算法结构的情况下,重新定义算法中的某些步骤。<?php// 模板方法模式function echoLine($msg) { echo $msg, '';}abstract class

2017-02-18 21:54:10 231

原创 堆排序

堆的定义:n个关键字序列Kl,K2,…,Kn称为(Heap),当且仅当该序列满足如下性质(简称为堆性质):(1) ki=号。k(i)相当于二叉树的非叶子结点,K(2i)则是左子节点,k(2i+1)是右子节点。若将此序列所存储的向量R[1..n]看做是一棵完全二叉树的存储结构,则堆实质上是满足如下性质的完全二叉树:树中任一非叶子结点的关键字均不大于(或不小于)其左右孩子(若存在)结点的关键字。

2017-02-18 10:58:44 171

空空如也

空空如也

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

TA关注的人

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