自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (6)
  • 收藏
  • 关注

原创 C++ const函数返回值必须为const引用

编译正确代码:#include#include #includeusing namespace std;class T{ public: T(string p) { ptext = p; } const char & operator [](int pos) const { return ptext[pos]; } string ptext;

2013-04-30 15:15:31 6169 3

原创 C++类static静态成员变量和const常量成员变量(和引用相同)初始化方法

a为const常量成员c为static静态成员    常量和引用,必须通过参数列表进行初始化。    静态成员变量的初始化也颇有点特别,是在类外初始化且不能再带有static关键#include#includeusing namespace std;class T{ public: T(int b):a(b) { ; } const i

2013-04-30 10:02:28 1227

转载 linux下ioctl函数学习

一、 什么是ioctl。ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的调用个数如下:  int ioctl(int fd, ind cmd, …);其中fd就是用户程序打开设备时使用open函数返回的文件标示符,cmd就是用户程序对设备的控

2013-04-29 19:01:36 934

转载 Linux下的搜狗拼音输入法-fcitx sougopinyin

下载地址http://pan.baidu.com/share/link?shareid ... 4194345185http://www.163disk.com/filekey/tb43ca0b86http://vdisk.weibo.com/s/vP89E[/code]ubuntu12.04的fcitx版本不支持,不满足依赖,需要更新fcitx添加fcitx源

2013-04-29 09:52:58 5521

转载 socket中select函数的使用

Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所

2013-04-24 18:56:26 919

转载 shutdown和close的区别

当所有的数据操作结束以后,你可以调用close()函数来释放该socket,从而停止在该socket上的任何数据操作:close(sockfd);   你也可以调用shutdown()函数来关闭该socket。该函数允许你只停止在某个方向上的数据传输,而一个方向上的数据传输继续进行。如你可以关 闭某socket的写操作而允许继续在该socket上接受数据,直至读入所有数据。

2013-04-22 22:46:06 747

转载 grep的用法

http://www.thegeekstuff.com/2009/03/15-practical-unix-grep-command-examples/ 首先创建我们练习grep命令时需要用到的demo文件demo_file。$ cat demo_fileTHIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.this line is the 1

2013-04-22 15:04:22 715

转载 GDB 命令详细解释

http://blog.csdn.net.sixxs.org/wei801004/archive/2009/06/09/4253911.aspx GDB 命令详细解释 Linux中包含有一个很有用的调试工具--gdb(GNU Debuger),它可以用来调试C和C++程序,功能不亚于Windows下的许多图形界面的调试工具。 和所有常用的调试工具一样,gdb提供了以下功能:

2013-04-22 12:04:22 788

转载 TCP/IP协议栈的基本工作原理

TCP/IP是互联网的核心协议,也是大多数网络应用的核心协议。就前面一段时间面试中问到的TCP/IP问题,这里给出一个简单的小结。 TCP由RFC793、RFC1122、RFC1323、RFC2001、RFC2018以及RFC2581定义。 (1) TCP概述a. TCP提供的是面向连接的全双工服务。TCP所有的数据会匹配到由源地址,目的地址,源端口,目的端口构成的一个TC

2013-04-18 22:46:45 1015

原创 证明:当gcd(a, b) = 1,则gcd(a + b, a) = 1

