具有束的OSGI应用的性能监视的制作方法

文档序号:30515272发布日期:2022-06-25 03:07阅读:72来源:国知局
具有束的OSGI应用的性能监视的制作方法
具有束的osgi应用的性能监视
技术领域
1.本技术总体上涉及电子计算机系统的技术领域,并且在各种实施例中,涉及监视具有多个束(bundle)的开放服务网关协议(open service gateway initiative,osgi)应用的性能的系统和方法。


背景技术:

2.osgi是用于开发和部署模块化软件程序和库的框架。osgi应用可以具有多个适配器束,并且每个适配器束可以具有其自己的类加载器,并且与osgi应用的其他适配器束独立且分离。用于监视osgi应用的不同适配器束的性能的当前解决方案遭受了技术问题。例如,虽然硬编码的跟踪日志方法可以用来监视适配器束的行为,但是添加硬编码涉及在每次用户想要观察新方法时停止适配器束的运行,以及手动添加跟踪日志。此外,一些适配器束依赖于不能修改的库。除了上面讨论的问题,还可能出现其他技术问题。
附图说明
3.本公开的一些示例实施例通过示例而非限制的方式在附图中示出,其中相似的附图标记表示相似的元素。
4.图1是示出根据一些示例实施例的系统的网络图。
5.图2是示出根据一些示例实施例的企业应用平台中的企业应用和服务的框图。
6.图3是示出根据一些示例实施例的性能监视系统的框图。
7.图4示出了根据一些示例实施例的其中定义了目标平台的图形用户界面(gui)。
8.图5示出了根据一些示例实施例的其中添加了aspectj
tm
依赖关系的gui。
9.图6示出了根据一些示例实施例的剖析器(profiler)束的清单文件的代码。
10.图7示出了根据一些示例实施例的其中显示了性能监视页面的gui。
11.图8示出了根据一些示例实施例的充当切面织入器(aspect weaver)的剖析器束。
12.图9示出了根据一些示例实施例的将布尔条件与切入点表达式组合以实现在运行时期间选择性地控制对各个适配器束的性能监视的伪代码。
13.图10示出了根据一些示例实施例的其中开关面板使得用户能够在运行时期间选择性地控制对各个适配器束的性能监视的gui。
14.图11是示出根据一些示例实施例的监视具有多个束的osgi应用的性能的方法的流程图。
15.图12是示出根据一些示例实施例的收集性能数据的方法的流程图。
16.图13是根据一些示例实施例的其上可以执行本文描述的方法的示例计算机系统的框图。
具体实施方式
17.公开了用于监视具有多个束的基于osgi的应用的性能的示例方法和系统。在以下
描述中,出于解释的目的,阐述了许多具体细节,以便提供对示例实施例的透彻理解。然而,对于本领域的技术人员将显而易见的是,本实施例可以在没有这些具体细节的情况下实践。
18.本文公开的特征的实施方式涉及非通用的、非传统的和非常规的操作或者操作组合。通过应用本文公开的解决方案中的一个或多个,本公开的系统和方法的一些技术效果是提供一种被专门配置为监视具有多个适配器束的基于osgi的应用的性能的计算机系统。在一些示例实施例中,已经使用面向切面编程(aop)扩展生成的剖析器束与基于osgi的应用并发地运行。剖析器束被配置为向用户提供在运行时期间选择性地启用和禁用基于osgi的应用的不同适配器束的性能监视的能力。作为结果,用户能够在不中断基于osgi的应用的运行的情况下,动态地和选择性地控制对哪些适配器束收集性能数据。其他技术效果也将从本公开中显而易见。
19.本文公开的方法或实施例可以被实施为具有一个或多个模块(例如,硬件模块或软件模块)的计算机系统。这样的模块可以由计算机系统的一个或多个硬件处理器执行。在一些示例实施例中,非暂时性机器可读存储设备可以存储指令的集合,该指令的集合在由至少一个处理器执行时使得至少一个处理器执行本公开中讨论的操作和方法步骤。
20.本文描述的主题的一个或多个变型的细节在附图和以下描述中阐述。根据描述和附图以及根据权利要求,本文描述的主题的其他特征和益处将是显而易见的。
21.图1是示出根据一些示例实施例的系统100的网络图。企业应用平台112的示例形式的平台(例如,机器和软件)经由网络114(例如,互联网)向一个或多个客户端提供服务器侧功能。图1示出了例如具有程序化客户端118(例如,浏览器)的客户端机器116、具有小型设备网络客户端120(例如,没有脚本引擎的浏览器)的小型设备客户端机器122以及具有程序化客户端119的客户端/服务器机器117。
22.具体地转到企业应用平台112,网络服务器124和应用编程接口(api)服务器125可以耦合到应用服务器126,并向应用服务器126提供网络和程序化接口。应用服务器126转而可以耦合到促进对一个或多个数据库130的访问的一个或多个数据库服务器128。网络服务器124、api服务器125、应用服务器126和数据库服务器128可以托管跨功能服务132。跨功能服务132可以包括关系数据库模块,以提供用于对包括用户界面库136的(多个)数据库130的访问的支持服务。应用服务器126还可以托管域应用134。网络服务器124和api服务器125可以被组合。
23.跨功能服务132向利用企业应用平台112的用户和过程提供服务。例如,跨功能服务132可以为操作客户端机器116、客户端/服务器机器117和小型设备客户端机器122的用户提供门户服务(例如,网络服务)、数据库服务和到域应用134的连通性。此外,跨功能服务132可以提供用于传递对现有应用的增强以及用于将第三方和遗留应用与现有跨功能服务132和域应用134集成的环境。在一些示例实施例中,系统100包括采用客户端-服务器架构的客户端-服务器系统,如图1所示。然而,本公开的实施例当然不限于客户端-服务器架构,并且同样可以在分布式或对等架构系统中找到应用。
24.图2是示出根据示例实施例的企业应用平台112中的企业应用和服务的框图。企业应用平台112可以包括跨功能服务132和域应用134。跨功能服务132可以包括门户模块140、数据库模块142(例如,关系数据库模块)、连接器和消息收发模块144、api模块146和开发模
块148。
25.门户模块140可以为客户端机器116、小型设备客户端机器122和客户端/服务器机器117实现对其他跨功能服务132和域应用134的单个访问点。门户模块140可以用于处理、制作和维护向用户呈现内容(例如,用户界面元素和导航控件)的网页。此外,门户模块140可以启用用户角色,这是将角色与用户用来执行任务、利用服务以及与定义范围内的其他用户交换信息的专用环境关联起来的构造。例如,角色可以确定用户可用的内容以及用户可以执行的活动。门户模块140包括生成模块、通信模块、接收模块和再生模块。此外,门户模块140可以符合网络服务标准和/或利用各种互联网技术,包括j2ee、sap的高级商业应用编程语言和web dynpro、xml、jca、jaas、x.509、ldap、wsdl、wsrr、soap、uddi和
26.数据库模块142可以提供用于对包括用户界面库136的(多个)数据库130的访问的支持服务。数据库模块142可以为对象关系映射、数据库独立性和分布式计算提供支持。数据库模块142可以用于添加、删除、更新和管理数据库元素。此外,数据库模块142可以符合数据库标准和/或利用各种数据库技术,包括sql、sqldbc、oracle、mysql、unicode、jdbc等。
27.连接器和消息收发模块144可以通过提供公共消息收发应用处理接口来实现由跨功能服务132和域应用134利用的不同类型的消息收发系统之间的通信。连接器和消息收发模块144可以实现企业应用平台112上的异步通信。
28.api模块146可以通过将接口作为服务暴露给现有的和新的应用来实现基于服务的应用的开发。平台中可以包含存储库,作为构建应用时查找可用服务的中心位置。
29.开发模块148可以提供用于在企业应用平台112上添加、集成、更新和扩展软件组件的开发环境,而不影响现有的跨功能服务132和域应用134。
30.转到域应用134,客户关系管理应用150可以实现对多个数据源和业务过程的访问并且可以促进收集和存储来自多个数据源和商业过程的相关个性化信息。负责将买方发展成长期客户的企业人员可以利用客户关系管理应用150在整个客户参与周期中向买方提供帮助。
31.企业人员可以利用金融应用152和业务过程来跟踪和控制企业应用平台112内的金融交易。金融应用152可以促进与金融管理相关联的操作、分析和协作任务的执行。具体地,金融应用152能够实现与金融责任、规划、预测和管理金融成本相关的任务的执行。
32.企业人员和业务过程可以利用人力资源应用154来管理、部署和跟踪企业人员。具体地,人力资源应用154能够实现人力资源问题的分析,并基于实时信息促进人力资源决策。
33.产品生命周期管理应用156可以实现在产品的整个生命周期中对产品的管理。例如,产品生命周期管理应用156可以实现业务伙伴之间的协作工程、定制产品开发、项目管理、资产管理和质量管理。
34.供应链管理应用158可以实现对在供应链中观察到的性能的监视。供应链管理应用158可以促进对生产计划的遵守以及产品和服务的按时交付。
35.第三方应用160以及遗留应用162可以与域应用134集成,并利用企业应用平台112上的跨功能服务132。
36.图3是示出根据一些示例实施例的性能监视系统300的框图。性能监视系统300运
行具有多个适配器束312(例如,适配器束312-1、
……
、适配器束312-n)的osgi应用310。在一些示例实施例中,osgi应用310包括在企业应用平台112内实施并用于从不同源数据库305(例如,源数据库305-1、
……
、305-n)复制数据的企业信息管理工具。osgi应用310可以充当从不同源数据库305收集数据、然后将收集的数据传输到服务器320的数据提供代理,其中收集的数据被保存在目标数据库325中。
37.在一些示例实施例中,osgi应用310的运行包括使用多个适配器束312中的每一个适配器束来连接到对应源数据库305,并从对应源数据库305复制数据。osgi应用310的运行还可以包括将复制的数据传输到服务器320,其中复制的数据被存储在服务器320的目标数据库325中。如前面所讨论的,对osgi应用的性能的监视,诸如对上面讨论的数据复制任务的性能的监视,遭受了缺乏在不中断运行osgi应用的情况下的、用户对性能监视的动态和选择性控制。
38.在一些示例实施例中,性能监视系统300包括被配置为与osgi应用310的运行并发地运行的剖析器束314。剖析器束314可以使用aop扩展来生成。aop是一种通过允许分离横切关注点(cross-cutting concern)来增加模块性的编程范式。它通过向现有代码添加附加的行为(通知(advice))而不修改代码本身,而是经由切入点规范单独指定修改哪个代码来完成。这个特征允许将不是业务逻辑中心的行为(例如,日志记录)添加到程序,而不弄乱对功能为核心的代码。
39.在面向切面的计算机编程中,切入点是连接点(join point)的集合。切入点确切地指定了在哪里应用通知,这允许关注点的分离并有助于使业务逻辑模块化。切入点可以使用类名称或方法名称来指定,在一些情况下,可以使用与类名称或方法名称匹配的正则表达式来指定。每当程序执行到达切入点中描述的连接点之一时,就执行与切入点相关联的一段代码(称为通知),这允许程序员描述除了已经定义的行为之外、还应当在何时何地执行附加的代码。这个特征允许向现有软件添加切面,或者设计具有明确分离关注点的软件,其中程序员将不同切面织入(例如,合并)到完整应用中。
40.spring aop是编程中的流行aop工具。然而,spring aop不能够在一个地方控制osgi应用310的所有适配器束312。在一些示例实施例中,剖析器束314可以使用aspectj
tm
来生成。aspect
tm
是编程的aop扩展,并且与基于osgi的应用兼容。通过使用aspectj
tm
生成剖析器束314,一个或多个切入点可以被用来定义监视哪个方法或哪个数据包,通知可以被用来决定何时应当调用切面(例如,在调用方法之前或在调用方法之后),并且剖析器束314可以用适配器束312来启动,且可以通过选择性地卸载一个或多个适配器束312来容易地禁用,而不会影响其他适配器束312。
41.在一些示例实施例中,剖析器束314的运行包括在osgi应用310的运行期间收集多个适配器束312中的选定适配器束的性能数据。多个适配器束312中的选定适配器束可以基于在osgi应用310的运行期间由用户经由用户的计算设备340上的gui提供的输入来定义。在一些示例实施例中,收集的性能数据包括以下各项中的一个或多个:多个适配器束中的选定适配器束中的每一个所使用的对应类、多个适配器束中的选定适配器束中的每一个所使用的对应方法、多个适配器束中的选定适配器束中的每一个所使用的对应自变量、多个适配器束中的每一个适配器束连接到对应源数据库并从对应源数据库复制数据的对应持续时间、以及为多个适配器束中的每一个适配器束指示该适配器束连接到对应源数据库并
从对应源数据库复制数据的对应时间的对应创建时间。其他类型的性能数据也在本公开的范围内。
42.在一些示例实施例中,剖析器束314被配置为在编译时使用aspectj
tm
生成织入类。这些织入类可以在数据复制任务期间执行性能数据的收集。然后,收集的性能数据可以被发送到剖析器束314。在一些示例实施例中,剖析器束314被配置为使用收集的性能数据来执行一个或多个功能。(多个)功能可以包括将收集的性能数据存储在嵌入式数据库330中。(多个)功能可以附加地或替代地包括在用户的计算设备340上显示收集的性能数据。其他功能也在本公开的范围内。
43.在一些示例实施例中,性能监视系统300被配置为使用户能够创建具有aspectj
tm
库依赖关系的新osgi应用310。图4示出了根据一些示例实施例的其中定义了目标平台的gui 400。gui 400可以提供用户界面元素410,用户可以在用户界面元素410内输入或以其他方式提供新osgi应用310的目标平台的名称。gui 400还可以包括另一用户界面元素420,用户可以在用户界面元素420内选择或以其他方式提供aspectj
tm
依赖关系库类。图5示出了根据一些示例实施例的其中添加了aspectj
tm
依赖关系的gui 500。例如,gui 500可以包括用户可以从中选择插件的用户界面元素510以及用户可以从中指定插件所依赖的数据包的用户界面元素520,插件是图4所示的选定库类的一部分。
44.在一些示例实施例中,剖析器束314包括清单文件,清单文件标识出可用于由用户选择来监视其性能的多个适配器束312。图6示出了根据一些示例实施例的剖析器束314的清单文件600的代码。如图6中所见,清单文件600的代码在第2-7行标识了六个适配器束。其他类型和配置的清单文件也在本公开的范围内。
45.图7示出了根据一些示例实施例的其中显示了性能监视页面的gui 700。gui 700的性能监视页面可以显示在用户的计算设备340上,并且可以包括性能数据,性能数据包括以下各项中的一个或多个:多个适配器束中的选定适配器束中的每一个所使用的对应类、多个适配器束中的选定适配器束中的每一个所使用的对应方法、多个适配器束中的选定适配器束中的每一个所使用的对应自变量、多个适配器束中的每一个适配器束连接到对应源数据库并从对应源数据库复制数据的对应持续时间、以及为多个适配器束中的每一个适配器束指示该适配器束连接到对应源数据库并从对应源数据库复制数据的对应时间的对应创建时间。其他类型的性能数据也在本公开的范围内。
46.图8示出了根据一些示例实施例的剖析器束314充当切面织入器以便向用户提供选择性地和动态地启用或禁用对适配器束312的性能监视的能力。在图8所示的示例中,性能监视系统300为多个适配器束312中的每一个适配器束生成一个或多个对应的类文件830。多个适配器束312的对应类文件830可以在编译时生成。
47.剖析器束314可充当切面织入器,以基于多个适配器束312的对应类文件830、与布尔条件820组合的切入点表达式810以及由用户在osgi应用310的运行期间提供的输入,生成新类文件840形式的织入类。性能监视系统300可以使用由新类文件840表示的织入类来收集多个适配器束312中的选定适配器束的性能数据。在一些示例实施例中,性能监视系统300使用与切入点表达式组合的布尔条件,并且切入点表达式将仅在该布尔条件为真时生效。布尔条件可以基于由用户提供的输入来确定,如将在下面参考图10进一步详细讨论的。
48.图9示出了根据一些示例实施例的将布尔条件与切入点表达式组合以实现在运行
时期间选择性地控制对各个适配器束312的性能监视的伪代码900。在图9中,伪代码900将if()条件定义为切入点,并且将其与真实切入点表达式组合。因此,只有当if()切入点方法返回“真”时,真实切入点表达式才会生效。可以创建“profiletype”类中的对应属性,并且可以通过(诸如由用户经由计算设备340上的gui)设置新值而在运行时修改该属性。
49.图10示出了根据一些示例实施例的其中开关面板1010使得用户能够在运行时期间选择性地控制对各个适配器束的性能监视的gui 1000。开关面板1010包括用于每个适配器束312的对应的可选用户界面元素1015。在图10中,每个适配器束312由对应源数据库305的名称表示(例如,“hana”和“oracle”)。用户可以通过点击、轻敲或以其他方式选择用户想要为其切换性能监视状态的适配器束312的对应的可选用户界面元素1015来提供输入,然后选择“应用”按钮来提交输入,以用于在上面参考图8讨论的新类文件840的织入期间进行处理和实施。例如,在图10中,开关面板1010示出了对于与“hana”源数据库305相对应的适配器束312性能监视被禁用,这在开关面板1010的“状态”列中以“x”的形式示出。如果用户想要在osgi应用310的运行时期间将与“hana”源数据库305相对应的适配器束312的性能监视从禁用切换到启用,而不必中断osgi应用的运行,则用户可以简单地选择与“hana”源数据库305的适配器束312相对应的可选用户界面元素1015。
50.图11是示出根据一些示例实施例的监视具有多个束的osgi应用的性能的方法的流程图1100。方法1100可以由处理逻辑来执行,处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(例如,在处理设备上运行的指令)或其组合。在一个示例实施例中,方法1100的操作中的一个或多个由图3的性能监视系统300执行。
51.在操作1110,性能监视系统300运行具有多个适配器束312的osgi应用。在一些示例实施例中,osgi应用的运行包括使用多个适配器束312中的每一个适配器束来连接到对应源数据库305并从对应源数据库305复制数据。osgi应用的运行还可以包括将复制的数据传输到服务器(例如,数据提供服务器320)以存储在服务器的目标数据库(例如,目标数据库325)中。
52.在操作1120,性能监视系统300可以与osgi应用的运行并发地运行剖析器束314。在一些示例实施例中,剖析器束314是使用aop扩展生成的。例如,剖析器束314可以使用aspectj
tm
生成。在一些示例实施例中,剖析器束314的运行包括在osgi应用的运行期间收集多个适配器束312中的选定适配器束的性能数据(例如,类、方法、自变量、持续时间、创建时间)。多个适配器束312中的选定适配器束可以基于在osgi应用的运行期间由用户经由gui提供的输入来定义。在一些示例实施例中,剖析器束314包括标识可用于用户选择的多个适配器束312的清单文件。
53.然后,在操作1130,性能监视系统300使用收集的性能数据来执行功能。在一些示例实施例中,功能包括将收集的性能数据存储在嵌入式数据库330中。功能可以附加地或替代地包括在用户的计算设备340上显示收集的性能数据。其他功能也在本公开的范围内。
54.本公开中描述的任何其他特征可以被结合到方法1100中是被设想到的。
55.图12是示出根据一些示例实施例的收集性能数据的方法的流程图。方法1200可以由处理逻辑来执行,处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(例如,在处理设备上运行的指令)或其组合。在一个示例实施例中,方法1200的操作中的一个或多个由图3的性能监视系统300执行。
56.在操作1210,性能监视系统300生成多个适配器束中的每一个适配器束的对应类(例如,类文件830)。多个适配器束的对应类可以在编译时生成。
57.在操作1220,性能监视系统300基于多个适配器束312的对应类、与布尔条件820组合的切入点表达式810以及由用户在osgi应用的运行期间提供的输入,使用切面织入器(例如,剖析器束314)来生成织入类(例如,新类文件840)。
58.然后,在操作1230,性能监视系统300可以使用织入类来收集多个适配器束312中的选定适配器束的性能数据。在一些示例实施例中,所收集的性能数据包括以下各项中的一个或多个:多个适配器束中的选定适配器束中的每一个所使用的对应类、多个适配器束中的选定适配器束中的每一个所使用的对应方法、多个适配器束中的选定适配器束中的每一个所使用的对应自变量、多个适配器束中的每一个适配器束连接到对应源数据库并从对应源数据库复制数据的对应持续时间、以及为多个适配器束中的每一个适配器束指示该适配器束连接到对应源数据库并从对应源数据库复制数据的对应时间的对应创建时间。
59.本公开中描述的任何其他特征可以被结合到方法1200中是被设想到的。
60.鉴于以上公开内容,下面阐述各种示例。应当注意,示例的一个或多个特征,单独或组合地,应当被考虑在本技术的公开内容内。
61.示例1包括由具有存储器和至少一个硬件处理器的计算机系统执行的计算机实施的方法,该计算机实施的方法包括:运行具有多个适配器束的开放服务网关协议(osgi)应用,osgi应用的运行包括使用多个适配器束中的每一个适配器束连接到对应源数据库并从对应源数据库复制数据;与osgi应用的运行并发地运行剖析器束,剖析器束是使用面向切面编程(aop)扩展生成的,剖析器束的运行包括在osgi应用的运行期间收集多个适配器束中的选定适配器束的性能数据,多个适配器束中的选定适配器束是基于在osgi应用的运行期间由用户经由图形用户界面(gui)提供的输入来定义的;以及使用收集的性能数据来执行功能。
62.示例2包括示例1的计算机实施的方法,其中,性能数据的收集包括:生成多个适配器束中的每一个适配器束的对应类;基于多个适配器束的对应类、与布尔条件组合的切入点表达式以及在osgi应用的运行期间由用户提供的输入,使用切面织入器来生成织入类;以及使用织入类来收集多个适配器束中的选定适配器束的性能数据。
63.示例3包括示例1或示例2的计算机实施的方法,其中,剖析器束包括标识多个适配器束的清单文件。
64.示例4包括示例1至3中任一示例的计算机实施的方法,其中,aop扩展包括aspectj
tm

