行情数据的写入、读取以及行情数据的读写方法和系统与流程

文档序号:12802530阅读:142来源:国知局
行情数据的写入、读取以及行情数据的读写方法和系统与流程

本发明涉及数据传输技术领域,特别是涉及一种行情数据的写入、读取以及行情数据的读写方法和一种行情数据的写入、读取以及行情数据的读写系统。



背景技术:

在证券行业中,行情数据是所有数据分析系统的基础数据,每一种证券的报价信息的变化,都是市场变化的数据体现,这些数据在投资过程中供投资人作为参考,从而直接影响投资人的投资行为。在这样的背景下,如何更高效的对行情数据进行处理,成为了业界技术人员所面对的一大难题。

行情数据的访问分为三个部分:服务器响应行情源的更新写入;服务器响应客户端请求的数据读取;通过网络对分笔数据进行分发。其中,写入和读取两个访问是同时进行的,在数据写入过程中需要进行数据读取时,需要确保读写两个线程不需要相互等待,并且得到的行情数据是逻辑完整的,而不是脏数据。

在现有技术中,对数据的并发访问存在着两种解决方案。

方案一,使用读写锁技术,数据读取时,使用读锁,读取之间不相互排斥,读锁只与写锁排斥。数据写入时,使用写锁,写锁之间,写锁与读锁之间相互排斥。就是说,若另外的线程已经获得了读锁或写锁,当前写入线程必须等待另外的线程释放该锁。此方案优点是能确保同时只有一条线程对数据进行写入的操作,确保数据逻辑完整,避免脏数据。

方案二,使用rcu(readcopyupdate,读取,复制,更新),具体是指,数据区域都拥有一个索引,对数据不能直接访问,而是通过索引访问。要写入更新数据时,首先复制一份数据,对复制数据的字段进行写入更新后,再对索引进行锁定并更新。此方案的优点是,更新时不需要锁定数据,只需在更新索引时锁定索引,由于更新索引耗时极少,所以写入线程与读取线程之间的等待时间相对较短,几乎不用等待。

然而,针对现有技术中的解决方案中,依旧存在着不可忽视的技术缺陷。

针对方案一,使用读写锁技术。此方案的缺点是并发访问时写入线程需要等待,尤其在大量读取访问正在进行时,写入线程容易发生拥堵,这对行情服务器的影响是致命的。

针对方案二,使用rcu技术。此方案的缺点是,每次更新数据都需要进行数据拷贝,对内存消耗很大,而且拷贝也耗损cpu资源,使得吞吐量下降。

因此,在对于在大量读取访问的场景下,利用现有技术解决对数据的并发访问很可能会造成写入线程的效率低下,以及,对cpu资源的过度侵占,导致吞吐量下降。



技术实现要素:

鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种行情数据的写入、读取以及行情数据的读写方法和相应的一种行情数据的写入、读取以及行情数据的读写系统。

为了解决上述问题,本发明实施例公开了一种行情数据的写入、读取以及行情数据的读写方法和系统,解决了针对大量读取访问时吞吐量低下的问题。

第一方面,本发明实施例提供了一种行情数据的写入方法,所述方法包括:

生成分笔行情数据;

针对当前分笔行情数据,计算其与上一笔分笔行情数据的差额数据;

将当前分笔行情数据及其对应的差额数据作为一笔分笔记录写入预置存储区域;

在完成分笔记录的写入后,累加分笔记录数量。

优选地,所述生成分笔行情数据的步骤包括:

获取行情源数据;

判断所述行情源数据生成时间是否在清盘前;若否,则将所述行情数据判定为有效的行情源数据;

判断所述行情数据生成时间是否处于竞价阶段,若否,则将所述行情数据判定为有效的行情源数据;

判断所述行情数据是否为异常数据,若否,则将所述行情数据判定为有效的行情源数据;

将所述有效的行情源数据进行分笔处理,获得分笔行情数据。

优选地,所述判断所述行情数据是否为异常数据的子步骤进一步包括:

当所述行情源数据成交量出现倒退,

和/或,

所述行情源数据生成时间出现倒退,

和/或,

所述行情源数据内外盘标记出现错误,

和/或,

所述行情源数据的平均价格振幅超过预设阈值时,将所述行情数据判定为异常数据。

优选地,所述行情源数据包括,行情源数据代码、行情源数据市场代码、行情源数据生成时间、行情源数据价格、行情源数据开盘价格、行情源数据最高价格、行情源数据最低价格、行情源数据最新价格、行情源数据成交量、行情源数据成交额、行情源数据买一价、行情源数据买二价、行情源数据买三价、行情源数据买四价、行情源数据买五价、行情源数据卖一价、行情源数据卖二价、行情源数据卖三价、行情源数据卖四价、行情源数据卖五价、行情源数据买一量、行情源数据买二量、行情源数据买三量、行情源数据买四量、行情源数据买五量、行情源数据卖一量、行情源数据卖二量、行情源数据卖三量、行情源数据卖四量、行情源数据卖五量、行情源数据内外盘标记、行情源数据涨跌家数;

