CN117076533A - 交易数据序列化方法、装置、电子设备及存储介质 - Google Patents
交易数据序列化方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117076533A CN117076533A CN202311020660.1A CN202311020660A CN117076533A CN 117076533 A CN117076533 A CN 117076533A CN 202311020660 A CN202311020660 A CN 202311020660A CN 117076533 A CN117076533 A CN 117076533A
- Authority
- CN
- China
- Prior art keywords
- field
- updated
- serialization
- deserialized
- update
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 82
- 238000004590 computer program Methods 0.000 claims description 8
- 230000005540 biological transmission Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000002688 persistence Effects 0.000 description 5
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 239000000872 buffer Substances 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种交易数据序列化方法、装置、电子设备及存储介质,其中方法包括:读取待更新字段,将所述待更新字段进行反序列化,获得所述待更新字段的反序列化字段,缓存在Java虚拟机堆中;在对所述待更新字段进行更新操作时,从所述Java虚拟机堆中获取所述待更新字段的反序列化字段进行更新,获得反序列化更新字段;将所述反序列化更新字段进行序列化,以执行IO操作;可以提高再次读取、更新字段的效率,以及降低IO操作前的处理耗时。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种交易数据序列化方法、装置、电子设备及存储介质。
背景技术
序列化是指把对象转换为字节序列的过程称为对象的序列化;反序列化是指把字节序列恢复为对象的过程称为对象的反序列化。序列化的数据适合于计算机存储以及网络传输,而反序列化的对象适合于存放在计算机内存中,供算法进行处理和访问。
目前流行的序列化框架如Google公司的protobuf协议,或者arvo协议等,是在需要进行如持久化或网络传输时,将java对象进行序列化,导致在进行IO操作前,需要较长的序列化准备,从整个调用流程的调用上看,耗时比较长。尤其是在交易领域,其行情数据量大,交易流程中间链路长,涉及交易数据的序列化相关方法延迟较高。
发明内容
本申请实施例提供一种交易数据序列化方法、装置、电子设备及存储介质,可以提高再次读取、更新字段的效率,以及降低IO操作前的处理耗时。
第一方面,本申请实施例提供了一种交易数据序列化方法,所述方法包括:
读取待更新字段,将所述待更新字段进行反序列化,获得所述待更新字段的反序列化字段,缓存在Java虚拟机堆中;
在对所述待更新字段进行更新操作时,从所述Java虚拟机堆中获取所述待更新字段的反序列化字段进行更新,获得反序列化更新字段;
将所述反序列化更新字段进行序列化,以执行IO操作。
在一种可选的实施方式中,所述在对所述待更新字段进行更新操作时,所述方法还包括:
记录更新字段的状态标识为预设标识;
所述将所述反序列化更新字段进行序列化,包括:
将所述预设标识对应的反序列化更新字段进行序列化。
在一种可选的实施方式中,在所述读取待更新字段之前,所述方法还包括:
根据接入的行情数据汇总获得进程更新行情信息;
所述读取待更新字段,包括根据所述进程更新行情信息读取所述待更新字段;
所述方法还包括:
发布更新后的行情。
在一种可选的实施方式中,在对所述待更新字段进行更新操作之前,所述方法还包括:
确定所述Java虚拟机堆中是否存在所述待处理字段的反序列化字段;
若是,执行从所述Java虚拟机堆中获取所述待更新字段的反序列化字段进行更新的步骤;
若否,对所述待更新字段进行反序列化,获得所述待更新字段的反序列化字段,并缓存在所述Java虚拟机堆中。
在一种可选的实施方式中,所述方法还包括:
新建空对象时,对象实例化空的二进制数组;
填充属性时,对属性直接进行序列化,然后存放到所述二进制数组中。
在一种可选的实施方式中,所述方法还包括:
在执行所述IO操作时,对二进制数据进行压缩。
在一种可选的实施方式中,所述二进制数组采用堆外内存。
第二方面,本申请实施例提供了一种交易数据序列化装置,包括:
反序列化模块,用于读取待更新字段,将所述待更新字段进行反序列化,获得所述待更新字段的反序列化字段,缓存在Java虚拟机堆中;
更新模块,用于在对所述待更新字段进行更新操作时,从所述Java虚拟机堆中获取所述待更新字段的反序列化字段进行更新,获得反序列化更新字段;
序列化模块,用于将所述反序列化更新字段进行序列化,以执行IO操作。
可选的,还包括记录模块,用于在对所述待更新字段进行更新操作时,记录更新字段的状态标识为预设标识;
所述序列化模块,具体用于将所述预设标识对应的反序列化更新字段进行序列化。
可选的,还包括获取模块和发布模块;其中:
所述获取模块,用于在所述读取待更新字段之前,根据接入的行情数据汇总获得进程更新行情信息;
所述反序列化模块,还用于根据所述进程更新行情信息读取所述待更新字段;
所述发布模块,用于发布更新后的行情。
可选的,所述反序列化模块,还用于在对所述待更新字段进行更新操作之前,确定所述Java虚拟机堆中是否存在所述待处理字段的反序列化字段;
若是,触发所述更新模块执行从所述Java虚拟机堆中获取所述待更新字段的反序列化字段进行更新的步骤;
若否,对所述待更新字段进行反序列化,获得所述待更新字段的反序列化字段,并缓存在所述Java虚拟机堆中。
可选的,所述获取模块还用于,新建空对象时,对象实例化空的二进制数组;
所述序列化模块,还用于填充属性时,对属性直接进行序列化,然后存放到所述二进制数组中。
可选的,还包括压缩模块,用于在执行所述IO操作时,对二进制数据进行压缩。
可选的,所述二进制数组采用堆外内存。
第三方面,本申请实施例还提供了一种电子设备,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如第一方面及其任一种可能的实施方式所述的方法。
第四方面,本申请实施例提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面及其任一种可能的实施方式的方法。
本申请实施例通过读取待更新字段,将所述待更新字段进行反序列化,获得所述待更新字段的反序列化字段,缓存在Java虚拟机堆中;在对所述待更新字段进行更新操作时,从所述Java虚拟机堆中获取所述待更新字段的反序列化字段进行更新,获得反序列化更新字段;将所述反序列化更新字段进行序列化,以执行IO操作;可以在首次读取某字段时,进行反序列化并缓存反序列化后的字段,提高再次读取、更新字段的效率,以及降低IO操作前的处理耗时。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1是本申请实施例提供的一种交易数据序列化方法的流程示意图;
图2是本申请实施例提供的一种交易所行情数据序列化处理的流程示意图;
图3是本申请实施例提供的一种数据序列化的流程示意图;
图4是本申请实施例提供的一种交易数据序列化装置的结构示意图;
图5是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
为了能够更好地理解本申请实施例,下面将对应用本申请实施例的方法进行介绍。
本申请实施例中提到的远程过程调用(Remote Procedure Call,RPC),是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
本申请实施例中提到的终端设备是可以与服务器进行通信的设备,本申请实施例中的服务器也称伺服器,是提供计算服务的设备,可以允许多个终端设备进行访问。上述终端设备包括但不限于台式计算机、移动终端,上述移动终端可包括各种具有无线通信功能的手持设备、可穿戴设备、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(User Equipment,UE),移动台(Mobile Station,MS)等等。
请参见图1,是本申请实施例提供的一种交易数据序列化方法的示意流程图,如图1所示该方法可包括:
101、读取待更新字段,将上述待更新字段进行反序列化,获得上述待更新字段的反序列化字段,缓存在Java虚拟机堆中。
本申请实施例中的执行主体可以为一种交易数据序列化装置,具体的,可以使用电子设备实现,上述电子设备可以为终端设备。本申请实施例中的方法可以用于处理结构化数据,可以包括交易系统相关的行情数据。
其中,上述待更新字段指的是本次需要更新的字段,此处待更新字段没有进行过反序列化,则在读取时需要进行反序列化,获得相应的反序列化字段,缓存在Java虚拟机堆中。
本申请实施例涉及到的虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机(Java Virtual Machine,JVM)有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
JVM内存分为堆内存和非堆内存,堆内存可以用于存放对象。上述Java虚拟机堆指的是堆内存。
在一种可选的实施方式中,上述方法还包括:
新建空对象时,对象实例化空的二进制数组;
填充属性时,对属性直接进行序列化,然后存放到上述二进制数组中。
本申请实施例中,需要网络传输或者持久化的对象,在虚拟机中以二进制数组形式存放。其中,上述序列化方式为二进制序列化方式,例如protobuf、hessian、thrift等,也可以根据具体场景采用自研序列化方案,本申请实施例对此不做限制。
本申请实施例中涉及到的protobuf全称Google Protocol Buffers,是google开发的一套用于数据存储,网络通信时用于协议编解码的工具库。protobuf是一种灵活高效的独立于语言平台的结构化数据表示方法。
本申请实施例中涉及到的Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。
本申请实施例中涉及到的Thrift是一种接口描述语言和二进制通讯协议,它被用来定义和创建跨语言的服务。它被当作一个远程过程调用(RPC)框架来使用,是由Facebook为“大规模跨语言服务开发”而开发的。
读取字段时,首次读取将会从二进制数组中反序列,并且只反序列化需要读取的字段,避免整体的反序列化,这样可以提高反序列化性能,而且反序列化后的字段会进行缓存,提高再次读取的效率。
102、在对上述待更新字段进行更新操作时,从上述Java虚拟机堆中获取上述待更新字段的反序列化字段进行更新,获得反序列化更新字段。
具体的,在需要进行更新操作时,可以从Java虚拟机堆中获取待更新字段的反序列化字段进行更新,获得相应的反序列化更新字段。不需要再次进行反序列化,而是直接从JVM堆内存中直接进行更新和读取。
103、将上述反序列化更新字段进行序列化,以执行IO操作。
更新字段完成之后可以对上述反序列化更新字段进行序列化,完成相应的IO操作。
本申请实施例中涉及到的IO操作,是将数据写入内存或从内存输出的过程。
在一种可选的实施方式中,上述在对上述待更新字段进行更新操作时,上述方法还包括:
记录更新字段的状态标识为预设标识;
上述将上述反序列化更新字段进行序列化,包括:
将上述预设标识对应的反序列化更新字段进行序列化。
具体的,在更新操作时,字节可以从缓存中获取该字段信息,然后更新,并将该字段标识设置为预设标识。
本申请实施例中涉及到的脏标识(Dirty Flag),可以用一个标志位(flag)来表示一组数据的状态。在满足条件的时候设置标志位,然后需要的时候检查(check)标志位。如果设置了标志位,那么表示这组数据处于dirty状态,需要重新计算或者同步。如果flag没有被设置,那么可以不计算(或者利用缓存的计算结果)。另外,在两次check之间,即使有多次标志位的设置,也只需要计算一次。作用在于:延缓计算或数据同步,甚至减少无谓的计算或者同步。
具体的,更新字段时可以将该字段标志位(flag)设置为dirty标识,进而可以根据dirty标识,序列化相应的字段,更新对象二进制数组。
在一种可选的实施方式中,在上述步骤101之前,上述方法还包括:
根据接入的行情数据汇总获得进程更新行情信息;
上述读取待更新字段,包括根据上述进程更新行情信息读取上述待更新字段;
上述方法还包括:
发布更新后的行情。
在交易领域,有两个特点:
(1)行情数据量大,如果数据能得到有效的压缩,那么可以大大减小网络压力,减少带宽使用,提升传输效率;
(2)交易从订单生成,到风控检查,到持仓管理,再到交易所下单,中间链路长,如果能减少服务间的通信延时,可以缩小下单延时,真正做到低延时交易。
对于交易所的数据处理,会将接入的行情数据进行汇总,然后发布出更新后的汇总行情。为了更好地说明上述方法步骤,以下进行举例说明。
请参见图2,图2为本申请实施例提供的一种交易所行情数据序列化处理的流程示意图。如图2所示,流程如下:
首先,根据接入的行情数据汇总获得进程更新行情信息;
读取待更新的字段,读取时需要反序列化,将反序列化的字段缓存在JVM堆中;
判断是否需要更新;若否,结束流程;
若进行该字段更新,更新字段时,字节从缓存中获取该字段信息,然后更新,并将该字段flag设置为dirty;
根据dirty标识,序列化对应字段,更新对象二进制数组,然后发布更新后的行情,结束流程。
在一种可选的实施方式中,在上述步骤102之前,上述方法还包括:
确定上述Java虚拟机堆中是否存在上述待处理字段的反序列化字段;
若是,执行上述步骤102;
若否,对上述待更新字段进行反序列化,获得上述待更新字段的反序列化字段,并缓存在上述Java虚拟机堆中。
具体的,更新字段和读取字段时,都是需要对对应字段进行反序列化,然后进行更新或者读取操作。若每次更新、每次读取都进行反序列化,那么当更新和读取操作很频繁时,将会导致性能下降。有鉴于此,本申请实施例中的方法在更新字段或者读取字段时,如果发现对应的字段没有反序列化,那么可以从二进制数据中进行反序列化,并将反序列化的结果缓存在JVM堆内存中;后续如果再有更新或者读取该字段的操作时,不需要再次从二进制数据中进行反序列化,而是直接从JVM堆内存中直接进行更新和读取,避免了频繁的序列化和反序列化操作,提高性能。
图3为本申请实施例提供的一种数据序列化的流程示意图,如图3所示,该流程包括:
1、新建二进制数组array;
2、更新字段,包括:
查看是否有缓存的字段(已反序列的字段);
若有,直接更新缓存字段field(n),并记录该字段flag为dirty;
若没有,新增缓存字段,赋更新的值,并记录该字段flag为dirty。
3、访问(读取)字段,包括:
查看是否有缓存的字段(已反序列的字段);
若有,返回;
若没有,反序列化array对应的字段,返回并缓存。
4、IO操作,包括:
根据dirty标识,序列化对应缓存字段,并全量更新array。
在一种可选的实施方式中,上述方法还包括:
在执行上述IO操作时,对二进制数据进行压缩。
通过压缩可以减小数据体积,提高传输效率。压缩方式可以采用snappy,lz4等,本申请实施例对此不做限制。
可选的,上述二进制数组采用堆外内存。
本申请实施例中提到的堆外内存(direct memory)是指由堆外内存直接分配,不会受垃圾收集器管理的内存区域。它主要用于配合堆内存使用,避免堆内存不足时内存溢出的情况。
二进制数组可以采用堆外内存,减少垃圾回收(garbage collection,gc)带来的性能影响,提升IO效率。而且对同一种对象来说,内存占用空间基本不变,申请的堆外内存可以复用,减少申请空间带来的性能损耗。
序列化组件是微服务中RPC所必须的组件,其性能直接决定了RPC性能。当前流行的序列化框架,比如protobuf、arvo、json等,都有一个共同特点,那就是只有在需要进行如持久化或网络传输时,才将java对象进行序列化,这样就导致在进行IO操作前,需要较长的序列化准备,从整个调用流程的调用上看,耗时比较长。同样的,读取持久化信息或者接收网络数据时,也需要先进行反序列化,然后进行使用。在网络传输频繁,持久化操作频繁,且字段数量多,实体类占用空间大的场景下,这样的序列化方式存在延迟高的问题。
本申请实施例中的交易数据序列化方法,可以在字段首次读取时,进行反序列化并缓存反序列化后的字段,提高再次读取、更新字段的效率,以降低IO操作前的处理耗时。
另外,更新字段时,由于更新字段操作比较频繁,但会进行更新的字段比例很少,针对该情况,本申请实施例中采用延迟序列化的方式,可以先创建临时变量进行存储,当确实要进行持久化或者网络传输时,才对这些变量进行序列化,并更新到数组中,这样可以避免频繁对字段进行序列化,同时,经常变更的字段,访问也比较频繁,延迟序列化可以提高访问的效率。根据实验结果,本申请实施例中的方法性能相比protobuf,效率可提高约70%。
在可选的实施方式中,本申请实施例中的方法也可以应用于其他类型数据的处理流程中,本申请实施例对此不作限制。
在前述方法实施例的基础上,本申请实施例还提供一种交易数据序列化装置。
请参见图4,图4是本申请实施例提供的一种交易数据序列化装置的结构示意图。如图4所示,该交易数据序列化装置400包括:
反序列化模块410,用于读取待更新字段,将上述待更新字段进行反序列化,获得上述待更新字段的反序列化字段,缓存在Java虚拟机堆中;
更新模块420,用于在对上述待更新字段进行更新操作时,从上述Java虚拟机堆中获取上述待更新字段的反序列化字段进行更新,获得反序列化更新字段;
序列化模块430,用于将上述反序列化更新字段进行序列化,以执行IO操作。
可选的,交易数据序列化装置400还包括记录模块440,用于在对上述待更新字段进行更新操作时,记录更新字段的状态标识为预设标识;
上述序列化模块430,具体用于将上述预设标识对应的反序列化更新字段进行序列化。
可选的,还包括获取模块450和发布模块460;其中:
上述获取模块450,用于在上述读取待更新字段之前,根据接入的行情数据汇总获得进程更新行情信息;
上述反序列化模块410,还用于根据上述进程更新行情信息读取上述待更新字段;
上述发布模块460,用于发布更新后的行情。
可选的,上述反序列化模块410,还用于在对上述待更新字段进行更新操作之前,确定上述Java虚拟机堆中是否存在上述待处理字段的反序列化字段;
若是,触发上述更新模块420执行从上述Java虚拟机堆中获取上述待更新字段的反序列化字段进行更新的步骤;
若否,对上述待更新字段进行反序列化,获得上述待更新字段的反序列化字段,并缓存在上述Java虚拟机堆中。
可选的,上述获取模块450还用于,新建空对象时,对象实例化空的二进制数组;
上述序列化模块430,还用于填充属性时,对属性直接进行序列化,然后存放到上述二进制数组中。
可选的,还包括压缩模块470,用于在执行上述IO操作时,对二进制数据进行压缩。
可选的,上述二进制数组采用堆外内存。
根据本申请实施例的具体实施方式,图1和图2所示的交易数据序列化方法涉及的步骤可以是由图4所示的交易数据序列化装置400中的各个模块来执行的,此处不再赘述。
通过本申请实施例的交易数据序列化装置400,交易数据序列化装置400通过读取待更新字段,将所述待更新字段进行反序列化,获得所述待更新字段的反序列化字段,缓存在Java虚拟机堆中;在对所述待更新字段进行更新操作时,从所述Java虚拟机堆中获取所述待更新字段的反序列化字段进行更新,获得反序列化更新字段;将所述反序列化更新字段进行序列化,以执行IO操作;可以在首次读取某字段时,进行反序列化并缓存反序列化后的字段,提高再次读取、更新字段的效率,以及降低IO操作前的处理耗时。
请参阅图5,图5是本申请实施例公开的一种电子设备的结构示意图。如图5所示,该电子设备500包括处理器501和存储器502,其中,电子设备500还可以包括总线503,处理器501和存储器502可以通过总线503相互连接,总线503可以是外设部件互连标准(Peripheral Component Interconnect,PCI)总线或扩展工业标准结构(ExtendedIndustry Standard Architecture,EISA)总线等。总线503可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。其中,电子设备500还可以包括输入输出设备504,输入输出设备504可以包括显示屏,例如液晶显示屏。存储器502用于存储包含指令的一个或多个程序;处理器501用于调用存储在存储器502中的指令执行上述图1或图2实施例中提到的部分或全部方法步骤。
应当理解,在本申请实施例中,所称处理器501可以是中央处理单元(CentralProcessing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
输入设备502可以包括触控板、指纹采传感器(用于采集用户的指纹信息和指纹的方向信息)、麦克风等,输出设备503可以包括显示器(LCD等)、扬声器等。
该存储器504可以包括只读存储器和随机存取存储器,并向处理器1101提供指令和数据。存储器504的一部分还可以包括非易失性随机存取存储器。例如,存储器504还可以存储设备类型的信息。
通过本申请实施例的电子设备500,电子设备500可以通过在用户发起对目标关键词的查询请求时,在词库中查询所述目标关键词是否存在对应的目标相关性词组,所述词库中存有多个相关性词组;若存在,从所述词库中获取所述目标相关性词组;使用所述目标相关性词组中的关键词进行搜索,获得搜索结果,返回给所述用户;可以对用户搜索关键词进行改写扩充,可以得到更加广泛、准确的搜索结果。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任何一种交易数据序列化方法的部分或全部步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (10)
1.一种交易数据序列化方法,其特征在于,所述方法包括:
读取待更新字段,将所述待更新字段进行反序列化,获得所述待更新字段的反序列化字段,缓存在Java虚拟机堆中;
在对所述待更新字段进行更新操作时,从所述Java虚拟机堆中获取所述待更新字段的反序列化字段进行更新,获得反序列化更新字段;
将所述反序列化更新字段进行序列化,以执行IO操作。
2.根据权利要求1所述的方法,其特征在于,所述在对所述待更新字段进行更新操作时,所述方法还包括:
记录更新字段的状态标识为预设标识;
所述将所述反序列化更新字段进行序列化,包括:
将所述预设标识对应的反序列化更新字段进行序列化。
3.根据权利要求1所述的方法,其特征在于,在所述读取待更新字段之前,所述方法还包括:
根据接入的行情数据汇总获得进程更新行情信息;
所述读取待更新字段,包括根据所述进程更新行情信息读取所述待更新字段;
所述方法还包括:
发布更新后的行情。
4.根据权利要求1所述的方法,其特征在于,在对所述待更新字段进行更新操作之前,所述方法还包括:
确定所述Java虚拟机堆中是否存在所述待处理字段的反序列化字段;
若是,执行从所述Java虚拟机堆中获取所述待更新字段的反序列化字段进行更新的步骤;
若否,对所述待更新字段进行反序列化,获得所述待更新字段的反序列化字段,并缓存在所述Java虚拟机堆中。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
新建空对象时,对象实例化空的二进制数组;
填充属性时,对属性直接进行序列化,然后存放到所述二进制数组中。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在执行所述IO操作时,对二进制数据进行压缩。
7.根据权利要求5所述的方法,其特征在于,所述二进制数组采用堆外内存。
8.一种交易数据序列化装置,其特征在于,包括:
反序列化模块,用于读取待更新字段,将所述待更新字段进行反序列化,获得所述待更新字段的反序列化字段,缓存在Java虚拟机堆中;
更新模块,用于在对所述待更新字段进行更新操作时,从所述Java虚拟机堆中获取所述待更新字段的反序列化字段进行更新,获得反序列化更新字段;
序列化模块,用于将所述反序列化更新字段进行序列化,以执行IO操作。
9.一种电子设备,其特征在于,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1-7任一项所述的方法。
10.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311020660.1A CN117076533A (zh) | 2023-08-14 | 2023-08-14 | 交易数据序列化方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311020660.1A CN117076533A (zh) | 2023-08-14 | 2023-08-14 | 交易数据序列化方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117076533A true CN117076533A (zh) | 2023-11-17 |
Family
ID=88710780
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311020660.1A Pending CN117076533A (zh) | 2023-08-14 | 2023-08-14 | 交易数据序列化方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117076533A (zh) |
-
2023
- 2023-08-14 CN CN202311020660.1A patent/CN117076533A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9817857B2 (en) | Deep cloning of objects using binary format | |
CN111090628A (zh) | 一种数据处理方法、装置、存储介质及电子设备 | |
CN106648569B (zh) | 目标序列化实现方法和装置 | |
US11640300B2 (en) | Byte comparison method for string processing and instruction processing apparatus | |
CN112199040B (zh) | 存储访问方法及智能处理装置 | |
EP3660651A1 (en) | Data accessing method, apparatus, and storage medium | |
US5574887A (en) | Apparatus and method for emulation routine pointer prefetch | |
CN111159040A (zh) | 一种测试数据生成方法、装置、设备及存储介质 | |
CN110825435A (zh) | 用于处理数据的方法和装置 | |
CN115470156A (zh) | 基于rdma的内存使用方法、系统、电子设备和存储介质 | |
CN111126619B (zh) | 一种机器学习方法与装置 | |
CN114781322B (zh) | Cpu芯片仿真加速中针对无mmu环境的内存状态恢复方法 | |
CN117076533A (zh) | 交易数据序列化方法、装置、电子设备及存储介质 | |
CN115495020A (zh) | 文件处理方法、装置、电子设备和可读存储介质 | |
CN114070892A (zh) | 数据传输方法和装置 | |
CN113656331A (zh) | 基于高低位的确定访问地址的方法和装置 | |
CN112364268A (zh) | 资源获取方法、装置、电子设备及存储介质 | |
CN102253940B (zh) | 树形控件处理数据的方法和装置 | |
CN115840682B (zh) | 基于sw64指令集的bios层级采样的运维监控方法及装置 | |
US6452599B1 (en) | Method and apparatus for generating a specific computer hardware component exception handler | |
CN114153383B (zh) | 一种车辆自动驾驶系统的数据压缩存储方法及装置 | |
CN117271840B (zh) | 图数据库的数据查询方法、装置及电子设备 | |
CN116991593B (zh) | 操作指令处理方法、装置、设备及存储介质 | |
CN118427199B (zh) | 多语言文案自适应适配方法及装置 | |
CN110134691B (zh) | 数据校验方法、装置、设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |