自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 2345

转载 怎样重建一个损坏的调用堆栈(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 624

转载 C/C++中手动获取调用堆栈

当我们的程序core掉之后,如果能获取到core时的函数调用堆栈将非常有利于定位问题。在Windows下可以使用SEH机制;在Linux下通过gdb使用coredump文件即可。但有时候由于某些错误导致堆栈被破坏,发生拿不到调用堆栈的情况。一些基础预备知识本文不再详述,可以参考以下文章:函数调用栈的获取原理分析寄存器、函数调用与栈帧需要知道的信息:函数调用对

2015-01-29 18:40:27 759

转载 函数调用栈的获取原理分析

上一篇文章《在Linux程序中输出函数调用栈》,讲述了在Linux中如何利用backtrace获取调用栈,本篇文章主要介绍一下获取函数调用栈的原理,并给出相应的实现方式。要了解调用栈,首先需要了解函数的调用过程,下面用一段代码作为例子:#include int add(int a, int b) { int result = 0; result = a + b

2015-01-29 17:56:53 2684 2

转载 在Linux程序中输出函数调用栈

程序发生异常时,将函数的调用栈打印出来,可以大大提高定位效率。Linux中提供了三个函数用来获取调用栈:/* 获取函数调用栈 */int backtrace(void **buffer, int size);/* 将调用栈中的函数地址转化为函数名称 并返回一个字符串数组 */char **backtrace_symbols(void *const *buffer, int

2015-01-29 17:54:54 621

转载 windows下捕获dump

一般要捕获异常只需要两个函数:SetUnhandledExceptionFilter截获异常;MiniDumpWriteDump写dump文件。但是由于CRT函数可能会在内部调用SetUnhandledExceptionFilter(NULL),解除我们程序设置的异常处理,这导致我们的程序无法完整捕获崩溃。另外,还有一部分非异常的CRT错误,不属于SEH异常捕获的范畴,需要通过_set_inval

2015-01-29 17:46:48 541

原创 mysql_query函数中卡死

在上一个项目中碰到一个服务器无响应的问题,通过调试发现在执行mysql_query时没返回了,在等待某个内核事件,这个问题很难重现,一直没找到问题,今天看到论坛上也有朋友问到在mysql_query时无响应, 猜想是不是刚才在query的时候数据库连接断开了, 而在mysql_query中又没处理好这个问题,导致一直等待,先记录下来待验证,有兴趣的朋友可以一起讨论下

2015-01-29 16:57:18 1933 1

转载 为什么在mysql_query()返回成功后,mysql_store_result()有时会返回NULL

成功调用mysql_query()后,mysql_store_result()能够返回NULL。出现该情况时,表明出现了下述条件之一:·         出现了malloc()故障(例如,如果结果集过大)。·         无法读取数据(在连接上出现了错误)。·         查询未返回数据(例如,它是INSERT、UPDATE或DELETE)。通过调用mysq

2015-01-29 16:46:22 2137

转载 解决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 1075

转载 如何定位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 565

转载 android和iOS平台的崩溃捕获和收集

通过崩溃捕获和收集,可以收集到已发布应用(游戏)的异常,以便开发人员发现和修改bug,对于提高软件质量有着极大的帮助。本文介绍了iOS和android平台下崩溃捕获和收集的原理及步骤,不过如果是个人开发应用或者没有特殊限制的话,就不用往下看了,直接把友盟sdk(一个统计分析sdk)加入到工程中就万事大吉了,其中的错误日志功能完全能够满足需求,而且不需要额外准备接收服务器。  但是如果你对其原理更感

2015-01-04 11:21:10 627

转载 关于使用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 3154 1

原创 C++对象布局及多态实现

C++对象布局方式

2011-04-01 10:30:00 569

转载 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 814

转载 C++内存管理之一(检测内存泄露)

<br />  C++程序的复杂性很大一部分在于他的内存管理,没有C#那样的垃圾回收机制,内存管理对初学者来说很困难。经常会出现内存泄露的情况。那么我们写程序如何避免内存泄露呢?首先我们需要知道程序有没有内存泄露,然后定位到底是哪行代码出现内存泄露了,这样才能将其修复。<br /> 本文描述了如何检测内存泄露。最主要的是纯C,C++的程序如何检测内存泄露。<br /> 现在有很多专业的检测工具,比如比较有名的BoundsCheck, 但是这类工具也有他的缺点,我认为首先Bound

2010-10-19 09:20:00 664

原创 SkinMagic使用方法总结--SetSingleDialogSkin断言失败

<br />      以前一直没有接触过皮肤库这玩意, 最近做一个im项目需要用到皮肤库了,  我们公司用的是SkinMagic,  关于SkinMagic的安装和使用方法, 网上有很多教程, 在SkinMagicLib.h头文件里介绍也很详细, 这里就不重复了, 主要描述一下我在使用SkinMagic碰到过的问题. 刚开始使用SkinMagic库时, 觉得它很简单(基本使用确实是很简单的, -_-),  一眼就扫完了它所包含的几个常用函数:<br /> <br />       InitSkinMagi

2010-09-17 15:44:00 2445 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 4002 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 947

原创 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 5533

转载 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 1086

原创 理解C++实现委托原理

<br />      在C#中有事件委托的概念,  我们可以方便的将一个类中的事件传递到另一个事件处理类中, 其实现的耦合性很底, 两个类之间不需要实例关联,  但在C++中并没有这种内置的功能,  其实仔细想想, C#的这种事件委托机制是可以用C++的成员函数指针来实现的, 只需要加上一个中间类即可,  网上有个FastDelegate的开源库就实现了这种委托机制, 有需要用到C++委托的朋友可以上网找找这个库.  我们这里只是简单介绍下C++实现委托机制的原理, 也是参照了FastDelegate库.

2010-09-06 09:57:00 1616

原创 理解C++成员函数指针

成员函数定义, 赋值, 调用方式及注意事项

2010-09-06 09:19:00 897

转载 gloox接收消息

<br />通过前面的描述,当和服务器建立了连接之后,就可以和服务器进行通讯了,今天先说一下接收远端发送来的文本消息的方式吧。<br />在接收消息之前,需要明确一件事情,就是一旦你登陆至服务器之后,随时有可能有人人给你发来消息,所以应该考虑的是你需要做一个死循环,不断的监听消息,如果有消息之后,根据消息的不同形式,处理它。当然不用担心,觉得用个死循环很影响效率,实际上做过socket的 就明白了,当你调用接收消息的函数时,是会阻塞的,如果没有消息,就阻塞,这样就不会浪费资源了。另外由于阻塞的缘故,所以我们

2010-07-14 11:49:00 1103

原创 Gloox发送消息

<br />Gloox发消息很简单,通过前面的接消息的描述,当需要与远端进行通话时,建立一个MessageSession会话,一旦你拥有这样的一个会话对象了,就可以调用其中的send方法来向远端发送消息了。那么这个MessageSession如何获得呢?<br />通过前面接消息的描述,如果是远端先给你发了消息,此时gloox后台就会创建一个MessageSession对象出来,而如果你收到这个MessageSession传来的消息之后,如果不将其删除,并且通过某种数据结构,如STL中的map,其关键字是远

2010-07-14 11:48:00 1103

转载 gloox连接至服务器端

<br />在使用gloox之前,有必要先提一下XMPP协议这个东东。<br />XMPP协议是一个基于互联网的即时通信标准协议。它采用XML技术,以文本的方式传输即时消息。支持动态自定义扩展应用。与传统的网络协议相比,如QQ等,XMPP协议并不是一个基于二进制方式实现的协议,而是基于XML技术的文本方式,也就是说如果不采用加密技术的话,是可以直接查看发送的消息的。XMPP协议通过定义一些XML的节点关键字,来表明消息发送信息,并与其它协议能够有效的结合,总的说来,XMPP协议是一种很不错的准实时消息协议标

2010-07-14 11:47:00 1114

转载 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 915

转载 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 1425

转载 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 1067

转载 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 1024

原创 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 2483 1

转载 XMPP协议内容

XMPP协议网址大全

2010-07-12 17:25:00 1641

转载 在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 602

原创 内存分配函数总结

内存分区:1)、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2)、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。3)、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻

2010-02-10 10:47:00 933

转载 HeapAlloc和GlobalAlloc以及VirtualAlloc三者之间的关系

VirtualAlloc一次分配1PAGE以上的RAM. 每次分配都是PAGE的整数倍.你不会想为了分配1个BYTE的空间而浪费剩下的4095字节. OK. 你可以自己写算法,多分配几PAGE. 然后每次分配少量数据时就从那几PAGE中划分出来. 什么? 你笨到不会写分配算法? 好巴 KERNEL32给你一个解决办法. 用HeapAlloc/GlobalAlloc分配RAM. 这样,KERNEL3

2010-02-04 08:46:00 547

原创 动态调用Web Service及C#反射返回类或List对象问题解决

    今天跟同事闲聊时, 谈到动态web Service返回类和list对象处理问题, 开始以为和静态调用一样的,先建立一个跟服务器端返回类型相同字段的类(因为是动态调用的,所以没有在本地生成代理类, 无法使用服务器端类型.), 然后将返回的object类型强制转换为需要的类型就行了, 谁知道实行起来还不是那回事了,不论如何转换返回的都是null, 如下图:      上网goo

2010-01-22 17:23:00 5879

原创 利用SMTP发送Mail详解(三)

5). DIGEST-MD5认证方式DIGEST-MD5认证也是Challenge/Response的方式, 与CRAM-MD5相比, 它的Challenge信息更多, 其Response计算方式也非常复杂, 我在测试时也是以认证失败而告终, 只是将在网上找到的资料整理于此, 能为后来研究的人多提供点资料, 或者有兴趣的朋友们可以和我一起讨论下.我们先看下DIGEST-MD5认证发送响

