DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

随笔分类 -  C++/C

上一页 1 ··· 27 28 29 30 31 32 33 34 35 ··· 47 下一页

摘要:此线程池所依赖的线程类,请参看《一个Windows C++的线程类实现》:http://blog.csdn.net/huyiyang2010/archive/2010/08/10/5801597.aspxSystemThreadPool.h[cpp]view plaincopy #define__SYSTEM_THREAD_POOL__#include"Thread.h"#include#includeclassCThreadPoolExecutor{public:CThreadPoolExecutor(void);~CThreadPoolExecutor(void);/* 阅读全文
posted @ 2013-09-18 16:27 DoubleLi 阅读(1061) 评论(0) 推荐(0)

摘要:Thread.h[cpp]view plaincopy #ifndef__THREAD_H__#define__THREAD_H__#include#include#includeclassRunnable{public:virtual~Runnable(){};virtualvoidRun()=0;};classCThread:publicRunnable{private:explicitCThread(constCThread&rhs);public:CThread();CThread(Runnable*pRunnable);CThread(constchar*ThreadName 阅读全文
posted @ 2013-09-18 16:26 DoubleLi 阅读(7869) 评论(2) 推荐(1)

摘要:此线程池所依赖的线程类,请参看《一个Windows C++的线程类实现》:http://blog.csdn.net/huyiyang2010/archive/2010/08/10/5801597.aspxThreadPoolExecutor.h[cpp]view plaincopy #ifndef__THREAD_POOL_EXECUTOR__#define__THREAD_POOL_EXECUTOR__#include"Thread.h"#include#include#includeclassCThreadPoolExecutor{public:CThreadPoolE 阅读全文
posted @ 2013-09-18 16:25 DoubleLi 阅读(15180) 评论(2) 推荐(0)

摘要:本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关。另外该线程池具有动态伸缩性,它能根据执行任务的轻重自动调整线程池中线程的数量。文章的最后,我们给出一个简单示例程序,通过该示例程序,我们会发现,通过该线程池框架执行多线程任务是多么的简单。为什么需要线程池目前的大多数网络服务器,包括Web服务器、Email服务器以及数据库服务器等都具有一个共同点,就是单位时间内必须处理数目巨大的连接请求,但处理时间却相对较短。传统多线程方案中我们采用的服务器模型则是一旦接受到请求之后,即创建一个新的线程,由该线程执行任务。任务执行完毕后,线程退出,这就是是 阅读全文
posted @ 2013-09-18 14:40 DoubleLi 阅读(30821) 评论(6) 推荐(3)

摘要:1、new 是c++中的操作符,malloc是c 中的一个函数2、new 不止是分配内存,而且会调用类的构造函数,同理delete会调用类的析构函数,而malloc则只分配内存,不会进行初始化类成员的工作,同样free也不会调用析构函数3、内存泄漏对于malloc或者new都可以检查出来的,区别在于new可以指明是那个文件的那一行,而malloc没有这些信息。4.new可以看成两个动作:1。分配内存(相当于malloc)2。引发构造函数。 new 是个操作符,和什么"+","-","="...有一样的地位. malloc是个分配内存的 阅读全文
posted @ 2013-09-17 11:26 DoubleLi 阅读(1409) 评论(0) 推荐(0)

摘要:目前知道有两种方式:可以提供宽字符与ANSI字符之间的转换, 第一种由COM库提供的函数 char* _com_util::ConvertBSTRToString(BSTR ); BSTR _com_util::ConvertStringToBSTR(char*); Example // ConvertBSTRToString.cpp #include #include #pragma comment(lib, "comsupp.lib") int main() { BSTR bstrText = ::SysAllocString(L"Test"); w 阅读全文
posted @ 2013-09-17 09:29 DoubleLi 阅读(2640) 评论(0) 推荐(0)

摘要:在C++中有两种类型可以用于表示字符,char和wchar_t。但是字符串格式的标准却有很多种,如ASCII,UTF8,UTF16,UTF32等等。字符串的格式和char/wchar_t 的关系是什么呢?首先要理解Unicode和UTF-8的关系,可以参考我转帖的文章:http://www.cnblogs.com/whyandinside/archive/2012/02/05/2338841.html额外还有几个问题需要解决:1. UCS-2、UCS-4、BMPUCS有两种格式:UCS-2和UCS-4。顾名思义,UCS-2就是用两个字节编码,UCS-4就是用4个字节(实际上只用了31位,最高位 阅读全文
posted @ 2013-09-17 09:19 DoubleLi 阅读(1187) 评论(0) 推荐(0)

