自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++之类成员变量初始化

1、成员变量在使用初始化列表初始化时,与构造函数中初始化成员列表的顺序无关,只与定义成员变量的顺序有关。因为成员变量的初始化次序是根据变量在内存中次序有关,而内存中的排列顺序早在编译期就根据变量的定义次序决定了。这点在EffectiveC++中有详细介绍。2、如果不使用初始化列表初始化,在构造函数内初始化时,此时与成员变量在构造函数中的位置有关。3、注意:类成员在定义时,是不能初始化的

2015-06-29 22:08:15 564

转载 面向对象的static关键字(类中的static关键字)

面向对象的static关键字(类中的static关键字)1静态数据成员在类内数据成员的声明前加上关键字static,该数据成员就是类内的静态数据成员。先举一个静态数据成员的例子。//Example 5#include class Myclass{public:   Myclass(int a,int b,int c);   void GetSum();p

2015-03-06 17:06:33 362

原创 C++之类的前置声明

在使用前置声明时,只能使用指针或者引用,因为在这

2014-10-18 14:59:38 383

原创 C++之 private public protect访问控制以及继承关系

private :私有控制符。这类成员只能被本类中的成员函数和类的友元函数访问。protect:受保护控制符。这类成员可以被本类中的成员函数和类的友元函数访问,也可以被派生类的成员函数和类的友元函数访问。public:

2014-08-25 14:34:11 1605

原创 ubuntu 14.04 能进入ubuntu,进入win7 无法启动,光标闪烁问题解决

1.引用:menuentry "Microsoft Windows XP Professional" {insmod ntfsset root=(hd0,1)chainloader +1}复制到/etc/grub.d/40_custom文件中2.代码:sudo chmod -x /etc/grub.d/30_os-prober3.代码:sudo up

2014-08-12 08:55:21 515

转载 likely和unlikely宏

以下为这两个宏的一般定义:#define likely(x)       __builtin_expect(!!(x), 1)#define unlikely(x)     __builtin_expect(!!(x), 0)而__builtin_expect() 是 GCC (version >= 2.96)提供给程序员使用的,目的是将“分支转移”的信息提供给编译器,这样编译器可以对

2014-08-12 08:36:52 472

转载 C++虚函数和多态

1.C++中的虚函数C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。对C++ 了

2014-08-05 16:10:59 368

转载 C++之多态

所谓的多态即用父类型的指针指向子类对象,然后通过父类的指针调用实际之类的成员函数,因此父类的指针具有多种形态。多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。C++多态性是通过虚函数来实现的,虚函数允许子类重新定义成员函数,而子类重新定义父类的做法称为覆盖(override),或者称为重写。(这里我觉得要补充,重写的话可以有两种,

2014-08-05 15:54:32 317

转载 c和c++中NULL和0的区别

c和c++中NULL和0的区别1,什么是空指针常量(null pointer constant)?[6.3.2.3-3] An integer constant expression with the value 0, or such an expression cast to type void *, is called a null pointer constant.这里告

2014-08-01 14:10:01 404

转载 C++之强制类型转换

static_cast

2014-08-01 13:33:52 376

转载 C语言之 ## __VA_ARGS__ 宏

在GNU C中,宏可以接受可变数目的参数,就象函数一样。

2014-06-26 18:59:05 649

原创 C语言之unsigned int和int的运算

首先先说明下:1)数值在计算机中是以补码的形式存储的。同时如果两个补码相加时,最高位也就是我们的符号位如果有进位,是需要丢弃的。正数的补码是自己本身,      负数的补码是符号位为1,其余位为该数绝对值的原码按位取反,然后整个数再加1.2)如果一个运算符两边的运算数类型不同,先要将其转换为相同的类型,即较低类型转换为较高类型,然后再参加运算,转换规则如下图所示。double ←─

2013-12-02 17:41:48 1930

原创 进程和线程

一个进程就是当前正在执行的一个程序,包括程序的寄存器、程序计数器和变量的当前值。不同的进程拥有不同的地址空间。而线程可以理解为是进程中的控制流。同一个进程内也就是说在同一个地址空间内可以有多个控制流。也就是可以有多个线程,他们共享地址空间。       我们通常将进程视为是资源的集合,进程中有程序的正文、数据以及其他的一些资源,例如:打开的文件,设置的定时,子进程等,我们通过进程去

2013-12-01 11:48:49 472

原创 Linux之进程组

