代码改变世界

zookeeper_process内存泄露问题

2016-06-23 13:22 by DVwei, 815 阅读, 0 推荐, 收藏, 编辑
摘要:单线程模式下,不能递归调用zookeeper_process函数,否则会造成内存泄露。 下列图是在watcher中调用zookeeper_process时,用valgrind检测到的情况: 阅读全文

手机靓号筛选——正则表达式

2014-06-16 09:14 by DVwei, 574 阅读, 0 推荐, 收藏, 编辑
摘要:AAAA: (1\d{2})\d{4}([\d])\2{3}AAA: (1\d{2})\d{5}([\d])\2{2}ABCD: (1\d{2})\d{4}(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)){3}\dD... 阅读全文

ZeroMQ总结

2014-03-18 16:48 by DVwei, 8170 阅读, 1 推荐, 收藏, 编辑
摘要:Socket typesThread safety: ZeroMQ的socket是非线程安全的,并且ZeroMQ本身不建议在多个线程中传递同一个Socket,即使保证了线程同步。Socket types: ZeroMQ一共具有12种类型的socket,5种消息模式。请求/应答模式:ZMQ_REQ、ZMQ_REP、ZMQ_DEALER、ZMQ_ROUTER发布/订阅模式:ZMQ_PUB、ZMQ_S... 阅读全文

基于Poco的UTF8、UTF16、GBK、Hex之间的转换

2014-02-17 09:41 by DVwei, 2626 阅读, 0 推荐, 收藏, 编辑
摘要:/******Encoding.h*******/#include "Poco/UnicodeConverter.h"#include "Poco/Exception.h"#include "Poco/DigestEngine.h"#define MyLib_API Foundation_APIusing namespace Poco;POCO_DECLARE_EXCEPTION(MyLib_API, EncodeException, Exception)class Encoding{public: enum ByteOrderTyp 阅读全文

使用_snscanf_s转换十六进制时引起的内存越界

2014-02-10 15:51 by DVwei, 728 阅读, 0 推荐, 收藏, 编辑
摘要://将Hex编码转换为指定编码格式的字符串string Encoding::DecodeHexString(const string &strSrc, UINT code_page ){ string::size_type length = strSrc.length() / 2; char *result = new char[length + 1]; ZeroMemory(result, length + 1); const char* str = strSrc.c_str(); for(string::size_type i = 0; i < length;... 阅读全文

C++多线程环境下注意共享资源的释放顺序

2013-11-16 21:45 by DVwei, 938 阅读, 0 推荐, 收藏, 编辑
摘要:比如我现在写一个多线程下载程序,包含DownloadTask、HttpDownload两个类。class DownloadTask{ //省略n行代码public: int m_threads;//需创建的线程总数 CCriticalSection m_cs;//临界区 void Stop();};class HttpDownload{ //省略n行代码 HttpDownload(DownloadTask* task): m_task(task) { }public: DownloadTask* m_task; void Start();/... 阅读全文

解决ERROR_INVALID_USER_BUFFER

2013-11-16 20:57 by DVwei, 1683 阅读, 0 推荐, 收藏, 编辑
摘要:我用CSocket编写了一个HTTP下载程序,接收数据大概如下://......//use CSocket class//send request...//......int recevieSize(1);while(recevieSize > 0){ ZeroMemory(buff, BUFFSIZE + 1); receviedSize = socket.Receive(buff, BUFFSIZE); if(receivedSize > 0) { //use CFile class downloadFile.Write(buff, re... 阅读全文

VC++使用CSocket发送HTTP Request时需要注意发送数据的编码格式

2013-10-29 21:04 by DVwei, 694 阅读, 0 推荐, 收藏, 编辑
摘要:VS2010以及更高版本中新建的MFC项目字符集默认是Unicode,CString创建的字符串默认是Unicode。使用CSocket时,若以CString组织需要发送的HTTP Head时,那么服务器不会接受这种数据,会强制断开连接。HTTP服务器的默认读取方式是基于char type的单字节字符串编码(ANSI-1Byte(8bit)/char(英文字符)),而Unicode是以2Byte(16bit)/char存储的,所以不能以unicode编码来构造HTTP Head.解决方法有两种,第一种:以CStringA class构造HTTP Head;根据MSDN上的解释:“A CStri 阅读全文

C++/CLI中class成员声明与实现分开在不同文件时必须添加namespace

2013-10-23 17:53 by DVwei, 551 阅读, 0 推荐, 收藏, 编辑
摘要:以下是我的代码://TaskConfigFile.h#pragma onceusing namespace System::Collections::Generic;using namespace System;using namespace System::IO;using namespace System::Text;ref class TaskConfigFile{public: TaskConfigFile(); TaskConfigFile(String^ str_link, Int64 file_size, short threads_sum); TaskConf... 阅读全文

lseek函数与文件空洞

2013-10-16 21:14 by DVwei, 875 阅读, 0 推荐, 收藏, 编辑
摘要:在UNIX/LINUX系统中,文件位移量可以大于文件的当前长度,这种情况下向文件中写入数据就会产生文件空洞(hole),这些没写入数据的文件空洞部分默认会被0填满。虽然这些文件空洞并没有实际的数据,但是它们仍然占据硬盘空间。 在Windows下同样支持这种文件空洞,以下简单的代码产生一个6KB的空洞文件:#include #include using namespace std;int _tmain(int argc, _TCHAR* argv[]){ CFile testFile(_T("D:\\test"), CFile::modeCreate | CFile::mod 阅读全文