自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (10)
  • 问答 (1)
  • 收藏
  • 关注

转载 指针数组 详解

看到网上一道面试题,主要是考指针的。我做了下,幸好没错,分享下。[cpp] view plaincopy1#include  2 using namespace std;  3 int main()  4 {  5     char *str[]={"welcome","to","Fortemedia","Nanjing"};  6     char**p=str+1;

2015-08-28 13:55:23 464

转载 可变参数的实现

C函数要在程序中用到以下这些宏: void va_start( va_list arg_ptr, prev_param ); type va_arg( va_list arg_ptr, type ); void va_end( va_list arg_ptr );  va_list:用来保存宏va_start、va_arg和va_end所需信息的一种类型。为了访问变长参数列表中

2015-08-24 21:34:41 358

转载 Linux锁机制

在linux内核中,有很多同步机制。比较经典的有原子操作、spin_lock(忙等待的锁)、mutex(互斥锁)、semaphore(信号量)等。并且它们几乎都有对应的rw_XXX(读写锁),以便在能够区分读与写的情况下,让读操作相互不互斥(读写、写写依然互斥)。而seqlock和rcu应该可以不算在经典之列,它们是两种比较有意思的同步机制。atomic(原子操作):所谓原子操作,就是该操

2015-08-21 09:57:56 1651

转载 多个线程调用同一个处理函数的互斥问题

问题背景:在工作中遇到过一个问题,就是在两个线程同时调用同一个函数的时候,到底是应该在这个函数的内部什么处理上加上互斥。原因又是什么?为了调查这个问题,我决定从以下三方面调查1.线程中函数的调用2.同一个进程中的两个线程调用同一个处理函数3.两个不同进程中的两个线程调用同一个处理函数1.线程中函数的调用每个进程都会有自己的虚拟地址空间,同一个进程中的每个线程都会在这

2015-08-20 17:53:47 5938

转载 C结构体里的成员数组和指针(特别是零长数组说明)

单看这文章的标题,你可能会觉得好像没什么意思。你先别下这个结论,相信这篇文章会对你理解C语言有帮助。这篇文章产生的背景是在微博上,看到@Laruence同学出了一个关于C语言的题,微博链接。微博截图如下。我觉得好多人对这段代码的理解还不够深入,所以写下了这篇文章。为了方便你把代码copy过去编译和调试,我把代码列在下面:1234567

2015-08-20 16:44:19 668

转载 volatile关键字的作用

一.前言1.编译器优化介绍:由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。再看软件一级的优化:一种是在编写代码时由程序员优化,另一种是由编译器进行优化。编译器优化常用的方法有:

2015-08-20 11:17:15 773

转载 用于并行计算的多线程数据结构,第 1 部分: 设计并发数据结构

转载地址:http://www.ibm.com/developerworks/cn/aix/library/au-multithreaded_structures1/index.html简介现在,您的计算机有四个 CPU 核;并行计算 是最时髦的主题,您急于掌握这种技术。但是,并行编程不只是在随便什么函数和方法中使用互斥锁和条件变量。C++ 开发人员必须掌握的关键技能之一是设计并发数据

2015-08-20 10:42:36 442

转载 设计不使用互斥锁的并发数据结构

用于并行计算的多线程数据结构,第 2 部分: 设计不使用互斥锁的并发数据结构本文是讨论多线程结构的两篇系列文章的第二篇,介绍关于实现基于互斥锁的并发链表的设计方法,讨论如何设计不使用互斥锁的并发数据结构。转载地址:http://www.ibm.com/developerworks/cn/aix/library/au-multithreaded_structures2/index.html

2015-08-20 09:19:24 932

转载 (GNU C)__attribute__机制

__attribute__用途:函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。语法格式:__attribute__ ((attribute-list))    另外,它必须放于声明的尾部“;”之前。函数属性    函数属性可以帮助开发者把一些特性添加到函数声明

2015-08-16 22:10:23 571

转载 C/C++ -- 代码技巧及优化

转载地址:http://blog.csdn.net/gugemichael/article/details/7529810本人总结了一些平时编程的小技巧和非算法类的优化,希望各位一起讨论,也分享自己的技巧     1、inline/define适量的代码冗余 :        "代码冗余"是一件很令人讨厌的事情,如果你在两个地方看到了同样的代码,第一反应就应该是"重构"他们,不过类

2015-08-16 21:33:14 571

转载 多线程与并发 概论

对无锁队列的最初兴趣来自梁斌同志的一个英雄帖:http://coderpk.com/。 第一次看到这个题目的时候还不知道CAS,FAA等所谓的“原子操作”,但直觉上感觉,通过对读写操作的性能优化来达到大幅提高队列性能的方法是行不通的,就算读写操作全用汇编来写,也不会和正常的read及 write有数量级上的区别。后来搜索了一下lock free data structure,才知道了关于原子操作的

