C、C++
天天向上的金牛
这个作者很懒,什么都没留下…
展开
-
面向对象编程(C++描述)总结
这里我按照面向对象里面的几个基本概念分别进行说明如下: 一.对象(Object),这个概念可以说是面向对象里面的最为核心的概念,如果找不着对象,又如何面向对象呢?对象,也就是你要处理的问题里面设计的若干个因素,比如你做学生成绩统计,那么学生当然是你要考虑的对象。转载 2011-07-16 11:07:27 · 539 阅读 · 0 评论 -
I/O多路复用
I/O多路复用之select select的功能可以用一句话来描述: 实现基于I/O多路复用的异步并发编程。 在具体讲解select之前我们先看看常规的阻塞socket编程方式,以服务端为例: 对于这种方式,最大的问题在哪里呢?accept和recev的阻塞调用!下面以两种场景为例,来说明相比这种情况,select是如何做到异步I/O多路复用的高转载 2012-08-31 11:59:40 · 8823 阅读 · 0 评论 -
TinyXML:一个优秀的C++ XML解析器
读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好。 TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。 DOM模型即转载 2012-07-11 10:06:52 · 4693 阅读 · 0 评论 -
自旋锁及其衍生锁
自旋锁 自旋锁(spinlock)是用在多个CPU系统中的锁机制,当一个CPU正访问自旋锁保护的临界区时,临界区将被锁上,其他需要访问此临界区的CPU只能忙等待,直到前面的CPU已访问完临界区,将临界区开锁。自旋锁上锁后让等待线程进行忙等待而不是睡眠阻塞,而信号量是让等待线程睡眠阻塞。自旋锁的忙等待浪费了处理器的时间,但时间通常很短,在1毫秒以下。 自旋锁用于多个CPU系转载 2012-04-10 11:47:16 · 4137 阅读 · 0 评论 -
Linux 平台相关代码的 C++ 解决方案
Linux 平台相关代码的 C++ 解决方案 Linux 平台相关代码带来的问题 目前市场上存在着许多不同的 Linux 平台(例如:RedHat, Ubuntu, Suse 等),各大厂商和社区都在针对自己支持的平台进行优化,为使用者带来诸多方便的同时也对软件研发人员在进行编码时带来不少问题: 由于程序中不可避免的存在平台相关代码(系统调用等),软件研发人员为了保证自己转载 2012-04-11 13:49:32 · 5141 阅读 · 0 评论 -
Linux 的多线程编程的高效开发经验
Linux 的多线程编程的高效开发经验 背景 Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微和隐晦的差别。不注意这些 Linux 上的一些开发陷阱,常常会导致程序问题不穷,死锁不断。本文中我们从 5 个方面总结出 Linux 多线程编程上的问题,并分别引出相关改善的开发经验,用以避免这些的陷阱。我们希望这些经验可以帮助读者们能更转载 2012-04-11 10:34:41 · 5171 阅读 · 0 评论 -
典型的 C++ 程序员成长经历
一个典型的 C++ 程序员成长经历: 1. 完整的学一遍 C++ 所有语言特性,典型书籍 "The C++ Programming Language" Part1, Part2, "C++ Primer" 感觉 C++ 像大杂烩(多编程范型),各种精妙的语法特性 (friend, virtual/RTTI, const/mutable, exception, templa转载 2012-04-01 18:01:56 · 670 阅读 · 0 评论 -
C++模板元编程技术
一个可以运行的模板元编程例子 模板元编程(Template Metaprogramming)更准确的含义应该是“编‘可以编程序的’程序”,而模板元程序(Template Metaprogram)则是“‘可以编程序的’程序”。也就是说,我们给出代码的产生规则,编译器在编译期解释这些规则并生成新代码来实现我们预期的功能。让我们来看一个可以运行的模板元编程例子 — 计算给定整数的指定次方转载 2012-04-01 17:21:47 · 866 阅读 · 0 评论 -
typename
"typename"是一个C++程序设计语言中的关键字。当用于泛型编程时是另一术语"class"的同义词。[1]这个关键字用于指出模板声明(或定义)中的非独立名称(dependent names)是类型名,而非变量名。以下是对于泛型编程中typename两种迥然不同的用法的解释。 class关键字的同义词 这是一项C++编程语言的泛型编程(或曰“模板编程”)的功能,typena转载 2012-03-26 11:22:03 · 2277 阅读 · 0 评论 -
在Linux中创建静态库和动态库
我们通常把一些公用函数制作成函数库,供其它程序使用。函数库分为静态库和动态库两种。静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。本文主要通过举例来说明在Linux中如何创建静态库和动态库,以及使用它们。 在创建函数库前,我们先来准备举例用的源程序,并将函数库的源程序转载 2012-02-16 17:49:43 · 533 阅读 · 0 评论 -
浮点异常
今天遇到一个有趣的问题,就是浮点数什么时候是无效的,或者说is Not a Number (Nan),坦白说,写了这么久(有10年了吧)也没有留意过这个问题,开始遇到这个问题的时候,最先想到的还是google,baidu,顺便用了下我们公司的有道(www.yodao.com,做个广告),都没有找到完美的答案,相反寻求答案的帖子到随处都是,看来还是有很多人碰到过这个问题,经过一番测试,给出一个比较完转载 2012-01-05 15:53:01 · 8734 阅读 · 0 评论 -
C++实现多线程读写锁
在Win32下用C++实现多线程读写锁 读写锁实际是一种特殊的自旋锁,它把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则需要对共享资源进行写操作。这种锁相对于自旋锁而言,能提高并发性,因为在多处理器系统中,它允许同时有多个读者来访问共享资源,最大可能的读者数为实际的逻辑CPU数。写者是排他性的,一个读写锁同时只能有一个写者或多个读者(与CPU数相关),但不能同转载 2012-02-01 13:10:46 · 14447 阅读 · 2 评论 -
程序员六大职业素养
说起职业素养,可能大家脑子里马上反映出来的是西服领带公文包的精干白领形象,其实作为程序员来说,外在可能没有那么重要,更多的是内在职业素养,本期调查分享了两个研发小组的故事,让大家在统计数据的基础上进一步了解——什么是程序员需要的职业素养? 案例一:问题团队A D公司是个在发展壮大中的贸易公司,由于业务发展员工从刚开始的10人两年内增加到150多人,管理上出现了沟通效率低、对员工转载 2012-02-01 13:53:59 · 737 阅读 · 0 评论 -
在代码重构中蜕变
这几天,要对我半年前写的代码进行一些整理工作,在看代码时发现当时有很多地方写得不够好,俗称的有“坏味道”,呵呵,重构,必须的。 几年前通读过《重构,改善既有代码的设计》一书,虽然对各种重构模式或方法记忆有限,但精髓还是记住了:改代码而不改变软件的外在表现,循序渐进。 其实,重构是一个开发人员的基本工作内容,是在每天的开发过程中都要用到的。离开了重构和测试,代码质量是难有保障的。有人转载 2011-12-13 18:03:23 · 360 阅读 · 0 评论 -
C++高效程序设计
文章来源:http://www.kuqin.com/language/20090314/39898.html摘要不管是否愿意承认,每个人都希望程序的运行速度越快越好。每天人们都你追我赶,好像明天就是末日。而同时,公关部的那些家伙则不停的吼叫着,说他们的新引擎比其他人的更“快”更“转载 2011-07-19 13:25:12 · 415 阅读 · 0 评论 -
Fast bit count问题(即计算一个unsigned int的二进制表达中1的数目)
最近在看《Programming Pearls》。里面的好些问题很有意思。做一点小小的总结吧。 这个问题是计算一个unsigned int型二进制数中一个的个数,google中看到了不少很巧妙的算法,在这里做一个简单总结。另外,很喜欢stackoverflow这个论坛,geek很多,打酱油的人很少,感觉国外的程序员遇到有趣的问题兴致更高。关于这个问题,帖子见http://stackoverf转载 2012-07-25 17:37:40 · 8742 阅读 · 0 评论