所述将所述有效的行情源数据进行分笔处理,获得分笔行情数据的子步骤进一步包括:

当所述行情源数据最新价格不为0且不等于其前一次交易的行情源数据最新价格,

和/或,

所述行情源数成交量大于0且大于其前一次交易的行情源数据成交量,

和/或,

所述行情源数成交额大于0且大于其前一次交易的行情源数据成交额时,从当前有效的行情源数据中,提取行情源数据代码、行情源数据市场代码、行情源数据生成时间、行情源数据成交额、行情源数据最新价、行情源数据成交量、行情源数据持仓量、行情源数据买一价、行情源数据买一量、行情源数据卖一价、行情源数据卖一量、行情源数据内外盘标记,组成分笔行情数据。

优选地,所述差额数据包括时间差、成交额差、价格差、成交量差、持仓量差、买一价差、买一量差、卖一价差、卖一量差,所述针对当前分笔行情数据,计算其与上一笔分笔行情数据的差额数据的步骤包括:

针对当前分笔行情数据中的分笔行情数据生成时间,计算其与其前一次交易的分笔行情数据的分笔行情数据生成时间差额,并记录为时间差;

针对当前分笔行情数据中的分笔行情数据成交额,计算其与其前一次交易的分笔行情数据的分笔行情数据成交额差额,并记录为成交额差;

针对当前分笔行情数据中的分笔行情数据最新价,计算其与其前一次交易的分笔行情数据的分笔行情数据最新价差额,并记录为价格差;

针对当前分笔行情数据中的分笔行情数据成交量,计算其与其前一次交易的分笔行情数据的分笔行情数据成交量差额,并记录为成交量差;

针对当前分笔行情数据中的分笔行情数据持仓量,计算其与其前一次交易的分笔行情数据的分笔行情数据持仓量差额,并记录为持仓量差;

针对当前分笔行情数据中的分笔行情数据买一价,计算其与其前一次交易的分笔行情数据的分笔行情数据买一价差额,并记录为买一价差;

针对当前分笔行情数据中的分笔行情数据买一量,计算其与其前一次交易的分笔行情数据的分笔行情数据买一量差额,并记录为买一量差;

针对当前分笔行情数据中的分笔行情数据卖一价,计算其与其前一次交易的分笔行情数据的分笔行情数据卖一价差额,并记录为卖一价差;

针对当前分笔行情数据中的分笔行情数据卖一量,计算其与其前一次交易的分笔行情数据的分笔行情数据卖一量差额,并记录为卖一量差。

优选地,所述在完成分笔记录的写入后,累加分笔记录数量的步骤包括:

记录所述累加的分笔记录数量为分笔总量;

判断当前分笔总量是否超出预设存储区域的大小;

若是,则终止分笔记录的写入。

第二方面,本发明实施例提供了提供了一种行情数据的读取方法,所述方法包括:

接收分笔记录读取请求,所述请求中包括分笔记录读取起始时间;

获取已记录的分笔记录数量;

采用所述读取起始时间和已记录的分笔记录数量,在预置存储区域中定位当前读取的第一笔分笔记录,以及,需要读取的分笔记录数量;所述分笔记录中包括分笔行情数据,以及,当前分笔行情数据与上一笔分笔行情数据的差额数据;

从所述第一笔分笔记录的分笔行情数据开始,读取后续相应数量分笔记录中的差额数据;

向用户展现读取到的分笔行情数据及差额数据。

第三方面,本发明实施例提供了提供了一种行情数据的读写方法,所述方法涉及读线程和写线程,所述读线程和写线程同时进行,所述写线程包括:

生成分笔行情数据;

针对当前分笔行情数据,计算其与上一笔分笔行情数据的差额数据;

将当前分笔行情数据及其对应的差额数据作为一笔分笔记录写入预置存储区域;

在完成分笔记录的写入后,累加分笔记录数量;

所述读线程包括:

接收分笔记录读取请求,所述请求中包括分笔记录读取起始时间;

获取已记录的分笔记录数量;

采用所述读取起始时间和已记录的分笔记录数量,在预置存储区域中定位当前读取的第一笔分笔记录,以及,需要读取的分笔记录数量;所述分笔记录中包括分笔行情数据,以及,当前分笔行情数据与上一笔分笔行情数据的差额数据;

从所述第一笔分笔记录的分笔行情数据开始,读取后续相应数量分笔记录中的差额数据;

向用户展现读取到的分笔行情数据及差额数据。

第四方面,本发明实施例提供了提供了一种行情数据的写入系统,所述系统包括:

