自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zhangboyj的专栏

心吧飞梦

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

原创 仿函数认识

<br />C++仿函数到底是什么呢?其实它就是一个能像函数一样工作的东西,它的主要作用将会在这篇文章中进行详细的介绍。<br />C++编程语言为我们带来了非常大的好处。不过即使是我们经常使用的功能也有很多比较高深的内容值得我们去深入的探讨。在这里我们将会为大家详细介绍一下C++仿函数的基本概念,方便大家对这一语言的解读。<br />C++仿函数这个词经常会出现在模板库里(比如 STL),那么什么是仿函数呢?<br />顾名思义:仿函数就是能像函数一样工作的东西,请原谅我用东西这样一个代词,下面我会慢慢解

2011-02-28 17:23:00 854

原创 模板类 与 类模板

用相同的类模板可以组建任何类型的对象集合。在传统C++中,可能有一个浮点数类或者一个整数类,如果使用类模板,可以定义一个对两者都适用的类number。类模板说明的一般形式是:template           //  template class                    //  class A{ //类说明体};template            //  template ::(形参表)//  T A::sum(){ //成员函数定义体 } template ::(形参表){ //

2011-02-28 16:16:00 1025

原创 杂记,随时更新

不管是显示的类型转换还是隐式的类型转换,都有一个到转换结果类型的临时变量的产生:譬如:       int i = 1.2;    //实际的赋值过程可能是 int temp = 1.2; int i = temp;无符号变量和有符号变量之间的转换是其对应的内存地址二进制表示不变。hook机制发送消息

2011-02-25 16:26:00 648

转载 C语言中的位操作例子(将任一整数转换为二进制形式)

<br />将任一整数转换为二进制形式<br />*问题分析与算法设计<br />将十进制整数转换为二进制的方法很多,这里介绍的实现方法利用了C语言能够对位进行操作的特点。对于C语言来说,一个整数在计算机内就是以二进制的形式存储的,所以没有必要再将一个整数经过一系列的运算转换为二进制形式,只要将整数在内存中的二进制表示输出即可。<br />#include<stdio.h><br />void printb(int,int);<br />int main()<br />{<br />    int x;pr

2011-02-25 14:41:00 7140

转载 关于sizeof和strlen的区别

先看几个例子:char *str1="absde"; char str2[]="absde"; char str3[8]={'a',}; char ss[] = "0123456789";  首先说明一点,char类型占一个字节,所以sizeof(char)是1,这点要理解 str1是一个指针,只是指向了字符串"absde"而已。所以sizeof(str1)不是字符串占的空间也不是字符数组占的空间,而是一个字符型指针占的空间。所以sizeof(str1)=sizeof(char*)=4,在C/C++中一个指

2011-02-25 14:33:00 643

转载 面试题,进程中的两个fork

今天一位朋友去一个不错的外企面试linux开发职位,面试官出了一个如下的题目:      给出如下C程序,在linux下使用gcc编译:1 #include "stdio.h" 2 #include "sys/types.h" 3 #include "unistd.h" 4  5  int main() 6 { 7     pid_t pid1;8     pid_t pid2; 9 10     pid1 = fork();11     pid2 = fork();1213     printf("pid

2011-02-25 14:28:00 2259 1

转载 linux的文件系统

<br />linux目录架构<br />/   根目录<br />/bin    常用的命令 binary file 的目錄<br />/boot   存放系统启动时必须读取的档案,包括核心 (kernel) 在内<br />     /boot/grub/menu.lst   GRUB设置<br />     /boot/vmlinuz   内核<br />     /boot/initrd     核心解壓縮所需 RAM Disk<br />/dev    系统周边设备    <br />/etc  

2011-02-25 14:13:00 511

转载 关于静态成员变量在类继承中的一个误区

     以前一直认为:静态成员变量是该类共有的,那么其派生类就一定要开辟一段新的内存来该存储派生类从基类中继承的静态成员变量。    正确的说法应该是:基类和其派生类 共享该基类的静态成员变量内存!    可以看下面的代码:#includeclass base{    int mx;public:    static int xxx;    static void fun(int x)    {        xxx=x;    }    base(int x):mx(x){}    friend std

2011-02-25 14:10:00 903

原创 自编 socket 通信示例

client和server均在本机。服务器端代码:#include #include #include #include #include #include #include #include #include #include #define SERVPORT 3333 /*服务器监听端口号 */#define BACKLOG 10 /* 最大同时连接请求数 */main(){ int sockfd,client_fd; /*sock_fd:监听socket;client_fd:数据传输socket */

2011-02-25 11:25:00 682

原创 Linux系统编程---socket编程(全+精)

1. 预备知识1.1. 网络字节序    我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分,磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分。网络数据流同样有大端小端之分,那么如何定义网络数据流的地址呢?发送主机通常将发送缓冲区中的数据按内存地址从低到高的顺序发出,接收主机把从网络上接到的字节依次保存在接收缓冲区中,也是按内存地址从低到高的顺序保存,因此,网络数据流的地址应这样规定:先发出的数据是低地址,后发出的数据是高地址。    TCP/IP协议规定,网络数据流应采用大端字节序

2011-02-24 13:33:00 1427

转载 6个变态的C语言写的Hello World

<br />下面的六个程序片段主要完成这些事情:<br />1.输出Hello, World<br />2.混乱C语言的源代码(加密源代码,嘿嘿)<br />下面的所有程序都可以在GCC下编译通过,只有最后一个需要动用C++的编译器g++才能编程通过。<br />hello1.c<br />    #define _________ }<br />    #define ________ putchar<br />    #define _______ main<br />    #define _(a)

2011-02-23 17:57:00 645

转载 C/C++ struct位结构(位域)

从问题开始#includevoid main(){union{struct{unsigned short s1:3;unsigned short s2:3;unsigned short s3:3;}x;char c;}v;v.c=100;printf("%d/n",v.x.s3);}A:4 B:0 C:3 D:6答案是A但我在TURBO C中运行答案是1请问 是因为TURBO C 版本在原因而运行结果不一样吗?我用在TURBO C V2.0版本,能解释一下为甚么是4或1?而v.x.s1和v.x.s2的 值

2011-02-23 10:58:00 33445 2

原创 c/c++字节对齐

<br />在 相同的对齐方式下 ,结构体内部数据 定义的顺序不同 ,结构体整体占据内存空间也 不同 ,如下: <br />设结构体如下定义: <br />struct A <br />{ <br />     int      a; <br />     char    b; <br />     short c; <br />}; <br />结构体A中包含了4字节长度的int一个,1字节长度的char一个和2字节长度的short型数据一个。所以A用到的空间应该是7字节。但是因为编译器要对数据成员在空间

2011-02-22 16:10:00 908

转载 链表,队列,堆栈的区别

<br />链表,队列,堆栈的区别<br />1、栈是个有底的口袋,像袜子。<br />队列是没底的口袋,像通心粉。<br />所以:栈的特点是先进后出,队列的特点是先进先出。<br />2、主要区别是适用的地方不一样,   <br />  链表实际上可以认为是一种数据的物理组织形式,是用指针或对象的引用组织起的一种数据的存储方式.   <br />  队列和堆栈是一个更高层次的概念,其底层可以是用链表也可以是用数组来实现.   <br />  队列和堆栈的主要区别是进出的顺序不一样,   <br /> 

2011-02-21 09:39:00 14336

转载 POSIX多线程中的pthread_cond_wait() 函数 使用示例2个

 由于工作站软件的移植牵涉到这方面的内容, 搜一最近一直在学习Linux线程方面的知识!由于这本书上没有将条件变量的问题,所以不能理解的一个函数就是pthread_cond_wait().    今天终于有点明白了,赶快记下心得!    条件变量的结构为pthread_cond_t,函数pthread_cond_init()被用来初始化一个条件变量。它的原型为:   extern int pthread_cond_init __P ((pthread_cond_t *__cond,__const pthre

2011-02-18 17:54:00 3224

原创 thread 注意事项

1. 需要注意的是一个线程仅允许唯一的一个线程使用pthread_join()等待它的终止,并且被等待的线程应该处于可join状态,即非DETACHED状态。2.

2011-02-18 17:45:00 702

转载 互斥量、条件变量与pthread_cond_wait()函数的使用,详解

1. 首先pthread_cond_wait 的定义是这样的The pthread_cond_wait() and pthread_cond_timedwait() functions are used to block on a condition variable. They are called with mutex locked by the calling thread or undefined behaviour will result. These functions atomically r

2011-02-18 17:05:00 926

原创 C++:cctype中的字符函数

函数名称返回值isalnum()如果参数是字母数字,即字母或者数字,函数返回trueisalpha()如果参数是字母,函数返回trueisblank()如果参数是水平制表符或空格,函数返回trueiscntrl()如果参数是控制字符,函数返回trueisdigit()如果参数是数字(0-9),函数返回trueisgraph()如果参数是除空格之外的打印字符,函数返回trueislower()如果参数是小写字母,函数返回trueisprint()如果参数是打印字符(包括空格),函数返回trueispunct(

2011-02-16 09:18:00 1574

转载 C++中的布局new操作符

<br />通常,new负责在堆内存中找到一个能够满足要求的内存块。new操作符还有一种变体:placement new 操作符,它能让你指定要使用的内存的位置。 程序员可以使用这种特性来设置其内存管理规程或处理需要通过特定地址进行访问的硬件。<br />要使placement new,首先需要包含头文件new,下面的代码段演示了new操作符的用法:<br />#include <new><br />#include <iostream><br />using namespace std;<br />str

2011-02-16 09:10:00 903

转载 system与popen函数的效率

 我们在程序中希望执行shell命令的时候首先想到的system函数,这个函数很简单,但有一个严重的问题,就是他的执行方式,效率上可能不高。        system函数首先建立一个新的进程,然后在新的进程中执行exec函数去执行我们的shell命令,然后阻塞等待shell命令执行完后,返回到调用函数,system之所以要建立新的进程,是因为,exec函数的调用会结束调用进程,从调用exec函数开始,进程就切换到执行shell命令的进程,无法回到调用exec的进程继续执行程序的余下部分。所以system就

2011-02-15 14:06:00 5794 1

转载 fstat、stat和lstat 区别

<br />stat系统调用系列包括了fstat、stat和lstat,它们都是用来返回“相关文件状态信息”的,三者的不同之处在于设定源文件的方式不同。<br />1<br />首先隆重介绍的是一个非常重要的”VIP”人物,他是fstat, stat和lstat三者都要用到的一个结构体类型,名字叫做struct stat。可以说,没有这个struct stat的支持,上述三个系统调用将寸步难行。<br /> <br />这个struct stat结构体在不同的UNIX/Linux系统中的定义是有小的区别的,

2011-02-15 10:43:00 631

转载 Linux下Socket编程

什么是Socket   Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。    Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的 Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该

2011-02-12 14:39:00 479

原创 怎样在Oracle数据库里面建数据库

以管理员身份登录:1.首先,创建(新)用户: create user username identified by password; username:新用户名的用户名 password: 新用户的密码也可以不创建新用户,而仍然用以前的用户,如:继续利用scott用户2.创建表空间: create tablespace tablespacename datafile 'd:/data.dbf' size xxxm; tablespacena

2011-02-11 11:59:00 556

空空如也

空空如也

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

TA关注的人

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