2015-08-16 17:03:43 463

转载 内存使用技巧及内存池实现(二)

转载地址:http://blog.csdn.net/gugemichael/article/details/7547143  上一章节,提到了内存池的使用。其实内存池的作用看名字也能猜到,"池"意味着资源是同一管理和创建释放的,就像数据库的连接池、系统的线程池。主要就是为了避免创建、销毁资源的代价。c标准的malloc/free会造成大量的内存碎片以至于影响效率,所以“内存池”的技术某种程

2015-08-16 16:45:17 316

转载 内存使用技巧及内存池实现(一)

转载地址:http://blog.csdn.net/gugemichael/article/details/7543788本文只是展示了一些基本的内存管理技巧,处于篇幅没有更深入的讲解,有兴趣可回复一起探讨^_^        在当前的软件开发环境下,主要分为两大类:客户端和服务端。软件部署在客户端的情况逐渐被Web应用和服务端的网络应用所替代(游戏客户端例外),并且随着硬件的不断升级和成

2015-08-16 16:44:28 452

转载 15、C语言和设计模式(访问者模式)

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】    不知不觉当中,我们就到了最后一种设计模式,即访问者模式。访问者模式,听上去复杂一些。但是,这种模式用简单的一句话说,就是不同的人对不同的事物有不同的感觉。比如说吧,豆腐可以做成麻辣豆腐,也可以做成臭豆腐。可是,不同的地方的人未必都喜欢这两种豆腐。四川的朋友可能更喜欢辣豆腐,江浙的

2015-08-08 23:03:28 460

转载 14、 C语言和设计模式(状态模式)

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】    状态模式是协议交互中使用得比较多的模式。比如说,在不同的协议中,都会存在启动、保持、中止等基本状态。那么怎么灵活地转变这些状态就是我们需要考虑的事情。假设现在有一个state,[cpp] view plaincopytypedef struct _St

2015-08-08 23:01:03 2187

转载 13、C语言和设计模式(命令模式)

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】    命令模式的目的主要是为了把命令者和执行者分开。老规矩,举个范例吧。假设李老板是一家公司的头儿,他现在让他的秘书王小姐去送一封信。王小姐当然不会自己亲自把信送到目的地,她会把信交给邮局来完成整个投递的全过程。现在,我们就对投递者、命令、发令者分别作出定义。    首先定义pos

2015-08-08 22:54:22 351

转载 12、C语言和设计模式(解释器模式)

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】        解释器模式虽然听上去有些费解,但是如果用示例说明一下就不难理解了。我们知道在C语言中,关于变量的定义是这样的:一个不以数字开始的由字母、数字和下划线构成的字符串。这种形式的表达式可以用状态自动机解决,当然也可以用解释器的方式解决。[cpp] view pl

2015-08-08 22:46:57 359

转载 11、C语言和设计模式(备忘录模式)

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】    备忘录模式的起源来自于撤销的基本操作。有过word软件操作经验的朋友,应该基本上都使用过撤销的功能。举个例子,假设你不小心删除了好几个段落的文字,这时候你应该怎么办呢?其实要做的很简单,单击一些【撤销】就可以全部搞定了。撤销按钮给我们提供了一次反悔的机会。    既然是撤销,

2015-08-08 22:44:33 463

转载 20、C语言和设计模式(观察者模式)

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】    观察者模式可能是我们在软件开发中使用得比较多的一种设计模式。为什么这么说?大家可以听我一一到来。我们知道,在windows的软件中,所有的界都是由窗口构成的。对话框是窗口,菜单是窗口,工具栏也是窗口。那么这些窗口,在很多情况下要对一些共有的信息进行处理。比如说,窗口的放大,窗口的

2015-08-07 22:35:29 852

转载 19、C语言和设计模式(桥接模式)

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】    在以往的软件开发过程中,我们总是强调模块之间要低耦合,模块本身要高内聚。那么,可以通过哪些设计模式来实现呢?桥接模式就是不错的一个选择。我们知道,在现实的软件开发过程当中,用户的要求是多种多样的。比如说,有这么一个饺子店吧。假设饺子店原来只卖肉馅的饺子,可是后来一些吃素的顾客说能

2015-08-07 22:34:43 524

转载 18、C语言和设计模式(建造者模式)

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】    如果说前面的工厂模式是对接口进行抽象化处理,那么建造者模式更像是对流程本身的一种抽象化处理。这话怎么理解呢?大家可以听我慢慢到来。以前买电脑的时候,大家都喜欢自己组装机器。一方面可以满足自己的个性化需求,另外一方面也可以在价格上得到很多实惠。但是电脑是由很多部分组成的,每个厂家都