数据生成模块,用于生成分笔行情数据;

差额数据计算模块,用于针对当前分笔行情数据,计算其与上一笔分笔行情数据的差额数据;

写入模块,用于将当前分笔行情数据及其对应的差额数据作为一笔分笔记录写入预置存储区域;

数量累加模块,用于在完成分笔记录的写入后,累加分笔记录数量。

第五方面,本发明实施例提供了提供了一种行情数据的读取系统,所述系统包括:

请求接受模块,用于接收分笔记录读取请求,所述请求中包括分笔记录读取起始时间;

数量获取模块,用于获取已记录的分笔记录数量;

分笔记录及分笔记录数量读取模块,用于采用所述读取起始时间和已记录的分笔记录数量,在预置存储区域中定位当前读取的第一笔分笔记录,以及,需要读取的分笔记录数量;所述分笔记录中包括分笔行情数据,以及,当前分笔行情数据与上一笔分笔行情数据的差额数据;

差额数据读取模块,用于从所述第一笔分笔记录的分笔行情数据开始,读取后续相应数量分笔记录中的差额数据;

数据返回模块,用于向用户展现读取到的分笔行情数据及差额数据。

第六方面,本发明实施例提供了提供了一种行情数据的读写系统,所述系统涉及读线程和写线程,所述读线程和写线程同时进行,所述读线程包括:

第二数据生成模块,用于生成分笔行情数据;

第二差额数据计算模块,用于针对当前分笔行情数据,计算其与上一笔分笔行情数据的差额数据;

第二写入模块,用于将当前分笔行情数据及其对应的差额数据作为一笔分笔记录写入预置存储区域;

第二数量累加模块,用于在完成分笔记录的写入后,累加分笔记录数量;

所述读线程包括:

第二请求接受模块,用于接收分笔记录读取请求,所述请求中包括分笔记录读取起始时间;

第二数量获取模块,用于获取已记录的分笔记录数量;

第二分笔记录及分笔记录数量读取模块,用于采用所述读取起始时间和已记录的分笔记录数量,在预置存储区域中定位当前读取的第一笔分笔记录,以及,需要读取的分笔记录数量;所述分笔记录中包括分笔行情数据,以及,当前分笔行情数据与上一笔分笔行情数据的差额数据;

第二差额数据读取模块,用于从所述第一笔分笔记录的分笔行情数据开始,读取后续相应数量分笔记录中的差额数据;

第二数据返回模块,用于向用户展现读取到的分笔行情数据及差额数据。

本发明实施例包括以下优点:

本发明实施例,通过在行情数据更新时,生成新的一笔分笔行情数据,计算其与上一笔分笔行情数据的差额数据,在预置存储区域中,把这组数据各个字段依次填入,再使用原子操作,累加分笔记录数量,当下次出现行情更新时,重复此操作;接收分笔记录读取请求,获取接收分笔记录读取请求时生成的分笔记录读取起始时间,和,已记录的分笔记录数量,采用所述读取起始时间和已记录的分笔记录数量,在预置存储区域中定位当前读取的第一笔分笔记录,以及,需要读取的分笔记录数量,并从分笔记录中提取分笔行情数据,以及,当前分笔行情数据与上一笔分笔行情数据的差额数据,从所述第一笔分笔记录的分笔行情数据开始,读取后续相应数量分笔记录中的差额数据,最后像用户展现读取到的分笔行情数据及差额数据,通过运用本发明实施例所述的方法,可以实现写线程与读线程可以并发同时进行,操作系统提供指令级别的不能重叠的读取和写入操作,确保要读取或写入的字节在操作过程中不会被挂起(中断),使得系统在读线程中,只能读取到写入前的分笔汇总或是写入后的分笔汇总,从而获得逻辑完整的分笔行情数据,这便保证了在并发访问时写入线程无需等待,从而提升了对行情数据的读写效率。

附图说明

图1是本发明的一种行情数据的写入方法实施例的步骤流程图;

图2是本发明的一种行情数据的读取方法实施例的步骤流程图;

图3是本发明的一种行情数据的读写方法实施例的步骤流程图;

图4是本发明的一种行情数据的写入系统实施例的结构框图;

图5是本发明的一种行情数据的读取系统实施例的结构框图;

图6是本发明的一种行情数据的读写系统实施例的结构框图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

参照图1,示出了本发明的一种行情数据的写入方法实施例的步骤流程图,具体可以包括如下步骤:

步骤101,生成分笔行情数据;

在实际应用中,本发明实施例可以应用于客户端,和/或,服务器中,本发明针对分笔行情数据的特点,设计特定的访问技术,使得分笔行情数据的同时写入和读取,继而传输到客户端,从而可以获得更大的吞吐量。

在本发明实施例中,可以通过如下方式生成分笔行情数据:

