自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 776

转载 7个示例科普CPU Cache line

转载于http://coolshell.cn/articles/10249.htmlCPU cache一直是理解计算机体系架构的重要知识点,也是并发编程设计中的技术难点,而且相关参考资料如同过江之鲫,浩瀚繁星,阅之如临深渊,味同嚼蜡,三言两语难以入门。正好网上有人推荐了微软大牛Igor Ostrovsky一篇博文《漫游处理器缓存效应》,文章不仅仅用7个最简单的源码示例就将CPU

2014-12-10 23:28:43 12866 2

原创 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 3761 1

原创 以前的专利

一种嵌入式设备的高效搜索方法

2014-11-20 16:04:43 1075

原创 zookeeper客户端代码解读

最近一直在忙WebPageTest(以下简称wpt)开源库的修改工作,其中一项工作需要将zookeeper(以下简称zk)集成到wpt里。zk作为分布式系统的同步工具,实现了写的原子性(要么失败,要么成功,并不存在写一半的情况),并通过“选举组长“和”重选组长“,在负载均衡的同时保证数据一致性。关于zk服务端的设计,可以参考官网http://zookeeper.apache.org/。   

2014-11-13 11:40:24 3137

原创 谈谈Boost网络编程(3)—— 一些坑

很多时候,我们以为采用了一种新技术(尤其是成熟的技术),过程应该是一马平川的。然而实际上,采用新技术的过程却是掉入了各种坑里。究其原因,或者是使用方式有问题,或者是效率的白白浪费。这一章,我想讲讲,我在使用Boost Asio进程网络编程时,所遇到的各种坑。       其一、CPU占用100%问题。       在没有采用异步编程之前,程序占用100%基本是不敢想象的事情,因为一旦程序占

2014-11-12 11:07:59 6748 1

原创 谈谈Boost网络编程(2)—— 新系统的设计

写文章之前,我们通常会想要采用何种方式,是“开门见山”,还是”疑问式开头“。写代码也有些类似,在编码之前我们需要考虑系统整体方案,这也就是各种设计文档的作用。在设计新系统之初,我主要的目的是:保证高效率;保证高扩展性。        效率评价以”任务数/秒“做单位。由于我的系统只是客户端,不应该占用太多内存以及CPU,所以内存占用率,CPU使用率也被作为一个硬性指标。那么这里就存在疑问的地方:

2014-11-12 10:29:17 1294

原创 谈谈Boost网络编程(1)——旧系统的问题

Boost 网络 Boost Asio

2014-09-11 11:25:16 1323

原创 inotify不生效问题

inotify还是不错的,玩着似乎很简单,但是坑也不少,如果不仔细查看官方文档,可能就真的不知道哪里存在坑,哪里需要注意。前段时间,在项目中使用inotify监控配置文件,以达到实时感知配置改变的目的。但近日查看线上日志发现,配置文件改变后,inotify并没有通知,结果导致配置一直未被更改。    在描述之前,要说明一下,我代码中的inotify使用方式,这个方式和网上大多方式一样:

2014-04-02 22:39:11 9299 1

原创 如何做到二进制兼容

如何做到二进制兼容?什么是二进制兼容?       二进制兼容,即某个程序(或库)有依赖其他库A,当库A升级时可以做到向后兼容,则程序(或库)功能不受影响。为什么要做到二进制兼容?       很明显的道理,如果库A升级没有能够做到二进制兼容,那么所有依赖它的程序(或库)都需要重新编译,否则会出现各种未知异常,其直接现象就是程序莫名其妙地挂掉。如何做到二

2013-05-30 10:46:48 5123

原创 无锁栈实现一例

一、何谓无锁队列无锁队列,顾名思义,即不需要加锁的队列;之所以不需要额外加锁,是因为其本身已经是线程安全的。二、为什么要在队列中集成线程安全的机制?这里我想采用对比的方式来讲述。有锁队列,这可能是最简单的一种队列了,比如我们在多线程情况下使用标准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 2643

原创 GLib中GThread Pool内存占用的问题

最近,我们发现有个简单的程序内存占用特别大,该程序自启动开始就占用着2.7G左右的内存。最初,大家都觉得不可思议,因为这个程序功能非常简单:1)它采用多socket多线程的方式,即每个socket链接都是一个线程,但该线程的功能很简单,就是持续接收socket数据。2)程序的另外一个功能就是转发数据。我排查了程序各处代码,没有发现有申请大块内存的地方,即便socket接收所采用的buffer,

2012-11-08 21:04:41 1195

原创 itoa的实现

itoa是windows的标准函数,但在linux系统中并未作为标准实现。这些天写了一个linux版本的测试例子,其中需要用到itoa函数,所以自己实现了一下。目前该函数只有base为10的版本,其实现思路大致为:1)首先判断待转换整数的符号,并且对负数最大值做记录(如果为INT_MIN,则positive_add被赋值为1)。2)循环将待转换整数模10,直至待转换整数等于0。这里采用

2012-11-08 20:43:28 1211

原创 RapidXml原理和使用

