CN101714165B - 一种数据导入的方法 - Google Patents
一种数据导入的方法 Download PDFInfo
- Publication number
- CN101714165B CN101714165B CN2009102311837A CN200910231183A CN101714165B CN 101714165 B CN101714165 B CN 101714165B CN 2009102311837 A CN2009102311837 A CN 2009102311837A CN 200910231183 A CN200910231183 A CN 200910231183A CN 101714165 B CN101714165 B CN 101714165B
- Authority
- CN
- China
- Prior art keywords
- data
- memory headroom
- described memory
- module
- database
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据导入的方法,包括下述步骤:创建数据抽象类作为数据库的基类,为所述数据抽象类申请内存空间;利用所述数据抽象类从数据库中读取数据至所述内存空间;UI模块从所述内存空间中导入所需的数据;其中,所述内存空间的大小根据UI模块每次可显示的数据量来确定。本发明通过创建数据抽象类作为数据导入管理的中间层,用于数据的导入和内存的管理,实现了利用较小的内存空间将大量数据分批提供给UI模块来使用的目的。
Description
技术领域
本发明涉及一种导入数据的方法,具体地说,是涉及一种小内存分步数据导入的方法,尤其涉及一种嵌入式系统分步导入数据的方法,属于数据处理技术领域。
背景技术
随着嵌入式技术的发展和用户需求的增加,嵌入式系统越来越多地被应用在机顶盒、高清播放器等多媒体设备上。在这些多媒体设备上,用户界面UI作为用户与设备交互的接口,可以用来进行列表显示、播放音视频文件及图片等。在执行这些操作时,UI模块往往需要大量的数据,这些数据是按照UI每次可显示的数据量一部分一部分地导入到UI模块中,然后在UI上显示。图1是现有嵌入式系统数据导入方法的基本原理示意图,如图1所示,现有将这些列表、音视频及图片等数据导入时采用下述过程:当上层UI模块需要数据时,直接从存储在硬盘等存储设备上的数据库中查找所有符合条件的数据,然后根据这些数据一次性申请所需的内存空间,并将所有符合条件的数据一次性全部从数据库读取到所申请的内存空间中。UI模块一次性返回符合要求的全部数据,然后按照UI每次可显示的数据量从所述内存中一部分一部分地读取数据,并在UI上显示。这种数据导入的方法存在下述缺点:一方面,由于嵌入式系统的内存较小,一般在128M以下,如果数据库中符合条件的数据量较大,就会占用大量的系统内存,容易造成内存不足,导致整个系统崩溃;另一方面,一次性导入大量数据需要花费较长的时间,从而导致系统响应速度缓慢,不能充分发挥嵌入式系统快速响应的特点。
发明内容
本发明针对现有技术在导入大量数据时存在的占用内存大、消耗时间多的技术问题,提供了一种数据导入的方法,通过创建数据抽象类作为数据导入管理的中间层,用于数据的导入和内存的管理,实现了利用较小的内存空间将大量数据分批提供给UI模块来使用的目的。
为解决上述技术问题,本发明采用以下技术方案予以实现:
一种数据导入的方法,包括下述步骤:
创建数据抽象类作为数据库的基类,为所述数据抽象类申请内存空间;
利用所述数据抽象类从数据库中读取数据至所述内存空间;
UI模块从所述内存空间中导入所需的数据;
其中,所述内存空间的大小根据UI模块每次可显示的数据量来确定。
根据本发明,所述内存空间的大小可以设定为UI模块每次可显示的数据量所占据的空间的4-5倍。
根据本发明,在利用所述数据抽象类从数据库中读取数据至所述内存空间时,若数据库中符合所述数据抽象类的数据不大于所述内存空间的存储量,则将所有符合所述数据抽象类的数据全部读取至所述内存空间中;若数据库中符合所述数据抽象类的数据大于所述内存空间的存储量,则只读取所述内存空间所能存储的数据至所述内存空间中。
根据本发明,在创建数据抽象类之前,还包括UI模块启动、发出查询数据请求的步骤。
根据本发明,在UI模块导入数据时,若所述内存空间中不存在UI模块所需的数据,则更新所述内存空间中的数据。
根据本发明,更新所述内存空间中的数据可按照下述过程实现:
判断所述内存空间是否还存在未写入数据的空闲区域;
在所述内存空间存在未写入数据的空闲区域时,利用所述数据抽象类从数据库中读取UI模块所需的数据至所述空闲区域;
在所述内存空间不存在未写入数据的空闲区域时,擦除所述内存空间中较旧的数据,然后利用所述数据抽象类从数据库中读取UI模块所需的数据并添加至所述内存空间。
根据本发明,在上述更新内存空间的过程中,若擦除所述内存空间中较旧的数据失败,则数据抽象类只维护现有内存空间中的正确数据,而丢弃擦除失败的数据,并且发出错误通知给UI模块。
进一步地,擦除所述内存空间中较旧的数据以更新内存空间的方法为:
若UI模块所需的数据相对于所述内存空间中已存储的数据是向上移动的,则擦除所述内存空间中后半部分的数据,并将所述内存空间中存储的前半部分的数据移动到内存空间的后半部分中,然后将从数据库中读取的UI模块所需的数据添加到所述内存空间的前半部分中;
若UI模块所需的数据相对于所述内存空间中已存储的数据是向下移动的,则擦除所述内存空间中前半部分的数据,并将所述内存空间中存储的后半部分的数据移动到内存空间的前半部分中,然后将从数据库中读取的UI模块所需的数据添加到所述内存空间的后半部分中。
根据本发明,若UI模块停止数据请求,则销毁所创建的数据抽象类,释放相应的内存空间。
根据本发明,所述数据抽象类可以用C++容器封装。
与现有技术相比,本发明的优点和积极效果是:本发明在不改变原有系统架构的基础上,通过创建数据抽象类维护一小块内存空间,在上层UI模块需要数据库中的具体数据时,直接从数据抽象类维护的小块内存空间中导入数据;若导入失败,再去操作数据库,更新小块内存空间数据,满足UI模块的需求,实现将大量数据分批导入以供UI模块来使用的目的。在更新数据时,不需要重新申请内存空间,只需将原内存空间中的数据擦除重写即可,因此,在很大程度上降低了内存的占用,提高了系统的稳定性。由于UI模块所需的数据前后联系性比较大、空间跳跃性较小,从理论上保证了使用较小的内存空间保存的局部数据能够满足大多数的数据需求,有效避免了传统方法一次性申请内存空间、一次性导入数据而导致内存骤降、占用大量CPU时间的问题。且由于数据抽象类只维护一小块内存空间,不会进行其他内存的相关操作,进一步提高了系统响应速度。
附图说明
图1是现有嵌入式系统数据导入方法的基本原理示意图;
图2是本发明所述数据导入方法的基本原理示意图;
图3是本发明所述数据导入方法一个实施例的工作流程图;
图4是图2实施例中的内存空间管理的具体示意图。
具体实施方式
下面结合附图对本发明作进一步详细的说明。
本发明针对现有技术中嵌入式系统等具有小内存的系统的UI模块访问数据库中的大量数据时占用内存大、消耗时间多这一不足,提出了一种高效、节省内存的数据导入方法。
如图2本发明所述数据导入方法的基本原理示意图所示,本发明在保持系统原有架构不变的前提下,在数据导入时创建数据抽象类,作为系统内存与数据库之间的中间层。该数据抽象类作为数据库的一个基类,在UI模块启动后,系统将会为该数据抽象类申请内存空间,所述内存空间可根据UI模块每次显示的数据量来确定。在UI模块需要数据时,向数据库查询所需的数据,而数据导入与内存的管理工作全部都封装在数据抽象类中。此时,数据库将根据UI模块的需求,对数据抽象类所维护的内存空间进行相应的数据导入与擦除等操作。若UI模块从数据抽象类维护的内存空间中成功查询到数据,则直接返回给UI模块使用。若从该内存空间中找不到数据,则需要从数据库中读取UI所需的数据,来更新内存空间。所述数据抽象类只维护一小块内存空间,不会进行其他内存的相关操作。
图3示出了本发明所述数据导入方法一个实施例的工作流程图,该实施例以内存较小的嵌入式系统为例,其执行数据导入的具体步骤如下:
S101:数据导入流程开始。
S102:系统UI模块启动,向数据库发出查询数据的请求。
S103:创建数据抽象类,向系统申请内存空间。
该实施例的数据抽象类用C++容器来封装,所申请的内存空间设定为UI模块每次可显示的数据量所占据的空间的4-5倍,且将所述内存空间平均分配成两块,分别为内存空间前半部分和内存空间后半部分,如图4中的内存空间管理的具体示意图所示。
之所以将所申请的内存空间仅设定为UI模块每次可显示的数据量所占据的空间的4-5倍,其大小可能在几百K以下,即可满足UI模块对任何数据量的需求,理论依据是:由于UI模块所需的数据前后联系性比较大、空间跳跃性较小,以UI列表显示为例,列表所需要的数据仅是相对于当前数据的上一个数据、下一个数据、上一页数据或后一页数据等,如图4所示,UI模块所需的数据仅在图中的虚线框标示的范围内波动。因此,只需将内存空间设定为UI模块每次可显示的数据量所占据的空间的4-5倍,即可满足UI列表的所有操作需求,且不影响系统的响应时间。
S104:利用所创建的数据抽象类从数据库读取UI所需的有效数据至所述内存空间中。
在该步骤中,若数据库中符合所述数据抽象类的数据不大于所述内存空间的存储量,则将所有符合所述数据抽象类的数据全部读取至所述内存空间中;若数据库中符合所述数据抽象类的数据大于所述内存空间的存储量,则只读取所述内存空间所能存储的数据至所述内存空间中。
S105:将当前焦点数据导入至UI模块中。
若是首次导入数据,则当前焦点数据是内存空间中的第一个数据;若不是首次导入数据,则当前焦点数据可能位于内存空间中的任一位置,如图4所示,当前焦点数据一部分位于内存空间前半部分的下部,另一部分位于内存空间后半部分的上部。
S106:判断UI模块是否还有数据请求。若有,执行步骤S107;否则,转至步骤S112。
S107:在UI模块还有数据请求时,判断内存空间是否还存在UI模块所需的数据。若判断结果为是,转至步骤S105,将新的当前焦点数据导入至UI模块中,供UI模块使用;若判断结果为否,执行步骤S108。
S108:在内存空间中不存在UI模块所需的数据时,需要更新内存空间中的数据。首先判断内存空间是否还有未写入数据的空闲区域。若判断结果为是,转至步骤S104,利用所创建的数据抽象类从数据库读取UI所需的有效数据至所述内存空间中的空闲区域,实现内存空间数据的更新,满足UI模块的数据需求;若判断结果为否,执行步骤S109。
S 109:在更新内存空间中的数据时,若内存空间不存在未写入数据的空闲区域,需要擦除内存空间中较旧的数据。
擦除所述内存空间中较旧的数据以更新内存空间,可采用下述方法来进行:
若UI模块所需的数据相对于所述内存空间中已存储的数据是向上移动的,则擦除所述内存空间中后半部分的数据,并将所述内存空间中存储的前半部分的数据移动到内存空间的后半部分中,然后将从数据库中读取的UI模块所需的数据添加到所述内存空间的前半部分中;
若UI模块所需的数据相对于所述内存空间中已存储的数据是向下移动的,则擦除所述内存空间中前半部分的数据,并将所述内存空间中存储的后半部分的数据移动到内存空间的前半部分中,然后将从数据库中读取的UI模块所需的数据添加到所述内存空间的后半部分中。
在更新UI模块所需的数据时,不需要重新申请存储空间,只需将数据抽象类所维护的内存空间中的数据进行更新即可,从而在很大程度上降低了内存的占用,提高了系统的稳定性。
S110:判断内存空间较旧的数据是否擦除成功。若擦除成功,转至步骤S104,利用所创建的数据抽象类从数据库读取UI所需的有效数据至所述内存空间中新擦除出的空闲区域,实现内存空间数据的更新,满足UI模块的数据需求;若擦除不成功,执行步骤S111。
S111:若擦除内存空间失败,则数据抽象类只维护现有内存空间中的正确数据,而丢弃擦除失败的数据,并且发出错误通知给UI模块,告知UI模块读取不到其所需的数据,让UI模块进行相关的错误提示和容错处理。然后转至步骤S113。
S112:该步骤是由步骤S106转来,在UI模块没有数据请求时,结束数据导入,销毁所创建的数据抽象类,释放内存空间以回归系统资源。然后,转至步骤S113。
S113:数据导入流程结束。
上述实施例在不改变嵌入式系统原有系统架构的基础上,针对嵌入式系统的内存小、响应速度快的特点,利用尽可能小的系统内存分批导入数据库中的大量数据,从而高效地为UI模块提供所需的数据,降低了嵌入式系统的内存占用,减小了UI模块和数据库之间的耦合度,满足了系统各模块间高内聚、低耦合的性能要求,提高了系统的整体性能。
当然,以上所述仅是本发明的一种优选实施方式而已,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (9)
1.一种数据导入的方法,其特征在于,包括下述步骤:
创建数据抽象类作为数据库的基类,为所述数据抽象类申请内存空间;
利用所述数据抽象类从数据库中读取数据至所述内存空间;
UI模块从所述内存空间中导入所需的数据;
其中,所述内存空间的大小为UI模块每次可显示的数据量所占据的空间的4-5倍。
2.根据权利要求1所述的数据导入的方法,其特征在于,在利用所述数据抽象类从数据库中读取数据至所述内存空间的步骤中,若数据库中符合所述数据抽象类的数据不大于所述内存空间的存储量,则将所有符合所述数据抽象类的数据全部读取至所述内存空间中;若数据库中符合所述数据抽象类的数据大于所述内存空间的存储量,则只读取所述内存空间所能存储的数据至所述内存空间中。
3.根据权利要求1所述的数据导入的方法,其特征在于,在创建数据抽象类之前,还包括UI模块启动、发出查询数据请求的步骤。
4.根据权利要求1至3中任一项所述的数据导入的方法,其特征在于,若所述内存空间中不存在UI模块所需的数据,则更新所述内存空间中的数据。
5.根据权利要求4所述的数据导入的方法,其特征在于,更新所述内存空间中的数据的具体过程如下:
判断所述内存空间是否还存在未写入数据的空闲区域;
在所述内存空间存在未写入数据的空闲区域时,利用所述数据抽象类从数据库中读取UI模块所需的数据至所述空闲区域;
在所述内存空间不存在未写入数据的空闲区域时,擦除所述内存空间中较旧的数据,然后利用所述数据抽象类从数据库中读取UI模块所需的数据并添加至所述内存空间。
6.根据权利要求5所述的数据导入的方法,其特征在于,若擦除所述内存空间中较旧的数据失败,则数据抽象类只维护现有内存空间中的正确数据,而丢弃擦除失败的数据,并且发出错误通知给UI模块。
7.根据权利要求6所述的数据导入的方法,其特征在于,擦除所述内存空间中较旧的数据以更新内存空间的方法为:
若UI模块所需的数据相对于所述内存空间中已存储的数据是向上移动的,则擦除所述内存空间中后半部分的数据,并将所述内存空间中存储的前半部分的数据移动到内存空间的后半部分中,然后将从数据库中读取的UI模块所需的数据添加到所述内存空间的前半部分中;
若UI模块所需的数据相对于所述内存空间中已存储的数据是向下移动的,则擦除所述内存空间中前半部分的数据,并将所述内存空间中存储的后半部分的数据移动到内存空间的前半部分中,然后将从数据库中读取的UI模块所需的数据添加到所述内存空间的后半部分中。
8.根据权利要求1所述的数据导入的方法,其特征在于,若UI模块停止数据请求,则销毁所创建的数据抽象类,释放相应的内存空间。
9.根据权利要求1所述的数据导入的方法,其特征在于,所述数据抽象类用C++容器封装。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102311837A CN101714165B (zh) | 2009-12-08 | 2009-12-08 | 一种数据导入的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102311837A CN101714165B (zh) | 2009-12-08 | 2009-12-08 | 一种数据导入的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101714165A CN101714165A (zh) | 2010-05-26 |
CN101714165B true CN101714165B (zh) | 2011-08-17 |
Family
ID=42417811
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009102311837A Active CN101714165B (zh) | 2009-12-08 | 2009-12-08 | 一种数据导入的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101714165B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104866360B (zh) * | 2015-06-05 | 2017-12-08 | 四川英杰电气股份有限公司 | 一种电熔焊机的usb数据导入方法 |
CN110110024B (zh) * | 2019-04-29 | 2021-12-17 | 东南大学 | 一种大容量vct文件导入空间数据库方法 |
CN110865883B (zh) * | 2019-09-23 | 2022-06-03 | 平安科技(深圳)有限公司 | 一种大批量数据导入方法、装置、计算机设备及存储介质 |
CN111598535B (zh) * | 2020-05-09 | 2023-06-13 | 西安精雕软件科技有限公司 | 一种基础物料的导入方法、系统、计算机设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1281613A (zh) * | 1997-10-07 | 2001-01-24 | 卡纳尔股份有限公司 | 多线程数据处理器 |
CN1635482A (zh) * | 2003-12-29 | 2005-07-06 | 北京中视联数字系统有限公司 | 一种嵌入式系统内存管理的方法 |
US7346917B2 (en) * | 2001-05-21 | 2008-03-18 | Cyberview Technology, Inc. | Trusted transactional set-top box |
-
2009
- 2009-12-08 CN CN2009102311837A patent/CN101714165B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1281613A (zh) * | 1997-10-07 | 2001-01-24 | 卡纳尔股份有限公司 | 多线程数据处理器 |
US7346917B2 (en) * | 2001-05-21 | 2008-03-18 | Cyberview Technology, Inc. | Trusted transactional set-top box |
CN1635482A (zh) * | 2003-12-29 | 2005-07-06 | 北京中视联数字系统有限公司 | 一种嵌入式系统内存管理的方法 |
Non-Patent Citations (1)
Title |
---|
辛北军 等.数字电视机顶盒Loader系统的设计与实现.《信息技术与信息化》.2006,(第4期),134-136. * |
Also Published As
Publication number | Publication date |
---|---|
CN101714165A (zh) | 2010-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102012831B (zh) | 基于Linux平台的OTA升级方法 | |
CN102855193B (zh) | 非易失性存储系统中未使用的逻辑地址的挂载时去映射 | |
CN102096639B (zh) | 用于修剪在非易失性闪速介质上的数据的方法 | |
CN102932777B (zh) | 一种终端应用的更新方法和用户终端 | |
CN100543750C (zh) | 一种基于web应用的矩阵式数据缓存方法及装置 | |
CN100511132C (zh) | 一种布局和访问用户界面组件的方法和系统 | |
CN101714165B (zh) | 一种数据导入的方法 | |
CN101334758B (zh) | 用于嵌入式系统扩展存储空间的装置和方法 | |
CN103631958A (zh) | 一种页面自动适配实现内容多屏展示的方法 | |
CN102541538A (zh) | 一种基于移动终端的图片显示方法及装置 | |
CN101014929A (zh) | 使用nvram进行存储器管理的系统、方法、计算机可读介质和设备 | |
CN103049287A (zh) | 移动终端和移动终端应用安装的方法 | |
CN102650946B (zh) | 在手持终端加载显示图形界面的方法 | |
CN102982044A (zh) | 一种网页浏览方法及装置 | |
CN102981990A (zh) | 采用Android平台终端设备的数据传输方法及装置 | |
CN103699554A (zh) | 一种网页数据调用方法及装置 | |
CN102411629A (zh) | 基于android系统的文件扫描方法及装置 | |
CN102314368A (zh) | 更新服务器程序的配置数据的方法及设备 | |
CN104903869A (zh) | 用于管理存储器的方法和设备 | |
CN102902630A (zh) | 一种访问本地文件的方法和装置 | |
CN103208128A (zh) | 显示图片的方法及装置 | |
CN102567043A (zh) | 一种机顶盒在线升级的方法 | |
US11237846B2 (en) | Method, processing unit, touch control chip, device and medium for processing configuration file | |
CN105975307A (zh) | 应用的启动方法及移动终端 | |
CN115934579A (zh) | 固态硬盘垃圾回收方法、加速装置、设备及计算机介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |