- 博客(101)
- 资源 (9)
- 收藏
- 关注
原创 同步异步
同步方式和异步方式用函数是说不清楚的,同步(异步)方式是一种机制。同步方式是指必须得到确认之后才能进行下一个事件,就是的阻塞摸式,如TCP,异步方式则不需要,即非阻塞摸式,如UDP
2008-12-03 19:44:00 351
转载 assert
断言可以有两种形式 1.assert Expression1 2.assert Expression1:Expression2 其中Expression1应该总是一个布尔值,Expression2是断言失败时输出的失败消息的字符串。如果Expression1为假,则抛出一个 AssertionError,这是一个错误,而不是一个异常,也就是说是一个不可控制异常(unchecked
2008-12-03 17:06:00 372
转载 WSAAsyncSelect()
简述: 通知套接口有请求事件发生. #include int PASCAL FAR WSAAsyncSelect ( SOCKET s, HWND hWnd, unsigned int wMsg, long lEvent );
2008-12-03 16:42:00 433
原创 vc中MFC Class,Generic Class,Form Class
MFC Class 表示你所建的类是MFC类的子类 Generic Class 表示你建的是一般的类 Form Class 表示你所建的类是MFC的相应Form类的子类
2008-12-03 16:40:00 884
原创 union联合
“联合”与“结构”有一些相似之处。但两者有本质上的不同。在结构中各成员有各自的内存空间, 一个结构变量的总长度是各成员长度之和。而在“联合”中,各成员共享一段内存空间, 一个联合变量的长度等于各成员中最长的长度。应该说明的是, 这里所谓的共享不是指把多个成员同时装入一个联合变量内, 而是指该联合变量可被赋予任一成员值,但每次只能赋一种值, 赋入新值则冲去旧值。如前面介绍的“单位”变量, 如定义为一
2008-12-03 10:25:00 1715
转载 #ifndef、#define、#endif
你所遇到的这几个宏是为了进行条件编译。一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。 条件编译命令最常见的形式为: #ifdef 标识符 程序段1 #else 程序段2 #e
2008-12-02 21:48:00 522
转载 基础知识
1、头文件中的 ifndef/define/endif 干什么用?答:防止该头文件被重复引用。2、#include 和 #include “filename.h” 有什么区别?答:对于#include ,编译器从标准库路径开始搜索 filename.h对于#include “filename.h” ,编译器从用户的工作路径开始搜索 filename.h3、const 有什么用途?(请至
2008-12-02 11:21:00 484
原创 高质量编程
请写出 BOOL flag 与“零值”比较的 if 语句标准答案:if ( flag )if ( !flag )如下写法均属不良风格,不得分。if (flag == TRUE)if (flag == 1 )if (flag == FALSE)if (flag == 0)请写出 float x 与“零值”比较的 if 语句标准答案示例:const float EPSINON = 0.0000
2008-12-01 20:44:00 440
原创 交换机、路由器
2.2 交换机和路由器1. 请问交换机和路由器分别的实现原理是什么?分别在哪个层次上面实现的?将网络互相连接起来要使用一些中间设备(或中间系统),ISO的术语称之为中继(relay)系统。根据中继系统所在的层次,可以有以下五种中继系统:1) 物理层(即常说的第一层、层L1)中继系统,即转发器(repeater)。2) 数据链路层(即第二层,层L2),即
2008-12-01 20:05:00 526
原创 网络基础知识
2.1 OSI和TCP/IP1. 的七层网络结构图(功能及特点)OSI1) 物理层:为数据链路层提供物理连接,在其上串行传送比特流,即所传送数据的单位是比特。此外,该层中还具有确定连接设备的电气特性和物理特性等功能。2) 数据链路层:负责在网络节点间的线路上通过检测、流量控制和重发等手段,无差错地传送以帧为单位的数据。为做到这一点,在每一帧中必须同时带有同步、地址、差
2008-12-01 19:48:00 513
原创 匿名管道、命名管道
管道分为两种类型:匿名管道(UnnamedPipe)和命名管道 (NamedPipe)。匿名管道是不命名的,它用于本地系统中父进程与 它启动的子程序之间的通信。而命名管道由一个名字来标识,以使 客户端和服务端应用程序通过它可以进行彼此之间的通信。只有在 Windows NT中才能真正实现命名管道 ,邮路(Mailslot)是一种远程系统进程之间进行通信的理想方式。
2008-11-29 17:33:00 635
原创 链表重复元素的统计
有三个非递减的链表,要求将重复的元素重新置于a链表中,并且其复杂度为O(n+M+P)#include #include using namespace std;void main(){ int a[10]={1,7,8,8,9,9,11,14,15,19}; int b[8]={0,1,5,7,11,15,15,19}; int c
2008-11-28 19:32:00 936
原创 类中静态变量的问题,以及构造函数的问题
#include using namespace std;class human{public: human() { human_num++; } static int human_num; ~human() { human_num--; print();
2008-11-28 16:12:00 501
原创 c++冒泡实现
#include using namespace std;void BubbleSort(int *a,int size){ int temple; for(int i=1;i//需要排列的次数 { for(int j=0;j//每次排列的次序 { if(a[j]>a[j+1]
2008-11-28 11:24:00 433
原创 Vector的遍历
#include #include #include using namespace std; struct node { int number; string name; }; void main() { node a; a.number=3; a.name="yuwei"; vector v; for(
2008-11-27 15:07:00 487
原创 反向代理
反向代理服务器的工作方式 反向代理服务器(Reverse Proxy Server)一般被置于源服务器的前端,如图中所示。它配备有大容量的内存和高速磁盘,用于缓存客户的请求,所以反向代理服务器又称为加速服务器。 图:反向代理服务器 对于客户送过来的请求,反向代理服务器的工作方式如下:使用反向代理服务器后,客
2008-11-26 14:50:00 715
原创 template的简单例子
#include using namespace std;template class T>int compare(const T &v1,const T &v2){ if(v1==v2) return 0; if(v1>v2) return -1; if(v1 return 1;
2008-11-22 22:23:00 452
原创 VC++中"using namespace std"的用处
std 是一个命名空间.. 不同的命名空间可以有相同的类名被定义 .. using namespace std; 就是指明下面的程序使用std,如果不用这句指明的话就要用std::string(string是std空间中定义的 也可以在全局空间中定义,只要名字空间不一样即可..).. 否则可以默认名字空间中有std.便不用std::来修饰 它是C++新标准中有的,解决多人作编大程序时名字冲突问题。
2008-11-22 20:00:00 592
原创 vector的访问的探讨
void f(vector& v){ v[0]; //A v.at(0); //B}上述A、B均是对Vector中的0位置的元素进行访问,其结果可能不一致。 当V为非空时,两者一致,当V为空时,则不一致了。 理由:A这种访问方式是vector::operator,其不进行越界检查 B这种访问方式是vector::at,其要求进行越界访问,抛出std::out_of_range异常
2008-11-22 17:13:00 566
原创 交换两个数,并且不使用第三块内存
#include using std::cout;using std::cin;using std::endl;void main(){ int a,b; cout"please input two number" cin>>a>>b; cout"a=""; ""b=" a=a+b; b=a-b;
2008-11-22 14:53:00 1991 1
原创 斐波拉挈 递归实现
#include using std::cout;using std::cin;using std::endl;int fun(int n){ if(n==1||n==2) return 1; if(n>2) return fun(n-1)+fun(n-2);}void main(){
2008-11-22 14:30:00 534
原创 二分查找的C++实现
1.递归实现 #include using std::cout;using std::cin;using std::endl;int BSearch(int *a,int key,int low,int high){ int mid; if(low>high) return -1; mid=(low+hi
2008-11-22 14:17:00 549
原创 c++实现N阶的递归算法
#include using std::cout;using std::cin;using std::endl;int fun(int n){ if(n==1) { return 1; } else { while(n>1) { r
2008-11-22 13:17:00 709
原创 算数运算按补码进行运算
对一个二进制数按位求反、末位加一的运算称为求补运算,补码表示的数具有以下特征: 补码的加法规则是: 补码的减法规则是: 其中通过对求补就可以得到。 在机器里,补码减法是通过对减数求补后把减法转换为加法进行的。符号位参加运算,能自动得到正确结果。 例:假设机器字长为8位,计算25+(-32) 25的补码是0001 1001,-32的补码是1110
2008-11-21 22:08:00 1630 3
原创 原码、反码、补码
原码表示法:符号 + 绝对值 由此可以看出,0的表示不唯一。 反码表示法:正数的反码同原码,负数的反码数值位与原码相反 由此可以看出,0的表示不唯一。 补码表示法:多数机器的整数都采用补码表示法。 正数的补码表示:与原码表示相同 负数的补码表示:相应的正数按位求反,末位加1即为该负数的补码表示
2008-11-21 22:03:00 1310
原创 指针和句柄的区别
你朋友给你写信,他直接写你名字邮局是找不到你的,他就写出你家的门牌号,邮局通过门牌就能找到你了,那么门牌就是指针,而你本身就是指针指向的内存值. 你由于去砸110车窗户被关进局子(打比方呵呵,别打我~),和你一起的有老外,有外星人,大家名字都很长,很难记,监狱长为了方便,给每个犯人一个标号,比如你是0001,而另一个火星人是0002,那么以后监狱长碰到0001就知道是你了,不会去找火星人麻烦的.那
2008-11-21 20:31:00 446
转载 计算机基础知识
问题一:两笔记本电脑连起来后拼不通,你觉得可能有哪些问题? 答:首选想到是软件问题,软件问题首选查找是否安装有防火墙程序,如否则查看驱动程序有无问题,然后如果是WINDOWS的系统,再查看TCP/IP协议IP地址是否在一个子网,如果以上都无问题,则查看硬件,顺序是网卡--网线。 问题二:我们在南京,和深圳的网络是通的,但和北京的网络不通,你以怎样的顺序检查问题? 答:首选要知道三方的
2008-11-21 11:58:00 760
转载 全局变量和局部变量的区别以及实现
全局变量的生命周期是整个程序运行的时间,而局部变量的生命周期则是局部函数或过程调用的时间段。其实现是由编译器在编译时采用不同内存分配方法。全局变量在main函数调用后,就开始分配,如果是静态变量则是在main函数前就已经初始化了。而局部变量则是在用户栈中动态分配的。
2008-11-21 11:52:00 915
原创 析构函数和虚函数的用法和作用
析构函数也是特殊的类成员函数,它没有返回类型,没有参数,不能随意调用,也没有重载,只有在类对象的生命期结束的时候,由系统自动调用。有释放内存空间的做用!虚函数是C++多态的一种表现 例如:子类继承了父类的一个函数(方法),而我们把父类的指针指向子类,则必须把父类的该函数(方法)设为virturl(虚函数)。 使用虚函数,我们可以灵活的进行动态绑定,当然是以一定的开销为代价。 如果父类的函数(方
2008-11-21 11:46:00 4187
原创 c++和c里面struct的区别
C++的struct可以当作class来用,他和C++中class的唯一的区别是,class中的成员默认是private,而struct的成员默认为public。 C中的struct只能是一些变量的集合体,可以封装数据却不可以隐藏数据,而且成员不可以是函数。
2008-11-21 11:41:00 1547
原创 ASSERT()函数功能
ASSERT()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句。这个宏通常原来判断程序中是否出现了明显非法的数据,如果出现了终止程序以免导致严重后果,同时也便于查找错误。例如,变量n在程序中不应该为0,如果为0可能导致错误,你可以这样写程序: ...... ASSE
2008-11-21 11:28:00 1069
原创 AT&T汇编格式
寄存器中a:eax,b:ebx,c:ecx,d:edx,s:esi,d:edi,r:任何寄存器,“0”:与上一个相同的寄存器Int main(){ Int a1=10,b1=0; //定义两个变量 _asm_(“movl %1,%%eax ;//n//r” //将第一个寄存器(ebx)的值移到eax中 “movl %%eax,%%ecx”; // :“=a”(b1) //将eax的值
2008-11-21 10:30:00 485
原创 vc6.0调试问题
fatal error C1083: Cannot open precompiled header file解决方法:删除工程中的Debug文件
2008-11-20 20:16:00 434
转载 调用约定
调用约定(Calling convention)决定以下内容:函数参数的压栈顺序,由调用者还是被调用者把参数弹出栈,以及产生函数修饰名的方法。MFC支持以下调用约定: _cdecl 按从右至左的顺序压参数入栈,由调用者把参数弹出栈。对于“C”函数或者变量,修饰名是在函数名前加下划线。对于“C++”函数,有所不同。 如函数void test(void)的修饰名是_test;对于不属于一个类的“C+
2008-11-20 20:02:00 353
原创 UDP实现简单聊天程序
服务器端代码#include #include void main(){ //load socketlib WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested=MAKEWORD(1,1); err=WSAStartup
2008-11-19 16:03:00 579
原创 UDP连接实现
服务器端代码:#include #include void main(){ //load socket WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested=MAKEWORD(1,1); err=WSAStartup
2008-11-19 15:55:00 717
原创 sprintf用法解析
1:sprintf 最常见的应用之一莫过于把整数打印到字符串中,所以,spritnf在大多数场合可以替代itoa。 这样,一个整数的16 进制字符串就很容易得到,但我们在打印16 进制内容时,通常想要一种左边补0 的等宽格式,那该怎么做呢?很简单,在表示宽度的数字前面加个0 就可以了。sprintf(s, "%08X", 4567); //产生:"000011D7"上面以”%d”进行的10 进制打
2008-11-19 15:11:00 1018
3G技术讲解(完整分析)
2010-04-14
NS2学习文件打包(很全面)
2009-12-03
OWL本体语言指南和使用
2009-12-03
WSDL学习文档(学习web服务必用)
2009-12-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人