随笔分类 -  C++

磕磕碰碰的Chrome之plugin开发
摘要:前言在Firefox下可用的npapi插件,在chrome下调用时遇到问题,于是尝试研究chrome下的ppapi插件,一路上真是磕磕碰碰,波折不断啊。阶段一、复用npapi尝试将npapi直接用在chrome中,结果在chrome://plugins页下能看到npapi的插件,调试时看到插件对象被... 阅读全文

posted @ 2014-11-21 17:29 Jingle Guo 阅读(11904) 评论(3) 推荐(0) 编辑

char*,wchar_t*,CString和BSTR之间的转换
摘要:前言本文并不尝试列举出所有的转换方法,只列举作者认为方便易用的方法。1.char*和wchar_t*的相互转换可以利用中间类_bstr_t(头文件comdef.h)方便的进行相互转换const wchar_t* wText = (_bstr_t)"测试";char* cText = (_bstr_t... 阅读全文

posted @ 2014-09-05 09:54 Jingle Guo 阅读(8094) 评论(4) 推荐(1) 编辑

C++陷阱之慎用string类
摘要:我们知道,string类为我们提供了很多的便利,我们用string类能方便的做字符串的各种操作,避免了我们直接操作char指针而产生的一些繁琐的操作,和内存泄露的可能性,可是string类也是有陷阱的。下面我们看这样一个例子,你能看出问题所在吗?string getString(){ return "just a test";}void test(){ const char *pc = getString().c_str(); cout<<pc<<endl;}如果看不出来可以实际运行一下,会发现输不出结果来,这是为什么呢?当我们写getString函 阅读全文

posted @ 2013-12-16 16:32 Jingle Guo 阅读(8710) 评论(34) 推荐(1) 编辑

类型解释器——C专家编程读书笔记
摘要:对于声明,应该按下面的步骤来进行解释:1) 声明从它的名字开始读取,然后按照优先级顺序依次读取2) 优先级顺序a) 括号括起来的部分b) 后缀操作符,()表示函数,[]表示数组c) 前缀操作符,*表示指针3) 如果const或volatile关键字后面紧跟类型说明符,那么他作用于类型说明符,其他情况下,作用于其左边紧邻的指针星号。根据这个原则,我们可以得到下面的代码#include #include #include #include #define MAXTOKENS 100#define MAXTOKENLEN 64enum type_tag { IDENTIFIER, QUALIFIER 阅读全文

posted @ 2013-11-29 14:52 Jingle Guo 阅读(279) 评论(0) 推荐(0) 编辑

