?!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> C++实现最基本的LRUCache服务器缓?南软g开发|׃软g开?南赢dU技软g开发公?/title> <meta name="keywords" content="C++实现最基本的LRUCache服务器缓?/> <meta name="description" content="后台开发必备知识,不过我不是搞q个的,只是因ؓ很久以前想写这些东西,事情多,拖到现在。写的过E里面发现很多问题,不会全部_最后会带提一提。注意,本篇W记只是Ҏ口写法做了记录,q没有进行更严格的设计和?/> <link href="/css/style.css" rel="stylesheet" type="text/css" /> <meta http-equiv="Cache-Control" content="no-transform" /> <meta http-equiv="Cache-Control" content="no-siteapp" /> </head> <body> <div style="position:fixed;left:-9000px;top:-9000px;"><dfn id="orz4q"><noscript id="orz4q"><xmp id="orz4q"><output id="orz4q"></output></xmp></noscript></dfn><strong id="orz4q"><dl id="orz4q"></dl></strong><ol id="orz4q"><p id="orz4q"><nav id="orz4q"><pre id="orz4q"></pre></nav></p></ol><dfn id="orz4q"></dfn><small id="orz4q"><optgroup id="orz4q"></optgroup></small><center id="orz4q"><small id="orz4q"><track id="orz4q"><rp id="orz4q"></rp></track></small></center><table id="orz4q"><ruby id="orz4q"><dl id="orz4q"><del id="orz4q"></del></dl></ruby></table><rt id="orz4q"></rt><output id="orz4q"></output><mark id="orz4q"></mark><dl id="orz4q"></dl><div id="orz4q"></div><optgroup id="orz4q"></optgroup><address id="orz4q"><progress id="orz4q"><noframes id="orz4q"><tr id="orz4q"></tr></noframes></progress></address><listing id="orz4q"><thead id="orz4q"><address id="orz4q"><wbr id="orz4q"></wbr></address></thead></listing><video id="orz4q"></video><object id="orz4q"><sup id="orz4q"></sup></object><em id="orz4q"></em><div id="orz4q"></div><progress id="orz4q"><listing id="orz4q"><th id="orz4q"><option id="orz4q"></option></th></listing></progress><meter id="orz4q"></meter><acronym id="orz4q"><rt id="orz4q"></rt></acronym><label id="orz4q"></label><track id="orz4q"></track><noscript id="orz4q"><div id="orz4q"><pre id="orz4q"><ol id="orz4q"></ol></pre></div></noscript><s id="orz4q"><kbd id="orz4q"></kbd></s><form id="orz4q"></form><var id="orz4q"></var><dl id="orz4q"><strike id="orz4q"></strike></dl><xmp id="orz4q"><strike id="orz4q"><small id="orz4q"><samp id="orz4q"></samp></small></strike></xmp><listing id="orz4q"><thead id="orz4q"><address id="orz4q"><progress id="orz4q"></progress></address></thead></listing><del id="orz4q"></del><object id="orz4q"><address id="orz4q"><samp id="orz4q"><rt id="orz4q"></rt></samp></address></object><ruby id="orz4q"></ruby><noframes id="orz4q"></noframes><code id="orz4q"></code><var id="orz4q"></var><nav id="orz4q"></nav><u id="orz4q"></u><span id="orz4q"></span><li id="orz4q"></li><tbody id="orz4q"><table id="orz4q"><span id="orz4q"><dl id="orz4q"></dl></span></table></tbody><optgroup id="orz4q"><xmp id="orz4q"><big id="orz4q"><em id="orz4q"></em></big></xmp></optgroup><var id="orz4q"></var><nav id="orz4q"></nav><rt id="orz4q"></rt><dfn id="orz4q"><font id="orz4q"><sub id="orz4q"><td id="orz4q"></td></sub></font></dfn><u id="orz4q"><s id="orz4q"></s></u><pre id="orz4q"><em id="orz4q"><p id="orz4q"><rp id="orz4q"></rp></p></em></pre><rt id="orz4q"><tr id="orz4q"></tr></rt> <pre id="orz4q"></pre><wbr id="orz4q"><rt id="orz4q"><tr id="orz4q"><output id="orz4q"></output></tr></rt></wbr><xmp id="orz4q"><pre id="orz4q"><em id="orz4q"><p id="orz4q"></p></em></pre></xmp><sub id="orz4q"></sub><p id="orz4q"></p><td id="orz4q"><tbody id="orz4q"></tbody></td><code id="orz4q"><video id="orz4q"><track id="orz4q"><tt id="orz4q"></tt></track></video></code><thead id="orz4q"></thead><source id="orz4q"><nobr id="orz4q"><cite id="orz4q"><td id="orz4q"></td></cite></nobr></source><del id="orz4q"></del><sub id="orz4q"></sub><code id="orz4q"></code><code id="orz4q"><menu id="orz4q"></menu></code><legend id="orz4q"><button id="orz4q"><source id="orz4q"><i id="orz4q"></i></source></button></legend><delect id="orz4q"></delect><ins id="orz4q"></ins><i id="orz4q"></i><pre id="orz4q"></pre><mark id="orz4q"></mark><b id="orz4q"><table id="orz4q"><strong id="orz4q"><noframes id="orz4q"></noframes></strong></table></b><source id="orz4q"></source><small id="orz4q"><optgroup id="orz4q"></optgroup></small><dl id="orz4q"></dl><center id="orz4q"><em id="orz4q"><track id="orz4q"><rp id="orz4q"></rp></track></em></center><address id="orz4q"></address><tt id="orz4q"><code id="orz4q"><nobr id="orz4q"><sub id="orz4q"></sub></nobr></code></tt><strong id="orz4q"></strong><delect id="orz4q"></delect><nobr id="orz4q"></nobr><strike id="orz4q"></strike><strong id="orz4q"></strong><optgroup id="orz4q"><xmp id="orz4q"><big id="orz4q"><em id="orz4q"></em></big></xmp></optgroup><menu id="orz4q"></menu><menu id="orz4q"></menu><small id="orz4q"><optgroup id="orz4q"></optgroup></small><input id="orz4q"><label id="orz4q"></label></input><big id="orz4q"><nobr id="orz4q"><track id="orz4q"><button id="orz4q"></button></track></nobr></big><sub id="orz4q"></sub><nav id="orz4q"><blockquote id="orz4q"></blockquote></nav><listing id="orz4q"><thead id="orz4q"><address id="orz4q"><wbr id="orz4q"></wbr></address></thead></listing><tbody id="orz4q"><table id="orz4q"></table></tbody><font id="orz4q"><mark id="orz4q"><meter id="orz4q"><tbody id="orz4q"></tbody></meter></mark></font><dl id="orz4q"><strike id="orz4q"><i id="orz4q"><samp id="orz4q"></samp></i></strike></dl><wbr id="orz4q"><noscript id="orz4q"></noscript></wbr><strong id="orz4q"><input id="orz4q"></input></strong><wbr id="orz4q"></wbr><legend id="orz4q"></legend><address id="orz4q"><progress id="orz4q"><noframes id="orz4q"><tr id="orz4q"></tr></noframes></progress></address><dfn id="orz4q"><font id="orz4q"><sub id="orz4q"><td id="orz4q"></td></sub></font></dfn><center id="orz4q"><ol id="orz4q"><noscript id="orz4q"><b id="orz4q"></b></noscript></ol></center> <u id="orz4q"><s id="orz4q"></s></u><u id="orz4q"><s id="orz4q"></s></u><output id="orz4q"></output><ruby id="orz4q"></ruby><wbr id="orz4q"></wbr><ins id="orz4q"></ins><s id="orz4q"><kbd id="orz4q"></kbd></s><b id="orz4q"></b><nobr id="orz4q"></nobr><strike id="orz4q"></strike><input id="orz4q"><label id="orz4q"></label></input><em id="orz4q"></em><form id="orz4q"></form><tbody id="orz4q"><table id="orz4q"><legend id="orz4q"><dl id="orz4q"></dl></legend></table></tbody><tr id="orz4q"></tr><dd id="orz4q"></dd><li id="orz4q"></li><code id="orz4q"></code><menu id="orz4q"><samp id="orz4q"></samp></menu><p id="orz4q"><rp id="orz4q"><u id="orz4q"><strong id="orz4q"></strong></u></rp></p><pre id="orz4q"><em id="orz4q"></em></pre><tbody id="orz4q"><table id="orz4q"></table></tbody><ol id="orz4q"><p id="orz4q"><label id="orz4q"><blockquote id="orz4q"></blockquote></label></p></ol><tr id="orz4q"><option id="orz4q"></option></tr><legend id="orz4q"></legend><p id="orz4q"><rp id="orz4q"><output id="orz4q"><strong id="orz4q"></strong></output></rp></p><menu id="orz4q"></menu><rt id="orz4q"></rt><rp id="orz4q"></rp><optgroup id="orz4q"></optgroup><del id="orz4q"></del><button id="orz4q"></button><rp id="orz4q"></rp><dfn id="orz4q"><font id="orz4q"><sub id="orz4q"><td id="orz4q"></td></sub></font></dfn><nav id="orz4q"><blockquote id="orz4q"></blockquote></nav><thead id="orz4q"><menuitem id="orz4q"><progress id="orz4q"><noscript id="orz4q"></noscript></progress></menuitem></thead><sup id="orz4q"><acronym id="orz4q"></acronym></sup><center id="orz4q"></center><font id="orz4q"></font><noscript id="orz4q"><div id="orz4q"></div></noscript><font id="orz4q"></font><wbr id="orz4q"><noscript id="orz4q"></noscript></wbr><meter id="orz4q"></meter><optgroup id="orz4q"><xmp id="orz4q"><big id="orz4q"><em id="orz4q"></em></big></xmp></optgroup><nav id="orz4q"></nav><input id="orz4q"><label id="orz4q"><menuitem id="orz4q"><progress id="orz4q"></progress></menuitem></label></input><address id="orz4q"></address><dl id="orz4q"></dl><progress id="orz4q"></progress><video id="orz4q"></video></div> <div class="head"> <div class="top"><span><a href="/html/sitemap.xml">XML</a> | <a href="/html/sitemap.html">HTML</a> | <a href="/sitemap.txt">TXT</a></span></div> <div class="bank"> <div class="logo"> <h1><strong><a href="http://www.themmauniversity.com" style="margin-right:10px">南软g开?/a></strong><strong><a href="http://www.themmauniversity.com">׃软g开?/a></strong></h1> </div> <div class="contact-top"></div> </div> <div class="menu"> <ul> <li><a href="/">?#160;   ?/a></li> <li><a href="/About/">关于我们</a></li> <li><a href="/Advantage/">开发优?/a></li> <li><a href="/Products/">产品展示</a></li> <li><a href="/Cooperation/">合作企业</a></li> <li><a href="/News/">新闻动?/a></li> <li><a href="/Contact/">联系我们</a></li> </ul> </div> <div class="banner"><img src="/images/banner.jpg" width="1000" height="341"/></div> </div> <div id="position"><div>您当前位|:<a href="/">软g开?/a> >> <a href="/News/">新闻动?/a> >> <a href="/News/Industry/">软g开发行业资?/a> >> 览文章</div></div> <div class="youshi_f1" id="youshi_tdyx"> <div class="youshi01"> <h1 class="article_title">C++实现最基本的LRUCache服务器缓?/h1> <div class="article_author">d旉Q?016-11-8 15:18:26 文章作者:<a href="/">南软g开?/a> 览ơ数Q?Script Language="Javascript" Src="/item/GetHits.asp?Action=Count&GetFlag=0&m=1&ID=2915"></Script></div> <div class="article_main"><div id="MyContent"><p><span style="font-size: 14px;">  后台开发必备知识,不过我不是搞q个的,只是因ؓ很久以前想写这些东西,事情多,拖到现在。写的过E里面发现很多问题,不会全部_最后会带提一提?/span></p><p><span style="font-size: 14px;">  注意Q本笔记只是对接口写法做了记录Qƈ没有q行更严格的设计和限Ӟ包括更严密的装Q这里只是学习它实现的原理?/span></p><p><span style="font-size: 14px;">  不过有些ideaq是要知道的Q系l定时对~存q行清除q加入满x件的新数据,是根据:讉K旉Q访问次敎ͼ可用~存定wQ分配到的内存){因素决定的Q实际设计其实很多东襉K要考虑?/span></p><p><span style="font-size: 14px;">  一、介l:</span></p><p><span style="font-size: 14px;">  LRUQLeast Recently UsedQ最q最用,服务器缓存常用算法的一U?/span></p><p><span style="font-size: 14px;">  比如说一些系l登录的操作Q不可能每次你访问系l都去调用数据库的东西,如果能划Z些空间来Q比如说500MQ用来缓存这些东西,q样用户讉K的时候先在缓存里找,找不刎ͼ再去讉K数据库,同时把被讉K的内Ҏ到缓存里面(我们可以假设q些东西q会l常被访问)。然而,我们分配用来做缓存(CacheQ的I间肯定是有限的QM可能从数据库ȝ东西全部攑ֈ~存里,所以,当缓存里的内容达C限值的时候,我们p把最用的东西写回数据库,再将新的讉K内容从数据库暂存到缓存里面?/span></p><p><span style="font-size: 14px;">  二、数据结构:</span></p><p><span style="font-size: 14px;">  最常用的数据结构实现方式是hash_map和Double-Linked ListQhash_map只是Z实现键值key-value对应Q这样就避免了每ơ寻扄定值都要在双线链表里面序查找Q服务器是没办法负担q种低效率的查找Ҏ的?/span></p><p><span style="font-size: 14px;">  我们可以为链表节点写一个结构体Q用来定义节点的cdQ然后专门写一个类用来l织~存信息的存䏀—以双链表的形式?/span></p><p><span style="font-size: 14px;">  复制代码</span></p><p><span style="font-size: 14px;">  template<class K, class T></span></p><p><span style="font-size: 14px;">  struct Node</span></p><p><span style="font-size: 14px;">  {</span></p><p><span style="font-size: 14px;">  K key;</span></p><p><span style="font-size: 14px;">  T data;</span></p><p><span style="font-size: 14px;">  Node *next;</span></p><p><span style="font-size: 14px;">  Node *prev;</span></p><p><span style="font-size: 14px;">  };</span></p><p><span style="font-size: 14px;">  复制代码</span></p><p><span style="font-size: 14px;">  复制代码</span></p><p><span style="font-size: 14px;">  template<class K,class T></span></p><p><span style="font-size: 14px;">  class LRUCache</span></p><p><span style="font-size: 14px;">  {</span></p><p><span style="font-size: 14px;">  public:</span></p><p><span style="font-size: 14px;">  LRUCache(size_t size);         //typedef unsigned int size_t</span></p><p><span style="font-size: 14px;">  ~LRUCache();</span></p><p><span style="font-size: 14px;">  void Put(K key,T data);</span></p><p><span style="font-size: 14px;">  T Get(K key);</span></p><p><span style="font-size: 14px;">  private:</span></p><p><span style="font-size: 14px;">  void Attach(Node<K,T>* node);</span></p><p><span style="font-size: 14px;">  void Detach(Node<K,T>* node);</span></p><p><span style="font-size: 14px;">  private:</span></p><p><span style="font-size: 14px;">  hash_map<K,Node<K,T>*> hashmap;</span></p><p><span style="font-size: 14px;">  vector<Node<K,T>*> linkedList;</span></p><p><span style="font-size: 14px;">  Node<K,T>* head;</span></p><p><span style="font-size: 14px;">  Node<K,T>* tail;</span></p><p><span style="font-size: 14px;">  Node<K,T>* entries;          //temp nodes</span></p><p><span style="font-size: 14px;">  };</span></p><p><span style="font-size: 14px;">  复制代码</span></p><p><span style="font-size: 14px;">  看代码太枯燥Q我M个UML图:</span></p><p><span style="font-size: 14px;">  三、主要的两个函数接口Put()和Get()Q?/span></p><p><span style="font-size: 14px;">  最基本的,不是存,是取。那修改呢?合ƈ到存里面MQ通过键值key查找一个hash_map对应的valueQ如果value不是NULLQ那么更新value的内容即可。其实服务器~存比较多作的是d写少的东ѝ?/span></p><p><span style="font-size: 14px;">  因ؓ代码实在是太枯燥了,所以针对Put函数和Get函数M两张程图:</span></p><p><span style="font-size: 14px;">  其中QDetach(node)表示这个节点从双链表中解出Q成Z个独立的节点QAttach(node)表示node插入到头节点head后面Q表C它可能再次被用刎ͼQ这L话,如果自己再设计一个GetFirst()函数Q就能直接获取上ơ的讉Kl果Q这U访问连hash_map都不需要用到?/span></p><p><span style="font-size: 14px;">  程讲解Q?/span></p><p><span style="font-size: 14px;">  在上qPut函数程图中Q注意第一个判断“node==NULL”,q个node地址是通过hashmap映射而来的:1、如果不是NULLQ说明这个节点已l存在,那么该节点的数据data重写以后加到链表_</span></p><p><span style="font-size: 14px;">  2、如果是NULLQ还要进行第二个判断“分配地址的linkedList是不是已l空了”:</span></p><p><span style="font-size: 14px;">  2.1、如果空了,说明全部可用地址已经分配完了Q那么,原链表的最后一个节点踢出链表(应写入数据库Q,然后被t出点的hashmap中对应的key-value擦除Q然后再加入新节点,q在hashmap中对应好新节点的key-valueQ?/span></p><p><span style="font-size: 14px;">  2.2、如果不I,那么从linkedList中分配个新地址l这个节点,同时linkedList要弹出分配完的地址Q然后再新节点加入链表中,对应好hashmap中的key-value?/span></p><p><span style="font-size: 14px;">  要注意,hashmap用来对应key-valueQ这里是方便查找Q而vector变量linkedList也只是在初始化的时候存储了一块连l地址Q用来分配地址Q它们两者都不是用来直接构徏链表的,链表是你自己建立的?/span></p><p><span style="font-size: 14px;">  Get()函数比较简单了Q?/span></p><p><span style="font-size: 14px;">  四、C++代码实现Q?/span></p><p><span style="font-size: 14px;">  代码不是我原创的Q后面给出原文地址Q,不过理清思\之后我自己实C一遍,试的过E实在是各种奇葩和辛苦(因ؓ一个不注意的小地方Q?/span></p><p><span style="font-size: 14px;">  代码实现里用Chash_mapQ注意,q个不是C++标准的一部分Q所以你要自己去库文仉找找Q一般来说库文g都是?usr/include下面的了Qcd到这个文件夹Q然后用grep找一下:</span></p><p><span style="font-size: 14px;">  cd /usr/include</span></p><p><span style="font-size: 14px;">  grep  -R "hash_map"</span></p><p><span style="font-size: 14px;">  最后你会发现是q个头文Ӟ<ext/hash_map>Q用文本文档打开来看一下,因ؓ是限制了命名I间的,会发现有两个可用的命名空_其中一个是__gnu_cxx?/span></p><p><span style="font-size: 14px;">  代码我一开始是用Qt写的Q不q后来发现Qt没法调试Q后面再_Q于是最后用Eclipse完成了调试和试Q下面先l出代码Q?/span></p><p><span style="font-size: 14px;">  LRUCache</span></p><p><span style="font-size: 14px;">  调试的时候我发现了一个问题:</span></p><p><span style="font-size: 14px;">  坑爹了,全部节点的next指针全部都指向自己,q样的话链表长得像什么样子呢Q应该是q样Q?/span></p><p><span style="font-size: 14px;">  q个错误到底是怎么来的Q?/span></p><p><span style="font-size: 14px;">  我反复地看代码,节点的链入(AttachQ和取出QDetachQ都是没有问题的Q而且Q插入新节点的时候,已经插入q的节点Z么没有了QAttachҎ既然是正的Q那Z么节点的nextZ么会指向自己Q?/span></p><p><span style="font-size: 14px;">  l合上面两个问题Q我H然意识刎ͼ那只能是分配地址的时候出现问题了Q?/span></p><p><span style="font-size: 14px;">  所以回到构造函数分配地址的部分,我发现在for循环里面Q本应是Q?/span></p><p><span style="font-size: 14px;">  linkedList.push_back(entries+i);</span></p><p><span style="font-size: 14px;">  q样p序存储分配好的地址?/span></p><p><span style="font-size: 14px;">  但我竟然把i写成?Q所以每个地址都成了同一个!吐血的经历?/span></p><p><br/></p></div> </div> </div> </div> <div class="clear"></div> <div class="foot"> <div class="foot_menu"> <ul> <li><a href="/About/">关于我们</a></li> <li><a href="/Advantage/">开发优?/a></li> <li><a href="/Statement/">法律声明</a></li> <li><a href="/Remittance/">汇款方式</a></li> <li><a href="/Contact/">联系我们</a></li> </ul> </div> <div class="banquan"> 手机Q?8678812288 EQMail:1069706080@qq.com<br /> 地址Q山东省南市舜耕\泉城公园东门园内向北50c? 鲁ICP?7011972? 版权所?008Q?013 ׃赢d信息U技有限公司<script type="text/javascript"> var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://"); document.write(unescape("%3Cscript src='" + _bdhmProtocol + "#/h.js%3F5fbc066dba9928a1e914c338c6945c98' type='text/javascript'%3E%3C/script%3E")); </script> </div> </div> <div style="position:fixed;left:-9000px;top:-9000px;"><dfn id="orz4q"><noscript id="orz4q"><xmp id="orz4q"><output id="orz4q"></output></xmp></noscript></dfn><strong id="orz4q"><dl id="orz4q"></dl></strong><ol id="orz4q"><p id="orz4q"><nav id="orz4q"><pre id="orz4q"></pre></nav></p></ol><dfn id="orz4q"></dfn><small id="orz4q"><optgroup id="orz4q"></optgroup></small><center id="orz4q"><small id="orz4q"><track id="orz4q"><rp id="orz4q"></rp></track></small></center><table id="orz4q"><ruby id="orz4q"><dl id="orz4q"><del id="orz4q"></del></dl></ruby></table><rt id="orz4q"></rt><output id="orz4q"></output><mark id="orz4q"></mark><dl id="orz4q"></dl><div id="orz4q"></div><optgroup id="orz4q"></optgroup><address id="orz4q"><progress id="orz4q"><noframes id="orz4q"><tr id="orz4q"></tr></noframes></progress></address><listing id="orz4q"><thead id="orz4q"><address id="orz4q"><wbr id="orz4q"></wbr></address></thead></listing><video id="orz4q"></video><object id="orz4q"><sup id="orz4q"></sup></object><em id="orz4q"></em><div id="orz4q"></div><progress id="orz4q"><listing id="orz4q"><th id="orz4q"><option id="orz4q"></option></th></listing></progress><meter id="orz4q"></meter><acronym id="orz4q"><rt id="orz4q"></rt></acronym><label id="orz4q"></label><track id="orz4q"></track><noscript id="orz4q"><div id="orz4q"><pre id="orz4q"><ol id="orz4q"></ol></pre></div></noscript><s id="orz4q"><kbd id="orz4q"></kbd></s><form id="orz4q"></form><var id="orz4q"></var><dl id="orz4q"><strike id="orz4q"></strike></dl><xmp id="orz4q"><strike id="orz4q"><small id="orz4q"><samp id="orz4q"></samp></small></strike></xmp><listing id="orz4q"><thead id="orz4q"><address id="orz4q"><progress id="orz4q"></progress></address></thead></listing><del id="orz4q"></del><object id="orz4q"><address id="orz4q"><samp id="orz4q"><rt id="orz4q"></rt></samp></address></object><ruby id="orz4q"></ruby><noframes id="orz4q"></noframes><code id="orz4q"></code><var id="orz4q"></var><nav id="orz4q"></nav><u id="orz4q"></u><span id="orz4q"></span><li id="orz4q"></li><tbody id="orz4q"><table id="orz4q"><span id="orz4q"><dl id="orz4q"></dl></span></table></tbody><optgroup id="orz4q"><xmp id="orz4q"><big id="orz4q"><em id="orz4q"></em></big></xmp></optgroup><var id="orz4q"></var><nav id="orz4q"></nav><rt id="orz4q"></rt><dfn id="orz4q"><font id="orz4q"><sub id="orz4q"><td id="orz4q"></td></sub></font></dfn><u id="orz4q"><s id="orz4q"></s></u><pre id="orz4q"><em id="orz4q"><p id="orz4q"><rp id="orz4q"></rp></p></em></pre><rt id="orz4q"><tr id="orz4q"></tr></rt> <pre id="orz4q"></pre><wbr id="orz4q"><rt id="orz4q"><tr id="orz4q"><output id="orz4q"></output></tr></rt></wbr><xmp id="orz4q"><pre id="orz4q"><em id="orz4q"><p id="orz4q"></p></em></pre></xmp><sub id="orz4q"></sub><p id="orz4q"></p><td id="orz4q"><tbody id="orz4q"></tbody></td><code id="orz4q"><video id="orz4q"><track id="orz4q"><tt id="orz4q"></tt></track></video></code><thead id="orz4q"></thead><source id="orz4q"><nobr id="orz4q"><cite id="orz4q"><td id="orz4q"></td></cite></nobr></source><del id="orz4q"></del><sub id="orz4q"></sub><code id="orz4q"></code><code id="orz4q"><menu id="orz4q"></menu></code><legend id="orz4q"><button id="orz4q"><source id="orz4q"><i id="orz4q"></i></source></button></legend><delect id="orz4q"></delect><ins id="orz4q"></ins><i id="orz4q"></i><pre id="orz4q"></pre><mark id="orz4q"></mark><b id="orz4q"><table id="orz4q"><strong id="orz4q"><noframes id="orz4q"></noframes></strong></table></b><source id="orz4q"></source><small id="orz4q"><optgroup id="orz4q"></optgroup></small><dl id="orz4q"></dl><center id="orz4q"><em id="orz4q"><track id="orz4q"><rp id="orz4q"></rp></track></em></center><address id="orz4q"></address><tt id="orz4q"><code id="orz4q"><nobr id="orz4q"><sub id="orz4q"></sub></nobr></code></tt><strong id="orz4q"></strong><delect id="orz4q"></delect><nobr id="orz4q"></nobr><strike id="orz4q"></strike><strong id="orz4q"></strong><optgroup id="orz4q"><xmp id="orz4q"><big id="orz4q"><em id="orz4q"></em></big></xmp></optgroup><menu id="orz4q"></menu><menu id="orz4q"></menu><small id="orz4q"><optgroup id="orz4q"></optgroup></small><input id="orz4q"><label id="orz4q"></label></input><big id="orz4q"><nobr id="orz4q"><track id="orz4q"><button id="orz4q"></button></track></nobr></big><sub id="orz4q"></sub><nav id="orz4q"><blockquote id="orz4q"></blockquote></nav><listing id="orz4q"><thead id="orz4q"><address id="orz4q"><wbr id="orz4q"></wbr></address></thead></listing><tbody id="orz4q"><table id="orz4q"></table></tbody><font id="orz4q"><mark id="orz4q"><meter id="orz4q"><tbody id="orz4q"></tbody></meter></mark></font><dl id="orz4q"><strike id="orz4q"><i id="orz4q"><samp id="orz4q"></samp></i></strike></dl><wbr id="orz4q"><noscript id="orz4q"></noscript></wbr><strong id="orz4q"><input id="orz4q"></input></strong><wbr id="orz4q"></wbr><legend id="orz4q"></legend><address id="orz4q"><progress id="orz4q"><noframes id="orz4q"><tr id="orz4q"></tr></noframes></progress></address><dfn id="orz4q"><font id="orz4q"><sub id="orz4q"><td id="orz4q"></td></sub></font></dfn><center id="orz4q"><ol id="orz4q"><noscript id="orz4q"><b id="orz4q"></b></noscript></ol></center> <u id="orz4q"><s id="orz4q"></s></u><u id="orz4q"><s id="orz4q"></s></u><output id="orz4q"></output><ruby id="orz4q"></ruby><wbr id="orz4q"></wbr><ins id="orz4q"></ins><s id="orz4q"><kbd id="orz4q"></kbd></s><b id="orz4q"></b><nobr id="orz4q"></nobr><strike id="orz4q"></strike><input id="orz4q"><label id="orz4q"></label></input><em id="orz4q"></em><form id="orz4q"></form><tbody id="orz4q"><table id="orz4q"><legend id="orz4q"><dl id="orz4q"></dl></legend></table></tbody><tr id="orz4q"></tr><dd id="orz4q"></dd><li id="orz4q"></li><code id="orz4q"></code><menu id="orz4q"><samp id="orz4q"></samp></menu><p id="orz4q"><rp id="orz4q"><u id="orz4q"><strong id="orz4q"></strong></u></rp></p><pre id="orz4q"><em id="orz4q"></em></pre><tbody id="orz4q"><table id="orz4q"></table></tbody><ol id="orz4q"><p id="orz4q"><label id="orz4q"><blockquote id="orz4q"></blockquote></label></p></ol><tr id="orz4q"><option id="orz4q"></option></tr><legend id="orz4q"></legend><p id="orz4q"><rp id="orz4q"><output id="orz4q"><strong id="orz4q"></strong></output></rp></p><menu id="orz4q"></menu><rt id="orz4q"></rt><rp id="orz4q"></rp><optgroup id="orz4q"></optgroup><del id="orz4q"></del><button id="orz4q"></button><rp id="orz4q"></rp><dfn id="orz4q"><font id="orz4q"><sub id="orz4q"><td id="orz4q"></td></sub></font></dfn><nav id="orz4q"><blockquote id="orz4q"></blockquote></nav><thead id="orz4q"><menuitem id="orz4q"><progress id="orz4q"><noscript id="orz4q"></noscript></progress></menuitem></thead><sup id="orz4q"><acronym id="orz4q"></acronym></sup><center id="orz4q"></center><font id="orz4q"></font><noscript id="orz4q"><div id="orz4q"></div></noscript><font id="orz4q"></font><wbr id="orz4q"><noscript id="orz4q"></noscript></wbr><meter id="orz4q"></meter><optgroup id="orz4q"><xmp id="orz4q"><big id="orz4q"><em id="orz4q"></em></big></xmp></optgroup><nav id="orz4q"></nav><input id="orz4q"><label id="orz4q"><menuitem id="orz4q"><progress id="orz4q"></progress></menuitem></label></input><address id="orz4q"></address><dl id="orz4q"></dl><progress id="orz4q"></progress><video id="orz4q"></video></div> <a href="http://www.themmauniversity.com/">պƷһAV_aŷպƷ_Ů߳ڵѿ_ŷƷһһ</a> <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body> </html>