当前位置: 首页 > news >正文

在万网申请的域名_需要把万网的账户密码给做网站的吗/购物网站大全

在万网申请的域名_需要把万网的账户密码给做网站的吗,购物网站大全,a5源码网站,网站运营优化推广整体设计 1:用数组保存缓存对象(Node); 2:缓存对象(Node)之间通过nextKey,preKey组成一个双向链表; 3:保存链表头 跟尾; 处理流程如下图: 主要代码 1:Node 节点类 /*** 缓存值保存类,* Class Node* package app\common\model*/ class Node{private $preKeynull;…

整体设计

1:用数组保存缓存对象(Node);
2:缓存对象(Node)之间通过nextKey,preKey组成一个双向链表;
3:保存链表头 跟尾;

处理流程如下图:

在这里插入图片描述

主要代码

1:Node 节点类

/*** 缓存值保存类,* Class Node* @package app\common\model*/
class Node{private $preKey=null;//链表前一个节点private $nextKey=null;//链表后一个节点private $value=null;//当前的值private $key=null;//当前keypublic function __construct(string  $key,$value){$this->value=$value;$this->key=$key;}public function setPreKey($preValue){$this->preKey=$preValue;}public function setNextKey($nextValue){$this->nextKey=$nextValue;}public function getPreKey(){return $this->preKey;}public function getNextKey(){return $this->nextKey;}public function getValue(){return $this->value;}public function setValue($value){$this->value=$value;}public function setKey(string  $key){$this->key=$key;}public function getKey(){return $this->key;}
}

2:缓存类

/*** 实现lru缓存* Class LruCache* @package app\common\model*/
class LruCache
{public $cacheTable =[];private $headNode=null;private $lastNode=null;private $cacheCount=0;private $cacheMax=100;/*** 测试输出使用*/public function dumpAllData(){if (!empty($this->headNode)){$node=$this->headNode;while (!empty($node)){echo 'key='.$node->getKey().'  nextKey='.(empty($node->getNextKey())?'null':$node->getNextKey()->getKey()).' preKey='.(empty($node->getPreKey())?'null':$node->getPreKey()->getKey()).' value='.$node->getValue()."</br>";$node=$node->getNextKey();}}}/*** @param int $count*/public function setCacheMax(int $count){$this->cacheMax=$count;}/*** @param string $key* @param $value* @return bool*/public function set(string $key,$value){//设置值为null,则认为删除缓存节点if ($value===null){$this->del($key);return true;}//判断是否存在表中,存在则更新连表if (!empty($this->cacheTable[$key])){$this->updateList($key);return true;}//先判断是否要删除$this->shiftNode();$this->addNode($key,$value);return true;}/*** @param string $key* @return bool*/public function del(string $key){if (!empty($this->cacheTable[$key])){$node=&$this->cacheTable[$key];//摘出节点$this->jumpNode($node);//置空删除$node->setPreKey(null);$node->setNextKey(null);unset($this->cacheTable[$key]);return true;}return false;}/*** @param string $key* @return null*/public function get(string $key){if (!empty($this->cacheTable[$key])){$this->updateList($key);return $this->cacheTable[$key]->getValue();}return null;}//直接添加节点private function addNode($key,$value){$addNode=new Node($key,$value);if (!empty($this->headNode)){$this->headNode->setPreKey($addNode);}$addNode->setNextKey($this->headNode);//第一次保存最后一个节点为头节点if ($this->lastNode==null){$this->lastNode=$addNode;}$this->headNode=$addNode;$this->cacheTable[$key]=$addNode;$this->cacheCount++;}//主动删超出的缓存private function shiftNode(){while ($this->cacheCount>=$this->cacheMax){if (!empty($this->lastNode)){if (!empty($this->lastNode->getPreKey())){$this->lastNode->getPreKey()->setNextKey(null);}$lastKey=$this->lastNode->getKey();unset($this->cacheTable[$lastKey]);}$this->cacheCount--;}}//更新节点链表private function updateList($key){//这里需要使用引用传值$node=&$this->cacheTable[$key];//当前结点为头结点 直接不用处理if ($this->headNode===$node){return true;}//摘出结点$this->jumpNode($node);//跟头结点交换$node->setNextKey($this->headNode);$this->headNode->setPreKey($node);$node->setPreKey(null);$this->headNode=$node;return true;}//将某个节点摘出来private function jumpNode(Node &$node){if (!empty($node->getPreKey())){$node->getPreKey()->setNextKey($node->getNextKey());}if (!empty($node->getNextKey())){$node->getNextKey()->setPreKey($node->getPreKey());}//如果是最后一个节点,则更新最后节点为它的前节点if ($node->getNextKey()==null){$this->lastNode=$node->getPreKey();}//如果是头结点if ($node->getPreKey()==null){$this->headNode=$node->getNextKey();}}}

3:测试代码

    public function tt(){$cath=model("LruCache");$cath->setCacheMax(3);$cath->set("aa","aaaaaaaaaaa");$cath->set("bb","bbbbbbbbbbbb");$cath->set("cc","ccccccccccccc");$cath->get("aa");//        $cath->dumpAllData();$cath->set("dd","ddddddddddddd");
//        $cath->del("cc");
//        var_dump($cath->cacheTable);$cath->dumpAllData();exit();}

说明

其实php的数组就是有序的,也可以直接用php数组实现,这里只是提供一个实现的思路

http://www.jmfq.cn/news/4814335.html

相关文章:

  • 用苹果cms做电影网站/百度收录查询
  • 做常州美食网站首页的背景图/优化seo软件
  • 网站建设方案策划书ppt/投放广告的渠道有哪些
  • 文化传媒建设网站/自媒体有哪些平台
  • 微网站开发流程/西安霸屏推广
  • 山东省建设工程造价管理协会网站/上海百度推广官网
  • 资讯网站怎么做/营销型网站案例
  • 炎陵做网站/快速网站轻松排名
  • 加强门户网站建设提升/苏州优化收费
  • 怎么做直播网站超管/seo入门培训学多久
  • 怎么做网站的投票平台/百度关键词搜索排名统计
  • 如何做网站赚钱/西安百度推广联系方式
  • 大良营销网站建设市场/哪些平台可以免费推广
  • 网站自建设需要买什么时候开始/新闻今日头条最新消息
  • 支付网站域名费会计分录怎么做/温州seo顾问
  • 搜索引擎 网站推广 举例/百度近日收录查询
  • 网站建设要考虑的问题/搜多多搜索引擎入口
  • 廊坊网站小姐私做/北京网络推广有哪些公司
  • 猪八戒兼职网站怎么做任务赚钱/企业培训平台
  • 天津网站建设制作排名/收录是什么意思
  • 深圳官网网站建设/百度搜索热度排名
  • 承接网站怎么做/免费百度seo引流
  • 做带后台的网站/国家职业技能培训平台
  • 做响应式网站费用/网站推广广告
  • 武汉做胃镜国医堂z网站/百度地图导航2022最新版下载
  • 做服装最好的网站建设/天津搜狗seo推广
  • 广州网站建设 .超凡科技/旅游seo整站优化
  • 平板上做网站的软件/win7优化大师好不好
  • wordpress 3.6下载/如何优化seo关键词
  • 亲姐弟做愛电影在线网站/天津百度搜索网站排名