- 博客(27)
- 资源 (4)
- 收藏
- 关注
原创 几个实用的WinDBG命令
几个实用的WinDBG命令kn commanddump current stack1: kd> kn # ChildEBP RetAddr00 81e33c6c 81898d7c nt!RtlpBreakWithStatusInstruction01 81e33c74 81898d2e nt!KdCheckForDebugBreak+0x22
2014-12-17 20:01:17
827
转载 7个示例科普CPU Cache line
转载于http://coolshell.cn/articles/10249.htmlCPU cache一直是理解计算机体系架构的重要知识点,也是并发编程设计中的技术难点,而且相关参考资料如同过江之鲫,浩瀚繁星,阅之如临深渊,味同嚼蜡,三言两语难以入门。正好网上有人推荐了微软大牛Igor Ostrovsky一篇博文《漫游处理器缓存效应》,文章不仅仅用7个最简单的源码示例就将CPU
2014-12-10 23:28:43
13142
原创 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
3872
原创 zookeeper客户端代码解读
最近一直在忙WebPageTest(以下简称wpt)开源库的修改工作,其中一项工作需要将zookeeper(以下简称zk)集成到wpt里。zk作为分布式系统的同步工具,实现了写的原子性(要么失败,要么成功,并不存在写一半的情况),并通过“选举组长“和”重选组长“,在负载均衡的同时保证数据一致性。关于zk服务端的设计,可以参考官网http://zookeeper.apache.org/。
2014-11-13 11:40:24
3185
原创 谈谈Boost网络编程(3)—— 一些坑
很多时候,我们以为采用了一种新技术(尤其是成熟的技术),过程应该是一马平川的。然而实际上,采用新技术的过程却是掉入了各种坑里。究其原因,或者是使用方式有问题,或者是效率的白白浪费。这一章,我想讲讲,我在使用Boost Asio进程网络编程时,所遇到的各种坑。 其一、CPU占用100%问题。 在没有采用异步编程之前,程序占用100%基本是不敢想象的事情,因为一旦程序占
2014-11-12 11:07:59
6834
原创 谈谈Boost网络编程(2)—— 新系统的设计
写文章之前,我们通常会想要采用何种方式,是“开门见山”,还是”疑问式开头“。写代码也有些类似,在编码之前我们需要考虑系统整体方案,这也就是各种设计文档的作用。在设计新系统之初,我主要的目的是:保证高效率;保证高扩展性。 效率评价以”任务数/秒“做单位。由于我的系统只是客户端,不应该占用太多内存以及CPU,所以内存占用率,CPU使用率也被作为一个硬性指标。那么这里就存在疑问的地方:
2014-11-12 10:29:17
1329
原创 inotify不生效问题
inotify还是不错的,玩着似乎很简单,但是坑也不少,如果不仔细查看官方文档,可能就真的不知道哪里存在坑,哪里需要注意。前段时间,在项目中使用inotify监控配置文件,以达到实时感知配置改变的目的。但近日查看线上日志发现,配置文件改变后,inotify并没有通知,结果导致配置一直未被更改。 在描述之前,要说明一下,我代码中的inotify使用方式,这个方式和网上大多方式一样:
2014-04-02 22:39:11
9579
原创 如何做到二进制兼容
如何做到二进制兼容?什么是二进制兼容? 二进制兼容,即某个程序(或库)有依赖其他库A,当库A升级时可以做到向后兼容,则程序(或库)功能不受影响。为什么要做到二进制兼容? 很明显的道理,如果库A升级没有能够做到二进制兼容,那么所有依赖它的程序(或库)都需要重新编译,否则会出现各种未知异常,其直接现象就是程序莫名其妙地挂掉。如何做到二
2013-05-30 10:46:48
9010
原创 无锁栈实现一例
一、何谓无锁队列无锁队列,顾名思义,即不需要加锁的队列;之所以不需要额外加锁,是因为其本身已经是线程安全的。二、为什么要在队列中集成线程安全的机制?这里我想采用对比的方式来讲述。有锁队列,这可能是最简单的一种队列了,比如我们在多线程情况下使用标准STD的deque,那么毫无疑问需要对其加锁。加锁其实是将协调过程交给了操作系统来管理,但无锁队列却是在CPU层面就做到了协调,所以在效率上会
2013-05-20 16:21:38
2063
原创 axel源码解析
原创作品,允许转载,转载时请务必以超链接形式标明文章出处 http://blog.youkuaiyun.com/cool_way/article/details/8221261这些天想实现一个下载功能,碰巧看到axel这个多线程下载工具,于是下载了axel源代码并研究了一番。这里简要说明一下axel的功能,它是linux下多线程下载工具,其主要功能为:1)支持多线程下载;2)支持HTTP和FT
2012-11-25 02:03:32
2790
原创 GLib中GThread Pool内存占用的问题
最近,我们发现有个简单的程序内存占用特别大,该程序自启动开始就占用着2.7G左右的内存。最初,大家都觉得不可思议,因为这个程序功能非常简单:1)它采用多socket多线程的方式,即每个socket链接都是一个线程,但该线程的功能很简单,就是持续接收socket数据。2)程序的另外一个功能就是转发数据。我排查了程序各处代码,没有发现有申请大块内存的地方,即便socket接收所采用的buffer,
2012-11-08 21:04:41
1275
原创 itoa的实现
itoa是windows的标准函数,但在linux系统中并未作为标准实现。这些天写了一个linux版本的测试例子,其中需要用到itoa函数,所以自己实现了一下。目前该函数只有base为10的版本,其实现思路大致为:1)首先判断待转换整数的符号,并且对负数最大值做记录(如果为INT_MIN,则positive_add被赋值为1)。2)循环将待转换整数模10,直至待转换整数等于0。这里采用
2012-11-08 20:43:28
1290
原创 RapidXml原理和使用
在项目进行到快收尾时,我们伟大的测试小组提出我们现有的联系人保存时间太长,从1000条联系人中删除三条联系人需要15s左右,并且要求新的保存方案在5s内。5s?我希望可以在2s内保存。所以google了下tinyxml如果提高效率,很幸运地发现rapidxml。从rapidxml的官方网站下载了其源代码,并测试了下效率,发现其比tinyxml确实要快很多,在我现有机器上大约要快3倍。欣喜之
2011-12-21 23:28:11
5484
原创 2011-12-21 工作小结
今天项目组将代码冻结,我们都不能上传代码了。这也表示我们进入到了alpha版的冲刺阶段。 上午黄总过来问我联系人文件多版本导入的进度。我将设计的工厂模式代码给他大致看了一下。他又告诉我目前有多了几个bug。由于柯工不在,于是我便担起分析bug的职责。我看到总共有6个bug,大多是UI引起,比如其中一个是早上同事就谈到的bug,便将其转给了那位同事。这里主要介绍下我遇到的两个比较复杂的b
2011-12-21 22:54:20
735
转载 讲讲volatile的作用
讲讲volatile的作用Queted from http://blog.21ic.com/user1/2949/archives/2007/35599.html一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。
2011-09-06 17:31:53
402
转载 PSTN电话通信的详细过程
<br /><br />采用电话线进行通信的过程简要介绍如下:<br />一、发射方:<br />1,模拟摘机;<br />2,自动拨号;<br />3,检测对方是否摘机,是,转4。否,转错误处理;<br />4,单片机控制DTMF发送器把要发送的数据发送到线路。<br /><br />二、接收方:<br />1,检测振铃信号;<br />2,模拟摘机;<br />3,用MT8870接收对方用DTMF方式发过来的数据;<br />4,单片机根据通信协议处理接收到的数据和命令。<br /><br />如果是普
2011-04-28 15:16:00
5306
转载 非阻塞式socket编程(select() )
<br />非阻塞式socket编程(select() ) - [linux开发]<br />版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明<br />http://eastsun.blogbus.com/logs/7873846.htmlSelect在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程
2011-03-19 11:21:00
612
转载 linux网络编程常用函数详解与实例
<br />linux网络编程常用函数详解与实例(socket-->bind-->listen-->accept)(2008-01-12 10:54:59)转载<br />分类: linux学习篇 <br />常用的网络命令:<br />netstat<br />命令netstat是用来显示网络的连接,路由表和接口统计等网络的信息.netstat有许多的选项我们常用的选项是 -an 用来显示详细的网络状态.至于其它的选项我们可以使用帮助<br />telnet<br />telnet是一个用来远程控制的
2011-03-19 11:13:00
853
转载 MYSQL日志文件
<br />MYSQL有不同类型的日志文件(各自存储了不同类型的日志),从它们当中可以查询到MYSQL里都做了些什么,对于MYSQL的管理工作,这些日志文件是不可缺少的。<br />1.错误日志(The error log):记录了数据库启动、运行以及停止过程中错误信息;<br />2.ISAM操作日志(The isam log):记录了所有对ISAM表的修改,该日志仅仅用于调试ISAM模式;<br />3.SQL执行日志(The query log):记录了客户端的连接以及所执行的SQL语句;
2010-11-26 17:46:00
530
转载 虚继承与虚基类的本质
虚继承与虚基类的本质 虚继承和虚基类的定义是非常的简单的,同时也是非常容易判断一个继承是否是虚继承的,虽然这两个概念的定义是非常的简单明确的,但是在C++语言中虚继承作为一个比较生僻的但是又是绝对必要的组成部份而存在着,并且其行为和模型均表现出和一般的继承体系之间的巨大的差异(包括访问性能上的差异),现在我们就来彻底的从语言、模型、性能和应用等多个方面对虚继承和虚基类进行研究。 首先还是先给出虚继承和虚基类的定义。 虚继承:在继承定义中包含了virtual关键字
2010-11-25 20:17:00
398
转载 [整理]虚拟继承入门
为什么要引入虚拟继承?虚拟继承在一般的应用中很少用到,所以也往往被忽视,这也主要是因为在C++中,多重继承是不推荐的,也并不常用,而一旦离开了多重继承,虚拟继承就完全失去了存在的必要(因为这样只会降低效率和占用更多的空间,关于这一点,我自己还没有太多深刻的理解,有兴趣的可以看网络上白杨的作品《RTTI、虚函数和虚基类的开销分析及使用指导》,说实话我目前还没看得很明白,高人可以指点下我)。以下面的一个例子为例:#include #include class CA
2010-11-25 20:03:00
461
转载 多重继承及虚继承中对象内存的分布
<br />这篇文章主要讲解G++编译器中虚继承的对象内存分布问题,从中也引出了dynamic_cast和static_cast本质区别、虚函数表的格式等一些大部分C++程序员都似是而非的概念。问题拿捏得十分到位,下面是我对原文的翻译,原文见这里(By Edsko de Vries, January 2006)。<br />本文是介绍C++的技术文章,假定读者对于C++有比较深入的认识,同时也需要一些汇编知识。<br />本文我们将阐释GCC编译器针对多重继承和虚拟继承下的对象内存布局。尽管在理想的使用
2010-11-25 19:32:00
548
转载 C++中产生一定范围内的随机数
<br /> 如果让你用C++来生成0——N-1之间的随机数,你会怎么做?你可能会说,很简单,看:<br />srand( (unsigned)time( NULL ) );<br />rand() % N;<br />仔细想一下,这个结果是随机的吗(当然,我们不考虑rand()函数的伪随机性)?<br />不是的,因为rand()的上限是RAND_MAX,而一般情况下,RAND_MAX并不是N的整数倍,那么如果RAND_MAX % = r,则0——r之间的数值的概率就要大一些,而r+1——N-
2010-11-22 17:50:00
9295
转载 英特尔® 多线程应用开发指南
<br />http://software.intel.com/zh-cn/articles/intel-guide-for-developing-multithreaded-applications/?cid=sw:prccsdn1373
2010-11-10 10:50:00
749
转载 [技术讨论]程序员的基本技能和素质
此文转自青润心情的blog。最近在一家公司帮忙,因为那个公司的一个主要股东和我很谈得来,他们公司是准备提供医疗相关服务的,这个股东也是阜外医院的一个先心专家。这里暂时不谈其他问题,仅仅从招聘的过程中看到的一些信息和让我深为担忧的事情。招聘技术人员的过程并不长,比起2002年在上海的托普招聘数量少多了,但是,我却失望得更多,担忧也更为加剧。我给过来的技术人员出的一个简单题目是:实
2009-06-15 14:27:00
451
UNIX网络编程 卷1(第3版)清晰版 + 随书代码(第二部分)
2013-12-02
UNIX网络编程 卷1(第3版)清晰版 + 随书代码(第一部分)
2013-12-02
TinyTree简单的树结构
2012-03-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人