先对行情源所发送的行情源数据进行获取,再对所述行情源数据是否为有效行情数据进行判断,当所述行情源数据被判定为有效行情源数据时,将所述有效的行情源数据进行分笔处理,获得分笔行情数据。

作为本发明实施例的一种示例,所述行情源数据可以包括,行情源数据代码、行情源数据市场代码、行情源数据生成时间、行情源数据价格、行情源数据开盘价格、行情源数据最高价格、行情源数据最低价格、行情源数据最新价格、行情源数据成交量、行情源数据成交额、行情源数据买一价、行情源数据买二价、行情源数据买三价、行情源数据买四价、行情源数据买五价、行情源数据卖一价、行情源数据卖二价、行情源数据卖三价、行情源数据卖四价、行情源数据卖五价、行情源数据买一量、行情源数据买二量、行情源数据买三量、行情源数据买四量、行情源数据买五量、行情源数据卖一量、行情源数据卖二量、行情源数据卖三量、行情源数据卖四量、行情源数据卖五量、行情源数据内外盘标记、行情源数据涨跌家数等。

在具体实现中,可以通过如下方式对获取到的行情源数据是否为有效行情源数据进行判断:

方式一:判断所述行情源数据生成时间是否在清盘前;若否,则将所述行情源数据判定为有效的行情源数据。

例如,交易日9:00am清盘,清盘前到来的行情源数据不生成分笔行情数据。

方式二:判断所述行情源数据生成时间是否处于竞价阶段,若否,则将所述行情源数据判定为有效的行情源数据。

例如,若盘口价格有效(买1卖1),且盘口价格和量相等,则处于竞价阶段,此时到来的行情源数据不生成分笔行情数据。

方式三:判断所述行情源数据是否为异常数据,若否,则将所述行情源数据判定为有效的行情源数据。

作为本发明一个更为优选的实施例,所述判断所述行情行情源数据是否为异常数据还可以包括:

当所述行情源数据成交量出现倒退时,判断所述行情源数据为异常数;

例如,在当前获取的行情源数据的成交量比前一次获取的行情源数据的成交量少时,将所述行情源数据判定为异常数据,所述异常数据不参与生成分笔行情数据。

当所述行情源数据生成时间出现倒退时,判断所述行情源数据为异常数;

例如,当前获取的行情源数据所标记的时间比前次获取的行情源数据所标记的时间早,将所述行情源数据判定为异常数据,所述异常数据不生参与成分笔行情数据。

当所述行情源数据内外盘标记出现错误时,判断所述行情源数据为异常数;

在具体操作中,可以通过如下方法判断关于内外盘标记内外盘标记是否出现错误:

若当前价大于或等于卖出价,属外盘。

若当前价小于或等于买入价,属内盘。

若当前价介于买入价与卖出价之间:使用上一笔分笔判断,比前一笔价格增加属外盘,比前一笔价格减少属内盘,若相等则维持上一笔的内外盘标记,若没有前一笔数据,则使用昨收价判断,大于等于昨收为外盘,小于昨收为内盘。

例如,当买1到买5依次减少,卖1到卖5依次增大时,将所述行情源数据判定为异常数据,所述异常数据不参与生成分笔行情数据。

当所述行情源数据的平均价格振幅超过预设阈值时,将所述行情源数据判定为异常数据。

例如,累计1分钟的成交额除以成交量,当此波幅大于50%时,将所述行情源数据判定为异常数据,所述异常数据不生成分笔行情数据。

当然,本领域技术人员任意选择上述一种或多种方法都对所述行情源数据是否为无效行情源数据进行判断都是可行的,在此本发明对此不作限制。

在本发明一个优选地实施例中,可以通过如下方法将所述有效的行情源数据进行分笔处理,获得分笔行情数据:

方法一,当所述行情源数据最新价格不为0且不等于其前一次交易的行情源数据最新价格时,将所述有效的行情源数据进行分笔处理。

方法二,当所述行情源数成交量大于0且大于其前一次交易的行情源数据成交量时,将所述有效的行情源数据进行分笔处理。

方法三,当所述行情源数成交额大于0且大于其前一次交易的行情源数据成交额时,将所述有效的行情源数据进行分笔处理。

当然,本领域技术人员任意选择上述一种或多种方法对所述有效的行情源数据进行分笔处理都是可行的,对此本发明对此不作限制。

进一步地,所述分笔处理的方法包括,从当前有效的行情源数据中,提取行情源数据代码、行情源数据市场代码、行情源数据生成时间、行情源数据成交额、行情源数据最新价、行情源数据成交量、行情源数据持仓量、行情源数据买一价、行情源数据买一量、行情源数据卖一价、行情源数据卖一量、行情源数据内外盘标记等,组成分笔行情数据。