2015-08-07 22:24:46 462

转载 17、C语言和设计模式(中介者模式)

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】    中介者模式,听上去有一点陌生。但是,只要我给朋友们打个比方就明白了。早先自由恋爱没有现在那么普遍的时候,男女之间的相识还是需要通过媒婆之间才能相互认识。男孩对女方有什么要求,可以通过媒婆向女方提出来;当然,女方有什么要求也可以通过媒婆向男方提出来。所以,中介者模式在我看来,就是媒

2015-08-07 22:13:37 486

转载 16、C语言和设计模式(策略模式)

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】    策略模式就是用统一的方法接口分别对不同类型的数据进行访问。比如说,现在我们想用pc看一部电影,此时应该怎么做呢?看电影嘛,当然需要各种播放电影的方法。rmvb要rmvb格式的方法,avi要avi的方法,mpeg要mpeg的方法。可是事实上,我们完全可以不去管是什么文件格式。因为播

2015-08-07 22:08:52 427

转载 15、C语言和设计模式(适配器模式)

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】     现在的生活当中,我们离不开各种电子工具。什么笔记本电脑、手机、mp4啊,都离不开充电。既然是充电,那么就需要用到充电器。其实从根本上来说,充电器就是一个个普通的适配器。什么叫适配器呢,就是把220v、50hz的交流电压编程5~12v的直流电压。充电器就干了这么一件事情。

2015-08-07 21:57:03 797

转载 14、C语言和设计模式(装饰模式)

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】    装饰模式是比较好玩,也比较有意义。其实就我个人看来,它和责任链还是蛮像的。只不过一个是比较判断,一个是迭代处理。装饰模式就是那种迭代处理的模式,关键在哪呢?我们可以看看数据结构。[cpp] view plaincopytypedef struct _O

2015-08-07 21:48:00 414

转载 13、C语言和设计模式(享元模式)

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】    享元模式看上去有点玄乎,但是其实也没有那么复杂。我们还是用示例说话。比如说,大家在使用电脑的使用应该少不了使用WORD软件。使用WORD呢, 那就少不了设置模板。什么模板呢,比如说标题的模板,正文的模板等等。这些模板呢,又包括很多的内容。哪些方面呢,比如说字体、标号、字距、行距、

2015-08-07 21:33:50 341

转载 12、C语言和设计模式(代理模式)

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】    代理模式是一种比较有意思的设计模式。它的基本思路也不复杂。举个例子来说,以前在学校上网的时候,并不是每一台pc都有上网的权限的。比如说,现在有pc1、pc2、pc3,但是只有pc1有上网权限,但是pc2、pc3也想上网,此时应该怎么办呢?    此时,我们需要做的就是在pc1

2015-08-07 20:44:18 550

转载 11、C语言和设计模式(外观模式)

外观模式是比较简单的模式。它的目的也是为了简单。什么意思呢?举个例子吧。以前,我们逛街的时候吃要到小吃一条街,购物要到购物一条街,看书、看电影要到文化一条街。那么有没有这样的地方,既可以吃喝玩乐,同时相互又靠得比较近呢。其实,这就是悠闲广场,遍布全国的万达广场就是干了这么一件事。    首先,我们原来是怎么做的。[cpp] view plaincopytypedef

2015-08-07 20:41:42 455

转载 10、C语言和设计模式(迭代器模式)

