- 博客(14)
- 资源 (40)
- 收藏
- 关注
原创 一例MSVC2013中recursive_mutex引起崩溃的原因分析
复现方法:CUI程序,DLL中的全局对象在析构时调用recursive_mutex::lock()函数,运行时通过Ctrl+C触发。原因分析:DLL被释放时,会自动析构所有的全局对象。由于Ctrl+C的实现为系统创建一个远程线程调用dllmain并析构全局对象,而这个远程线程缺少一些必要的初始化过程,造成recursive_mutex::lock()函数崩溃。以下是分析时的
2015-07-25 11:17:21
1175
原创 OpenSSL裁剪编译
一、准备事项:1. http://www.curl.haxx.se/ 下载 cURL 源码,\projects\build-openssl.bat 即 OpenSSL 的编译批处理。2. http://www.openssl.org/ 下载 OpenSSL 源码。二、重要文件:1. \ms\do_ms.bat 生成 mak 文件的批处理。2. \ms\nt.mak 静态
2014-08-18 15:45:18
2865
原创 HTTP劫持与DNS穿透
客户端软件经常会采用HTTP协议与服务器进行通讯。大多数情况下,服务器会要求客户端使用域名而不是IP。这样就存在“HTTP劫持”的问题,恶意程序在本地或者路由重定向域名所指的IP,以达到欺骗客户端的目的。使用“DNS穿透”技术解决“HTTP劫持”:1、客户端通过访问OpenDNS服务器或者PrivateDNS服务器进行域名解析;2、用域名解析所得到的IP地址替换原始域名;3、在HT
2014-05-05 18:30:11
2103
原创 高性能并发队列(C++实现)
算法参考:http://www.parallellabs.com/2010/10/25/practical-concurrent-queue-algorithm/注意:析构
2014-04-30 17:45:50
6591
原创 函数static变量的线程竞争问题
比如,单例模式一个简单实现:class CSingleton{public: static CSingleton* GetInstance() { static CSingleton *pInstance = new CSingleton(); return pInstance; } void PrintText() { std::cout << "Hello Wo
2014-01-18 11:37:01
711
原创 高精度定时器(Windows)
一个高精度定时器的C++实现。下载地址:http://download.csdn.net/detail/fdsdfdsf/6837703
2014-01-11 17:32:27
2969
原创 tr1::bind与tr1::function的用法与具体应用
关于tr1::bind及tr1::function的用法,请参考:http://blog.sina.com.cn/s/blog_5eb8ebcb0100tcty.html以下是实际工程中的代码,用于非窗口类(比如DirectUI库的页面类,这些类并不包含可以用来接收消息m_hWnd成员)创建一个隐藏窗口,并绑定成员方法到这个隐藏窗口的消息处理函数上。class CMessageWindow
2013-12-20 20:33:28
1352
原创 stringex - STL string 扩展库
std::string format(const char *fmt, ...) { va_list arg; va_start(arg, fmt); int len = _vscprintf_p(fmt, arg) + 1; std::auto_ptr<char> buf(new char[len]); _vsprintf_p(buf.get(), len, fmt, arg); va_end(arg); return buf.get(); } std::strin
2013-08-11 22:55:37
1360
原创 快速MD5计算
由Windows API实现的一个MD5计算函数,在Windows平台上比其他开源的MD5库快20%以上。下载地址:http://download.csdn.net/detail/fdsdfdsf/5771707
2013-07-17 18:11:32
1208
原创 Windows对话框程序的大小与DPI的关系
1、DPI:每英寸像素数。英寸是物理单位,像素是逻辑单位。2、Windows对话框程序有两种方式可以改变界面尺寸:(1)RC文件中定义对话框时设定的数值。单位是DLU,与对话框设定的字体大小成正比。(2)在WM_INITDIALOG消息中调用SetWindowPos函数。单位是像素。3、Windows字体单位是磅,1英寸等于72磅。当DPI改变时,字体大小会随之改变。因此,采用方式(1)定
2013-04-26 17:02:57
1087
原创 INI文件解析类
INI文件解析类,支持文件INI、内存INI,支持ANSI、UCS-2 Little Endian编码。1.0.0.4更新:(1)修改错误。(2)调整代码。欢迎留言讨论。下载地址:http://download.csdn.net/detail/fdsdfdsf/7103173
2013-04-03 11:42:59
964
原创 Windows程序的模块之间为什么不能使用STL容器作为参数
理论基础:1、Windows平台的C++ Runtime Library分为两种:Multi-threaded和Multi-threaded DLL。前者是静态库,会被链接到目标程序中;后者是动态链接库,目标程序运行时动态加载。2、Windows堆内存分为两类:默认堆和私有堆。其中默认堆在同一进程中可以跨模块访问,而私有堆只能在所属模块中进行访问。3、C++ Runtime Libra
2013-02-27 13:27:55
679
【周鸿祎自述:我的互联网方法论】完美epub版
2015-01-28
常用的网络操作源代码(包括DNS、PING等)
2014-03-26
Ping程序C语言实现
2014-01-27
Windows环境下32位汇编语言程序设计
2010-03-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人