自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(51)
  • 收藏
  • 关注

转载 软中断 (linux网络子系统学习 第一节)

整个linux协议栈是运行在软中断环境中,所以学习协议栈首先要了解软中断。第一节就总结一下linux内核中软中断的具体实现。中断的作用:当一个中断信号到达时,CPU必须停止它当前正做的工作,转而去做中断要求其做的事情。中断分为同步中断和异步中断两种。1、同步中断又称异常,是由CPU执行指令时由CPU控制单元产生的。异常又分两种:(1)、 一种是由程序执行出错

2014-03-31 15:41:26 569

转载 wpa_supplicant_control_data_flow

http://wenku.baidu.com/view/72a04769561252d380eb6e48.html

2014-03-22 16:36:57 548

转载 wpa_supplicant软件架构分析

http://wenku.baidu.com/link?url=U0_7GO0N0LuExe3UeTgR3c2UEe2vgCcy5fgb2qXGYEmfx9fd077OM96MmmLm5SsepyBdk99yzYtn8hR7RAk5q96YmtrBUqDz0V4cgNXM1HC

2014-03-22 16:34:15 579

转载 wifi softap(hotspot) porting

wifi softap(hotspot) porting声明:该文件为本人原创,如转载修改及使用其中任何内容,请注明出处及原作者。Author:lanbo(高兆成)E-mail:lanbo_g@126.com如有任何疑问可留言或E-mail1、编译wifi driver修改firmware下载路径,或确认firmware路径A:有些wifi driv

2014-03-21 10:19:50 854

转载 虚函数和纯虚函数的区别

首先:强调一个概念定义一个函数为虚函数,不代表函数为不被实现的函数。定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。定义一个函数为纯虚函数,才代表函数没有被实现。定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。1、简介假设我们有下面的类层次:[cpp] view plaincopyclass 

2014-03-20 18:07:27 513

转载 clang带来的clang complete代码补全插件

用vim写C++代码,基本上没多少补全插件可以选.我用的是omnicppcomplete,这个插件靠tags来实现补全,效果差强人意.  前一段时间发现了clang complete,发现效果很好(广告一下:D).所以推荐一下.clang complete是llvm/clang带来的额外功能.clang complete是靠编译C++文件,应该是获得抽象语法树,进而进行补全的.所以,补全效果非

2014-03-20 17:56:27 15444

转载 C++中的namespace用法

关键字namespace定义了一个名字空间,里面的变量和函数,声明在此名字空间外使用须在前面加名字空间名称.例如:#includenamespace my{int a=3;}class test{public:int a;test(){a=1;}void fb(){int a=0;cout}};int main(){tes

2014-03-20 17:53:07 539

转载 C++类模板详解

