首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

当C++碰到IOS应用开发-LRUCache缓存

2014-07-25 
当C++遇到IOS应用开发---LRUCache缓存本文着重介绍如何在XCODE中,通过C开发在IOS环境下运行的缓存功能。算

当C++遇到IOS应用开发---LRUCache缓存
      本文着重介绍如何在XCODE中,通过C++开发在IOS环境下运行的缓存功能。算法基于LRU(最近最少使用)。有关lru详见:
      http://en.wikipedia.org/wiki/Page_replacement_algorithm#Least_recently_used
     
      之前在网上看到过网友的一个C++实现,感觉不错,所以核心代码就采用了他的设计。相关链接如下:
      http://www.cppblog.com/red22/articles/62499.html

      原作者通过两个MAP对象来记录缓存数据和LRU队列,注意其中的LRU队列并不是按照常用的方式使用LIST链表,而是使用MAP来代替LIST,有关这一点原作者已做了说明。
   
      另外还有人将MRU与LRU组合在一起使用,当然如果清楚了设计原理,那么就很容易理解了,比如这个开源项目:http://code.google.com/p/lru-cache-cpp/

      考虑到缓存实现多数使用单例模式,这里使用C++的模版方式设计了一个Singlton基类,这样以后只要继承该类,子类就会支持单例模式了。其代码如下:
 
void testLRUCache(){ //指针方式 DZCache::instance()->set(@"name", @"daizhj");//设置 NSString* name = (NSString*)DZCache::instance()->get(@"name");//获取 std::cout<<[name UTF8String]<<endl; NSNumber * age=[NSNumber numberWithInt:123123]; DZCache::instance()->set(@"age", age); age = (NSNumber*)DZCache::instance()->get(@"age"); //对象方式 DZCache::getInstance().set(@"name", @"daizhenjun"); name = (NSString*)DZCache::getInstance().get(@"name"); std::cout<<[name UTF8String]<<endl; age = [NSNumber numberWithInt:123456]; DZCache::getInstance().set(@"age", age); age = (NSNumber*)DZCache::getInstance().get(@"age");}



    好了,今天的内容就先到这里了。

    原文链接:http://www.cnblogs.com/daizhj/archive/2012/11/13/2768092.html
    作者: daizhj, 代震军
    微博: http://weibo.com/daizhj
    Tags:ios, c++, lru, cache, map
   
   

  

热点排行