在项目进行到快收尾时,我们伟大的测试小组提出我们现有的联系人保存时间太长,从1000条联系人中删除三条联系人需要15s左右,并且要求新的保存方案在5s内。5s?我希望可以在2s内保存。所以google了下tinyxml如果提高效率,很幸运地发现rapidxml。从rapidxml的官方网站下载了其源代码,并测试了下效率,发现其比tinyxml确实要快很多,在我现有机器上大约要快3倍。欣喜之

2011-12-21 23:28:11 5345

原创 2011-12-21 工作小结

今天项目组将代码冻结,我们都不能上传代码了。这也表示我们进入到了alpha版的冲刺阶段。   上午黄总过来问我联系人文件多版本导入的进度。我将设计的工厂模式代码给他大致看了一下。他又告诉我目前有多了几个bug。由于柯工不在,于是我便担起分析bug的职责。我看到总共有6个bug,大多是UI引起,比如其中一个是早上同事就谈到的bug,便将其转给了那位同事。这里主要介绍下我遇到的两个比较复杂的b

2011-12-21 22:54:20 707 2

转载 讲讲volatile的作用

讲讲volatile的作用Queted from http://blog.21ic.com/user1/2949/archives/2007/35599.html一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。

2011-09-06 17:31:53 385

转载 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 5020

转载 非阻塞式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 587

转载 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 825

转载 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 514

转载 虚继承与虚基类的本质

虚继承与虚基类的本质 虚继承和虚基类的定义是非常的简单的,同时也是非常容易判断一个继承是否是虚继承的,虽然这两个概念的定义是非常的简单明确的,但是在C++语言中虚继承作为一个比较生僻的但是又是绝对必要的组成部份而存在着,并且其行为和模型均表现出和一般的继承体系之间的巨大的差异(包括访问性能上的差异),现在我们就来彻底的从语言、模型、性能和应用等多个方面对虚继承和虚基类进行研究。 首先还是先给出虚继承和虚基类的定义。 虚继承:在继承定义中包含了virtual关键字

2010-11-25 20:17:00 380

转载 [整理]虚拟继承入门

为什么要引入虚拟继承?虚拟继承在一般的应用中很少用到,所以也往往被忽视,这也主要是因为在C++中,多重继承是不推荐的,也并不常用,而一旦离开了多重继承,虚拟继承就完全失去了存在的必要(因为这样只会降低效率和占用更多的空间,关于这一点,我自己还没有太多深刻的理解,有兴趣的可以看网络上白杨的作品《RTTI、虚函数和虚基类的开销分析及使用指导》,说实话我目前还没看得很明白,高人可以指点下我)。以下面的一个例子为例:#include #include class CA

2010-11-25 20:03:00 436

转载 多重继承及虚继承中对象内存的分布

<br />这篇文章主要讲解G++编译器中虚继承的对象内存分布问题,从中也引出了dynamic_cast和static_cast本质区别、虚函数表的格式等一些大部分C++程序员都似是而非的概念。问题拿捏得十分到位,下面是我对原文的翻译,原文见这里(By Edsko de Vries, January 2006)。<br />本文是介绍C++的技术文章,假定读者对于C++有比较深入的认识,同时也需要一些汇编知识。<br />本文我们将阐释GCC编译器针对多重继承和虚拟继承下的对象内存布局。尽管在理想的使用

2010-11-25 19:32:00 524

转载 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 9214

转载 英特尔® 多线程应用开发指南

<br />http://software.intel.com/zh-cn/articles/intel-guide-for-developing-multithreaded-applications/?cid=sw:prccsdn1373

2010-11-10 10:50:00 723

转载 [技术讨论]程序员的基本技能和素质

此文转自青润心情的blog。最近在一家公司帮忙,因为那个公司的一个主要股东和我很谈得来,他们公司是准备提供医疗相关服务的,这个股东也是阜外医院的一个先心专家。这里暂时不谈其他问题,仅仅从招聘的过程中看到的一些信息和让我深为担忧的事情。招聘技术人员的过程并不长,比起2002年在上海的托普招聘数量少多了,但是,我却失望得更多,担忧也更为加剧。我给过来的技术人员出的一个简单题目是:实

2009-06-15 14:27:00 434

UNIX网络编程 卷1(第3版)清晰版 + 随书代码(第二部分)

UNIX网络编程 卷1:套接字联网API(第3版)+ 随书代码,清晰版的哦 (因上传限制,分为两部分)此为第二部分

2013-12-02

UNIX网络编程 卷1(第3版)清晰版 + 随书代码(第一部分)

UNIX网络编程 卷1:套接字联网API(第3版)+ 随书代码,清晰版的哦 (因上传限制,分为两部分)此为第一部分

2013-12-02

Socket接口封装(支持多平台)

TCP Socket封装, 支持多平台, 学习网络编程.

2012-10-26

TinyTree简单的树结构

树类. 它有如下特点: (a)可快速查找, 其查找效率等同于hash map的效率. (b)快速遍历, 其遍历效率等同于hash map的效率. (c)树中各节点的Key值必须唯一, 否则将引起层次混乱. 如: 假设树节点的Key值如下 1 2 3 4 1 则Key值为3的节点下的子结点1是无法被查找到的. (d)树只管理自身节点内存, 节点中如果包含有指针, 请在 释放树前释放这些指针.

2012-03-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除