青山相待

            白云相爱

            梦不到紫罗袍共黄金带

            一茅斋

            野花开

            管甚谁家兴废谁成败

            陋巷单瓢亦乐哉

            贫,气不改!

            达,志不改!

随笔分类 -  C++

摘要:分别以1倍size,10倍size,100倍size写入同样大小的数据,分别测试大文件写入和内存拷贝。tfwrite woaoniyoujifen,yueliangdaibiaowodexin!small write 100w times begin ...begin sec[1433735551... 阅读全文
posted @ 2015-06-08 12:31 Leo.Z 阅读(806) 评论(0) 推荐(0)
摘要:测试文件写同样大小的文件,单次记录较小和单次记录较大能有多大的性能差别。 最终写入同样大小的文件,小记录需要写入10w次,大记录需要写入1w次,看下最终的性能报告 从测试的结果来看,大记录写入1w次的效率是小记录的8倍。在注重性能的服务器上尽量避免频繁的几个字节或者几十个字节的文件写入操作。单... 阅读全文
posted @ 2015-06-08 11:07 Leo.Z 阅读(854) 评论(0) 推荐(0)
摘要:运用了static函数实现文件封装提升变量访问效率的关键字register,该关键字暗示该变量可能被频繁访问,如果可能,请将值存放在寄存器中内存集中管理,每个节点在取消后并没有立即释放内存,而是调用cleanup时统一释放定时器的hash函数是异或结果求余生成keystatic unsigned ... 阅读全文
posted @ 2015-05-01 11:59 Leo.Z 阅读(376) 评论(0) 推荐(0)
摘要:习惯的main函数有无参和两个参数的版本,那么main函数只能这么写吗? 好奇写了一个bug版本的main,结果是呵呵 #include #include using namespace std; int main(int argc, char** argv, char* p, char a)... 阅读全文
posted @ 2015-04-21 17:54 Leo.Z 阅读(544) 评论(0) 推荐(1)
摘要:dcc组件支持回调函数接口,当连接/断开连接对端时,调用传入的函数指针。A库和B库想做到不耦合,但是A库需要用到B库的某些函数,A库提供回调函数接口,在初始化的时候指定回调函数,降低耦合程度,每一个库都是独立的组件。web2c类同时实现了RecvNetMsg和RecvCmdMsg两个接口,Contr... 阅读全文
posted @ 2015-03-26 09:03 Leo.Z 阅读(222) 评论(0) 推荐(0)
摘要:错误1如下:vector> m_vc;error: '&' cannot appear in a constant-expression即嵌套的模板中,最后面的两个尖括号不能挨着写,正确写法如下vector > m_vc;错误2如下:MyDbHandle.cpp:253: error: invali... 阅读全文
posted @ 2015-03-26 08:54 Leo.Z 阅读(427) 评论(0) 推荐(0)
摘要:int foo(){}foo返回的是随机数函数的返回值在函数堆栈的参数后面,由一个指向寄存器的指针决定,函数返回时,调用者取指针取寄存器中的值作为返回值。如果指定返回值,函数在返回前会将返回值拷贝至寄存器;未指定返回值则寄存器的值是随机的。 阅读全文
posted @ 2015-03-26 08:43 Leo.Z 阅读(283) 评论(0) 推荐(0)
摘要:遍历删除map元素的正确方式是for(itor = maptemplate.begin; itor != maptemplate.end(); ){ if(neederase) maptemplate.erase(itor++); //itor指向下一个元素,但返回itor当前的副本,直... 阅读全文
posted @ 2015-01-07 11:28 Leo.Z 阅读(1576) 评论(0) 推荐(0)
摘要:艺术家的成就不在于创新技法与颜料,而是善于运用已有的技能,让手里的工具都充分发挥作用。 程序员也是如此,不必用很生僻的稀有的写法证明自己的不拘一格,善于将平常的技能组合创新为巧妙的构思。 用xerces处理xml文件,修改之时发现很多空行,找了前辈咨询,自己也对着晦涩的apache文档埋头苦干,两... 阅读全文
posted @ 2014-12-16 09:35 Leo.Z 阅读(133) 评论(0) 推荐(0)
摘要:新学了一个技巧:自动锁,类似于ace的自动锁,进入作用域声明一个用mutex初始化的自动锁对象,对象声明成功则表示获取锁资源成功,程序继续运行,否则持续等待;在离开作用域时自动释放锁。classAutoLock{public: AutoLock(pthread_mutex_t*pMutex):m... 阅读全文
posted @ 2014-12-08 16:16 Leo.Z 阅读(326) 评论(0) 推荐(0)
摘要:delete [] ptr 引发了singnal 6 abort的core错误,跟踪过程发现写入ptr大量数据,引发内存越界,破坏了new数组的尾部数据保护,导致delete的时候core。 问题分析过程写了一段测试代码,发现另外一些编辑器或者说操作系统的性质,new申请的数组总是分配2的n次方的... 阅读全文
posted @ 2014-11-18 10:00 Leo.Z 阅读(406) 评论(0) 推荐(0)
摘要:a storage class can only be specified for objects and functionsextern修饰一个struct报错,错误原因如上,C++中存储类修饰符有auto、register、extern、static,这几种修饰符只能修饰对象或者函数,这里用ex... 阅读全文
posted @ 2014-08-15 16:12 Leo.Z 阅读(380) 评论(0) 推荐(0)
摘要:前言 能说能抄能论皆不算,能写能打才是真功夫。 唠叨 反正我也是一个孤独的程序猿,多说一些奇奇怪怪的唠叨也无妨,第一次写消息队列,书本的东西和实战很不同,根据实战总结的一些注意事项会和大家分享,也敲打敲打自己,以后别总是想当然,要头顶蓝天,脚踩大地,做一个能文亦能武的敦厚男人。 简介 ... 阅读全文
posted @ 2014-08-04 16:31 Leo.Z 阅读(1843) 评论(0) 推荐(0)
摘要:提契纸上得来终觉浅,绝知此事要躬行。 正文 前段时间写了一篇epoll的学习文章,但没有自己的心得总觉得比较肤浅,花了一些时间补充一个epoll的实例,并浅析一下过程中遇到的问题。 上epoll_server的例子,epoll的代码都在这里1#include2#include3#include4... 阅读全文
posted @ 2014-07-16 11:02 Leo.Z 阅读(1368) 评论(0) 推荐(2)
摘要:C++的缺省参数尽量不要使用,结果可能出乎我们的意料,下面的程序大家看看输出结果是多少?1#include2usingnamespacestd;34classA5{6public:7virtualvoidpt(intipt,intnum=1)8{9coutpt(3);28} 想要回答3,2的朋友... 阅读全文
posted @ 2014-07-14 18:35 Leo.Z 阅读(289) 评论(0) 推荐(0)
摘要:前言 任何一种设计方式的引入都会带来额外的开支,是否使用,取决于能带来多大的好处和能带来多大的坏处,好处与坏处包括程序的性能、代码的可读性、代码的可维护性、程序的开发效率等。 线程池适用场合:任务比较多,需要拉起大量线程来处理;任务的处理时间相对比较短,按照线程的周期T1(创建阶段)、T2(执行... 阅读全文
posted @ 2014-07-10 15:47 Leo.Z 阅读(409) 评论(0) 推荐(0)
摘要:简介 将核心功能和装饰功能分离,为已有功能动态新增功能。 详述 装饰者模式英文翻译:Decorator。 装饰者模式类图 component:抽象接口类。 concretecomponent:具体的component类,实现核心功能,也是待添加功能的对象。 decorator:装饰者抽象类,继承... 阅读全文
posted @ 2014-07-06 17:28 Leo.Z 阅读(227) 评论(0) 推荐(0)
摘要:说明 操作系统维护malloc和free的基本原理是通过一个链表来记录的,每次malloc和free都有不小的开销,随着系统内存碎片化的加剧而开销增加,程序中可以通过申请一块大内存并自行分配的方式减少malloc和free操作,提供程序效率。提供一种简单内存池的方案供大家品鉴。 设计思路 1.已知... 阅读全文
posted @ 2014-07-04 12:39 Leo.Z 阅读(322) 评论(0) 推荐(0)
摘要:前言 C++有不少陷阱或者容易失误的地方,稍不注意就会导致程序bug。 正文 1.无符号数和有符号数比较 #define只是简单的文本替换,如果替换的是简单数值,默认是int,和unsigned int比较或者位操作会隐式类型转换,结果可能不是我们期望的。 2.case和break配对出现 swi... 阅读全文
posted @ 2014-07-04 11:25 Leo.Z 阅读(437) 评论(0) 推荐(0)
摘要:简介 weak_ptr是shared_ptr的观察者,它不会干扰shared_ptr所共享对象的所有权,当一个weak_ptr所观察的shared_ptr要释放它的资源时,它会把相关的weak_ptr的指针设置为空,防止weak_ptr持有悬空的指针。为什么需要weak_ptr,很多情况下需要旁观... 阅读全文
posted @ 2014-06-30 21:04 Leo.Z 阅读(1630) 评论(0) 推荐(0)