2012年1月15日

摘要: 对于STL中的map,插入有两种方法:1、map <int,int>a; a[1 ]=1 //此方法初始化a[1],并给a[1]赋值。 a[1]=2 //此方法修改了a[1的值。2 map <int,int>a; a.insert(map<int,int>::value_type(1,1)); //此方法初始化a[1],并给a[1]赋值。 a.insert(map<int,int>::value_type(1,2)); //因为a[1]已经存在,此方法不能初始化a[1],也不能修改a[1]的值。3 特别注意的是,因为[ ]被重载为,如果不存在该k 阅读全文

posted @ 2012-01-15 23:48 无忧consume 阅读(197) 评论(0) 推荐(0) 编辑

摘要: STL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector 、deque);另一类是以不连续的节点形式存储的容器(如:list、set、map)。在使用erase方法来删除元素时,需要注意一些问题。在使用 list、set 或 map遍历删除某些元素时可以这样使用: 正确使用方法1std::list< int> List;std::list< int>::iterator itList;for( itList = List.begin(); itList != List.end(); ){if(WillDelete(*itList) ){itLis 阅读全文

posted @ 2012-01-15 23:46 无忧consume 阅读(202) 评论(0) 推荐(0) 编辑

摘要: 【动态链接需要什么函数库】 众所周知,Windows支持动态链接,换句话说,应该程序所调用的Windows API函数是在“执行时期”才链接上去的。 Windows程序调用的函数可分为C Runtimes和Windows API两在部分,以下是C Runtimes所用到库文件及其说明: ■LIBC.LIB ---- 这是C Runtimes函数库的动态链接版本。 ■MSVCRT.LIB ---- 这是C Runtimes函数库动态链接版本(如果链接这一函数库,你的程序执行进必须有MSVCRT40.DLL)。 对于API函数则由系统的三大模块GDI32.DLL、USER32.DLL和D... 阅读全文

posted @ 2012-01-15 23:42 无忧consume 阅读(620) 评论(0) 推荐(0) 编辑

摘要: 考虑单窗口情况:假设自己通过new创建了一个窗口对象pWnd,然后pWnd->Create。则销毁窗口的调用次序:1.手工调用pWnd->DestroyWindow();2.DestroyWindow会发送WM_DESTROY;3.WM_DESTROY对应的消息处理函数是OnDestroy();4.DestroyWindow会发送WM_NCDESTROY;5.WM_NCDESTROY对应的消息处理函数是OnNcDestroy;6.OnNcDestroy最后会调用PostNcDestroy;7.PostNcDestroy经常被用户重载以提供释放内存操作。例如可以使用delete th 阅读全文

posted @ 2012-01-15 23:39 无忧consume 阅读(350) 评论(0) 推荐(0) 编辑

摘要: 在使用TCP连接的时候,客户端链接到服务器成功,然后正常使用closesocket断开,再次连接时失败,过一会儿再连接就可以成功,不知道为什么,google了一下,终于明白了原因。 原来在TCP连接后,主动去断开的一端会进入TIME_WAIT状态,在这个状态下,会等待2MSL的时间才会把本地申请的socket资源全部释放,否则在这段时间内是不能够再次使用之前的端口进行收发数据的。而对于某些应用来说,需要断开后立刻连接,这样就不能够成功了。这个问题无法解决,只能够去设置MSL的时间,最短可以是30s。 还有的网友回帖说,在TCP断开的时候可以采用两种断开方式,一种是优雅的断开,另一种就是... 阅读全文

posted @ 2012-01-15 23:34 无忧consume 阅读(874) 评论(0) 推荐(0) 编辑

摘要: 从函数调用上来分析(msdn):一旦完成了套接字的连接,应当将套接字关闭,并且释放其套接字句柄所占用的所有资源。真正释放一个已经打开的套接字句柄的资源直接调用closesocket即可,但要明白closesocket的调用可能会带来负面影响,具体的影响和如何调用有关,最明显的影响是数据丢失,因此一般都要在closesocket之前调用shutdown来关闭套接字。 shutdown:为了保证通信双方都能够收到应用程序发出的所有数据,一个合格的应用程序的做法是通知接受双发都不在发送数据!这就是所谓的“正常关闭”套接字的方法,而这个方法就是由shutdown函数,传递给它的参数有SD_RE... 阅读全文

posted @ 2012-01-15 23:28 无忧consume 阅读(652) 评论(0) 推荐(0) 编辑

摘要: Theshutdownfunction disables sends or receives on a socket.Syntaxint shutdown( __inSOCKET s, __inint how);Parameterss[in]A descriptor identifying a socket.how[in]A flag that describes what types of operation will no longer be allowed. Possible values for this flag are listed in theWinsock2.hheader.. 阅读全文

posted @ 2012-01-15 23:26 无忧consume 阅读(261) 评论(0) 推荐(0) 编辑

该文被密码保护。 阅读全文

posted @ 2012-01-15 23:25 无忧consume 阅读(1) 评论(0) 推荐(0) 编辑

摘要: 利用GetLastError()获得的socket编程中常见错误常数值描述sckOutOfMemory7内存不足sckInvalidPropertyValue380属性值无效。sckGetNotSupported394属性不可读。sckSetNotSupported383属性是只读的。sckBadState40006所请求的事务或请求本身的错误协议或者错误连接状态。sckInvalidArg40014传递给函数的参数格式不确定,或者不在指定范围内。sckSuccess40017成功。sckUnsupported40018不受支持的变量类型。sckInvalidOp40020在当前状态下的无效操 阅读全文

posted @ 2012-01-15 23:23 无忧consume 阅读(1300) 评论(0) 推荐(0) 编辑

摘要: Unix操作系统的入门与基础 与大家熟悉的Windows用户界面和使用习惯不同,Unix是常使用命令运行、极具灵活性的操作系统,目前的产品主要有IBM-AIX、SUN-Solaris、HP-UNIX等。初期接触Unix操作系统,下列的问题几乎是常遇的:由图形界面操作转到以命令行方式操作的不习惯性;在短期内掌握全部命令的困难性;针对同一操作有几个命令的难选择性;不同shell命令格式的易混淆性,等等。一些初学者可能会因此而丧失继续学习的信心。根据上述的实际情况,本文遵循“避繁就简、避滥就精,不求详尽、只求适用”的原则,以初学者上机的必经过程为思路,力求用层次分明的浚理和详略得当的阐释,解读该操. 阅读全文

posted @ 2012-01-15 23:20 无忧consume 阅读(279) 评论(0) 推荐(0) 编辑

摘要: Unix 操作系统 由于Unix操作系统众所周知的稳定性、可靠性,用来提供各种Internet服务的计算机运行的操作系统占很大比例的是Unix及Unix类操作系统。目前比较常见的运行在PC机上的Unix类操作系统有: BSD Unix、Solaris x86、SCO Unix等。(1)FreeBSD 自从1969年AT&&T Bell实验室研究人员创造了Unix,至今Unix已发展成为主流操作系统之一。在Unix的发展过程中,形成了BSD Unix和Unix System Ⅴ两大主流。BSD Unix在发展中形成了不同的开发组织,分别产生了FreeBSD、NetBSD、Open 阅读全文

posted @ 2012-01-15 23:09 无忧consume 阅读(290) 评论(0) 推荐(0) 编辑

摘要: 什么是有限差分法 有限差分法是指用泰勒技术展开式将变量的导数写成变量,在不同时间或空间点值的差分形式的方法。有限差分法的基本思想[1] 按时间步长和空间步长将时间和空间区域剖分成若干网格,用未知函数在网格结(节)点上的值所构成的差分近似代替所用偏微分方程中出现的各阶导数,从而把表示变量连续变化关系的偏微分方程离散为有限个代数方程,然后解此线性代数方程组,以求出溶质在各网格结(节)点上不同时刻的浓度。有限差分法的基本步骤 (1)剖分渗流区,确定离散点。将所研究的水动力弥散区域按某种几何形状(如矩形、任意多边形等)剖分成网络系统。 (2)建立水动力弥散问题的差分方程组。 (3)求解差分方... 阅读全文

posted @ 2012-01-15 23:01 无忧consume 阅读(1765) 评论(0) 推荐(0) 编辑

摘要: 原文地址:http://hi.baidu.com/quanhaili/blog/item/5a40ba86b37e1b22c65cc38f.html静态类成员包括静态数据成员和静态函数成员两部分。 一 静态数据成员: 类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点: 1.静态数据成员的定义。 静态数据成员实际上是类域中的全局变量。所以,静态数据成员的定义(初始化)不应该被放在头文件中。 其定义方式与全局变量相同。举例如... 阅读全文

posted @ 2012-01-15 22:39 无忧consume 阅读(183) 评论(0) 推荐(0) 编辑

摘要: 原文地址http://blog.csdn.net/danky/article/details/1429249 自定义的术语:类级成员(class level member)和对象级成员(object level member)。我不知道在C++领域里是否已经有这样的术语,只是我觉得这两个术语可以很好地帮助我们理解static member function。在这里可以就有人想指正我了:本来成员(member)就是类独有的一部分,还分什么类级和对象级的。但我相信如果你看完本文后,你原来对static member function的那种一知半解,会演变成现在的“原来是这么一回事”的话,你会觉得. 阅读全文

posted @ 2012-01-15 22:25 无忧consume 阅读(671) 评论(0) 推荐(0) 编辑

摘要: C Runtime是windows平台下的一个概念。一般来说,CRT函数就是标准的C语言函数。例如,printf、scanf、strlen、fopen等函数就属于CRT函数。在windows下所有的CRT函数最终都是转化成为win32 API来执行的。windows本身并没有在内核之上提供对CRT的支持。CRT既可以通过静态连接来实现,也可以通过动态链接来实现(MSVCRT.DLL)。 当C Runtime函数库于20世纪70年代产生出来时,PC的内存容量还很小,多任务是个新奇观念,更别提什么多线程了。因此以当时产品为基础所演化的C Runtime函数库在多线程(multithreade... 阅读全文

posted @ 2012-01-15 22:13 无忧consume 阅读(334) 评论(0) 推荐(0) 编辑

摘要: VS 2008中出现的错误1>cl : Command line warning D9035 : option 'Wp64' has been deprecated and will be removed in a future release原因:vs2008不再建议使用/wp64检测64兼容问题,因为可以直接在32位OS上交叉编译为64位代码(vs2005也可以)。vs2008建议直接使用该方法检测64位兼容性问题。该选项被设置为“不推荐”有个原因是它会导致某些template库发生许多无效的warning。解决办法:property c/c++ Detect 64 阅读全文

posted @ 2012-01-15 22:08 无忧consume 阅读(243) 评论(0) 推荐(1) 编辑

摘要: 迭代器iterator为STL中重要概念vector<NODE>::iterator FindMin(vector<NODE> &vect){ vector<NODE>::iterator min = vect.begin(); vector<NODE>::iterator iter = vect.begin(); while(iter != vect.end()) { if((*itor).Value < (*min).Value) { min = iter; } iter ++; } return min;} iterator的 阅读全文

posted @ 2012-01-15 22:05 无忧consume 阅读(208) 评论(0) 推荐(0) 编辑

摘要: volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改。 用volatile关键字声明的变量i每一次被访问时,执行部件都会从i相应的内存单元中取出i的值。 没有用volatile关键字声明的变量i在被访问的时候可能直接从cpu的寄存器中取值(因为之前i被访问过,也就是说之前就从内存中取出i的值保存到某个寄存器中),之所以直接从寄存器中取值,而不去内存中取值,是因为编译器优化代码的结果(访问cpu寄存器比访问ram快的多)。 以上两种情况的区别在于被编译成汇编代码之后,两者是不一样的。之所以这样做是因为变量i可能会经常变化,保证对特殊地址的稳定访问... 阅读全文

posted @ 2012-01-15 15:07 无忧consume 阅读(208) 评论(0) 推荐(0) 编辑

摘要: __asm关键字启动内联汇编并且能写在任何c/c++合法语句之处.它不能单独出现.它必须接汇编指令、一组被大括号包含的指令或一对空括号.术语“__asm 块”在这里是任意一个指令或一组指令无论是否在括号内。以下代码片段是在括号内的一个简单的__asm块。__asm{ mov al, 2 mov dx, 0xD007 out al, dx}另一种方法是,你可以在每个汇编指令前放置__asm__asm mov al, 2__asm mov dx, 0xD007__asm out al, dx因为__asm关键字是一个语句分隔符,你也可以将汇编指令放在同一行:__asm mov al, 2 __as 阅读全文

posted @ 2012-01-15 15:01 无忧consume 阅读(764) 评论(0) 推荐(0) 编辑

摘要: 在寄存器里面有很多寄存器虽然他们的功能和使用没有任何的区别,但是在长期的编程和使用中,在程序员习惯中已经默认的给每个寄存器赋上了特殊的含义,比如:EAX一般用来做返回值,ECX用于记数等等。 在win32的环境下EBP寄存器用与存放在进入call以后的ESP的值,便于退出的时候回复ESP的值,达到堆栈平衡的目的。 应用以前说过的一段话: 原程序的OEP,通常是一开始以 Push EBP 和MOV Ebp,Esp这两句开始的,不用我多说大家也知道这两句的意思是以EBP代替ESP,作为访问堆栈的指针。 为什么要这样呢?为什么几乎每个程序都是的开头能?因为如果我们写过C等函数的时候就应... 阅读全文

posted @ 2012-01-15 14:56 无忧consume 阅读(364) 评论(0) 推荐(0) 编辑


Copyright © 2024 无忧consume
Powered by .NET 8.0 on Kubernetes