CN108664412A - Io数据流处理方法、装置、存储介质和终端 - Google Patents
Io数据流处理方法、装置、存储介质和终端 Download PDFInfo
- Publication number
- CN108664412A CN108664412A CN201810477918.3A CN201810477918A CN108664412A CN 108664412 A CN108664412 A CN 108664412A CN 201810477918 A CN201810477918 A CN 201810477918A CN 108664412 A CN108664412 A CN 108664412A
- Authority
- CN
- China
- Prior art keywords
- memory
- memory cache
- cache block
- data
- block
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了一种IO数据流处理方法、装置、存储介质和终端,本发明提供的IO数据流处理方法包括:获取IO内存缓存池中的内存缓存块;接收IO操作对应的数据流;根据所述IO操作的类型把所述数据流封装成数据结构;把所述数据结构存储于所述内存缓存块。本发明通过所述IO内存缓存池提高了IO端口的操作效率,减少了处理器不断生成新的字节数组的损耗;并且,可将IO操作对应的数据流封装为多种类型的数据结构之后再存储,可使后续IO数据流的使用更加便捷高效。
Description
技术领域
本发明涉及信息处理技术,尤其是一种IO数据流处理方法、装置、存储介质和终端。
背景技术
现有的部分计算机语言提供了简单IO操作(Input/Output,输入/输出操作)的API函数(Application Programming Interface,应用程序编程接口),在读写文件或部分网络请求等场景下,可以使用IO数据流进行数据的字节读写;但直接用IO数据流进行读写操作时,处理器需要不断生成字节数组以充当存储数据流的容器,性能消耗较大;而且,生成的字节数组只支持字节的读写,后续还需要对存储的字节进行转换以便调用。基于以上问题,现有的IO操作函数在性能的消耗和使用便捷的方面,存在不足。
发明内容
本发明的目的旨在至少解决上述技术缺陷之一,特别是解决现有的IO操作对处理器的性能损耗的问题。
本发明提供了一种IO数据流处理方法,包括:
获取IO内存缓存池中的内存缓存块;
接收IO操作对应的数据流;
根据所述IO操作的类型把所述数据流封装成数据结构;
把所述数据结构存储于所述内存缓存块。
优选地,所述IO内存缓存池从物理内存中划分,通过链表方式存储所述内存缓存块。
优选地,所述获取IO内存缓存池中的内存缓存块,包括:
判断所述IO内存缓存池中是否有可用的内存缓存块;
若是,从所述IO内存缓存池中获取一块内存缓存块;
若否,从物理内存中申请一块内存缓存块作为IO内存缓存池的内存缓存块,获取该内存缓存块。
优选地,所述从物理内存中申请一块内存缓存块作为IO内存缓存池的内存缓存块之后,还包括:
记录所述申请的一块内存缓存块的申请时间点;
确认当前时间点与所述申请时间点之间的距离大于预置时长;
若物理内存的已使用容量大于第一预置值;确认所述申请的一块内存缓存块被释放,将所述申请的一块内存缓存块重新加入物理内存;
若物理内存的已使用容量小于等于第一预置值且大于第二预置值;确认所述申请的一块内存缓存块被释放,获取被释放的持续时间,若持续时间大于预定时长,将所述申请的一块内存缓存块重新加入物理内存。
优选地,所述从内存中申请一块内存缓存块作为IO内存缓存池的内存缓存块之后,还包括:
把申请的一块内存缓存块记录为额外内存缓存块的区域;额外内存缓存块的区域表示从物理内存初始划分给IO内存缓存池外,IO内存缓存池新增的内存缓存块区域;
若物理内存的已使用容量大于第三预置值;确认额外内存缓存块的区域中被释放的内存缓存块,将所述被释放的内存缓存块重新加入物理内存。
优选地,所述获取IO内存缓存池中的内存缓存块之前,还包括:
接收IO操作指令。
优选地,所述接收IO操作指令之后,还包括:
判断IO操作指令中的IO操作是否超时;
若是,则抛出异常;
若否,确认IO操作指令需写入数据时,继续所述获取IO内存缓存池中的内存缓存块的步骤。
优选地,所述接收IO操作指令之后,还包括:
启动异步监听子线程;
所述判断IO操作指令中的IO操作是否超时,包括:
判断所述异步监听子线程监听的所述IO操作指令对应的IO操作是否超时。
本发明还提出一种IO数据流处理装置,包括:
获取模块,用于获取IO内存缓存池中的内存缓存块;
接收模块,用于接收IO操作对应的数据流;
封装模块,用于根据所述IO操作的类型把所述数据流封装成数据结构;
存储模块,用于把所述数据结构存储于所述内存缓存块。
本发明还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现前述任一项所述IO数据流处理方法的步骤。
本发明还提出一种终端,所述终端包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现前述任一项所述IO数据流处理方法的步骤。
本发明的有益效果如下:
1、本发明通过所述IO内存缓存池提高了IO端口的操作效率,减少了处理器不断生成新的字节数组的损耗;并且,可将IO操作对应的数据流封装为多种类型的数据结构之后再存储,可使后续IO数据流的使用更加便捷高效。
2、本发明可在所述IO内存缓存池空间不足的情况下,从普通内存中申请内存缓存块,所述普通内存可为物理内存等常用内存形式,以确保IO操作的效率;还可根据普通内存的已使用容量确定是否需要将申请的内存缓存块重新加入普通内存中,以避免物理内存不足影响处理器的整体处理效率。
3、本发明通过同步超时处理或异步超时处理机制,可使IO操作更加安全,不会出现线程占用卡死处理器的情况。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明IO数据流处理方法第一实施例的流程示意图;
图2为本发明IO数据流处理方法第二实施例的流程示意图;
图3为本发明IO数据流处理方法又一实施例的流程示意图;
图4为本发明所述终端的实施例示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”到另一元件时,它可以直接连接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
本发明提出一种IO数据流处理方法,用于提高IO端口的操作效率,如图1所示的第一实施例,包括如下步骤:
步骤S10:获取IO内存缓存池中的内存缓存块;
步骤S20:接收IO操作对应的数据流;
步骤S30:根据所述IO操作的类型把所述数据流封装成数据结构;
步骤S40:把所述数据结构存储于所述内存缓存块。
其中,每个步骤具体如下:
步骤S10:获取IO内存缓存池中的内存缓存块。
内存用于暂存CPU中的运算数据,计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。本步骤预先在内存中申请一块用于暂存IO接口数据的内存池作为IO内存缓存池,所有的IO操作都必须从所述IO内存缓存池中申请字节数组对象来进行操作,从而避免IO操作中创建字节数组对象的性能损耗,达到利用IO内存缓存池的存储空间换取IO操作效率的目的。获取的所述内存缓存块为所述IO内存缓存池中部分或全部的存储空间,用于暂存后续IO操作的各种指令和读写数据。
步骤S20:接收IO操作对应的数据流。
数据流是以规定好的顺序被读取的一个数据序列,在传输过程中通常被转化为高电平和低电平,使用时需根据情况再次转化。所述IO操作包括内部程序通过IO端口向外部程序或外部设备发送数据的操作,或内部程序通过IO端口读取外部程序或外部设备的数据的操作。内部程序通过IO端口向外部程序或外部设备发送数据时,需先将待发送的数据写入所述内存缓存块,然后外部程序或外部设备再从所述内存缓存块中读取数据;内部程序通过IO端口读取外部程序或外部设备的数据的操作时,外部程序或外部设备先将待读取的数据写入所述内存缓存块,内部程序再从所述内存缓存块中读取数据。外部程序或外部设备先将待读取的数据写入所述内存缓存块,或,内部程序将待发送的数据写入所述内存缓存块时,对应的数据均可通过数据流的形式写入所述内存缓存块中,以便后续读取。
步骤S30:根据所述IO操作的类型把所述数据流封装成数据结构。
IO操作的类型可包括外部程序或外部设备向所述内存缓存块写入数据,或,内部程序向所述内存缓存块中写入数据。当写入的数据为数据流时,本步骤可将数据流封装成数据结构,例如将数据流中的字节数组转换成对应的String、bitmap等数据结构,以使IO数据流的使用更加便捷。
例如:内部程序运行时,执行的程序指令一般为数据结构。当内部程序需读取外部程序或外部设备通过IO端口传输的数据时,所述IO端口传输的数据将先写入所述IO内存缓存池中;若写入所述IO内存缓存池中的数据不进行封装,则将以字节的形式进行过储存,在调用或读取之前,需按照内部程序的需求先进行字节对象的转换,降低了内部程序的效率;本步骤通过先将数据流封装成数据结构,可提高内部程序读取IO接口数据的速度。当内部程序需通过IO端口发送数据时,由于内部程序指令和程序数据本身一般以数据结构的形式存在,故可直接将所述数据结构写入所述IO内存缓存池中,并以数据结构的形式存储于所述内存缓存块中,提高了内部程序发送数据的速度。
步骤S40:把所述数据结构存储于所述内存缓存块。
将数据流封装成数据结构之后,再将所述数据结构存储于所述内存缓存块中,以备调用。本发明通过所述IO内存缓存池,提高了IO端口的操作效率,减少了CPU不断生成新的字节数组的损耗;并且,将IO操作对应的数据流封装为数据结构之后再存储,使后续IO数据流的使用更加便捷高效。
在本发明的另一实施例中,所述IO内存缓存池可从物理内存等普通内存中划分,通过链表方式存储所述内存缓存块。链表是一种非连续、非顺序的存储结构,数据的读取顺序由链表中的指针链接次序确定。本实施例从物理内存等常用内存形式中划分所述IO内存缓存池,降低了改进成本,并通过链表的方式,提高了向所述IO内存缓存池中写入数据的速度。
本发明还提出第二实施例,如图2所示,所述获取IO内存缓存池中的内存缓存块,包括:
判断所述IO内存缓存池中是否有可用的内存缓存块;
若是,从所述IO内存缓存池中获取一块内存缓存块;
若否,从物理内存中申请一块内存缓存块作为IO内存缓存池的内存缓存块,获取该内存缓存块。
内存主要用于暂存运算数据,存储于内存中某存储区域的运算数据使用完毕后,将释放该存储区域的内存,故,所述IO内存缓存池中的空间将动态变化。进行IO操作时,可先判断所述IO内存缓存池中是否有可用的内存缓存块,如果有可用的内存缓存块,则直接获取该可用的内存缓存块,将其作为存储IO操作的缓存空间;若无可用的内存缓存块,则从物理等普通内存中申请一块内存缓存块,将该申请的内存缓存块作为存储IO操作的缓存空间。
本实施例可在物理内存等普通内存充足的情况下,根据IO操作的需求,自动扩大所述IO内存缓存池的缓存空间,以确保与IO操作相对应的数据结构始终存储于内存缓存块中,从而确保IO操作的便捷性。
当所述内存缓存块使用完毕后,可释放所述缓存空间,并将所述内存缓存块放置到所述IO内存缓存池中,以供后续IO操作使用。故本发明在所述获取IO内存缓存池中的内存缓存块之后,还可包括:释放所述内存缓存块,将所述内存缓存块重新加入物理内存等普通内存中或所述IO内存缓存池中。
基于第二实施例,本发明还提出另一实施例:所述从物理内存中申请一块内存缓存块作为IO内存缓存池的内存缓存块之后,还包括:
记录所述申请的一块内存缓存块的申请时间点;
确认当前时间点与所述申请时间点之间的距离大于预置时长;
若物理内存的已使用容量大于第一预置值;确认所述申请的一块内存缓存块被释放,将所述申请的一块内存缓存块重新加入物理内存;
若物理内存的已使用容量小于等于第一预置值且大于第二预置值;确认所述申请的一块内存缓存块被释放,获取被释放的持续时间,若持续时间大于预定时长,将所述申请的一块内存缓存块重新加入物理内存。
由于内存区域将暂存所有应用的运算数据,当IO内存缓存池不断申请新的内存缓存块作为IO内存缓存池,则物理内存等普通内存的空间将越来越小,可能影响用户其它程序的运行。本实施例通过判断物理内存等普通内存的已使用容量,并结合内存缓存块被释放的持续时间,以确认是否需要将所述申请的一块内存缓存块重新加入物理内存等普通内存中,达到优化普通内存存储空间的目的;同时,为保持申请的内存缓存块的稳定,本实施例在确认释放内存缓存块之前,还确认申请的内存缓存块的申请时间点与当前时间大于预置时长,以使申请的内存缓存块在预置时长内保持稳定。
例如:为保持申请的内存缓存块的稳定,该内存缓存块需至少保持5秒的时长,以便IO操作调用;则在判断是否要将该内存缓存块重新加入物理内存等普通内存之前,先确认该内存缓存块的申请时间点与当前时间点之间的距离,即该内存缓存块的保持时间,是否大于预置时长5秒;如果不大于5秒,则该内存缓存块将不加入普通内存;如果大于5秒,则继续确认普通内存的已使用容量与所述第一预置值和所述第二预置值之间大小,以及确认内存缓存块被释放的持续时间与预定时长之间的大小。例如:第一预置值为90%,第二预置值为80%,若普通内存的已使用容量大于90%,则说明普通内存的空间不足,当IO内存缓存池中有内存缓存块被释放,则将释放的内存缓存块直接变为普通内存;若普通内存的已使用容量小于90%大于等于80%,说明普通内存可能很快用完,需将IO内存缓存池中释放时间较长的内存缓存块转化为普通内存;当内存缓存块被释放的持续时间大于预定时长时,例如10分钟,则判定为释放时间较长的内存缓存块。
基于第二实施例,本发明还提出另一实施例:所述从内存中申请一块内存缓存块作为IO内存缓存池的内存缓存块之后,还包括:
把申请的一块内存缓存块记录为额外内存缓存块的区域;额外内存缓存块的区域表示从物理内存初始划分给IO内存缓存池外,IO内存缓存池新增的内存缓存块区域;
若物理内存的已使用容量大于第三预置值;确认额外内存缓存块的区域中被释放的内存缓存块,将所述被释放的内存缓存块重新加入物理内存。
当所述IO内存缓存池中的内存缓存块不足时,可能会多次从物理内存等普通内存中申请内存缓存块;本实施例将所有申请的内存缓存块记录为额外内存缓存块的区域;当物理内存等普通内存的已使用容量大于第三预置值时,说明普通内存可能存在不足,则将额外内存缓存块的区域中被释放的所有内存缓存块重新加入普通内存中,以快速缓解普通内存不足的问题。
在本发明的另一实施例中,结合图3所示,所述获取IO内存缓存池中的内存缓存块之前,还可包括:
步骤S01:接收IO操作指令。
所述IO操作指令包括内部程序通过IO端口向外部程序或外部设备发送数据的操作指令,或内部程序通过IO端口读取外部程序或外部设备的数据的操作指令等;更具体地,所述内部程序通过IO端口向外部程序或外部设备发送数据时,所述IO操作指令进一步包括:所述内部程序将待发送至所述IO端口的数据写入所述内存缓存块中,也包括所述外部程序或外部设备通过所述IO端口读取所述内存缓存块中的数据;所述内部程序通过IO端口读取外部程序或外部设备的数据时,所述IO操作指令进一步包括:所述外部程序或外部设备通过所述IO端口将待读取的数据写入所述内存缓存块中,也包括所述内部程序读取所述内存缓存块中的数据。故,所述IO操作指令既包括需要写入数据的指令,也包括无需写入数据的指令。
为避免所述IO操作指令超时而引起应用程序崩溃,本发明提出又一实施例,如图3所示,在步骤S01之后,即接收IO操作指令之后,还包括:
步骤S02:判断IO操作指令中的IO操作是否超时;若是,则执行步骤S03;若否,则执行步骤S04;
步骤S03:抛出异常;
步骤S04:确认IO操作指令需写入数据时,继续所述获取IO内存缓存池中的内存缓存块的步骤。
当本终端接收到IO操作指令之后,可立即获取IO内存缓存池中的内存缓存块,亦可在确认所述IO操作指令需要写入数据时,才获取IO内存缓存池中的内存缓存块,以便存储需要写入的数据。本实施例的抛出异常可传入超时处理的对象,超时处理的对象可保存当前IO操作的超时时间,并且提供操作判断和相应的超时处理机制。
本实施例可采用同步超时处理,在接收IO操作对应的数据流之前,先判断前一个IO操作指令中的IO操作是否超时,若超时直接抛出异常;若没有超时,则继续判断所述IO操作指令是否需要写入数据;若无需写入数据,则执行预设的其它指令,例如所述IO操作指令为读取所述内存缓存块中的数据,则执行读取数据的步骤;若没有超时,且所述IO操作指令需写入数据时,则继续所述获取IO内存缓存池中的内存缓存块的步骤,以及继续所述接收IO操作对应的数据流的步骤。
本发明还提出如下的异步超时处理实施例:所述接收IO操作指令之后,还包括:
启动异步监听子线程;
所述判断IO操作指令中的IO操作是否超时,包括:
判断所述异步监听子线程监听的所述IO操作指令对应的IO操作是否超时。
本实施例中的异步超时处理可针对socket操作进行异步处理,由于socket本身有同步阻塞机制,会把超时的判断阻塞住,可启动一个异步监听子线程来监听IO操作是否超时,例如启动一个WatchDog子线程来监听超时,若监听到超时,则通过异步监听子线程抛出异常,已执行对应的超时处理指令。本实施例通过异步监听子线程,可避免IO操作指令在某子线程中卡死;例如,IO操作指令包括接收数据和写入数据两个子线程,当接收数据子线程操作超时,可通过异步监听子线程抛出异常,以使写入数据子线程仍可继续执行写入数据的指令;本实施例可使IO操作更加安全,不会出现线程占用卡死CPU资源的情况。
在本发明的又一个实施例中,所述IO数据流处理方法包括一个主线程、一个接收数据子线程、一个发送数据子线程和一个异步监听子线程。当主线程通过接收数据子线程读取外部程序或外部设备的数据时,外部程序或外部设备的数据流先写入所述IO内存缓存池中,并封装为数据结构进行缓存;在内部程序通过发送数据子线程向外部程序或外部设备发送数据时,发送数据子线程先将待发送的数据写入所述IO内存缓存池中,发送数据子线程可直接将String、Long、Short与Byte[]等数据结构直接写入所述IO内存缓存池中,省去了将数据流封装为数据结构的结构的步骤,然后发送数据子线程再将待发送的数据从所述IO内存缓存池中发送至相应的IO端口。当所述接收数据子线程或发送数据子线程出现超时异常时,所述异步监听子线程抛出异常。
本发明还提出一种IO数据流处理装置,包括:
获取模块,用于获取IO内存缓存池中的内存缓存块;
接收模块,用于接收IO操作对应的数据流;
封装模块,用于根据所述IO操作的类型把所述数据流封装成数据结构;
存储模块,用于把所述数据结构存储于所述内存缓存块。
本发明还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现前述任一项所述IO数据流处理方法的步骤。
本发明还提出一种终端,所述终端包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现前述任一项所述IO数据流处理方法的步骤。
如图4所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该终端可以为包括手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)、POS(Point of Sales,销售终端)、车载电脑、服务器等任意终端设备,以终端为手机为例:
图4示出的是与本发明实施例提供的终端相关的手机的部分结构的框图。参考图4,手机包括:射频(Radio Frequency,RF)电路1510、存储器1520、输入单元1530、显示单元1540、传感器1550、音频电路1560、无线保真(wireless fidelity,Wi-Fi)模块1570、处理器1580、以及电源1590等部件。本领域技术人员可以理解,图4中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图4对手机的各个构成部件进行具体的介绍:
RF电路1510可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器1580处理;另外,将设计上行的数据发送给基站。通常,RF电路1510包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low NoiseAmplifier,LNA)、双工器等。此外,RF电路1510还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(GlobalSystem of Mobile communication,GSM)、通用分组无线服务(General Packet RadioService,GPRS)、码分多址(Code Division Multiple Access,CDMA)、宽带码分多址(Wideband Code Division Multiple Access,WCDMA)、长期演进(Long Term Evolution,LTE)、电子邮件、短消息服务(Short Messaging Service,SMS)等。
存储器1520可用于存储软件程序以及模块,处理器1580通过运行存储在存储器1520的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器1520可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如情感分析模型等)等;存储数据区可存储根据手机的使用所创建的数据(比如情感分析结果等)等。此外,存储器1520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元1530可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元1530可包括触控面板1531以及其他输入设备1532。触控面板1531,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板1531上或在触控面板1531附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板1531可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1580,并能接收处理器1580发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板1531。除了触控面板1531,输入单元1530还可以包括其他输入设备1532。具体地,其他输入设备1532可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元1540可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元1540可包括显示面板1541,可选的,可以采用液晶显示器(LiquidCrystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板1541。进一步的,触控面板1531可覆盖显示面板1541,当触控面板1531检测到在其上或附近的触摸操作后,传送给处理器1580以确定触摸事件的类型,随后处理器1580根据触摸事件的类型在显示面板1541上提供相应的视觉输出。虽然在图4中,触控面板1531与显示面板1541是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板1531与显示面板1541集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器1550,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1541的亮度,接近传感器可在手机移动到耳边时,关闭显示面板1541和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路1560、扬声器1561,传声器1562可提供用户与手机之间的音频接口。音频电路1560可将接收到的音频数据转换后的电信号,传输到扬声器1561,由扬声器1561转换为声纹信号输出;另一方面,传声器1562将收集的声纹信号转换为电信号,由音频电路1560接收后转换为音频数据,再将音频数据输出处理器1580处理后,经RF电路1510以发送给比如另一手机,或者将音频数据输出至存储器1520以便进一步处理。
Wi-Fi属于短距离无线传输技术,手机通过Wi-Fi模块1570可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图4示出了Wi-Fi模块1570,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器1580是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器1520内的软件程序和/或模块,以及调用存储在存储器1520内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器1580可包括一个或多个处理单元;优选的,处理器1580可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1580中。
手机还包括给各个部件供电的电源1590(比如电池),优选的,电源可以通过电源管理系统与处理器1580逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
此外,在本发明各个实施例中的各模块可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种IO数据流处理方法,其特征在于,包括:
获取IO内存缓存池中的内存缓存块;
接收IO操作对应的数据流;
根据所述IO操作的类型把所述数据流封装成数据结构;
把所述数据结构存储于所述内存缓存块。
2.根据权利要求1所述的处理方法,其特征在于,所述IO内存缓存池从物理内存中划分,通过链表方式存储所述内存缓存块。
3.根据权利要求1所述的处理方法,其特征在于,所述获取IO内存缓存池中的内存缓存块,包括:
判断所述IO内存缓存池中是否有可用的内存缓存块;
若是,从所述IO内存缓存池中获取一块内存缓存块;
若否,从物理内存中申请一块内存缓存块作为IO内存缓存池的内存缓存块,获取该内存缓存块。
4.根据权利要求3所述的处理方法,其特征在于,所述从物理内存中申请一块内存缓存块作为IO内存缓存池的内存缓存块之后,还包括:
记录所述申请的一块内存缓存块的申请时间点;
确认当前时间点与所述申请时间点之间的距离大于预置时长;
若物理内存的已使用容量大于第一预置值;确认所述申请的一块内存缓存块被释放,将所述申请的一块内存缓存块重新加入物理内存;
若物理内存的已使用容量小于等于第一预置值且大于第二预置值;确认所述申请的一块内存缓存块被释放,获取被释放的持续时间,若持续时间大于预定时长,将所述申请的一块内存缓存块重新加入物理内存。
5.根据权利要求3所述的处理方法,其特征在于,所述从物理内存中申请一块内存缓存块作为IO内存缓存池的内存缓存块之后,还包括:
把申请的一块内存缓存块记录为额外内存缓存块的区域;额外内存缓存块的区域表示从物理内存初始划分给IO内存缓存池外,IO内存缓存池新增的内存缓存块区域;
若物理内存的已使用容量大于第三预置值;确认额外内存缓存块的区域中被释放的内存缓存块,将所述被释放的内存缓存块重新加入物理内存。
6.根据权利要求1所述的处理方法,其特征在于,所述获取IO内存缓存池中的内存缓存块之前,还包括:
接收IO操作指令;
判断IO操作指令中的IO操作是否超时;
若是,则抛出异常;
若否,确认IO操作指令需写入数据时,继续所述获取IO内存缓存池中的内存缓存块的步骤。
7.根据权利要求6所述的处理方法,其特征在于,所述接收IO操作指令之后,还包括:
启动异步监听子线程;
所述判断IO操作指令中的IO操作是否超时,包括:
判断所述异步监听子线程监听的所述IO操作指令对应的IO操作是否超时。
8.一种IO数据流处理装置,其特征在于,包括:
获取模块,用于获取IO内存缓存池中的内存缓存块;
接收模块,用于接收IO操作对应的数据流;
封装模块,用于根据所述IO操作的类型把所述数据流封装成数据结构;
存储模块,用于把所述数据结构存储于所述内存缓存块。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现权利要求1至7任一项所述IO数据流处理方法的步骤。
10.一种终端,其特征在于,所述终端包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1至7中任一项所述IO数据流处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810477918.3A CN108664412A (zh) | 2018-05-18 | 2018-05-18 | Io数据流处理方法、装置、存储介质和终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810477918.3A CN108664412A (zh) | 2018-05-18 | 2018-05-18 | Io数据流处理方法、装置、存储介质和终端 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108664412A true CN108664412A (zh) | 2018-10-16 |
Family
ID=63776277
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810477918.3A Pending CN108664412A (zh) | 2018-05-18 | 2018-05-18 | Io数据流处理方法、装置、存储介质和终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108664412A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113608674A (zh) * | 2021-06-25 | 2021-11-05 | 济南浪潮数据技术有限公司 | 一种实现分布式块存储系统读写的方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101286143A (zh) * | 2008-05-26 | 2008-10-15 | 中兴通讯股份有限公司 | 一种管理设备驱动缓存的方法 |
CN102207830A (zh) * | 2011-05-27 | 2011-10-05 | 杭州宏杉科技有限公司 | 一种缓存动态分配管理方法及装置 |
CN103279360A (zh) * | 2013-06-09 | 2013-09-04 | 浪潮电子信息产业股份有限公司 | 一种用基于Linux命令的程序获取内存信息的方法 |
CN103761051A (zh) * | 2013-12-17 | 2014-04-30 | 北京同有飞骥科技股份有限公司 | 一种基于持续数据多输入输出流并发写入性能优化方法 |
WO2014085386A1 (en) * | 2012-11-30 | 2014-06-05 | Netapp, Inc. | Dynamic caching technique for adaptively controlling data block copies in a distributed data processing system |
CN104793892A (zh) * | 2014-01-20 | 2015-07-22 | 上海优刻得信息科技有限公司 | 一种加速磁盘随机输入输出(io)读写的方法 |
-
2018
- 2018-05-18 CN CN201810477918.3A patent/CN108664412A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101286143A (zh) * | 2008-05-26 | 2008-10-15 | 中兴通讯股份有限公司 | 一种管理设备驱动缓存的方法 |
CN102207830A (zh) * | 2011-05-27 | 2011-10-05 | 杭州宏杉科技有限公司 | 一种缓存动态分配管理方法及装置 |
WO2014085386A1 (en) * | 2012-11-30 | 2014-06-05 | Netapp, Inc. | Dynamic caching technique for adaptively controlling data block copies in a distributed data processing system |
CN103279360A (zh) * | 2013-06-09 | 2013-09-04 | 浪潮电子信息产业股份有限公司 | 一种用基于Linux命令的程序获取内存信息的方法 |
CN103761051A (zh) * | 2013-12-17 | 2014-04-30 | 北京同有飞骥科技股份有限公司 | 一种基于持续数据多输入输出流并发写入性能优化方法 |
CN104793892A (zh) * | 2014-01-20 | 2015-07-22 | 上海优刻得信息科技有限公司 | 一种加速磁盘随机输入输出(io)读写的方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113608674A (zh) * | 2021-06-25 | 2021-11-05 | 济南浪潮数据技术有限公司 | 一种实现分布式块存储系统读写的方法及装置 |
CN113608674B (zh) * | 2021-06-25 | 2024-02-23 | 济南浪潮数据技术有限公司 | 一种实现分布式块存储系统读写的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106453511B (zh) | 一种数据备份方法及设备 | |
CN104978176B (zh) | 应用程序接口调用方法、装置及计算机可读存储介质 | |
CN104519404B (zh) | 图像互换格式文件的播放方法及装置 | |
CN104423996B (zh) | 视图刷新方法和装置 | |
CN103559731B (zh) | 一种锁屏状态下歌词显示的方法及终端 | |
US9256421B2 (en) | Method, device and terminal for improving running speed of application | |
CN104036536B (zh) | 一种定格动画的生成方法和装置 | |
CN106528282A (zh) | 一种关闭进程的方法、装置以及终端 | |
WO2014194713A1 (en) | Method,apparatus and computer readable storage medium for displaying video preview picture | |
CN104423822A (zh) | 录制自动化测试脚本的方法及装置 | |
CN104133752B (zh) | 操作平台的监控方法和装置 | |
CN104967865A (zh) | 视频预览方法和装置 | |
CN106649735A (zh) | 一种记录日志数据的方法和装置 | |
CN103197944B (zh) | 一种应用程序的进程的性能确定方法和计算机系统 | |
CN104967864B (zh) | 一种合并视频的方法及装置 | |
CN106055400A (zh) | 终端加速唤醒方法以及装置 | |
US10136115B2 (en) | Video shooting method and apparatus | |
CN104240710B (zh) | 一种信息传输的方法、系统及终端设备 | |
CN108055383A (zh) | 截屏图片的获取方法、装置和移动终端 | |
CN105700620A (zh) | 一种执行控制指令的方法和装置 | |
CN106502827A (zh) | 一种数据备份方法及设备 | |
CN107622234A (zh) | 一种显示萌脸礼物的方法和装置 | |
CN108664412A (zh) | Io数据流处理方法、装置、存储介质和终端 | |
CN107491349A (zh) | 应用程序处理方法和装置、计算机设备、存储介质 | |
US20150070360A1 (en) | Method and mobile terminal for drawing sliding trace |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200423 Address after: 310052 room 508, floor 5, building 4, No. 699, Wangshang Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province Applicant after: Alibaba (China) Co.,Ltd. Address before: 510640 Guangdong city of Guangzhou province Whampoa Tianhe District Road No. 163 Xiping Yun Lu Yun Ping square B radio tower 15 layer self unit 02 Applicant before: GUANGZHOU UC NETWORK TECHNOLOGY Co.,Ltd. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181016 |