python 做办公网站,即墨网站制作,靖安建设局网站,html制作一个简单美食网页LRU是Last Recent Used 缩写#xff0c;做为一种缓存算法#xff0c;将最近较少使用的缓存失效。memcache采用了该算法。如下采用了一种PHP的实现方式。该算法将每次新增的内容#xff0c;放到缓存顶部#xff0c;达到缓存极限时#xff0c;将缓存底部的内容清除。可以通过…LRU是Last Recent Used 缩写做为一种缓存算法将最近较少使用的缓存失效。memcache采用了该算法。如下采用了一种PHP的实现方式。该算法将每次新增的内容放到缓存顶部达到缓存极限时将缓存底部的内容清除。可以通过如下PHP代码来模拟。 ?php
class LRUCache {private $head;private $tail;private $capacity;private $hashmap;public function __construct($capacity) {$this-capacity $capacity;$this-hashmap array();$this-head new Node(null, null);$this-tail new Node(null, null);$this-head-setNext($this-tail);$this-tail-setPrevious($this-head);}public function get($key) {if (!isset($this-hashmap[$key])) { return null; }$node $this-hashmap[$key];if (count($this-hashmap) 1) { return $node-getData(); }// refresh the access$this-detach($node);$this-attach($this-head, $node);return $node-getData();}public function put($key, $data) {if ($this-capacity 0) { return false; }if (isset($this-hashmap[$key]) !empty($this-hashmap[$key])) {$node $this-hashmap[$key];// update data$this-detach($node);$this-attach($this-head, $node);$node-setData($data);}else {$node new Node($key, $data);$this-hashmap[$key] $node;$this-attach($this-head, $node);// check if cache is fullif (count($this-hashmap) $this-capacity) {// were full, remove the tail$nodeToRemove $this-tail-getPrevious();$this-detach($nodeToRemove);unset($this-hashmap[$nodeToRemove-getKey()]);}}return true;}private function attach($head, $node) {$node-setPrevious($head);$node-setNext($head-getNext());$node-getNext()-setPrevious($node);$node-getPrevious()-setNext($node);}private function detach($node) {$node-getPrevious()-setNext($node-getNext());$node-getNext()-setPrevious($node-getPrevious());}}/*** Class that represents a node in a doubly linked list*/
class Node {private $key;// the content of the nodeprivate $data;// the next nodeprivate $next;// the previous nodeprivate $previous;public function __construct($key, $data) {$this-key $key;$this-data $data;}public function setData($data) {$this-data $data;}public function setNext($next) {$this-next $next;}public function setPrevious($previous) {$this-previous $previous;}public function getKey() {return $this-key;}public function getData() {return $this-data;}public function getNext() {return $this-next;}public function getPrevious() {return $this-previous;}}来源 http://it.taocms.org/03/138.htm 来自为知笔记(Wiz) 转载于:https://www.cnblogs.com/phonecom/p/984d230ed46d76bcbc5a35f523b38ffd.html