为使本领域技术人员更好地理解本发明实施例,以下通过一个具体应用的示例进行说明。

例如,当获取到的行情源数据的为:行情源数据代码:600000;行情源数据生成时间:212347272630000000;行情源数据开盘价格:1728;行情源数据最高价格:1729;行情源数据最低价格:1726;行情源数据最新价格:1729;行情源数据成交量:237301;行情源数据成交额:3581907;行情源数据买1价/量:1728/4900;行情源数据买2价/量:1726/17699;行情源数据买3价/量:1725/29200;行情源数据买4价/量:1724/26200;行情源数据买5价/量:1723/700;行情源数据卖1价/量:1729/71093;行情源数据卖2价/量:1730/133650;行情源数据卖3价/量:1731/2400;行情源数据卖4价/量:1732/11000;行情源数据卖5价/量:1733/30800;则生成的分笔行情数据可以为:分笔时间:212347272630000000;分笔最新价:1729;分笔成交量:4600;分笔成交额:79534;分笔买1价:1728;分笔买1量:4900;分笔卖1价:1729;分笔卖1量:71093;内外盘:外盘;上涨家数:0;下跌家数:0。

其中,上涨家数和下跌家数的此字段只对指数品种有效,非指数字段填0,指数则遍历成份股,统计上涨的品种数和下跌的品种数。

步骤102,针对当前分笔行情数据,计算其与上一笔分笔行情数据的差额数据;

在实际应用中,所述差额数据可以为两组分笔行情数据之间,各个字段相减,得出的分笔差额(增量)数据,所述差额数据包括时间差、成交额差、价格差、成交量差、持仓量差、买一价差、买一量差、卖一价差、卖一量差。

在本发明实施例中,所述针对当前分笔行情数据,计算其与上一笔分笔行情数据的差额数据的步骤可以包括:

针对当前分笔行情数据中的分笔行情数据生成时间,计算其与其前一次交易的分笔行情数据的分笔行情数据生成时间差额,并记录为时间差;

针对当前分笔行情数据中的分笔行情数据成交额,计算其与其前一次交易的分笔行情数据的分笔行情数据成交额差额,并记录为成交额差;

针对当前分笔行情数据中的分笔行情数据最新价,计算其与其前一次交易的分笔行情数据的分笔行情数据最新价差额,并记录为价格差;

针对当前分笔行情数据中的分笔行情数据成交量,计算其与其前一次交易的分笔行情数据的分笔行情数据成交量差额,并记录为成交量差;

针对当前分笔行情数据中的分笔行情数据持仓量,计算其与其前一次交易的分笔行情数据的分笔行情数据持仓量差额,并记录为持仓量差;

针对当前分笔行情数据中的分笔行情数据买一价,计算其与其前一次交易的分笔行情数据的分笔行情数据买一价差额,并记录为买一价差;

针对当前分笔行情数据中的分笔行情数据买一量,计算其与其前一次交易的分笔行情数据的分笔行情数据买一量差额,并记录为买一量差;

针对当前分笔行情数据中的分笔行情数据卖一价,计算其与其前一次交易的分笔行情数据的分笔行情数据卖一价差额,并记录为卖一价差;

针对当前分笔行情数据中的分笔行情数据卖一量,计算其与其前一次交易的分笔行情数据的分笔行情数据卖一量差额,并记录为卖一量差。

例如:当前分笔行情数据为:分笔时间:212347272635000000;分笔最新价:1729;分笔成交量:200;分笔成交额:522025;分笔买1价:1726;分笔买1量:17699;分笔卖1价:1729;分笔卖1量:60793;内外盘:外盘;上涨家数:0;下跌家数:0;前一笔分笔行情数据的参数为:分笔时间:212347272630000000;分笔最新价:1729;分笔成交量:4600;分笔成交额:79534;分笔买1价:1728;分笔买1量:4900;分笔卖1价:1729;分笔卖1量:71093;内外盘:外盘;上涨家数:0;下跌家数:0;则差额数据可以为:时间:5000000;最新价:0;成交量:4400;成交额:442491;买1价:1;买1量:12799;卖1价:0;卖1量:-10300;内外盘:0;上涨家数:0;下跌家数:0;则所述差额数据为分笔差:时间差:5000000最新价:0;成交量差:4400;成交额差:442491;买1价差:1;买1量差:12799;卖1价差:0;卖1量差:-10300;内外盘:0;上涨家数:0;下跌家数:0

另外,值得注意的是,第一笔分笔行情数据所对应的差额数据为所述分笔行情数据自身。

步骤103,将当前分笔行情数据及其对应的差额数据可以作为一笔分笔记录写入预置存储区域;

在具体实现中,本发明实施例可以通过将当前分笔行情数据及其对应的差额数据作为一笔分笔记录通过不能重叠的原子操作进行写入处理,确保须要写入的字节在操作过程中不会被挂起(中断)。