使用过C++的朋友大概对迭代器模式都不会太陌生。这主要是因为我们在编写代码的时候离不开迭代器,队列有迭代器,向量也有迭代器。那么,为什么要迭代器呢?这主要是为了提炼一种通用的数据访问方法。    比如说,现在有一个数据的容器,[cpp] view plaincopytypedef struct _Container  {      int* pData;      

2015-08-04 22:36:03 482

转载 9、C语言和设计模式(抽象工厂模式)

前面我们写过的工厂模式实际上是对产品的抽象。对于不同的用户需求,我们可以给予不同的产品,而且这些产品的接口都是一致的。而抽象工厂呢?顾名思义,就是说我们的工厂是不一定的。怎么理解呢,举个例子。    假设有两个水果店都在卖水果,都卖苹果和葡萄。其中一个水果店买白苹果和白葡萄,另外一个水果店卖红苹果和红葡萄。所以说,对于水果店而言,尽管都在卖水果,但是两个店卖的品种不一样。      既然水

2015-08-04 22:23:07 511

转载 8、C语言和设计模式(责任链模式)

责任链模式是很实用的一种实际方法。举个例子来说,我们平常在公司里面难免不了报销流程。但是,我们知道公司里面每一级的领导的报批额度是不一样的。比如说,科长的额度是1000元,部长是10000元,总经理是10万元。    那么这个时候,我们应该怎么设计呢?其实可以这么理解。比如说,有人来找领导报销费用了,那么领导可以自己先看看自己能不能报。如果费用可以顺利报下来当然最好,可是万一报不下来呢?那就只

2015-08-04 22:22:01 417

转载 7、C语言和设计模式(工厂模式)

工厂模式是比较简单,也是比较好用的一种方式。根本上说,工厂模式的目的就根据不同的要求输出不同的产品。比如说吧,有一个生产鞋子的工厂,它能生产皮鞋,也能生产胶鞋。如果用代码设计,应该怎么做呢?[cpp] view plaincopytypedef struct _Shoe  {      int type;      void (*print_shoe)(struct _

2015-08-04 22:02:16 413

转载 6、C语言和设计模式(之模板模式)

模板对于学习C++的同学,其实并不陌生。函数有模板函数,类也有模板类。那么这个模板模式是个什么情况?我们可以思考一下,模板的本质是什么。比如说,现在我们需要编写一个简单的比较模板函数。[cpp] view plaincopytemplate typename type>  int compare (type a, type b)  {      return a > b

2015-08-04 21:58:39 463

转载 5、C语言和设计模式(之组合模式)

组合模式听说去很玄乎,其实也并不复杂。为什么?大家可以先想一下数据结构里面的二叉树是怎么回事。为什么就是这么一个简单的二叉树节点既可能是叶节点,也可能是父节点?[cpp] view plaincopytypedef struct _NODE  {      void* pData;      struct _NODE* left;      struct _NODE* 

2015-08-03 23:11:11 462

转载 4、C语言和设计模式(之原型模式)

原型模式本质上说就是对当前数据进行复制。就像变戏法一样,一个鸽子变成了两个鸽子,两个鸽子变成了三个鸽子,就这么一直变下去。在变的过程中,我们不需要考虑具体的数据类型。为什么呢?因为不同的数据有自己的复制类型,而且每个复制函数都是虚函数。    用C++怎么编写呢,那就是先写一个基类,再编写一个子类。就是这么简单。[cpp] view plaincopyclass d

2015-08-03 23:06:51 418

转载 3、C语言和设计模式(之单件模式)

有过面试经验的朋友,或者对设计模式有点熟悉的朋友,都会对单件模式不陌生。对很多面试官而言,单件模式更是他们面试的保留项目。其实,我倒认为,单件模式算不上什么设计模式。最多也就是个技巧。    单件模式要是用C++写,一般这么写。[cpp] view plaincopy#include   #include     class object  {  public:  

2015-08-03 23:01:30 417

转载 2、C语言和设计模式(继承、封装、多态)

记得还在我们大学C++第一门课的时候,老师就告诉我们说,C++是一门面向对象的语言。C++有三个最重要的特点,即继承、封装、多态。等到后来随着编码的增多和工作经验的积累,我也慢慢明白了面向对象的含义。可是,等我工作以后,使用的编程语言更多的是C语言,这时候我又想能不能把C语言变成面向对象的语言呢?等到后来通过思考和实践,我发现其实C语言也是可以面向对象的,也是可以应用设计模式的,关键就在于如何实现

2015-08-03 22:34:26 495

转载 1、C语言和设计模式(之开篇)

关于软件设计方面的书很多,比如《重构》,比如《设计模式》。至于软件开发方式,那就更多了,什么极限编程、精益方法、敏捷方法。随着时间的推移,很多的方法又会被重新提出来。    其实,就我个人看来,不管什么方法都离不开人。一个人写不出二叉树,你怎么让他写?敏捷吗?你写一行,我写一行。还是迭代?写三行,删掉两行,再写三行。项目的成功是偶然的,但是项目的失败却有很多原因,管理混乱、需求混乱、设

2015-08-03 22:26:25 546

ZeroMQ 云时代极速消息通信库

ZeroMQ 云时代极速消息通信库,压缩包是rar格式,挺清晰的,谢谢大家下载

2015-12-30

高质量程序设计指南.C.C语言(第三版)]

高质量程序设计指南.C.C语言(第三版) 不知道就上网百度下,就知道了。

2013-12-14

清华曾攀ansys二次开发资料

清华曾攀ansys二次开发资料,挺好的。为二次开发的奉献资源。

2013-12-01

Windows操作系统

深入解析Windows操作系统,window操作系统详细的内容。

2013-11-24

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

TA关注的人

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