每个进程除了有个进程id外,他还属于一个进程组。每个进程组可以有一个组长进程,组长进程的id就是进程组的id。只要进程组中有一个进程存在,则这个进程组就存在,和其组长进程是否终止无关。从进程组创建到进程组中最后一个进程离开为止称为进程组的生命周期。为什么用离开,而不是终止?因为最后一个进程可以选择离开该进程组到另一个进程组也可以选择终止。进程可以通过int setpgid(pid_

2013-11-25 21:42:56 404

原创 Linux之vfork

vforkvfrok用于创建一个新进程,而新进程的目的是为了exec一个新程序。vfork和fork的区别是vfork它不会将父进程的地址空间复制一份到子进程。因为子进程会立即调用exec或exit,也就不会对这块地址读写了。而在子进程调用exec之前,其在父进程的空间中运行。另外一个区别是vfork保证子进程先运行,父进程在这段时间挂起,直到子进程调用了exec或exit,才会去

2013-11-20 21:29:43 602

原创 UNIX之fork进程copy

某些平台提供了一些fork函数的变体,1)linux 2.4.22提供了另外一种创建新进程的函数-clone(2)系统调用,这是一种fork的泛型,它可以控制父子进程控制哪些2)FReeBSD 5.2.1提供了rfork2的系统调用,类似于linux的clone3)solaris 9 提供了两个线程库:一个用于posix线程,一个用于solaris线程。在这两个线程库中fork会略

2013-11-19 20:59:46 664

原创 Linux之进程的终止

有8种方式使进程终止,其中5种是正常终止1)从main函数返回2)调用exit3)调用_exit或者_Exit4)最后一个线程从其启动历程返回5)最后一个线程调用pthread_exit异常终止有3中方式6)调用abort7)接收到一个信号并终止8)最后一个线程对取消请求作出回应exit有三个函数用于正常终止一个程序:_exit和_Exit都

2013-11-17 21:54:59 353

原创 Linux之TCP/IP

TCP/IPTCP/IP实际上是一起工作的通信协议家族,为网际数据通信提供通路。我们可将其大体分为3类:1)Internet 协议(ip)2)传输控制协议(TCP)&用户数据报文协议(UDP)3)处于TCP,UDP之上的一组协议专门开发的应用程序。 TELNET,文件传输协议FTP,域名服务(DNS),和简单的邮件传送协议(SMTP)等等。第一部分也称为网络层,包括ip

2013-11-15 21:07:16 409

原创 Linux之printf的缓冲区问题

printf的缓冲区问题在做linux有名管道问题时,想打印出read的数据printf("received data %s",buf);结果运行后server始终不能将获取的数据打印出来。以为是写数据的问题,跟踪了一下写入和读取都是成功的,后来想想有可能是缓冲区的原因然后手动刷新了一下缓冲区fflush(stdout);结果一切就正常了。现在总结一下缓冲区刷新的时机:

2013-11-10 19:16:28 795

原创 Linux之有名管道

Linux的有名管道        从linux中管道的创建过程我们可以看出,管道只可以在父子或者有血缘关系的进程中进行通信,因为其以无名文件的形式存在文件系统中。为了克服这个问题,Linux中发展了有名管道(FIFOS).有名管道以一种特殊的文件设备存在,这样它既有了管道的功能,同时又有了文件的特点,这样我们就可以通过像操作普通文件那样去操作管道,从而实现了非父子关系的进程间

2013-11-09 20:44:30 772

原创 Linux之管道

1:什么是管道管道是将一个程序的输出和另外一个程序的输入连接起来的单向通道。当进程创建一个管道的时候,系统同时为进程创建了一对文件句柄,一个用来从管道中读取数据,一个用来向管道输出。如图:但是就目前来说都只是一个进程在对管道进行操作,这个是没有意义的。所以我们可以使用fork去创建子进程。大家都知道,子进程对于父进程打开的文件句柄是继承了的。也就是说子进程也同样

2013-11-06 20:48:09 375

原创 Linux之进程间发送信号

一个进程可以通过对signal来调用来处理其他进程发送的信号。同样一个进程也可以向其他进程发送信号。发送信号是通过kill函数来实现的。int kill(pid_t pid, int sig);PID:指明了信号发送对象。它可以是某个进程的进程标示符,也可以是以下的值:pid=0:说明signal是发送给当前进程所在进程组的所有进程。pid=-1:说明signal按照进程标示符

2013-11-05 21:04:06 1001

原创 Linux之进程环境

