前言在C++多线程程序的开发过程中,资源的互斥访问是第一个要考虑的问题,常用的方法就是使用互斥锁对共享数据进行保护,而使用锁最大的风险就是有可能产生死锁,导致程序异常退出。因为这个风险的存在,所以我每次使用互斥锁的时候都小心翼翼,看互斥锁lock之后是否在合适的地方进行了unlock,在多个互斥锁同时使用的时候反复检查加锁的顺序是否会导致死锁……但是,百密一疏,自己还是亲手写出了一把死锁,导致付出
Continue reading
问题背景 KMP算法是一种优化后的字符串匹配算法,可以将复杂度由暴力匹配的O(m*n)降低到O(m+n),具体原理就不再赘述,相信几乎任何一本算法书上面都会有KMP算法的详细介绍与实现。以前虽然学习过KMP算法,也清楚算法的原理,但是却从来没有完整实现过一次,闲来无事便打开Visual Studio准备使用C++独立实现一下。
代码如下:
12345678910111213141516171
Continue reading
问题背景: 在开发股票自动化交易软件过程中,我们需要将股票的tick数据(每3s一笔)存储下来,供我们的股票交易策略部分使用。这种情况下首先想到使用MySql这种关系型数据库进行存储,但是我们的股票自动化交易软件对速度的要求极高,可能相差几十毫秒就是赚钱与亏钱的区别,而MySql这种传统数据库的插入与查询是很慢的,无法满足我们的要求。当然我们也可以选择既满足存储数据的要求又能达到我们需要的速度要
Continue reading
背景 事情是这样的:在股票的自动化交易软件开发过程中,我们使用了万得的一套股票行情获取API,伴随着API还提供了一个示例程序,我们在开发过程中借用了部分示例程序中的代码,其中就包括一个配置读取类:ConfigSettings,这个类负责从配置文件中读入软件配置参数,并把参数的值保存在成员变量中,以供后面程序进行参数读取。
但是除了原来支持的参数之外,我们又在配置文件中增加了新的配置参数,是
Continue reading
前几天遇到这么一个题目:
1234567891011121314typedef struct{ char flag[3]; short value;} sampleStruct;union{ char flag[3]; short value;} sampleUnion;sizeof(sampleStruct)=?sizeof(sam
Continue reading