步骤104,在完成分笔记录的写入后,累加分笔记录数量。

在本发明的一个优选实施例中,所述在完成分笔记录的写入后,累加分笔记录数量的步骤可以包括如下子步骤:

s41,记录所述累加的分笔记录数量为分笔总量;

s42,判断当前分笔总量是否超出预设存储区域的大小;

s43,若是,则终止分笔记录的写入。

在具体实现中,本发明实施例可以通过不能重叠的原子操作对分笔记录数量进行累加,通过分笔记录数量进行累加结果对分笔记录数量进行更新,并记录所述累加的分笔记录数量为分笔总量,通过判断当前分笔总量是否超出预设存储区域的大小,决定是否终止分笔记录的写入。

例如,在完成对差额数据的写入后,使用原子操作更新分笔记录的总数量,每次写入差额数据时更新一次分笔记录数量,分笔记录数量等于全部差额数量的笔数,查看当前分笔总量,要是所述分笔总量超过预设储存区域的大小,就不再将分笔记录写入所述储存区域。

参照图2,示出了本发明的一种行情数据的读取方法实施例的步骤流程图,具体可以包括如下步骤:

步骤201,接收分笔记录读取请求,所述请求中包括分笔记录读取起始时间;

步骤202,获取已记录的分笔记录数量;

在具体实现中,本发明实施例可以通过将当前分笔记录数量通过不能重叠的原子操作进行读取处理,确保须要读取的分笔记录数量在操作过程中不会被挂起(中断)。

步骤203,采用所述读取起始时间和已记录的分笔记录数量,在预置存储区域中定位当前读取的第一笔分笔记录,以及,需要读取的分笔记录数量;所述分笔记录中可以包括分笔行情数据,以及,当前分笔行情数据与上一笔分笔行情数据的差额数据;

步骤204,从所述第一笔分笔记录的分笔行情数据开始,读取后续相应数量分笔记录中的差额数据;

在具体实现中,本发明实施例可以通过获取分笔记录数量以及用户端所请求的分笔行情数据的时间,从储存区域中确定出一个基准分笔行情数据作为第一笔分笔记录的分笔行情数据,再通过与后续的增量差额,计算出共要传输的分笔数量。

步骤205,向用户展现读取到的分笔行情数据及差额数据。

在实际操作中,为了确保在传输过程中减小传输量,本发明实施例还可以通过以下方法向客户端返回读取的分笔行情数据及差额数据:

先将所述分笔行情数据进行变长压缩处理生成客户端传输数据,再将所述客户端传输数据发送至客户端。

参照图3,示出了本发明的一种行情数据的读写方法实施例的步骤流程图,其中,所述方法涉及读线程和写线程,所述读线程和写线程同时进行,应用本发明实施例,所述写线程具体可以包括如下步骤:

步骤301,生成分笔行情数据;

步骤302,针对当前分笔行情数据,计算其与上一笔分笔行情数据的差额数据;

步骤303,将当前分笔行情数据及其对应的差额数据作为一笔分笔记录写入预置存储区域;

步骤304,在完成分笔记录的写入后,累加分笔记录数量;

所述读线程具体可以包括如下步骤:

步骤305,接收分笔记录读取请求,所述请求中包括分笔记录读取起始时间;

步骤306,获取已记录的分笔记录数量;

步骤307,采用所述读取起始时间和已记录的分笔记录数量,在预置存储区域中定位当前读取的第一笔分笔记录,以及,需要读取的分笔记录数量;所述分笔记录中包括分笔行情数据,以及,当前分笔行情数据与上一笔分笔行情数据的差额数据;

步骤308,从所述第一笔分笔记录的分笔行情数据开始,读取后续相应数量分笔记录中的差额数据;

步骤309,向用户展现读取到的分笔行情数据及差额数据。

本发明实施例,通过在行情数据更新时,生成新的一笔分笔行情数据,计算其与上一笔分笔行情数据的差额数据,在预置存储区域中,把这组数据各个字段依次填入,再使用原子操作,累加分笔记录数量,当下次出现行情更新时,重复此操作;接收分笔记录读取请求,获取接收分笔记录读取请求时生成的分笔记录读取起始时间,和,已记录的分笔记录数量,采用所述读取起始时间和已记录的分笔记录数量,在预置存储区域中定位当前读取的第一笔分笔记录,以及,需要读取的分笔记录数量,并从分笔记录中提取分笔行情数据,以及,当前分笔行情数据与上一笔分笔行情数据的差额数据,从所述第一笔分笔记录的分笔行情数据开始,读取后续相应数量分笔记录中的差额数据,最后像用户展现读取到的分笔行情数据及差额数据,通过运用本发明实施例所述的方法,可以实现写线程与读线程可以并发同时进行,操作系统提供指令级别的不能重叠的读取和写入操作,确保要读取或写入的字节在操作过程中不会被挂起(中断),使得系统在读线程中,只能读取到写入前的分笔汇总或是写入后的分笔汇总,从而获得逻辑完整的分笔行情数据,这便保证了在并发访问时写入线程无需等待,从而提升了对行情数据的读写效率。