BigInt的实现——C++编程风格读书笔记
摘要:C++编程风格这本书前面一些章节都觉得很简明易懂,但是读到效率这一章是才充分认识到读别人的代码还是很痛苦的一件事。书中给出的需要改进的初始类如下:class BigInt { private: char* digits; unsigned ndigits; BigInt(char *d,unsigned n) { digits = d; ndigits = n; } friend class DigitStream; public: BigInt(const char*); ... 阅读全文

posted @ 2013-11-27 13:13 Jingle Guo 阅读(2732) 评论(1) 推荐(1) 编辑

抽象基类不能被实例化?看我怎么破!
摘要:学过C++的应该都知道C++中的抽象基类,当我们需要一个基类不能被实例化时,抽象基类就需要上场了。它通常是通过定义至少一个纯虚函数来实现的,例如下面就是一个抽象基类的例子:class Abstract{public: Abstract(int data = 0){ m_data = data; }; virtual int getdata() = 0;private: int m_data;};这时我想要定义一个Abstract的实例,如int _tmain(int argc, _TCHAR* argv[]){ Abstract a; retu... 阅读全文

posted @ 2013-11-24 10:28 Jingle Guo 阅读(7263) 评论(5) 推荐(2) 编辑

找出N个数中最小的k个数问题(复杂度O(N*logk))
摘要:这是一个经典的算法题,下面给出的算法都在给定的数组基础上进行,好处时不用分配新的空间,坏处是会破坏原有的数组,可以自己分配新的空间以避免对原有数组的破坏。 思路一 先直接排序,再取排序后数据的前k个数。 排序算法用最快的堆排序,复杂度也会达到O(N*logN). void filterDown(in 阅读全文

posted @ 2013-11-03 14:49 Jingle Guo 阅读(6727) 评论(15) 推荐(0) 编辑

STL模板类简述
该文被密码保护。

posted @ 2013-10-29 15:02 Jingle Guo 阅读(230) 评论(0) 推荐(0) 编辑

字符串匹配之KMP算法
摘要:一.简单的字符串匹配 我们经常需要在某一串字符中查找是否存在给定的子串,我们将给定的子串叫做模式,查找子串的问题叫做模式匹配。 进行字符串的模式匹配,最简单的方法就是依次将子串与给定的字符串依次进行比较。算法如下: int patFind(const char* str, const char* p 阅读全文

posted @ 2013-10-23 16:31 Jingle Guo 阅读(1384) 评论(0) 推荐(0) 编辑

各种排序算法的实现
摘要:一.基本概念 1.稳定排序与不稳定排序: 对于A,B两个键值相等的对象,且在排序前,A在B之前,如果排序后A肯定还在B之前,则为稳定排序,如果B可能在A之前,为不稳定排序。 2.内排序和外排序: 内排序是指在排序期间数据对象全部存放在内存的排序 外排序是指在排序期间数据对象太多,不能同时存放在内存, 阅读全文

posted @ 2013-10-22 19:17 Jingle Guo 阅读(2297) 评论(3) 推荐(2) 编辑

生成小于N的随机数
该文被密码保护。

posted @ 2013-10-21 13:23 Jingle Guo 阅读(31) 评论(0) 推荐(0) 编辑

Message Queuing(MSMQ)学习之旅(三)——获取机器信息
摘要:MSMQ能够通过MQGetMachineProperties 获取本机或其他机器的的公共密钥,site list,path name等信息。这里需要注意的就是如果PROPID_QM_ENCRYPTION_PK和PROPID_QM_ENCRYPTION_PK_BASE同时存在,将有一个属性不能成功获取。而MS推荐使用的是PROPID_QM_ENCRYPTION_PK_BASE参数,所以就当PROPID_QM_ENCRYPTION_PK不存在吧。不多说,上代码。void GetMachineProp(){ const int NUMBEROFPROPERTIES = 8; QMPROPID aPr 阅读全文

posted @ 2013-03-26 15:19 Jingle Guo 阅读(395) 评论(0) 推荐(0) 编辑

Message Queuing(MSMQ)学习之旅(二)——创建Queue
摘要:1.前言应用程序创建的Queue根据你是否希望被其他程序找到可分为Public Queue和Private Queue,Public Queue会在directory service中注册,有利于长时间的使用。Private Queue在本机注册,而不在directory service中注册,它一般通过在%windir%\System32\MSMQ\Storage\Lqs下存储相应的描叙文件来注册。注册在本机中的Public Queue也会在Lqs目录下存储相应的描述文件。建立Private Queue更快,能在directory service不工作的时候正常工作。另外按照可以接收的Mes 阅读全文

posted @ 2013-03-26 14:49 Jingle Guo 阅读(562) 评论(0) 推荐(0) 编辑

Public Key Infrastructure(PKI)的基本概念和Certificate的创建
摘要:一.PKI的作用公钥加密也叫做非对称加密,它用一对密钥来进行加密和解密,用某用户密钥加密后所得的信息,只能用该用户的解密密钥才能解密。如果知道了其中一个,并不能计算出另外一个。因此如果公开了一对密钥中的一个,并不会危害到另外一个的秘密性质。称公开的密钥为公钥;不公开的密钥为私钥。在用户使用公钥加密时并不能确定使用的公钥的可信性,Public Key Infrastructure就是通过引入一个可信的第三方certification authority(CA)来确保公钥的完整性和持有人的身份。二.X.509PKI的结构X.509 public key infrastructure标准的结构如下- 阅读全文

posted @ 2013-03-22 15:51 Jingle Guo 阅读(1286) 评论(0) 推荐(0) 编辑

Message Queuing(MSMQ)学习之旅(一)——基本概念
摘要:1.MSMQ是什么?Message Queue(微软消息队列)是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间中的任一位置。它的实现原理是:消息的发送者把自己想要发送的信息放入一个容器中(我们称之为Message),然后把它保存至一个系统公用空间的消息队列(Message Queue)中;本地或者是异地的消息接收程序再从该队列中取出发给它的消息进行处理。(来源:百度百科)2.MSMQ的好处比起TCP/IP通讯,我觉得MSMQ的好处在能支持两个应用程序之间的离线通讯,接收方和发送方不需要同时运行,发送方可以先把消息发出来,过一 阅读全文

posted @ 2013-03-18 20:46 Jingle Guo 阅读(867) 评论(1) 推荐(0) 编辑