摘要: 动态规划(dynamic programming)与分治算法相似,都是通过组合子问题的解来求解原问题(在这里,“programming”指的是一种表格法,并非编写计算机程序)。分治方法将问题规划为互不相交的子问题,在将他们组合起来,求出原问题的解。与之相反,动态规划应用于子问题重叠的情况,即不同的子... 阅读全文
posted @ 2015-04-19 18:37 一条小溪 阅读(394) 评论(0) 推荐(0) 编辑
摘要: #include <stdio.h>#include <unistd.h>int main(void){ int i = 0; while(1) { printf("sleeping %d", i++); //(1)fflush(stdout); sleep(1); } return 0;}(1) printf将"sleeping %d"输出到标准输出文件的缓冲区中(缓冲区在内存上),fflush(stdout)将缓冲区中的内容强制刷新到,并将其中的内容输出到显示器上("/n"回车换行 == fflush(st 阅读全文
posted @ 2013-02-28 18:51 一条小溪 阅读(925) 评论(1) 推荐(0) 编辑
摘要: 大家在使用redis的时候,经常会用expire来设置key的过期时间,之前一直用的很high,以为某个key到期就会马上清除。如果只是在单个redis(即一个主redis)下是没有问题的。但是在主从redis中下面的用法就有问题鸟。 1 <?php 2 $redis_master = new Redis(); 3 $redis_slave = new Redis(); 4 5 $redis_master->connect('M.xxxxxx', xxxx); //主redis 6 $redis_slave->connect('S.xxxxx' 阅读全文
posted @ 2012-11-07 14:19 一条小溪 阅读(3653) 评论(0) 推荐(0) 编辑
摘要: 面向对象和面向过程编程的区别? 面向对象和面向过程编程的一个核心区别是如何分配职责。过程式编程表现为一系列命令和方法的连续调用。控制代码根据不同的条件执行不同的职责。这种自顶向下的控制方式导致了重复和相互依赖的代码遍布于整个项目。面向对象编程则将职责从客户端代码中移到专门的对象中,尽量减少相互依赖。 我们分别用面向对象和过程式代码的方式分析一个简单的例子。 假设我们要创建一个用于读写配置文件的工具,文本格式为 key:value。 先按照过程式的方式来解决这个问题。只需要两个函数。 1 <?php 2 function readParams($sourceFile) 3 {... 阅读全文
posted @ 2012-10-16 20:08 一条小溪 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 日前发布的PHP 5.3中,最重要的一个新特性就是命名空间的加入。本文介绍了PHP命名空间的一些术语,其解析规则,以及一些高级功能的应用,希望能够帮助读者在项目中真正使用命名空间。在这里中我们介绍了PHP命名空间的用途和namespace关键字,在这篇文章中我们将介绍一下use命令的使用以及PHP如何解析命名空间的名字的。为了便于对比,我定义了两个几乎一样的代码块,只有命名空间的名字不同。<?php //applicationlibrary1namespaceApp\Lib1; constMYCONST='App\Lib1\MYCONST'; functionMyFunc 阅读全文
posted @ 2012-10-12 14:05 一条小溪 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 前言如果Google一下“闭包”这个词,会发现网上关于闭包的文章已经不计其数,甚至很多人将闭包看做面试JavaScript程序员的必考题(虽然闭包和JavaScript没有什么必然联系)。既然如此,我为什么还要写一篇关于闭包的文章呢?首先,虽然网上关于闭包的文章甚多,但是很少以较为形式化的角度阐述闭包,而我认为理解闭包的关键之一就是从形式化角度理解其涵义;其次,大多数文章将闭包的概念与JavaScript语言绑定太死,这样容易局限对闭包概念的理解,而难以窥探到其本质。从JavaScript去理解闭包,个人认为这是本末倒置的,应该先理解纯粹意义上的闭包,然后再理解JavaScript中的闭包机制 阅读全文
posted @ 2012-10-09 21:48 一条小溪 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 匿名函数不是严格意义上的面向对象的特性,但它非常有用,因为可能会在使用回调面向对象的应用中遇到她。 请看下面两个类: 1 <?php 2 class Product 3 { 4 public $name; 5 public $price; 6 7 function __construct($name, $price) 8 { 9 $this->name = $name;10 $this->price= $price;11 }12 }13 14 class ProcessSale15 {16 privat... 阅读全文
posted @ 2012-10-09 21:44 一条小溪 阅读(951) 评论(0) 推荐(0) 编辑
摘要: __construct()__set()__get()__isset()__unset()__autoload()__call()__clone()__invoke()__sleep()__wakeup()__construct()构造方法: 在PHP中的构造方法要求不能进行构造方法的重载,即构造 方法只有一个.function __construct($name="宋", $sex="", $age=1) { //构造方法在对象诞生时为成员属性赋初值 $this->name=$name; $this->sex=$sex; $this-> 阅读全文
posted @ 2012-10-08 16:52 一条小溪 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 引入抽象类是PHP 5的一个重要变化。抽象类不能被直接实例化,抽象类中只定义(或部分实现)子类需要的方法。子类可以继承它并通过实现其中的抽象方法,使抽象类具体化。关键字abstract 定义一个抽象类。 大多数情况下,抽象类至少包含一个抽象方法。抽象方法用abstract关键字声明,其中不能有具体内容。可以像声明普通类方法那样声明抽象方法,但要以分号而不是方法体结束。 1 <?php 2 abstract class Simple 3 { 4 protected $arr = array(); 5 6 public function say() 7 ... 阅读全文
posted @ 2012-10-08 12:30 一条小溪 阅读(248) 评论(1) 推荐(0) 编辑
摘要: 我们把类当生成对象的模版,把对象作为活动组件,对象的方法可以被调用,对象的属性可以被访问。面向对象编程中实际操作都是通过类的实例(而不是类本身)完成的。但是,我们也可以通过类来访问对象的方法和属性,这样的方法和属性是“静态的”,必须用static关键字声明。 1 <?php 2 class StaticExample 3 { 4 static public $num = 0; 5 static public function sayHello() 6 { 7 echo "hello world"; 8 } 9 }1... 阅读全文
posted @ 2012-10-08 09:54 一条小溪 阅读(660) 评论(0) 推荐(0) 编辑