对于本方法实施例而言,由于其与上述方法实施例基本相似,所以对相同部分内容就不再赘述。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

参照图4,示出了本发明的一种行情数据的写入系统实施例的结构框图,具体可以包括如下模块:

数据生成模块401,用于生成分笔行情数据;

差额数据计算模块402,用于针对当前分笔行情数据,计算其与上一笔分笔行情数据的差额数据;

写入模块403,用于将当前分笔行情数据及其对应的差额数据作为一笔分笔记录写入预置存储区域;

数量累加模块404,用于在完成分笔记录的写入后,累加分笔记录数量。

在本发明一种优选实施例中,所述数据生成模块401还可以包括如下子模块:

行情源数据获取子模块,用于获取行情源数据;

第一判断子模块,用于判断所述行情源数据生成时间是否在清盘前;若否,则调用分笔处理子模块;

第二判断子模块,用于判断所述行情数据生成时间是否处于竞价阶段,若否,则调用分笔处理子模块;

第三判断子模块,用于判断所述行情数据是否为异常数据,若否,则调用分笔处理子模块;

分笔处理子模块,用于将所述有效的行情源数据进行分笔处理,获得分笔行情数据。

在本发明一种更为优选实施例中,所述数据生成模块第三判断子模块还可以包括如下单元:

成交量判断单元,用于判断所述行情源数据成交量是否出现倒退;若是,则调用异常数据判断单元;

时间判断单元,用于判断所述行情源数据生成时间是否出现倒退,若是,则调用异常数据判断单元;

盘口判断单元,用于判断所述行情源数据内外盘标记是否出现错误,若是,则调用异常数据判断单元;

分笔处理单元,用于判断所述行情源数据的平均价格振幅是否超过预设阈值,若是,则调用异常数据判断单元;

异常数据判断单元,用于将所述行情数据判定为异常数据。

在本发明一种优选实施例中,所述分笔处理子模块还可以包括如下单元:

最新价判断单元,用于判断所述行情源数据最新价格是否为0,以及,是否等于其前一次交易的行情源数据最新价格,若所述行情源数据最新价格不为0或不等于其前一次交易的行情源数据最新价格,则调用提取单元;

成交量判断单元,用于判断所述行情源数成交量是否大于0,以及,是否大于其前一次交易的行情源数据成交量;若所述行情源数成交量大于0或大于其前一次交易的行情源数据成交量,则调用提取单元;

成交额判断单元,用于判断所述行情源数成交额是否大于0,以及,是否大于其前一次交易的行情源数据成交额时;若所述行情源数成交额大于0或大于其前一次交易的行情源数据成交额,则调用提取单元;

提取单元,用于从当前有效的行情源数据中,提取行情源数据代码、行情源数据市场代码、行情源数据生成时间、行情源数据成交额、行情源数据最新价、行情源数据成交量、行情源数据持仓量、行情源数据买一价、行情源数据买一量、行情源数据卖一价、行情源数据卖一量、行情源数据内外盘标组成分笔行情数据。

在本发明一种优选实施例中,所述差额数据计算模块402还可以包括如下子模块:

时间差计算子模块,用于针对当前分笔行情数据中的分笔行情数据生成时间,计算其与其前一次交易的分笔行情数据的分笔行情数据生成时间差额,并记录为时间差;

成交额差计算子模块,用于针对当前分笔行情数据中的分笔行情数据成交额,计算其与其前一次交易的分笔行情数据的分笔行情数据成交额差额,并记录为成交额差;

价格差额计算子模块,用于针对当前分笔行情数据中的分笔行情数据最新价,计算其与其前一次交易的分笔行情数据的分笔行情数据最新价差额,并记录为价格差;

成交量差计算子模块,用于针对当前分笔行情数据中的分笔行情数据成交量,计算其与其前一次交易的分笔行情数据的分笔行情数据成交量差额,并记录为成交量差;

持仓量差计算子模块,用于针对当前分笔行情数据中的分笔行情数据持仓量,计算其与其前一次交易的分笔行情数据的分笔行情数据持仓量差额,并记录为持仓量差;

买一价差计算子模块,用于针对当前分笔行情数据中的分笔行情数据买一价,计算其与其前一次交易的分笔行情数据的分笔行情数据买一价差额,并记录为买一价差;

买一量差计算子模块,用于针对当前分笔行情数据中的分笔行情数据买一量,计算其与其前一次交易的分笔行情数据的分笔行情数据买一量差额,并记录为买一量差;