2010-01-09 13:02:00 6180

原创 利用SMTP发送Mail详解(二)

3. SMTP身份认证SMTP身份认证方式有很多种, 每种认证方式验证发送的信息都有点细微的差别, 这里我主要介绍下LOGIN,PLAIN及NTLM三种简单的认证方式, 附带CRAM-MD5和DIGEST-MD5方式(验证没通过, 不知道问题出在哪了? 有待高人帮忙解决!).要进行身份认证, 先要知道当前SMTP服务器支持哪些认证方式, 在ESMTP中有个与HELO命令相同功能的命

2010-01-09 11:17:00 6221 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 9335

原创 Sendmail提示身份验证失败问题解决

问题描述: SendMail安装成功并已启动,利用foxmail可以收发Mail, 只是当选中“SMTP服务器需要身份验证”是,发送mail总是验证失败, 使用telnet登陆smtp服务器,输入ehlo ip返回信息如下:250-ENHANCEDSTATUSCODES250-PIPELINING250-8BITMIME250-SIZE250-DSN250-ETRN

2009-12-26 13:53:00 5631

原创 服务器/客户端时间同步

最近因工作原因,需要客户端计算机与FTP服务器时间上进行同步,上网搜集了些时间同步的方法记录下来, 以备不需之用!1.时间协议(TIME protocol)    时间协议(TIME protocol)是一个在RFC 868内定义的网络协议。它用作提供机器可读的日期时间资讯。    时间协议可以在TCP或UDP上使用。在TCP上,主机会连接支援时间协议的服务器的TCP埠 37。

2009-12-23 10:47:00 6778

VS2019开发工具.7z

vs2019常用的工具, va+everything, 亲测在vs2019下可用, 具体安装详情见文档, 版本不是最新的,插件中应该有使用过期的api, 第一次会有警告提示,直接忽略即可

2020-12-14

unity 2019-2020需要的ndk-r19.0.5232133

unity打包android所需要的ndk-r19.0.5232133, 在windows下对2019.4.7f1和2020.1.0f1亲测确定可试用

2020-12-09

Filemon和regmon的src

著名的文件监控软件filemon和注册监控软件regmon源码

2010-07-02

windows nt 2000 native api reference

大多数Native API是Microsoft尚未文档化的(Undocument),Gary Nebbett写的这本非常酷的参考手册<<Windows NT 2000 Native API Reference>>, 一切可以从书中找到答案.

2010-06-22

使用GDI+播放GIF动画

gdi生成gif动画类, 使用非常简单!!!

2010-03-29

VC文档自动生成器源码

VC++实现,根据文档注释自动生成doc文档,免去了程序员手动写说明文档

2010-01-15

多显示器编程源码下载

VC实现多屏显示控制源码, 对要实现显示器控制很有帮助

2010-01-15

tinyxml

C/C++读写xml库,轻量级xml库,读写速度快

2008-01-16

Wrox.Silverlight.1.9iv

Silverlight入门教程(英文)

2008-01-16

API开发FTP

API开发FTP方法及访问函数

2008-01-16

Windows核心编程4

本书是讲解Windows 操作系统内部机制的专著,作者从基本概念入手,全面系统地介绍了Windows的各种基本构件,如进程、线程、DLL和内存管理等,并列举了大量应用程序,精辟地分析了构件的使用方法,为掌握Windows 编程技巧提供了一条有效的捷径。对于不同水平的Windows 编程人员来说,本书都具有极好的参考价值。

2008-01-16

Windows核心编程3

本书是讲解Windows 操作系统内部机制的专著,作者从基本概念入手,全面系统地介绍了Windows的各种基本构件,如进程、线程、DLL和内存管理等,并列举了大量应用程序,精辟地分析了构件的使用方法,为掌握Windows 编程技巧提供了一条有效的捷径。对于不同水平的Windows 编程人员来说,本书都具有极好的参考价值。

2008-01-16

Windows核心编程2

本书是讲解Windows 操作系统内部机制的专著,作者从基本概念入手,全面系统地介绍了Windows的各种基本构件,如进程、线程、DLL和内存管理等,并列举了大量应用程序,精辟地分析了构件的使用方法,为掌握Windows 编程技巧提供了一条有效的捷径。对于不同水平的Windows 编程人员来说,本书都具有极好的参考价值。

2008-01-16

Windows核心编程1

本书是讲解Windows 操作系统内部机制的专著,作者从基本概念入手,全面系统地介绍了Windows的各种基本构件,如进程、线程、DLL和内存管理等,并列举了大量应用程序,精辟地分析了构件的使用方法,为掌握Windows 编程技巧提供了一条有效的捷径。对于不同水平的Windows 编程人员来说,本书都具有极好的参考价值。

2008-01-16

空空如也

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

TA关注的人

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