![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 87
郭军
存储系统开发,之前在EMC做文件系统内核相关的开发工作,现在在小米科技从事分布式存储相关的工作。
展开
-
C++ STL map中的Key使用自定义类型
C++ STL 中的map容器中的元素是按照Key的升序进行排列的,所以map的Key需要使用自定义类型时,该自定义类型必须重载operator 点击(此处)折叠或打开 In file included from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../inclu原创 2013-11-22 13:40:33 · 1761 阅读 · 0 评论 -
浅析淘宝网络通信库tbnet的实现
最近开始看Tair的源码实现,Tair的通信使用的是淘宝的开源的网络库tbnet实现。具体来说是依靠tbnet::Transport类型实现,其源代码路径如下:http://code.taobao.org/svn/tb-common-utils/trunk/tbnet/src下面是Transport的简单类图: 下面介绍其通信流程:1. 启动原创 2013-11-22 13:40:49 · 1138 阅读 · 0 评论 -
Socket connect error 99(Cannot assign requested address)
转载请注明转自: 存储系统研究, 本文固定链接:socket connect error 99(Cannot assign request address) 这是最近使用libcurl写http服务的压力测试的时候遇到的一个问题,其直接表象是客户端在发送http请求时失败,最终原因是客户端的TIME_WAIT状态的socket进程过多,导致端口被占满。下面看整个分析过程:(1) 首先看原创 2014-06-22 23:31:49 · 8016 阅读 · 0 评论 -
单生产者-多消费者模型中遇到的问题
(1) 出问题的代码最近使用单生产者-多消费者模型是遇到一个问题,以前既然都没有想到过。生产者线程的代码如下,基本功能就是接收到一个连接之后创建一个Socket对象并放到list中等待处理。原创 2014-08-09 18:07:44 · 886 阅读 · 0 评论 -
std::nth_element bug引起的crash问题
(1) 源码:auto less_compare = [] (const MirroringGroup& mg1, const MirroringGroup& mg2) -> bool { return (mg1.usage() < mg2.usage());};std::nth_element(mgs->begin(), mgs->begin() + (c原创 2015-11-30 18:03:21 · 1083 阅读 · 1 评论 -
C语言可变长参数实现原理
博客:存储系统研究微博:http://weibo.com/u/2203007022 (1) C语言可变参数我们可以从C语言的printf得出可变参数的作用,printf函数的原型如下:int printf ( const char * format, ... );通过使用可变个数参数,就是传入的参数个数是可变的,如printf需要根原创 2014-05-03 00:58:46 · 1508 阅读 · 3 评论