c/c++
文章平均质量分 73
南昼辰
穷则独善其身,达则兼善天下
展开
-
itoa的实现
itoa是windows的标准函数,但在linux系统中并未作为标准实现。这些天写了一个linux版本的测试例子,其中需要用到itoa函数,所以自己实现了一下。目前该函数只有base为10的版本,其实现思路大致为:1)首先判断待转换整数的符号,并且对负数最大值做记录(如果为INT_MIN,则positive_add被赋值为1)。2)循环将待转换整数模10,直至待转换整数等于0。这里采用原创 2012-11-08 20:43:28 · 1212 阅读 · 0 评论 -
zookeeper客户端代码解读
最近一直在忙WebPageTest(以下简称wpt)开源库的修改工作,其中一项工作需要将zookeeper(以下简称zk)集成到wpt里。zk作为分布式系统的同步工具,实现了写的原子性(要么失败,要么成功,并不存在写一半的情况),并通过“选举组长“和”重选组长“,在负载均衡的同时保证数据一致性。关于zk服务端的设计,可以参考官网http://zookeeper.apache.org/。原创 2014-11-13 11:40:24 · 3139 阅读 · 0 评论 -
谈谈Boost网络编程(2)—— 新系统的设计
写文章之前,我们通常会想要采用何种方式,是“开门见山”,还是”疑问式开头“。写代码也有些类似,在编码之前我们需要考虑系统整体方案,这也就是各种设计文档的作用。在设计新系统之初,我主要的目的是:保证高效率;保证高扩展性。 效率评价以”任务数/秒“做单位。由于我的系统只是客户端,不应该占用太多内存以及CPU,所以内存占用率,CPU使用率也被作为一个硬性指标。那么这里就存在疑问的地方:原创 2014-11-12 10:29:17 · 1294 阅读 · 0 评论 -
谈谈Boost网络编程(3)—— 一些坑
很多时候,我们以为采用了一种新技术(尤其是成熟的技术),过程应该是一马平川的。然而实际上,采用新技术的过程却是掉入了各种坑里。究其原因,或者是使用方式有问题,或者是效率的白白浪费。这一章,我想讲讲,我在使用Boost Asio进程网络编程时,所遇到的各种坑。 其一、CPU占用100%问题。 在没有采用异步编程之前,程序占用100%基本是不敢想象的事情,因为一旦程序占原创 2014-11-12 11:07:59 · 6752 阅读 · 1 评论 -
谈谈Boost网络编程(1)——旧系统的问题
Boost 网络 Boost Asio原创 2014-09-11 11:25:16 · 1323 阅读 · 0 评论 -
inotify不生效问题
inotify还是不错的,玩着似乎很简单,但是坑也不少,如果不仔细查看官方文档,可能就真的不知道哪里存在坑,哪里需要注意。前段时间,在项目中使用inotify监控配置文件,以达到实时感知配置改变的目的。但近日查看线上日志发现,配置文件改变后,inotify并没有通知,结果导致配置一直未被更改。 在描述之前,要说明一下,我代码中的inotify使用方式,这个方式和网上大多方式一样:原创 2014-04-02 22:39:11 · 9309 阅读 · 1 评论 -
如何做到二进制兼容
如何做到二进制兼容?什么是二进制兼容? 二进制兼容,即某个程序(或库)有依赖其他库A,当库A升级时可以做到向后兼容,则程序(或库)功能不受影响。为什么要做到二进制兼容? 很明显的道理,如果库A升级没有能够做到二进制兼容,那么所有依赖它的程序(或库)都需要重新编译,否则会出现各种未知异常,其直接现象就是程序莫名其妙地挂掉。如何做到二原创 2013-05-30 10:46:48 · 5134 阅读 · 0 评论 -
无锁栈实现一例
一、何谓无锁队列无锁队列,顾名思义,即不需要加锁的队列;之所以不需要额外加锁,是因为其本身已经是线程安全的。二、为什么要在队列中集成线程安全的机制?这里我想采用对比的方式来讲述。有锁队列,这可能是最简单的一种队列了,比如我们在多线程情况下使用标准STD的deque,那么毫无疑问需要对其加锁。加锁其实是将协调过程交给了操作系统来管理,但无锁队列却是在CPU层面就做到了协调,所以在效率上会原创 2013-05-20 16:21:38 · 2008 阅读 · 2 评论 -
axel源码解析
原创作品,允许转载,转载时请务必以超链接形式标明文章出处 http://blog.csdn.net/cool_way/article/details/8221261这些天想实现一个下载功能,碰巧看到axel这个多线程下载工具,于是下载了axel源代码并研究了一番。这里简要说明一下axel的功能,它是linux下多线程下载工具,其主要功能为:1)支持多线程下载;2)支持HTTP和FT原创 2012-11-25 02:03:32 · 2649 阅读 · 0 评论 -
GLib中GThread Pool内存占用的问题
最近,我们发现有个简单的程序内存占用特别大,该程序自启动开始就占用着2.7G左右的内存。最初,大家都觉得不可思议,因为这个程序功能非常简单:1)它采用多socket多线程的方式,即每个socket链接都是一个线程,但该线程的功能很简单,就是持续接收socket数据。2)程序的另外一个功能就是转发数据。我排查了程序各处代码,没有发现有申请大块内存的地方,即便socket接收所采用的buffer,原创 2012-11-08 21:04:41 · 1196 阅读 · 0 评论 -
vs2010编译thrift之compiler出错的处理方法
问题描述在使用visual studio 2010 SP1编译thrift-0.9.1的compiler时,出现:The command "flex -o "src\\thriftl.cc" src/thriftl.llbison -y -o "src\thrifty.cc" --defines="src/thrifty.hh" src/thrifty.yy问题原因fl原创 2014-12-04 20:11:47 · 3765 阅读 · 1 评论