a. 数据超时之后去mysql获取, 获取完后更新memcache
b. 去mysql获取数据的时候加锁, 让一个进程去mysql拉数据, 其他人返回memcache中的数据
public function get_cache($key) { if($this->memcahe) { $var = $this->memcahe->get($this->pre.$key); $valid = $this->memcahe->get($this->pre.$key.'_valid'); if($var && !$valid) { $lock = $this->memcahe->get($this->pre.$key.'_lock'); if(!$lock) { $this->memcahe->set($this->pre.$key.'_lock', true, 0, 60); return false; } } return $var; } return false; }
public function set_cache($key, $var = null, $expire = 0) { if($this->memcahe) { $expire = (int)$expire; $expire = ($expire ? $expire : $this->expire); $this->memcahe->set($this->pre.$key, $var, 0, $expire+300); $this->memcahe->set($this->pre.$key.'_lock', false, 0, $expire); $this->memcahe->set($this->pre.$key.'_valid', true, 0, $expire); return true; } return false; }
9. 简述队列, 堆栈的原理
都可以看做是一维数组来操作,队列先进先出,出列只能在列头,进列只能在列尾,堆栈是后进先出,进栈和出栈都是从栈顶
堆栈的工作原理是什么?
堆栈是一种抽象数据结构,其操作机理是后进先出。当你把新条目推进堆栈时,已经在堆栈内的任何条目都会压到堆栈的深处。同样的,把一个条目从堆栈移出则会让堆栈内的其他条目都向堆栈的顶部移动。只有堆栈最顶端的条目能从堆栈中取出,条目离开堆栈的顺序和它们被推进堆栈的顺序一样。你不妨回想下自动售货机的装货和取货过程就明白了。
10. arrayaccess 定义如下 用它实现一个数组
ArrayAccess {
/* Methods */
abstract public boolean offsetExists ( string $offset )
abstract public mixed offsetGet ( string $offset )
abstract public void offsetSet ( string $offset , string $value )
abstract public void offsetUnset ( string $offset )
}
class Single implements ArrayAccess{ private $name; private static $_Instance = null; private function __construct() { } static function load() { if(null == self::$_Instance) { self::$_Instance = new Single(); } return self::$_Instance; } public function setName($name) { $this->name = $name; } public function getName() { return $this->name; } /** * 实现四个方法 * offsetExists(),用于标识一个元素是否已定义 * offsetGet(),用于返回一个元素的值 * offsetSet(),用于为一个元素设置新值 * offsetUnset(),用于删除一个元素和相应的值 **/ public function offsetSet($offset, $value) { if (is_null($offset)) { $this->container[] = $value; } else { $this->container[$offset] = $value; } } public function offsetGet($offset) { return isset($this->container[$offset]) ? $this->container[$offset] : null; } public function offsetExists($offset) { return isset($this->container[$offset]); } public function offsetUnset($offset) { unset($this->container[$offset]); }}$s = Single::load();$s->setName("jack");$s["name"] = "mike";echo $s->getName(); //jackecho $s["name"]; //mike
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-39958-9.html
而不是大陆
农民才55元能做什么
高营养高蛋白