有时,有两个或多个类,其功能是相同的,仅仅是数据类型不同,如下面语句声明了一个类:class Compare_int{   public :   Compare(int a,int b)   {      x=a;      y=b;   }   int max( )   {      return (x>y)?x:y;}int min( )

2014-03-19 17:38:33 569

转载 C++ this 指针详解

在前面曾经提到过: 每个对象中的数据成员都分别占有存储空间,如果对同一个类定义了n个对象,则有n组同样大小的空间以存放n个对象中的数据成员。但是,不同对象都调用同一个函数代码段。那么,当不同对象的成员函数引用数据成员时,怎么能保证引用的是所指定的对象的数据成员呢?假如,对于例9.6程序中定义的Box类,定义了3个同类对象a,b,c。如果有a.volume( ) ,应该是引用对象a中的h

2014-03-19 17:37:55 640

转载 C++函数模板详解

C++提供了函数模板(function template)。所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能。看下面的例子就清楚了。例4.7 将例4

2014-03-19 17:37:19 428

转载 GCC 中的inline关键字

inline关键字是C99中新加的,使用的时候,要注意以下两点:1、inline关键字在GCC参考文档中仅有对其使用在函数定义(Definition)上的描述,而没有提到其是否能用于函数声明(Declare)。从inline的作用来看,其放置于函数声明中应当也是毫无作用的:inline只会影响函数在translation unit(可以简单理解为C源码文件)内的编译行为,只要超出了这个范围

2014-03-19 17:18:26 874

转载 An Inline Function is As Fast As a Macro(《Using the GNU Compiler Collection (GCC)》)

By declaring a function inline, you can direct GCC tointegrate that function's code into the code for its callers. Thismakes execution faster by eliminating the function-call overhead; inaddition, if

2014-03-19 17:15:06 719

转载 C++虚函数与虚析构函数

在类中,有两个与众不同的成员函数,那就是构造函数和析构函数。当构造函数与析构函数遭遇继承和多态,它们的运行状况又会出现什么变化呢?多态性是在父类或各子类中执行最合适成员函数。一般来说,只会选择父类或子类中的某一个成员函数来执行。这可给析构函数带来了麻烦!如果有的资源是父类的构造函数申请的,有的资源是子类的构造函数申请的,而虚函数只允许程序执行父类或子类中的某一个析构函数,岂不是注定有一部分

2014-03-19 10:48:56 477

转载 C++多态与虚函数(多态的实现)

多态能够方便我们编写程序,可以让不同的类与它独特的成员函数一一对应。即使我们只是简单地“称呼”,程序也会很明白我们的心思。那么,多态应该如何实现呢?多态的实现在C++中,我们把表现多态的一系列成员函数设置为虚函数。虚函数可能在编译阶段并没有被发现需要调用,但它还是整装待发,随时准备接受指针或引用的“召唤”。设置虚函数的方法为:在成员函数的声明最前面加上保留字virtual。注意,不能把vi

2014-03-18 17:24:49 508

转载 vim中的杀手级插件: YouCompleteMe

Vim代码补全现状在漫长的Vim发展历史中,代码补全一直是比较被忽视的环节,相比众多IDE,vim本身的代码提示功能包括其众多补全插件显得无比简陋, 这是因为vim的先天不足,它是文本编译器,不能理解程序语意。引用王垠的一段文字:“文本编辑器”这种东西一般都不真正的理解程序语言。很多 Emacs 和 vi 的用户以为用 etags 和 ctags 这样的工具就能让他们“跳转到定义”,然

2014-03-18 17:05:16 682

转载 vim中的杀手级插件: vundle

相比sublime text2等现代编辑器,Vim缺乏默认的插件管理器,所有插件的文件都散布在~/.vim下的几个文件夹中,配置vim的过程, 就是在网上不停的搜插件,拷贝到~/.vim下,发现更新,要重新下载重新拷贝,想要删除某个不需要插件,更是要小心翼翼的不要删错。配置出顺手的Vim, 需要极大的耐心和运气。当然vim社区的活力是不容怀疑的,没有枪没有炮大神们自己造。以前使用过tpope的

2014-03-18 17:03:31 752

转载 手把手教你把Vim改装成一个IDE编程环境(图文)

手把手教你把Vim改装成一个IDE编程环境(图文)By:吴垠Date:2007-09-07Version:0.5Email:lazy.fox.wu#gmail.comHomepage:http://blog.csdn.net/wooinCopyright:该文章版权由吴垠和他可爱的老婆小包子所有

2014-03-18 16:21:47 432

转载 C++面向对象特点—多态性

在本章的开头介绍一个RPG游戏的时候,我们就说到不同职业的玩家在发动普通攻击和特殊攻击时,有着不同的效果。在编写程序的时候,我们并不知道用户会选择哪种职业的玩家,那么又该如何保证各种攻击效果和用户选择的玩家是对应的呢?在使用继承的时候,子类必然是在父类的基础上有所改变。如果两者完全相同,这样的继承就失去了意义。同时,不同子类之间具体实现也是有所区别的,否则就出现了一个多余的类。不同的类的同

2014-03-18 11:05:30 570

转载 C++继承与对象指针

我们在第14章的最后学习了对象指针,并且在编写链表类的过程中已经能熟练地使用它了。现在有了继承之后,我们的心中有了疑问:父类指针能否指向子类对象?子类指针能否指向父类对象?如果那样使用指针,对象的功能是否会受到限制呢?父类指针与子类对象我们修改程序17.3.1,用程序的运行结果来解答我们的疑问://student.h和undergraduate.h同程序17.3.1//main.c

2014-03-18 11:02:26 1218

转载 C++子类对象—子类对象的构造和析构

对象在使用之前,始终是要经历“构造”这个过程的。在第15章,我们了解到当一个对象的成员数据是另一个对象的时候,就先运行成员对象的构造函数,再运行父对象的构造函数。但是继承的出现,会引入子类的构造函数。这时候,这些构造函数的运行顺序又是怎样的呢?子类对象的构造讨论子类对象的构造,就是在讨论子类对象的生成方式。它是先生成父类对象的成员,再对其进行扩展呢,还是先生成子类对象的成员,然后再对其进行

2014-03-18 10:28:28 968

转载 C++继承的实现和方式

了解继承的概念之后,我们就来学习一下如何实现继承。私有和保护在第14章中我们说到,成员函数或成员数据可以是公有或者私有的。如果是公有的,那么它们可以被直接访问;如果是私有的,那么它们无法被直接访问。同时,我们还提到一个protected保留字,在没有使用继承的时候,它与private的效果是一样的,即无法被直接访问。如果使用了继承,我们就能体会到protected和private的差别。

2014-03-18 10:08:05 828

转载 MiniBufExplorer插件的使用

快速浏览和操作Buffer -- 插件: MiniBufExplorer 下载地址 [http://www.vim.org/scripts/script.php?script_id=159]版本     6.3.2安装     将下载的 minibufexpl.vim文件丢到 \~/.vim/plugin 文件夹中即可手册     在minibufexpl.vim 文件的头部

2014-03-17 15:26:49 2074 1

转载 C++类和对象的继承

在前面的章节,我们学会了如何编写一个完整的类。然而,面向对象的优势还没有被完全体现出来。特别是在编写一些相似的类时,可能会造成很多的浪费。本章就将以一个文字游戏为例,向大家介绍类的继承问题。剑士·弓箭手·法师的困惑在一个角色扮演类游戏(RPG)中,可能有各种不同职业的玩家,比如剑士、弓箭手和法师。虽然他们的职业不同,却有着一些相似之处:他们都具有生命值(Health Point——HP)、

2014-03-17 14:58:10 760

转载 C++操作符的重载

在表达式中,我们常会用到各种操作符(运算符),例如1+3和4*2。然而,这些操作符只能用于C++内置的一些基本数据类型。如果我们自己编写一个复数类,它也会有加减法的操作,那么它能否摆脱一串冗长的函数名,而享用加号呢?在第六章我们学到过,函数是可以重载的,即同名函数针对不同数据类型的参数实现类似的功能。在C++中,操作符也是可以重载的,同一操作符对于不同的自定义数据类型可以进行不同的操作。

2014-03-17 14:50:53 623

转载 C++本质:类的赋值运算符=的重载,以及深拷贝和浅拷贝

关键词:构造函数,浅拷贝,深拷贝,堆栈(stack),堆heap,赋值运算符摘要:    在面向对象程序设计中,对象间的相互拷贝和赋值是经常进行的操作。    如果对象在申明的同时马上进行的初始化操作,则称之为拷贝运算。例如:        class1 A("af"); class1 B=A;     此时其实际调用的是B(A)这样的浅拷贝操作。    如果对象在申明之后

2014-03-17 11:55:18 535

转载 shell脚本中$#、$0、$@等特殊变量的含义

讲一讲在shell中一些特殊变量的涵义,首先来看一个脚本:#!/bin/sh echo "\$#:$#" echo "\$0:$0" echo "\$1:$1" echo "\$2:$2" echo "\$@:$@" echo "\$*:$*" echo "\$$:$$" echo "\$?:$?" 保存脚本为: test.sh,来看下执行结果从结果我们可以看出:$# 传给脚本

2014-03-17 10:41:20 616

转载 >/dev/null 2>&1 解决烦人的标准输入

为什么要用 /dev/null 2>&1 这样的写法.这条命令的意思是将标准输出和错误输出全部重定向到/dev/null中,也就是将产生的所有信息丢弃.下面我就为大家来说一下,command > file 2>file   与command > file 2>&1 有什么不同的地方.       首先~command > file 2>file 的意思是将命令所产生的标准输出信息,和错误的

2014-03-16 21:39:17 824

转载 C++友元函数讲解

私有成员数据除了可能被别的类访问之外,也可能被别的函数或别的类的部分成员函数访问。为了保证类的封装性,我们可以以函数作为单位,“对外开放”类的私有成员。与声明友元类类似,如果我们想用函数访问链表结点类的私有成员数据,则那些函数必须得到链表结点类的认可。声明友元函数的语句格式为:    friend 返回值类型函数名(参数表);如果该函数是某个类的成员函数,则语句格式为:    frie

2014-03-14 15:30:56 617

转载 C++友元类讲解

在编写链表类的时候我们有着这样的困惑:链表类和链表结点类都是我们编写的,我们能保证链表类对链表结点类的操作都是安全的。但由于类的封装性,我们不得不编写一些成员函数,以便于链表类访问链表结点类的私有成员数据。好在链表结点类的成员数据并不是很多,否则岂不是需要一大堆成员函数来供别的类访问?对于这种情况,我们能否告诉链表结点类:“链表类是安全的,让它访问你的私有成员吧”?在C++中,可以用友元来

2014-03-14 13:58:27 624

转载 如何调试makefile变量

六、七年前写过一篇《跟我一起写Makefile》,直到今天,还有一些朋友问我一些Makefile的问题,老实说,我有一段时间没有用Makefile了,生疏了。回顾,这几年来大家问题我的问题,其实很多时候是makefile的调试问题。所以,就像我在之前的那篇关于GDB的技巧的文章中做的一样,在这里向大家介绍一个小小的调试变量的技巧。相信一定对你有用。对于Makefile中的各种变量,可能是我们比

2014-03-13 22:21:01 628

转载 C++的坑真的多吗?

先说明一下,我不希望本文变成语言争论贴。希望下面的文章能让我们客观理性地了解C++这个语言。(另,我觉得技术争论不要停留在非黑即白的二元价值观上,这样争论无非就是比谁的嗓门大,比哪一方的观点强,毫无价值。我们应该多看看技术是怎么演进的,怎么取舍的。)事由周五的时候,我在我的微博上发了一个贴说了一下一个网友给我发来的C++程序的规范和内存管理写的不是很好(后来我删除了,因为当事人要求),我并

2014-03-13 21:16:01 1306

转载 C++静态成员函数

静态成员数据是某一个类所具有的属性,而不是某一个对象的属性,所以它的存在并不依赖于对象。那么,如果一个类没有任何对象实例时,所有的普通成员函数都无法使用,我们该如何访问私有的静态成员数据呢?既然成员数据可以属于某一个类而不属于某一个具体的对象,成员函数能否这样呢?答案是肯定的。在C++中,除了有静态成员数据,还有静态成员函数。静态成员函数也是属于某一个类而不属于某一个具体的对象的。静态成员

2014-03-13 18:13:45 762

转载 C++静态成员数据—定义、初始化

由于内存的空间有限,我们常常关心已经使用掉了多少内存空间。如果我们修改上一章的链表程序(程序15.5),要能计算出整个程序一共产生了多少链表结点,我们该怎么做呢?显然,我们需要一个计数器。每产生一个结点,计数器就加一;每消除一个结点,计数器就减一。由于结点的产生和消除只会与链表类或结点类的某些成员函数有关,所以这个计数器只能是一个全局变量了(全局变量的概念见11.1节),否则它将无法被各个

2014-03-13 18:11:22 991

转载 链表类

链表结点类编写好了,我们可以向链表类进军了。链表是由一个个链表结点组成的,所以我们会在链表类中使用到链表结点类。链表结点类是一个很简单的类,链表类是一个功能更为强大的类。正是将一个个类不断地组合与扩充,使得面向对象的程序功能越来越强大。让我们感兴趣的是,假设我们编写的链表需要有一个头结点作为成员数据,那么是先有链表呢,还是先有头结点?我们又该如何在给链表作初始化的同时初始化头结点呢?

2014-03-13 17:22:00 1217

原创 android开发小问题收集【未完】

1、进入adb shell后无法找到busybox解决办法:# cp /system/etc/busybox /system/bin/# chmod 755 /system/bin/busybox2、进入droidboot,烧写img时,出现错误,机台无法正常启动解决办法:重新烧写droidboot.img即可,# sudo fastboot devices

2014-03-11 15:05:07 729

转载 new和delete的使用

一、基本数据类型的动态分配new和delete已经完全包含malloc和free的功能,并且更强大、方便、安全。使用动态分配内存时不能忘记释放内存,不要忘记出错处理!下面先看new和delete的基本使用方法。#include using namespace std;int main ( ){ //基本数据类型 int *i = new int;

2014-03-10 20:31:58 557

转载 Sed学习笔记

Sed学习笔记作者:Jims of 肥肥世家jims.yang@gmail.com>Copyright © 2004,2005, 本文遵从GNU 的自由文档许可证(Free Document License)的条款,欢迎转载、修改、散布。发布时间:2004年09月20日最近更新:2005年12月22日,增加小技巧章节。

2014-03-07 16:36:23 450

转载 C++拷贝构造函数详解

一. 什么是拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:[c-sharp] view plaincopyint a = 100;  int b = a;   而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。[c-sharp] view pla

2014-03-07 15:01:12 465

转载 通过Shell判断某个日期是星期几

一个朋友有如下的备份需求:1. RMAN备份片统一存放在/datafile/这个路径下 2. 然后每周六归档备份完毕后,把上周日到本周六的备份文件统一cp到一个目录下(/datafile/tarfile),然后把这个目录gtar压缩打包,以当天日期命名比如:prod_yyyymmdd.tar.gz 3. 把prod_yyyymmdd.tar.gz传到备份服务器,将/datafile

2014-03-07 10:39:53 11200

转载 Linux DM9000网卡驱动程序完全分析

版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。说明1:本文分析基于内核源码版本为linux-2.6.31 说明2:本文在理解了linux中总线、设备和驱动模型的基础上加以分析代码 虽然Linux驱动程序应该是和具体的硬件平台分离的,但是为了更好的理解DM9000的驱动程序,这里还是结合一下Mini2440开发板,这样也可以更好的体会如何实现驱动和

2014-03-07 10:15:55 572

空空如也

空空如也

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

TA关注的人

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