随笔分类 -  C++

摘要:1.为什么到现在才弄懂这个不知道这个Socket重叠IO这种模型是不是socket IO完成端口的基础,不过我感觉,学习一下这个再去学习socket IO完成端口是比较有好处的。这个Scoket重叠IO我以前记得看过好几次,都没看懂。一部分原因是我没能静态心来写代码,还有更重要的原因就是,Socke... 阅读全文
posted @ 2015-09-30 23:35 瓜蛋 阅读(1571) 评论(0) 推荐(0) 编辑
摘要:WSAAsyncSelect 实现给异步socket给了另一种实现方式,就是通过窗口消息的方式来提醒对socket接收还是发送msdn有非常全面的解释:https://msdn.microsoft.com/en-us/library/windows/desktop/ms741540(v=vs.85)... 阅读全文
posted @ 2015-09-18 21:48 瓜蛋 阅读(780) 评论(0) 推荐(0) 编辑
摘要:这个问题困扰过我几次,都没有来得及研究,今天研究一下。首先写一个最简易的socket tcp程序,连接成功后再关闭服务器然后再用客户端各种操作看是什么情况测试表明(1)客户端已经连接,当服务端关闭程序时,客户端调用send函数发送失败,WSAGetLastError() 返回10054(远程主机强迫... 阅读全文
posted @ 2015-09-17 23:06 瓜蛋 阅读(30577) 评论(2) 推荐(1) 编辑
摘要:请看下面代码string AddString(const string& a,const string & b){ return a + b;}int _tmain(int argc, _TCHAR* argv[]){ const char * szA = "Zhang"; con... 阅读全文
posted @ 2015-08-08 11:27 瓜蛋 阅读(506) 评论(2) 推荐(0) 编辑
摘要:HHOOK g_Hook = NULL;LRESULT CALLBACK CallWndProc( _In_ int nCode, _In_ WPARAM wParam, _In_ LPARAM lParam){ CWPSTRUCT * pMsg = (CWPSTRUCT*) lP... 阅读全文
posted @ 2015-07-16 08:32 瓜蛋 阅读(1401) 评论(0) 推荐(0) 编辑
摘要:今天发现如果strcpy这函数,目标buffer太小,会有意想不到的崩溃。而且不容易调试。以后尽量要用strcpy_s了。strcpy_s是strcpy的更安全的版本1.当目标字符串参数是一个字符串数组时可以不要numberOfElements这个参数,例如: char szBuf[50];... 阅读全文
posted @ 2015-05-01 23:12 瓜蛋 阅读(528) 评论(0) 推荐(0) 编辑
摘要:CString GetUStr(const string & str){ std::string showname = str;//\u6211\u7231\u5317\u4eac\u5929\u5b89\u95e8 int len=strlen(showname.c_str())+1;... 阅读全文
posted @ 2015-03-17 12:59 瓜蛋 阅读(3789) 评论(1) 推荐(1) 编辑
摘要:32bit-64bit porting work注意事项64位服务器逐步普及,各条产品线对64位升级的需求也不断加大。在本文中,主要讨论向64位平台移植现有32位代码时,应注意的一些细小问题。什么样的程序需要升级到64位?理论上说,64位的操作系统,对32位的程序具有良好的兼容性,即使全部换成64位... 阅读全文
posted @ 2015-02-11 10:14 瓜蛋 阅读(4320) 评论(0) 推荐(0) 编辑
摘要:异步IO操作与同步操作区别: 接收IO请求完成通知 阅读全文
posted @ 2015-02-06 23:11 瓜蛋 阅读(537) 评论(0) 推荐(0) 编辑
摘要:VC中的这两个东西肯定谁都用过, 不过它们之间有什么区别, 正好有时间研究了一下, 如果有错误欢迎拍砖.基于VC2005, 32位XP 平台测试通过. 估计对于其他版本的VC和操作系统是不通用的.1. try ... catch这个是C++语言定义的, 每个C++都有对其的不同的实现. 使用也很简单... 阅读全文
posted @ 2014-07-20 23:19 瓜蛋 阅读(3874) 评论(1) 推荐(0) 编辑
摘要:最近想写一个应用程序,要连接和操作mysql数据库,以前只是用c++ builder 操作过mysql数据库,那是用控件操作的,感觉比较弱智,但是c++ builder vcl控件感觉在多线程里比较坑,所以用vs2012做了。c++连接mysql有两种方式,1是原始的方法,2是用 Connector c++ 。Connector c++ 只是一种封装,使之更加方便.本方只记下关于 Connector c++ 操作数据库。想写一个demo 测试一下。mysql connector c++ 调用 方式 有两种,一种是动态链接库调用 ,一种是静态库调用。静态库试了一整天不行,都是以 get_mysq 阅读全文
posted @ 2014-03-13 23:28 瓜蛋 阅读(9468) 评论(3) 推荐(0) 编辑
摘要:注:本文转自大神王垠的博客 原文出处http://www.yinwang.org/blog-cn/2014/02/09/programmer-mental/说实话,虽然似乎为之奋斗了十多年,在真正进入软件行业的短短一年之后,我已经对它感到相当的厌倦了。这并不是说这个行业没有前景,而是在这个行业工作,其实很难得到心理上的快乐。人们说女怕嫁错郎,男怕入错行。我并不认为自己入错了行,我仍然很喜欢设计程序和语言,而且我显然是这个领域的王牌之一。然而我却看到了这个行业里的无限混沌,让我觉得喘不过气来。几十年的垃圾设计堆积在那里,却没有人试图把它们清理掉,权威主义盛行。无论你在哪个公司,哪个地方,只要跟程 阅读全文
posted @ 2014-02-11 00:50 瓜蛋 阅读(431) 评论(0) 推荐(0) 编辑
摘要:堆的优缺点: 优点:让我们专心解决手头问题,不必理会分配粒度和页边界这类事情。 缺点:分配和释放内存块的速度比其他方式慢,而且也无法对物理存储器的调拨和撤销进行直接控制。 什么是堆: 堆就是一块预订的地址空间区域。刚开始,区域大部分页面都没以调拨物理存储器。随前我们不断的从堆中分配内存,堆管理器会给 阅读全文
posted @ 2013-08-20 11:33 瓜蛋 阅读(619) 评论(0) 推荐(0) 编辑
摘要:内存映射文件主要用于以下三种情况: 系统使用内存映射文件载入并运行exe和dll,这大量节省了页交换文件的空间以及应用程序的启动时间 开发人员可以使用内存映射文件来访问磁盘上的数据文件。这使得我们可以避免直接对文件IO操作和对文件内存进行缓存 进程间通讯 17.1 映射到内存的可执行文件和DLL 当 阅读全文
posted @ 2013-08-20 09:49 瓜蛋 阅读(2944) 评论(2) 推荐(0) 编辑
摘要:原文转自:http://www.crazycpp.com/?p=82前言以前收藏过一篇讲C++位操作的文章,这次博客搬家,以前的数据都没有保留,整理谷歌网站管理后台的时候,发现不时的还有网友有在查找这篇文章。所以,疯刀也来弄个简单的教程,讲讲位操作的用途和魅力吧。位简介位是数据存储的最小单位。在 计算机中的二进制数系统中,位,简记为b,也称为比特,每个0或1就是一个位(bit)。位操作详解我们先来看看位运算操作符:& (按位与)、| (按位或)、^ (按位异或)、~ (按位取反)、>> (按位右移)、>(按位右移)把二进制位整体向右移动。7>>1 = 00 阅读全文
posted @ 2013-07-27 00:30 瓜蛋 阅读(474) 评论(0) 推荐(0) 编辑
摘要:当系统创建线程的时候,会为线程栈预订一块地址空间区域,并给该区域调拨一些物理存储器。默认会预订1MB的地址空间并调拨两个页面的存储器。但是在构建 应用程序的时候可以改变这个默认值 在构建应用程序的时候链接器会把栈的大小写入到exe和dll文件的pe文件头中,当创建线程的时候会根据PE文件头中的大小来 阅读全文
posted @ 2013-07-23 12:20 瓜蛋 阅读(553) 评论(0) 推荐(0) 编辑
摘要:全局变量的操作void lua_getglobal(lua_State * L ,const char * name)此函数从lua中取出一个名为name的全局变量并将其压入栈中。如当lua文件内容为width = 200 height = 300时,以下代码int _tmain(int argc, _TCHAR* argv[]){ lua_State *L = luaL_newstate(); luaL_openlibs(L); if(0 != luaL_loadfile(L,"config_width_height.lua")) { printf("l... 阅读全文
posted @ 2013-07-07 13:39 瓜蛋 阅读(933) 评论(0) 推荐(0) 编辑
摘要:本文转自:http://blog.csdn.net/clever101/article/details/8286066 上次我们学习了怎么用Makefile编译一个控制台工程。这次我们学习一下如何使用Makefile来编译一个win 32的GUI程序。win 32的GUI程序其编译过程大部分和控制台程序一样,不同的是多了一步RC编译器将资源文件编译成res文件,然后在最后一步链接中需要把这个res文件链接到exe文件中。好,现在让我们在实践中学习吧。新建一个win32 应用程序工程——Win32Test。让我们先完成C++代码部分的Makefile的编写,还记得Makefile的原则是以终.. 阅读全文
posted @ 2013-07-07 02:47 瓜蛋 阅读(1781) 评论(0) 推荐(0) 编辑
摘要:本文转自:http://blog.csdn.net/clever101/article/details/8147352决心学习Makefile,一方面是为了解决编译开源代码时需要跨编译平台的问题(发现一些开源代码已经在使用VS2010开发,但我还没安装VS2010,我想在VS2008下编译这些代码);另一方面源码在服务器端编译的话,使用IDE的方式编译还是不太方便。本文主要分为三部分:第一部分讲述namke工具使用makefile的用法;第二部分讲述makefile的主要语法;第三部分讲述自己动手实践学习写makefile文件。第四部分是编写一个工具将vc工程文件转化为Makefile文件。首 阅读全文
posted @ 2013-07-07 02:38 瓜蛋 阅读(1523) 评论(0) 推荐(0) 编辑
摘要:Microsoft Windows 提供了以下三种机制来对内存进行操控: 虚拟内存 最适合用来管理大型对象数组或大型结构数组 内存映射文件 最适合用来管理大型数据流(通常是文件),以及在同一台机器上运行多个进程之间共享数据 堆 最适合管理大量小型对象 本篇只讨论第一种方式 虚拟内存。 15.1 预订 阅读全文
posted @ 2013-06-25 15:00 瓜蛋 阅读(2127) 评论(0) 推荐(0) 编辑