进程的环境使用全局的以NULL结尾的字符串集合。系统中规定的每个字符串的格式是name=something.linux中提供了environ指针来访问其环境内容。当然在使用之前应该去声明它:extern char** environ;见下面的例子:一个进程的初始环境是和用fork和ecec创建出来的环境相同的,当然如果你为新进程指定环境也是可以的,使用下面两个e

2013-11-03 20:51:18 401

原创 Linux进程fork execu之数据和文件描述符的继承

1:fork,文件,数据    用fork创建的子进程几乎和父进程一样,子进程的变量基本保持了父进程中的值,因为其数据是父进程的copy,只是占用了不同的内存地址空间而已。另外父进程打开的文件,在子类的也被打开,子进程也支持这类文件描述符。而且子进程和父进程共享文件描述符,而且由于文件指针式保存在系统中而不是程序中的,所以如果子进程移动文件指针,其实也等同于 移动父进程的文件指针,所以建议父进

2013-11-03 14:59:17 896

原创 Linux进程

调用fork后,A进程和B进程的PC都指向下一个printf,也就是说,fork后子进程和父进程从相同的点开始执行代价。fork出来的子进程是父进程的副本,也就是说踏实copy了一份父进程,当然在子进程写数据之前,子进程一直是和父进程使用同样的资源,但是当子进程进行写数据的时候,子进程就会copy一份父进程的资源,然后进行数据的读写,这就是传说中的copy-on-write.2:进程之ex

2013-11-01 21:25:44 354

转载 VIM简单使用

当你安装好一个编辑器后,你一定会想在其中输入点什么东西,然后看看这个编辑器是什么样子。但vim不是这样的,请按照下面的命令操作:启 动Vim后,vim在 Normal 模式下。让我们进入 Insert 模式,请按下键 i 。(陈皓注:你会看到vim左下角有一个–insert–字样,表示,你可以以插入的方式输入了)此时,你可以输入文本了,就像你用“记事本”一样。如果你想返回 Normal 模

2013-10-31 20:21:56 335

原创 Action的Result类型

Webwork提供了一些com.opensymphony.xwork.Result接口的实现来使你的action可以容易的用户交互.这些Result类型包括:Chain Result - 用于 Action Chaining   服务器跳转 跳转到另一个action,但是客户端显示的网页地址是不变的Dispatcher Result - 用于 JSP 整合    是action的默

2013-10-31 20:01:26 426

原创 JDBC数据库的连接

jdbc数据库的链接1:加载JDBC驱动程序 Class.forName("com.mysql.jdbc.Driver"); 成功加载后,会将Driver类的实例注册到DriverManager类中。2:创建数据库的连接       •要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,        该对象就代表一个数据库的

2013-10-21 20:56:52 289

原创 Tomcat学习(1)

一:Tomcat基本目录:WEB-INF:               1:classes:classes directory is where you place Java class files, whether they are servlets or other class files used by a servlet, JSP, or other part

2013-10-15 21:33:04 352

转载 static in c

惨痛教训:      假设在test.h中定义了一个static bool g_test=false;      若test1.c和test2.c都包含test.h,则test1.c和test2.c分别生成两份g_test,在test1.c 中置g_test=true,而test2.c中仍然为false并未改变!  一:全局变量:              1)内存中的位置:静态存

2012-12-11 09:32:31 249

原创 linux的启动流程

BIOS1:检测启动方式也就是检测启动盘符2:硬件的检测,主要是检测硬件信息给系统3:找到启动磁盘,接着会去找该磁盘中的启动扇区,首先回去MBR也就是启动扇区中找,如果找不到则会去BOOT中找,找的也就是我们说的BOOTLOADER如果是硬盘启动则启动程序放在MBR中,MBR是512字节大小grub或者lilolinux中常见的bootloader有两种grub和lilo

2012-10-23 20:30:36 320 1

系统集成项目管理工程师教程.zip.002

系统集成项目管理工程师教程.zip.002,项目集成管理软考教程,考试的可以看看

2013-05-07

系统集成项目管理工程师教程.zip.001

系统集成项目管理工程师教程.zip.001 软考认证教程,考试的人可以看看

2013-05-07

项目集成管理

项目集成管理的考试认证教程,想考证的可以看看

2013-05-02

嵌入式系统设计

嵌入式系统设计师教程,里面详细的介绍了嵌入式从硬件到软件的一些知识

2013-04-08

linux进程编程

linux进程编程,描述linxu进程间的编程,方法以及实现,比较详细,很适合大家

2013-02-03

wmstub[1].lib和WMVCORE.lib.rar

DirectShow再配置过程中可能会用到的Sdk..中需要的库文件

2009-08-12

空空如也

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

TA关注的人

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