CN107729355A - 一种基于数据储存类型TVariant的数据存储方法及其装置 - Google Patents
一种基于数据储存类型TVariant的数据存储方法及其装置 Download PDFInfo
- 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
Links
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/22—Indexing; 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的数据存储方法,适用于基于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的数据存储装置所存储数据的读取装置,其特征在于,采用与子数据类型对应的运算符重载来获取相应的数据。
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)
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)
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 |
-
2017
- 2017-08-31 CN CN201710772894.XA patent/CN107729355B/zh active Active
Patent Citations (5)
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)
Title |
---|
潜继成等: "飞行参数数据文件通用I/O 接口设计", 《第14届中国系统仿真技术及其应用学术年会》 * |
Cited By (3)
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 |