具体实施方式
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图3为说明书实施例提供的一种多行省略显示的过程,具体可包括以下步骤:
S100:确定待显示在网页页面中的字符串。
在本说明书一个或多个实施例中,该多行省略显示的方法可由终端执行,该终端具体可以是手机、平板电脑、个人电脑等设备,本说明书对此不做限定。
具体的,可由终端中安装的浏览器(或者,具有浏览器内核的应用程序)显示该网页页面,其中,显示该网页页面所需的数据可以是终端从服务器获取的,因此终端在获取显示该网页页面所需的数据时,可从中确定待显示在网页页面中的字符串。
S102:以及确定需要填充字符的容器的各行宽度之和,作为目标宽度。
在本说明书中,当确定出需要省略显示的字符串之后,可进一步确定用于填充该字符串的容器可容纳字符串的宽度(即,目标宽度),以便后续确定如何对该字符串进行截取。并且,该终端还可确定该字符串的宽度,并在确定该字符串的宽度大于目标宽度后,执行后续步骤。
为方便描述,本说明书对如何确定该字符串的宽度以及如何确定目标宽度分别进行说明。
具体的,由于当浏览器运行的环境的不同时,可能使得网页页面中显示的字符串的宽度不完全一致。例如,当终端设置的屏幕分辨率不同时,或者当浏览器设置的字体样式不同时,都可能导致字符串的宽度出现差异。当然,还有多种原因可导致同一字符串的宽度出现差异,本说明书对此不再一一说明。
为了避免由于浏览器的个性化设置以及终端不同等原因,导致的计算字符串宽度出现差异的问题,在本说明书中,终端可先在网页页面中创建用于填充字符串的元素,并且该元素的宽度可自适应于填充字符串的宽度,之后将在步骤S100中确定出的字符串填充至该元素中,最后确定该元素的宽度,并将该元素的宽度作为该字符串的宽度。
在本说明书中,终端可通过运行该网页页面的代码创建该元素,并且,为了避免干扰网页页面的显示,该元素可为隐藏显示的元素。其中,该元素具体如何隐藏显示本说明书不做限定,例如,可对该元素的CSS样式中的opacity属性、visibility属性、display属性等任一种属性进行设置,使该元素不显示在该网页页面上。由于该元素创建在网页页面中,因此无论当前浏览器处于什么环境,创建该元素时都会获取相应的设置(如,该网页页面的字符样式以及字间距等等),使得通过确定该元素的宽度便可确定该字符串显示在该网页页面中的宽度。
进一步地,对于目标宽度来说,由于该容器需要配置到该网页页面,因此该容器尺寸的相关属性信息均可包含在网页页面的代码中,因此终端可从网页页面的代码中,确定该容器显示字符串的行数以及该容器的宽度,之后将该行数与该容器的宽度的乘积作为目标宽度即可。例如,假设该容器宽度为200px,该容器显示字符串的行数为3行,则终端可确定该目标宽度为200px×3=600px。
更进一步的,由于省略显示时,需要将字符串中省略显示的部分以省略号“……”代替,以表示字符串中存在省略的部分,而省略号“……”也是需要显示在该容器中的,因此在本说明书中终端在确定目标宽度时,可在确定该行数与该容器的宽度的乘积之后,再减去省略号的宽度,作为该目标宽度。继续沿用上例,假设当前网页页面显示省略号“……”的宽度为10px,则可确定目标宽度为590px。当然,为了使省略显示时,省略号与字符串显示的更加美观,在确定该行数与该容器的宽度的乘积之后,可以减去省略号与网页页面中预设设置的字符间距,作为该目标宽度,对此本说明书不做限定。
S104:将所述字符串作为待划分字符串,划分为至少两个子字符串。
在本说明书中,在确定出目标宽度之后,便可通过将该字符串作为待划分字符串,通过对该字符串划分为若干子字符串。以便后续可根据划分出的子字符串确定截取位置,并在根据截取位置截取该字符串后,通过该容器显示截取后的字符串。避免现有技术中逐一确定字符串中各字符位置的宽度导致的计算量过大的问题。
具体的,在本说明书中,终端可按照预设的数量将该字符串划分为至少两段子字符串,例如,划分为2段子字符串、划分为3段子字符串等等。并且,该字符串可以是按字符数量等分划分的,当然,由于字符的数量是整数,因此划分出的各子字符串之间的字符数量可存在差值,且该差值不大于预设的数量。例如,将100各字符等分为3段子字符串时,假设预设的数量为1,则终端可划分出字符数量为33、33、34的3个子字符串,当预设的数量为2时,则终端可划分出字符数量为32、34、34的,等等。其中,预设的数量可根据需要设置本说明书不做限制。
另外,由于网页页面的排版通常是依据人的审美喜欢而设置的,因此通常多行显示的字符中,每行字符的数量不会很少(如,容器中每行仅显示一个字符),因此该字符串中各字符的位置,在最终被终端确定为是截取位置的概率存在差异(如,对于显示5行的容器来说,由于前述每行仅显示一个字符的概率较低,因此字符串中第一个至第四个字符的位置被确定为截取位置的概率也较低)。于是为了提高效率,在本说明书中,终端在将字符串作为待划分字符串,划分为若干子字符串时,终端可以按照预设的比例,划分各子字符串。从而增加该字符串的首字符所在的子字符串中字符的数量。例如,将100个字符的字符串划分为3个子字符串时,可以以4:3:3的比例依次划分出各子字符串。则该字符串的首字符所在的子字符串中字符的数量为40,而其余子字符串中字符的数量均为30。
当然,本说明书对该比例如何设置不做限定,可根据需要进行设置。
S106:按照各子字符串在所述字符串中的排序,依次针对每个子字符串,确定从所述字符串的首字符到该子字符串最后一个字符的宽度,作为第一宽度。
S108:当所述第一宽度小于所述目标宽度时,继续按照所述排序确定下一个子字符串的第一宽度。
S110:当所述第一宽度等于所述目标宽度时,或者当第一宽度大于所述目标宽度时,根据该子字符串确定截取位置,并根据所述截取位置截取所述字符串,通过所述容器显示截取后的字符串。
在本说明书中,当划分出各子字符串之后,终端可按照各子字符串在所述字符串中的排序,依次针对每个子字符串,先确定该子字符串的第一宽度,以便根据第一宽度和目标宽度,判断是否根据该子字符串确定截取位置,若否则继续按照排序确定下一个子字符串的第一宽度,若是,则确定截取位置。
具体的,终端在确定出划分的各子字符串之后,可按照各子字符串在所述字符串中的排序,依次针对每个子字符串,确定该子字符串的第一宽度,也就是该字符串的首字符至该子字符串的尾字符的宽度,作为第一宽度。其中,该终端可采用步骤S102中确定字符串宽度时相同的方法,将该字符串的首字符至该子字符串的尾字符,填充至隐藏显示的元素中,并将该元素的宽度作为第一宽度。
以单个子字符串来说,终端在确定出该子字符串的第一宽度后,可继续确定该子字符串的第一宽度与目标宽度的大小关系,当第一宽度小于目标宽度时,可确定截取位置不在该子字符串中,则终端可按照排序继续确定下一个子字符串的第一宽度,并重复上述过程,直至确定出第一宽度大于或者等于目标宽度的子字符串。
而当确定第一宽度等于或者大于目标宽度时,终端可以分别采用不同的操作,根据该子字符串确定截取位置。
当第一宽度等于目标宽度时,终端可将位于该子字符串末位的字符的位置确定为截取位置,并根据截取位置截取该字符串,最后通过容器显示截取后的字符串。
当第一宽度大于目标宽度时,终端可确定该子字符串的宽度,作为第二宽度,并判断第二宽度是否符合截取条件,若是,则将在该子字符串首字符之前的位置确定为截取位置,若否,则将该子字符串重新作为待划分字符串进行划分(即,对该子字符串执行步骤S104),直至确定出截取位置为止。
当然,若在步骤S102中,终端确定目标宽度时未计算省略号的宽度,则终端在根据截取位置截取该字符串之后,还可从截取后的字符串的末位删除不小于省略号宽度的若干字符,再通过容器显示删除字符后的字符串。
也就是说,在本说明书提供的多行省略显示的过程中,终端在将待划分字符串划分为至少两个子字符串之后,可先按排序依次针对每个子字符串,确定该子字符串是否为用于确定截取位置的字符串,如,图4所示。当确定根据该子字符串确定截取位置时,即确定了截取位置在该子字符串所包含的区域内。
图4为本说明书提供的依次针对每个子字符串,确定截取位置所在子字符串的示意图。假设终端将字符串划分为了4个子字符串A、B、C以及D,并且目标宽度为e。终端可以先针对子字符串A,确定子字符串A的第一宽度(假设为a),并确定a小于d。则终端继续安排序确定下一个子字符串B的第一宽度(假设为b),并确定b也小于d。然后,终端继续确定下一个子字符串C的第一宽度(假设为c),并确定c大于d,于是可确定根据子字符串C确定截取位置。当然,若c等于d终端也可确定根据子字符串C确定截取位置。上述过程为每次终端再将待划分字符串划分之后执行的过程。
在本说明书中,当确定出根据某个子字符串确定截取位置之后,终端执行的操作可如图5所示。
S200:判断所述第一宽度是否等于目标宽度,若是则执行步骤S202,若否则执行步骤S204。
首先,终端还可进一步判断,确定出的子字符串的第一宽度是否等于目标宽度,若是,则说明从该字符串的首字符到该子字符串最后一个字符可填充进该容器中,于是终端可执行步骤S202。若否,则说明截取位置包含在该子字符串中,但仍需要进一步确定,于是可执行步骤S204.
S202:将位于该子字符串末位的字符的位置确定为截取位置,根据截取位置对该字符串截取。如图6所示。
S204:确定该子字符串宽度,作为第二宽度。
S206:根据所述第二宽度,判断该子字符串是否符合截取条件,若是,执行步骤S208,若否,则执行步骤S210。
具体的,该终端可判断第二宽度是否不大于指定数量的字符的宽度,例如,假设指定数量为1,则终端可判断第二宽度是否大于一个字符的宽度。当然,该指定数量可根据需要设置,本说明书不做限定。例如,将该指定数量设置为与该容器显示行数的数量一致,等等。
S208:将在所述子字符串首字符之前的位置确定为截取位置。
在本说明书中,以指定数量为1为例进行说明,当第二宽度是不大于指定数量的字符的宽度时,则说明该字符串首字符到该子字符串的首字符之前的位置对应的宽度小于目标宽度,但是该字符串首字符到该子字符串的首字符之后的位置对应的宽度大于目标宽度,如图7a所示。因此,终端可将该子字符串首字符之前的位置确定为截取位置。在图7a中,可见子字符串首字符中间的位置对应于目标宽度,因此可将首字符之前的位置确定为截取位置。
另外,若该指定数量为复数时,通过本方法确定的截取后的字符串的宽度可能与目标宽度存在一个以上的字符宽度的差值。此时,终端在将首字符之前的位置确定为截取位置,如图7b所示。
在图7b中,指定数量为3,则该子字符串的第二宽度为3个字符的宽度。此时,该字符串首字符到该子字符串的第二个字符之前的位置对应的宽度仍小于目标宽度,而该字符串首字符到该子字符串的第二个字符之后的位置对应的宽度才大于目标宽度。
当然,由于该字符串首字符到该子字符串的首字符之前的位置对应的宽度仍小于目标宽度,因此可保证截取后的字符串在填充进容器后,不会溢出。但是,指定数量设置为复数,可进一步减少计算量,并且可为截取后的字符串留下一定量的冗余。
S210:将所述子字符串重新作为待划分字符串进行划分,直至确定出截取位置为止。
在本说明书中,当第二宽度是大于指定数量的字符的宽度时,则说明该子字符串包含的字符数量过多,仍需要基于该子字符串进一步进行划分,缩小确定截取位置的范围。于是,终端可将该子字符串重新作为待划分字符串,重复执行步骤S104,直至确定出截取位置为止。
基于图3所述的多行省略显示过程,在确定出需要省略显示的字符串之后,可先确定该字符串的宽度,以及该字符串需要填充进的容器对应的目标宽度,之后基于对该字符串的字符数量进行二分查找,确定该字符串中小于该目标宽度且最宽的部分,在截取后填充进该容器中进行省略显示。可见,二分查找相对于现有技术中采用的方法,可以快速的确定字符串的截取位置,并且由于无需逐一计算首字符至其余各字符的宽度,减少了计算量。
另外,在本说明书中,为了方便通过运行代码实现省略显示的过程,服务器在提供该代码时,可以将该代码封装为一个组件,使得终端在获取网页页面的代码之后,可通过浏览器执行该组件,完成在该网页页面中省略显示字符串的过程。
需要说明的是,本说明书实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤S100和步骤S102的执行主体可以为设备1,步骤S102的执行主体可以为设备2;或者,步骤S100的执行主体可以为设备1,步骤S102和步骤S104的执行主体可以为设备2;等等。上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于图3所述的多行省略显示的方法,本说明书实施例还提供一种多行省略显示的装置,如图8所示。
图8为本说明书实施例提供的一种多行省略显示的装置的结构示意图,包括:
字符串确定模块300,确定待显示在网页页面中的字符串;
尺寸确定模块302,确定用于填充字符的容器可容纳字符串的宽度,作为目标宽度;
划分模块304,将所述字符串作为待划分字符串,划分为至少两个子字符串;
执行模块306,按照各子字符串在所述字符串中的排序,依次针对每个子字符串,确定从所述字符串的首字符到该子字符串最后一个字符的宽度,作为该第一宽度,当所述第一宽度小于所述目标宽度时,继续按照所述排序确定下一个子字符串的第一宽度,当所述第一宽度等于所述目标宽度时,或者当第一宽度大于所述目标宽度时,根据该子字符串确定截取位置,并根据所述截取位置截取所述字符串,通过所述容器显示截取后的字符串。
所述执行模块306,当所述第一宽度等于所述目标宽度时,将位于该子字符串末位的字符的位置确定为截取位置。
所述执行模块306,当第一宽度大于所述目标宽度时,确定该子字符串的宽度,作为第二宽度,判断所述第二宽度是否符合截取条件,若是,则将在所述子字符串首字符之前的位置确定为截取位置,若否,则将所述子字符串重新作为待划分字符串进行划分,直至确定出截取位置为止。
所述执行模块306,判断所述第二宽度是否不大于指定数量的字符的宽度,若是,则确定所述第二宽度符合截取条件,若则确定所述第二宽度不符合截取条件。
所述尺寸确定模块302,从所述网页页面的代码中确定所述容器显示字符串的行数,以及所述容器的宽度,根据所述宽度以及所述行数,确定容器可容纳字符串的宽度。
所述划分模块304,根据所述待划分字符串中字符数量,将所述待划分字符串分划分至少两个子字符串,其中,各子字符串之间的字符数量差值不大于预设数量根据所述待划分字符串中字符数量,将所述待划分字符串分划分至少两个子字符串,其中,各子字符串之间的字符数量差值不大于预设数量。
所述装置还包括:
创建模块308,通过运行所述网页页面的代码,创建用于填充字符的元素,其中,所述元素为隐藏显示的元素,并且,所述元素的宽度自适应于填充字符串的宽度;
所述尺寸确定模块302,将所述字符串的首字符到该子字符串最后一个字符填充进所述元素中,且各字符在所述元素中填充为一行,确定所述元素的宽度。
所述尺寸确定模块302,确定容器可容纳字符串的宽度之前,确定显示所述网页页面的浏览器不支持通过容器对所述字符串中溢出容器的字符进行省略显示。
基于图3所示的多行省略显示的方法,本说明书实施例还提供一种终端,如图9所示,其中,所述终端包括:一个或多个处理器及存储器,存储器存储有程序,并且被配置成由一个或多个处理器执行以下步骤:
确定待显示在网页页面中的字符串;
确定用于填充字符的容器可容纳字符串的宽度,作为目标宽度;
将所述字符串作为待划分字符串,划分为至少两个子字符串;
按照各子字符串在所述字符串中的排序,依次针对每个子字符串,确定从所述字符串的首字符到该子字符串最后一个字符的宽度,作为该第一宽度;
当所述第一宽度小于所述目标宽度时,继续按照所述排序确定下一个子字符串的第一宽度;
当所述第一宽度等于所述目标宽度时,或者当第一宽度大于所述目标宽度时,根据该子字符串确定截取位置,并根据所述截取位置截取所述字符串,通过所述容器显示截取后的字符串。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。