CN107729355A - 一种基于数据储存类型TVariant的数据存储方法及其装置 - Google Patents

一种基于数据储存类型TVariant的数据存储方法及其装置 Download PDF

Info

Publication number
CN107729355A
CN107729355A CN201710772894.XA CN201710772894A CN107729355A CN 107729355 A CN107729355 A CN 107729355A CN 201710772894 A CN201710772894 A CN 201710772894A CN 107729355 A CN107729355 A CN 107729355A
Authority
CN
China
Prior art keywords
data
data storage
type
tvariant
stored
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.)
Granted
Application number
CN201710772894.XA
Other languages
English (en)
Other versions
CN107729355B (zh
Inventor
吕军亮
胡潜
王建平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Golden Master Network Technology Co Ltd
Original Assignee
Shanghai Golden Master Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Golden Master Network Technology Co Ltd filed Critical Shanghai Golden Master Network Technology Co Ltd
Priority to CN201710772894.XA priority Critical patent/CN107729355B/zh
Publication of CN107729355A publication Critical patent/CN107729355A/zh
Application granted granted Critical
Publication of CN107729355B publication Critical patent/CN107729355B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于数据储存类型TVariant的数据存储方法及其装置,其方法包括:首先判断待存储数据属于哪一种类型;当待存储数据属于已知子数据类型时,则将待存储数据按照该已知子数据类型进行存储;当待存储数据属于动态子数据类型时,则将待存储数据先序列为序列化数据,然后对序列化数据进行存储;数据储存类型的占用空间根据数据存储情况动态调整,当有数据要存储时,根据数据的长度增加数据储存类型的当前长度;数据储存类型的占用空间的属性为局部变量;调整数据储存类型的成员数量,根据数据存储情况进行动态调整,当有数据要存储时,在数据储存类型中增加新成员;将按照数据储存类型存储的数据,统一存放入数据容器中。

Description

一种基于数据储存类型TVariant的数据存储方法及其装置
技术领域
本发明涉及到一种数据储存领域,尤其涉及到一种基于数据储存类 型TVariant的数据存储方法,适用于基于C++的数据存储、访问的开发 场景。
背景技术
在使用C++11进行功能开发时,通常需要将不同类型的数据存储至 相同的数据容器(std::vector、std::map、std::list、std::set等), 并在同一个使用场景中,在不关心数据类型的条件下,为了达到“提 高开发效率,提高工程可维护性,提高功能的运行效率”的目的,进行 统一管理和访问。
现有技术中,存在数据存储类型,但是通常传统的数据存储类型中 只能存放同一类型的数据,例如,将数据存储类型比作是一个箱子,箱 子中有5个盒子,则这些盒子都只能放杯子,且不管是否放了杯子,盒 子数量始终是5个。
现有技术中,COM中的_variant_t、boost中的variant。其中,COM 为一种代码库,_variant_t为代码库COM中的一种数据存储类型,而 boost为另一种代码库,Variant为代码库boost中的一种数据存储类型, 缺点是:每次都要先定义有几个盒子,要改变盒子数量时还要重新定义, 导致代码量增加。
发明内容
针对上述技术问题,本发明的目的在于提供一种基于数据储存类型TVariant的数据存储方法,自定义了一种数据存储类型,叫做TVariant。 本发明中,各个盒子可以放不同的数据类型,且盒子数据是动态的,有 多少东西才有多少盒子,节约存储空间。
为实现上述目的,本发明是根据以下技术方案实现的:
一种基于数据储存类型TVariant的数据存储方法,其特征在于,按 照数据储存类型TVariant存储数据,其中,所述数据储存类型TVariant 具有已知子数据类型和动态子数据类型,包括如下步骤:
步骤S1:首先判断待存储数据属于哪一种类型;
步骤S2:当待存储数据属于已知子数据类型时,则将待存储数据按 照该已知子数据类型进行存储;当待存储数据属于动态子数据类型时, 则将待存储数据先序列为序列化数据,然后对序列化数据进行存储;
步骤S3:将按照数据储存类型TVariant存储的数据,统一存放入一 个数据容器中。
上述技术方案中,所述数据储存类型TVariant的占用空间根据数据 存储情况动态调整,当有数据要存储时,根据数据的长度增加数据储存 类型TVariant的当前长度。
上述技术方案中,所述数据储存类型TVariant的占用空间的属性为 局部变量。
上述技术方案中,调整所述数据储存类型TVariant的成员数量,根 据数据存储情况进行动态调整,当有数据要存储时,在数据储存类型 TVariant中增加新的成员。
本发明的一种根据上述的基于数据储存类型TVariant的数据存储方 法所存储数据的读取方法,其特征在于,采用与子数据类型对应的运算 符重载来获取相应的数据。
上述技术方案中,按照数据储存类型TVariant存储数据,其中,所 述数据储存类型TVariant具有已知子数据类型和动态子数据类型,包括
数据判断装置:判断待存储数据属于哪一种类型;
数据存储装置:当待存储数据属于已知子数据类型时,则将待存储 数据按照该已知子数据类型进行存储;当待存储数据属于动态子数据类 型时,则将待存储数据先序列为序列化数据,然后对序列化数据进行存 储;
数据存放装置:用于将按照数据储存类型TVariant存储的数据,统 一存放入一个数据容器中。
上述技术方案中,所述数据储存类型TVariant的占用空间根据数据 存储情况动态调整,当有数据要存储时,根据数据的长度增加数据储存 类型TVariant的当前长度。
上述技术方案中,所述数据储存类型TVariant的占用空间的属性为 局部变量。
上述技术方案中,调整所述数据储存类型TVariant的成员数量,根 据数据存储情况进行动态调整,当有数据要存储时,在数据储存类型 TVariant中增加新的成员。
本发明的一种根据上述的基于数据储存类型TVariant的数据存储装 置所存储数据的读取装置,其特征在于,采用与子数据类型对应的运算 符重载来获取相应的数据。
本发明与现有技术相比,具有如下有益效果:
本发明没有编码限制,可以先序列化为字符串,然后存储;此外, 存储char数据缓存时,是进行的“浅拷贝”,对内存的开销极小;本发 明对char数据进行的访问是“并发安全”的。其中,浅拷贝是指对象拷 贝时,不创建新的对象,只拷贝内部对象的引用或指针。并发安全是指: 多线程访问同一代码或共享数据时,不会产生不确定结果。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面对本发 明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例 是本发明一部分实施例,而不是全部的实施例。
COM中的_variant_t会出现破坏数据的致命缺陷。在特定的编码环境 下后对特定字符进行存储后,再对该数据进行访问时,无法得到与存储 之前一致的数据,产生乱码。boost中的variant有较高的使用门槛,使用 该类型之前需要有一定的基础。
本发明的一种基于数据储存类型TVariant的数据存储方法,其特征 在于,按照数据储存类型TVariant存储数据,其中,所述数据储存类型 TVariant具有已知子数据类型和动态子数据类型,包括如下步骤:
步骤S1:首先判断待存储数据属于哪一种类型;
步骤S2:当待存储数据属于已知子数据类型时,则将待存储数据按 照该已知子数据类型进行存储;当待存储数据属于动态子数据类型时, 则将待存储数据先序列为序列化数据,然后对序列化数据进行存储;
步骤S3:将按照数据储存类型TVariant存储的数据,统一存放入一 个数据容器中。
数据储存类型TVariant的占用空间根据数据存储情况动态调整,当 有数据要存储时,根据数据的长度增加数据储存类型TVariant的当前长 度。
数据储存类型TVariant的占用空间的属性为局部变量。
调整数据储存类型TVariant的成员数量,根据数据存储情况进行动 态调整,当有数据要存储时,在数据储存类型TVariant中增加新的成员。
本发明的一种根据上述的基于数据储存类型TVariant的数据存储方 法所存储数据的读取方法,采用与子数据类型对应的运算符重载来获取 相应的数据。
按照数据储存类型TVariant存储数据,其中,所述数据储存类型 TVariant具有已知子数据类型和动态子数据类型,包括
数据判断装置:判断待存储数据属于哪一种类型;
数据存储装置:当待存储数据属于已知子数据类型时,则将待存储 数据按照该已知子数据类型进行存储;当待存储数据属于动态子数据类 型时,则将待存储数据先序列为序列化数据,然后对序列化数据进行存 储;
数据存放装置:用于将按照数据储存类型TVariant存储的数据,统 一存放入一个数据容器中。
数据储存类型TVariant的占用空间根据数据存储情况动态调整,当 有数据要存储时,根据数据的长度增加数据储存类型TVariant的当前长 度。
数据储存类型TVariant的占用空间的属性为局部变量。
调整所述数据储存类型TVariant的成员数量,根据数据存储情况进 行动态调整,当有数据要存储时,在数据储存类型TVariant中增加新的 成员。
本发明的一种根据上述的基于数据储存类型TVariant的数据存储装 置所存储数据的读取装置,其特征在于,采用与子数据类型对应的运算 符重载来获取相应的数据。
具体实施例一
在期货、证券等领域进行中,对交易接口进行调用后,服务器会进 行对应的响应,返回响应数据,这些数据的类型是不一致的。在将数据 存放在TVariant时,TVariant会提高类型访问的效率,原因是可序列化的 数据,若为已有数据类型则直接作为新成员,为便于理解,可以将数据 存储为新成员比喻为将数据放入存储数据的“盒子”,若不是已有数据类 型则先先序列化为字符串再类型存储;然后,将不同类型的数据先统一 都转化为TVariant数据类型进行存储,已有数据类型对应的变量类型是 穷举法穷举出的。这样在不同类型的数据在进入特定分支进行处理前, 可以统一存放在一个数据容器中。
数据存入TVariant后,如何读取出进入分支是采用与数据类型对应 的运算符重载来获取相应的数据。这样,TVariant根据放入的类型来占用 内存,节省内存。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并 不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内 做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况 下,本申请的实施例和实施例中的特征可以任意相互组合。

Claims (10)

1.一种基于数据储存类型TVariant的数据存储方法,其特征在于,按照数据储存类型TVariant存储数据,其中,所述数据储存类型TVariant具有已知子数据类型和动态子数据类型,包括如下步骤:
步骤S1:首先判断待存储数据属于哪一种类型;
步骤S2:当待存储数据属于已知子数据类型时,则将待存储数据按照该已知子数据类型进行存储;当待存储数据属于动态子数据类型时,则将待存储数据先序列为序列化数据,然后对序列化数据进行存储;
步骤S3:将按照数据储存类型TVariant存储的数据,统一存放入一个数据容器中。
2.根据权利要求1所述的一种基于数据储存类型TVariant的数据存储方法,其特征在于,所述数据储存类型TVariant的占用空间根据数据存储情况动态调整,当有数据要存储时,根据数据的长度增加数据储存类型TVariant的当前长度。
3.根据权利要求1所述的一种基于数据储存类型TVariant的数据存储方法,其特征在于,所述数据储存类型TVariant的占用空间的属性为局部变量。
4.根据权利要求1所述的一种基于数据储存类型TVariant的数据存储方法,其特征在于,调整所述数据储存类型TVariant的成员数量,根据数据存储情况进行动态调整,当有数据要存储时,在数据储存类型TVariant中增加新的成员。
5.一种根据权利要求1所述的基于数据储存类型TVariant的数据存储方法所存储数据的读取方法,其特征在于,采用与子数据类型对应的运算符重载来获取相应的数据。
6.一种基于数据储存类型TVariant的数据存储装置,其特征在于,按照数据储存类型TVariant存储数据,其中,所述数据储存类型TVariant具有已知子数据类型和动态子数据类型,包括:
数据判断装置:判断待存储数据属于哪一种类型;
数据存储装置:当待存储数据属于已知子数据类型时,则将待存储数据按照该已知子数据类型进行存储;当待存储数据属于动态子数据类型时,则将待存储数据先序列为序列化数据,然后对序列化数据进行存储;
数据存放装置:用于将按照数据储存类型TVariant存储的数据,统一存放入一个数据容器中。
7.根据权利要求6所述的一种基于数据储存类型TVariant的数据存储装置,其特征在于,所述数据储存类型TVariant的占用空间根据数据存储情况动态调整,当有数据要存储时,根据数据的长度增加数据储存类型TVariant的当前长度。
8.根据权利要求6所述的一种基于数据储存类型TVariant的数据存储装置,其特征在于,所述数据储存类型TVariant的占用空间的属性为局部变量。
9.根据权利要求6所述的一种基于数据储存类型TVariant的数据存储装置,其特征在于,调整所述数据储存类型TVariant的成员数量,根据数据存储情况进行动态调整,当有数据要存储时,在数据储存类型TVariant中增加新的成员。
10.一种根据权利要求6所述的基于数据储存类型TVariant的数据存储装置所存储数据的读取装置,其特征在于,采用与子数据类型对应的运算符重载来获取相应的数据。
CN201710772894.XA 2017-08-31 2017-08-31 一种基于数据储存类型TVariant的数据存储方法及其装置 Active CN107729355B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710772894.XA CN107729355B (zh) 2017-08-31 2017-08-31 一种基于数据储存类型TVariant的数据存储方法及其装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710772894.XA CN107729355B (zh) 2017-08-31 2017-08-31 一种基于数据储存类型TVariant的数据存储方法及其装置

Publications (2)

Publication Number Publication Date
CN107729355A true CN107729355A (zh) 2018-02-23
CN107729355B CN107729355B (zh) 2020-12-29

Family

ID=61205594

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710772894.XA Active CN107729355B (zh) 2017-08-31 2017-08-31 一种基于数据储存类型TVariant的数据存储方法及其装置

Country Status (1)

Country Link
CN (1) CN107729355B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109213745A (zh) * 2018-08-27 2019-01-15 郑州云海信息技术有限公司 一种分布式文件存储方法、装置、处理器及存储介质
CN110995832A (zh) * 2019-11-29 2020-04-10 安徽江淮汽车集团股份有限公司 车辆数据监控方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7912877B2 (en) * 2005-05-20 2011-03-22 Microsoft Corporation Leveraging garbage collection to dynamically infer heap invariants
CN103294652A (zh) * 2012-02-27 2013-09-11 腾讯科技(深圳)有限公司 一种数据转换方法及系统
CN103403713A (zh) * 2011-03-14 2013-11-20 亚马逊技术股份有限公司 文件系统中的文件变体
CN103778248A (zh) * 2014-02-18 2014-05-07 成都致云科技有限公司 高效自描述的复杂数据对象序列化方法
US20170242588A1 (en) * 2016-02-19 2017-08-24 Fujitsu Limited Variant information processing device and method

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7912877B2 (en) * 2005-05-20 2011-03-22 Microsoft Corporation Leveraging garbage collection to dynamically infer heap invariants
CN103403713A (zh) * 2011-03-14 2013-11-20 亚马逊技术股份有限公司 文件系统中的文件变体
CN103294652A (zh) * 2012-02-27 2013-09-11 腾讯科技(深圳)有限公司 一种数据转换方法及系统
CN103778248A (zh) * 2014-02-18 2014-05-07 成都致云科技有限公司 高效自描述的复杂数据对象序列化方法
US20170242588A1 (en) * 2016-02-19 2017-08-24 Fujitsu Limited Variant information processing device and method

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
潜继成等: "飞行参数数据文件通用I/O 接口设计", 《第14届中国系统仿真技术及其应用学术年会》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109213745A (zh) * 2018-08-27 2019-01-15 郑州云海信息技术有限公司 一种分布式文件存储方法、装置、处理器及存储介质
CN109213745B (zh) * 2018-08-27 2022-04-22 郑州云海信息技术有限公司 一种分布式文件存储方法、装置、处理器及存储介质
CN110995832A (zh) * 2019-11-29 2020-04-10 安徽江淮汽车集团股份有限公司 车辆数据监控方法及系统

Also Published As

Publication number Publication date
CN107729355B (zh) 2020-12-29

Similar Documents

Publication Publication Date Title
CN103544269B (zh) 目录的存储方法、查询方法及节点控制器
EP3001871B1 (en) Systems and methods for addressing a media database using distance associative hashing
CN103118132B (zh) 一种面向时空数据的分布式缓存系统及方法
CA2906199A1 (en) Systems and methods for addressing a media database using distance associative hashing
CN107729355A (zh) 一种基于数据储存类型TVariant的数据存储方法及其装置
CN106503158A (zh) 数据同步方法及装置
CN106909539A (zh) 图像检索系统、服务器、数据库及相关的方法
JP2019212243A (ja) 学習識別装置および学習識別方法
CN107102896A (zh) 一种多级缓存的操作方法、装置及电子设备
CN104361296A (zh) 一种并行的大容量访问控制列表的查找方法
JP2019212171A (ja) 学習装置および学習方法
CN106020891A (zh) 页面加载的方法和装置
US8024374B2 (en) Computer object conversion using an intermediate object
CN108829747B (zh) 数据加载方法及装置
CN106909552A (zh) 图像检索服务器、系统、相关检索及排错方法
Huang et al. Robust simultaneous localization and mapping in low‐light environment
CN104219271B (zh) 基于多线程异步下载页面的多服务器同步方法
CN109359205A (zh) 一种基于地理格网的遥感影像切分方法及设备
CN104268146A (zh) 一种适合分析型应用的静态b+树索引方法
CN106469042B (zh) 伪随机数的生成方法和装置
CN108614740A (zh) 基于进程间共享内存方式生成唯一id的方法及系统
CN110427366A (zh) 基于phoenix改造hbase旧系统的索引同步方法、装置及系统
CN108875073A (zh) 一种遥感影像的快速栅格转矢量方法
CN111061724B (zh) 用于配电自动化系统的高速实时数据库管理方法和装置
CN106874124A (zh) 一种基于SQLite快速加载技术的面向对象用电信息采集终端

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
GR01 Patent grant
GR01 Patent grant