- 博客(64)
- 资源 (14)
- 收藏
- 关注
原创 在windows下编译mongodb c driver
mongodb引用到了openssl和bson库,因此先要安装这2个库, 还需要用到cmake生成vs项目, 这里cmake的安装就直接忽略了, 有需要的同学可自行百度。1. 下载perl, 点击打开链接2. 下载openssl 点击打开链接3. 在openssl源码目录调用perl Configure VC-WIN32 生成配置4.运行openssl\ms\do_ms.bat生
2015-09-02 14:57:09
2269
转载 怎样重建一个损坏的调用堆栈(callstack)
原文作者:Aaron Ballman原文时间:2011年07月04日原文地址:http://blog.aaronballman.com/2011/07/reconstructing-a-corrupted-stack-crawl/翻译:magictong时间:2014年05月29日夜后记:可惜原始的DUMP文件作者并没有上传 在我的日常
2015-01-29 22:06:05
559
转载 C/C++中手动获取调用堆栈
当我们的程序core掉之后,如果能获取到core时的函数调用堆栈将非常有利于定位问题。在Windows下可以使用SEH机制;在Linux下通过gdb使用coredump文件即可。但有时候由于某些错误导致堆栈被破坏,发生拿不到调用堆栈的情况。一些基础预备知识本文不再详述,可以参考以下文章:函数调用栈的获取原理分析寄存器、函数调用与栈帧需要知道的信息:函数调用对
2015-01-29 18:40:27
606
转载 函数调用栈的获取原理分析
上一篇文章《在Linux程序中输出函数调用栈》,讲述了在Linux中如何利用backtrace获取调用栈,本篇文章主要介绍一下获取函数调用栈的原理,并给出相应的实现方式。要了解调用栈,首先需要了解函数的调用过程,下面用一段代码作为例子:#include int add(int a, int b) { int result = 0; result = a + b
2015-01-29 17:56:53
2589
2
转载 在Linux程序中输出函数调用栈
程序发生异常时,将函数的调用栈打印出来,可以大大提高定位效率。Linux中提供了三个函数用来获取调用栈:/* 获取函数调用栈 */int backtrace(void **buffer, int size);/* 将调用栈中的函数地址转化为函数名称 并返回一个字符串数组 */char **backtrace_symbols(void *const *buffer, int
2015-01-29 17:54:54
563
转载 windows下捕获dump
一般要捕获异常只需要两个函数:SetUnhandledExceptionFilter截获异常;MiniDumpWriteDump写dump文件。但是由于CRT函数可能会在内部调用SetUnhandledExceptionFilter(NULL),解除我们程序设置的异常处理,这导致我们的程序无法完整捕获崩溃。另外,还有一部分非异常的CRT错误,不属于SEH异常捕获的范畴,需要通过_set_inval
2015-01-29 17:46:48
512
原创 mysql_query函数中卡死
在上一个项目中碰到一个服务器无响应的问题,通过调试发现在执行mysql_query时没返回了,在等待某个内核事件,这个问题很难重现,一直没找到问题,今天看到论坛上也有朋友问到在mysql_query时无响应, 猜想是不是刚才在query的时候数据库连接断开了, 而在mysql_query中又没处理好这个问题,导致一直等待,先记录下来待验证,有兴趣的朋友可以一起讨论下
2015-01-29 16:57:18
1799
1
转载 为什么在mysql_query()返回成功后,mysql_store_result()有时会返回NULL
成功调用mysql_query()后,mysql_store_result()能够返回NULL。出现该情况时,表明出现了下述条件之一:· 出现了malloc()故障(例如,如果结果集过大)。· 无法读取数据(在连接上出现了错误)。· 查询未返回数据(例如,它是INSERT、UPDATE或DELETE)。通过调用mysq
2015-01-29 16:46:22
2044
转载 解决Eclipse调试真机时出现adb refused request: closed
最近用Eclipse调试我的红米的时候,总是出现adb refused request: closed,而且调试一直停在waiting for debugger不动了,在网上搜了一下,有的说用adb kill-server然后再adb start-server,还有的说重启Eclipse或者重启电脑,但是都不管用,试了好多次终于发现原来是驱动的问题,我把360手机助手卸载了之后(我用的是360手机
2015-01-04 18:29:43
1025
转载 如何定位Android NDK开发中遇到的错误
原地址:http://www.csdn.net/article/2014-12-30/2823366-Locate-Android-NDKAndroid NDK是什么?Android NDK 是在SDK前面又加上了“原生”二字,即Native Development Kit,因此又被Google称为“NDK”。众所周知,Android程序运行在Dalvik虚拟机中,NDK允
2015-01-04 11:25:25
545
转载 android和iOS平台的崩溃捕获和收集
通过崩溃捕获和收集,可以收集到已发布应用(游戏)的异常,以便开发人员发现和修改bug,对于提高软件质量有着极大的帮助。本文介绍了iOS和android平台下崩溃捕获和收集的原理及步骤,不过如果是个人开发应用或者没有特殊限制的话,就不用往下看了,直接把友盟sdk(一个统计分析sdk)加入到工程中就万事大吉了,其中的错误日志功能完全能够满足需求,而且不需要额外准备接收服务器。 但是如果你对其原理更感
2015-01-04 11:21:10
594
转载 关于使用libcurl的注意事项
ibcurl与CLOSE_WAIT转载自:http://blog.sunshow.net/2010/03/libcurl-and-close-wait/调用libcurl下载,然后使用netstat查看发现有大量的TCP连接保持在CLOSE_WAIT状态查看libcurl的文档说明,有这样一个选项:CURLOPT_FORBID_REUSEPass a lon
2012-05-22 17:45:56
2955
1
转载 C++0x语言新特性一览
<br />原文请见http://en.wikipedia.org/wiki/C%2B%2B0x。 Rvalue reference and move semantics右值引用与转移语义在标准C++语言中,临时量(术语为右值,因其出现在赋值表达式的右边)可以被传给函数,但只能被接受为const &类型。这样函数便无法区分传给const &的是真实的右值还是常规变量。而且,由于类型为const &,函数也无法改变所传对象的值。C++0x将增加一种名为右值引用的新的引用类型,记作typename &&。
2011-01-13 09:54:00
774
转载 C++内存管理之一(检测内存泄露)
<br /> C++程序的复杂性很大一部分在于他的内存管理,没有C#那样的垃圾回收机制,内存管理对初学者来说很困难。经常会出现内存泄露的情况。那么我们写程序如何避免内存泄露呢?首先我们需要知道程序有没有内存泄露,然后定位到底是哪行代码出现内存泄露了,这样才能将其修复。<br /> 本文描述了如何检测内存泄露。最主要的是纯C,C++的程序如何检测内存泄露。<br /> 现在有很多专业的检测工具,比如比较有名的BoundsCheck, 但是这类工具也有他的缺点,我认为首先Bound
2010-10-19 09:20:00
612
原创 SkinMagic使用方法总结--SetSingleDialogSkin断言失败
<br /> 以前一直没有接触过皮肤库这玩意, 最近做一个im项目需要用到皮肤库了, 我们公司用的是SkinMagic, 关于SkinMagic的安装和使用方法, 网上有很多教程, 在SkinMagicLib.h头文件里介绍也很详细, 这里就不重复了, 主要描述一下我在使用SkinMagic碰到过的问题. 刚开始使用SkinMagic库时, 觉得它很简单(基本使用确实是很简单的, -_-), 一眼就扫完了它所包含的几个常用函数:<br /> <br /> InitSkinMagi
2010-09-17 15:44:00
2406
1
原创 HICON与HBITMAP互换
<br />第一种方法: 使用Bitmap类<br /> Bitmap类可以从HICON和HBITMAP创建, 它提供的方法有:<br /> Bitmap::FromHBITMAP, <br /> Bitmap::FromHICON,<br /> Bitmap::FromBITMAPINFO,<br /> Bitmap::FromResource,<br /> Bitmap::FromStream,<br /> Bitmap::GetHB
2010-09-15 13:31:00
3875
4
原创 获取位图尺寸
从 CBitmap类对象中获取位图尺寸我们可用GetBitmap()函数 。 // 变量bitmap是一个CBitmap类对象BITMAP bm;bitmap.GetBitmap( &bm );bmWidth = bm.bmWidth;bmHeight = bm.bmHeight;如果你有一个 HBITMAP句柄,你可以将它附加到一个CBitmap类对象上,再用上述方法获取尺寸// 变量hBmp是一个HBITMAP句柄BITMAP bm;::GetObject( hBmp, sizeof( bm ),
2010-09-15 12:54:00
883
原创 VC加载jpeg, png图片的方法
<br /> 在VC中我们可以直接利用LoadIcon, LoadBitmap或LoadImage来加载bmp和ico图片, 但是加载jpg和png等格式就没有这么方便了. 其实我们可以通过两个系统提供的两个com接口IPicture和IStream类实现类似于VB的Picture控件, 具体的用法请查看msdn或google下, 下面代码是我以前在网上找的一个例子, 主要用到了几个API函数: AfxGetResourceHandle, FindResource, SizeofResourc
2010-09-15 11:06:00
5437
转载 Ubuntu 10.04 用Wine完美运行QQ 2009
<br /> <br />话说“麻花藤”LinuxQQ不是一般的Bug,在Ubuntu10.04下窗口最大化也不行,最恼火的是Linuxqq在Ubuntu 10.04下活不过半分钟!!<br /> <br />当然,Ubuntu自带的那个 Empathy也还是可用的(PS:你要在高级设置里把版本调节为2008)。。<br />当然,今天是告诉兄弟们如何在Ubuntu下用Wine来运行Windows版的QQ。<br />为啥昵?不是哥蛋疼不过,因为经过测试发现Wine模拟的QQ还是比较稳定的,应该说比Linu
2010-09-14 16:50:00
1041
原创 理解C++实现委托原理
<br /> 在C#中有事件委托的概念, 我们可以方便的将一个类中的事件传递到另一个事件处理类中, 其实现的耦合性很底, 两个类之间不需要实例关联, 但在C++中并没有这种内置的功能, 其实仔细想想, C#的这种事件委托机制是可以用C++的成员函数指针来实现的, 只需要加上一个中间类即可, 网上有个FastDelegate的开源库就实现了这种委托机制, 有需要用到C++委托的朋友可以上网找找这个库. 我们这里只是简单介绍下C++实现委托机制的原理, 也是参照了FastDelegate库.
2010-09-06 09:57:00
1572
转载 gloox接收消息
<br />通过前面的描述,当和服务器建立了连接之后,就可以和服务器进行通讯了,今天先说一下接收远端发送来的文本消息的方式吧。<br />在接收消息之前,需要明确一件事情,就是一旦你登陆至服务器之后,随时有可能有人人给你发来消息,所以应该考虑的是你需要做一个死循环,不断的监听消息,如果有消息之后,根据消息的不同形式,处理它。当然不用担心,觉得用个死循环很影响效率,实际上做过socket的 就明白了,当你调用接收消息的函数时,是会阻塞的,如果没有消息,就阻塞,这样就不会浪费资源了。另外由于阻塞的缘故,所以我们
2010-07-14 11:49:00
1074
原创 Gloox发送消息
<br />Gloox发消息很简单,通过前面的接消息的描述,当需要与远端进行通话时,建立一个MessageSession会话,一旦你拥有这样的一个会话对象了,就可以调用其中的send方法来向远端发送消息了。那么这个MessageSession如何获得呢?<br />通过前面接消息的描述,如果是远端先给你发了消息,此时gloox后台就会创建一个MessageSession对象出来,而如果你收到这个MessageSession传来的消息之后,如果不将其删除,并且通过某种数据结构,如STL中的map,其关键字是远
2010-07-14 11:48:00
1061
转载 gloox连接至服务器端
<br />在使用gloox之前,有必要先提一下XMPP协议这个东东。<br />XMPP协议是一个基于互联网的即时通信标准协议。它采用XML技术,以文本的方式传输即时消息。支持动态自定义扩展应用。与传统的网络协议相比,如QQ等,XMPP协议并不是一个基于二进制方式实现的协议,而是基于XML技术的文本方式,也就是说如果不采用加密技术的话,是可以直接查看发送的消息的。XMPP协议通过定义一些XML的节点关键字,来表明消息发送信息,并与其它协议能够有效的结合,总的说来,XMPP协议是一种很不错的准实时消息协议标
2010-07-14 11:47:00
1084
转载 gloox代码分析4 - private xml storage
<br />这部分的作用是客户端可以存放任意格式的私有xml数据到服务器上,并且在想要查看的时候取回!<br /><br />1.协议 - XEP-0049 - http://xmpp.org/extensions/xep-0049.html<br />2. jabber client可以保存任意的xml数据到服务器,通过一个<iq type="set">的请求.该请求需要包含一个名称空间<br />为jabber:iq:private的<query/>子元素. <query/>的子元素就是我们需要保存的私
2010-07-14 11:44:00
873
转载 gloox代码分析3 - 注册模块
<br />jabber协议中如何注册一个用户?<br />首先要与服务器建立一个连接, 在完成TLS握手之后就可以进行注册了,为什么不需要SASL握手呢?因为SASL握手只针对已经注册的用户在登陆服务器的时候使用.(修改密码和删除用户的时候需要SASL握手)<br />下面以openfire作为服务器,注册一个用户的过程如下:<br />(假设已经完成了TLS握手)<br />1. ( C->S )<br /><stream:stream<br /> to='ziz-wrks-tfsxp1'<br
2010-07-14 11:43:00
1348
转载 gloox代码分析2 - xml parser模块
<br />gloox自己实现了xml的解析模块,没有用到第三方的库(tinyXML,expat )<br />主要涉及的文件:<br />tag.h (tag.cpp)<br />taghandler.h<br />parser.h (parser.cpp)<br /><br />1. Tag一个Tag就是一个XML元素<br />例如:<br />a. <br /><book kind='computer'><br /><store id='23'/><br /><author><br /> qi
2010-07-14 11:32:00
1014
转载 gloox代码分析1 - connect模块
<br />主要分析gloox的connect模块,涉及的文件:<br />connectionbase.h<br />connectiondatahander.h<br />connectionhandler.h<br />connectiontcpbase.h (connectiontcpbase.cpp)<br />connectiontcpclient.h (connectiontcpclient.cpp)<br />connectiontcpserver.h (connectiontcpserve
2010-07-14 11:30:00
994
原创 XMPP客户端库资料
<br /> 最近需要做一个IM即时聊天工具项目, 上网搜集了一些关于XMPP方面的资料, 将C/C++客户端库都列出来了, 由于E文水平不好, 可能有许不多正确地方, 见笑了!!!<br /> <br />gloox<br />gloox是一个稳定功能完整的XMPP客户端库, 使用ANSI C++编写, 使用它编写标准客户非常容易, 并能将Jabber/XMPP功能集成到现有的应用程序中, gloox遵循GNU GPL许可协议, 支持商业许可.<br />特点:<br /> 1. 易于使用
2010-07-14 11:28:00
2429
1
转载 在VC中如果实现GIF的播放?
void CImageView::OnDraw(CDC* pDC) { CImageDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here
2010-03-29 09:25:00
554
原创 内存分配函数总结
内存分区:1)、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2)、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。3)、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻
2010-02-10 10:47:00
845
转载 HeapAlloc和GlobalAlloc以及VirtualAlloc三者之间的关系
VirtualAlloc一次分配1PAGE以上的RAM. 每次分配都是PAGE的整数倍.你不会想为了分配1个BYTE的空间而浪费剩下的4095字节. OK. 你可以自己写算法,多分配几PAGE. 然后每次分配少量数据时就从那几PAGE中划分出来. 什么? 你笨到不会写分配算法? 好巴 KERNEL32给你一个解决办法. 用HeapAlloc/GlobalAlloc分配RAM. 这样,KERNEL3
2010-02-04 08:46:00
529
原创 动态调用Web Service及C#反射返回类或List对象问题解决
今天跟同事闲聊时, 谈到动态web Service返回类和list对象处理问题, 开始以为和静态调用一样的,先建立一个跟服务器端返回类型相同字段的类(因为是动态调用的,所以没有在本地生成代理类, 无法使用服务器端类型.), 然后将返回的object类型强制转换为需要的类型就行了, 谁知道实行起来还不是那回事了,不论如何转换返回的都是null, 如下图: 上网goo
2010-01-22 17:23:00
5759
原创 利用SMTP发送Mail详解(三)
5). DIGEST-MD5认证方式DIGEST-MD5认证也是Challenge/Response的方式, 与CRAM-MD5相比, 它的Challenge信息更多, 其Response计算方式也非常复杂, 我在测试时也是以认证失败而告终, 只是将在网上找到的资料整理于此, 能为后来研究的人多提供点资料, 或者有兴趣的朋友们可以和我一起讨论下.我们先看下DIGEST-MD5认证发送响
2010-01-09 13:02:00
4888
原创 利用SMTP发送Mail详解(二)
3. SMTP身份认证SMTP身份认证方式有很多种, 每种认证方式验证发送的信息都有点细微的差别, 这里我主要介绍下LOGIN,PLAIN及NTLM三种简单的认证方式, 附带CRAM-MD5和DIGEST-MD5方式(验证没通过, 不知道问题出在哪了? 有待高人帮忙解决!).要进行身份认证, 先要知道当前SMTP服务器支持哪些认证方式, 在ESMTP中有个与HELO命令相同功能的命
2010-01-09 11:17:00
5667
1
原创 利用SMTP发送Mail详解(一)
<!--v/:* {behavior:url(#default#VML);}o/:* {behavior:url(#default#VML);}w/:* {behavior:url(#default#VML);}.shape {behavior:url(#default#VML);}--> Normal 0 7.8 磅 0 2
2010-01-09 11:02:00
8373
原创 Sendmail提示身份验证失败问题解决
问题描述: SendMail安装成功并已启动,利用foxmail可以收发Mail, 只是当选中“SMTP服务器需要身份验证”是,发送mail总是验证失败, 使用telnet登陆smtp服务器,输入ehlo ip返回信息如下:250-ENHANCEDSTATUSCODES250-PIPELINING250-8BITMIME250-SIZE250-DSN250-ETRN
2009-12-26 13:53:00
5393
原创 服务器/客户端时间同步
最近因工作原因,需要客户端计算机与FTP服务器时间上进行同步,上网搜集了些时间同步的方法记录下来, 以备不需之用!1.时间协议(TIME protocol) 时间协议(TIME protocol)是一个在RFC 868内定义的网络协议。它用作提供机器可读的日期时间资讯。 时间协议可以在TCP或UDP上使用。在TCP上,主机会连接支援时间协议的服务器的TCP埠 37。
2009-12-23 10:47:00
6652
VS2019开发工具.7z
2020-12-14
unity 2019-2020需要的ndk-r19.0.5232133
2020-12-09
windows nt 2000 native api reference
2010-06-22
Windows核心编程4
2008-01-16
Windows核心编程3
2008-01-16
Windows核心编程2
2008-01-16
Windows核心编程1
2008-01-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人