摘要:转自:http://apps.hi.baidu.com/share/detail/17798660字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得字符编码的知识。不注意的人可能对这个不在意,但这些名词有时候实在让人迷惑,对想学习计算机知识的人来说,搞懂它也十分重要,我也是在学习中慢慢了解了一些这方面的知识。1. ASCII码 在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符 阅读全文
posted @ 2013-09-17 09:16 DoubleLi 阅读(835) 评论(0) 推荐(0)

摘要:GDI+所有类的接口函数如果要传递字符串作为参数的话,似乎都用UNICODE串,即WCHAR*。我开始也被整得晕头转向,因为窗口编程所用往往是CString,用IO流读文件数据又得到char *。得益于网上牛人们的总结,我用到以下几种基本方法去实现三者间的转换:代码段一:char * 转WCHAR *:::MultiByteToWideChar(CP_ACP,0,(const char *)res,int count,char * dest,int count);类似地,WCHAR *转char *:WideCharToMultiByte(CP_ACP, 0,.........);CStrin 阅读全文
posted @ 2013-09-16 17:55 DoubleLi 阅读(13139) 评论(0) 推荐(0)

摘要:一、文件的复制#include #include using namespace std;int CopyFile(char *SourceFile,char *NewFile){ifstream in;ofstream out;in.open(SourceFile,ios::binary);//打开源文件if(in.fail())//打开源文件失败{ cout>source;cout>NewFile;if(CopyFile(source,NewFile)){ cout#include #include void main(){char source[256];//文件路径cout 阅读全文
posted @ 2013-09-16 17:46 DoubleLi 阅读(1693) 评论(0) 推荐(0)