65.示例5包括示例1至4中任一示例的计算机实施的方法,其中,osgi应用的运行还包括将复制的数据传输到服务器以存储在服务器的目标数据库中。
66.示例6包括示例1至5中任一示例的计算机实施的方法,其中,性能数据包括多个适配器束中的选定适配器束中的每一个所使用的对应类。
67.示例7包括示例1至6中任一示例的计算机实施的方法,其中,性能数据包括多个适配器束中的选定适配器束中的每一个所使用的对应方法。
68.示例8包括示例1至7中任一示例的计算机实施的方法,其中,性能数据包括多个适配器束中的选定适配器束中的每一个所使用的对应自变量。
69.示例9包括示例1至8中任一示例的计算机实施的方法,其中,性能数据包括多个适配器束中的每一个适配器束连接到对应源数据库并从对应源数据库复制数据的对应持续时间。
70.示例10包括示例1至9中任一示例的计算机实施的方法,其中,性能数据包括对应创建时间,对应创建时间为多个适配器束中的每一个适配器束指示该适配器束连接到对应源数据库并从对应源数据库复制数据的对应时间。
71.示例11包括示例1至10中任一示例的计算机实施的方法,其中,功能包括将收集的性能数据存储在嵌入式数据库中。
72.示例12包括示例1至11中任一示例的计算机实施的方法,其中,功能包括在用户的计算设备上显示收集的性能数据。
73.示例13包括一种系统,该系统包括:至少一个处理器;以及存储可执行指令的非暂时性计算机可读介质,该可执行指令在被执行时使得至少一个处理器执行示例1至12中任一示例的方法。
74.示例14包括一种有形地体现指令的集合的非暂时性机器可读存储介质,该指令的集合在由至少一个处理器执行时使得至少一个处理器执行示例1至12中任一示例的方法。
75.示例15包括一种携带指令的集合的机器可读介质,该指令的集合在被至少一个处理器执行时使得至少一个处理器执行示例1至12中任一示例的方法。
76.本文将某些实施例描述为包括逻辑或多个组件、模块或机制。模块可以构成软件模块(例如,体现在机器可读介质上或传输信号中的代码)或硬件模块。硬件模块是能够执行特定操作的有形单元,并且可以以特定方式配置或布置。在示例实施例中,一个或多个计算机系统(例如,独立、客户端或服务器计算机系统)或计算机系统的一个或多个硬件模块(例如,处理器或一组处理器)可以由软件(例如,应用或应用部分)配置为进行操作以执行本文所述的某些操作的硬件模块。
77.在各种实施例中,硬件模块可以机械地或电子地实施。例如,硬件模块可以包括被永久配置(例如,作为专用处理器,诸如现场可编程门阵列(fpga)或专用集成电路(asic))为执行某些操作的专用电路或逻辑。硬件模块还可以包括被软件临时配置为执行某些操作的可编程逻辑或电路(例如,包含在通用处理器或其他可编程处理器内)。将理解的是,机械地、在专用且永久配置的电路中、或者在临时配置的电路中(例如,由软件配置)实施硬件模块的决定可以由成本和时间考虑来驱动。
78.相应地,术语“硬件模块”应当被理解为涵盖有形实体,即被物理构造、永久配置(例如,硬连线)或临时配置(例如,编程)为以特定方式操作和/或执行本文描述的特定操作的实体。考虑到硬件模块被临时配置(例如,编程)的实施例,每个硬件模块不需要在任何一个时刻被配置或被实例化。例如,在硬件模块包括使用软件配置的通用处理器的情况下,通用处理器可以在不同时间被配置为相应的不同硬件模块。软件可以对应地配置处理器,例如,在一个时刻构成特定的硬件模块,以及在不同的时刻构成不同的硬件模块。
79.硬件模块可以向其他硬件模块提供信息,也可以从其他硬件模块接收信息。相应地,所描述的硬件模块可以被认为是通信地耦合的。当多个这样的硬件模块同时存在时,可以通过信号传输(例如,通过连接硬件模块的适当电路和总线)来实现通信。在多个硬件模块在不同时间被配置或被实例化的实施例中,这种硬件模块之间的通信可以例如通过在多
个硬件模块可以访问的存储器结构中存储和检索信息来实现。例如,一个硬件模块可以执行操作,并将该操作的输出存储在其通信地耦合至的存储器设备中。然后,另一硬件模块可以在稍后的时间访问存储器设备,以检索和处理所存储的输出。硬件模块也可以启动与输入或输出设备的通信,并且可以对资源(例如,信息的集合)进行操作。
80.本文描述的示例方法的各种操作可以至少部分地由被临时配置(例如,通过软件)或永久配置为执行相关操作的一个或多个处理器来执行。无论是临时配置还是永久配置,这些处理器都可以构成处理器实施的模块,这些模块进行操作以执行一个或多个操作或功能。在一些示例实施例中,本文提到的模块可以包括处理器实施的模块。
81.类似地,本文描述的方法可以至少部分地是处理器实施的。例如,方法的至少一些操作可以由一个或多个处理器或处理器实施的模块来执行。某些操作的性能可以分布在一个或多个处理器当中,不仅驻留在单个机器内,而且部署在多个机器上。在一些示例实施例中,一个或多个处理器可以位于单个位置(例如,在家庭环境、办公室环境或作为服务器群内),而在其他实施例中,处理器可以分布在多个位置上。
82.一个或多个处理器还可以进行操作以支持在“云计算”环境中的相关操作的性能,或作为“软件即服务”(saas)进行操作。例如,至少一些操作可以由一组计算机(作为包括处理器的机器的示例)来执行,这些操作可以经由网络(例如,图1的网络114)和经由一个或多个适当的接口(例如,api)来访问。
83.示例实施例可以在数字电子电路中实施,或者在计算机硬件、固件、软件或它们的组合中实施。示例实施例可以使用计算机程序产品(例如,有形地体现在信息载体中(例如体现在机器可读介质中)的计算机程序)来实施,以供数据处理装置(例如,可编程处理器、计算机或多个计算机)执行或控制该数据处理装置的操作。
84.计算机程序可以用任何形式的编程语言编写,包括编译或解释语言,并且它可以以任何形式部署,包括作为独立程序或作为模块、子例程或适合在计算环境中使用的其他单元。计算机程序可以部署为在一个计算机上,或者在位于一个站点的或分布在多个站点上并通过通信网络互连的多个计算机上执行。
85.在示例实施例中,操作可以由执行计算机程序的一个或多个可编程处理器来执行,以通过对输入数据进行操作并生成输出来执行功能。方法操作也可以由专用逻辑电路(例如,fpga或asic)来执行,并且示例实施例的装置可以被实施为专用逻辑电路(例如,fpga或asic)。
86.计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系是通过运行在相应计算机上并且彼此具有客户端-服务器关系的计算机程序产生的。在部署可编程计算系统的实施例中,将理解的是,硬件和软件架构都值得考虑。具体地,将理解的是,选择是在永久配置的硬件(例如,asic)、临时配置的硬件(例如,软件和可编程处理器的组合)还是永久和临时配置的硬件的组合中实施某些功能可以是设计选择。下面陈述了在各种示例实施例中可以部署的硬件(例如,机器)和软件架构。
87.图13是其中可以执行用于使机器执行本文讨论的任何一种或多种方法的指令1324的计算机系统1300的示例形式机器的框图。在替代实施例中,机器作为独立设备进行操作,或者可以连接(例如,联网)到其他机器。在联网部署中,机器可以以服务器-客户端网
络环境中的服务器或客户端机器的身份进行操作,或者作为对等(或分布式)网络环境中的对等机器进行操作。机器可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝电话、网络家电、网络路由器、交换机或网桥,或者能够执行指定该机器要采取的动作的(顺序的或以其他方式的)指令的任何机器。此外,虽然仅示出了单个机器,但是术语“机器”也应当被理解为包括单独或联合执行一个(或多个)指令集合以执行本文讨论的任何一种或多种方法的任何机器集合。
88.示例计算机系统1300包括处理器1302(例如,中央处理单元(cpu)、图形处理单元(gpu)或两者)、主存储器1304和静态存储器1306,它们经由总线1308彼此通信。计算机系统1300还可以包括图形或视频显示单元1310(例如,液晶显示器(lcd)或阴极射线管(crt))。计算机系统1300还包括字母数字输入设备1312(例如,键盘)、用户界面(ui)导航(或光标控制)设备1314(例如,鼠标)、存储单元(例如,磁盘驱动单元)1316、音频或信号生成设备1318(例如,扬声器)和网络接口设备1320。
89.存储单元1316包括其上存储有数据结构和指令1324(例如,软件)的一个或多个集合的机器可读介质132,其体现本文描述的任何一种或多种方法或功能或被其利用。指令1324也可以在由计算机系统1300对其的执行期间完全或至少部分地驻留在主存储器1304内和/或处理器1302内,主存储器1304和处理器1302也构成机器可读介质。指令1324也可以完全或至少部分地驻留在静态存储器1306内。
90.虽然机器可读介质1322在示例实施例中被示为单个介质,但是术语“机器可读介质”可以包括存储一个或多个指令1324或数据结构的单个介质或多个介质(例如,集中式或分布式数据库,和/或相关联的高速缓存和服务器)。术语“机器可读介质”还应被理解为包括能够存储、编码或携带供机器执行并使机器执行本实施例的任何一种或多种方法的指令的任何有形介质,或者能够存储、编码或携带由这些指令利用或与这些指令相关联的数据结构的任何有形介质。相应地,术语“机器可读介质”应被理解为包括但不限于固态存储器以及光学和磁性介质。机器可读介质的具体示例包括非易失性存储器,包括例如半导体存储器设备(例如,可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)和闪存设备);磁盘,诸如内部硬盘和可移动磁盘;磁光盘;以及光盘只读存储器(cd-rom)和数字多功能盘(或数字视频盘)只读存储器(dvd-rom)盘。
91.指令1324还可以使用传输介质在通信网络1326上进行发送或接收。指令1324可以使用网络接口设备1320和多种众所周知的传输协议(例如,http)中的任何一种来传输。通信网络的示例包括lan、wan、互联网、移动电话网络、pots网络和无线数据网络(例如,wifi和wimax网络)。术语“传输介质”应被理解为包括能够存储、编码或携带供机器执行的指令的任何无形介质,并且包括数字或模拟通信信号或促进这种软件通信的其他无形介质。
92.本文公开的每个特征和教导可以单独地利用或者与其他特征和教导结合利用,以提供用于神经网络中的盲点实施方式的系统和方法。参考附图,进一步详细描述了单独的和组合的利用这些附加特征和教导中的许多的代表性示例。该详细描述仅旨在教导本领域技术人员实践本教导的某些方面的更多细节,而不旨在限制权利要求的范围。因此,以上详细描述中公开的特征的组合对于实践最广义的教导可能不是必需的,而是被教导仅描述本教导的特别代表性的示例。
93.本文的详细描述的一些部分是根据对计算机存储器内的数据位的操作的算法和
符号表示来呈现的。这些算法描述和表示是数据处理领域的技术人员用来最有效地将他们工作的实质传达给本领域其他技术人员的手段。算法在这里通常被认为是导致期望结果的自洽步骤序列。这些步骤是需要对物理量进行物理操纵的步骤。通常,尽管不是必须的,这些量采取能够被存储、传输、组合、比较和以其他方式操纵的电信号或磁信号的形式。已经证明,有时将这些信号称为位、值、元素、符号、字符、术语、数字等是方便的,这主要是出于通用的原因。
94.然而,应当记住,所有这些和类似的术语都将与适当的物理量相关联,并且仅仅是应用于这些量的方便的标签。除非特别说明,否则从下面的讨论中显而易见的是,应当理解,在整个描述中,利用诸如“处理”或“估算”或“计算”或“确定”或“显示”等术语的讨论是指计算机系统或类似的电子计算设备的动作和过程,该计算机系统或类似的电子计算设备对被表示为计算机系统的寄存器和存储器内的物理(电子)量的数据进行操纵并变换成被类似地表示为计算机系统的存储器或寄存器或其他这样的信息存储、传输或显示设备内的物理量的其他数据。
95.本公开还涉及一种用于执行本文的操作的装置。该装置可以为所需目的而专门构造,或者它可以包括由存储在计算机中的计算机程序选择性激活或重新配置的通用计算机。这种计算机程序可以被存储在计算机可读存储介质中,诸如但不限于任何类型的盘(包括软盘、光盘、cd-rom和磁光盘)、只读存储器(rom)、随机存取存储器(ram)、eprom、eeprom、磁卡或光卡,或者适于存储电子指令的任何类型的介质,并且各自耦合到计算机系统总线。
96.本文呈现的示例方法或算法并不固有地与任何特定的计算机或其他装置相关。根据本文的教导,各种通用系统、计算机服务器或个人计算机可以与程序一起使用,或者可以证明构建更专用的装置来执行本文公开的方法步骤是方便的。各种这些系统的结构将从本文的描述中显现出来。将理解的是,可以使用各种编程语言来实施本文描述的本公开的教导。
97.此外,代表性示例和从属权利要求的各种特征可以以没有具体和显式列举的方式进行组合,以便提供本教导的附加有用实施例。还明确指出的是,出于原始公开的目的以及出于限制所要求保护的主题的目的,所有值范围或实体组的指示公开了每个可能的中间值或中间实体。还明确指出的是,图中所示组件的尺寸和形状被设计成有助于理解如何实践本教导,但并不旨在限制示例中所示的尺寸和形状。
98.尽管已经参考具体的示例实施例描述了实施例,但是将显而易见的是,在不脱离本公开的更广泛的精神和范围的情况下,可以对这些实施例进行各种修改和改变。相应地,说明书和附图被认为是说明性的,而不是限制性意义的。形成本文一部分的附图以说明而非限制的方式示出了可以实践本主题的具体实施例。足够详细地描述了所示实施例,以使本领域技术人员能够实践本文公开的教导。其他实施例可以被利用和从本文中推导出,使得可以在不脱离本公开的范围的情况下进行结构和逻辑的替换和改变。因此,该具体实施方式不应被认为是限制性意义的,并且各种实施例的范围仅由所附权利要求以及这些权利要求授权的等同物的全部范围来限定。
99.仅为了方便起见,本发明主题的这些实施例在本文可以单独和/或共同地用术语“发明”来指代,而如果事实上公开了一个以上的发明或发明概念,则不旨在将本技术的范围自愿限制为任何单个发明或发明概念。因此,尽管本文已经示出和描述了具体实施例,但
是应当理解,被计算以实现相同目的的任何布置都可以代替所示的具体实施例。本公开旨在覆盖各种实施例的任何和所有适应或变化。通过阅读以上描述,上述实施例的组合以及本文未具体描述的其他实施例对于本领域技术人员来说将是显而易见的。
100.提供本公开的摘要以允许读者快速确定技术公开的性质。它以这样的理解被提交,即它将不用于解释或限制权利要求的范围或含义。此外,在前面的详细描述中,可以看出,为了简化本公开,在单个实施例中将各种特征组合在一起。本公开的该方法不应被解释为反映了所要求保护的实施例需要比每个权利要求中明确陈述的特征更多的特征的意图。相反,如以下权利要求所反映的,发明主题在于少于单个公开实施例的所有特征。因此,下面的权利要求由此被结合到具体实施方式中,其中每个权利要求独立地作为单独的实施例。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1