假设: gcd(a, b) = 1证明:    gcd(a + b,  b)  = 1反证法:假设gcd(a + b, b) = k != 1;则: b = k * r1a + b =a +  k * r1 = k * R两边同时除以ka / k + r1 = R则要使相等,则a 必须整除k, 则 a = k * r2;所以gcd(a,

2013-04-16 21:13:58 3255 1

原创 C++当多次调用同一实参的模板,到底编译器实列化几次份代码的问题

提问:template void fun(T num){};如果调用fun(double(1.23));fun(int(1));编译器会实列化fun(double num)和fun(int num)但是我想问得是如果调用两次fun(int)fun(int(1));fun(int(2));编译器会实列两个fun(int),还是一个啊????疑惑至极。求好

2013-04-16 14:55:17 1334

转载 c++ 如何实现多态

#include #include #include #include using std::cerr;using std::cout;using std::string;//实覆盖class A1...{public:    A1(string const& name) : m_Name(name) ...{cout << getName()

2013-04-15 22:05:56 857

转载 C++多态的实现原理

1. 用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。2. 存在虚函数的类都有一个一维的虚函数表叫做虚表。类的对象有一个指向虚表开始的虚指针。虚表是和类对应的,虚表指针是和对象对应的。3. 多态性是一个接口多种实现,是面向对象的核心。分为类的多态性和函数的多态性。4. 多态用虚函数来实现,结合动态绑定。5. 纯虚函数是虚函数再加上= 0。6. 抽象类是指包

2013-04-15 20:32:18 665

原创 当派生类和基类的虚构函数默认实参不同时的传递问题

当派生类和基类的虚构函数默认实参不同时;派生类的实参将接收基类传递过来的默认参数示列如下:#include #include #include using namespace std;class B{ public: virtual void fun(int num = 0) { cout << "B

2013-04-15 16:47:47 1098

原创 T t(2), T t = 2, T t = T(2)三者完全等价

T t(2), T t = 2, T t = T(2)三者完全等价#include #include #include using namespace std;class T{ public: T(){}; T(int t) { cout << "复制" << endl;

2013-04-15 16:21:34 927

原创 C++ 强制转换出现歧义问题

#include #include #include using namespace std;class T{ public: T(){}; T(int a){num = a;}; operator int const ()//将t + 3中的t转换为int型的10,变为10 + 3,也不会调用重载的<< { cout << "to be int:";

2013-04-15 11:37:08 1378

原创 C++运算符+,+=,<<,=重载范列

单操作符用返回引用,不能是友元函数,否则编译不通过双操作符,必须定义为友元,否则编译不通过测试编译器:g++ 4.6.3#include #include #include using namespace std;class T{ public: T(){}; T(int t) { a = t; }; T(const T &t)//当

2013-04-15 10:41:45 910

原创 hdfs安装和配置过程以及hadfs的工作原理(备忘)

在老师的帮助下,折腾了大半天终于把hdfs部署到ubuntu上去了。在这里记录一下各步骤备忘:在讲步骤之前,先总结一下自己对hadoop的工作你原理的理解:1.这个分布式系统是通过一个namenode(运行在master上的一个进程)来作为master来统筹管理多个作为slavers的datanode(运行在slavers上的一个进程);2.master将各slavers的实际

2013-04-12 23:46:36 15878 2

转载 hadoop在ubuntu下的安装配

前面均在windows下进行,但是在安装hadoop过程中出了一些问题,先暂时切换到linux下,回头再补充windows下的安装。不过通过对比确实发现,在linux下的安装配置确实比较简单。一.安装ubuntu  我是下载的ubuntu12.04,在64位的虚拟机上使用virtualbox安装的,没错,是在虚拟机上在安装虚拟机,然后安装ubuntu具体安装过程就不描述了,不过安装过程

2013-04-12 19:40:26 1128

转载 复制构造函数跟赋值构造函数的区别

1. 何时调用复制构造函数  复制构造函数用于将一个对象复制到新创建的对象中。也就是说,它用于初始化过程中,而不是常规的赋值过程中。类的复制构造函数原型通常如下:  class_name(const class_name&);  它接受一个指向类对象的常量引用作为参数。例如,String类的复制构造函数的原型如下:  String(const String&);  新建一个对象

2013-04-12 14:14:06 721

翻译 模板与泛型的区别

Visual C++ Language ReferenceGenerics and TemplatesGenerics and templates are both language features that provide support for parameterized types. However, they are different and have different

2013-04-12 11:25:28 4114 1

原创 ostream_iterator用法,以及unique_copy函数功能测试

#include #include #include #include using namespace std;int main(){    int s[8] = {6, 6, 1, 5, 2, 5, 3, 3};    vector vec(s,s+ 8);    ostream_iterator out(cout, " ");    unique_co

2013-04-12 10:14:51 1196

转载 ubuntu中apt-get的默认安装路径

apt-get 下载后,软件所在路径是什么??/var/cache/apt/archivesubuntu 默认的PATH为PATH=/home/brightman/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/gamesapt-get install安装目录是包的维护者确定

2013-04-12 09:56:05 2772

转载 hadoop常见问题 -localhost: Error: JAVA_HOME is not set

localhost: Error: JAVA_HOME is not set.启动start-all.sh时出现如下错误: root@ubuntu:/home/chenwq/hadoop/hadoop-0.21.0/bin# start-all.sh This script is Deprecated. Instead use start-dfs.sh and sta

2013-04-12 09:49:56 3636

原创 stl 顺序容器适配器之stack, priority_queue, queue用法

stack用法:    stack也是程序设计中常常用到的数据容器,STL为我们提供了stack的实现,因此在使用stack时必须包含头文件,并使用统一命名空间。1.声明一个stack   stack s1;   stack s2;stack模板类需要2个模板参数,一个为元素类型,一个为容器类型,但是只有元素类型是必要的,在容器类型缺省时,默认为deque。2.st

2013-04-11 12:08:46 1722

转载 C++STL容器使用经验总结

第1条:慎重选择容器类型。标准STL序列容器:vector、string、deque和list。标准STL关联容器:set、multiset、map和multimap。非标准序列容器slist和rope。slist是一个单向链表,rope本质上是一“重型”string。非标准的关联容器hash_set、hase_multiset、hash_map和hash_multimap。v

2013-04-09 14:52:28 895

转载 STL顺序容器之deque双端队列

deque同vector一样也是顺序容器。它内部拥有更复杂的数据结构,从deque队列的两端插入和删除元素都非常快,在容器中间插入或删除则需要付出的代价非常高。deque的绝大部分操作与vector一致,如支持各种构造方式,push_back,insert,size,resize,empty,capacity等各种vector所支持的操作。并支持push_front(),pop_front()

2013-04-09 14:46:34 953

转载 STL顺序容器之vector类型

顺序容器:将单一类型元素聚集起来成为容器,然后根据位置来存储和访问这些元素,这就是顺序容器。顺序容器的元素排列与元素值无关,而是由元素添加到容器里的次序决定。标准库中定义了三种顺序容器类型:vector、list和deque(double-ended queue,双端队列),它们的差别在于访问元素的方式,以及添加或删除元素相关操作的运行代价。容器只定义了少量操作,大多数额外操作都是

2013-04-09 14:45:35 1264 2

原创 stl 顺序容器vector(priority_queue),顺序容器List,顺序容器deque(queue, stack)详解

三种容器均支持resieze()操作,重新划定容器大小,且此函数有重载。默认情况下:queue,stack是基于deque实现的,priority_queue是基于vector实现的。list是双向链表。map是红黑树实现的vector基本操作:vector v;//定义一个空容器vector v1(v);//将v通过构造函数拷贝给v1v.emp

2013-04-09 14:36:46 1755

原创 结构体对齐

#include #include #include #include #include #include using namespace std;struct T1{ long long c; short a; int b; char f; char d; char e;};struct T2{ int a; char b; char d; char e;

2013-04-08 19:25:55 1086

转载 stl 容器适配器、迭代器适配器和函数适配器讲解

一、迭代器list的迭代器不支持算术运算,也不支持关系运算符(=,>),他只提供前置和后置的自增、自减以及相等和不相等运算。list的内存不连续。vector和deque容器的迭代器是一种类型,vector能做的DEQUE也可以。二、容器适配器queue,priority_queue,stack.默认的queue和stack实在deque基础上实现,而PRIORITY_QUEU

2013-04-07 20:59:56 2261

转载 new/delete和malloc/free区别,能否交叉使用

对于用户自定义的对象而言,用maloc/free无法满足动态管理对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。因此C++需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete

2013-04-07 16:10:09 1037

转载 C/C++错误语法:void main( )

很多人甚至市面上的一些书籍,都使用了void main( ) ,其实这是错误的。C/C++ 中从来没有定义过void main( ) 。C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地写着 The definition void main( ) { /* ... */ } is not and never has been C++, nor has it even

2013-04-07 11:31:54 14810

原创 C++ string类不能像C字符串能靠在i位赋值为‘\0’来截断

C++ string类不能像C字符串能靠在i位赋值为‘\0’来截断,因为'\0'在C字符串中才具有字符结束符的意义#include #include #include using namespace std;int main(){    string s("abcdefg");    s[3] = '\0';cout     cout

2013-04-06 22:12:23 3180 1

转载 STL关联容器之Map

STL之Map概述Map是标准关联式容器(associative container)之一,一个map是一个键值对序列,即(key ,value)对。它提供基于key的快速检索能力,在一个map中key值是唯一的。map提供双向迭代器,即有从前往后的(iterator),也有从后往前的(reverse_iterator)。map要求能对key进行,因此map上的迭代器也是递

2013-04-06 21:03:24 1119

转载 stl map用法和make_pair函数

首先make_pairPairs C++标准程序库中凡是“必须返回两个值”的函数, 也都会利用pair对象 classpair可以将两个值视为一个单元。容器类别map和multimap就是使用pairs来管理其健值/实值(key/value)的成对元素。 pair被定义为struct,因此可直接存取pair中的个别值.

2013-04-06 20:26:57 38964

原创 typeid为type_info友元函数

typeid函数该函数的主要作用就是让用户知道当前的变量是什么类型的,比如使用typeid(a).name()就能知道变量a是什么类型的。因为typeid()函数是一个返回类型为const typeid_info&类型的函数,所以下面先对type_info类作下介绍type_info类该类的具体实现方式依编译器而定,但一般都有如下的成员定义class type_info{pri

2013-04-06 15:38:07 1237

原创 C++四种强制类型转换符功能以及用法总结(dynamic_cast,const_cast,static_cast,reinterpret_cast)

const_cast:用法:const_cast (expression)该运算符用来修改类型的const或volatile属性。除了const 或volatile修饰之外, type_id和expression的类型是一样的。一、指向常量的指针被转化成指向非常量的指针,并且仍然指向原来的对象;二、指向常量的引用被转换成指向非常量的引用,并且仍然指向原来的对象;Voiatile

2013-04-06 15:26:58 1113

转载 处世态度(有空的时候拿出来读一下)

1.永远没有一个人是你离不开的,现在离不开的,不代表永远离不开。没有什么是你放弃不了的,你不放弃的,可能会先放弃你也说不定。2.对付虚伪的人,不是骂ta,不是拆穿ta,而是让ta继续悲哀地虚伪着,然后装作什么也不知道。那么慢慢地,很多人会主动跑来告诉你ta有多虚伪。 3.对付自私的人,不是恨ta,不是不理ta,而是渐渐远离ta,从心底远离ta,然后装作什么都不知道。如果ta去找

2013-04-04 23:21:38 845

原创 后缀数组模板

参考大神:罗穗骞论文基本定义子串:字符串 S 的子串 r[i..j],i≤j,表示 r 串中从 i 到 j 这 一 段 ,也就是顺次排列 r[i],r[i+1],...,r[j]形成的字符串。后缀:后缀是指从某个位置 i 开始到整个串末尾结束的一个特殊子串。字4IOI2009 国家集训队论文符串r 的从后缀数组第 i 个字符开始的后缀表示为S

2013-04-04 23:06:41 2923 1

linux上实现多进程和多线程实现同步互斥(源代码)

在linux上分别用多进程和多线程实现的同步互斥操作(源代码)

2013-04-18

在linux平台用Qt实现的数据库基本操作(源代码)

在linux平台用Qt实现在mysql数据库上的基本操作:插入,删除,修改等功能

2013-04-18

用Qt封装的unix套节字网络编程的多播程序(源代码)

unbutu开发环境,用Qt做的界面,利用unix套节字编程实现的多播程序

2013-04-18

linux上多线程聊天程序

linux编程 多线程编程 网络套节字编程

2013-04-18

linux下用C/C++实现的代理服务器

在linux平台下,涉及到unix套节字编程,用C/C++实现代理服务器,是基于TCP/IP和HTTP协议的编程

2013-04-07

linux 上用C++实现的网络嗅探器

在linux平台上,用C++ 封装 raw socket套节子编程,包括makefile文件的所有源代码,希望对你有帮助。

2013-04-07

空空如也

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

TA关注的人

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