一种udp报文写入方法及系统及装置及介质
技术领域
1.本发明涉及计算机网络数据通信领域,具体地,涉及一种udp报文写入方法及系统及装置及介质。
背景技术:2.通信协议是指双方实体完成通信或服务所必须遵循的规则和约定。通信协议定义了数据单元使用的格式、信息单元应该包含的信息与含义等内容,现常用的通信协议有tcp协议(transmission control protocol,传输控制协议)和udp协议(user datagram protocol,用户数据报协议)。在需要快速传输数据的情况下,常选用udp协议实现数据传输,但当数据传输量过大时,传统的单线程报文写入方式较慢,服务器负载过高,存在无法及时处理接收缓冲区的udp报文,使进程阻塞从而导致丢包的问题。同时,由于udp的面向无连接性,传输时可能会出现接收端收到数据顺序与发送顺序不一致的问题。
技术实现要素:3.为了解决传统情况下接收到udp报文数据后,接收端直接单线程将报文写入文件,写入速度较慢,在报文并发量大时容易导致丢包的问题,本发明提供了一种udp报文写入方法及系统及装置及介质,基于多线程并行的方式完成udp报文写入,能够有效的提高数据写入速度,从而减少丢包。
4.为了实现上述发明目的,本发明提供了一种udp报文写入方法,包括以下步骤:
5.报文接收步骤,包括:获得udp报文,将所述udp报文解码,获得报文体信息和对应的自定义报头信息,判断所述udp报文是否为接收到的第一条报文,若是则创建报文文件;
6.报文分发步骤,包括:获得所述报文体信息和所述自定义报头信息,将所述报文体信息和所述自定义报头信息写入等待队列;
7.报文写入步骤,包括:监听所述等待队列,如果所述等待队列中存在数据,则从所述等待队列中读取报文数据,将所述报文数据写入所述报文文件;
8.其中,所述报文接收步骤、报文分发步骤和报文写入步骤多线程并行执行。
9.其中,本发明原理为:将udp报文写入任务分为报文接收、报文分发和报文写入三个步骤,所述报文接受步骤包括获得udp报文、解码udp报文并创建报文文件;所述报文分发步骤包括将解码后的报文体信息和自定义报头信息写入等待队列;所述报文写入步骤包括从等待队列中读取报文数据,将所述报文数据写入所述报文文件;上述三个步骤多线程并行执行,即所述报文接收步骤、报文分发步骤和报文写入步骤轮流占用cpu的运算时间,从而防止线程堵塞,多线程并行执行能够提高对于接收到的udp报文的处理速度,从而有效的避免了单线程写入文件速度较慢,在报文并发量大时容易导致丢包的问题。
10.进一步的,为了提高udp报文写入效率,所述报文写入步骤从所述等待队列中读取多个报文数据,将所述多个报文数据并发写入所述报文文件。
11.进一步的,为了避免由于文件锁导致并发写文件时并发量不高,所述报文写入步
骤使用java nio(java non-blocking io)随机通道方式进行数据写入,所述java nio(java non-blocking io)随机通道将数据从通道读入缓冲区,再从缓冲区处理数据,因此可以实现多个线程同时对同一文件进行读写操作。
12.进一步的,由于udp的不可靠性,可能分别属于不同的文件,因此,所述自定义报头信息包括文件类型信息,所述报文接收步骤根据所述文件类型信息判断所述udp报文是否为接收到的所述文件类型信息对应的第一条报文,若是则创建对应的报文文件;所述报文写入步骤根据所述文件类型信息将报文数据写入对应的报文文件,根据所述文件类型信息,能够实现对收到的报文进行分类。
13.进一步的,由于udp的不可靠性,收到的报文可能出错,且接收端容易受到udp攻击,因此,所述报文接收步骤需要验证报文正确性,所述自定义报头信息包括报文长度信息,所述报文接收步骤根据所述报文长度信息判断报文长度,若所述报文长度存在异常,则删除所述udp报文。
14.进一步的,由于udp的不可靠性,收到的报文可能重复,因此,所述自定义报头信息包括序号信息,所述报文接收步骤在创建报文文件后还创建储存文件,所述报文分发步骤在获得所述报文体信息和所述自定义报头信息后,根据所述序号信息判断所述储存文件中是否存在相同记录,若无则将所述自定义报头信息写入所述储存文件,将所述报文体信息和所述自定义报头信息写入等待队列,若有相同记录则认为收到了重复的udp报文,删除所述重复的udp报文。
15.进一步的,由于udp的不可靠性,收到的报文可能出现顺序错误,因此,所述自定义报头信息包括序号信息,所述报文分发步骤包括以下步骤:
16.步骤a:获得所述报文体信息和所述自定义报头信息;
17.步骤b:由于收到的报文可能出现顺序错误,需要计算收到的报文在文件中的实际位置,即收到报文的顺序与实际报文顺序的偏差值,因此根据所述报文体信息和所述自定义报头信息计算报文偏移量,将所述报文偏移量添加至所述自定义报头信息中;
18.步骤c:为了记录当前收到的报文在写入文件当中的位置,在所述自定义报头信息中添加位置数据,判断是否为收到的第一条报文,若是则执行步骤d,否则执行步骤e;
19.步骤d:当收到第一条报文时,设置该报文为索引报文,并在收到第一条报文后开始时判断后续收到的报文顺序是否出错,因此设置所述报文位置数据为0,新建数据修复线程和数据修复记录文件,执行步骤a;
20.步骤e:当收到的报文不是第一条报文时,根据收到的报文顺序设置报文写入位置依次递增,设置当前报文的位置数据为前一条报文的位置数据加一,由于所述偏移量为收到报文的顺序与实际报文顺序的偏差值,因此当收到的报文偏移量小于之前收到的报文偏移量时,可以认为出现了后发先至的报文顺序错误,当前报文偏移量小于前一条报文偏移量时执行步骤f,否则执行步骤g;
21.步骤f:出现报文顺序错误时,需要记录错误位置,等待修复,因此将当前报文的自定义报头信息写入所述数据修复记录文件;
22.步骤g:将所述报文体信息和所述自定义报头信息写入等待队列;
23.所述报文写入线程包括以下步骤:
24.步骤1:使所述数据修复线程为挂起状态,监听所述等待队列,如果所述等待队列
存在数据则从所述等待队列中读取报文数据;
25.步骤2:由于多个步骤并行执行,因此报文接收步骤、报文分发步骤和报文写入步骤可能存在不同步,因此只需要将最后发现的报文错误之前的文件一并进行修复即可完成报文修复工作,判断读取到的报文数据是否是所述数据修复记录文件中最后一条记录,若是则执行步骤3,否则执行步骤4;
26.步骤3:唤醒所述数据修复线程,所述数据修复线程根据所述数据修复记录文件修复所述报文文件,执行步骤4;
27.步骤4:将所述报文数据写入所述报文文件。
28.其中,所述步骤3包括以下步骤:
29.获得数据修复记录文件中最后一条数据记录;
30.所述修复记录文件中最后一条数据记录包括偏移量和位置数据,根据所述最后一条数据记录计算报文错误区间;
31.将所述报文文件中所述报文错误区间中的报文重新排序;
32.为了避免重复对文件进行修复,当修复完成后删除所述修复记录文件中与所述报文错误区间重复的数据。
33.其中,由于所述偏移量为收到报文的顺序与实际报文顺序的偏差值,因此当收到的报文偏移量小于之前收到的报文偏移量时,可以认为出现了后发先至的报文顺序错误,因此根据报文偏移量大小即可获得需要将报文重新排序的报文错误区间,因此计算报文错误区间包括以下步骤:
34.获得步骤,包括:获得所述数据记录中的第一报文偏移量和第一位置数据;
35.更新步骤,包括:将所述第一位置数据和所述第一报文偏移量进行减i更新,获得更新后的位置数据,并获得所述报文文件中更新后的位置数据对应报文的第二报文偏移量,所述i为所述更新步骤执行的次数;
36.判断步骤,包括:判断所述更新后的第一报文偏移量与所述第二报文偏移量大小,若所述第二报文偏移量大于所述第一报文偏移量,则返回继续执行所述更新步骤,若所述第二报文偏移量小于或等于所述第一报文偏移量,则获得所述更新步骤最后一次执行前获得的更新后的位置数据,基于更新后的位置数据和所述第一位置数据获得所述报文错误区间。
37.为了实现上述发明目的,本发明还提供了一种udp报文写入系统,所述系统包括:
38.接收单元,用于获得udp报文,将所述udp报文解码,获得报文体信息和对应的自定义报头信息,判断所述udp报文是否为接收到的第一条报文,若是获得的第一条报文则创建报文文件;
39.分发单元,用于获得所述报文体信息和所述自定义报头信息,将所述报文体信息和所述自定义报头信息写入等待队列;
40.写入单元,用于监听所述等待队列,如果所述等待队列中存在数据,则从所述等待队列中读取报文数据,将所述报文数据写入所述报文文件;
41.其中,所述接收单元、分发单元和写入单元多线程并行执行。
42.为了实现上述发明目的,本发明还提供了一种udp报文写入装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所
述计算机程序时实现所述udp报文写入方法的步骤。
43.为了实现上述发明目的,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现所述udp报文写入方法的步骤。
44.本发明提供的一个或多个技术方案,至少具有如下技术效果或优点:本发明基于多线程并行的方式完成udp报文写入,能够有效的提高数据写入速度,有效的避免了单线程写入文件速度较慢,在报文并发量大时容易导致丢包的问题,有较强的实用性。
附图说明
45.此处所说明的附图用来提供对本发明实施例的进一步理解,构成本发明的一部分,并不构成对本发明实施例的限定;
46.图1是本发明中udp报文写入流程示意图;
47.图2是本发明中udp报文协议数据结构示意图;
48.图3是本发明中udp报文错误区间计算示意图;
49.图4是本发明中udp报文写入系统示意图。
具体实施方式
50.为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在相互不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。
51.在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述范围内的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
52.实施例一
53.请参考图1-2,本发明提供了一种udp报文写入方法,包括以下步骤:
54.报文接收步骤,包括:获得udp报文,将所述udp报文解码,获得报文体信息和对应的自定义报头信息,判断所述udp报文是否为接收到的第一条报文,若是则创建报文文件;
55.报文分发步骤,包括:获得所述报文体信息和所述自定义报头信息,将所述报文体信息和所述自定义报头信息写入等待队列;
56.报文写入步骤,包括:监听所述等待队列,如果所述等待队列中存在数据,则从所述等待队列中读取报文数据,将所述报文数据写入所述报文文件;
57.其中,所述报文接收步骤、报文分发步骤和报文写入步骤多线程并行执行,即所述报文接收步骤、报文分发步骤和报文写入步骤轮流占用cpu的运算时间,操作系统不断地把线程挂起、唤醒、再挂起、再唤醒,如此反复执行所述报文接收步骤、报文分发步骤和报文写入步骤,使cpu利用率提高。
58.其中,所述自定义报头信息为应用层在udp数据部分添加的内容,所述自定义报头信息根据应用层需要确定,本实施例在此不做限定。
59.其中,所述udp报文解码根据udp报文格式实现,所述udp报文格式如图2所示,其中udp头部为八字节,udp头部中各数据长度固定,根据udp头部中长度信息即可定位udp数据
部分。
60.其中,所述报文写入步骤从所述等待队列中读取多个报文数据,将所述多个报文数据并发写入所述报文文件,所述报文写入步骤通过数据读写的方式实现报文数据的读取和写入,所述数据读写可以采用java io或java nio(java non-blocking io)的方式实现,其中,java nio将数据从通道读入缓冲区,再从缓冲区处理数据,可以实现多个线程同时对同一文件进行读写操作,因此优选nio方式进行数据写入,能够有效避免由于文件锁导致写文件时并发量不高的问题。
61.实施例二
62.请参考图1-2,本发明提供了一种udp报文写入方法,在实施例一的基础上,如图3所示,所述自定义报头信息包括文件类型信息,所述报文接收步骤根据所述文件类型信息判断所述udp报文是否为接收到的所述文件类型信息对应的第一条报文,若是则创建对应的报文文件;所述报文写入步骤根据所述文件类型信息将报文数据写入对应的报文文件,根据所述文件类型信息,能够实现对收到的报文进行分类。
63.其中,所述报文接收步骤需要验证报文正确性,所述自定义报头信息包括报文长度信息,所述报文接收步骤根据所述报文长度信息判断报文长度,若所述报文长度存在异常,则删除所述udp报文。其中,所述报文长度根据实际使用需要设置有一个标准范围,若获得的报文长度超出了所述标准范围或获得的报文长度为零,则认为所述报文长度存在异常,其具体范围根据需要设置,本实施例在此不做限定。
64.其中,由于udp的不可靠性,收到的报文可能重复,因此,所述自定义报头信息包括序号信息,所述报文接收步骤在创建报文文件后还创建储存文件,所述报文分发步骤在获得所述报文体信息和所述自定义报头信息后,根据所述序号信息判断所述储存文件中是否存在相同记录,若无则将所述自定义报头信息写入所述储存文件,将所述报文体信息和所述自定义报头信息写入等待队列,若有相同记录则认为收到了重复的udp报文,删除所述重复的udp报文。其中,所述序号信息可以为趋势递增序号、单调递增序号或字符编号等可以标识报文唯一性的序号,具体编号方式本实施例在此不做限定。
65.实施例三
66.请参考图1-2,本发明提供了一种udp报文写入方法,在实施例一的基础上,对于udp报文接收时可能存在的顺序错误,需要找到错误区间并对文件进行修复,避免由于顺序错误而导致文件损坏,因此,所述自定义报头信息包括序号信息,所述报文分发步骤包括以下步骤:
67.步骤a:获得所述报文体信息和所述自定义报头信息;
68.步骤b:根据所述报文体信息和所述自定义报头信息计算报文偏移量,将所述报文偏移量添加至所述自定义报头信息中;
69.步骤c在所述自定义报头信息中添加位置数据,判断是否为收到的第一条报文,若是则执行步骤d,否则执行步骤e;
70.步骤d:设置所述报文位置数据为0,新建数据修复线程和数据修复记录文件,执行步骤a;
71.步骤e:设置当前报文的位置数据为前一条报文的位置数据加一,若当前报文偏移量小于前一条报文偏移量时执行步骤f,否则执行步骤g;
72.步骤f:将当前报文的自定义报头信息写入所述数据修复记录文件;
73.步骤g:将所述报文体信息和所述自定义报头信息写入等待队列;
74.其中,由于收到的报文可能出现顺序错误,需要计算收到的报文在文件中的实际位置,所述偏移量用于描述收到报文的顺序与实际报文顺序的偏差值。所述报文偏移量为报文在文件中的实际次序减去报文接收次序的值,所述位置数据用于描述接收到的报文在写入文件中的地址,所述位置数据的值x表示该报文地址为基于索引报文的地址增加x个报文长度后的地址,所述报文长度根据实际需要确定,本实施例在此不做限定。
75.所述报文写入线程包括以下步骤:
76.步骤1:使所述数据修复线程为挂起状态,监听所述等待队列,如果所述等待队列存在数据则从所述等待队列中读取报文数据;
77.步骤2:判断读取到的报文数据是否是所述数据修复记录文件中最后一条记录,若是则执行步骤3,否则执行步骤4;
78.步骤3:唤醒所述数据修复线程,所述数据修复线程根据所述数据修复记录文件修复所述报文文件,执行步骤4;
79.步骤4:将所述报文数据写入所述报文文件。
80.其中,所述步骤3包括以下步骤:
81.获得数据修复记录文件中最后一条数据记录;
82.所述修复记录文件中最后一条数据记录包括偏移量和位置数据,根据所述最后一条数据记录计算报文错误区间;
83.将所述报文文件中所述报文错误区间中的报文重新排序;
84.删除所述修复记录文件中与所述报文错误区间重复的数据。
85.其中,所述计算报文错误区间包括以下步骤:
86.获得步骤,包括:获得所述数据记录中的第一报文偏移量和第一位置数据;
87.更新步骤,包括:将所述第一位置数据和所述第一报文偏移量进行减i更新,获得更新后的位置数据,并获得所述报文文件中更新后的位置数据对应报文的第二报文偏移量,所述i为所述更新步骤执行的次数;
88.判断步骤,包括:判断更新后的第一报文偏移量与所述第二报文偏移量大小,若所述第二报文偏移量大于所述更新后第一报文偏移量,则返回继续执行所述更新步骤,若所述第二报文偏移量小于或等于所述更新后第一报文偏移量,则获得所述更新步骤最后一次执行前获得的更新后的位置数据,基于更新后的位置数据和所述第一位置数据获得所述报文错误区间。
89.如图3所示,第五个接收到的报文偏移量为-2,第四个接收到的报文偏移量为3,所述第五个接收到的报文偏移量小于第四个接收到的报文偏移量,即收到的报文出现顺序错误,在计算报文错误区间步骤中,所述第五个接收到的报文偏移量经过三次所述更新步骤后为1,此时的位置数据为图中第二个接收到的报文位置,该位置报文的偏移量为0,更新后的报文偏移量大于该位置的报文偏移量,因此图中的报文错误区间为第三个到第五个接收到的报文。
90.实施例四
91.请参考图4,本发明提供了一种udp报文写入系统,包括接收单元、分发单元和写入
单元,所述系统用于实现所述udp报文写入方法的步骤。
92.所述系统包括:
93.接收单元,用于获得udp报文,将所述udp报文解码,获得报文体信息和对应的自定义报头信息,判断所述udp报文是否为接收到的第一条报文,若是获得的第一条报文则创建报文文件;
94.分发单元,用于获得所述报文体信息和所述自定义报头信息,将所述报文体信息和所述自定义报头信息写入等待队列;
95.写入单元,用于监听所述等待队列,如果所述等待队列中存在数据,则从所述等待队列中读取报文数据,将所述报文数据写入所述报文文件;
96.其中,所述接收单元、分发单元和写入单元多线程并行执行。
97.实施例五
98.本发明实施例五提供了一种udp报文写入装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述udp报文写入方法的步骤。
99.实施例六
100.本发明实施例六提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现所述udp报文写入方法的步骤。
101.其中,所述处理器可以是中央处理器(cpu,central processing unit),还可以是其他通用处理器、数字信号处理器(digital signal processor)、专用集成电路(application specific integrated circuit)、现成可编程门阵列(field programmable gate array)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
102.所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的数据,实现发明中udp报文写入装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等。此外,存储器可以包括高速随机存取存储器、还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡,安全数字卡,闪存卡、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
103.所述udp报文写入装置如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序可存储于一计算机可读存介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码、对象代码形式、可执行文件或某些中间形式等。所述计算机可读取介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器、随机存储器、点载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减。
104.本发明已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本说明书的限定。虽然此处并没有明确说明,本领域技术人员可
能会对本说明书进行各种修改、改进和修正。该类修改、改进和修正在本说明书中被建议,所以该类修改、改进、修正仍属于本说明书示范实施例的精神和范围。
105.同时,本说明书使用了特定词语来描述本说明书的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本说明书至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本说明书的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
106.此外,本领域技术人员可以理解,本说明书的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本说明书的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。此外,本说明书的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。
107.计算机存储介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等,或合适的组合形式。计算机存储介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机存储介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、rf、或类似介质,或任何上述介质的组合。
108.本说明书各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如java、scala、smalltalk、eiffel、jade、emerald、c++、c#、vb.net、python等,常规程序化编程语言如c语言、visual basic、fortran 2003、perl、cobol 2002、php、abap,动态编程语言如python、ruby和groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或服务器上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(lan)或广域网(wan),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(saas)。
109.此外,除非权利要求中明确说明,本说明书所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本说明书流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本说明书实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的服务器或移动设备上安装所描述的系统。
110.同理,应当注意的是,为了简化本说明书披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本说明书实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本说明书对象所需要的特征比权利要
求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
111.针对本说明书引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本说明书作为参考。与本说明书内容不一致或产生冲突的申请历史文件除外,对本说明书权利要求最广范围有限制的文件(当前或之后附加于本说明书中的)也除外。需要说明的是,如果本说明书附属材料中的描述、定义、和/或术语的使用与本说明书所述内容有不一致或冲突的地方,以本说明书的描述、定义和/或术语的使用为准。
112.尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
113.显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。