- 博客(29)
- 收藏
- 关注
原创 Linux下查看系统版本号信息的方法
一、查看Linux内核版本命令(两种方法):1、cat /proc/version[root@localhost ~]# cat /proc/versionLinux version 2.6.18-194.8.1.el5.centos.plus (mockbuild@builder17.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Wed Jul 7 11:50:45 EDT 2010...
2021-02-18 20:33:17
745
转载 【微软Visual Studio面世20周年巨制】全宇宙功能最强大IDE Visual Studio 2017 正式版发布
Visual Studio 2017 正式版发布,该版本不仅添加了实时单元测试、实时架构依赖关系验证等新特性,还对许多实用功能进行了改进,如代码导航、IntelliSense、重构、代码修复和调试等等。无论使用哪种语言或平台,都能节省开发者在日常任务上花费的时间和精力。此外,该版本还带来了一个新的轻量化和模块化的安装体验,可根据需要量身定制安装。多个增强功能汇集在一起,使 Visual Stu
2017-03-15 12:13:29
1796
原创 友元函数的说明
友元函数friend 类型名 友元函数名(形参表);然后在类体外对友元函数进行定义,定义的格式和普通函数相同,但可以通过对象作为参数直接访问对象的私有成员说明如下1)必须在类的说明中说明友元函数,说明时以关键字friend开头,后跟友元函数的函数原型,友元函数的说明可以出现在类的任何地方,包括在private和public部分;2)注意友元函数不是类的成员函数,所以友元函数的实
2015-06-25 19:28:03
664
转载 设计模式C++实现(16)——状态模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍状态模式的实现。 状态模式:允许
2014-03-08 11:07:33
548
转载 设计模式C++实现(15)——观察者模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍观察者模式的实现。 观察者模式:定
2014-03-08 11:06:43
599
转载 设计模式C++实现(14)——职责链模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍装饰模式的实现。 职责链模式:使多个
2014-03-08 11:05:33
539
转载 设计模式C++实现(13)——中介者模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍中介者模式的实现。 中介者模式:
2014-03-08 11:04:35
529
转载 设计模式C++实现(12)——备忘录模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍备忘录模式的实现。 备忘录模式:在不
2014-03-08 11:03:57
531
转载 设计模式C++实现(11)——装饰模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍装饰模式的实现。 装饰模式:动态地给
2014-03-08 11:03:02
638
转载 设计模式C++实现(10)——桥接模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍桥接模式的实现。 [DP]书上定义:
2014-03-08 11:00:57
1048
转载 设计模式C++实现(9)——享元模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》(DP)两本书。本文介绍享元模式的实现。 举个围棋
2014-03-08 10:59:53
540
转载 设计模式C++实现(8)——代理模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》(DP)两本书。本文介绍代理模式的实现。 [DP]
2014-03-08 10:59:08
475
转载 设计模式C++实现(7)——外观模式、组合模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》(DP)两本书。本文介绍外观模式和组合模式的实现。
2014-03-08 10:58:15
456
转载 设计模式C++实现(6)——建造者模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》(DP)两本书。本文介绍建造者模式的实现。 建造者模
2014-03-08 10:57:13
513
转载 设计模式C++实现(5)——原型模式、模板方法模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》(DP)两本书。本文介绍原型模式和模板方法模式的实现。首先介绍原型模
2014-03-08 10:56:06
482
转载 设计模式C++实现(4)——单例模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》(DP)两本书。本文介绍单例模式的实现。 单例的一般实
2014-03-08 10:54:47
517
转载 设计模式C++实现(3)——适配器模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》(DP)两本书。本文介绍适配器模式的实现。 DP上
2014-03-08 10:51:05
512
转载 设计模式C++实现(2)——策略模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍策略模式的实现。 策略模式是指定义一
2014-03-08 10:49:55
470
转载 设计模式C++实现(1)——工厂模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍工厂模式的实现。 工厂模式属于创建型
2014-03-08 10:31:25
459
转载 对vector等STL标准容器进行排序操作
STL几乎封装了所有的数据结构中的算法,从链表到队列,从向量到堆栈,对hash到二叉树,从搜索到排序,从增加到删除......可以说,如果你理解了STL,你会发现你已不用拘泥于算法本身,从而站在巨人的肩膀上去考虑更高级的应用。排序是最广泛的算法之一,本文详细介绍了STL中不同排序算法的用法和区别。1 STL提供的Sort 算法C++之所以得到这么多人的喜欢,是因为它既具有面
2013-11-10 17:00:10
631
原创 epoll一个简单模型设计
Epoll模型主要负责对大量并发用户的请求进行及时处理,完成服务器与客户端的数据交互。其具体的实现步骤如下:(a) 使用epoll_create()函数创建文件描述,设定将可管理的最大socket描述符数目。(b) 创建与epoll关联的接收线程,应用程序可以创建多个接收线程来处理epoll上的读通知事件,线程的数量依赖于程序的具体需要。(c) 创建一个侦听socket描述符Liste
2013-11-10 11:51:46
632
原创 epoll使用经典入门
在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:#define __
2013-11-09 23:54:06
701
原创 可重入函数与不可重入函数略解
1、可重入函数:主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;所谓可重入函数是指一个可以被多个任务调用的过程,任务在调用时不必担心数据是否会出错。保证函数的可重入性的方法:在写函数时候尽量使用局部变量(例如寄存器、堆栈中的变量),对于要使用的全局变量要加以
2013-11-09 23:29:26
704
原创 共享内存多进程间通信,进程间同步使用信号量来实现
Linux 环境下C编程指南,通过共享内存进行进程间通信的例子,进程间同步使用信号量来实现。代码 11-5使用说明:这是一个简单的服务器和客户端程序,如果启动程序时不带参数,则执行服务器程序;如果带参数,则执行客户端程序,所带参数只有一个,就是服务器端所显示的共享内存的引用ID。实现原理:服务器端启动后,创建信号量和共享内存,并将共享内存的引用ID显示出来,将信号量
2013-11-09 15:40:40
8107
2
转载 C++中volatile的作用
volatile的语法和const的是一样的,但是volatile的意思是“在编译器认识的范围外,这个数据可以改变”。环境正在改变数据(可能通过多任务、多线程或者中断处理),所以,volatile告诉编译器不要擅自做出有关该数据的任何假定,优化期间尤其如此。volatile的本意是一般有两种说法--1.“暂态的”;2.“易变的”。 其实Volatile是由于编译器优化所造成的一个Bug而
2013-11-08 23:29:09
721
原创 c/c++内存分配(栈与堆的区别)
一、在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。1.栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。2.堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程>序结束后,操作
2013-11-08 23:07:11
698
转载 堆空间和栈空间大小
我们知道,程序运行时在内存中主要有代码段、数据段、堆栈段(堆空间和栈空间)、进程头、动态链接库等区域。其中数据使用到的:数据段:静态内存空间,其中数据的总大小和初始值在编译时确定,数据在整个程序运行时一直存在。栈空间:自动内存空间,其中数据的大小在编译时确定,数据的分配和释放也由编译器在函数进入和退出时插入指令完成,数据生命周期和函数一样。堆空间:动态(手动)内存空间,其中数据的大小和初始
2013-11-08 21:47:31
1435
转载 一个进程在内存中的布局
对于一个完整的程序,在内存中分布情况如下图: 值得一提的是:在C#中struct存放在栈区,class存放在堆区,所以一般struct要比class要快的。 堆和栈的比较表(仅针对C++) 栈(Stack)堆(Heap)申请方式由OS自动分配。例如在函数声明一个局部
2013-11-08 20:57:15
535
转载 一个进程能用的最大内存(堆区)空间大小为1G
网上看到的分析:32位意味着4G的寻址空间,linux把它分为两部分:最高的1G(虚拟地址从0xC0000000到0xffffffff)用做内核本身,成为“系统空间”,而较低的3G字节(从0x00000000到0xbffffff)用作各进程的“用户空间”。这样,理论上每个进程可以使用的用户空间都是3G。当然,实际的空间大小收到物理存储器大小的限制。虽然各个进程拥有其自己的3G用户空间,系统空间
2013-11-08 20:50:51
2961
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人