
C/C++
suacker
这个作者很懒,什么都没留下…
展开
-
Google开源了其C++测试框架 C++ Mocking框架
几个月前Google开源了其C++测试框架,现在Google又基于BSD协议将其C++ Mocking框架Google Mock开源。在Google内部Google Mock被用在100多个项目中,根据Google软件工程师Zhanyong Wan所说,Google Mock的灵感来自于jMock和EasyMock。该框架可用在Linux、Windows及Mac OS X上,面向C++开发者。转载 2008-12-19 19:46:00 · 1389 阅读 · 0 评论 -
[Effective C++第3版][第33条] 防止隐藏继承的名字
第33条: 防止隐藏继承的名字 莎士比亚对于“名字”有着独特的见解。“名字意味着什么?玫瑰不叫玫瑰,依然芬芳如故。”大师还写道:“倘若有人偷窃了我的好名声……转载 2008-05-04 16:06:00 · 757 阅读 · 0 评论 -
正则表达式使用详解
简介 简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具。其作用如下: 测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证。 替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字。 根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中转载 2008-05-03 12:10:00 · 587 阅读 · 0 评论 -
调试经验总结-VC下的错误对话框
很早前就想写点总结将编程中遇到的各种错误刨根挖底地罗列出来。但是因为这些错误(VC中开调试器遇到的各种错误对话框)都是随机性的,真正想总结的时候又不想不起来有哪些错误。恰好最近运气比较背,各种错误都被我遇遍了,于是恰好有机会做个总结。 这里所说的VC下的错误对话框时指在VC中开调试器运行程序时,IDE弹出的对话框。 1.不是错误的错误:断言 .将断言视为错误其实有点可笑,但是因为有些同转载 2008-04-25 16:37:00 · 878 阅读 · 3 评论 -
单元测试-----------测试驱动的C/C++程序开发
我们后台开发中, 随着老员工渐渐离去, 新人必定要接替工作而接触新模块新代码, 新员工也必定会抱怨单元测试太麻烦: 一个单元测试, 其实就是和QA差不多的测试,必须搭起整个系统, 由于对系统不熟悉, 难免碰到很多问题, 于是埋怨四起. 如果不这样测试, 自己又没能力找其它测试方法, 拿不出说服QA的测试案例来. 我自己在前一年多的时间里也同样碰到这个烦人的问题, 我对此做了几件事: (1转载 2008-04-24 10:00:00 · 1289 阅读 · 0 评论 -
PE文件格式与API HOOK
http://blog.youkuaiyun.com/wltg2001/archive/2008/04/23/2317059.aspx对于windows低层编程来说,进行API拦截始终是一件让人激动的事,用自己的代码来改变其它程序的行为,还有比这个更有趣吗?而且,在实现API拦截的过程中我们还有机会去熟悉许多在RAD编程环境中很少接触的东西,如DLL远程注入、内存管理,PE文件格式等知识。许多商业软件转载 2008-04-23 22:52:00 · 761 阅读 · 0 评论 -
企业用人与工作经验
早上看了csdn上的文章:>,也来谈谈用人问题。 我们公司也招毕业生,不过多半喜欢采取先实习,实习结束时双方决定是否留下来。其实这种方法给大家都留有余地:既给了没经验的毕业生表现自己的机会,也给企业一个选择的机会。 就我们软件开发而言,如果开发部门的人力结构比较健康的话,是可以直接招聘没有经验的。一个开发部门如果是这样:少量的经验丰富的架构师级别的 + 一定量的老员工 +原创 2008-04-29 21:06:00 · 691 阅读 · 0 评论 -
今天发现自己的array类太慢
Lazy Compiler使用Syngram动态创建语法分析器的代码实在是太慢了,debug竟然需要8秒钟来处理91条比较长的文法。于是我打开了Visual Studio 2008的Performance Wizard查看运行时消耗的资源,结果发现竟然都消耗在自己那个array类的operator[]里面了。那一段代码是用来检查文法的左递归引用关系是否出现环的。结果就把用到的四个array全部换成转载 2008-04-28 20:13:00 · 675 阅读 · 0 评论 -
多线程下vc2003,vc2005对虚函数表处理的BUG?
考虑一下多线程代码,在设计上,App为了获取更多的功能,从Window派生,而App同时为了获取某个模块的回调(所谓的Listener),App同时派生Listener,并将自己的指针交给另一个模块,另一个模块通过该指针多态回调到App的实现(对Listener规定的接口的implemention)。设计上只是一个很简单的Listener回调,在单线程模式下一切都很正常(后面我会罗列代码),但是换转载 2008-04-28 19:57:00 · 737 阅读 · 0 评论 -
STL序列容器的存储连续性
STL序列容器的存储连续性摘自《Extended STL》中译C++标准库提供了四种序列容器:deque、list、vector,和basic_string。第四种序列容器basic_string,主要用于表示字符串,但它确实是不折不扣的序列容器,所以如果你非要这样做的话,你也可以用它来保存char和wchar_t以外的数据。在标准库中的容器中,只有vector保证其元素的存储空间是连续的。因此,转载 2008-04-23 16:32:00 · 1263 阅读 · 0 评论 -
C/C++面试题深入剖析
C/C++ 程序设计员应聘常见面试试题深入剖析本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见。 许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strcpy函数都可看出面试者在技术上究竟达到了怎样的程度,我们能真正写好一个strcpy函数吗?我们都觉转载 2008-04-22 01:23:00 · 766 阅读 · 0 评论 -
Effective STL条款31: 理解你的排序操作
排序一直是数据结构中的常用算法,STL提供的排序算法非常丰富,如何有效使用就值得探讨。在网上没有找到条款31的翻译,于是我自己翻译了。--Winter如何进行排序?让我数数有几种方法。一旦程序员需对容器元素进行排序,sort算法马上就会出现在他的脑海(可能有些程序员会想到qsort,但详细阅读条款46后,他们会放弃使用qsort的想法,转而使用sort算法)。sort是一个非常优秀转载 2008-04-22 00:38:00 · 693 阅读 · 0 评论 -
STL之C++ 实例
1. sort 和容器STL中标准容器主要vector, list, deque, string, set, multiset, map, multimay, 其中set, multiset, map, multimap都是以树结构的方式存储其元素详细内容请参看:学习STL map, STL set之数据结构基础. 因此在这些容器中,元素一直是有序的。这些容器的迭代器类型并不是随机型迭代器,因此,转载 2008-04-22 00:14:00 · 747 阅读 · 0 评论 -
session的工作原理
session的工作原理 一、术语session 在我的经验里,session这个词被滥用的程度大概仅次于transaction,更加有趣的是transaction与session在某些语境下的含义是相同的。 session,中文经常翻译为会话,其本来的含义是指有始有终的一系列动作/消息,比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以 称之为一个session。有时候我们可以看到这转载 2008-04-30 13:23:00 · 707 阅读 · 0 评论 -
五种常见的 PHP 设计模式
设计模式只是为 Java™ 架构师准备的 —— 至少您可能一直这样认为。实际上,设计模式对于每个人都非常有用。如果这些工具不是 “架构太空人” 的专利,那么它们又是什么?为什么说它们在 PHP 应用程序中非常有用?本文解释了这些问题。设计模式 一书将设计模式引入软件社区,该书的作者是 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides原创 2008-04-29 20:45:00 · 1188 阅读 · 0 评论 -
深入研究 C++中的 STL Deque 容器
本文档深入分析了std::deque,并提供了一个指导思想:当考虑到内存分配和执行性能的时候,使用std::deque要比std::vector好。 介绍 本文深入地研究了std::deque 容器。本文将讨论在一些情况下使用deque> 比vector更好。读完这篇文章后读者应该能够理解在容量增长的过程中deque 与vector在内存分配和性能的不同表现。由于deque> 和vector的转载 2008-04-22 01:15:00 · 643 阅读 · 0 评论 -
Deque 总览
Deque 总览 deque 和 vector 一样都是标准模板库中的内容, deque 是双端队列,在接口上和 vector 非常相似,在许多操作的地方可以直接替换。假如读者已经能够有效地使用 vector 容器,下面提供 deque 的成员函数和操作,进行对比参考。 Deque 成员函数 函转载 2008-04-22 00:22:00 · 596 阅读 · 0 评论 -
C++之父元旦专访(8+13个问题,关于C++的学习&使用和未来)
C++之父元旦专访(8+13个问题,关于C++的学习&使用和未来) By TopLanguage (http://groups.google.com/group/pongba)刘未鹏|C++的罗浮宫 (http://blog.youkuaiyun.com/pongba) 临近元旦的一个月,Bjarne在通信中答应接受一次访谈。高兴之余,为访谈的问题犯了难,我不想做成一个个人的访谈;我希望这转载 2008-05-04 17:05:00 · 1046 阅读 · 0 评论 -
C++ , CppUnit , assert
上学的时候经常看到一些VC编程方面的书上说,在用VC开发程序的时候,最好用VERIFY宏代替ASSERT,当时不知道是其中的原因,今天看了两个宏的定义,终于明白了。1、在DEBUG模式下,两个宏的功能是一样的2、在RELEASE模式下,ASSERT不会对参数里的表达式进行计算,VERIFY会计算里面的表达式(如果是函数,将会调用该函数)。 部分定义如下:#ifdef _DEBU转载 2008-07-12 16:14:00 · 952 阅读 · 0 评论 -
static_cast, dynamic_cast, const_cast探讨
首先回顾一下C++类型转换:C++类型转换分为:隐式类型转换和显式类型转换又称为“标准转换”,包括以下几种情况:1) 算术转换(Arithmetic conversion) : 在混合类型的算术表达式中, 最宽的数据类型成为目标转换类型。 int ival = 3;double dval = 3.14159;ival + dval;//ival被提升转载 2008-07-12 16:08:00 · 638 阅读 · 0 评论 -
动态链接库与静态链接库
首先纠正所谓“静态连接就是把需要的库函数放进你的exe之中”的说法。在真实世界中,有三个概念:Use static libary, static linked DLL, dynamic linked DLL. 多数人混淆了static libary 和 static linked DLL的概念,当然他们有似是而非的“相似之处”,比转载 2008-10-28 23:26:00 · 1063 阅读 · 1 评论 -
Google C++ Style
http://www.cnblogs.com/kaiyang/archive/2008/10/07/1305475.htmlGoogle的开源项目大多使用C++开发。每一个C++程序员也都知道,C++具有很多强大的语言特性,但这种强大不可避免的导致它的复杂,这种复杂会使得代码更易于出现bug、难于阅读和维护。本指南的目的是通过详细阐述在C++编码时要怎样写、不要怎样写来规避其复杂性。这些规转载 2008-10-28 23:18:00 · 1353 阅读 · 0 评论 -
大话socket是网络编程
socket是网络编程的基础,本文用打电话来类比socket通信中建立TCP连接的过程。 socket函数,表示你买了或者借了一部手机。 bind函数,告诉别人你的手机号码,让他们给你打电话。 listen函数,打开手机的铃声,而不是静音,这样有电话时可以立马反应。listen函数的第二个参数,最大连接数,表示最多有几个人可以同时拨打你的号码。不过我们的手机,最多只能有一个人打进转载 2008-10-28 22:57:00 · 1231 阅读 · 0 评论 -
微软试题
微软试题 测测您的能力:微软程序员测试题 一.最基本题型(说明:此类题型比较简单) 1.烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧 绳的方法来计时一个小时十五分钟呢? 2.你有一桶果冻,其中有黄色、绿色、红色三种,闭上眼睛抓取同种颜色的两个。抓取多少个就可 以确定你肯定有两个同一颜色的果冻?(5秒-1转载 2008-07-03 23:55:00 · 1424 阅读 · 0 评论 -
Perl学习笔记(一)--变量
标量可以存放的数据类型有很多,除了常用的字符串和数字外,还可以存放引用, 而引用则可以是任何类型数据的引用.比如:@array = (1, 2, 3);$ref = /@array; #创建一个对数组array的引用注意引用的使用方法是, 在所引用的对象前面加上/,而在解引用的时候需要记住的是引用是一个标量,所以$ref表示的是一个引用, 要继续解释该引用所引用的数据还需要根据引用的数据类型进一步转载 2008-09-16 23:33:00 · 909 阅读 · 0 评论 -
正确地做事与做正确的事同样重要
“又是一年毕业时”,看到一批批学子离开人生的象牙塔,走上各自的工作岗位;想想自己也曾经意气风发、踌躇满志,不觉感叹万千……本文是自己工作6年的经历沉淀或者经验提炼,希望对所有的软件工程师们有所帮助,早日实现自己的人生目标。本文主要是关于软件开发人员如何提高自己的软件专业技术方面的具体建议,前面几点旨在确定大的方向,算是废话吧。正确地做事与做正确的事同样重要一位软件工程师的6年总转载 2008-06-16 00:05:00 · 695 阅读 · 0 评论 -
C/C++ 开发人员采用 Windows 64 位
5. 针对 C/C++ 开发人员采用 Windows 64 位 发布日期: 2006-7-10 | 更新日期: 2006-7-105.1 开发环境目前,Windows 64 位的开发环境由两部分组成: • 在 32 位机器上开发转载 2008-05-29 14:14:00 · 1291 阅读 · 0 评论 -
今天移植了2.6.25的网卡驱动 总结一下
今天移植了2.6.25的网卡驱动 总结一下因为在驱动中使用的是虚拟地址,因此要首先将网卡的物理地址映射到虚拟地址**************************************************************1 。在include/asm-arm/plat-s3c24xx/common-smdk.h文件中添加其中必须使用宏__phys_to_pfn 即将物理转载 2008-05-26 21:10:00 · 772 阅读 · 0 评论 -
结构对齐对结构成员的访问效率影响的测试。
测试一下 结构对齐对其成员访问效率的影响,程序中应该涉及到了对结构成员变量的读/写操作,测试应该是比较全面可信的。测 试结果表明,改变结构默认的对齐方式对其成员访问效率的影响是蛮大的。另外按CPU宽度来测试似乎与默认对齐方式的结果差不多,看来 #pragma pack(1)还是要慎用!!唉~~ 不过要是在 pack(1) 慎用的情况下,做socket 程序时。。。发送或接收数据的结构可怎么写??用转载 2008-05-23 00:10:00 · 736 阅读 · 0 评论 -
类型限定词volatile
一、类型限定词volatile限定词volatile告诉编译器该变量除了可以被程序改变以外还可被其他代理改变。它通常被用于硬件地址和与其它并行运行的程序共享的数据。如:volatile int locl; volatile int *ploc;你可能会奇怪为什么ANSI觉得有必要把volatile作为一个关键字。原因是它可以方便编译器优化。例如val1 = x;/* 一转载 2008-05-25 23:17:00 · 808 阅读 · 0 评论 -
两道最最基础的题:
再次说明,面试会面试很多方面,这两道题只是面试中百分之几的技术能力的测试.我不敢说精通,我只能说熟练,于是我这个熟练的人对那个精通的大牛出了两道最最基础的题:1.class A{}语句A a;在java,c#,c++中各发生了什么?2.x = new int[10];x[20] = 100;在java,c#,c++中分别发生了什么?------------------1.class A{}转载 2008-05-20 19:39:00 · 670 阅读 · 0 评论 -
面试題的总结
今天接到电话面试,被问到几个问题,汗颜之余,小结一下1、 多态是如何实现绑定的多态的绑定可以分为运行是多态和编译时多态● 编译时的多态性编译时的多态性是通过重载来实现的。对于非虚的成员来说,系统在编译时,根据传递的参数、返回的类型等信息决定实现何种操作。● 运行时的多态性运行时的多态性就是指直到系统运行时,才根据实际情况决定实现何种操作。C#中,运行时的多态性通过转载 2008-05-20 20:25:00 · 704 阅读 · 0 评论 -
35岁
一位网友foxtail在http://solidot.org/上 看了篇文章,叫做>, 问我怎么看待这个问题。我上去细细看了一下,有点了那位自称四十岁的老兄的blog欣赏了一番。文章中描述道: 一方面很多公司要求应聘者有多年从事软件开发的经验,另一方面又要求年龄不能大于35岁。经验是靠积累的,没有一定年份的开发,又哪里来经验,经过多年开 发的人年龄又怎么会小。应聘的人员如果是真正有经验的年龄也该接转载 2008-05-16 12:54:00 · 797 阅读 · 0 评论 -
快速实现托盘功能--VC
新一篇: 实现QQ的抓图功能function StorePage(){d=document;t=d.selection?(d.selection.type!=None?d.selection.createRange().text:):(d.getSelection?d.getSelection():);void(keyit=window.open(http://www.3转载 2008-05-12 19:39:00 · 969 阅读 · 0 评论 -
fstream unicode
: /******************************************************************** 2: created: 2008/05/10 3: created: 10:5:2008 23:56 4: filename: k:/sj/fstreamTest/fstreamTes转载 2008-05-11 13:23:00 · 2537 阅读 · 0 评论 -
Posix跨进程mutex的问题
例子如下: #include #include #include #include #include #include int main() { pthread_mutex_t *mutex; pthread_mutexattr_t attr; int fd; fd = open("mutex", O_RDWR|O_CREAT); mutex = mmap(N转载 2008-05-07 23:10:00 · 3244 阅读 · 0 评论 -
TCP/IP详解
最近在草草地看TCP那一部分,之所以草草地看是因为觉得早晚一天会回过头去细看。手头上有工作要做,所以先草草地把之前随便摘抄的TCP/IP相关概念贴出来:继续草草地贴:---------------------------------------------------------------------------------------------------------------------转载 2008-04-19 21:31:00 · 1583 阅读 · 1 评论 -
const和指针组合的变化
a. char const* p *p不能变,p能变,不需要初始化b. const char* p 同ac. char* const p *p能变,p不能变,需要初始化d. const char* const p *p不能变,p不能变,需要初始化d. const char const* p *p不能变,p能变,不需要初始化e. const char const* con转载 2008-04-21 23:27:00 · 572 阅读 · 0 评论 -
FixedAllocator的设计
再参考了《Modern C++ Design》的FixedAllocator的设计,并且优化了一下算法,虽然最坏时间复杂度还是O(N)的,但是在通常情况下,new/delete的使用已经获得了比较好的性能了。Chunk.h和version1.0的差不多,只是去掉了析构函数,让Chunk直接被FixedAlloctor操作Chunk.h#ifndef CHUNK_H#define CHUNK_H转载 2008-04-21 22:38:00 · 681 阅读 · 0 评论 -
linux/Unix平台G11N的开发
在linux/Unix平台上面做G11N的开发,大抵都会用到gettext库/工具集( ftp://ftp.gnu.org/gnu/gettext/ ) 和libiconv(http://www.gnu.org/software/libiconv/) ,前者是用于实现Resource bundle,而后者用于各种编码转化。(注:这里没有考虑cross-platform)1. 实现方法a . 使用p转载 2007-12-04 12:48:00 · 683 阅读 · 0 评论