摘要:(1) 使用ANSI C的库函数 可以使用ANSI C的以下几个库函数: FILE *fopen( const char *filename, const char *mode ); int fclose( FILE *stream ); size_t fread( void *buffer, size_t size, size_t count, FILE *stream ); size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream ); 示例源码如下:/* cpc.c use c... 阅读全文
posted @ 2013-09-16 17:28 DoubleLi 阅读(1759) 评论(0) 推荐(0)

摘要:C++实现线程池。 欢迎转载,转载请注明原出处:http://blog.csdn.net/ithzhang/article/details/9020283 代码地址:https://github.com/ithzhang/ThreadpoolLib.git本文介绍的线程池采用C++语言,在windows平台下实现。此版本为Version1.0,以后还会推出功能更完备的后续版本。本着技术分享的精神写作本文同时公布源代码。欢迎大家指出该线程池存在的问题并对当前性能进行讨论。 适用场景: 1.需要大量的线程来完成任务,且完成任务的时间比较短。 2.对性能要求苛刻的应用,比如要求服务... 阅读全文
posted @ 2013-09-15 00:02 DoubleLi 阅读(6318) 评论(0) 推荐(0)

摘要:关于Char* ,CString ,WCHAR*之间的转换问题GDI+所有类的接口函数如果要传递字符串作为参数的话,似乎都用UNICODE串,即WCHAR*。我开始也被整得晕头转向,因为窗口编程所用往往是CString,用IO流读文件数据又得到char *。得益于网上牛人们的总结,我用到以下几种基本方法去实现三者间的转换:char * 转WCHAR *:::MultiByteToWideChar(CP_ACP,0,(const char *)res,int count,char * dest,int count);类似地,WCHAR *转char *:WideCharToMultiByte(C 阅读全文
posted @ 2013-09-14 23:44 DoubleLi 阅读(956) 评论(0) 推荐(0)

摘要:Q UNICODE字符串如何显示 A 如果程序定义了_UNICODE宏直接用 WCHAR *str=L"unicodestring"; TextOut(0,0,str); 否则就需要转换类型 #include WCHAR *str=L"unicodestring"; bstr_t str1=str; TextOut(0,0,(char*)str1); Q 如何实现ANSI和UNICODE的相互转换 A 将ANSI转换到Unicode (1)通过L这个宏来实现,例如: CLSIDFromProgID( L"MAPI.Folder",&a 阅读全文
posted @ 2013-09-14 22:49 DoubleLi 阅读(733) 评论(0) 推荐(0)

摘要:http://blog.csdn.net/ithzhang/article/details/7916732转载请注明出处!!第二章:字符和字符串处理 使用vc编程时项目--》属性--》常规栏下我们可以设置项目字符集合,它可以是ANSI(多字节)字符集,也可以是unicode字符集。一般情况下说Unicode都是指UTF-16。也就是说每个字符编码为两个字节。65535个字符可以表示世界上大部分的语言。为了软件使国际化大家再编程时应该使用unicode字符集。由于原来学过c语言,不习惯使用Unicode,为了省事而直接在配置属性里调为多字节字符集,这是个不好的习惯。C语言的字符串,以及对这些字符 阅读全文
posted @ 2013-09-14 22:35 DoubleLi 阅读(405) 评论(0) 推荐(0)

摘要:这篇文章是我两年多前写给同事看的,当时不少同事对编码了解甚少,直到现在发现还是很多人对编码了解甚少,所以我就把这篇文章发出来让大家参考一下,希望对一些人有帮助,不过这篇文章是当时花了3个小时左右写的,错误在所难免。字符编码历史计算机,发明在20世纪中期西方国家。计算机内部使用二进制作为表示任何东西的基础,为了能够在计算机中使用整数、浮点数等都要对其进行编码,只是这个编码是在硬件层的(CPU指令),而计算机要与人进行交互就要对人所能识别的文字进行编码,ASCII就在那个时候诞生。ASCII(AmericanStandardCodeforInformationInterchange,美国信息互换标 阅读全文
posted @ 2013-09-12 20:56 DoubleLi 阅读(771) 评论(0) 推荐(1)

摘要://========================================================================//TITLE:// MultiByteToWideChar和WideCharToMultiByte用法详解//AUTHOR:// norains//DATE:// 第一版:Monday 25-December -2006// 增补版:Wednesday 27-December -2006// 修订版:Wednesday 14-March-2007 (修正之前的错误例子)//Environment:// EVC4.0 + Standard SDK/ 阅读全文
posted @ 2013-09-12 17:16 DoubleLi 阅读(561) 评论(0) 推荐(0)

摘要:最近的一个项目,是开发一个framework,提供给公司内部不同的产品线使用。 之间遇到的一个问题,就是STL容器的使用, 而结论是不要在公共接口中传递STL容器:这里说的STL容器,但主要则是指容器,字符串类,但其实可以推广到在STL中提供的任何类型,这里说的公共接口,是指需要暴露给客户的sdk头文件,包括函数签名,或者类成员变量;也可以说,不要在暴露给客户的头文件中包含STL的头文件。原因分析为什么有这个结论,我们可以从几个方面来论述:客户端使用的STL版本可能不同因为STL作为标准库,Framework编译的时候使用的STL,与客户端编译的时候使用的STL,版本是有可能不一样的,比如Fr 阅读全文
posted @ 2013-09-04 10:03 DoubleLi 阅读(838) 评论(0) 推荐(0)

摘要:今天在写一个函数,需要将map作为一个引用参数传入函数体内部进行赋值,结果编译通过,执行时总是崩溃,在网上找到了一些作者写的blog,详细解释了这种情况发生的原因,特转载在这里,便于自己今后查询。原文1:有一个功能模块, 本来是写在主程序当中. 现在觉得有必要将它写成一个 DLL. 于是开始代码的移植. 费了好大的劲. 终于移植完成, 通过编译了. 这时运行程序, CRASH!调试之, 发现是在一个 map 的赋值出现了问题.看 vc6 自带的 STL 的代码:map 的赋值操作, 也就是其中的树赋值操作._Myt& operator=(const _Myt& _X){ _Tr 阅读全文
posted @ 2013-09-04 09:48 DoubleLi 阅读(3196) 评论(0) 推荐(0)

摘要:百度了一天,现在把结论放上边:1、不要用STL(std::string属于STL)来跨模块传输数据,例如:dll(so)之间,dll(so)和exe(elf)之间。解决方法:使用基本类型、数组、结构体,或者使用下面文章中的方法。2、不要跨模块申请和释放内存。解决方法:可以实现一个接口来释放,其他方法参考下面。今天用个测试exe调用了个dll,有个接口返回std::string,经调试发现挂在该函数return之后,怀疑是string不适合作为返回值,百度一番发现下面这篇解释的很详细。用了很久的dll也会出问题,而且他们用没事,他们用的是vs2010未升级,我怀疑是vs2010升级sp1后和之前 阅读全文
posted @ 2013-09-04 09:46 DoubleLi 阅读(1089) 评论(0) 推荐(0)

上一页 1 ··· 27 28 29 30 31 32 33 34 35 ··· 47 下一页