![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
代码分析
文章平均质量分 78
j8daxue
这个作者很懒,什么都没留下…
展开
-
stdext::hash_set剖析,env:vs08 sp1
hash表对我来说是闻名不见面,因为stl提供的基于rbtree的容器目前是满足我的工作需求的。最近闲得慌,于是看看非标准(C98)扩展的容器hash_set的实现,另外我所知道使用hash表的还有MFC里的CMap。源码基于VS2008 SP1。为了表达明确,假设比较器为less。insert1.如果此bucket的hash值【有】对应元素:取bucket+1是因为相原创 2014-07-07 20:12:33 · 1282 阅读 · 0 评论 -
thrift(1):TNonblockingServer分析
先看下工作模型这个模型很多库也是类似做法,比如muduo也是类似概述:主线程 + iothread + work池模式简单分析下主要类的功能和流程:TNonblockingIOThread:IO线程(主线程),运行着libevent的主循环主要成员包括 主线程指针,listensocket,pipefd等入口: serve()创建监听套接字,启动ioth原创 2016-04-27 18:43:37 · 688 阅读 · 0 评论 -
百度的bfs中raft协议实现(1)
raft具体原理就不说了,在这里只分析下百度bfs中的代码实现。为了使用不同的同步协议,bfs中把同步抽象了接口,实现方面一个是传统的主从(带快照,类似mysql dump数据+GTID同步方式),一个就是raft了。具体抽象接口如下:class RaftImpl : public Sync {public: RaftImpl(); ~RaftImpl();原创 2018-01-22 17:23:27 · 589 阅读 · 0 评论 -
百度的bfs中raft协议实现(2)
raft中另外一个问题就是log存储了,像360开源的floyd直接是使用的leveldb,选举状态相关存储也是leveldb。leveldb作为一个嵌入式的kv库自然是能很好的完成这样的功能,本着从学习的角度读了下bfs的log相关代码。抛开代码,如果自己设计,应该从什么角度考虑?1.log存储的东西有什么? 对raft而言,需要存储的是大量的(seq, value)和极少量原创 2018-01-23 18:00:07 · 510 阅读 · 0 评论