自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(76)
  • 资源 (1)
  • 收藏
  • 关注

转载 gmake与make的区别

gmake与make的区别

2015-11-23 11:07:13 1512

转载 linux历史命令

linux历史命令

2015-11-18 11:14:47 2005

转载 linux下解压命令大全

linux 压缩 解压

2015-11-18 10:52:21 590

转载 make:一个非常重要的编译命令

无论是在Linux还是在Unix环境中,make都是一个非常重要的编译命令。不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或make install。利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和 makefile工具就可以简洁明快地理顺各个源文件之间纷繁复杂的相互关系。而且如此多的源文件,如果每次都

2015-06-25 13:59:26 24634

转载 gcc和make的区别

gcc是编译器 而make不是 make是依赖于Makefile来编译多个源文件的工具 在Makefile里同样是用gcc(或者别的编译器)来编译程序.gcc是编译一个文件,make是编译多个源文件的工程文件的工具。make是一个命令工具,是一个解释makefile中指令的命令工具。make就是一个gcc/g++的调度器,通过读入一个文件(默认文件名为Makefile或者mak

2015-06-25 13:38:47 3963

转载 指针的大小

这是一个非常基础的问题,教科书上说指针大小和机器字长相同,即32位机指针长度为4字节!但是对不对呢?为什么是这样? 下面对这个问题做一个系统的整理和分析: 首先,介绍几个基本概念:字长:在同一时间中处理二进制数的位数叫字长。通常称处理字长为8位数据的CPU叫8位CPU,32位CPU就是在同一时间内处理字长为32位的二进制数据。二进制的每一个0或1是组成二进制的最小单位,称为一个比特(bit

2013-12-16 11:43:26 961

转载 一套完整的makefile样板

一个应用系统的完整例子.应用系统的目录结构如下:~/bin        可执行程序目录~/etc        配置文件目录~/inc        头文件目录~/lib        函数库文件目录~/log        日志文件目录~/src        源程序文件目录~/src/lib        函数库源程序目录~/src/lib

2013-01-28 22:27:38 670

转载 extern "C"用法详解

1.前言:时常在cpp的代码之中看到这样的代码:#ifdef __cplusplusextern "C" {#endif//一段代码#ifdef __cplusplus}#endif  这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果这是一段cpp的代码

2013-01-26 21:14:45 557

转载 学习linux/unix编程方法的建议

学习linux/unix编程方法的建议,学习Linux的四个步骤解答:学习Linux的四个步骤假设你是计算机科班出身,计算机系的基本课程如数据结构、操作系统、体系结构、编译原理、计算机网络你全修过我想大概可以分为4个阶段,水平从低到高从安装使用=>linux常用命令=>linux系统编程=>内核开发阅读内核源码其中学习linux常用命令时就要学会自己编译内核,优化系统,调整参数

2013-01-23 15:36:12 816

转载 C++仿函数(functor)详解

所谓的仿函数(functor),是通过重载()运算符模拟函数形为的类。  因此,这里需要明确两点:  1 仿函数不是函数,它是个类;  2 仿函数重载了()运算符,使得它的对你可以像函数那样子调用(代码的形式好像是在调用函数)。  看下面的实例:#include using namespace std;const int CMP_LES = -1;const int

2013-01-22 16:27:48 1138 1

转载 回调函数的概念及其使用

1 什么是回调软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的

2013-01-22 15:27:59 666 1

转载 c/c++程序在内存中的分布

一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 程序运行时由编译器自动分配,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。程序结束时由编译器自动释放。2、堆区(heap) — 在内存开辟另一块存储区域。一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。3、全局区(

2013-01-22 12:33:13 912 1

转载 linux线程初探

1 概述 1.1 线程的定义 传统的Unix进程概念在开发有分布式系统中的许多应用时已经显得力不从心(有时连简单的窗口响应问题都很难做好)。这些问题的最好解决之道就是线程,线程推 广了进程的概念使一个进程可以包含多个活动(或者说执行序列等等)。如今,由于线程概念的普及,在UNIX系统中已经普遍实现了线程机制,开发并发应用的程序员现在也可以广泛接触到线程的函数库了。使用线程的优点在于:

2013-01-18 16:33:44 608

转载 Linux下C++的多线程编程

1、 引言    线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。  为什么有了进程的概念后,还要再引入线程呢

2013-01-18 16:26:21 491

转载 lib和dll文件的区别和联系

什么是lib文件,lib和dll的关系如何(1)lib是编译时需要的,dll是运行时需要的。 如果要完成源代码的编译,有lib就够了。 如果也使动态连接的程序运行起来,有dll就够了。 在开发和调试阶段,当然最好都有。 (2)一般的动态库程序有lib文件和dll文件。lib文件是必须在编译期就连接到应用程序中的,而dll文件是运行期才会被调用的。如果有dll文件,那么对应的li

2013-01-16 18:03:33 694 1

转载 无法打开包含文件:“fstream.h”

在VS2010里面使用vc6.0的那种#include 方式,但是编译时提示fatal error C1083: 无法打开包括文件:“fstream.h”: No such file or directory。解决方法:           把         #include           改成    #include

2013-01-16 12:33:27 26880 3

转载 指针的应用

一个函数在编译时被分配一个入口地址,将这个入口地址称为函数的指针,可以用一个指针变量指向该函数指针,然后通过该变量来调用函数。有关说明:1、 函数指针的声明格式:函数返回值类型(*指针变量名)(参数类型列表)或者是:typedef 函数返回值类型 (*指针变量名)(参数类型列表)2、一个函数指针只能指向一种类型的函数,即具有相同的返回值和相同的参数的

2013-01-14 14:10:23 1158

转载 3个著名加密算法(MD5、RSA、DES)的解析

MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来。    MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是

2013-01-11 01:40:04 888

转载 常量字符串为什么位于静态存储区?

常量字符串为什么位于静态存储区?char *c="chenxi";书上说: "chenxi"这个字符串被当作常量而且被放置在此程序的内存静态区。那一般的int i=1;1也是常量,为什么1就不被放置在此程序的内存静态区了呢?所有的字符窜常量都被放在静态内存区因为字符串常量很少需要修改,放在静态内存区会提高效率例:char str1[] = "abc";char

2013-01-09 00:28:28 584 1

转载 内存分配——静态存储区 栈 堆

一、内存基本构成    可编程内存在基本上分为这样的几大部分:静态存储区、堆区和栈区。他们的功能不同,对他们使用方式也就不同。    静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。    栈区:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的

2013-01-09 00:25:48 1124 1

转载 error C2036:'void *' : unknown size void*和void**的区别

想必很多同志都从网上下载过SSDT HOOK驱动程序,这一份是很久之前的一份了,而且网上流行的也就这一份,里面的RtlAPI也有过时的,企图编译,可是会出现:“‘PVOID’unknown size”这个错误,导致编译失败。当然这个错误在自己编写的驱动中或者是应用程序中也是常见的错误,比如下面的代码就会出现这样的问题:    PVOID SSDTServiceBase;//wind

2013-01-08 11:11:31 1470 1

转载 c语言 printf()输出格式控制

Printf()输出格式控制1.转换说明符      %a(%A)     浮点数、十六进制数字和p-(P-)记数法(C99)      %c             字符      %d             有符号十进制整数      %f              浮点数(包括float和doulbe)      %e(%E)     浮点数指数输出[e-(E-

2013-01-06 16:09:27 995 1

转载 C语言字节序

文章最后本人做了一幅图,一看就明白了,这个问题网上讲的不少,但是都没有把问题说透。  一、概念       对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。     二、为什么要字节对齐      需要字节对齐的根本原因在于CPU访问数

2012-12-06 15:23:42 4940

转载 使用fflush清空缓冲区

在看《C陷阱与缺陷》时候,看到如下代码:#include #include int main(int argc, char *argv[]){  int i = 0;  char c;  for(i = 0; i   {        scanf("%d", &c);        printf("%d ", i);  }   printf("\

2012-08-27 16:19:14 1900 1

转载 为什么类中的线程函数必须要声明静态?

之前也没注意到这问题,大家先搞清楚下面几个关键词吧:class CMyTest{public: CMyTest(); ~CMyTest(); DWORD Start(); static DWORD WINAPI ThreadFun(LPVOID); // ....};void main(){ C

2012-08-07 13:55:08 1390 4

转载 堆(heap)和栈(stack)、内存泄漏(memory leak)和内存溢出

简单的可以理解为:heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。stack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。一、预备知识—程序的内存分配一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。

2012-08-07 13:52:06 711

转载 C++内存分配方式详解

在C++中,内存分成5个区——堆、栈、自由存储区、全局/静态存储区和常量存储区栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可以动态地扩展和收缩。堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用

2012-08-01 10:40:21 880

转载 C内存分配方式

C内存分配方式有三种:(1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。(2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。(3) 从堆上分配,亦称动态内存分配。程序在运行

2012-08-01 10:38:34 3523

转载 精确获取时间(QueryPerformanceCounter)

LARGE_INTEGER tima,timb; QueryPerformanceCounter(&tima);在 Windows Server 2003 和 WindowsXP 中使用 QueryPerformanceCounter 函数的程序可能执行不当QueryPerformanceCounter 來精確計算執行時間QueryPerformanceCounter 來精確計算執

2011-11-11 00:10:47 739

转载 ACE的Socket

使用ACE进行Socket编程,需要使用到下面几个类:    ACE_SOCK_Connector:连接器,主动建立连接,用于Socket Client;    ACE_SOCK_Acceptor:接受器,被动建立连接,用于Socket Server;    ACE_SOCK_Stream:传输数据的流,用于传输数据;    ACE_INET_Addr:用于表示通信端点的地址;

2011-11-04 15:31:57 1013

转载 用c语言产生随机数

在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( int

2011-10-20 00:31:23 3121 1

转载 Win7安vc2008编译报LINK : fatal error LNK1000: Internal error during IncrBuildImage

安装了VS2008+sp1后出现链接错误:>Copyright (C) Microsoft Corporation.  All rights reserved.1>LINK : fatal error LNK1000: Internal error during Incr

2011-10-06 03:40:04 1744

转载 C语言里如何把GBK码转换为UTF8?

一、利用iconv函数族进行编码转换在LINUX上进行编码转换时,既可以利用iconv函数族编程实现,也可以利用iconv命令来实现,只不过后者是针对文件的,即将指定文件从一种编码转换为另一种编码。iconv函数族的头文件是iconv.h,使用前需包含之。#include iconv函数族有三个函数,原型如下:(1) iconv_t iconv_open(const cha

2011-09-23 17:00:36 12146

转载 utf8,GBK,转码,C++

MultiByteToWideChar概述  函数功能:该函数映射一个字符串到一个宽字符(unicode)的字符串。由该函数映射的字符串没必要是多字节字符组。  函数原型:  int MultiByteToWideChar(  UINT CodePag

2011-09-23 16:43:42 8375 1

转载 一个统计线程占用CPU时间的类

在windows下编程,为了统计某个算法的执行效率,一般都要统计该算法完成一定操作所需的时间。通常的做法是,在算法执行之初调用GetTickCount()获得当前的时间,然后在算法执行之后再调用一次,两者相减即得到算法的执行时间。但这种做法忽略了一个重要事实,那就是windo

2011-09-20 17:18:38 951

转载 ACE文件操作

ACE里的文件操作与平常的Win32里面的文件操作有所不同,这是因为ACE是为网络开发而设计的,里面普遍都遵循了Client/Server模式,这样在操作文件时,ACE把文件看做是一个Socket服务器,而进行文件操作的类(ACE_FILE_IO)被看做是一个Socket Cli

2011-09-20 14:52:20 2155

转载 环境变量和用户变量有什么区别?

搭建编译环境时为什么有时候要设置环境变量,而有时又设置用户变量? 环境变量分为系统环境变量和用户环境变量。 你所说的环境变量是指系统环境变量,对所有用户起作用 而用户环境变量只对当前用户起作用。 例如你要用java,那么你把java的bin目录加入到pat

2011-09-13 10:09:15 16658

原创 如何在linux下启动和关闭ORCALE数据库

首先输入命令:sqlplus '/as sysdba' 或者 sqlplus /nolog conn sys/manage as sysdba;这个命令的作用是再输入开启服务命令:startup;或者输入关闭服务命令

2011-08-31 17:02:50 7450

转载 Linux下如何自动启动Oracle服务

在windows下,可以在计算机服务管理里将ORACLE服务设置为自动,Linux中在Oracle安装完毕以后,如果重新启动Linux ,Oracle是不会自动启动的,你可以通过手动调用dbstart命令来进行启动,不过这样似乎也很繁琐。我们可以通过配置Oracle的自动启动脚

2011-08-31 16:04:36 683

转载 tail命令的使用

查看文件内容的特殊方法  相信最基本的cat和less,more你已经很熟悉了,如果有特殊的要求呢:1. 如果你只想看文件的前5行,可以使用head命令,如:head -5 /etc/passwd2. 如果你想查看文件的后10行,可以使用tail命令,如:ta

2011-08-19 11:18:30 550

ACE库类详解(中文)

ACE库开发详解,做C++开发的人员的宝贝,里面包含ACE库的基本框架,以及实现操作用到的函数及其方法。

2011-08-05

空空如也

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

TA关注的人

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