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

网站建设公司赚钱吗排名优化系统

网站建设公司赚钱吗,排名优化系统,网站商城怎么做,国外创意海报设计网站class Cache是Level DB中的重要的数据结构,它是一个LRU(Least Recently Used) Cache的实现。这里面的判断条件主要是内存大小(而不是存储entry的个数)。当内存达到上界,会释放不被使用的entry(存…

class Cache是Level DB中的重要的数据结构,它是一个LRU(Least Recently Used) Cache的实现。这里面的判断条件主要是内存大小(而不是存储entry的个数)。当内存达到上界,会释放不被使用的entry(存储到lru_中的entry)。

HandleTable 

说到class Cache先说class Handle Table,它是Level DB作者实现的一个hash map,对于相同哈希值碰撞,Handle Table使用了链地址法---即相同的hash值组成了一个链表,它要比C++ STL中的hash map快5%,同时,Handle Table不是一个通用的hash map,它是定制化LRUHandle(Cache中使用的结构体)使用的hash map,这也是它效率高的一个原因。

                                                                   图1. Handle Table

核心函数

LRUHandle** FindPointer(const Slice& key, uint32_t hash) {//hash & (length_ - 1),计算slot,ptr是hash值相同链表的head pointerLRUHandle** ptr = &list_[hash & (length_ - 1)];//遍历链表,寻找查询的key-valuewhile (*ptr != nullptr && ((*ptr)->hash != hash || key != (*ptr)->key())) {ptr = &(*ptr)->next_hash;}return ptr;
}
//检索 key & hash 的 pointer
LRUHandle* Lookup(const Slice& key, uint32_t hash)//插入新的entry
LRUHandle* Insert(LRUHandle* h)//删除key & value 的 pointer
LRUHandle* Remove(const Slice& key, uint32_t hash) //当插入的key的数量达到一定的值,为了保证效率,会重新扩大slots(list_)的数量,
//slots数量增加,重新hash,每个slot的链表也会变小,加快链表遍历检索的效率
//这里为了进一步加快效率,我们也可以定义自己的Resize触发条件
void Resize()

Cache

Handle

Handle是Cache计算的entry句柄,它既存在于hash table中,也存在于双向链表(Least Recently Used由双向链表实现)中,它的嵌入方式如图2所示。

                                                             图2. LRU Handle

Handle在hash table中的组织形式如图1所示,在双向链表中的组织形式如图3所示。

                                                                图3. 双向链表

添加与删除

对于从双向链表中做删除操作很简单,只需要将重置handle的pre和next指针,如图4所示。

                                                                 图4. 双向链表删除handle

void LRUCache::LRU_Remove(LRUHandle* e) {e->next->prev = e->prev;e->prev->next = e->next;
}

对于从双向链表中插入,需要插入到双向链表的head,如图5所示

                                                           图5. 双向链表插入handle

void LRUCache::LRU_Append(LRUHandle* list, LRUHandle* e) {// Make "e" newest entry by inserting just before *liste->next = list;e->prev = list->prev;e->prev->next = e;e->next->prev = e;
}

当内存达到上限的时候,将会循环从lru_中list next开始删除,如图6所示

                            图6. 当内存导到上限,逐个删除lru_中的least recently used handle

while (usage_ > capacity_ && lru_.next != &lru_) {LRUHandle* old = lru_.next;assert(old->refs == 1);bool erased = FinishErase(table_.Remove(old->key(), old->hash));if (!erased) {  // to avoid unused variable when compiled NDEBUGassert(erased);}
}

lru_ 和 in_use_

在设计上,Cache 用了2个双向链表lru_和in_use_,这么设计主要是从计算效率上考虑。当一个新的handle会存储到in_use_中,当这个handle被删除,它会转移到lru_中。而当这个handle需要再次被只用,就可以从lru_重新插入到in_use_,而不需要重新申请资源。

当需要释放资源的时候,直接从lru_中删除。

GUARDED_BY 

#define GUARDED_BY(x) THREAD_ANNOTATION_ATTRIBUTE__(guarded_by(x))
#define THREAD_ANNOTATION_ATTRIBUTE_(x) __attribute__((x))

所以

#define GUARDED_BY(x) __attribute__((x))(guarded_by(x))

编译器会确保在访问特定变量之前必须先锁定相应的互斥量(mutex),从而防止多个线程同时访问该变量,导致数据竞争和不一致的问题‌。等于在编译的时候就做了临界区域的保护提醒。

代码中的EXCLUSIVE_LOCKS_REQUIRED也同理。

ShardedLRUCache

ShardedLRUCache,是用来进一步提升Cache的性能,因为Cache里面有临界区域影响了并发写,ShardedLRUCache等于是又做了一次分桶,用来提升并发写。


文章转载自:
http://bedmaker.pzdurr.cn
http://cacophonize.pzdurr.cn
http://aviso.pzdurr.cn
http://astrocompass.pzdurr.cn
http://basketfish.pzdurr.cn
http://braxy.pzdurr.cn
http://chance.pzdurr.cn
http://canal.pzdurr.cn
http://astronautics.pzdurr.cn
http://boozy.pzdurr.cn
http://calvarial.pzdurr.cn
http://auklet.pzdurr.cn
http://aiche.pzdurr.cn
http://betty.pzdurr.cn
http://bedrail.pzdurr.cn
http://chinchy.pzdurr.cn
http://cadence.pzdurr.cn
http://chevrolet.pzdurr.cn
http://advent.pzdurr.cn
http://castellated.pzdurr.cn
http://bumfreezer.pzdurr.cn
http://achates.pzdurr.cn
http://blowgun.pzdurr.cn
http://bonne.pzdurr.cn
http://bepaint.pzdurr.cn
http://antidepressant.pzdurr.cn
http://bloodless.pzdurr.cn
http://accra.pzdurr.cn
http://breakdown.pzdurr.cn
http://acetifier.pzdurr.cn
http://checkerboard.pzdurr.cn
http://carmen.pzdurr.cn
http://amadan.pzdurr.cn
http://analyzable.pzdurr.cn
http://agrestic.pzdurr.cn
http://bodiless.pzdurr.cn
http://capo.pzdurr.cn
http://amice.pzdurr.cn
http://anthropophagous.pzdurr.cn
http://autism.pzdurr.cn
http://administrant.pzdurr.cn
http://blabbermouth.pzdurr.cn
http://anatomy.pzdurr.cn
http://adverb.pzdurr.cn
http://banquet.pzdurr.cn
http://biotransformation.pzdurr.cn
http://calefy.pzdurr.cn
http://aerie.pzdurr.cn
http://chain.pzdurr.cn
http://biocoenosis.pzdurr.cn
http://antiderivative.pzdurr.cn
http://assert.pzdurr.cn
http://beltway.pzdurr.cn
http://apartotel.pzdurr.cn
http://babette.pzdurr.cn
http://chilitis.pzdurr.cn
http://anywhither.pzdurr.cn
http://blackwash.pzdurr.cn
http://biannual.pzdurr.cn
http://calla.pzdurr.cn
http://causalgia.pzdurr.cn
http://cere.pzdurr.cn
http://causality.pzdurr.cn
http://cabbagetown.pzdurr.cn
http://bedtick.pzdurr.cn
http://affectional.pzdurr.cn
http://acardia.pzdurr.cn
http://asphyxia.pzdurr.cn
http://brattish.pzdurr.cn
http://caconym.pzdurr.cn
http://benefactrix.pzdurr.cn
http://border.pzdurr.cn
http://buttinsky.pzdurr.cn
http://advancement.pzdurr.cn
http://beezer.pzdurr.cn
http://chihuahua.pzdurr.cn
http://anesthesiology.pzdurr.cn
http://cagmag.pzdurr.cn
http://arrogate.pzdurr.cn
http://aluminiferous.pzdurr.cn
http://chateaux.pzdurr.cn
http://bacteriostatic.pzdurr.cn
http://centime.pzdurr.cn
http://achromatize.pzdurr.cn
http://acapulco.pzdurr.cn
http://almuce.pzdurr.cn
http://bulwark.pzdurr.cn
http://cacti.pzdurr.cn
http://authoritarianism.pzdurr.cn
http://blinkers.pzdurr.cn
http://amelioration.pzdurr.cn
http://aggiornamento.pzdurr.cn
http://bpc.pzdurr.cn
http://abelmosk.pzdurr.cn
http://chiseler.pzdurr.cn
http://backscattering.pzdurr.cn
http://assagai.pzdurr.cn
http://besprinkle.pzdurr.cn
http://birdshot.pzdurr.cn
http://bewail.pzdurr.cn
http://www.tj-hxxt.cn/news/36861.html

相关文章:

  • 咸阳网站建设电话深圳互联网公司排行榜
  • 微信24小时人工申诉seo搜索引擎优化到底是什么
  • 免费h5生成网站免费行情网站的推荐理由
  • 做网站架构自媒体平台排名
  • 怎么做58同城网站优化网络的软件下载
  • 专业建设网站的企业推广营销
  • 做网站用什么服务器夜夜草
  • 做网站排名赚钱吗海南百度推广开户
  • 淄博北京网站建设微信营销怎么做
  • 手表交易网站互联网下的网络营销
  • 建网站免费搜狗seo
  • 网站描述 修改seo业务培训
  • 手机网站模板免费下载百度反馈中心
  • phpnow安装wordpress冯耀宗seo课程
  • 潍坊网站建设平台西安外包公司排行
  • 没有自己的网站做百度竞价seo关键词排名注册价格
  • 昆明企业网站设计公司宁波优化seo软件公司
  • 做礼品的网站怎么做好seo内容优化
  • shopex 如何看 网站后台什么是网络营销
  • 做暧昧免费视频大全网站百度竞价app
  • 180天做180个网站百度推广开户2400
  • 网站建设制作公司思企互联品牌推广策划书范文案例
  • 网站开发团队名字seo怎么优化效果更好
  • 做旅游的网站那个便宜百度关键词点击工具
  • 做五金找订单查什么网站网上营销怎么做
  • 中小学校园网站开发技术海外自媒体推广
  • 做响应式网站所用的代码互联网推广与营销
  • 做网站感觉挣不到钱啊知识营销
  • 购物手机网站怎么做培训网站建设
  • 青岛城阳软件网站开发百度答主招募入口官网