卖一价差计算子模块,用于针对当前分笔行情数据中的分笔行情数据卖一价,计算其与其前一次交易的分笔行情数据的分笔行情数据卖一价差额,并记录为卖一价差;

卖一量差计算子模块,用于针对当前分笔行情数据中的分笔行情数据卖一量,计算其与其前一次交易的分笔行情数据的分笔行情数据卖一量差额,并记录为卖一量差。

在本发明一种优选实施例中,所述数量累加模块404还可以包括如下子模块:

分笔总量记录子模块,用于记录所述累加的分笔记录数量为分笔总量;

储存区域大小判断子模块,用于判断当前分笔总量是否超出预设存储区域的大小;若是,则调用写入终止子模块;

写入终止子模块,用于中止分笔记录的写入。

参照图5,示出了本发明的一种行情数据的读取系统实施例的结构框图,具体可以包括如下模块:

请求接受模块501,用于接收分笔记录读取请求,所述请求中包括分笔记录读取起始时间;

数量获取模块502,用于获取已记录的分笔记录数量;

分笔记录及分笔记录数量读取模块503,用于采用所述读取起始时间和已记录的分笔记录数量,在预置存储区域中定位当前读取的第一笔分笔记录,以及,需要读取的分笔记录数量;所述分笔记录中包括分笔行情数据,以及,当前分笔行情数据与上一笔分笔行情数据的差额数据;

差额数据读取模块504,用于从所述第一笔分笔记录的分笔行情数据开始,读取后续相应数量分笔记录中的差额数据;

数据返回模块505,用于向用户展现读取到的分笔行情数据及差额数据。

在本发明的一个优选实施例中,所述数据返回模块505还可以包括如下子模块:

压缩子模块,用于将所述分笔行情数据进行变长压缩处理生成客户端传输数据;

发送子模块,用于将所述客户端传输数据发送至客户端。

参照图6,示出了本发明的一种行情数据的读写系统实施例的结构框图,其中,所述方法涉及读线程和写线程,所述读线程和写线程同时进行,应用本发明实施例,所述写线程具体可以包括如下模块:

第二数据生成模块601,用于生成分笔行情数据;

第二差额数据计算模块602,用于针对当前分笔行情数据,计算其与上一笔分笔行情数据的差额数据;

第二写入模块603,用于将当前分笔行情数据及其对应的差额数据作为一笔分笔记录写入预置存储区域;

第二数量累加模块604,用于在完成分笔记录的写入后,累加分笔记录数量;所述读线程具体可以包括如下模块:

第二请求接受模块605,用于接收分笔记录读取请求,所述请求中包括分笔记录读取起始时间;

第二数量获取模块606,用于获取已记录的分笔记录数量;

第二分笔记录及分笔记录数量读取模块607,用于采用所述读取起始时间和已记录的分笔记录数量,在预置存储区域中定位当前读取的第一笔分笔记录,以及,需要读取的分笔记录数量;所述分笔记录中包括分笔行情数据,以及,当前分笔行情数据与上一笔分笔行情数据的差额数据;

第二差额数据读取模块608,用于从所述第一笔分笔记录的分笔行情数据开始,读取后续相应数量分笔记录中的差额数据;

第二数据返回模块609,用于向用户展现读取到的分笔行情数据及差额数据。

本发明实施例,通过在行情数据更新时,生成新的一笔分笔行情数据,计算其与上一笔分笔行情数据的差额数据,在预置存储区域中,把这组数据各个字段依次填入,再使用原子操作,累加分笔记录数量,当下次出现行情更新时,重复此操作;接收分笔记录读取请求,获取接收分笔记录读取请求时生成的分笔记录读取起始时间,和,已记录的分笔记录数量,采用所述读取起始时间和已记录的分笔记录数量,在预置存储区域中定位当前读取的第一笔分笔记录,以及,需要读取的分笔记录数量,并从分笔记录中提取分笔行情数据,以及,当前分笔行情数据与上一笔分笔行情数据的差额数据,从所述第一笔分笔记录的分笔行情数据开始,读取后续相应数量分笔记录中的差额数据,最后像用户展现读取到的分笔行情数据及差额数据,通过运用本发明实施例所述的方法,可以实现写线程与读线程可以并发同时进行,操作系统提供指令级别的不能重叠的读取和写入操作,确保要读取或写入的字节在操作过程中不会被挂起(中断),使得系统在读线程中,只能读取到写入前的分笔汇总或是写入后的分笔汇总,从而获得逻辑完整的分笔行情数据,这便保证了在并发访问时写入线程无需等待,从而提升了对行情数据的读写效率。

对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、系统、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的系统。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令系统的制造品,该指令系统实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上对本发明所提供的一种行情数据的读写方法和一种行情数据的读写系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1